writing-plan — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited writing-plan (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
承認済み Spec ファイルを入力として、技術設計 + タスク分解を含む Plan ファイルを生成する skill です。本プロジェクトのワークフロー (docs/workflow.md) における Plan ステージを担います (spec-kit の Plan + Tasks 相当)。
用語: 「Project Phase」「Workflow Stage (ステージ)」「Release Phase」「Spec」の定義は docs/glossary.md を参照してください。
... → writing-spec → spec-review (pass) → [writing-plan (本 skill、main 側)] → spec-leader (Isolate〜ship)
│
└── 他 Spec の Plan を参照可能
(specs/*.plan.md、Phase 5 並列化時)Spec の「何を作るか」を、実装可能な「どう作るか + どの順で作るか」に展開します。main ブランチ側で完結 し、Plan ファイルを specs/<spec-name>.plan.md として配置することで:
specs/*.plan.md で参照可能specs/archive/<spec-name>.plan.md に archive 移動、過去の設計判断を将来 Spec で参照可能spec-review skill が verdict: pass を返した直後、本 skill を自動起動 します (2026-04-22 改修: 従来の spec-leader 起動順序から独立し、spec-leader の前に配置)。入力:
specs/<spec-name>.md (main 側の Spec、status: spec-complete)specs/<spec-name>.review.md (参考、verdict: pass 確認用)specs/dag.md (複数 Spec 時、並列実行中の他 Spec の Plan 参照のため)specs/<spec-name>.md) の存在status: spec-completespecs/<spec-name>.review.md の存在と verdict: pass前提違反時は明確なエラー文言で停止し、spec-leader には進まずにユーザー相談で解決してから再実行します。
生成する specs/<spec-name>.plan.md の章構成 (main 側に配置、2026-04-22 改修):
---
name: <spec-name>
spec_path: specs/<spec-name>.md
status: plan-complete
created: YYYY-MM-DD
---
# Plan: <spec-name>
## 1. 技術設計概要
Spec の機能要件を実現するための技術選定と高レベル設計。
## 2. アーキテクチャ
- コンポーネント構成
- データフロー
- 依存関係 (新規 / 既存ライブラリ)
## 3. データモデル
- 新規テーブル / 型定義
- 既存スキーマへの変更 (migration を伴う場合は明示)
## 4. API 設計
- エンドポイント一覧 (メソッド / パス / 入出力)
- 認証要件
## 5. 実装タスク分解
### 5.1 タスクリスト (チェックボックス形式、必須)
各タスクは以下の項目を必須で持ちます (`files_touched` は並列競合防止のために必須、2026-04-22 の iter-3 統合テスト知見に基づく改修):
- [ ] T-1: <タスク名> (見積: XX 分)
- 入力: <前提ファイル / 依存タスク>
- 出力: <成果物>
- テスト: <先行して書くテストの概要>
- **files_touched**: `[<編集予定ファイルの絶対的相対パス>, ...]` (必須、空配列不可)
- [ ] T-2: ...
- [ ] T-N: ...
#### 5.1.1 files_touched 必須化の理由
過去 (iter-3 統合テスト) で、並列実行した T-1/T-2 の developer agent が共通ファイル (`__init__.py`) を同時編集して git index 競合が発生、T-2 の commit が消失する事故が起きました。`files_touched` を Plan 段階で明示することで:
- 並列実行可否を `files_touched` の積集合で機械判定できる (積集合が空 = 並列可)
- developer agent が allowed_files として受け取り、越境編集を自己検出できる
- 共通ファイル (バンドル / entrypoint 等) は専用の集約タスク (T-integrate) として最後に分離可能
### 5.2 タスク間の依存関係と並列判定
T-1 → T-2, T-3 (並列可) → T-4 のように DAG を記述。**並列可の判定は以下 2 条件の AND**:
1. タスク間の依存関係が DAG 上で先祖-子孫関係にない
2. タスクの `files_touched` が空積集合 (= 編集対象ファイルが一切重ならない)
共通ファイルを複数タスクが編集する場合は、**T-integrate タスクを最終工程として分離** することを推奨:
この構造で T-1 と T-2 は files_touched 積集合が空のため安全に並列化可能。T-integrate は逐次実行。
### 5.3 plan.meta.json の生成 (2026-04-22 iter-4 改修、軽量メタ)
Plan 保存時に `specs/<spec-name>.plan.meta.json` も同時生成します (任意、learn skill の時間計測補助):
{ "spec": "<spec-name>", "plan_started_at": "2026-04-22T14:00:00Z", "plan_completed_at": "2026-04-22T14:15:00Z", "tasks_count": 4, "parallel_groups_count": 2, "files_touched_union": ["util/add.py", "util/core.py", ...], "depends_on": ["auth"], "references_other_plans": ["specs/auth.plan.md"] }
- `plan_started_at` / `plan_completed_at`: Plan ステージの所要時間を learn skill が計測できる
- **取得手順 (2026-04-20 tmux-dashboard-mvp learn §5.1 改修、必須)**:
- `plan_started_at` は本 skill 起動直後 (§3 前提条件チェック完了前) に `date -u +%Y-%m-%dT%H:%M:%SZ` で取得し、skill 内部で保持
- `plan_completed_at` は §7 ユーザー承認後の Plan ファイル保存**直前** に同コマンドで再取得
- 両タイムスタンプを同値で書くのは未計測扱いと等価なため **絶対に禁止** (§10 アンチパターン)。作業時間が実際に数秒しかない場合も秒単位で差を記録すること
- Claude として実行する際は `Bash` で `date -u +%Y-%m-%dT%H:%M:%SZ` を 2 回別タイミングで呼ぶ (skill 起動直後と Plan 保存直前)
- `tasks_count` / `parallel_groups_count`: タスク粒度統計
- `parallel_groups_count` の定義 (iter-4 eval の曖昧性指摘を反映): **§5.2 で「並列可」と判定されたグループの数** を指す。単独タスク (先頭の migration 等 / 末尾の T-integrate 等) は並列グループに含めない。例: T-1 (単独) → [T-2, T-3] (並列 G1) → [T-4, T-5, T-6] (並列 G2) → T-integrate (単独) の構造なら `parallel_groups_count: 2`
- `files_touched_union`: 全タスクの files_touched 和集合 (orchestrator の衝突検出に使用)
- `references_other_plans`: 本 Plan が参照した他 Spec の Plan (§8.3 の継承追跡)
learn skill §4 時間配分テーブルで Plan 行が旧来 null だった問題 (iter-4 learn 指摘) が解消されます。
## 6. テスト戦略
- ユニットテスト対象
- 統合テスト対象
- E2E テスト対象 (該当する場合)
## 7. リスクと対応
Spec の §7 リスクの技術的具体化。実装上の注意点を記述。spec-leader の Implement ステージは Plan のチェックボックスを developer agent に割り当てます。チェックボックス以外の形式 (箇条書きのみ / 段落のみ) は NG です。
各タスクには「先行して書くテスト」を明記します。tdd-driver skill が Implement 時にテスト存在を確認するため、Plan 段階で設計します。
Phase 3 時点では main agent が直接コードベースを調査します。Phase 5 で investigator agent が追加された際、以下を並列起動する前提のインタフェースを確定します。
本 skill は investigator の結果をマージして Plan に反映するだけで、呼び出し方法は Phase 5 で確定させます (本 skill 側の改修不要)。
specs/<spec-name>.plan.md 保存 (main 側、2026-04-22 改修)承認なしに Plan を保存してはいけません。
Plan ファイル保存 + ユーザー承認完了後、spec-leader skill を自動起動 します (従来 spec-review → spec-leader 直結だったフローが、spec-review → writing-plan → spec-leader に変わったため本 skill が自動起動担当)。
引き渡すパラメータ:
spec_path: specs/<spec-name>.mdplan_path = specs/<spec-name>.plan.md を自動特定、前提条件 §3 でチェック)specs/dag.md は単一 / 複数にかかわらず 常に存在 する前提 (spec-dag-builder が 1 ノード DAG も生成するため)。本 skill は dag.md を唯一の実行順序源 として扱います。
specs/dag.md を読み込み、parallel_group の小さい順にソートparallel_group 内はユーザーと相談して処理順を決定 (通常は名前順 or 重要度順)status: spec-complete / spec-revised の Spec のみ (archived / plan-complete 以上は処理済のためスキップ)specs/<spec-name>.plan.md が既存の Spec もスキップ (§3 前提条件、上書き防止)本 skill は対話型のため、Phase 3 では順次処理 します。1 つの Plan を生成してユーザー承認 → spec-leader 自動起動 (§7.1) → 次 Spec の Plan 策定に戻る、の繰り返しです。
dag.md 読込 → Spec A (group 1) の Plan 生成 → ユーザー承認 → spec-leader 起動
→ Spec B (group 2) の Plan 生成 → ユーザー承認 → spec-leader 起動
→ Spec C (group 3) の Plan 生成 → ユーザー承認 → spec-leader 起動Phase 5 の orchestrator skill 実装後は、同一 parallel_group 内の複数 Spec について writing-plan / spec-leader を並列起動できるよう拡張されますが、本 skill のインタフェース (1 Spec 単位で動作) は変更不要です。
本 skill が main 側で動作する最大の目的は 先行 Spec の Plan を後続 Spec の Plan 策定時に参照可能にする ことです。具体的な活用例:
POST /api/auth/login の入出力スキーマを、order Spec の Plan 策定時に参照し重複 / 不整合を防ぐUser モデル定義を order Plan の UserId 参照で一貫させるrequireAuth ミドルウェアを order Plan が再利用する前提で設計users テーブルスキーマと order Plan の外部キー整合対象 Spec の depends_on に列挙された Spec の specs/<dep>.plan.md を入力として扱い、本 Plan の設計判断に反映してください。
Phase 5 で investigator agent が実装された際、8.3 の「他 Spec Plan 参照」は investigator agent の責務に委譲されます:
specs/*.plan.md を走査し、対象 Spec の依存先 Plan を構造化して返すインタフェースは Phase 3 時点で確定 (本 skill が investigator の出力を Plan §2-4 に統合するだけ、呼び出しロジックは Phase 5 で追加)。
複数 Spec 処理の途中で中断した場合、それまでに書き出した Plan は status: plan-complete で保存済。未処理の Spec (まだ spec-complete 状態) は残ります。再開時は未処理分のみを対象に本 skill を再起動してください。
files_touched を省略する (並列競合検出が効かなくなる、§5.1.1 で必須化)files_touched が重なる 2 タスクを並列可と判定する (§5.2 並列判定の 2 条件 AND を無視)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.