doc-code-sync
SKILL.md
doc-code-sync: ドキュメント・コード整合性チェックスキル
プロジェクトのドキュメントとコードの不整合を6カテゴリで検出し、レポートを生成する。
検出カテゴリ
| カテゴリ | 説明 | 重要度デフォルト |
|---|---|---|
BROKEN_REF |
ドキュメントが参照するコード(ファイルパス、関数名等)が存在しない | CRITICAL |
UNDOCUMENTED |
公開コード(export された関数/クラス/型)にドキュメントがない | WARNING |
STALE_EXAMPLE |
ドキュメント内のコード例のシグネチャが実際のコードと不一致 | CRITICAL |
CONFIG_DRIFT |
設定値・環境変数のドキュメント記載と実際の不一致 | WARNING |
API_DRIFT |
API エンドポイントのドキュメント記載と実際の不一致 | CRITICAL |
VERSION_DRIFT |
バージョン番号・依存関係のドキュメント記載と実際の不一致 | INFO |
ワークフロー
Step 1: プロジェクト構造把握
- プロジェクトの言語・フレームワークを判定する:
package.json,go.mod,Cargo.toml,pyproject.toml,requirements.txt等の存在をチェック。- Solidity プロジェクト検出:
hardhat.config.*,foundry.toml,truffle-config.jsの存在をチェック。
- ドキュメントファイルを Glob でスキャンする:
docs/**/*.md,README.md,**/*.md(.git/,node_modules/,.docstore/extracted/は除外)
- コードファイルを Glob でスキャンする:
- 検出した言語に応じた拡張子でスキャン。
.claude/skills/doc-code-sync/references/check-patterns.mdを読み込み、言語別の Grep パターンを取得する。.claude/skills/doc-code-sync/references/extraction-strategy.mdを読み込み、抽出戦略の仕様を確認する。- 言語ごとの AST ランタイム検出を実行する:
- TypeScript/JS:
node -e "require('typescript')"を対象プロジェクトのnode_modulesで実行。 - Solidity:
node -e "require('@solidity-parser/parser')"またはsolc --versionを実行。 - Python:
python3 -c "import ast"を実行。 - Go:
go versionを実行。 - Rust:
cargo --versionを実行。 - 各言語の利用可能な戦略(
ast/grep)を記録する。 --strategy=grep/--strategy=ast引数でユーザーオーバーライド可能。
- TypeScript/JS:
Step 2: コードシグネチャ抽出
言語に応じた方法で公開シンボルを抽出する。Step 1 で決定した戦略に基づき、AST 戦略または Grep 戦略を使用する。
AST 戦略(高精度)
AST ランタイムが利用可能な言語では、エクストラクタスクリプトを Bash 経由で実行する:
# TypeScript
node .claude/skills/doc-code-sync/references/extractors/typescript-ast.js <project_root> "src/**/*.ts,src/**/*.tsx"
# Solidity
node .claude/skills/doc-code-sync/references/extractors/solidity-ast.js <project_root> "contracts/**/*.sol"
エクストラクタは標準化 JSON を stdout に出力する(スキーマは extraction-strategy.md 参照)。
タイムアウト: 60秒。失敗時(exit code ≠ 0)は stderr をログに記録し、Grep 戦略にフォールバックする。
Grep 戦略(フォールバック)
AST ランタイムが不在、または AST 戦略が失敗した場合、Grep ツールで check-patterns.md に定義されたパターンを使用する。
共通抽出対象
- 関数/メソッド: export された関数、public メソッドの名前とシグネチャ。
- クラス/型: export されたクラス、インターフェース、型定義。
- 設定キー:
.env.example, 設定ファイルのキー名。 - CLI コマンド: CLI ツールの場合、コマンド名とオプション。
- API エンドポイント: ルート定義(Express, FastAPI, Gin 等)。
- Solidity 固有: コントラクト、イベント、修飾子、カスタムエラー、NatSpec コメント。
フォールバックチェーン
AST 戦略 → (失敗/タイムアウト) → Grep 戦略 → (パターンなし) → 汎用パターン
Step 3: ドキュメント参照抽出
ドキュメントファイルから以下を抽出する:
- コードブロック:
```言語で囲まれたコード例の中の関数呼び出し・型参照。 - インラインコード:
`code`形式のコード参照。 - ファイルパス参照: ドキュメント内で言及されているファイルパス(
src/,./等で始まるもの)。 - API 参照:
GET /api/...,POST /api/...等のパターン。 - 環境変数参照:
$ENV_VAR,process.env.VAR,os.getenv("VAR")等。
Step 4: 整合性チェック(6カテゴリ)
BROKEN_REF: 参照切れ
- ドキュメント内のファイルパス参照が実際に存在するかチェック。
- インラインコードの関数名・クラス名がコードベースに存在するかチェック。
UNDOCUMENTED: 未ドキュメント化
- Step 2 で抽出した公開シンボルが、いずれかのドキュメントで言及されているかチェック。
- README.md またはメインドキュメントに記載がないものを検出。
STALE_EXAMPLE: コード例の陳腐化
- ドキュメント内のコード例に含まれる関数呼び出しのシグネチャ(引数の数・型)が、実際のコードと一致するかチェック。
CONFIG_DRIFT: 設定値の不一致
.env.exampleのキーとドキュメント記載の環境変数を比較。- 設定ファイル(
config.*)のキーとドキュメント記載を比較。
API_DRIFT: API エンドポイントの不一致
- コード内のルート定義とドキュメント記載の API エンドポイントを比較。
- メソッド(GET/POST等)とパスの両方をチェック。
NATSPEC_DRIFT: NatSpec コメントの不一致(Solidity 固有)
- NatSpec の
@param名がコード上の引数名と一致するかチェック。 - NatSpec の
@returnが戻り値型と整合するかチェック。 - AST 戦略で抽出された
natspecフィールドとparams/returnTypeを比較する。
MISSING_NATSPEC: NatSpec 不足(Solidity 固有)
public/external関数に NatSpec(@noticeまたは@dev)が存在するかチェック。- 存在しない場合は
UNDOCUMENTEDカテゴリとして報告する。
VERSION_DRIFT: バージョンの不一致
package.json等のバージョン番号とドキュメント記載を比較。- 依存関係のバージョンとドキュメント記載を比較。
Step 5: 重要度判定
各検出項目に重要度を割り当てる:
- CRITICAL: 即座に対応が必要。ユーザーが誤った情報に基づいて行動する可能性がある。
- BROKEN_REF(存在しないファイルへの参照)
- STALE_EXAMPLE(動作しないコード例)
- API_DRIFT(実在しない API エンドポイント)
- WARNING: 対応推奨。不完全だが致命的ではない。
- UNDOCUMENTED(公開 API のドキュメント不足)
- CONFIG_DRIFT(環境変数の記載漏れ)
- INFO: 参考情報。改善の余地がある。
- VERSION_DRIFT(バージョン番号のずれ)
Step 6: レポート生成
.docstore/sync-report.md に詳細レポートを出力する:
# Doc-Code Sync Report
**生成日**: <YYYY-MM-DD>
**プロジェクト**: <project_name>
**スキャン対象**: コードファイル <n>件, ドキュメントファイル <n>件
**抽出戦略**: TypeScript=ast, Solidity=grep, ... (言語ごとに使用した戦略を表示)
## サマリー
| 重要度 | 件数 |
|--------|------|
| CRITICAL | <n> |
| WARNING | <n> |
| INFO | <n> |
## CRITICAL
### BROKEN_REF
- [ ] `docs/guide.md:15` → `src/old-module.ts` は存在しません
...
### STALE_EXAMPLE
- [ ] `docs/api.md:42` → `createUser(name)` は `createUser(name, options)` に変更されています
...
## WARNING
### UNDOCUMENTED
- [ ] `src/utils/auth.ts:export function validateToken()` はドキュメントに記載がありません
...
## INFO
### VERSION_DRIFT
- [ ] `README.md:3` → バージョン `1.2.0` は `package.json` の `1.3.0` と異なります
...
Step 7: ターミナルサマリー表示
## Doc-Code Sync 完了
**CRITICAL**: <n>件 **WARNING**: <n>件 **INFO**: <n>件
### 主要な問題
1. <最も重要な問題の概要>
2. <次に重要な問題の概要>
3. ...
詳細レポート: .docstore/sync-report.md
### 推奨アクション
- <CRITICAL 項目がある場合> 即座にドキュメントを修正してください。
- <UNDOCUMENTED が多い場合> `/doc-integrate` で不足ドキュメントを追加してください。
- <STALE が多い場合> `/doc-update` でドキュメントを最新化してください。
注意事項
- コードの解析は AST パース(高精度)と静的パターンマッチング(フォールバック)の二段構成で行う。
- AST エクストラクタは
references/extractors/配下のスクリプトを Bash 経由で実行する。タイムアウトは 60秒。 - AST エクストラクタは対象プロジェクトの
node_modulesに含まれるパーサーを使用する。追加の npm install は不要。 - AST パース失敗時は自動的に Grep 戦略にフォールバックする。エラーは stderr に記録される。
- 大規模プロジェクトでは、
docs/配下と README のみをデフォルトスキャン対象とする。 .gitignoreに含まれるファイルはスキャン対象外とする。check-patterns.mdに定義されていない言語の場合は、汎用パターン(export, public 等)でフォールバックする。- レポートのチェックボックス
- [ ]は、手動で修正完了をマークするために使用する。 - Solidity プロジェクトでは NatSpec の整合性チェックが追加で実行される(
NATSPEC_DRIFT,MISSING_NATSPEC)。
Weekly Installs
3
Repository
stanah/dotagentsFirst Seen
Feb 21, 2026
Security Audits
Installed on
opencode3
gemini-cli3
claude-code3
github-copilot3
codex3
kimi-cli3