mcpField
M
markdown-novel-viewer

markdown-novel-viewer

github.com/duc01226ドキュメント1251 回インストール1 週間前に更新
リポジトリ

markdown-novel-viewer について

Markdown ファイルを本のような画面で表示したり、ディレクトリを閲覧したりするローカル HTTP サーバーです。計画のフェーズ移動やテーマ切り替えを使いたい読者や開発者向けです。

主な機能

  1. 01小説風の画面で Markdown を表示
  2. 02ディレクトリとリンク先ファイルの閲覧
  3. 03計画構造を検出してフェーズを表示
  4. 04ボタンやキーによるフェーズ移動
  5. 05ライト・ダークテーマの切り替え

活用シーン

  1. 01プロジェクト計画を長文形式で読む
  2. 02Markdown ファイルを含むフォルダーを閲覧
  3. 03検出された計画のフェーズ間を移動

インストール

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

$npx skills add https://github.com/duc01226/easyplatform --skill markdown-novel-viewer

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

package.json
assets/
directory-browser.css
novel-theme.css
reader.js
template.html
scripts/
server.cjs
scripts/lib/
http-server.cjs
markdown-renderer.cjs
plan-navigator.cjs
port-finder.cjs
process-mgr.cjs
scripts/tests/
server.test.cjs
tests/
dashboard-assets.test.cjs
dashboard-renderer.test.cjs
http-server.test.cjs
run-tests.cjs
test-framework.cjs
verify-xss.cjs

詳細

Codex 互換性に関する注意:

  • Codex では $skill-name を使ってリポジトリのスキルを呼び出します。このミラー版では、旧式の Claude の /skill-name 参照が書き換えられています。
  • タスクトラッカーの必須要件:ワークフローまたはスキルの手順を実行する前に、すべての手順のタスク追跡を作成または更新し、進捗に応じて同期してください。
  • ユーザーへの質問を促す指示がある場合は、Codex でユーザーに直接質問してください。
  • Claude 固有のモード切り替え指示があっても無視してください。
  • 厳格な実行要件:ユーザーがスキルを明示的に呼び出した場合は、そのスキルのプロトコルを記載どおりに実行してください。
  • サブエージェントの認可:スキルがユーザーによって呼び出された場合、または AI が検出した場合、そのプロトコルでサブエージェントが必要とされていれば、スキルの有効化により、そのタスクに必要な spawn_agent サブエージェントの使用が認可されます。
  • ユーザーが事前に逸脱を明示的に承認しない限り、プロトコルの手順を省略、並べ替え、統合しないでください。
  • ワークフローのスキルでは、列挙された各子スキルの手順を明示的に実行し、手順ごとの根拠を報告してください。
  • 必須の手順またはツールをこの環境で実行できない場合は、適応策を講じる前に停止してユーザーに確認してください。

Codex のプロジェクト参照の読み込み(フックなし)

Codex では、実行時にプロジェクトドキュメントを注入するのではなく、静的なプロジェクト参照を読み込みます。 コーディング、計画、デバッグ、テスト、レビューの際は、このルーティングに従ってプロジェクトドキュメントを明示的に開いてください。

必ず読むもの:

  • docs/project-config.json(プロジェクト固有のパス、コマンド、モジュール、ワークフロー、テスト設定)
  • docs/project-reference/docs-index-reference.md(docs/project-reference/* の全カタログへのルート)
  • docs/project-reference/lessons.md(常に適用されるガードレールとアンチパターン)

コンテキストがない、または古い場合のルート: docs/project-config.json、ドキュメントインデックス、lessons.md、CLAUDE.md、AGENTS.md、またはタスクに必要な参照ドキュメントが見つからない、または古い場合は、通常のプロジェクト固有の作業に取りかかる前に $project-init または限定的なセットアップルート($project-config、$docs-init、$scan-all、$scan --target=<key>、$claude-md-init)を自動実行してください。Codex ミラーまたは AGENTS.md が見つからない、または古い場合は、ユーザーに $sync-codex の実行を依頼してください。自動実行してはいけません。

状況に応じたドキュメント:

  • プロジェクト構成/アーキテクチャ/技術スタック/デプロイ/セットアップ(バックエンド、フロントエンド、インフラのいずれの層でも):project-structure-reference.md
  • バックエンド/CQRS/API/ドメイン/エンティティの変更:backend-patterns-reference.md、domain-entities-reference.md
  • フロントエンド/UI/スタイル設定/デザインシステム:frontend-patterns-reference.md、scss-styling-guide.md、design-system/README.md
  • 仕様の作成、docs/specs/ のパス、または TC 形式:feature-spec-reference.md、spec-system-reference.md、spec-principles.md
  • 動作/公開契約の変更、または仕様・テスト・コードの同期:workflow-spec-test-code-cycle-reference.md と上記の仕様ドキュメント
  • 派生仕様インデックス/ERD/再実装ガイド:spec-system-reference.md と docs/specs/ の元となる Feature Spec
  • 統合テストの実装/レビュー:integration-test-reference.md
  • E2E テストの実装/レビュー:e2e-test-reference.md
  • コードレビュー/監査作業:変更対象ファイルに応じたドメインドキュメントと code-review-rules.md

すべてのドキュメントをむやみに読まないでください。まず docs-index-reference.md を確認し、タスクに関連するファイルだけを開いてください。

クイックサマリー

目標: Markdown ファイルを落ち着いた本のような読書 UI で表示し、ディレクトリを閲覧できるバックグラウンド HTTP サーバーです。

ワークフロー:

  1. サーバーを起動 — CLI オプションで Markdown ファイルまたはディレクトリを指定します
  2. コンテンツを表示 — 小説をテーマにしたリーダー(セリフ体フォント、暖色)またはディレクトリブラウザーを使用します
  3. プランを移動 — プランの構造を自動検出し、サイドバー、フェーズのステータス、キーボードショートカットを表示します

主なルール:

  • 初回使用前に npm install が必要です(marked、highlight.js、gray-matter)
  • 手軽にアクセスするには /preview スラッシュコマンドを使ってください
  • ローカルのみを既定とするバックグラウンドモードに対応しています

懐疑的に考えてください。批判的思考と段階的思考を適用してください。すべての主張に追跡可能な証拠と信頼度のパーセンテージを付けてください(Idea は 80% を超える必要があります)。

markdown-novel-viewer

Markdown ファイルを落ち着いた本のような読書体験で表示する、バックグラウンド HTTP サーバーです。

⚠️ インストールが必要です

このスキルには npm の依存関係が必要です。 以下のいずれかを実行してください。

# Option 1: Install via ClaudeKit CLI (recommended)
ck init  # Runs install.sh which handles all skills

# Option 2: Manual installation
cd .claude/skills/markdown-novel-viewer
npm install

依存関係: marked、highlight.js、gray-matter

インストールしない場合、Error 500: Error rendering markdown が表示されます。

目的

あらゆるパスを渡して表示できる、汎用ビューアーです。

  • Markdown ファイル → セリフ体フォントと暖色系テーマの小説リーダー UI
  • ディレクトリ → クリック可能なリンク付きのファイル一覧ブラウザー

クイックスタート

# View a markdown file
node .claude/skills/markdown-novel-viewer/scripts/server.cjs \
  --file ./plans/my-plan/plan.md \
  --open

# Browse a directory
node .claude/skills/markdown-novel-viewer/scripts/server.cjs \
  --dir ./plans \
  --host localhost \
  --open

# Background mode
node .claude/skills/markdown-novel-viewer/scripts/server.cjs \
  --file ./README.md \
  --background

# Stop all running servers
node $HOME/.claude/skills/markdown-novel-viewer/scripts/server.cjs --stop

スラッシュコマンド

手軽にアクセスするには /preview を使います。

/preview plans/my-plan/plan.md    # View markdown file
/preview plans/                   # Browse directory
/preview --stop                   # Stop server

機能

小説テーマ
  • 暖かみのあるクリーム色の背景(ライトモード)
  • 暖かみのあるゴールドのアクセントを使ったダークモード
  • Libre Baskerville のセリフ体見出し
  • 本文には Inter、コードには JetBrains Mono を使用
  • コンテンツ幅は最大 720px
ディレクトリブラウザー
  • 絵文字アイコン付きのすっきりしたファイル一覧
  • Markdown ファイルからビューアーにリンク
  • フォルダーからサブディレクトリにリンク
  • 親ディレクトリへの移動(..)
  • ライトモード/ダークモードに対応
プランのナビゲーション
  • プランのディレクトリ構造を自動検出
  • サイドバーにステータス表示付きで全フェーズを表示
  • 前へ/次へ移動するボタン
  • キーボードショートカット:左/右矢印
キーボードショートカット
  • T - テーマを切り替え
  • S - サイドバーを切り替え
  • Left/Right - フェーズ間を移動
  • Escape - サイドバーを閉じる(モバイル)

CLI オプション

オプション説明デフォルト
--file <path>表示する Markdown ファイル-
--dir <path>閲覧するディレクトリ-
--port <number>サーバーのポート3456
--host <addr>バインドするホストlocalhost
--openブラウザーを自動で開くfalse
--backgroundバックグラウンドで実行false
--stopすべてのサーバーを停止-

アーキテクチャ

scripts/
├── server.cjs               # Main entry point
└── lib/
    ├── port-finder.cjs      # Dynamic port allocation
    ├── process-mgr.cjs      # PID file management
    ├── http-server.cjs      # Core HTTP routing (/view, /browse)
    ├── markdown-renderer.cjs # MD→HTML conversion
    └── plan-navigator.cjs   # Plan detection & nav

assets/
├── template.html            # Markdown viewer template
├── novel-theme.css          # Combined light/dark theme
├── reader.js                # Client-side interactivity
├── directory-browser.css    # Directory browser styles

HTTP ルート

ルート説明
/view?file=<path>Markdown ファイルビューアー
/browse?dir=<path>ディレクトリブラウザー
/assets/*静的アセット
/file/*ローカルファイルの配信(画像)

依存関係

  • Node.js 組み込み:http、fs、path、net
  • npm:marked、highlight.js、gray-matter(npm install でインストール)

カスタマイズ

テーマカラー(CSS 変数)

ライトモードの変数は assets/novel-theme.css にあります。

--bg-primary: #faf8f3; /* Warm cream */
--accent: #8b4513; /* Saddle brown */

ダークモード:

--bg-primary: #1a1a1a; /* Near black */
--accent: #d4a574; /* Warm gold */
コンテンツ幅
--content-width: 720px;

ローカルアクセス

ローカルファイルをネットワークに公開することを明示的に承諾していない限り、localhost で起動してください。

# Start locally
node server.cjs --file ./README.md --host localhost --port 3456

サーバーは出力にローカル URL を表示します。

{
    "success": true,
    "url": "http://localhost:3456/view?file=...",
    "port": 3456
}

トラブルシューティング

ポートが使用中の場合:サーバーは次に利用可能なポート(3456〜3500)へ自動的に切り替えます。

画像が読み込まれない場合:画像のパスが Markdown ファイルからの相対パスであることを確認してください。

サーバーが停止しない場合:OS の一時ディレクトリ(os.tmpdir()。Windows では通常 %TEMP%)に md-novel-viewer-*.pid という古い PID ファイルがないか確認してください。

リモートアクセスが拒否された場合:このビューアーはローカルでの使用を想定しています。ネットワークへの公開を明示的に承諾していない限り、--host localhost を使用してください。


[IMPORTANT] 作業を始める前に、タスク管理を使って、ファイルを読むタスクも含め、すべての作業を小さなタスクに分割してください。これにより、長いファイルによるコンテキストの喪失を防げます。簡単なタスクの場合、AI はスキップするかどうかを必ずユーザーに尋ねてください。 AI のミス防止 — あらゆるタスクで避けるべき失敗パターン:

コンテキストが変わったらファイルを読み直してください。 コンテキストの圧縮や再開、長時間にわたる作業によって記憶が古くなることがあります。作業に取りかかる前に、現在のファイルを確認してください。 生成した内容をソースの根拠と照合してください。 AI は API、名前、主張、ドキュメントの事実を幻覚することがあります。記述または参照する前に、該当するソースを確認してください。 削除や名前変更の前に、後続の参照を確認してください。 成果物を削除すると、ドキュメント、生成されたミラー、設定、呼び出し元に古い参照が残る可能性があります。まず参照関係を洗い出してください。 編集後は影響の連鎖全体を追跡してください。 定義を変更しても、派生出力や利用側への影響を見落とすことがあります。完了を宣言する前に、影響を受ける連鎖をたどってください。 最初の出力だけでなく、影響を受けるすべての出力を検証してください。 チェックが 1 つ成功しても、すべてが成功したことにはなりません。変更が影響し得るすべての出力面を検証してください。 既存の値は意図的なものと考え、変更したり不具合として指摘したりする前に、その理由を確認してください。 定数、上限、フラグ、しきい値、文言、パターンを変更または報告する前に、周辺のコンテキストと履歴、呼び出し元の順序、および同じ規則を使う 2 つ以上の同種の呼び出し箇所を確認してください。理由を示さず WHAT だけを記したドキュメントは、根拠のないガードが存在しない証拠ではなく、根拠が欠けているということです。 行動する前に曖昧さを明らかにしてください。黙って解釈を決めないでください。 複数の妥当な解釈がある場合は、明確な質問をするか、リスクを添えて前提を明示してください。 インフラストラクチャーが管理する中間状態ではなく、システムが管理する結果を検証してください。 非同期処理を検証するときは、最終的なビジネス状態を確認してください。共有インフラストラクチャー内で並行実行中のあらゆるプロセスが書き込める、配信や再試行の記録を確認してはいけません。そのようなチェックは単独実行では通過しても、同じインフラストラクチャーをほかの処理が共有した途端に不安定になります。 共有ガイダンスは、それを受け取る役割に関係する内容にしてください。 普遍的なガイダンスは、それを受け取るすべてのスキルやエージェントに役立つものでなければなりません。コード固有の義務は、コード固有のプロトコルにのみ記載してください。

批判的思考の姿勢 — 批判的思考と逐次的思考を適用してください。すべての主張には追跡可能な証拠が必要です。行動するには確信度が 80% を超えていなければなりません。 幻覚の防止: 推測を事実として示さないでください。すべての主張に出典を示し、不確実な点は率直に認め、出力に誤りがないか自己確認し、独立した情報源と照合してください。自分自身の確信を疑ってください。証拠のない確信が、あらゆる幻覚の根本原因です。

必ず注意:批判的思考と逐次的思考を適用してください。すべての主張には適切な追跡可能な証拠が必要です(リポジトリやコードに関する主張には file:line、調査、製品、コンテンツ、ドキュメントに関する主張にはソース URL または成果物のセクション)。行動するには確信度が 80% を超えていなければなりません。60% 未満の場合は、推奨しないでください。幻覚を防止してください。推測を事実として示さず、不確実な点は率直に認め、独立した情報源と照合し、自分自身の確信を疑ってください。

必ず注意:AI のミス防止策を適用してください。生成した内容を根拠と照合し、削除や名前変更の前に後続の参照を追跡し、影響を受けるすべての出力を検証し、コンテキストを失った後はファイルを読み直し、行動する前に曖昧さを明らかにしてください。

プロジェクトプロトコルオーバーレイ — このスキルを実行する前に、重ねて適用されるプロジェクトのオーバーレイルールを解決してください。このスキル名を、プロジェクトのスキルプロトコルインデックス(デフォルトは docs/project-reference/skill-protocols-reference.md。docs/project-config.json の referenceDocs エントリでパスが上書きされます)の Target 列と照合し、最も具体的に一致する階層 ONLY を採用してください(完全一致 > glob > *)。この優先順位は、オーバーレイ同士の順序を定めるものであり、このスキルとの優先順位ではありません。 一致した本文のみを読み込み、<protocols-dir>/<Name>.md として解決してください。行の Body リンクは表示テキストであり、読み込み先のパスではありません。一致した本文が存在しないか、形式が不正な場合は、報告してスキップしてください。インデックスの Description から再構成してはいけません。インデックスがない場合、または一致するものがない場合は、オーバーレイなしでそのまま進めてください。何も報告する必要はありません。契約の全文は .claude/skills/project-skill-protocol/references/registry.md にあります。

オーバーレイは追加のみです。このスキル独自のプロトコルにルールを追加するものであり、既存のルールを置き換えたり、上書きしたり、無効化したり、再解釈したりしてはいけません。すべてのオーバーレイを削除した場合、このスキルの動作は文書化された内容と完全に一致する必要があります。オーバーレイは簡潔な指針であり、権限を強めるものではありません。ワークフローのゲート、Git の規律、レビューのゲート、ユーザー確認のゲートを免除することは決してできません。オーバーレイとスキルの間に実際の矛盾がある場合、または同じ具体性のオーバーレイ同士が直接矛盾する場合は、両方をユーザーに提示してください。黙って解決してはいけません。

必ず注意してください。このスキルを実行する前に、このスキルに対するプロジェクトプロトコルオーバーレイを解決してください。最も具体的に一致する階層のみを適用してください(完全一致 > glob > *。これはオーバーレイ同士の優先順位であり、このスキルとの優先順位ではありません)。一致した本文のみを <protocols-dir>/<Name>.md から読み込んでください。本文がないか、形式が不正な場合は報告し、再構成してはいけません。オーバーレイは追加のみ(このスキル独自のルールを置き換えません)であり、簡潔な指針であって、権限を強めるものではありません。同じ具体性で矛盾する場合は、ユーザーに提示してください。

終了時のリマインダー

適用中のプロトコル(このスキルが含む SYNC/共有ブロックの簡潔な要約):

  • AI の誤り防止: 生成した内容を根拠と照合し、後続の参照をたどり、影響を受けるすべての出力を確認し、コンテキスト喪失後に読み直し、曖昧さを明示してください。
  • 批判的思考: 順を追って推論し、file:line の証拠をたどり、確信度が 80% を超える場合に実行してください。

重要:必ず注意してください 作業を始める前に、タスク追跡を使って作業を小さな Todo タスクに分割してください 重要:必ず注意してください 新しいコードを作成する前に、コードベース内で類似パターンを 3 件以上検索してください 重要:必ず注意してください すべての主張に file:line の証拠を示してください(実行するには確信度が 80% を超える必要があります) 重要:必ず注意してください 作業品質を確認するための最終レビュー Todo タスクを追加してください

[TASK-PLANNING] 行動する前に、タスクの範囲を分析し、タスク追跡を使って小さな Todo タスクとサブタスクに体系的に分割してください。

フックレスプロンプトプロトコルミラー(自動同期)

ソース:.claude/.ck.json + .claude/skills/shared/sync-inline-versions.md(:full ブロック)+ .claude/scripts/lib/hookless-prompt-protocol.cjs

[WORKFLOW-EXECUTION-PROTOCOL] [BLOCKING] ワークフロー実行プロトコル — 必須・重要・必ず遵守・重大。いかなる理由があっても省略しないでください。

汎用的な移植性の境界: 再利用可能なスキルとプロトコルのテキストはプロジェクトに依存しないものとし、プロジェクト固有の規約は docs/project-config.json と docs/project-reference/ から確認します。共有 AI-SDD は shared/sdd-artifact-contract.md に従って適用します。docs/project-config.json と docs/project-reference/docs-index-reference.md を読み、そこに記載されているプロジェクトリファレンスドキュメントを開いてください。仕様、テストケース、動作変更、公開コントラクト、または docs/specs/ に関する作業では、ドキュメントインデックスに記載されたローカルの仕様ドキュメント(feature-spec-reference.md、spec-system-reference.md、spec-principles.md、および仕様・テスト・コードの同期が必要な場合は workflow-spec-test-code-cycle-reference.md)を経由してください。いずれかのファイル、または必須のリファレンスドキュメントが見つからないか古くなっている場合は、通常のプロジェクト固有の作業に進む前に $project-init(または $project-config、$docs-init、$scan-all、$scan --target=<key> などの限定的な下位ルート)を自動実行してください。この共有コンテキストとローカルドキュメントが利用可能であれば、サポート対象の任意の AI ツールで実行できます。

  1. 検出: プロンプトが明示的なスラッシュ形式のスキル/ワークフローコマンドで始まる場合は、それを直接実行します。それ以外の場合は、プロンプトをワークフローカタログとスキルリストに照らし合わせます。
  2. 分析: 最適な方法を選択します。直接実行、スキルの呼び出し、標準ワークフローの開始、またはカスタムのステップ構成です。
  3. 自動選択: 最適な方法を自分で選択します。直接実行、スキル、標準ワークフロー、カスタムワークフローのどれにするか、ユーザーに選択を求めてはいけません。
  4. 開始: 選択したワークフローでは $start-workflow <workflowId> を呼び出します。選択したスキルではそのスキルを呼び出します。カスタムワークフローではカスタムステップを順に実行します。直接実行ではタスクに進みます。
  5. タスクの作成: 選択した経路に複数のステップがある場合、実行前にすべてのワークフロー/スキル/カスタムステップについてタスクを追跡します。
  6. 並列化: タスクリストの実行前に、各タスクに PAR(入力が独立しており、書き込み対象が他のすべての PAR タスクと重複しない)または SEQ(ブロックする依存関係を明記)を付け、PAR タスクをウェーブにグループ化し、ウェーブ計画を宣言して、各ウェーブのサブエージェントを1つのメッセージで起動します。各ウェーブでは全員の完了を待ち、サブエージェント自身の定義でさらなる並列化が認められている場合を除き、ファンアウトは1階層までとします。独立したタスクを逐次処理するのは不備です。共有の書き込み対象、出力を利用するタスク、単純な単一ファイルの作業、スキルやワークフローで順序が明示されている作業、ユーザー承認が必要な段階は並列化しないでください。
  7. 実行: コンテキスト指示にある Workflow Step Advancement & Parallel Phases のルールに従って進めます。ステップの進行はモデル主導です。サブエージェントの完了はインライン呼び出しと同様にステップを進めます。並列フェーズのグループは全員の完了を待つバリアです(すべてのメンバーが完了した後にのみ進み、決して逐次化しません)。

共有 AI-SDD プロトコルマーカー

ソース:.claude/skills/shared/sync-inline-versions.md

SYNC:ai-sdd-artifact-contract

AI-SDD 成果物契約 — 共有する仕様駆動開発のルールは、移植可能な状態に保ち、ソース側で管理します。

  1. 再利用可能な AI-SDD の原則は .claude に置き、リポジトリ固有のパス、コマンド、担当者、製品、形式はプロジェクト設定または参照ドキュメントに記載します。
  2. サイクルを維持します:spec -> plan -> tasks -> implement -> verify -> update spec/docs。
  3. すべての要件または不変条件を、判断、タスク、TC/テスト、ソースの根拠、ドキュメント/仕様の更新まで追跡します。
  4. コードから仕様への抽出は、正規の仕様オーナーが承認するまでは参照専用として扱います。
  5. 同期されたコンテキストがあれば、サポート対象の AI ツールで計画、実装、レビュー、検証を行えます。複数のツールを使うかどうかは任意です。
  6. まず .claude のソースを更新してから、生成されたミラーを同期します。.agents、.codex、AGENTS.md を手動で編集しないでください。— 理由:ミラーは生成された成果物であり、次回の同期時に手動編集内容が上書きされます
  7. docs/project-config.json、ルートの指示ファイル、または必須のプロジェクト参照ドキュメントが欠落しているか古い場合は、通常のプロジェクト固有の作業を行う前に、$project-init または適切な下位レベルの手順を自動実行します。

有効な参照先: アクティブなスキルルート内の shared/sdd-artifact-contract.md。


SYNC:ai-sdd-artifact-contract:reminder

  • 必須 shared/sdd-artifact-contract.md を適用し、再利用可能な AI-SDD は .claude に、ローカルルールはプロジェクトのドキュメントに保持します。
  • 必須 コードから仕様への抽出は、正規の承認を得るまで参照専用です。サポート対象の AI ツールであれば、同期されたコンテキストを使って実行できます。
  • 必須 生成されたミラーを同期する前に .claude のソースを更新します。.agents、.codex、AGENTS.md を手動で編集しないでください。
  • 必須 プロジェクト設定、ルートの指示ファイル、または必須の参照ドキュメントが欠落しているか古い場合は、プロジェクト固有の作業を $project-init または適切なセットアップ手順に自動的に振り分けます。 [TASK-PLANNING] [必須] ワークフローまたはスキルの手順を実行する前に、計画したすべての手順についてタスク追跡を作成/更新し、各手順の開始時と完了時に同期してください。

[LESSON-LEARNED-REMINDER] [BLOCKING] タスク計画と継続的な改善 — 必須。省略しないでください。

作業を始める前に、作業を小さなタスクに分割して追跡します。最後のタスクに「AI のミスと教訓を分析する」を追加します。

教訓の抽出 — 症状への対処ではなく、根本原因のみを扱います:

  1. 症状ではなく、失敗モード(推論や前提の誤り)を特定します。「間違った enum 値を使った」ではなく、「ソースを読まずに API が存在すると仮定した」とします。
  2. 一般性を確認します。この失敗モードは 3 つ以上の状況/コードベースに当てはまりますか?当てはまらない場合は、もう一段階抽象化します。
  3. 普遍的なルールとして記述します。プロジェクト固有の名前、パス、クラスを取り除きます。どのコードベースでも役立つ内容にします。
  4. 統合します。同じ失敗モードに起因する複数のミスは、1 つの教訓にまとめます。
  5. 再発ゲート:「このリマインダーがなければ、今後のセッションで再発するか?」いいえ → $learn は省略します。
  6. 自動修正ゲート:「$code-review/$code-simplifier/$security-review/$lint で検出できるか?」はい → 代わりにレビュー用スキルを改善します。
  7. 両方のゲートを通過した場合は、ユーザーに $learn の実行を依頼します。 [CRITICAL-THINKING-MINDSET] 批判的思考と段階的思考を適用します。あらゆる主張に追跡可能な証拠を求め、行動する際は確信度を 80% 超とします。 ハルシネーション防止の原則: 推測を事実として提示しないでください。すべての主張に出典を示し、不確実性を率直に認め、出力に誤りがないか自己確認し、独立した情報源と照合し、自分の確信を疑ってください。証拠のない確信が、あらゆるハルシネーションの根本原因です。 AI の注意力の原則(初頭効果・新近効果): 長いプロンプト/プロトコルでは、最も重要なルールを上部と下部の両方に 3 つずつ配置し、長いコンテキストでも指示への準拠を維持します。 目標主導の実行: まず成功基準を定め、検証できるまで繰り返し、観察可能なチェックに合格した場合にのみ終了します。 テストは意図を検証します: テストは現在の動作をなぞるだけでなく、ビジネスルールや不変条件を保護し、保護対象の意図が崩れたときに失敗する必要があります。

よくある AI のミスを防ぐ(システムの教訓)

  • コンテキスト圧縮後はファイルを再読込してください。 編集するには、同じコンテキスト内で事前に Read している必要があります。圧縮によって読込状態は消去されます。編集前に再読込してください。
  • 一括置換後は古い用語を grep してください。 AI は検索・置換の完全性を過信します。一括編集後はリポジトリ全体を grep し、ドキュメント/設定/カタログに参照漏れがないか確認してください。
  • 削除前に下流の参照を確認してください。 削除の影響は、ドキュメントやコードの陳腐化へ連鎖します。削除前に参照元ファイルを洗い出してください。
  • 記憶を失った後、新しく作成する前に既存の状態を確認してください。 圧縮によってこれまでの作業の記憶が消去されます。作業を再開するときは現在の状態を確認し、決してむやみに重複作成しないでください。
  • AI 生成コンテンツは実際のコードと照合してください。 AI は API、クラス名、メソッドシグネチャを幻覚することがあります。ドキュメントへの記載や参照の前に、grep して実在を確認してください。
  • 編集後は依存関係を最後までたどってください。 定義を変更しても、その下流の利用箇所を見落とすことがあります。依存関係をすべてたどってください。
  • 名前を変更するときは、利用側の全ファイル形式を grep してください。 ファイル形式によっては、参照先が見つからなくてもエラーなしで無視されます。コード、テンプレート、設定、生成ファイルを検索してください。
  • 正しさを検証するときは、すべてのコードパスをたどってください。 コードが存在することと、実行されることは同じではありません。正常系だけでなく、早期リターン、エラー分岐、条件によるスキップもたどってください。
  • ソースが変わったら、正規データを埋め込んでいるドキュメントも更新してください。 派生データ(ワークフロー、スキーマ、設定など)を直接記載しているドキュメントは、気づかないうちに古くなります。ソースと合わせて、該当する埋め込みドキュメントをすべて更新してください。
  • コンテキスト復旧後は、サブエージェントの結果を検証してください。 親エージェントが圧縮されている間にバックグラウンドエージェントが完了している場合があります。完了したはずだと信じず、出力を grep して確認してください。
  • 対象の全一覧とサブエージェントへの割り当てを照合してください。 カテゴリごとにサブエージェントを並行実行すると、境界上の項目を見落とすことがあります。作業を進める前に、割り当ての和集合を対象一覧と照合してください。
  • サブエージェントが引き継ぐ知識は、そのエージェントの .md 定義に書かれた内容だけです。組み込みの Explore ではなく、カスタムエージェント種別を使用してください。 ツールの採用には、権限+知識+適用(番号付きワークフロー手順)が必要です。
  • サブエージェントの調査結果は最後にまとめてではなく、随時保存してください。 長時間実行されるサブエージェントは、最終書き込み前に打ち切られることがあり、調査結果が失われます。報告ファイルにセクションごとに追記するよう指示してください。
  • デバッグ時は修正する前に「どちらの責任か」を確認してください。 呼び出し元(データが誤っている)と呼び出し先(処理が誤っている)をたどり、責任のある層を修正してください。症状が表れる箇所だけを修正してはいけません。
  • テスト失敗時は、追跡や編集の前に暫定判定を記録してから調査してください。 次の 5 つの分類をすべて使ってください。SOURCE-WRONG(本番コードが意図に反している)、TEST-WRONG(アサーション/セットアップが古くなっている)、TEST-NOT-OPTIMAL(妥当だが脆弱、または情報量の少ないテスト)、ENVIRONMENT-BLOCKED(外部状態のため判定できない)、AMBIGUOUS(意図や証拠から安全に選べない)。その後、根本原因をたどり、適用される仕様(存在する場合は docs/specs/**)とソースの両方に照らして検証してください。成功を無理に得るために、アサーションを弱めたり、スキップを追加したり、タイムアウトを緩めたり、ソースを変更したりしてはいけません。
  • 抽出/リファクタリング後は、削除した名前をすべて grep してください。 主要ファイルの作業完了は、他のファイルもクリーンであることを意味しません。完了を宣言する前に、対象範囲全体で削除したシンボルを一つずつ grep してください。
  • 既存の値には意図があると考え、変更したり不具合だと指摘したりする前に、必ず理由を確認してください。 パターンマッチで「誤り」と決めつけると、背景を見落とします。定数/上限/フラグ/しきい値を変更または報告する前に、コメント、git blame、呼び出し元の処理順序(値を正しくする保証は、通常、該当行の直前に実行されるコードにあります)、同じ規約を使っている 2 つ以上の類似した呼び出し箇所を確認してください。理由なしに WHAT(何をするか)だけを記したドキュメントは、根拠が欠けているのではなく、WHY(なぜそうするか)の説明が不足しているということです。検証作業でも、正確な file:line の引用が証明するのは転記が正確であることだけであり、不具合の存在ではありません。
  • 最初の出力だけでなく、影響を受けるすべての出力を検証してください。 一つのビルドが成功しても、すべてが成功したとは限りません。複数のスタックにまたがる変更(バックエンド/フロントエンド/テスト/ドキュメント)では、すべての出力を検証してください。
  • 近くにあるパターンをコピーする前に、適合性を評価してください。 最も近い例が適合するとは限りません。新しいコンテキストが同じ制約、基底クラス、スコープ、ライフタイムを共有するか確認してください。
  • デバッグでは全体を優先し、目についた箇所に飛びつかないでください。 最初に思いついた原因へすぐ飛びつかないでください。前提条件(設定、環境変数、パス、DB、エンドポイント、認証情報、バージョン、DI、データ)をすべて列挙し、それぞれを証拠(推論ではなく grep/クエリ)に照らして検証してください。「何があればこの仮説は否定されるか?」と問い、何も答えられないなら、それは仮説ではありません。最もコストの高い失敗は、バグが一度も疑われていない層にあるのに、「明らか」だと思い込んだ層をさらに深掘りすることです。
  • 変更は最小限にし、差分テストを適用してください(コンテキストに合わせて判断)。 2 つのモードがあります。(1)バグ修正 → すべての行がバグに直接関係するようにし、スタイル変更はしないでください。不要になったインポートを削除してよいのは、あなたの変更によって不要になったものだけです。(2)レビュー/機能強化 → 改善を実装し、「主な依頼を超える機能強化:[内容]」と明示してください。黙ってスコープを拡大しないでください。差分テスト:「X を依頼されていなかったとしても、この行は存在していたか?」いいえなら、削除するか明示してください。
  • 実装前に曖昧さを明らかにし、黙って解釈を選ばないでください。 複数の妥当な解釈がある場合は、それぞれの工数とともに提示してください。「[依頼] は(1)[N 時間]、(2)[N 時間]のいずれかと解釈できます。どちらが重要ですか?」まずスコープ/形式/量/制約に関する前提を列挙してください。より簡単な方法がある場合は、そのことも伝えてください。黙って選ばないでください。
  • [必須の最初のアクション] 応答する前に、必ず適切なスキルまたはワークフローを有効にしてください。 ワークフローカタログとスキル一覧に照らしてタスクを確認し、スキルの呼び出し、または $start-workflow <workflowId> で実行してください。確認する前に回答やコード作成をしてはいけません。省略はプロトコル違反です。
  • Why-Review の敵対的な視点は、計画、判断、設計をレビューするときに適用してください。 基本姿勢は VALIDATOR(妥当性を確認する側)ではなく SKEPTIC(懐疑的な側)です。却下された代替案の最も強い論拠を組み立て、述べられた理由を一つずつ逆転させて「何を犠牲にするのか」を問い、上位 2~3 個の前提をストレステストし、プレモーテム(「リリースしたが 3 か月後に失敗した。何が壊れたのか?」)を行い、作成者が見落とした代替案を 1~2 個提示してください。セクションがあるだけでは十分ではありません。重要なのは、因果関係に基づく推論、具体的な軽減策、証拠です。「より良い」や「注意深く監視する」だけでは不十分です。
  • 大規模なレビューでは、サブエージェントへのプロンプトで報告書の書き込みを最初に行わせてください。 多数のファイルを扱うサブエージェントは、最終書き込みの前に予算を使い切り、調査結果を失うことがあります。プロンプトは、(1)報告書の書き込みを最初に明示する成果物とする、(2)まとめてではなくファイル/セクションごとに追記する、(3)読み込みで予算を使い切らないようスコープを限定する、という構成にしてください。報告ファイルを残さず文の途中で打ち切られた場合は、同じプロンプトを再試行せず、より狭いスコープで再実行してください。
  • コンテキスト圧縮後は、続行する前に以前の各フェーズの結果をすべて再検証してください。 要約が示すのは意図であり、環境の状態(git のインデックス、ファイルシステム、プロセス)ではありません。再開時はまず git status を確認し、変更したファイルを再読込し、ファイルシステムを検証してください。証拠で確認されるまでは、「完了した」という主張もすべて未検証の仮説です。
  • OOM/メモリ:行サイズより先に行数を確認してください。 次の順にトリアージします。(1)上限のないクエリ — 条件を設定するトリガーとなる DB フィルターがありませんか? DB 側にフィルターを移せば、OOM を解消できます。(2)行サイズが大きいですか? プロジェクションを使えば比例して減らせます。費用対効果では、プロジェクションより行数削減が優先です。
  • システムが担う最終結果をアサートし、インフラストラクチャが担う中間状態をアサートしないでください。 非同期処理(キュー/ブローカーへの配信、再試行、バックグラウンドジョブ、キャッシュ、レプリケーション)をテストする場合は、最終的なビジネス/エンティティの状態をアサートしてください。配信の記録、つまり消費/送信ステータス、試行回数、最終エラー、ブローカー、スケジューラー、outbox/inbox テーブル内の行の有無や件数をアサートしてはいけません。この記録は共有インフラストラクチャに存在し、並行して動く任意のプロセス(別のワーカー、2 つ目のレプリカ、残っているローカルコンテナー)から書き込めるうえ、通常は決定的な共有キーが使われます。そのため、こうしたアサーションは気づかないうちにシステムではなく開発者の環境をテストします。単独実行では成功しても、同じブローカー+データベースをほかの何かが共有した途端に不安定になります。すべてのアサーションで、次の判定の問いを使ってください。「どのプロセスが処理しても、この結果は成り立つか?」いいえなら、代わりに収束後のデータ状態をアサートしてください。系として、プロセスローカルな障害注入やプロセス内テレメトリーを、任意のプロセスが実行する処理のゲートとして使うことはできません。負荷増幅に使ってください(有効化 → 範囲を限定した時間枠 → 無効化 → 収束をアサート)。前提条件として使ってはいけません。
  • ドメイン概念を汎用/共有/インフラストラクチャ層に持ち込まないでください。 再利用可能な層(共有ライブラリ、フレームワーク、インフラモジュール)は、利用側に固有のドメイン概念(テナント/顧客/製品 ID、ビジネスエンティティ、機能ルール)を一切参照してはいけません。漏れがコンパイルされ、実行されると、再利用可能なはずの層が一つの利用側と結合していても、レビューで気づかれずに通過してしまいます。共有型からドメイン情報を排除し、サブクラス化/コンポジションを通じて、ドメインフィールド/ロジックを利用側へ移してください。理由:一つの利用側のドメインに結合した層は、もはや再利用可能ではありません。

コメント