/f5-question
Quản lý Q&A tracking trong workflow
$ npx -y skills add Fujigo-Software/f5-framework-claude --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/f5-question
Context preview
What this command does when you run it.
Quản lý Q&A tracking trong workflow
Command definition
f5-question.mddescription: Quản lý Q&A tracking trong workflow
argument-hint: <raise|list|resolve|show> [options]
/f5-question - Q&A Tracking Command
Quản lý câu hỏi và clarification requests trong workflow.
Usage
/f5-question raise --from <source> --severity <level> --tag <tag>
/f5-question list [--status open|resolved|all] [--tag <tag>]
/f5-question show <Q-ID>
/f5-question resolve <Q-ID> --answer "<answer>"
Arguments
- `raise`: Tạo câu hỏi mới
- `list`: Xem danh sách Q&A
- `show`: Xem chi tiết một Q&A
- `resolve`: Đánh dấu đã giải đáp
---
STEP 1: PARSE SUBCOMMAND
| Pattern | Action | |---------|--------| | `raise` | Go to [ACTION: RAISE] | | `list` | Go to [ACTION: LIST] | | `show <Q-ID>` | Go to [ACTION: SHOW] | | `resolve <Q-ID>` | Go to [ACTION: RESOLVE] | | (default) | Go to [ACTION: HELP] |
---
ACTION: RAISE
Tạo câu hỏi mới
**Parameters:**
- `--from <source>`: Nguồn của câu hỏi (required)
- `input`, `classification`, `DI-SCR-xxx` (Phase 1)
- `specs`, `srs`, `use-cases` (Phase 2)
- `design`, `basic-design`, `detail-design` (Phase 3)
- `technical-design`, `api-contract`, `data-model` (Phase 4)
- `--severity <level>`: Mức độ nghiêm trọng (required)
- `blocking`: Không thể tiếp tục implement
- `non-blocking`: Có thể implement với assumption
- `--tag <tag>`: Nhãn phân loại (required)
- `DESIGN-GAP`, `MISSING-STATE`, `MISSING-ERROR`, `MISSING-VALIDATION`
- `MISSING-EDGE-CASE`, `BUSINESS-RULE`, `REQUIREMENT-UNCLEAR`
- `CONSTRAINT`, `DATA-FORMAT`, `INTEGRATION`, `PERFORMANCE`, `SECURITY`
- `--source <file>`: File/artifact cụ thể (optional)
- `--assignee <role>`: Người cần trả lời (optional, default: BA)
Process:
1. **Đọc _index.yaml để lấy next ID:**
# Check .f5/questions/_index.yaml
# Get last Q-ID, increment by 1
2. **Tạo file Q&A mới:**
.f5/questions/open/Q-{ID}.md3. **Update _index.yaml**
4. **Hiển thị kết quả**
Output Format:
╔═══════════════════════════════════════════════════════════════════════════╗
║ 📝 TẠO CÂU HỎI MỚI ║
╠═══════════════════════════════════════════════════════════════════════════╣
ID: Q-{ID}
Trạng thái: 🟡 OPEN
Metadata:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Field | Value |
|-------|-------|
| **From** | {source} |
| **Source File** | {source_file} |
| **Severity** | {severity} |
| **Tag** | {tag} |
| **Assignee** | {assignee} |
| **Created** | {date} |
NỘI DUNG CÂU HỎI:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Claude sẽ prompt user nhập nội dung câu hỏi]
FILE ĐÃ TẠO:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
→ .f5/questions/open/Q-{ID}.md
→ .f5/questions/_index.yaml (updated)
BƯỚC TIẾP THEO:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Chờ BA/Customer trả lời trong file Q-{ID}.md
2. Sau khi có answer, chạy: /f5-question resolve Q-{ID}
╚═══════════════════════════════════════════════════════════════════════════╝Q&A File Template:
# Question: Q-{ID}
## Metadata
| Field | Value |
|-------|-------|
| **ID** | Q-{ID} |
| **Created** | {date} |
| **From** | {from} |
| **Source** | {source_file} |
| **Severity** | {severity} |
| **Tag** | {tag} |
| **Status** | 🟡 OPEN |
| **Assignee** | {assignee} |
## Câu hỏi
{question_content}
## Bối cảnh
- Phase hiện tại: {current_phase}
- File liên quan: {related_files}
- Gaps detected: {gaps}
## Options (nếu có)
1. Option A: ...
2. Option B: ...
3. Option C: ...
---
## Trả lời
_(Chờ BA/Customer trả lời)_
## Resolved Info
| Field | Value |
|-------|-------|
| **Resolved By** | - |
| **Resolved Date** | - |
| **Decision** | - |---
ACTION: LIST
Xem danh sách Q&A
**Parameters:**
- `--status <status>`: Filter theo status (optional)
- `open`: Chỉ câu hỏi đang mở (default)
- `resolved`: Chỉ câu hỏi đã giải đáp
- `all`: Tất cả
- `--tag <tag>`: Filter theo tag (optional)
- `--severity <level>`: Filter theo severity (optional)
- `--from <source>`: Filter theo source (optional)
Process:
1. **Đọc _index.yaml** 2. **Apply filters** 3. **Hiển thị danh sách**
Output Format:
╔═══════════════════════════════════════════════════════════════════════════╗
║ 📋 DANH SÁCH Q&A ║
╠═══════════════════════════════════════════════════════════════════════════╣
Filter: status={status}, tag={tag}
TÓM TẮT:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Metric | Count |
|--------|-------|
| Tổng số | {total} |
| 🟡 Open | {open} |
| ✅ Resolved | {resolved} |
| 🔴 Blocking | {blocking} |
DANH SÁCH:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| ID | Status | Severity | From | Tag | Summary |
|----|--------|----------|------|-----|---------|
| Q-001 | 🟡 Open | blocking | DI-SCR-0203 | MISSING-STATE | State transitions? |
| Q-002 | 🟡 Open | non-blocking | DI-SCR-0203 | MISSING-ERROR | Error handling? |
| Q-003 | ✅ Resolved | blocking | srs | BUSINESS-RULE | Session timeout |
COMMANDS:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/f5-question show Q-001 # Xem chi tiết
/f5-question resolve Q-001 # Đánh dấu đã giải đáp
╚═══════════════════════════════════════════════════════════════════════════╝---
ACTION: SHOW
Xem chi tiết một Q&A
**Parameters:**
- `<Q-ID>`: ID của câu hỏi (required)
Process:
1. **Tìm file Q&A:**
- Check `.f5/questions/open/Q-{ID}.md`
- Nếu không có, check `.f5/questions/resolved/Q-{ID}.md`
2. **Đọc và hiển thị nội dung**
Output Format:
╔═══════════════════════════════════════════════════════════════════════════╗
║ 📝 CHI TIẾT Q&A: Q-{ID} ║
╠══════════════════════════════════════════════════════════════════Read more
description: Quản lý Q&A tracking trong workflow argument-hint: <raise|list|resolve|show> [options]
/f5-question - Q&A Tracking Command
Quản lý câu hỏi và clarification requests trong workflow.
Usage
/f5-question raise --from <source> --severity <level> --tag <tag> /f5-question list [--status open|resolved|all] [--tag <tag>] /f5-question show <Q-ID> /f5-question resolve <Q-ID> --answer "<answer>"
Arguments
- `raise`: Tạo câu hỏi mới
- `list`: Xem danh sách Q&A
- `show`: Xem chi tiết một Q&A
- `resolve`: Đánh dấu đã giải đáp
---
STEP 1: PARSE SUBCOMMAND
| Pattern | Action | |---------|--------| | `raise` | Go to [ACTION: RAISE] | | `list` | Go to [ACTION: LIST] | | `show <Q-ID>` | Go to [ACTION: SHOW] | | `resolve <Q-ID>` | Go to [ACTION: RESOLVE] | | (default) | Go to [ACTION: HELP] |
---
ACTION: RAISE
Tạo câu hỏi mới
**Parameters:**
- `--from <source>`: Nguồn của câu hỏi (required)
- `input`, `classification`, `DI-SCR-xxx` (Phase 1)
- `specs`, `srs`, `use-cases` (Phase 2)
- `design`, `basic-design`, `detail-design` (Phase 3)
- `technical-design`, `api-contract`, `data-model` (Phase 4)
- `--severity <level>`: Mức độ nghiêm trọng (required)
- `blocking`: Không thể tiếp tục implement
- `non-blocking`: Có thể implement với assumption
- `--tag <tag>`: Nhãn phân loại (required)
- `DESIGN-GAP`, `MISSING-STATE`, `MISSING-ERROR`, `MISSING-VALIDATION`
- `MISSING-EDGE-CASE`, `BUSINESS-RULE`, `REQUIREMENT-UNCLEAR`
- `CONSTRAINT`, `DATA-FORMAT`, `INTEGRATION`, `PERFORMANCE`, `SECURITY`
- `--source <file>`: File/artifact cụ thể (optional)
- `--assignee <role>`: Người cần trả lời (optional, default: BA)
Process:
1. **Đọc _index.yaml để lấy next ID:**
# Check .f5/questions/_index.yaml # Get last Q-ID, increment by 1
2. **Tạo file Q&A mới:**
.f5/questions/open/Q-{ID}.md3. **Update _index.yaml**
4. **Hiển thị kết quả**
Output Format:
╔═══════════════════════════════════════════════════════════════════════════╗
║ 📝 TẠO CÂU HỎI MỚI ║
╠═══════════════════════════════════════════════════════════════════════════╣
ID: Q-{ID}
Trạng thái: 🟡 OPEN
Metadata:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Field | Value |
|-------|-------|
| **From** | {source} |
| **Source File** | {source_file} |
| **Severity** | {severity} |
| **Tag** | {tag} |
| **Assignee** | {assignee} |
| **Created** | {date} |
NỘI DUNG CÂU HỎI:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[Claude sẽ prompt user nhập nội dung câu hỏi]
FILE ĐÃ TẠO:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
→ .f5/questions/open/Q-{ID}.md
→ .f5/questions/_index.yaml (updated)
BƯỚC TIẾP THEO:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. Chờ BA/Customer trả lời trong file Q-{ID}.md
2. Sau khi có answer, chạy: /f5-question resolve Q-{ID}
╚═══════════════════════════════════════════════════════════════════════════╝Q&A File Template:
# Question: Q-{ID}
## Metadata
| Field | Value |
|-------|-------|
| **ID** | Q-{ID} |
| **Created** | {date} |
| **From** | {from} |
| **Source** | {source_file} |
| **Severity** | {severity} |
| **Tag** | {tag} |
| **Status** | 🟡 OPEN |
| **Assignee** | {assignee} |
## Câu hỏi
{question_content}
## Bối cảnh
- Phase hiện tại: {current_phase}
- File liên quan: {related_files}
- Gaps detected: {gaps}
## Options (nếu có)
1. Option A: ...
2. Option B: ...
3. Option C: ...
---
## Trả lời
_(Chờ BA/Customer trả lời)_
## Resolved Info
| Field | Value |
|-------|-------|
| **Resolved By** | - |
| **Resolved Date** | - |
| **Decision** | - |---
ACTION: LIST
Xem danh sách Q&A
**Parameters:**
- `--status <status>`: Filter theo status (optional)
- `open`: Chỉ câu hỏi đang mở (default)
- `resolved`: Chỉ câu hỏi đã giải đáp
- `all`: Tất cả
- `--tag <tag>`: Filter theo tag (optional)
- `--severity <level>`: Filter theo severity (optional)
- `--from <source>`: Filter theo source (optional)
Process:
1. **Đọc _index.yaml** 2. **Apply filters** 3. **Hiển thị danh sách**
Output Format:
╔═══════════════════════════════════════════════════════════════════════════╗
║ 📋 DANH SÁCH Q&A ║
╠═══════════════════════════════════════════════════════════════════════════╣
Filter: status={status}, tag={tag}
TÓM TẮT:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| Metric | Count |
|--------|-------|
| Tổng số | {total} |
| 🟡 Open | {open} |
| ✅ Resolved | {resolved} |
| 🔴 Blocking | {blocking} |
DANH SÁCH:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
| ID | Status | Severity | From | Tag | Summary |
|----|--------|----------|------|-----|---------|
| Q-001 | 🟡 Open | blocking | DI-SCR-0203 | MISSING-STATE | State transitions? |
| Q-002 | 🟡 Open | non-blocking | DI-SCR-0203 | MISSING-ERROR | Error handling? |
| Q-003 | ✅ Resolved | blocking | srs | BUSINESS-RULE | Session timeout |
COMMANDS:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/f5-question show Q-001 # Xem chi tiết
/f5-question resolve Q-001 # Đánh dấu đã giải đáp
╚═══════════════════════════════════════════════════════════════════════════╝---
ACTION: SHOW
Xem chi tiết một Q&A
**Parameters:**
- `<Q-ID>`: ID của câu hỏi (required)
Process:
1. **Tìm file Q&A:**
- Check `.f5/questions/open/Q-{ID}.md`
- Nếu không có, check `.f5/questions/resolved/Q-{ID}.md`
2. **Đọc và hiển thị nội dung**
Output Format:
╔═══════════════════════════════════════════════════════════════════════════╗
║ 📝 CHI TIẾT Q&A: Q-{ID} ║
╠══════════════════════════════════════════════════════════════════AI-Powered Development Framework for Claude Code
Repo: Fujigo-Software/f5-framework-claude
Other commands on f5-framework.
- /f5-agent
Manage AI agents, personas, and get smart suggestions
Open command - /f5-analytics
View project analytics and metrics
Open command - /f5-ba
Business analysis workflow
Open command - /f5-backend
Backend development commands
Open command - /f5-checkpoint
[DEPRECATED] Use /f5-ctx checkpoint
Open command - /f5-classify
Classify input files by type using content-first analysis, detect gaps, and generate coverage declaration
Open command

