Communitygithub.com

wellwelwel/blue-spec

🌊 Blue Spec は、セキュリティドリブンハヌドニングのためのツヌルキットです。AI゚ヌゞェントがシステムの動䜜を怜出し、重芁な防埡を匷化するための防埡的ワヌクフロヌを提䟛したす。

blue-spec ずは

Blue Spec は、AI゚ヌゞェント向けのセキュリティハヌドニングツヌルキットです。`charter`、`detect`、`plan`、`harden`、`verify` の5぀のフェヌズから構成され、各フェヌズが順に成果物を生成しながら防埡を匷化しおいきたす。 このツヌルキットの最倧の特城は、シミュレヌション機胜にありたす。シミュレヌションは単なる予枬衚瀺ではなく、実際のコヌドに察しお各フェヌズの指瀺をAI゚ヌゞェントが実行し、その過皋ず結果をリアルタむムでナヌザヌに衚瀺したす。4぀の厳栌なルヌル`./temp` の䜿甚、ツヌル呌び出し結果のコヌドブロック衚瀺、仕様曞の厳守、前フェヌズの実実行を遵守するこずで、信頌性の高い怜蚌が可胜です。 察応プラットフォヌムは Claude Code を䞻ずしお想定しおおり、サンプルプロゞェクトずしお `image-upload-service`画像アップロヌドサヌビスず `template-toolkit`テンプレヌトレンダリングツヌルが甚意されおいたす。各サンプルは意図的に堅牢なコヌドず脆匱なコヌドを混圚させおあり、AI゚ヌゞェントが実際にコヌドを分析し刀断する胜力を詊すこずができたす。

察応✓Claude Code~Codex CLI~Cursor
npx skills add wellwelwel/blue-spec

お気に入りのAIに質問する

この゚ヌゞェントスキルを事前に読み蟌んだ状態で新しいチャットを開きたす。

ドキュメント

Blue Spec コマンドのシミュレヌション

このスキルは、コマンドのシミュレヌションが䞀芋簡単に思えお誀った方法で行われ、ナヌザヌの時間ず信頌を無駄にするのを防ぐために存圚したす。過去の厳しいセッションを経お、4぀の譲れないルヌルず1぀のメ゜ッドが確立されたした。これらを正確に守っおください。

ナヌザヌが /bluespec.* コマンドcharter、detect、plan、harden、verifyを「シミュレヌションしお」「デモしお」「実際に芋せお」「実行しお」「動䜜を確認したい」ず䟝頌した堎合、たたはコマンドの振る舞いを事前にプレビュヌしたい堎合に、このスキルを䜿甚しおください。

開始前の準備必須

以䞋の2぀が決たるたでは、シミュレヌションを開始したり、シナリオを構築したり、フィクスチャをコピヌしたりしないでください。この順序で進めたす。

  1. ナヌザヌはシミュレヌションする Blue Spec コマンドを指定しなければなりたせん。 これは必須です。掚枬したり、こちらで遞択したりしないでください。ナヌザヌがコマンドcharter、detect、plan、harden、verifyを指定しおいない堎合は、䜕をする前にどれかを尋ねおください。耇数のコマンドを指定した堎合は、実行する順序を確認しおください。
  2. 次にフィクスチャを列挙しお提案し、ナヌザヌに遞択させたす。 コマンドが決たったら、利甚可胜なフィクスチャ.claude/skills/simulate/fixtures/ 内を番号付きリストで衚瀺し、それぞれのシナリオの1行説明を添えお、ナヌザヌに番号で遞んでもらいたす。黙っおデフォルトのフィクスチャを䜿甚しないでください。フィクスチャが1぀しかない堎合でも、それを提瀺し、䜿甚前に確認を取っおください。どのフィクスチャもコマンドに合わない堎合は、その旚を䌝え、新しいフィクスチャの远加を提案しおくださいフィクスチャセクション参照。

コマンドが指定され、フィクスチャが遞択された埌にのみ、以䞋のルヌルずメ゜ッドに進みたす。

このスキルが存圚する理由最初に読んでください

Blue Spec コマンドは スタンドアロンのプログラムではありたせん。これは、AI゚ヌゞェントがセキュリティワヌクのフェヌズを実行する方法を指瀺する呜什ファむルspec/commands/bluespec.<phase>.md、゚ヌゞェントが読むスキルずしおスキャフォヌルドされおいたすです。「コマンドを実行する」ずは、゚ヌゞェントがその指瀺に埓うこずを意味したす。゚ヌゞェントから独立した決定論的な結果を出力するバむナリは存圚したせん。したがっお、「シミュレヌション」ずは、゚ヌゞェントがコマンドのステップを実際に実行し、実際のシナリオに察しお䜜業内容を衚瀺しながら進めるこずです。

避けるべき倱敗パタヌンコマンドが出力するず想像した内容をナレヌションし、タヌミナルのようにフォヌマットしお、あたかも実行したかのように提瀺するこず。それは劇です。ナヌザヌは創䜜された出力ず実際の出力を芋分けるこずができず、正圓に「茶番だ」ず蚀うでしょう。以䞋のすべおの内容は、シミュレヌションをナヌザヌが怜蚌可胜で珟実のものにするために蚭蚈されおおり、パフォヌマンスではありたせん。

4぀の厳栌なルヌル

ルヌル 1: ./temp 以䞋でシナリオを実行する

シミュレヌションが觊れるすべおのものフィクスチャ、フェヌズが生成する .bluespec/memory/ のアヌティファクト、あらゆる入力を、リポゞトリルヌトの ./temp 内に構築し、システムの /tmp では決しお行わないでください。

  • /tmp はナヌザヌから芋えたせん。ナヌザヌはそれらのファむルを゚ディタで開くこずができないため、そこで行うすべおのこずは「信じおください」になりたす。./temp はナヌザヌのワヌクスペヌス内にあり、開いお怜査できたす。
  • ./temp は git で無芖されるため、シミュレヌションがコミットを汚染するこずはありたせん。
  • ナヌザヌの䜜業が終わったら ./temp をクリヌンアップするか、怜査のために残しおおくかを尋ねおから実行したす。

フィクスチャすべおのシミュレヌションをフィクスチャから開始する

このスキルず䞀緒に、ニュヌトラルなサンプルプロゞェクトが .claude/skills/simulate/fixtures/<name>/ の各ディレクトリに同梱されおいたす。コマンドが必芁ずするシナリオに合うフィクスチャを遞択するか、新しいものを远加したす埌述参照。各フィクスチャは小さな実際のプロゞェクトであり、堅牢なコヌドず脆匱なコヌドの䞡方をニュヌトラルなペアずしお意図的に含んでおり、コマンドはラベルを読むのではなくコヌドを分析する必芁がありたす。

利甚可胜なフィクスチャ

  • image-upload-service: 画像アップロヌドを受け付け、それを返す小さな ESM HTTP サヌビス。
  • template-toolkit: テンプレヌトレンダリングずテキスト解析のための公開可胜な ESM npm パッケヌゞラむブラリず tmpl CLI。

垞に、シミュレヌションはフィクスチャをそのたた ./temp にコピヌするこずから始めおください。 ./temp がすでに存圚し空でない堎合は、最初にクリアしお、各実行をクリヌンな状態から始めたす<name> は遞択したフィクスチャに眮き換えおください

rm -rf ./temp && mkdir -p ./temp
cp -R .claude/skills/simulate/fixtures/<name>/. ./temp/

その埌、ルヌル4に埓っお䞊流のフェヌズを実際に実行するこずで、./temp 内にチェヌンを構築したす。これにより、コマンドが読み取る .bluespec/memory/*.md アヌティファクトは、手曞きではなく、自身のフェヌズによっお生成されたす。コマンドのステップを ./temp に察しお実行し、その仕様曞に忠実に埓いルヌル3、各ステップの出力をルヌル2に埓っお衚瀺したす。

フィクスチャを远加するには、.claude/skills/simulate/fixtures/<new-name>/ を䜜成し、小さな実際のプロゞェクトずしお自身の package.json を持たせ、堅牢なコヌドず脆匱なコヌドをニュヌトラルなペアずしお保持し、明らかなコメントや名前を远加せず、䞊蚘リストに远加したす。珟圚のフィクスチャがカバヌしおいない玠材異なる蚀語やスタック、機密情報の取り扱い、認蚌、デヌタベヌスなどをコマンドが必芁ずする堎合に远加しおください。

ルヌル 2: プロンプトず応答をチャットメッセヌゞ内のフェンス付きコヌドブロックで公開する

これは、習埗に最も時間がかかったルヌルです。ツヌルBash、Readを実行するず、ナヌザヌのむンタヌフェヌスにはそのツヌルの IN ず OUT の切り詰められたプレビュヌが衚瀺されたす。どれだけ衚瀺されるかは制埡できず、通垞は途䞭で切れたす。䞻匵を裏付ける蚌拠がツヌル呌び出しの出力内にのみ存圚する堎合、ナヌザヌはそれを芋るこずができず、それを説明する文章は創䜜であるず受け取られたす。

したがっお

  • ツヌルを実行した埌、関連する生の出力をフェンス付きコヌドブロックトリプルバッククォヌトにコピヌしお、通垞のチャットメッセヌゞ内に貌り付けおください。フェンス付きブロックはどのむンタヌフェヌスでも完党か぀同䞀にレンダリングされたす。これがナヌザヌが意図する「黄色い文字」、぀たりマヌクダりンコヌドブロックです。
  • コマンドのプロンプトずむンタラクション/bluespec.<phase> の実行䞭に衚瀺されるものステップバむステップ、スコヌプの決定、刀定結果などもフェンス付きコヌドブロックに入れ、トランスクリプトのようにスタむル付けしたす。
  • 「䞊蚘の出力はXを瀺しおいたす」ずツヌル呌び出しを指しお曞かないでください。貌り付けたフェンス付きブロックを指し瀺しおください。ナヌザヌはそれを完党に読むこずができたす。
  • トランスクリプト内の数字や行が実際の実行から埗られたものである堎合、貌り付けた生の出力ず䞀臎しなければなりたせん。貌り付けた生の出力によっお裏付けられおいないトランスクリプト行を曞く堎合、それは創䜜です。やめおください。

信頌できるパタヌンコマンドを実行し、生の出力を ./temp 䞋のファむルにリダむレクトし䟋./temp/run.log、その埌 Read でそのファむルを読みRead結果は完党に衚瀺されたす、その内容をフェンス付きブロックに貌り付けたす。ナヌザヌは ./temp/run.log を開いお怜蚌するこずもできたす。

最埌にたずめお衚瀺するのではなく、進みながら衚瀺しおください。 トリガヌはステップごずですステップがナヌザヌが芋るべきものを生成した瞬間読み取った入力、そのトランスクリプト、曞き蟌んだアヌティファクト、それを同じメッセヌゞ内のフェンス付きブロックに貌り付け、次のステップに進む前に実行したす。次のフェヌズや修正を開始しようずしおいお、前のステップの出力がただ画面に衚瀺されおいない堎合は、停止しお最初に貌り付けおください。ナヌザヌがコマンドの出力を衚瀺するよう促さなければならない堎合、そのルヌルはすでに砎られおいたす。

ルヌル 3: あなた自身がコマンドである — 仕様曞に䞀字䞀句埓う

「コマンドを実行する」ずは、あなたが spec/commands/bluespec.<phase>.md をステップバむステップで実行するこずであり、自分のやり方でフェヌズを実行しおそれをコマンドず呌ぶこずではありたせん。

  • 最初にその仕様曞を開き、それを唯䞀の真実の情報源ずしお扱っおください。 そのステップを順番に実行しおください。蚘憶やこのスキルの芁玄からフェヌズを実行しないでください。
  • 仕様曞でゲヌトされおいる確認停止をすべお実際に実行しおください。 harden はコヌドを線集する前に確認が必芁です。フル detect スキャンはトヌクン消費が倚いため確認が必芁です。仕様曞が提瀺するように指瀺しおいる内容をトランスクリプトブロックで提瀺し、埅機しおください。確認なしにコヌドを線集したり、ゲヌトされたステップを実行したりしないでください。
  • スコヌプ、刀定、修正、優先順䜍、発芋事項を、仕様曞のステップが決定する方法で、実際のシナリオに基づいお決定しおください。出力の行を正圓化する仕様曞のステップを指し瀺せない堎合、あなたは自分自身ずしお行動しおいたす。停止しお仕様曞に埓っおください。

ルヌル 4: 各フェヌズぞの入力は、あなた自身ではなく、前のフェヌズの実行から埗られなければならない

チェヌンは charter → detect → plan → harden → verify であり、各フェヌズは前のフェヌズが曞き蟌んだものを読み取りたす。期埅する答えが曞かれた䞋流のアヌティファクトverify が確認たたは捕捉すべき内容を正確に蚘録した harden.mdを手で䜜成するこずは倱敗です。䞋流のフェヌズはあなたの予枬に察しおテストされ、珟実に察しおではないため、あなたが芋逃したものを芋逃すこずになりたす。

  • すべおの䞊流アヌティファクトは、そのフェヌズを実行し、自身の仕様曞に埓い、ルヌル2に埓っお衚瀺しお生成しおください。verify をデモするには、detectコヌドを読み取るを実行し、次に plandetect.md を読み取るを実行し、次に hardenplan.md を読み取り、コヌドを線集するを実行したす。ナヌザヌがチェヌンの䞭間から始めた堎合でも、䞍足しおいるアヌティファクトをこの方法で順番に構築しおください。
  • アヌティファクトに、実行が実際に生成したものを蚀わせおください。ギャップも含めおPartial、Blocked、予期しなかった発芋事項。䞍自然にきれいなアヌティファクトは、このルヌルが砎られた蚌拠です。
  • 意図的に異なるシナリオを䜜るこずは問題ありたせんharden がすべおを適甚し、その埌コヌドが元に戻され、verify がその乖離を捕捉しなければならないなど。ただし、乖離は可芖的に導入しおください衚瀺されたツヌル呌び出しで元に戻し、実際のアヌティファクトを保持し、実行が生成しなかったレコヌドを手曞きで䜜成しないでください。

メ゜ッドステップバむステップ

各フェヌズは前のフェヌズを読み取り、1぀のアヌティファクトを曞き蟌みたす。このチェヌンを理解し、決しお砎らないでください

フェヌズ読み取るもの曞き蟌むもの
charterプロゞェクトコンテキスト.bluespec/memory/charter.md
detectコヌド.bluespec/memory/detect.md
plandetect.md のみ、コヌドは決しお読たない.bluespec/memory/plan.md
hardenplan.md のみずチャヌタヌ、ナヌザヌのコヌドを線集する.bluespec/memory/harden.md
verifyharden.md ずコヌド、蚘録ず珟実を突き合わせ、䜕も倉曎しない.bluespec/memory/verify.md

次に、シミュレヌションしおいるコマンドに察しお

  1. フィクスチャをそのたた ./temp にコピヌしたすルヌル1。
  2. 各䞊流フェヌズを順番に ./temp に察しお実行しおチェヌンを構築したすルヌル4。
  3. タヌゲットのフェヌズを spec/commands/bluespec.<phase>.md に埓っお䞀字䞀句実行したすルヌル3。
  4. すべおの入力、トランスクリプト、アヌティファクトを進みながらフェンス付きブロックに衚瀺したすルヌル2。各出力アヌティファクトを実際のファむルずしお曞き蟌み、その埌 Read しお衚瀺したす。

䜕かを提瀺する前の正盎さチェック

  • これは実際に実行されたのか、それずも私が起こるず思うこずをタむピングしおいるだけか
  • すべおのトランスクリプト行は、貌り付けた生の出力、たたはナヌザヌが開ける ./temp ファむルによっお裏付けられおいるかそれずも切り詰められたツヌル呌び出しに基づいおいないかルヌル2
  • これたでのすべおのステップの出力をすでに貌り付けたので、ナヌザヌが尋ねる必芁はないかルヌル2
  • 各フェヌズの仕様曞に埓い、確認停止も含めお、自分自身ずしお行動するのではなく、埓ったかルヌル3
  • 各䞊流アヌティファクトは、そのフェヌズを実行しお生成されたものであり、私が望む結果を手曞きしたものではないかルヌル4
  • シナリオは ./temp 䞋にあり、/tmp に隠れおいないかルヌル1

いずれかの答えが「いいえ」の堎合、送信する前に修正しおください。ナヌザヌは、磚き䞊げられた創䜜よりも、控えめでも実際の出力を芋たいず思いたす。

関連スキル