adopt-spec について
手書きの CLAUDE.md または AGENTS.md を、既存ファイルを保ったまま型付きの `CLAUDE.md.spec.ts` に変換するスキルです。導入は非破壊的で、生成した仕様ファイルを書き込む前に確認を求めます。
主な機能
- 01指示ファイルを型付き仕様に変換
- 02元ファイルを変更せず保持
- 03ルールを enforce() または guidance() に対応付け
- 04ファイルとコマンドの参照を追加
- 05仕様ファイルのコンパイルを確認
活用シーン
- 01既存の CLAUDE.md に型付き仕様を導入
- 02AGENTS.md のルールを元ファイルを置換せず変換
- 03参照チェック付きの指示仕様を準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ zernie/ vigiles --skill adopt-specインストール後、Claude Code で/adopt-specを入力して読み込まれたか確認します。
詳細
既存の手書きの CLAUDE.md(または AGENTS.md)をもとに、型付きの CLAUDE.md.spec.ts を作成します。これは既存のファイルを出発点として維持し、今後の型安全性を確保する、非破壊的な導入方法です。
導入ルール
導入は安全で忠実な第一歩であり、偽装したアップグレードではありません。 以下は必ず守ってください。
- 忠実であること。 すべてのルール、コマンド、説明文のセクションをそのまま保持します。何も作り出してはいけません。spec をコンパイルした結果は、ユーザーの既存ファイルとほぼ同一でなければなりません。唯一の例外はファイルマップ(「Key Files」)です。非推奨の
keyFilesフィールドは絶対に出力しないでください。Step 3 のガイドラインを参照してください。 - 非破壊的であること。 元の
CLAUDE.md/AGENTS.mdは編集しないでください。新しい.spec.tsのみを書き込みます。ファイルに対して自動でcompileを実行してはいけません。spec 管理への切り替えは、ユーザーが差分を確認しながら実行する、別途明示的な手順です。 - 適用を強化しないこと。
guidance()はguidance()のままにします。enforce()への引き上げには、設定やプラグインの追加、誤検知の可能性といったコストが伴うため、別途オプトインする手順であるstrengthenスキルに委ねます。導入とは、strict /workflowのゲートを有効にすることではありません。 - 元に戻せること。
vigiles eject <file>を実行すれば、いつでもファイルを通常の手書き Markdown に戻せます。これは決して一方通行ではありません。このことをユーザーに伝えてください。 - 書き込む前に確認すること。 生成した spec と変換の概要を先に提示し、ユーザーの同意があった場合にのみ書き込みます。
- より軽い方法もあること。 spec をまったく使わない場合は、インラインの `` コメントを
vigiles lintで同じエンジンを使って検証できます。
手順
Step 1:既存のファイルを読む
対象となる指示ファイルを読みます(デフォルトはリポジトリのルートにある CLAUDE.md)。ユーザーがパスを指定した場合は、そのパスを使用してください。
また、vigiles がインストールされているか確認します。package.json の devDependencies に vigiles があるかを調べてください。インストールされていない場合は、次を提案します。
npm install -D vigiles
Step 2:構造を解析する
Markdown 内の次のセクションを特定します。
- コマンド —
`npm run build` — 説明や- `command` — 説明のような行 - ファイルマップ(「Key Files」) — 重要なファイルを列挙した、
`src/foo.ts` — 説明のような行。非推奨のkeyFilesにはなりません。Step 3 のガイドラインを参照してください。 - ルール —
**Enforced by:**または**Guidance only**の注記がある###見出し - 説明文のセクション — 上記以外すべて(位置付け、アーキテクチャ、原則など)
各ルールについて、次のように分類します。
**Enforced by:** \linter/rule`がある場合 →enforce("linter/rule", "why")`**Enforced by:** \code-review`など、リンター以外の記載がある場合 →guidance("...")`**Guidance only**がある場合 →guidance("...")- 注記がない場合 → ユーザーが分類できるよう TODO として示します
ステップ 3:仕様ファイルを生成する
CLAUDE.md.spec.ts(またはソースファイルに応じた適切な名前)を、次の構成で作成します。
import {
claude,
enforce,
guidance,
file,
cmd,
ref,
instructions,
} from "vigiles/spec";
export default claude({
sections: {
// Prose sections here
},
// No `keyFiles`: the field is deprecated (removed next major). A "Key Files"
// list in the original file is NOT carried over as a map — see the
// guideline below.
commands: {
// Commands here
},
rules: {
// Rules here
},
});
重要なガイドライン:
- ファイルパスがバッククォートで記載されているセクションでは、
file()参照を使用します。これにより、古くなった参照を検出できます - 🔴
keyFilesは絶対に出力しないでください。 このフィールドは非推奨で、次のメジャーリリースで削除されます(vigiles lintはdeprecated-key-filesとして警告します)。元のファイルに「Key Files」/ファイルマップのセクションがある場合は、移行手順(vigiles リポジトリのdocs/rules/deprecated-key-files.md)を適用し、各エントリの移行先をユーザーに示してください。該当するもののうち、最初に当てはまるものを選びます。(1)ファイルのヘッダー、ドキュメント、またはパスにすでに記載されている(あるいはパスが存在しなくなっている)→ 削除する。(2)そのファイルだけに関する事実 → ファイルのヘッダーコメントに記載する。(3)特定のフォルダーで作業するためのルール → そのフォルダーのネストされたCLAUDE.md(独自の<folder>/CLAUDE.md.spec.ts)に記載する。(4)エージェントがそのファイルを見つけるための手がかりが他にない → そのファイルが必要となる判断を記述するセクションに、1 行のfile()ポインターを追加する。各エントリの移行先はユーザーが決めますが、マップをkeyFilesにしないことは必須です。ユーザーが決めるまでは、導入時の忠実性を保つため、リストを通常の文章のセクションとして引き継いでください - セクションで言及されている
npm runコマンドには、cmd()参照を使用します **Enforced by:** \code-review`のルールはguidance()` に変換します。コードレビューは機械的な強制ではありません- 注釈のないルールには、
// TODO: classify as enforce() or guidance()コメントを追加します - ルール ID は見出しテキストを kebab-case にしたものにします
**Why:**のテキストは、enforce()またはguidance()の第 2 引数として保持します- セクションが他のファイルやスキルを参照している場合は、相互参照に
ref()を使用します
ステップ 4:仕様ファイルがコンパイルできることを確認する
次を実行します。
npm run build
npx vigiles compile CLAUDE.md.spec.ts
コンパイル後の出力を元のファイルと比較します。差異があるのは想定内です(書式、セクションの順序など)。ただし、すべてのルール、コマンド、文章の内容は保持してください(ファイルマップは例外です。上記の keyFiles ガイドラインを参照してください)。
ステップ 5:結果を提示する
ユーザーに次の内容を提示します。
- 生成された仕様ファイル
- 変換したルールの数(enforce、guidance、TODO 別)
- 古くなった参照を検出するために追加した file/cmd 参照の数
- コンパイルするコマンド:
npx vigiles compile - 検証するコマンド:
npx vigiles lint
ファイルを書き込むかどうかを尋ねます。書き込む場合は、.gitignore への追加、または vigiles compile と vigiles lint を実行するよう CI を更新することも提案してください。
ステップ 6:オプション — CI を設定する
ユーザーが CI 連携を希望する場合は、GitHub Actions のワークフローに次を追加するよう提案します。
- name: Compile specs
run: npx vigiles compile
- name: Verify references + integrity
run: npx vigiles lint
または、vigiles の GitHub Action を使用する方法も提案します。
- uses: zernie/vigiles@v1
with:
command: lint