← ドキュメント一覧

設定

harnd init が書く .harnd/config.yaml は、手で編集して構いません。ここに全キーの意味をまとめます。

.harnd/config.yamlharnd init が生成し、その後は一部のコマンド(linkrenamerefresh)が更新します。ファイル自体が「手で編集して構わない」と名乗っています——これはキャッシュではなく正本です。

schema_version: "2.0.0"
harness:
  id: hrn_01k...
  name: my-project
  description: ""
project:
  root: ..
defaults:
  gates:
    - no-raw-color
    - no-raw-spacing
scan:
  components:
    - "packages/ui/src/**"
  paused:
    reason: "waiting on a known scan bug"
    until_version: "0.3.0"
cloud:
  linked: false
  api_url: https://harnd.com
  harness_id: hrn_...

schema_version

必須。"2.x.y" 形式の文字列です。harnd refresh は既存の .harnd/ を、インストール済みCLIが期待するスキーマへ更新します。既定はドライランで、--write を渡したときだけ実際に変更を書き込みます。

language

任意。"en" または "ja"、既定は "en" です。これは生成物の言語です——たとえば .harnd/agents/harness.md や、既定ゲートの rationale の文言。CLI自体の出力言語ではありません。CLIの出力は、この設定に関わらず常に英語です。設定するには harnd init --lang ja を使います。

harness

  • harness.idinit 実行時に一度だけ生成される(hrn_…)。以後、init --force を挟んでも変わりません。
  • harness.name — 人間向けの名前です。後から変える推奨手段は、このフィールドを直接編集することではなく harnd rename <name> です——ファイル全体としては手編集して構いません。
  • harness.description — 任意の自由記述。

project.root

.harnd/ からリポジトリのルートまでの相対パスです。.harnd/ はルートの1階層下に置かれるので、ほぼ常に .. になります。

defaults.gates

内部管理用の項目です。このハーネスが既に提示された既定ゲートの一覧を保持します。harnd refresh はこれを使って、「あなたが意図して外したゲート」と「init 当時まだ存在しなかったゲート」を区別します——これが無いと、refresh は前者を勝手に復活させてしまいます。外したゲートを二度と提案しないための項目であり、手編集を想定していません。

scan.components

任意。リポジトリ相対の glob パターンの配列で、コンポーネントをどこで探すかを宣言します。既定では、scan は名前から意味が確定しているディレクトリ(components/ui/ などの規約と、app/ 配下のルート同居ファイル)だけを見ます。モノレポのパッケージ(packages/ui/src/**)や、Feature-Sliced Designの src/features/**/ui/** のような非標準のレイアウトでは、これを明示的に設定してください。

これは検出範囲であり、検証範囲ではありません。ゲートは独自の scope.include を別に持っています。両者を混同すると、ゲートの scope の外にあるだけで実際には使われている実在のコンポーネントを、誤って deprecated 扱いしてしまうことがあります。

scan.paused

任意。scan の実行を意図的に止めていることを宣言します。paused: ブロックは、止めていることを隠すためのものではありません——鮮度の警告はいずれにせよ表示され続けます。警告の文面が「怠慢」から「理由つきで宣言されている」に変わるだけです。

  • scan.paused.reasonpaused: を書くなら必須です。理由の無い paused: ブロックは不正な形式として扱われ、無視されます——harnd は黙って受け入れず、そう明示します。
  • scan.paused.until_version — 任意。理由が「標準的な方針」ではなく「特定のharndのバグや版を待っている」場合に使います。その版以上を実行するようになった時点で、scanvalidate が「もう解除できるはずです」と案内します。harnd が自動で解除することはなく、解除は常に手動です。

cloud

ローカルで完結するコマンド——initscanvalidate——はこのセクションに一切触れません。変わるのは harnd link を実行したときだけです。

  • cloud.linkedharnd link によって true になります。init 直後は常に false です——ローカルのコマンドにアカウントは要らないからです。
  • cloud.api_urlharnd link が記録します(既定 https://harnd.com)。秘密ではありません。
  • cloud.harness_id — 判明していればクラウド側のidを記録します。あくまで参考情報です——harnd sync は、このフィールドではなくAPIキーから実際の送信先を解決します。