create-user-story について
機能要件をユーザーストーリーにまとめ、重複確認とレビューを経てトラッカーに登録する COG スキルです。プロジェクトトラッカーまたはローカル保管庫で要望を管理するチーム向けです。
主な機能
- 01機能とプロジェクトの背景を抽出
- 02作成前に重複を確認
- 03標準形式のユーザーストーリーを作成
- 04レビュー後に課題またはローカルファイルを作成
活用シーン
- 01機能要望をユーザーストーリーに変換
- 02要望がすでに登録済みか確認
- 03トラッカーがない場合にストーリーをローカル保存
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ huytieu/ cog-second-brain --skill create-user-storyインストール後、Claude Code で/create-user-storyを入力して読み込まれたか確認します。
詳細
COG ユーザーストーリー作成スキル
呼び出すタイミング
- ユーザーが新しいユーザーストーリー、機能リクエスト、または課題の作成を希望している
- ユーザーが「ストーリーを作成」「新しいストーリー」「課題を追加」「ユーザーストーリーを書く」「チケットを作成」と言っている
- ユーザーが、追跡すべき機能や要件について説明している
エージェントモードの確認
00-inbox/MY-PROFILE.md のフロントマターで agent_mode を確認します:
agent_mode: teamの場合 — 並列エージェントを使って、すべてのアクティブなトラッカーで重複を同時に確認してから、ストーリーを作成しますagent_mode: soloの場合 — メインの会話で重複を確認し、ストーリーを順に作成します
コマンド:/create-user-story
事前確認
-
00-inbox/MY-INTEGRATIONS.mdを読み、どのプロジェクトトラッカーが有効かを確認します:- Linear — Linear MCP ツールを使用します
- GitHub —
ghCLI を使用します - Jira —
jiraCLI または WebFetch 経由の Jira API を使用します - 有効なトラッカーがない場合は、ストーリーを
04-projects/[project]/stories/に Markdown ファイルとして保存し、ユーザーに知らせます
-
00-inbox/MY-PROFILE.mdを読み、次の情報を取得します:- アクティブなプロジェクト(対象のプロジェクト/リポジトリ/ボードを判断するため)
- ユーザーの名前(ストーリーの作成者として記載するため)
-
まだ提示されていない場合は、ユーザーに尋ねます:
- 機能または要件は何ですか?(自由形式の説明)
- どのプロジェクトに属しますか?(アクティブなプロジェクトが複数ある場合)
- 優先度はどの程度ですか?(任意。指定がなければ中程度)
実行方針
フェーズ 1:リクエストを理解する
ユーザーの入力を解析して、次の情報を抽出します:
- 機能の説明 — ユーザーが何を実現したいか
- 対象ユーザー — 誰がメリットを得るか
- 問題の説明 — どのような問題を解決するか
- プロジェクトの背景 — どのプロジェクトに属するか
ユーザーの説明が簡潔な場合は、先に確認の質問をします:
- この機能の対象ユーザーは誰ですか?
- どのような問題を解決しますか?
- 想定している具体的な受け入れ条件はありますか?
フェーズ 2:重複を確認する
重要:作成する前に、必ず重複を確認してください。
チームモード(並列エージェント)
run_in_background: true を指定して Task ツールを使い、重複確認エージェントを並列で起動します:
エージェント:「duplicate-checker-linear」(Linear が有効な場合)
Search Linear for potential duplicate issues.
1. Use ToolSearch to load Linear tools
2. Use mcp__claude_ai_Linear_2__list_issues to search for issues with similar keywords
3. Search across all active projects/teams
4. Return any issues that match by title similarity or description overlap
Search terms: [extracted keywords from user's description]
Return: list of potential duplicates with title, status, URL, and similarity assessment
エージェント:「duplicate-checker-github」(GitHub が有効な場合)
Search GitHub Issues for potential duplicates.
Repository: [CUSTOMIZE: your-org/your-repo]
1. gh search issues "[keywords]" --repo [CUSTOMIZE: your-org/your-repo] --json number,title,state,url,body --limit 20
2. Also search closed issues to check if this was already done:
gh search issues "[keywords]" --repo [CUSTOMIZE: your-org/your-repo] --state closed --json number,title,state,url --limit 10
Return: list of potential duplicates with title, status, URL, and similarity assessment
エージェント:「duplicate-checker-jira」(Jira が有効な場合)
Search Jira for potential duplicate issues.
Project: [CUSTOMIZE: YOUR-PROJECT-KEY]
1. Use WebFetch or jira CLI to search:
JQL: project = "[CUSTOMIZE: YOUR-PROJECT-KEY]" AND text ~ "[keywords]" ORDER BY created DESC
2. Check both open and recently resolved issues
Return: list of potential duplicates with key, title, status, URL, and similarity assessment
ソロモード(順次実行)
有効なトラッカーについて、同じ重複確認を順番に実行します。
フェーズ 3:重複を報告する(見つかった場合)
重複の可能性がある項目が見つかった場合は、ユーザーに提示します:
I found [N] potential duplicate(s):
1. **[TITLE]** ([STATUS]) — [URL]
Similarity: [High/Medium/Low] — [reason]
2. **[TITLE]** ([STATUS]) — [URL]
Similarity: [High/Medium/Low] — [reason]
Options:
a) These are different — proceed with creating the new story
b) This is a duplicate of #[N] — skip creation
c) This is related to #[N] — create and link them
続行する前に、ユーザーの確認を待ちます。
フェーズ 4:ユーザーストーリーを作成する
標準的なユーザーストーリー形式でストーリーを作成します:
## Title
[Concise, descriptive title]
## User Story
**As a** [type of user],
**I want** [goal/desire],
**So that** [benefit/value].
## Description
[Expanded description of the feature, including context and background]
## Acceptance Criteria
### Scenario 1: [Happy path scenario name]
- **Given** [precondition]
- **When** [action]
- **Then** [expected outcome]
### Scenario 2: [Alternative scenario name]
- **Given** [precondition]
- **When** [action]
- **Then** [expected outcome]
### Scenario 3: [Edge case or error scenario name]
- **Given** [precondition]
- **When** [action]
- **Then** [expected outcome]
## Technical Notes
[Any implementation hints, constraints, or dependencies — if applicable]
## Out of Scope
[What this story explicitly does NOT cover — helps prevent scope creep]
作成する前に、確認用として整形済みのストーリーをユーザーに提示します。
フェーズ 5:トラッカーに作成する
ユーザーがストーリーの内容を承認したら:
Linear
1. Use ToolSearch to load Linear tools
2. Use mcp__claude_ai_Linear_2__get_team to find the target team
3. Use mcp__claude_ai_Linear_2__list_issue_labels to find appropriate labels
4. Use mcp__claude_ai_Linear_2__save_issue to create the issue with:
- title: [story title]
- description: [full story in markdown]
- team: [target team]
- priority: [user-specified or default medium]
- labels: [appropriate labels]
GitHub Issues
gh issue create \
--repo [CUSTOMIZE: your-org/your-repo] \
--title "[story title]" \
--body "[full story in markdown]" \
--label "[appropriate labels]"
Jira
Use WebFetch to POST to Jira REST API or use jira CLI:
- Project: [CUSTOMIZE: YOUR-PROJECT-KEY]
- Issue Type: Story
- Summary: [story title]
- Description: [full story in markdown/Jira wiki format]
- Priority: [user-specified or default Medium]
- Labels: [appropriate labels]
Vault へのフォールバック(有効なトラッカーがない場合)
04-projects/[project]/stories/story-YYYY-MM-DD-[slug].md に保存します
フェーズ 6:作成を確認してリンクする
-
作成したことをユーザーに確認します:
Story created: **[TITLE]** [URL or file path] Priority: [priority] Labels: [labels] -
ユーザーが別の課題との関連を示していた場合(フェーズ 3 の選択肢 c)、両者の間にリンク/関連付けを作成します。
-
また、Vault で参照できるように、ローカルコピーを
04-projects/[project]/stories/に保存します。
フォールバック動作
| シナリオ | 動作 |
|---|---|
| 有効なトラッカーがない | 04-projects/[project]/stories/ に Markdown として保存します |
| トラッカー API が失敗する | ローカルに保存し、ユーザーに警告して、整形済みの内容を使った手動作成を提案します |
| 重複確認に失敗する | 重複確認をスキップしたことをユーザーに警告し、確認を得てから作成します |
| ユーザーがプロジェクトを指定しない | MY-PROFILE.md に記載されたアクティブなプロジェクトを一覧表示し、どのプロジェクトか尋ねます |
| ユーザーの入力が最小限である | 完全なストーリーを作成するため、確認の質問をします |
エラー処理
- API のレート制限:待機してから一度だけ再試行し、その後はローカルへの保存に切り替えます
- 認証エラー:連携の再認証が必要な可能性があることをユーザーに伝えます
- 検索結果が多い場合:重複チェックを関連性の高い上位 10 件に制限します
- コンテキストのオーバーフロー:重複結果の詳細をすべて表示するのではなく、要約します