craft-anything について
Craft Anythingは、実行ファイル、アプリ、ライブラリ、キャプチャなど、ビルド済みソフトウェアを証拠に基づいて調査するスキルです。仮説、証拠付きの所見、引き継ぎを記録し、観察と推論を区別して分析を進めます。
主な機能
- 01出荷済みソフトウェアの調査
- 02概要・計画・引き継ぎの記録
- 03仮説と証拠付き所見の追跡
- 04観察・導出・推論の区別
- 05形式別ツールセットへの対応
活用シーン
- 01実行ファイルやライブラリの調査
- 02アプリバンドルやAPKの分析
- 03アプリの2つのバージョンの比較
- 04クラッシュダンプやネットワークキャプチャの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ storytold/ craft-anything --skill craft-anythingインストール後、Claude Code で/craft-anythingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
clients.rsconfig.rsdoctor.rslib.rsplan.rsskill_recovery.mdskill.rstests.rstools.rsyaml.rs詳細
Craft Anything:証拠を重視した調査
実行可能ファイル、ライブラリ、アプリバンドル、APK、Electron アプリ、WebAssembly モジュール、ファームウェア、クラッシュダンプ、ネットワークキャプチャなど、実際に構築され、リリースされたものに答えが左右される場合は、Craft Anything を使用してください。ソースコードがあり、質問がソースに関するものであれば、ソースを読んでください。そのほうが速く、直接的です。
必要なときだけ接続する
craft-anythingツールがすでにツール一覧にある場合は、そのまま作業を始めてください。最初にセットアップや doctor を実行する必要はありません。- このファイルよりも、現在のツール一覧とそのスキーマを優先してください。サーバーのバージョンは新しい場合も古い場合もあります。
- ツールが見つからない、または起動に失敗する場合は、
craft-anything-cli doctorを実行してからcraft-anything-cli setup --dry-runを実行し、適用する前に計画をユーザーに提示してください。セットアップが成功した後、ユーザーはアプリを再起動するか、再接続する必要があります。 - 最初に表示されるのは、少数のコアツールだけです。
list_toolsetsを呼び出して他のツールセットを確認し、enable_toolsetを呼び出して有効にしてください(ネイティブコード、Android、Apple、Web、ランタイムなど)。 - Clean room(Deep モードはデフォルトでオフ)では、ターゲット内部のものは何も読み取られません。外部から動作するツールだけが一覧表示され、それ以外は
details.reasonがclean_roomとして拒否されます。回避策を探すのではなく、質問への回答には Deep モード(アプリ内の切り替え、settings_set deep_mode true、または--deepを付けて起動したサーバー)が必要だとユーザーに伝えてください。
作業メモリ:常に最新に保つ
長期にわたる調査は、単一のコンテキストウィンドウを超えて続きます。プロジェクトには概要、計画、仮説、調査結果、引き継ぎメモが保存されています。毎回これらを活用してください。
- 開始または再開する。 まず
core_investigation_showを呼び出してください。引き継ぎメモがある場合は、最初からやり直すのではなく、そこに記された内容と計画に沿って続けてください。また、開いている項目を確認するためにcore_session_showも呼び出してください。 - 新しい質問の場合は? 分析の呼び出しを行う前に、
core_brief_writeで概要を書き込みます(質問、その質問の背景、対象、制約(「プログラムを実行しない」など)、回答を完成とみなす条件)。続いてcore_plan_updateで初期計画を作成します(短い番号付き手順を記し、それぞれに、理由を添えてtodo/doing/done/blockedのいずれかの状態を設定します)。 - ツール呼び出しをまとめて行った後: 計画の各手順の状態を更新します。検証する価値のある主張を立てたら、
core_hypothesis_recordに確認または反証の予測を記録してください。証拠が得られたら、証拠 ID を添えてcore_hypothesis_updateで状態を更新します(supported、refuted、abandoned)。 - 結論が出たら: 主張と少なくとも1つの証拠 ID を
core_finding_recordに記録してください。レポートは調査結果をもとに作成します。チャットの文章をもとに作成するものではありません。 - 各ターンの最後に:
core_handoff_writeを使って、現状、次にすべきこと、避けるべき落とし穴(行き詰まった方法、時間のかかるツール、誤解を招く文字列)を記録してください。次の担当者が初めて読む場合を想定して書いてください。 - すでに試したことを確認する必要がある場合は、
core_journal_readを使うと、これまでのすべてのツール呼び出しとモデルのターンを確認できます。
方法
- 観察し、導出し、推論し、どれに当たるかを明示します。 観察した事実は、バイト列またはキャプチャから直接得られます。導出した事実は、観察結果から計算したものです(制御フローグラフ、呼び出しグラフなど)。推論は判断です(名前、意図、モデルによる解釈など)。各主張に該当する区分を付けてください。
- すべての主張に証拠 ID(
ev_…)を付けてください。証拠 ID のない主張は仮説です。 - 不在は証明ではありません。「文字列が見つからない」や「呼び出し元が見つからない」という結果は、検索した範囲に限られます。検索範囲とツールが報告した網羅範囲を明示し、重要でありながら未解決の事項については、未確認事項(
core_unknown_add)を記録してください。 - 予測してから検証します。 仮説を検証するツールを実行する前に、何が見つかると予想するかを書き留めてください。結果が予想と異なる場合は、結果を無理に説明しようとせず、仮説を更新してください。
- まず要約を確認し、その後ページを取得します。 大きな結果は、要約と証拠 ID の組み合わせで返されます。一度にすべてを取得するのではなく、ページ(
offset/limit)または必要な特定の項目を要求してください。すでに成功した、または拒否された同一の呼び出しを繰り返さないでください。 - ファイル名ではなく、形式に基づいて判断します。 ファイルの種類はパーサーに判定させてください。
対象別の開始方法
| 対象 | 最初の手順 |
|---|---|
| ネイティブ実行ファイルまたはライブラリ(ELF、PE、Mach-O) | core_target_open を実行し、概要、検索、関数の各ツールを使用します |
Electron アプリ、.asar、または JavaScript バンドル | アプリまたはアーカイブに対して core_target_open を実行し、JavaScript ツールセットを使用します |
| Android APK/DEX | core_target_open を実行し、Android ツールセットを使用します |
| .NET アセンブリ | core_target_open を実行し、マネージドツールセットを使用します |
| WebAssembly、Go、PE リソース、ファームウェア、クラッシュダンプ | フォーマットツールセットを使用します |
| ライブのウェブページまたは Electron ウィンドウ | ブラウザツールセットを使用します(観察のみ) |
| 同一アプリの 2 つのバージョン | 両方を開き、アプリケーションツールセットの比較ツールを使用します |
ユーザーがアプリ名を挙げずに「自分のアプリ」と言った場合は、どのアプリか尋ねてください。サンプルファイルで決めつけないでください。
同意と安全性
- 対象のコードを実行するツールや、接続されたデバイスを変更するツールには、ユーザーの明示的な OK が必要です。呼び出しが
consent_requiredを返した場合は、実行内容を説明して許可を求めてください。回避方法を探してはいけません。 - 静的解析では対象を実行しません。静的な証拠だけから実行時の挙動を断定せず、推論であることを明示してください。
- メモ、所見、引き継ぎ情報に、秘密情報、Cookie、個人データを記載しないでください。
失敗した場合
| エラーコード | 対応 |
|---|---|
not_found | まず対象を開きます(core_target_open)。またはパスや名前を確認します |
feature_missing / engine_missing | 対応方法を読みます。必要なツールセット、エンジン、または設定が記載されています |
over_limit | 結果が大きすぎて送信できませんでした。ページごとに取得するか、証拠 ID(evidence://<id> リソース)で読み込みます |
stale_revision | core_investigation_show で読み直し、マージしてから再試行します |
consent_required | ユーザーに許可を求めます |
完了する前に、各計画ステップを完了またはブロックとしてマークし、回答内のすべての結論が記録済みの所見と一致することを確認してください。未確認事項を列挙し、引き継ぎ情報を作成してください。
コメント
Markdown 対応