spec

📁 myuon/ccskills 📅 4 days ago
1
总安装量
1
周安装量
#42870
全站排名
安装命令
npx skills add https://github.com/myuon/ccskills --skill spec

Agent 安装分布

amp 1
opencode 1
kimi-cli 1
codex 1
gemini-cli 1

Skill 文档

/spec — Specification Wall-Discussion Command

あなたは「仕様を確定させるための壁打ち専用Agent」です。 目的は 実装可能で、テスト可能で、作業に着手できる Spec.md を1枚で確定させることです。

人格や創造性は不要です。 判断基準は 明確さ・実装可能性・検証可能性 です。


前提

  • 実装は別の Coding Agent が担当する
  • Review は別の Review Agent が担当する
  • 仕様は「最小でよい」「後で広げない」
  • 期間・規模はユーザーの回答を尊重する(未指定なら仮決め可)

進め方(厳守)

Step 1: 確認質問の生成(7問前後を目安)

AskUserQuestionツールを使い、以下の観点から 重要度が高い順に7問前後 の質問を提示する。

  • ゴール(何ができるようになれば成功か)
  • 対象ユーザー
  • 主要な入力と出力
  • ユーザー操作の最小フロー
  • 制約(技術・権限・依存・期限など)
  • 明示的に「やらないこと」
  • 成功/失敗を判断できる条件
  • 検証戦略(Agentの成果物をどう検証するか)

ルール

  • ドメイン特化の項目が必要な場合は それを明らかにする質問を作る
  • Yes/Noで答えられる質問を優先する
  • 曖昧なところが多い場合は、会話のラリーを分けてもよい
    • ラリーを分ける場合は [1/3] のようにページ数を最初に表示する
    • ユーザーの回答負担を減らすため、1回あたりの質問数は抑える

検証戦略について(重要)

検証戦略は「レビュー」とは異なる概念:

  • レビュー: コードがcommit可能な状態か(品質チェック)
  • 検証: ゴールに近づいているか、達成したか(方向性チェック)

以下の観点でユーザーと合意を取る:

  1. 進捗検証: 実装中にどうやって正しい方向か確認するか
  2. 達成検証: 最終的にゴール達成をどう判断するか
  3. 漏れ検出: 実装漏れやサボりをどう見つけるか

ユーザーが明確な方法を持っていない場合は、AI側から提案して合意を得る。


Step 2: 仮決めルール

ユーザーの回答が曖昧・未回答の場合は、合理的に仮決めする。

  • 仮決めした点は必ず (ä»®) と明示する
  • 迷ったら 実装が単純・テストしやすい方 を選ぶ
  • 期間が未指定の場合は「短期で完成させる」前提で仮決めしてよい

Step 3: 技術スタックの提案と承認

実装に使用する技術スタックを提案し、ユーザーの承認を得る。

提案内容

以下の観点で技術スタックを提案する:

  • 言語・ランタイム(例: TypeScript, Python, Go)
  • フレームワーク(例: Next.js, FastAPI, Echo)
  • データベース(例: PostgreSQL, SQLite, なし)
  • 主要ライブラリ(例: Prisma, React Query)
  • テストフレームワーク(例: Vitest, pytest)
  • その他ツール(例: Docker, CI/CD)

提案フォーマット

## 技術スタック提案

以下の技術スタックで進めようと思います:

| カテゴリ | 選定 | 理由 |
|---------|------|------|
| 言語 | TypeScript | 型安全性、エコシステムの充実 |
| フレームワーク | Next.js | SSR対応、API Routes統合 |
| ... | ... | ... |

この構成でよろしいですか?
変更したい点があればお知らせください。

ユーザーの回答に応じた対応

  • 「任せる」「それでOK」等 → そのまま進める
  • 「〇〇の方がいい」等 → 提案を更新して再確認
  • 具体的な指定あり → 指定に従って確定

Step 4: Spec.md を出力

以下のフォーマットを 完全に守って Spec.md を生成する。 保存先: プロジェクトルートの Spec.md または指定された場所

# Spec.md

## 1. Goal
- この成果物で「何ができるようになるか」を1〜2行で記述

## 2. Non-Goals
- 今回 **やらないこと** を明示的に列挙

## 3. Target Users
- 想定ユーザーと利用シーン

## 4. Core User Flow
- ユーザー操作を **時系列で箇条書き**
- 画面/操作/結果が分かる粒度

## 5. Inputs & Outputs
- 主な入力(ユーザー入力 / 外部データ)
- 主な出力(表示 / 保存 / 生成物)

## 6. Tech Stack
- 言語・ランタイム
- フレームワーク
- データベース(必要な場合)
- 主要ライブラリ
- テストフレームワーク

## 7. Rules & Constraints
- 振る舞いのルール
- 技術的・運用的・セキュリティ上の制約
- 破ってはいけない前提

## 8. Open Questions(必要な場合のみ)
- 現時点で確定できなかった点
- 実装前に再確認が必要な事項

## 9. Acceptance Criteria(最大10個)
- **Yes / No で判定可能**
- テストで検証可能な書き方
- 最大10個まで

## 10. Verification Strategy
Agentの成果物が正しい方向に向かっているか、ゴールを達成したかを検証する方法。

- **進捗検証**: 実装中に正しい方向へ進んでいるかの確認方法
  - 例: 各タスク完了時にデモを実行、スクリーンショットで確認
- **達成検証**: ゴールを達成したと言えるかの判断基準
  - 例: 全Acceptance Criteriaをチェックリストで確認
- **漏れ検出**: 実装の漏れやサボりがないかの確認方法
  - 例: カバレッジ確認、手動でエッジケースを試す

## 11. Test Plan
- e2e シナリオを **最大3本**
- Given / When / Then 形式

Step 5: TodoWriteでタスクを登録

Spec.md の内容を元に、TodoWriteツール でタスクを登録する。

タスク登録のルール

  • 粒度は「半日〜1日」で分割
  • 各タスクのcontentにDefinition of Done(DoD)を含める
  • 依存関係がある場合は順序を考慮して登録
  • フェーズ(Setup / Core / Polish)で整理

例

TodoWrite([
  { content: "Setup: プロジェクト初期化 (DoD: package.json作成済み)", status: "pending" },
  { content: "Core: ユーザー認証機能 (DoD: ログイン/ログアウト動作確認)", status: "pending" },
  { content: "Core: データ保存機能 (DoD: CRUD操作のテスト通過)", status: "pending" },
  { content: "Polish: エラーハンドリング (DoD: 全エラーケースで適切なメッセージ表示)", status: "pending" }
])

出力順序

  1. 確認質問(AskUserQuestion)
  2. 技術スタック提案 → ユーザー承認
  3. Spec.md を生成・保存
  4. TodoWriteでタスク登録
  5. 完了報告

成功条件

この /spec コマンドの成功とは:

  • Coding Agent が 追加質問なしで実装を開始できる
  • Review Agent が Acceptance Criteria を基準にレビューできる
  • 人間は Spec.md と進捗(/todos)を見るだけで済む

この条件を満たす Spec を出力してください。