Requirements Clarification Skill
Purpose
STOP implementing before fully understanding requirements.
Prevent the common problem:
客戶需求 → Agent 理解不完整 → 實作偏差 → 浪費時間重做
Solution: Force clarification BEFORE any code is written.
Auto-Activation
Triggers when user mentions:
-
✅ "需求", "requirement", "客戶要", "案主說"
-
✅ "新功能", "用戶想要", "想加一個"
-
✅ "客戶反饋", "需要改成", "應該要"
CARIO Clarification Framework
Structured format for requirements clarification:
📋 Context (背景)
- What are we working on?
- What's the current state?
❓ Ambiguity (不清楚的地方)
- What's unclear or ambiguous?
- What assumptions are we making?
🎯 Options (可能的理解)
- Option A: [interpretation 1]
- Option B: [interpretation 2]
- Option C: [interpretation 3]
💡 Recommendation (建議)
- Recommended approach and why
- Trade-offs of this choice
⚡ Impact (影響範圍)
- What components are affected?
- What tests are needed?
- Estimated complexity?
Mandatory Workflow
Step 1: STOP and Analyze
When user provides requirements, DO NOT implement immediately.
Instead:
-
Read the requirement carefully
-
Identify ALL ambiguities
-
List ALL assumptions
-
Generate clarifying questions
Step 2: Use CARIO Format
Example:
User: "客戶說要加一個搜尋功能"
📋 Context
- Working on: career_ios_backend client management
- Current state: Clients can only be listed, no search
❓ Ambiguity
-
搜尋什麼?(Search by what?)
- Client name?
- Client code?
- Email?
- All fields?
-
搜尋方式?(Search type?)
- Exact match?
- Partial match?
- Fuzzy search?
-
搜尋結果?(Results?)
- Paginated?
- How many per page?
- Sorting?
🎯 Options
Option A: Simple name search (exact match)
- Fastest to implement
- Limited functionality
- Good for MVP
Option B: Multi-field search (partial match)
- Name, email, code searchable
- More flexible
- Moderate complexity
Option C: Full-text search (fuzzy)
- Search all fields
- Most powerful
- Requires additional setup
💡 Recommendation Start with Option B (multi-field partial match):
- Balances power and simplicity
- Covers 80% of use cases
- Can upgrade to Option C later if needed
⚡ Impact Affected:
- app/api/clients.py (add search endpoint)
- app/schemas/client.py (add search request schema)
- tests/integration/test_clients_api.py (add search tests)
Complexity: 🟡 Medium (2-3 hours) Tests needed: 3-5 integration tests
Step 3: Get User Confirmation
Use AskUserQuestion tool:
AskUserQuestion( questions=[{ "question": "客戶搜尋功能應該搜尋哪些欄位?", "header": "Search Fields", "multiSelect": True, "options": [ { "label": "姓名 (Name)", "description": "搜尋客戶姓名" }, { "label": "Email", "description": "搜尋 Email 地址" }, { "label": "客戶代碼 (Code)", "description": "搜尋客戶代碼" }, { "label": "全部欄位 (All)", "description": "搜尋所有文字欄位" } ] }] )
Step 4: Document Understanding
Create a mini-spec:
Feature: Client Search
User Story
As a counselor, I want to search for clients by name/email/code, so that I can quickly find the client I need.
Acceptance Criteria
- Can search by client name (partial match)
- Can search by email (partial match)
- Can search by client code (exact match)
- Returns paginated results (10 per page)
- Case-insensitive search
API Design
GET /api/v1/clients/search?q={query}&page={page}
Response: { "items": [...], "total": 42, "page": 1, "pages": 5 }
Tests Required
- test_search_by_name_success
- test_search_by_email_success
- test_search_by_code_success
- test_search_case_insensitive
- test_search_pagination
Step 5: Only THEN Start TDD
After confirmation, activate tdd-workflow :
✅ Requirements clear ✅ User confirmed understanding ✅ Acceptance criteria defined → NOW safe to write tests and implement
Common Ambiguity Patterns
Pattern 1: Vague Verbs
❌ Ambiguous:
-
"處理客戶" (handle clients)
-
"管理資料" (manage data)
-
"改進效能" (improve performance)
✅ Clarify:
-
What action? (Create? Update? Delete? Search?)
-
What data? (Which fields?)
-
How much improvement? (What metric? Target?)
Pattern 2: Missing Details
❌ Incomplete:
- "加一個報告" (add a report)
✅ Clarify:
-
What data in report?
-
What format? (PDF? Excel? HTML?)
-
Who can access?
-
How to generate? (On-demand? Scheduled?)
Pattern 3: Assumed Context
❌ Assumption:
- "客戶說要改成這樣" (client wants it changed)
✅ Clarify:
-
Changed from what state?
-
Changed to what state?
-
Why the change?
-
What stays the same?
Clarification Questions Checklist
Before implementing ANY feature, answer:
Functional Questions
-
What exactly should it do?
-
What should it NOT do?
-
What are edge cases?
-
What happens on error?
Data Questions
-
What data is needed?
-
Where does data come from?
-
What's the data format?
-
What are validation rules?
Integration Questions
-
What other features are affected?
-
What APIs are involved?
-
What database changes needed?
-
What tests are required?
User Experience Questions
-
Who uses this feature?
-
When do they use it?
-
How do they trigger it?
-
What feedback do they get?
Integration with Other Skills
Works with tdd-workflow
- requirements-clarification (THIS SKILL)
- Clarify requirements
- Get user confirmation
- Document understanding ↓
- tdd-workflow
- Write tests based on acceptance criteria
- Implement to pass tests
- Refactor
Works with api-development
requirements-clarification → Define API contract → Clarify request/response format ↓ api-development → Implement FastAPI endpoint → Follow defined contract
Real Example: Before and After
❌ Before (No Clarification)
User: "客戶說要能匯出報告"
Agent: (直接實作)
- Creates PDF export
- Only exports basic info
- No customization
Result: ❌ 客戶要的是 Excel,要自訂欄位 → 浪費 2 小時重做
✅ After (With Clarification)
User: "客戶說要能匯出報告"
Agent: (啟動 requirements-clarification skill)
📋 Context: 諮詢報告匯出功能
❓ Ambiguity:
- 匯出格式?PDF? Excel? 都要?
- 匯出內容?哪些欄位?
- 匯出時機?手動?自動?
- 客製化?能選擇欄位嗎?
🎯 Options: A. PDF only (fixed format) B. Excel only (customizable) C. Both formats
💡 Recommendation: Option B (Excel)
- 客戶通常要進一步分析
- Excel 更靈活
- 可自訂欄位
⚡ Impact: Medium complexity
(Gets user confirmation)
User: "對,要 Excel,而且要能選擇哪些欄位"
Agent: ✅ 明確了!現在用 TDD 開發...
Result: ✅ 一次做對,客戶滿意
Anti-Patterns to Avoid
❌ Assuming Without Asking
Bad
user_input = "加一個搜尋"
→ 直接假設是全文搜尋,實作後才發現要的是簡單篩選
❌ Implementing Multiple Interpretations
Bad
"不確定要哪個,所以全部都做"
→ 浪費時間,可能都不是客戶要的
❌ Asking Too Many Questions
Bad
"有 20 個問題要問你..."
→ 用戶厭煩,寧願給模糊需求
Good
"有 3 個關鍵問題,澄清後就能開始:"
→ 聚焦核心,快速決策
Success Metrics
Before This Skill
-
⏱️ 需求理解錯誤率:40%
-
⏱️ 重做時間:平均 2 小時/功能
-
😤 客戶滿意度:中等
After This Skill
-
✅ 需求理解錯誤率:<5%
-
✅ 重做時間:幾乎沒有
-
😊 客戶滿意度:高
Time Investment:
-
Clarification: +10 minutes
-
Saved rework: -2 hours
-
Net benefit: +1h 50m per feature
Quick Start Template
Copy this whenever receiving requirements:
Requirement Clarification
User Request: "[用戶原話]"
📋 Context:
❓ Ambiguity: 1. 2. 3.
🎯 Options: A. B. C.
💡 Recommendation:
⚡ Impact:
- Files affected:
- Tests needed:
- Complexity:
Questions for user: 1. 2. 3.
Related Skills
-
tdd-workflow: Implement after clarification
-
api-development: API contract definition
-
prd-workflow: Document requirements formally
Skill Version: v1.0 Last Updated: 2025-12-25 Project: career_ios_backend Philosophy: "Measure twice, cut once" - 先搞清楚再動手