@torus-engineering/tas-kit 1.7.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/tas-adr.md +33 -29
- package/.claude/commands/tas-apitest-plan.md +173 -0
- package/.claude/commands/tas-apitest.md +143 -0
- package/.claude/commands/tas-bug.md +113 -109
- package/.claude/commands/tas-design.md +37 -33
- package/.claude/commands/tas-dev.md +128 -115
- package/.claude/commands/tas-e2e-mobile.md +155 -0
- package/.claude/commands/tas-e2e-web.md +163 -0
- package/.claude/commands/tas-e2e.md +102 -0
- package/.claude/commands/tas-epic.md +35 -31
- package/.claude/commands/tas-feature.md +47 -43
- package/.claude/commands/tas-fix.md +51 -47
- package/.claude/commands/tas-functest-mobile.md +144 -0
- package/.claude/commands/tas-functest-web.md +192 -0
- package/.claude/commands/tas-functest.md +76 -0
- package/.claude/commands/tas-plan.md +200 -184
- package/.claude/commands/tas-prd.md +37 -33
- package/.claude/commands/tas-review.md +111 -104
- package/.claude/commands/tas-sad.md +43 -39
- package/.claude/commands/tas-security.md +81 -80
- package/.claude/commands/tas-story.md +91 -87
- package/.claude/commands/tas-verify.md +51 -41
- package/.claude/rules/common/post-review-agent.md +49 -39
- package/.claude/rules/common/testing.md +24 -0
- package/.claude/rules/common/token-logging.md +27 -0
- package/.claude/rules/csharp/api-testing.md +171 -0
- package/.claude/rules/csharp/patterns.md +10 -0
- package/.claude/rules/python/patterns.md +10 -0
- package/.claude/rules/typescript/patterns.md +10 -0
- package/.claude/rules/web/performance.md +9 -0
- package/.claude/skills/api-design/SKILL.md +3 -1
- package/.claude/skills/{backend-patterns → js-backend-patterns}/SKILL.md +2 -1
- package/.claude/skills/tas-implementation-complete/SKILL.md +99 -97
- package/.claude/skills/tas-tdd/SKILL.md +123 -82
- package/.claude/skills/token-logger/SKILL.md +19 -0
- package/.tas/templates/API-Test-Spec.md +400 -0
- package/.tas/templates/E2E-Execution-Report.md +198 -0
- package/.tas/templates/E2E-Mobile-Spec.md +130 -0
- package/.tas/templates/E2E-Report.md +174 -0
- package/.tas/templates/E2E-Scenario.md +180 -0
- package/.tas/templates/E2E-Web-Spec.md +164 -0
- package/.tas/templates/Feature.md +55 -55
- package/.tas/templates/Func-Test-Script.md +254 -0
- package/.tas/templates/Func-Test-Spec.md +187 -0
- package/.tas/templates/SAD.md +274 -274
- package/.tas/templates/Story.md +90 -88
- package/bin/cli.js +56 -56
- package/lib/deleted-files.json +36 -0
- package/lib/install.js +213 -176
- package/package.json +34 -34
- package/.claude/agents/README.md +0 -83
- package/.claude/agents/ado-agent.md +0 -39
- package/.claude/agents/code-architect.md +0 -62
- package/.claude/agents/code-simplifier.md +0 -53
- package/.claude/agents/comment-analyzer.md +0 -59
- package/.claude/agents/conversation-analyzer.md +0 -57
- package/.claude/agents/docs-lookup.md +0 -55
- package/.claude/agents/harness-optimizer.md +0 -62
- package/.claude/agents/loop-operator.md +0 -56
- package/.claude/agents/performance-optimizer.md +0 -78
- package/.claude/agents/pr-test-analyzer.md +0 -68
- package/.claude/agents/pytorch-build-resolver.md +0 -76
- package/.claude/agents/refactor-cleaner.md +0 -70
- package/.claude/agents/seo-specialist.md +0 -75
- package/.claude/agents/silent-failure-hunter.md +0 -69
- package/.claude/agents/type-design-analyzer.md +0 -75
- package/.claude/rules/common/agents.md +0 -65
- package/.claude/rules/common/coding-style.md +0 -90
- package/.claude/rules/common/development-workflow.md +0 -44
- package/.claude/rules/common/git-workflow.md +0 -24
- package/.claude/rules/common/performance.md +0 -55
- package/.claude/skills/agent-harness-construction/SKILL.md +0 -77
- package/.claude/skills/agent-introspection-debugging/SKILL.md +0 -157
|
@@ -1,184 +1,200 @@
|
|
|
1
|
-
# /tas-plan $ARGUMENTS
|
|
2
|
-
|
|
3
|
-
Vai trò: SE - Software Engineer
|
|
4
|
-
Cầu nối giữa nghiệp vụ (Story) và kỹ thuật (code).
|
|
5
|
-
Phân tích Story, lập kế hoạch kỹ thuật, break tasks — trước khi bắt đầu implement.
|
|
6
|
-
|
|
7
|
-
**Output bắt buộc:** Technical Plan được ghi vào Story file + `plan_status: completed`.
|
|
8
|
-
|
|
9
|
-
## Always / Ask / Never
|
|
10
|
-
|
|
11
|
-
| | Hành động |
|
|
12
|
-
|---|---|
|
|
13
|
-
| **Always** | Đọc Story file trước khi làm bất cứ điều gì |
|
|
14
|
-
| **Always** | Chờ user approve plan trước khi ghi vào Story |
|
|
15
|
-
| **Always** | Ghi Technical Plan vào Story file sau khi approved |
|
|
16
|
-
| **Ask** | Khi cần tham khảo SAD/ADR — xác nhận với user trước khi đọc |
|
|
17
|
-
| **Ask** | Khi Story scope > 8 giờ — gợi ý tách Story |
|
|
18
|
-
| **Never** | Bắt đầu implement ở command này |
|
|
19
|
-
| **Never** | Tự đọc SAD/ADR mà không hỏi user trước |
|
|
20
|
-
| **Never** | Ghi plan vào Story mà chưa có approval |
|
|
21
|
-
|
|
22
|
-
## Hành động
|
|
23
|
-
|
|
24
|
-
### Bước 1 — Xác định Story
|
|
25
|
-
|
|
26
|
-
`$ARGUMENTS` có thể là: Story ID (`Story-005`), file path, hoặc mô tả Story.
|
|
27
|
-
|
|
28
|
-
- Nếu là Story ID: tìm file qua glob `docs/epics/**/*-Story-{ID}-*.md`
|
|
29
|
-
- Nếu là file path: đọc trực tiếp
|
|
30
|
-
- Nếu là mô tả: hỏi user Story ID/file cụ thể
|
|
31
|
-
- Đọc Story file
|
|
32
|
-
|
|
33
|
-
**Check re-plan:** Nếu `plan_status: completed` → hỏi user:
|
|
34
|
-
> "Story này đã có Technical Plan rồi. Bạn muốn lập lại kế hoạch không?"
|
|
35
|
-
Nếu user xác nhận → tiếp tục. Nếu không → dừng.
|
|
36
|
-
|
|
37
|
-
### Bước 2 — Parallel Context Gathering
|
|
38
|
-
|
|
39
|
-
Launch 2 agents ĐỒNG THỜI:
|
|
40
|
-
|
|
41
|
-
**Agent 1 — `code-explorer`** (luôn chạy):
|
|
42
|
-
> Khảo sát codebase liên quan đến Story: "{Story title + tóm tắt AC}".
|
|
43
|
-
> Tìm: entry points, files có khả năng thay đổi, existing patterns, dependencies.
|
|
44
|
-
> Đọc tối đa 10 files liên quan nhất.
|
|
45
|
-
> Trả về: map ngắn gọn — what exists, what needs to change, potential conflicts.
|
|
46
|
-
|
|
47
|
-
**Agent 2 — `architect`** (chỉ chạy khi Story có dấu hiệu thay đổi kiến trúc:
|
|
48
|
-
thêm service/module mới, thay đổi data flow, tích hợp external system,
|
|
49
|
-
thay đổi database schema, thêm mới design pattern):
|
|
50
|
-
> Đánh giá architectural implications của Story: "{Story title}".
|
|
51
|
-
> Đọc `docs/sad.md` (nếu tồn tại) và files trong `docs/adr/`.
|
|
52
|
-
> Đọc `.claude/rules/common/patterns.md`.
|
|
53
|
-
> Trả về: ADR nào liên quan, patterns cần follow, rủi ro kiến trúc, constraints.
|
|
54
|
-
|
|
55
|
-
Chờ TẤT CẢ agents xong, tổng hợp findings.
|
|
56
|
-
|
|
57
|
-
### Bước 3 — Hỏi về SAD/ADR (nếu chưa rõ)
|
|
58
|
-
|
|
59
|
-
Sau khi xem findings từ agents, nếu cần tham khảo thêm SAD hoặc ADR cụ thể:
|
|
60
|
-
> "Tôi cần đọc thêm [SAD / ADR-XXX] để làm rõ [lý do]. Được không?"
|
|
61
|
-
|
|
62
|
-
Chỉ đọc sau khi user xác nhận.
|
|
63
|
-
|
|
64
|
-
### Bước 4 —
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
**
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
- [ ]
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
### Bước 7 —
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
1
|
+
# /tas-plan $ARGUMENTS
|
|
2
|
+
|
|
3
|
+
Vai trò: SE - Software Engineer
|
|
4
|
+
Cầu nối giữa nghiệp vụ (Story) và kỹ thuật (code).
|
|
5
|
+
Phân tích Story, lập kế hoạch kỹ thuật, break tasks — trước khi bắt đầu implement.
|
|
6
|
+
|
|
7
|
+
**Output bắt buộc:** Technical Plan được ghi vào Story file + `plan_status: completed`.
|
|
8
|
+
|
|
9
|
+
## Always / Ask / Never
|
|
10
|
+
|
|
11
|
+
| | Hành động |
|
|
12
|
+
|---|---|
|
|
13
|
+
| **Always** | Đọc Story file trước khi làm bất cứ điều gì |
|
|
14
|
+
| **Always** | Chờ user approve plan trước khi ghi vào Story |
|
|
15
|
+
| **Always** | Ghi Technical Plan vào Story file sau khi approved |
|
|
16
|
+
| **Ask** | Khi cần tham khảo SAD/ADR — xác nhận với user trước khi đọc |
|
|
17
|
+
| **Ask** | Khi Story scope > 8 giờ — gợi ý tách Story |
|
|
18
|
+
| **Never** | Bắt đầu implement ở command này |
|
|
19
|
+
| **Never** | Tự đọc SAD/ADR mà không hỏi user trước |
|
|
20
|
+
| **Never** | Ghi plan vào Story mà chưa có approval |
|
|
21
|
+
|
|
22
|
+
## Hành động
|
|
23
|
+
|
|
24
|
+
### Bước 1 — Xác định Story
|
|
25
|
+
|
|
26
|
+
`$ARGUMENTS` có thể là: Story ID (`Story-005`), file path, hoặc mô tả Story.
|
|
27
|
+
|
|
28
|
+
- Nếu là Story ID: tìm file qua glob `docs/epics/**/*-Story-{ID}-*.md`
|
|
29
|
+
- Nếu là file path: đọc trực tiếp
|
|
30
|
+
- Nếu là mô tả: hỏi user Story ID/file cụ thể
|
|
31
|
+
- Đọc Story file
|
|
32
|
+
|
|
33
|
+
**Check re-plan:** Nếu `plan_status: completed` → hỏi user:
|
|
34
|
+
> "Story này đã có Technical Plan rồi. Bạn muốn lập lại kế hoạch không?"
|
|
35
|
+
Nếu user xác nhận → tiếp tục. Nếu không → dừng.
|
|
36
|
+
|
|
37
|
+
### Bước 2 — Parallel Context Gathering
|
|
38
|
+
|
|
39
|
+
Launch 2 agents ĐỒNG THỜI:
|
|
40
|
+
|
|
41
|
+
**Agent 1 — `code-explorer`** (luôn chạy):
|
|
42
|
+
> Khảo sát codebase liên quan đến Story: "{Story title + tóm tắt AC}".
|
|
43
|
+
> Tìm: entry points, files có khả năng thay đổi, existing patterns, dependencies.
|
|
44
|
+
> Đọc tối đa 10 files liên quan nhất.
|
|
45
|
+
> Trả về: map ngắn gọn — what exists, what needs to change, potential conflicts.
|
|
46
|
+
|
|
47
|
+
**Agent 2 — `architect`** (chỉ chạy khi Story có dấu hiệu thay đổi kiến trúc:
|
|
48
|
+
thêm service/module mới, thay đổi data flow, tích hợp external system,
|
|
49
|
+
thay đổi database schema, thêm mới design pattern):
|
|
50
|
+
> Đánh giá architectural implications của Story: "{Story title}".
|
|
51
|
+
> Đọc `docs/sad.md` (nếu tồn tại) và files trong `docs/adr/`.
|
|
52
|
+
> Đọc `.claude/rules/common/patterns.md`.
|
|
53
|
+
> Trả về: ADR nào liên quan, patterns cần follow, rủi ro kiến trúc, constraints.
|
|
54
|
+
|
|
55
|
+
Chờ TẤT CẢ agents xong, tổng hợp findings.
|
|
56
|
+
|
|
57
|
+
### Bước 3 — Hỏi về SAD/ADR (nếu chưa rõ)
|
|
58
|
+
|
|
59
|
+
Sau khi xem findings từ agents, nếu cần tham khảo thêm SAD hoặc ADR cụ thể:
|
|
60
|
+
> "Tôi cần đọc thêm [SAD / ADR-XXX] để làm rõ [lý do]. Được không?"
|
|
61
|
+
|
|
62
|
+
Chỉ đọc sau khi user xác nhận.
|
|
63
|
+
|
|
64
|
+
### Bước 4 — API Design (nếu Story liên quan đến backend API)
|
|
65
|
+
|
|
66
|
+
**Nếu Story có dấu hiệu thiết kế API** (thêm endpoint mới, thay đổi API contract, expose service ra ngoài):
|
|
67
|
+
Invoke skill `api-design` để thiết kế API Spec trước khi lập plan:
|
|
68
|
+
- URL structure, HTTP methods, status codes
|
|
69
|
+
- Request/response payload shape
|
|
70
|
+
- Pagination, filtering nếu cần
|
|
71
|
+
- Error response format
|
|
72
|
+
|
|
73
|
+
Gắn API Spec vào section **Technical Plan → API Contract** trong Story.
|
|
74
|
+
Nếu Story không liên quan API → bỏ qua bước này.
|
|
75
|
+
|
|
76
|
+
### Bước 5 — Phân tích kỹ thuật
|
|
77
|
+
|
|
78
|
+
Dựa trên Story + agent findings, liệt kê rõ:
|
|
79
|
+
|
|
80
|
+
**Files sẽ thay đổi:**
|
|
81
|
+
| File | Thay đổi gì | Lý do |
|
|
82
|
+
|------|-------------|-------|
|
|
83
|
+
|
|
84
|
+
**Files mới cần tạo** (nếu có):
|
|
85
|
+
| File | Mục đích |
|
|
86
|
+
|------|----------|
|
|
87
|
+
|
|
88
|
+
**Database changes** (nếu có): migration, schema changes, seed data
|
|
89
|
+
|
|
90
|
+
**Config/Infrastructure changes** (nếu có): env vars, feature flags, dependencies mới
|
|
91
|
+
|
|
92
|
+
**Cần cập nhật SAD?** Yes/No + lý do ngắn gọn
|
|
93
|
+
|
|
94
|
+
**Cần tạo ADR mới?** Yes/No + lý do ngắn gọn
|
|
95
|
+
|
|
96
|
+
### Bước 6 — Đề xuất approach
|
|
97
|
+
|
|
98
|
+
Nếu có nhiều cách làm khả thi, liệt kê 2-3 options:
|
|
99
|
+
```
|
|
100
|
+
Option A: [mô tả ngắn]
|
|
101
|
+
+ [ưu điểm]
|
|
102
|
+
- [nhược điểm]
|
|
103
|
+
|
|
104
|
+
Option B: [mô tả ngắn]
|
|
105
|
+
+ [ưu điểm]
|
|
106
|
+
- [nhược điểm]
|
|
107
|
+
```
|
|
108
|
+
Đề xuất option tốt nhất và lý do. Nếu chỉ có 1 cách → trình bày trực tiếp.
|
|
109
|
+
|
|
110
|
+
### Bước 7 — Break Tasks
|
|
111
|
+
|
|
112
|
+
Breakdown thành tasks theo thứ tự implement. Mỗi task ~1-2 giờ:
|
|
113
|
+
```
|
|
114
|
+
- [ ] Task 1: [hành động cụ thể — file nào, thay đổi gì]
|
|
115
|
+
- [ ] Task 2: [hành động cụ thể]
|
|
116
|
+
- [ ] Task 3: Viết unit tests cho [AC-1, AC-2...]
|
|
117
|
+
- [ ] Task 4: [nếu cần] Tạo ADR / cập nhật SAD
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Nếu tổng estimate > 8 giờ → gợi ý tách Story trước khi tiếp tục.
|
|
121
|
+
|
|
122
|
+
### Bước 8 — Chờ approval
|
|
123
|
+
|
|
124
|
+
**DỪNG LẠI.** Hiển thị toàn bộ plan và hỏi:
|
|
125
|
+
> "Technical Plan trên có OK không? Muốn điều chỉnh gì không?"
|
|
126
|
+
|
|
127
|
+
- Nếu user approve → Bước 9
|
|
128
|
+
- Nếu user có feedback → cập nhật plan, hỏi lại
|
|
129
|
+
- KHÔNG ghi gì vào Story trước khi có approval
|
|
130
|
+
|
|
131
|
+
### Bước 9 — Ghi Technical Plan vào Story
|
|
132
|
+
|
|
133
|
+
Sau khi approved, cập nhật Story file:
|
|
134
|
+
|
|
135
|
+
**1. Thêm section `## Technical Plan`** vào Story (thay thế comment placeholder):
|
|
136
|
+
|
|
137
|
+
```markdown
|
|
138
|
+
## Technical Plan
|
|
139
|
+
> **Plan by:** {SE name} | **Date:** {ngày hiện tại}
|
|
140
|
+
|
|
141
|
+
### Approach
|
|
142
|
+
{Mô tả ngắn về approach đã chọn và lý do}
|
|
143
|
+
|
|
144
|
+
### Files to Change
|
|
145
|
+
| File | Change | Reason |
|
|
146
|
+
|------|--------|--------|
|
|
147
|
+
|
|
148
|
+
### Files to Create
|
|
149
|
+
| File | Purpose |
|
|
150
|
+
|------|---------|
|
|
151
|
+
|
|
152
|
+
### Database Changes
|
|
153
|
+
{Nếu không có: "None"}
|
|
154
|
+
|
|
155
|
+
### Config Changes
|
|
156
|
+
{Nếu không có: "None"}
|
|
157
|
+
|
|
158
|
+
### Architecture Notes
|
|
159
|
+
- SAD update needed: Yes/No
|
|
160
|
+
- New ADR needed: Yes/No — {tiêu đề nếu Yes}
|
|
161
|
+
|
|
162
|
+
### Tasks
|
|
163
|
+
- [ ] Task 1: ...
|
|
164
|
+
- [ ] Task 2: ...
|
|
165
|
+
- [ ] Task 3: Viết unit tests
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**2. Cập nhật frontmatter:**
|
|
169
|
+
- `plan_status: completed`
|
|
170
|
+
- `plan_date: {ngày giờ hiện tại}`
|
|
171
|
+
|
|
172
|
+
**3. Cập nhật `project-status.yaml`:**
|
|
173
|
+
- `last_updated: {ngày hiện tại}`
|
|
174
|
+
- `epics.{EPIC_ID}.features.{FEATURE_ID}.stories.{STORY_ID}.plan_status: completed`
|
|
175
|
+
|
|
176
|
+
**4. Nếu cần ADR:** chạy `/tas-adr "{Tiêu đề quyết định}"` ngay sau khi ghi plan xong.
|
|
177
|
+
|
|
178
|
+
### Bước 10 — Thông báo next step
|
|
179
|
+
> "Technical Plan đã ghi vào Story. SE có thể bắt đầu implement với `/tas-dev {Story-ID}`."
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Quick Mode (require_plan: false trong tas.yaml)
|
|
184
|
+
|
|
185
|
+
Dành cho: solo dev, prototype, spike, hotfix khẩn.
|
|
186
|
+
|
|
187
|
+
- `/tas-dev` sẽ KHÔNG bắt buộc chạy `/tas-plan` trước
|
|
188
|
+
- `/tas-plan` vẫn có thể chạy tự nguyện khi Story phức tạp
|
|
189
|
+
- Trade-off: tốc độ cao hơn, traceability thấp hơn
|
|
190
|
+
|
|
191
|
+
## Nguyên tắc
|
|
192
|
+
- Technical Plan sống trong Story file — không tạo file plan riêng
|
|
193
|
+
- Mỗi task ~1-2 giờ; cả Story ~4-8 giờ
|
|
194
|
+
- Nếu estimate > 8 giờ → tách Story
|
|
195
|
+
- Nếu task ảnh hưởng architecture → suggest ADR
|
|
196
|
+
- Giữ plan ngắn gọn, actionable — không viết essay
|
|
197
|
+
|
|
198
|
+
## Bước cuối — Token Log
|
|
199
|
+
|
|
200
|
+
Invoke skill `token-logger`: ghi AI Usage Log vào file Story đang làm việc.
|
|
@@ -1,33 +1,37 @@
|
|
|
1
|
-
# /tas-prd $ARGUMENTS
|
|
2
|
-
|
|
3
|
-
Vai trò: PE - Product Engineer
|
|
4
|
-
Tạo hoặc cập nhật Product Requirements Document.
|
|
5
|
-
|
|
6
|
-
## Hành động
|
|
7
|
-
1. Cần context từ root/tas.yaml để lấy project context
|
|
8
|
-
2. Kiểm tra docs/prd.md đã tồn tại chưa:
|
|
9
|
-
|
|
10
|
-
### Chế độ CREATE (file chưa tồn tại):
|
|
11
|
-
3. Cần context từ .tas/templates/PRD.md
|
|
12
|
-
4. Nếu $ARGUMENTS có nội dung, dùng làm input mô tả sản phẩm
|
|
13
|
-
5. Nếu không có $ARGUMENTS, hỏi user:
|
|
14
|
-
- Sản phẩm giải quyết vấn đề gì?
|
|
15
|
-
- Đối tượng người dùng chính?
|
|
16
|
-
- Các tính năng cốt lõi?
|
|
17
|
-
- Ràng buộc kỹ thuật/kinh doanh?
|
|
18
|
-
6. Tạo file docs/prd.md theo template
|
|
19
|
-
7. Cập nhật `project-status.yaml` theo `.claude/rules/common/project-status.md` — thêm `artifacts.prd`.
|
|
20
|
-
|
|
21
|
-
### Chế độ UPDATE (file đã tồn tại):
|
|
22
|
-
3. Cần context từ docs/prd.md hiện tại
|
|
23
|
-
4. $ARGUMENTS là mô tả thay đổi. Nếu không có, hỏi user cần cập nhật section nào.
|
|
24
|
-
5. Cập nhật file, giữ nguyên các section không thay đổi
|
|
25
|
-
6. Thêm dòng vào section Changelog cuối file: ngày, mô tả thay đổi
|
|
26
|
-
7. Cập nhật `project-status.yaml` theo `.claude/rules/common/project-status.md` — cập nhật `artifacts.prd`.
|
|
27
|
-
|
|
28
|
-
## Nguyên tắc
|
|
29
|
-
- Viết ở mức đủ chi tiết để SE có thể hiểu và thiết kế kiến trúc
|
|
30
|
-
- Phân loại requirements theo MoSCoW: Must/Should/Could/Won't
|
|
31
|
-
- Mỗi requirement có ID duy nhất: FR-001, NFR-001
|
|
32
|
-
- Luôn có section Non-Goals để giới hạn scope
|
|
33
|
-
- Sơ đồ Mermaid phải dùng :::mermaid wrapper, KHÔNG dùng ký tự ()
|
|
1
|
+
# /tas-prd $ARGUMENTS
|
|
2
|
+
|
|
3
|
+
Vai trò: PE - Product Engineer
|
|
4
|
+
Tạo hoặc cập nhật Product Requirements Document.
|
|
5
|
+
|
|
6
|
+
## Hành động
|
|
7
|
+
1. Cần context từ root/tas.yaml để lấy project context
|
|
8
|
+
2. Kiểm tra docs/prd.md đã tồn tại chưa:
|
|
9
|
+
|
|
10
|
+
### Chế độ CREATE (file chưa tồn tại):
|
|
11
|
+
3. Cần context từ .tas/templates/PRD.md
|
|
12
|
+
4. Nếu $ARGUMENTS có nội dung, dùng làm input mô tả sản phẩm
|
|
13
|
+
5. Nếu không có $ARGUMENTS, hỏi user:
|
|
14
|
+
- Sản phẩm giải quyết vấn đề gì?
|
|
15
|
+
- Đối tượng người dùng chính?
|
|
16
|
+
- Các tính năng cốt lõi?
|
|
17
|
+
- Ràng buộc kỹ thuật/kinh doanh?
|
|
18
|
+
6. Tạo file docs/prd.md theo template
|
|
19
|
+
7. Cập nhật `project-status.yaml` theo `.claude/rules/common/project-status.md` — thêm `artifacts.prd`.
|
|
20
|
+
|
|
21
|
+
### Chế độ UPDATE (file đã tồn tại):
|
|
22
|
+
3. Cần context từ docs/prd.md hiện tại
|
|
23
|
+
4. $ARGUMENTS là mô tả thay đổi. Nếu không có, hỏi user cần cập nhật section nào.
|
|
24
|
+
5. Cập nhật file, giữ nguyên các section không thay đổi
|
|
25
|
+
6. Thêm dòng vào section Changelog cuối file: ngày, mô tả thay đổi
|
|
26
|
+
7. Cập nhật `project-status.yaml` theo `.claude/rules/common/project-status.md` — cập nhật `artifacts.prd`.
|
|
27
|
+
|
|
28
|
+
## Nguyên tắc
|
|
29
|
+
- Viết ở mức đủ chi tiết để SE có thể hiểu và thiết kế kiến trúc
|
|
30
|
+
- Phân loại requirements theo MoSCoW: Must/Should/Could/Won't
|
|
31
|
+
- Mỗi requirement có ID duy nhất: FR-001, NFR-001
|
|
32
|
+
- Luôn có section Non-Goals để giới hạn scope
|
|
33
|
+
- Sơ đồ Mermaid phải dùng :::mermaid wrapper, KHÔNG dùng ký tự ()
|
|
34
|
+
|
|
35
|
+
## Bước cuối — Token Log
|
|
36
|
+
|
|
37
|
+
Invoke skill `token-logger`: ghi AI Usage Log vào `docs/prd.md`.
|