mcpField
R
reverse-engineering-specs

reverse-engineering-specs

github.com/pixel-process-ug開発3111 回インストール34 週間前に更新
リポジトリ

reverse-engineering-specs について

reverse-engineering-specsは、既存コードから振る舞いの仕様を作るスキルです。文書の少ないレガシープロジェクトの保守担当者向けで、全コードパスを追跡し、実際の動作や既知の問題を記録した実装非依存のGiven/When/Then形式の文書を作成します。

主な機能

  1. 01コードパスとデータフローの網羅的な追跡
  2. 02状態変更、エラー、副作用の記録
  3. 03実装非依存の振る舞い仕様の作成
  4. 04Given/When/Then形式の受け入れ条件
  5. 05既知の問題の整理と完全性チェック

活用シーン

  1. 01文書の少ないレガシープロジェクトの仕様化
  2. 02リファクタリング前の現状動作の記録
  3. 03課題の把握と改善計画の作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pixel-process-ug/superkit-agents --skill reverse-engineering-specs

インストール後、Claude Code で/reverse-engineering-specsを入力して読み込まれたか確認します。

詳細

リバースエンジニアリング仕様書

概要

ドキュメントがない既存のプロジェクトやレガシープロジェクト向けに、このスキルは既存のコードを徹底的に分析し、実装に依存しない仕様書を生成します。出力されるのは、既存のコードベース上で自律的な開発を進めるための、完全な動作説明です。これにより、安全なリファクタリング、機能追加、モダナイゼーションを実現できます。

基本原則: バグも含め、実際の動作を記録します。明示的に修正対象とされるまでは、バグも「文書化された機能」です。

これは厳格なスキルです。 すべてのコードパスを追跡してください。推測も省略も禁止です。

フェーズ 1:徹底的なコード調査

[厳格なゲート] すべてのコードパスを追跡してください。推測も省略も禁止です。

Agent ツールを使って並列サブエージェント(最大 500、subagent_type="Explore")を起動し、次の項目を分析します。

分析対象記録する内容優先度
エントリーポイントシステムを起動するすべての方法(HTTP、CLI、イベント、cron)P0
コードパスすべての分岐、ループ、条件判定、早期リターンP0
データフロー各パイプラインの入力 → 変換 → 出力P0
状態の変更状態が読み取り、書き込み、削除されるすべての箇所P0
エラー処理try/catch ブロック、エラーコード、フォールバック動作P0
副作用外部呼び出し、ファイル I/O、データベースへの書き込み、イベントの発行P1
設定環境変数、設定ファイル、機能フラグP1
依存関係利用する外部サービス、ライブラリ、APIP1
並行処理非同期操作、競合状態、ロック機構P2
暗黙の動作規約に基づくルーティング、ミドルウェアチェーン、デコレーターP2
調査戦略の判断表
コードベースの規模戦略サブエージェント数
小規模(50 ファイル未満)一度に全体をスキャン5-10
中規模(50-500 ファイル)モジュールごとにスキャン50-100
大規模(500 ファイル以上)エントリーポイントを優先し、その後に深掘りスキャン200-500

調査が終わったら停止し、発見したエントリーポイント、データフロー、動作の概要を提示します。仕様書の生成を始める前に、確認を得てください。

フェーズ 2:動作仕様書の生成

コード分析の結果を、spec-writing スキルの形式に従った実装に依存しない仕様書に変換します。

変換ルール
ルール説明
実装の詳細をすべて取り除く関数名、変数名、技術への言及を含めません
「何をするか」を記述し、「どうするか」は記述しない観察可能な動作のみを記述します
実際の動作を記録する(バグを含む)バグは仕様書で「現在の動作」として扱います
Given/When/Then 形式を使うすべての受け入れ基準に適用します
データコントラクトを含める入力の形式、出力の形式、不変条件を記載します
既知の問題を分離するバグはインラインではなく、KNOWN_ISSUES.md に記載します
実装の詳細の除去
コードの要素目にするもの仕様書に記述する内容
jwt.verify(token, secret)JWT によるトークン検証「認証システムに照らして認証情報を検証します」
redis.get(cacheKey)Redis キャッシュの参照「以前に計算された結果をキャッシュから取得します」
if (user.role === 'admin')ロールの確認「特権操作には管理者アクセスが必要です」
res.status(429).json(...)レート制限の応答「過剰なリクエストにはレート制限エラーを返します」
bcrypt.hash(pw, 12)パスワードのハッシュ化「パスワードは元に戻せない形式で保存されます」

仕様書の生成後は停止し、整理を始める前に完全性チェックリストを実行します。

フェーズ 3:仕様書の整理

次の命名規則に従って仕様書ファイルを作成します。

specs/
├── 01-[first-capability].md
├── 02-[second-capability].md
├── ...
├── NN-[last-capability].md
└── KNOWN_ISSUES.md
KNOWN_ISSUES.md の形式
# Known Issues

## [Issue Title]
- **Current behavior:** [What actually happens]
- **Expected behavior:** [What should happen, if known]
- **Affected specs:** [Which spec files reference this behavior]
- **Severity:** [Critical | High | Medium | Low]
- **Notes:** [Additional context]
重大度の分類
重大度基準対応
Criticalデータ損失、セキュリティの脆弱性、システムクラッシュ新機能の追加前に修正
High結果が正しくない、ワークフローが壊れている次のリリースで修正
MediumUX が悪い、パフォーマンスの問題今後の修正として計画
Low見た目の問題、軽微な不整合機会があれば修正

組織化の後は停止し、レビュー用に仕様ファイルの一覧と KNOWN_ISSUES を提示してください。

フェーズ 4:品質検証

[HARD-GATE] このフェーズを完了する前に、すべてのチェックに合格する必要があります。

#チェック質問状態
1エントリーポイントすべてのエントリーポイントが文書化されていますか?[ ]
2コードパスすべての分岐と条件を追跡していますか?[ ]
3データフローすべての入力→出力パイプラインを記述していますか?[ ]
4状態の変更すべての状態変更を記録していますか?[ ]
5エラー処理すべてのエラーパスを文書化していますか?[ ]
6副作用すべての外部とのやり取りを記録していますか?[ ]
7エッジケース境界条件を記述していますか?[ ]
8並行処理非同期の動作を文書化していますか?[ ]
9設定すべての設定オプションを列挙していますか?[ ]
10依存関係すべての外部依存関係を特定していますか?[ ]
11実装に依存しないこと仕様にコード、技術名、アーキテクチャが一切含まれていませんか?[ ]
12Given/When/Thenすべての受け入れ基準が正しい形式ですか?[ ]

具体例:コードから仕様への変換

コード(入力 — 分析するもの):
function checkAuth(req, res, next) {
  const token = req.headers.authorization?.split(' ')[1];
  if (!token) return res.status(401).json({ error: 'No token' });
  try {
    const decoded = jwt.verify(token, process.env.JWT_SECRET);
    req.user = decoded;
    next();
  } catch (e) {
    return res.status(403).json({ error: 'Invalid token' });
  }
}
仕様(出力 — 作成するもの):
# Request Authentication

## Job to Be Done
When a request arrives at a protected endpoint, I want to verify the
caller's identity, so I can ensure only authorized users access the system.

## Acceptance Criteria

### Valid Credentials
- Given a request with valid credentials in the authorization header
- When the request is processed
- Then the request proceeds to the next handler
- And the authenticated user identity is available to downstream handlers

### Missing Credentials
- Given a request without credentials
- When the request is processed
- Then a 401 status is returned
- And an error message indicates missing credentials

### Invalid Credentials
- Given a request with invalid or expired credentials
- When the request is processed
- Then a 403 status is returned
- And an error message indicates invalid credentials

## Edge Cases
- Malformed authorization header (missing "Bearer" prefix): treated as missing credentials
- Expired credentials: treated as invalid credentials

## Data Contracts
- Input: Authorization header in "Bearer <credential>" format
- Output on success: User identity object attached to request context
- Output on failure: JSON error response with appropriate status code

注:JWT、ミドルウェア、Express、環境変数などの実装詳細には触れていません。

アンチパターン/よくある間違い

間違い問題となる理由代わりにすべきこと
「つまらない」コードパスを省略する動作が文書化されていないと、リファクタリング中にバグが発生しますエラーハンドラーも含め、すべてのパスを追跡する
仕様に実装詳細を漏らす動作仕様の目的が損なわれます技術名、関数名、コードをすべて取り除く
バグを「正しい動作」として扱うバグであるという情報が失われます重大度とともに KNOWN_ISSUES.md に記録する
非同期処理/並行処理の分析を省略する競合状態は最も発見が難しいバグですすべての非同期動作を文書化する
正常系のパスだけを分析するバグの多くはエラーパスに潜んでいますすべてのエラー処理パスを文書化する
コードを追跡せず、動作を推測する仕様がフィクションになります仮定せず、すべての行を読む
ユーザーレビューなしで仕様を生成する誤解が引き継がれていきます各フェーズの後にレビュー用として提示する

正当化を防ぐためのガード

  • [HARD-GATE] コードパスを省略しないでください。すべての分岐、条件、エラーハンドラーを追跡する必要があります
  • [HARD-GATE] 仕様に実装詳細を一切含めないでください。コード、技術名、アーキテクチャは含めないでください
  • [HARD-GATE] 12項目すべてに合格するまで、完全性チェックリストを完了としてマークしないでください
  • 並行処理の分析を省略しないでください。コードが「同期的に見える」場合も同様です
  • 設定の分析を省略しないでください。環境変数や機能フラグによって動作が変わります
  • 関数名から動作を推測しないでください。実際のコードを読んでください
  • リバースエンジニアリング中にバグを修正しないでください。KNOWN_ISSUES.md に記録してください

統合ポイント

スキル関係
spec-writing出力は spec-writing の形式に従います。生成後の監査に使用してください
autonomous-loop仕様を計画モードに渡し、ギャップ分析に使用します
acceptance-testingリバースエンジニアリングした受け入れ基準からテストを作成します
self-learning発見したプロジェクトのコンテキストをメモリファイルに追加します
planning仕様ができたら、改善や新機能を計画します
systematic-debugging既知の問題をデバッグの優先順位付けに活用します

リバースエンジニアリング後のワークフロー

ステップスキル目的
1reverse-engineering-specs(このスキル)コードから動作仕様を生成する
2spec-writing(監査モード)品質と完全性を確認する
3planning不足点を特定し、改善を計画する
4autonomous-loop仕様を指針として、機能や修正を実装する

検証ゲート

リバースエンジニアリングが完了したと申告する前に、次の項目を確認してください。

  1. 完全性チェックリスト(全12項目)に合格していることを確認する
  2. 仕様ファイルに実装の詳細が一切含まれていないことを確認する
  3. すべての受け入れ基準が Given/When/Then 形式であることを確認する
  4. KNOWN_ISSUES.md が存在し、発見されたすべてのバグを分類していることを確認する
  5. ユーザーが仕様一式と KNOWN_ISSUES を確認済みであることを確認する

スキルの種類

柔軟 — 網羅的な調査と実装を含めない出力というルールを守りながら、コードベースの規模に応じて調査の深さとサブエージェントの数を調整してください。コードパスを省略してはなりません。

コメント