← ドキュメント一覧

はじめる

3つのコマンドで、何もない状態から動くデザインハーネスまで進みます。init が土台を作り、scan がコードを読み、validate がドリフトを検出します。それぞれが何をするかをまとめました。

始める前に

Harnd はプロジェクトに既にあるコードを読み、そこからデザインハーネスを作ります——デザイントークン、コンポーネント仕様、そしてドリフトを指摘する品質ゲートです。デザインツールは不要で、試すのにアカウントも要りません。

npm パッケージ名は @harnd/cli であり、harnd ではありません。npx @harnd/cli <command> を使えば、何もインストールせずに実行できます。

サーバーと通信するコマンドは linksync の2つだけです。以下の initscanvalidate はすべて手元のマシンで、あなたのコードに対して、アカウントなしで完結します。

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.yamlscan.components を明示的に設定してください(Configuration を参照)。

  • --dry-run — 何も書き込まず、要約だけを表示する

3. validate でドリフトを検出する

validate は設定されたゲートをコードに対して実行し、ドリフト——たとえばトークンを使うべき場所に生のhex値が書かれている、といった状態——を報告します。既定では作業ツリー全体を検査します。

npx @harnd/cli validate
  • --diff — git diff で追加された行だけを検査する(既定: 作業ツリー全体)
  • --stagedgit diff --cached--diff の対象として使う
  • --hookharnd hook install 用: エラーを stderr に出し exit 2 で終了させ、エージェントに修正を強制する。警告は stdout に出るだけで、止めない

--hook を日常的に自分で打つことはありません——harnd hook install が代わりに設置します。詳しくはPutting it where it runsをご覧ください。

次にすること

initscanvalidate が問題なく通ったら、次は validate をどこで自動的に走らせるかを決めます——Putting it where it runs を参照してください。.harnd/config.yaml の全キーはConfigurationにまとめてあります。