はじめる
3つのコマンドで、何もない状態から動くデザインハーネスまで進みます。init が土台を作り、scan がコードを読み、validate がドリフトを検出します。それぞれが何をするかをまとめました。
始める前に
Harnd はプロジェクトに既にあるコードを読み、そこからデザインハーネスを作ります——デザイントークン、コンポーネント仕様、そしてドリフトを指摘する品質ゲートです。デザインツールは不要で、試すのにアカウントも要りません。
npm パッケージ名は @harnd/cli であり、harnd ではありません。npx @harnd/cli <command> を使えば、何もインストールせずに実行できます。
サーバーと通信するコマンドは link と sync の2つだけです。以下の init・scan・validate はすべて手元のマシンで、あなたのコードに対して、アカウントなしで完結します。
1. init でハーネスの土台を作る
init はリポジトリのルートに .harnd/ を作ります。何度実行しても安全です——既にあるハーネスに対しては、--force を渡さない限り何も起きません。
npx @harnd/cli initこれにより .harnd/config.yaml が作られ、以後変わらないハーネスID(hrn_…)が生成されます。また、スキップしない限り既定の品質ゲート(生の色・生のスペーシングの検査など)が入ります。.harnd/ の外は一切変更されません。
--name <name>— ハーネス名(既定: リポジトリのディレクトリ名)--force—.harnd/config.yamlが既に存在しても再生成する(hrn_id は維持される)--no-gates— 既定のゲートをスキップする--lang <en|ja>— 生成物の言語(既定: en)。このCLI自体の出力言語ではない——CLIの出力は、この設定に関わらず常に英語です。-y, --yes— 非対話モード(既定値をそのまま採用する)--from <path>— 別のハーネスからゲートとトークンの意味(intent)を引き継ぐ(規約のみ——コンポーネントとトークンはこのプロジェクトから読む)
2. scan でトークンとコンポーネントを抽出する
scan はコードベースを読み、トークン・コンポーネント・その使われ方を抽出して .harnd/ に書き込みます。空だったハーネスが、実際のプロジェクトを説明するものになるのはこの段階です。
npx @harnd/cli scan既定では、意味が確定しているディレクトリ(components/、ui/、app/ 配下のルート同居コンポーネントなど)だけを見ます。モノレポのパッケージやフィーチャーフォルダ構成など、レイアウトが異なる場合は config.yaml の scan.components を明示的に設定してください(Configuration を参照)。
--dry-run— 何も書き込まず、要約だけを表示する
3. validate でドリフトを検出する
validate は設定されたゲートをコードに対して実行し、ドリフト——たとえばトークンを使うべき場所に生のhex値が書かれている、といった状態——を報告します。既定では作業ツリー全体を検査します。
npx @harnd/cli validate--diff— git diff で追加された行だけを検査する(既定: 作業ツリー全体)--staged—git diff --cachedを--diffの対象として使う--hook—harnd hook install用: エラーを stderr に出し exit 2 で終了させ、エージェントに修正を強制する。警告は stdout に出るだけで、止めない
--hook を日常的に自分で打つことはありません——harnd hook install が代わりに設置します。詳しくはPutting it where it runsをご覧ください。
次にすること
init・scan・validate が問題なく通ったら、次は validate をどこで自動的に走らせるかを決めます——Putting it where it runs を参照してください。.harnd/config.yaml の全キーはConfigurationにまとめてあります。