機能コンセプト提案スキル
目的
機能コンセプト文書を作成し、機能のアイデアを提案するとともに、その機能が解決する問題を説明します。これは機能提案プロセスの最初のステップです。
使用するタイミング
- crumbly、forester、またはその他のforestクレート向けに新機能を提案したい場合
- 機能アイデアの文書化を始める場合
- 要件に入る前に「なぜ」と「何を」を説明する必要がある場合
前提条件
- ユーザーが機能アイデアを説明していること
手順
0. アイデアホーニングの提案(任意)
ユーザーに次のように尋ねます:
コンセプトをより明確にするために、アイデアホーニングプロセスを利用しますか?このプロセスでは、曖昧さや設計上の考慮事項を探るために、質問を一つずつ進めていきます。
「はい」の場合、skills/README.mdのプロトコルに従い、idea-honingスキルを使用します。アイデアホーニング完了後、このスキルに戻ります。
1. 機能番号の決定
次の空き機能番号を見つけます:
ls -1d ./docs/features/[0-9][0-9][0-9][0-9]-* 2>/dev/null | tail -1
機能が存在しない場合は0001から始めます。それ以外の場合は、最後の番号をインクリメントします。
2. 機能名の作成
ユーザーと協力して、簡潔で説明的な名前を作成します:
- 小文字とハイフンを使用する
- 短く保つ(2〜4語)
- 説明的にする
例:semantic-search、registry-management、skill-validation
3. アイデアホーニング文書の確認
ls ./planning/NNNN-feature-name/idea-honing.md 2>/dev/null
存在する場合、コンセプト作成時に参照します。Q&Aはナラティブに役立つ貴重な材料を提供します。
4. 機能ディレクトリの作成
mkdir -p ./docs/features/NNNN-feature-name
NNNNを4桁の番号に、feature-nameを合意した名前に置き換えます。
5. コンセプトテンプレートのコピー
cp ./docs/features/0000-templates/concept.md ./docs/features/NNNN-feature-name/
6. コンセプト文書の記入
ユーザーと協力して、concept.mdをナラティブ形式で完成させます:
フロントマター
feature:をNNNN-feature-nameに設定status:をproposedに設定- 該当する場合は、
tracking-issue:を追加(任意)
問題セクション
- 現在の状況を描く
- これが引き起こす悩みを説明する
- なぜこれが重要なのかを説明する
解決策セクション
- ユーザーが何を体験するかを説明する
- 「どのように」ではなく「何を」「なぜ」に焦点を当てる
- リストではなくナラティブ形式にする
仕組みセクション
- 機能を使用するストーリーを語る
- ワークフローを自然に説明する
- 抽象的なステップではなく、実際の使用例を示す
利点セクション
- 提供される価値を説明する
- 問題に結び付ける
- 何が可能になるかを示す
技術的注意事項セクション
- 簡単な制約や考慮事項
- 短く保つ - 詳細は
design.mdに記述する
7. ナラティブフローの確認
文書が以下を満たしていることを確認します:
- 仕様書ではなく、ストーリーとして読めること
- 可能な限り箇条書きや番号付きリストを避けていること
- ユーザー体験と価値に焦点を当てていること
- 「何を」の前に「なぜ」を説明していること
検証
コンセプトが正しく作成されたことを確認します:
# ディレクトリが存在することを確認
ls -la ./docs/features/NNNN-feature-name/
# コンセプトファイルが存在することを確認
ls ./docs/features/NNNN-feature-name/concept.md
# 内容があることを確認
cat ./docs/features/NNNN-feature-name/concept.md
よくある問題
技術的すぎる: コンセプトが設計文書のようになっている場合は、問題とユーザー体験に再焦点を当ててください。
抽象的すぎる: コンセプトが曖昧な場合は、ユーザーと協力して悩みの具体例を追加してください。
リストが多い: 箇条書きが多い場合は、ナラティブ形式の散文に書き直してください。
次のステップ
コンセプト作成後:
- ナラティブを確認し洗練させる
- 機能に価値があるかフィードバックを得る
- コンセプトが固まったら、
propose-feature-requirementsスキルを使用して要件定義に進む