技術文書生成スキル
即時実行必須事項(読んだらすぐ実行)
NOW:現在のタスクが本スキルの適用範囲に該当するか確認するNOW:../tool-index.mdを読み込み、ツールの利用可能性と実際のパスを検証するNEXT:ツールが不足している場合はbootstrapを呼び出す。パスを推測しないことACT:「ワークフロー」の最初のステップに進み実行する。確認状態で止まらないこと
文章スタイル、トーン、声については、Skill(ce:writer) をThe Engineerペルソナで使用してください。
セキュリティ/リバースエンジニアリングタスクの文書出力
リバースエンジニアリング、ペネトレーションテスト、CTF、セキュリティ分析タスクが完了した場合、本スキルはユーザープロジェクトディレクトリに正式な技術文書を生成します。
トリガー条件
- リバースエンジニアリングタスクが完了し、主要な結論(アルゴリズム復元、署名クラック、回避策など)が出ている
- ペネトレーションテストが完了し、脆弱性が発見・検証されている
- CTF問題が解かれ、フラグが取得されている
- ユーザーが明示的に「レポート/ドキュメント/writeupを書いて」と要求した
テンプレート選択
| タスクタイプ | 使用テンプレート |
|---|---|
| APK/バイナリ/so リバース | references/security-report-templates.md → リバースエンジニアリングレポート |
| ペネトレーションテスト/脆弱性調査 | references/security-report-templates.md → ペネトレーションテストレポート |
| CTF 問題解決 | references/security-report-templates.md → CTF Writeup |
| JS/Web 署名リバース | references/security-report-templates.md → 署名リバースレポート |
| マルウェア / APT / ウイルス分析レポート | references/security-report-templates.md + references/vendor-report-rules.md |
| 汎用技術文書 | references/templates.md → README / API 文書 |
ベンダーレポート構造(Issue #65)
セキュリティ関連の正式レポートは、必ず references/vendor-report-rules.md を読み込むこと(構造のみ取得し、ベンダー原文をそのままコピーしないこと)。通常のリバースやその他のタスクでは flavor = null を使用します。ベンダーフレーバーは、タスクの証拠やユーザーが明示的に要求した場合にのみ選択します。
| Flavor / Overlay | 使用タイミング | 主な参考骨格 |
|---|---|---|
malware | 明確なマルウェアサンプル、トロイの木馬、白+黒、フィッシング/毒盛 | 火 Havoc形式:概要→フロー→サンプル分析→インシデント対応→IOC |
apt | APT/キャンペーン/グループ/多段階感染チェーン/業界標的型攻撃 | Kaspersky Securelist形式:サマリー→感染チェーン→調査ストーリー→Interesting findings→技術分析→検出・緩和→IOC |
flavor = null | 通常のAPK/ELF/PE/Mach-Oリバース、アルゴリズム/ファームウェア解析、ペネトレーション/CTF/JS署名 | 元のタスクテンプレート+ベース共通要素。malware/APT専用のセクションは付与しない |
thin vuln | ユーザーが脆弱性/パッチ/CVEの技術分析を明示的に要求した場合 | 概要→影響/再現→クラッシュとパッチ分析→保護推奨事項(nullに重ねる。第3のデフォルト全文フレーバーではない) |
原則:テンプレートは多すぎず精選する —— ベンダー全文フレーバーは2種類のみ。vuln はオプションのthin overlayであり、第3のデフォルトフルテンプレートセットは作成しない。
§0 Evidence→Finding→Path と同時に有効。競合時はEvidence契約を優先。
出力仕様
- 出力場所:ユーザーの現在のプロジェクトディレクトリ(スキルパッケージディレクトリではない)
- ファイル名形式:
YYYY-MM-DD_[タイプ]-[ターゲット略称]-report.md - プロジェクトに
docs/ディレクトリがある場合:優先的にdocs/以下に配置 - エンコーディング:UTF-8
- 言語:ユーザーの会話言語に従う(中国語の会話は中国語、英語の会話は英語)
品質要件
- すべてのコードブロックは即座に実行可能であるか、明確なコンテキストを持つこと
- プレースホルダーやTODOを残さないこと
- 主要な発見には裏付けとなる証拠が必要
- 再現手順は第三者による独立した再現が可能であること
- 機密情報(実際のトークン、パスワード、内部URL)はプレースホルダーに置き換えること
- 必須:Evidence → Finding → Path の連鎖を含めること(
../ops/evidence-finding-path.mdとテンプレート§0参照) - 必須:
references/vendor-report-rules.mdを読み込み、malware/aptまたはflavor = nullを選択すること(脆弱性タスクでは thinvulnを重ね可能)。フレーバーがない場合は元のタスクテンプレートと適用可能なBase要素のみを出力し、IOC/ATT&CKは強制しない - 推奨:ケースの
scope.md/timeline.mdを参照すること(../scripts/case-init.ps1)
図表の統合
レポート生成時、適切な箇所で diagram-generator スキルを呼び出し、可視化図表を生成すること:
| レポートタイプ | 推奨図表 | 図表タイプ |
|---|---|---|
| リバースエンジニアリングレポート | 関数呼び出し関係図、データフロー図 | Mermaid flowchart / sequenceDiagram |
| ペネトレーションテストレポート | 攻撃パス図、ネットワークトポロジ図 | Mermaid flowchart / Graphviz |
| CTF Writeup | 問題解決フローチャート | Mermaid flowchart |
| JS 署名リバースレポート | リクエスト連携シーケンス図、アルゴリズムフローチャート | Mermaid sequenceDiagram / flowchart |
図表はMermaidコードブロックとしてレポートMarkdownに埋め込み、GitHub/GitLab上で直接レンダリング可能にすること。
基本原則
1. 段階的開示(Progressive Disclosure)
情報を階層的に表示する:
| 階層 | 内容 | ユーザーの質問 |
|---|---|---|
| 1 | 1文での説明 | これは何か? |
| 2 | クイックスタートコードブロック | どうやって使うのか? |
| 3 | 完全なAPIリファレンス | オプションは何か? |
| 4 | アーキテクチャ深掘り | どのように動作するのか? |
警告、破壊的変更、前提条件は最上部に配置すること。
2. タスク指向の記述
<!-- 悪い例:機能指向 -->
## AuthServiceクラス
AuthServiceクラスは認証メソッドを提供します...
<!-- 良い例:タスク指向 -->
## ユーザー認証
ユーザーを認証するには、認証情報を指定して login() を呼び出します:
3. 示せ、語るな
すべての概念には具体的な例が必要です。
フォーマット標準
- センテンスケースの見出し:「Getting started」ではなく「Getting started」
- 最大3階層の見出し:それ以上は文書を分割する必要があることを意味する
- コードブロックでは常に言語を指定
- 内部リンクは相対パス
- 3つ以上の属性を持つ構造化データにはテーブル
品質チェックリスト
- コード例はテスト済みで実行可能
- プレースホルダーやTODOは含まれていない
- 実際のコード動作と一致している
- すべてを読まなくてもスキャン可能
- 読者が次に何をすべきか明確
アンチパターン
| 問題 | 修正 |
|---|---|
| テキストの壁 | 見出し、箇条書き、コード、テーブルで分割する |
| 重要な情報が埋もれている | 警告/破壊的変更は最上部に |
| エラーに関するドキュメントがない | 何が問題になり得るかを常に文書化する |
テンプレート
README、APIエンドポイント、ファイル整理テンプレートについては、references/templates.md を参照してください。
関連スキル
Skill(ce:writer)- 文章スタイル、トーン、声(The Engineerペルソナをロード)Skill(ce:visualizing-with-mermaid)- アーキテクチャ図とフロー図
オンデマンドブートストラップ
本スキルは外部ツールに依存せず、プレーンテキスト生成のみです。ブートストラップは不要です。
レポートに図表を埋め込む必要がある場合は、diagram-generator/ スキルを呼び出します。
ルーティングコンテキスト
上流エントリポイント:すべてのセキュリティ/リバースエンジニアリングスキルは、タスク完了後に自動的に本スキルを呼び出します。 トリガー方法:
- 自動:タスク完了後、アクションチェーンの第9ステップとして実行
- 手動:ユーザーが「レポートを書いて」「ドキュメントを出して」「writeup」と発言した場合
同階層の関連モジュール:
apk-reverse/— APKリバース完了後にリバースレポートを生成ida-reverse/— バイナリ解析完了後にリバースレポートを生成radare2/— CLI解析完了後にリバースレポートを生成js-reverse/— JS署名リバース完了後に署名レポートを生成reverse-engineering/— 汎用リバース完了後にリバースレポートを生成field-journal/— レポート内容は進化ログのデータソースとしても使用される
セキュリティレポートテンプレート:references/security-report-templates.md
ベンダーレポートルール:references/vendor-report-rules.md(フレーバー: malware | apt | null;オプションオーバーレイ: vuln)
汎用文書テンプレート:references/templates.md
タスク完了セルフチェック(完了宣言前に必ずパスすること)
- ワークフローの各ステップを実行したか(単に読んだだけではないか)?
-
tool-indexに基づいて実際のツールパスを使用したか? - 再現可能な証拠(コマンド/スクリプト/スクリーンショット/レポート)を生成したか?
- レポートにEvidence / Finding / Path(ops契約)が含まれているか?
- RULESで要求されているチェックリスト項目を完了し、書き戻したか?