medic について
medic は、コミット前や環境変更後に overstack フレームワークの状態を確認する診断スキルです。読み取り専用のプローブで問題箇所と修正コマンドを示し、自ら変更は行いません。
主な機能
- 01ルール、カバレッジ、ドキュメント、コード、評価の検査
- 02名前やタグによるプローブ選択
- 03CI モードで失敗を終了コードに反映
- 04クラッシュしたプローブをスキップ
- 05結果と修正コマンドの提示
活用シーン
- 01コミットや PR 前のフレームワーク検査
- 02更新やマシン変更後の状態確認
- 03ルールが問題を阻止できるかの調査
- 04既存の防御チェック項目の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rheinmir/ setup --skill medicインストール後、Claude Code で/medicを入力して読み込まれたか確認します。
詳細
スキル:medic
万能キー:1つのコマンドで最後の防衛線を確認します。何も修正せず、システムが健全であることを証明します。健全でない場合は、問題箇所と修正コマンドを1行だけ表示します。
WHAT
目的とコンテキスト
- 目的: 1つのコマンドで、overstack フレームワークが健全であること(ルールが機能している、ドリフトがない、ドキュメントとディスク上の内容が一致している、コードがコンパイルできる、評価でリグレッションがない、Git のバックストップが機能している)を証明します。問題があれば、問題箇所と修正コマンドを表示します。
- トリガー(使用するタイミング):
- コミット前/PR 作成前 — 最終確認をします。赤ならプッシュしません。
- 新しいバージョンを取得した後/マシンを変更した後 — overstack がそのまま保たれているか確認します。
- ルールが「もうブロックしていないようだ」と疑われる場合 — ルール層だけを確認します。
- スキル/ルール/ジェネレーターを追加した直後 — ガードレールを忘れていれば、medic が自動で報告します(カバレッジの自動拡張)。
- 現在の防御構造だけを確認したい場合 —
medic --list。
- 対象外: 何も修正しません。大きな負債の修正もしません(proposal
030726-medicの担当です)。/fdk-uat(リモートのインストール経路)を置き換えるものでもありません。
メンタルモデル
範囲(ユーザーの説明)→ probe(rules · coverage · docs · code · eval · backstop)→ ✓/⚠/✗ + 詳細 + ↳ 修正 → 判定。Probe は検査単位です。medic.py が唯一のハブであり、検査を追加するときは probe を追加します。個別のツールを増やしてはいけません。
入力と出力の契約
| フィールド | 必須? | 意味 | |
|---|---|---|---|
| 入力 | 範囲 | いいえ(デフォルト = all) | probe の名前/タグに一致するキーワード。複数の範囲はスペースで区切ります |
| 入力 | --ci | いいえ | 判定を確定するために終了コードが必要な場合に指定します(pre-commit/CI) |
| 出力 | レポート | はい | 各 probe の ✓/⚠/✗ + 詳細 + ↳ 修正、判定、要約、ディレクトリ構造 — そのままユーザーに渡します |
| 出力 | 終了コード | --ci 指定時 | FAIL → 終了コード 1、FAIL なし → 0 |
ルールと機能
- RULE-01(MUST):確認中に何も修正しない — medic は診断のみを行います。修正は、意図的に行う別のステップです。
- RULE-02(MUST):fail-open を尊重する:probe のエラーは SKIP とし、「システムが壊れている」と結論づけません。
- RULE-03(MUST):範囲を説明し、コマンドを増やさない — 必要な確認がまだなければ、
medic.pyに probe を追加します(追加箇所は1つ)。個別の新しいツールは作りません。 - RULE-04(MUST):自己完結型にします。
medic.pyは標準ライブラリのみを使います。既存のツールを組み合わせ、外部依存を追加しません。 - RULE-05(MUST):ドリフト/古い状態は再生成/同期のみで対応し、ロジックは修正しません。validator を同期する前に方向を確認します。現在「機能している」側が正しいものです(030726 の教訓:同期の方向を誤ると、rail が機能しなくなります)。
- 機能:フレームワークリポジトリの読み取りとローカル probe の実行(読み取り専用)。書き込みはせず、ネットワークも必須ではありません。
失敗の境界
- ✗ がある → 判定は FAIL(
--ci指定時は終了コード 1)。適切な↳ 修正を1行だけ提案し、自動実行はしません。 - ⚠ のみ → 既知の負債としてユーザーに報告し、大規模な修正は自動で行いません。
- probe がクラッシュ → SKIP(fail-open)とし、FAIL には数えません。
- 範囲に一致する probe がない → probe の一覧(
medic --list)を表示し、推測しません。
HOW
メインワークフロー
| ステップ | 種類 | 入力 | アクション | 出力/終了 | 失敗時/次の処理 |
|---|---|---|---|---|---|
| W01 | 判断 | ユーザーの説明 | ユーザーの説明に基づいて範囲を選択します(サブコマンドを覚えている必要はありません):すべて → 引数なし。一部 → probe の名前/タグに一致するキーワード(rules、coverage、docs、code、eval、backstop) | 範囲の一覧 | 曖昧な場合 → all |
| W02 | 決定論的 | 範囲 | python3 fdk/tools/medic.py [範囲] を実行します(または、~/.local/bin/medic にシンボリックリンクがある場合は medic [範囲])。終了コードが必要な場合は --ci を追加します | レポート + rc | → W03 |
| W03 | 決定論的 | レポート | 出力をそのままユーザーに渡します — medic がすでに簡潔に表示しているので、この部分を省略しないでください | ユーザーが全内容を確認できます | ✗ がある → B01、⚠ のみ → B02、問題なし → 完了 |
分岐
| ID | 種類 | 条件 | 動作 | スキップ/失敗 | 再合流 |
|---|---|---|---|---|---|
| B01 | リカバリー | ✗ がある(失敗) | medic が提案する ↳ 修正 を1行だけ実行するよう提案します。ドリフト/古い状態の場合は再生成/同期のみです(RULE-05) | ユーザーが拒否 → 停止し、判定は FAIL のまま | 修正後に W02 を再実行 |
| B02 | 条件付き必須 | ⚠ がある(警告)、例:coverage 5/17、pre-commit 未インストール | 既知の負債であることをユーザーに報告します。大規模な修正は勝手に行いません — これは proposal 030726-medic の担当です | — | 終了 |
検証と停止
判定は medic.py が決定論的に行い、モデル自身は判断しません。1回の呼び出しにつき B01 → W02 の繰り返しは最大1回までです。まだ赤であれば停止して報告します。
Examples
- Positive: "chạy medic trước khi commit" →
python3 fdk/tools/medic.py --ci→ mọi probe ✓ → exit 0, báo "hệ khoẻ, commit được". - Boundary/failure: "medic docs" khi CAPABILITIES lệch đĩa → probe docs ✗ kèm
↳ sửaregen → đề nghị đúng lệnh đó, không tự sửa;--citrả exit 1.
コメント
Markdown 対応