@champpaba/claude-agent-kit 1.0.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/LICENSE +21 -0
- package/README.md +561 -0
- package/bin/cli.js +61 -0
- package/lib/init.js +52 -0
- package/lib/update.js +73 -0
- package/package.json +47 -0
- package/template/.claude/CHANGELOG-v1.1.1.md +259 -0
- package/template/.claude/CLAUDE.md +329 -0
- package/template/.claude/agents/01-integration.md +797 -0
- package/template/.claude/agents/02-uxui-frontend.md +899 -0
- package/template/.claude/agents/03-test-debug.md +759 -0
- package/template/.claude/agents/04-frontend.md +1099 -0
- package/template/.claude/agents/05-backend.md +1217 -0
- package/template/.claude/agents/06-database.md +969 -0
- package/template/.claude/commands/agentsetup.md +1464 -0
- package/template/.claude/commands/cdev.md +327 -0
- package/template/.claude/commands/csetup.md +447 -0
- package/template/.claude/commands/cstatus.md +60 -0
- package/template/.claude/commands/cview.md +364 -0
- package/template/.claude/commands/psetup.md +101 -0
- package/template/.claude/contexts/design/accessibility.md +611 -0
- package/template/.claude/contexts/design/box-thinking.md +553 -0
- package/template/.claude/contexts/design/color-theory.md +498 -0
- package/template/.claude/contexts/design/index.md +247 -0
- package/template/.claude/contexts/design/layout.md +400 -0
- package/template/.claude/contexts/design/responsive.md +551 -0
- package/template/.claude/contexts/design/shadows.md +522 -0
- package/template/.claude/contexts/design/spacing.md +428 -0
- package/template/.claude/contexts/design/typography.md +465 -0
- package/template/.claude/contexts/domain/README.md +164 -0
- package/template/.claude/contexts/patterns/agent-coordination.md +388 -0
- package/template/.claude/contexts/patterns/agent-discovery.md +182 -0
- package/template/.claude/contexts/patterns/change-workflow.md +538 -0
- package/template/.claude/contexts/patterns/code-standards.md +515 -0
- package/template/.claude/contexts/patterns/development-principles.md +513 -0
- package/template/.claude/contexts/patterns/error-handling.md +478 -0
- package/template/.claude/contexts/patterns/error-recovery.md +365 -0
- package/template/.claude/contexts/patterns/frontend-component-strategy.md +365 -0
- package/template/.claude/contexts/patterns/git-workflow.md +207 -0
- package/template/.claude/contexts/patterns/logging.md +424 -0
- package/template/.claude/contexts/patterns/task-breakdown.md +452 -0
- package/template/.claude/contexts/patterns/task-classification.md +523 -0
- package/template/.claude/contexts/patterns/tdd-classification.md +516 -0
- package/template/.claude/contexts/patterns/testing.md +413 -0
- package/template/.claude/contexts/patterns/ui-component-consistency.md +304 -0
- package/template/.claude/contexts/patterns/validation-framework.md +776 -0
- package/template/.claude/lib/README.md +39 -0
- package/template/.claude/lib/agent-executor.md +258 -0
- package/template/.claude/lib/agent-router.md +572 -0
- package/template/.claude/lib/flags-updater.md +469 -0
- package/template/.claude/lib/tdd-classifier.md +345 -0
- package/template/.claude/lib/validation-gates.md +484 -0
- package/template/.claude/settings.local.json +42 -0
- package/template/.claude/templates/context-template.md +45 -0
- package/template/.claude/templates/flags-template.json +42 -0
- package/template/.claude/templates/phase-templates.json +124 -0
- package/template/.claude/templates/phases-sections/accessibility-test.md +17 -0
- package/template/.claude/templates/phases-sections/api-design.md +37 -0
- package/template/.claude/templates/phases-sections/backend-tests.md +16 -0
- package/template/.claude/templates/phases-sections/backend.md +37 -0
- package/template/.claude/templates/phases-sections/business-logic-validation.md +16 -0
- package/template/.claude/templates/phases-sections/component-tests.md +17 -0
- package/template/.claude/templates/phases-sections/contract-backend.md +16 -0
- package/template/.claude/templates/phases-sections/contract-frontend.md +16 -0
- package/template/.claude/templates/phases-sections/database.md +35 -0
- package/template/.claude/templates/phases-sections/documentation.md +17 -0
- package/template/.claude/templates/phases-sections/e2e-tests.md +16 -0
- package/template/.claude/templates/phases-sections/fix-implementation.md +17 -0
- package/template/.claude/templates/phases-sections/frontend-integration.md +18 -0
- package/template/.claude/templates/phases-sections/frontend-mockup.md +123 -0
- package/template/.claude/templates/phases-sections/manual-flow-test.md +15 -0
- package/template/.claude/templates/phases-sections/manual-ux-test.md +16 -0
- package/template/.claude/templates/phases-sections/refactor-implementation.md +17 -0
- package/template/.claude/templates/phases-sections/refactor.md +16 -0
- package/template/.claude/templates/phases-sections/regression-tests.md +15 -0
- package/template/.claude/templates/phases-sections/report.md +16 -0
- package/template/.claude/templates/phases-sections/responsive-test.md +16 -0
- package/template/.claude/templates/phases-sections/script-implementation.md +43 -0
- package/template/.claude/templates/phases-sections/test-coverage.md +16 -0
- package/template/.claude/templates/phases-sections/user-approval.md +14 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Change Setup
|
|
3
|
+
description: Setup change context by analyzing tasks and generating agent workflow
|
|
4
|
+
category: Multi-Agent
|
|
5
|
+
tags: [setup, change, multi-agent]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Usage
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
/csetup {change-id}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## What It Does
|
|
15
|
+
|
|
16
|
+
Analyzes OpenSpec files (proposal, tasks, design) and:
|
|
17
|
+
1. Detects task types (frontend, backend, API, script, etc.)
|
|
18
|
+
2. Selects appropriate phase template
|
|
19
|
+
3. Generates `.claude/phases.md` (agent workflow)
|
|
20
|
+
4. Generates `.claude/flags.json` (progress tracking)
|
|
21
|
+
5. Generates `.claude/context.md` (change-specific tech)
|
|
22
|
+
|
|
23
|
+
## Steps
|
|
24
|
+
|
|
25
|
+
### Step 1: Check Prerequisites
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Check if change exists
|
|
29
|
+
ls openspec/changes/{change-id}/
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If not found:
|
|
33
|
+
```
|
|
34
|
+
❌ Error: Change {change-id} not found
|
|
35
|
+
Please create the change with OpenSpec first
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Step 2: Read OpenSpec Files
|
|
39
|
+
|
|
40
|
+
Read in order:
|
|
41
|
+
1. `openspec/changes/{change-id}/proposal.md`
|
|
42
|
+
2. `openspec/changes/{change-id}/tasks.md`
|
|
43
|
+
3. `openspec/changes/{change-id}/design.md` (if exists)
|
|
44
|
+
|
|
45
|
+
### Step 3: Analyze Tasks
|
|
46
|
+
|
|
47
|
+
**Parse tasks.md content and detect keywords:**
|
|
48
|
+
|
|
49
|
+
```typescript
|
|
50
|
+
// Load detection keywords
|
|
51
|
+
const keywords = Read('.claude/templates/phase-templates.json').detection_keywords
|
|
52
|
+
|
|
53
|
+
// Analyze tasks.md
|
|
54
|
+
const tasksContent = Read('openspec/changes/{change-id}/tasks.md')
|
|
55
|
+
const lower = tasksContent.toLowerCase()
|
|
56
|
+
|
|
57
|
+
// Detect categories
|
|
58
|
+
const hasFrontend = keywords.frontend.some(kw => lower.includes(kw))
|
|
59
|
+
const hasBackend = keywords.backend.some(kw => lower.includes(kw))
|
|
60
|
+
const hasDatabase = keywords.database.some(kw => lower.includes(kw))
|
|
61
|
+
const hasAPI = keywords.api_integration.some(kw => lower.includes(kw))
|
|
62
|
+
const hasScript = keywords.script.some(kw => lower.includes(kw))
|
|
63
|
+
const isBugFix = keywords.bug_fix.some(kw => lower.includes(kw))
|
|
64
|
+
const isRefactor = keywords.refactor.some(kw => lower.includes(kw))
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Output detection results:**
|
|
68
|
+
```
|
|
69
|
+
🔍 Analyzing tasks.md...
|
|
70
|
+
|
|
71
|
+
Detected:
|
|
72
|
+
✅ Frontend work: YES (found: component, ui, responsive)
|
|
73
|
+
✅ Backend work: YES (found: api, endpoint)
|
|
74
|
+
✅ Database work: YES (found: database, schema)
|
|
75
|
+
❌ Script/CLI: NO
|
|
76
|
+
❌ Bug fix: NO
|
|
77
|
+
❌ Refactor: NO
|
|
78
|
+
|
|
79
|
+
Change type: feature
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Step 4: Select Template
|
|
83
|
+
|
|
84
|
+
**Selection logic:**
|
|
85
|
+
```typescript
|
|
86
|
+
let template: string
|
|
87
|
+
|
|
88
|
+
if (isBugFix) {
|
|
89
|
+
template = 'bug-fix'
|
|
90
|
+
} else if (isRefactor) {
|
|
91
|
+
template = 'refactor'
|
|
92
|
+
} else if (hasScript && !hasFrontend && !hasBackend) {
|
|
93
|
+
template = 'script-only'
|
|
94
|
+
} else if (hasFrontend && hasBackend) {
|
|
95
|
+
template = 'full-stack'
|
|
96
|
+
} else if (hasFrontend && !hasBackend && !hasAPI) {
|
|
97
|
+
template = 'frontend-only'
|
|
98
|
+
} else if (hasBackend && !hasFrontend) {
|
|
99
|
+
template = 'backend-only'
|
|
100
|
+
} else {
|
|
101
|
+
// Default to safest option
|
|
102
|
+
template = 'full-stack'
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Output:**
|
|
107
|
+
```
|
|
108
|
+
📋 Template selected: full-stack
|
|
109
|
+
- Total phases: 19
|
|
110
|
+
- Estimated time: 7 hours
|
|
111
|
+
- Reason: Frontend + Backend + Database detected
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 5: Generate phases.md
|
|
115
|
+
|
|
116
|
+
**Load template and phase sections:**
|
|
117
|
+
```typescript
|
|
118
|
+
// Load template
|
|
119
|
+
const templateData = Read('.claude/templates/phase-templates.json').templates[template]
|
|
120
|
+
|
|
121
|
+
// Load phase sections
|
|
122
|
+
const phaseSections = templateData.phases.map(phaseId => {
|
|
123
|
+
return Read(`.claude/templates/phases-sections/${phaseId}.md`)
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
// Extract task IDs from tasks.md
|
|
127
|
+
const taskIds = extractTaskIds(tasksContent) // e.g., ["1.1", "1.2", "2.1", ...]
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**🆕 ENHANCED: Add TDD Classification**
|
|
131
|
+
|
|
132
|
+
For each phase, add TDD metadata:
|
|
133
|
+
1. Extract task description from tasks.md
|
|
134
|
+
2. Estimate complexity (time + keywords + length)
|
|
135
|
+
3. Classify TDD requirement (phase type + keywords + complexity)
|
|
136
|
+
4. Add TDD metadata to phase: `tdd_required`, `tdd_reason`, `tdd_workflow`
|
|
137
|
+
|
|
138
|
+
**See:** `.claude/lib/tdd-classifier.md` for complete classification logic
|
|
139
|
+
|
|
140
|
+
**Quick Reference:**
|
|
141
|
+
- Backend auth/payment → TDD required (critical logic)
|
|
142
|
+
- Simple CRUD read → test-alongside OK
|
|
143
|
+
- Multi-step wizard UI → TDD required (complex state machine)
|
|
144
|
+
- Database schema → no TDD needed (declarative)
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
**Generate phases.md:**
|
|
149
|
+
```markdown
|
|
150
|
+
# Agent Workflow: {CHANGE_ID} {Change Title}
|
|
151
|
+
|
|
152
|
+
> **Auto-generated by `/csetup {change-id}`**
|
|
153
|
+
> **Template:** {template-name} ({total-phases} phases)
|
|
154
|
+
> **Reason:** {detection-reason}
|
|
155
|
+
> **Source:** proposal.md + tasks.md + design.md
|
|
156
|
+
> **Last updated:** {current-datetime}
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 📊 Workflow Overview
|
|
161
|
+
|
|
162
|
+
| Phase | Agent | Type | Est. Time | Status |
|
|
163
|
+
|-------|-------|------|-----------|--------|
|
|
164
|
+
{phase-table-rows}
|
|
165
|
+
|
|
166
|
+
**Total estimated time:** ~{total-hours} hours
|
|
167
|
+
|
|
168
|
+
**Phases skipped (not needed for {template-name}):**
|
|
169
|
+
{skipped-phases-list}
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
{phase-section-1}
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
{phase-section-2}
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
... (all phases)
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
**End of phases.md**
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Write to: `openspec/changes/{change-id}/.claude/phases.md`
|
|
189
|
+
|
|
190
|
+
### Step 6: Generate flags.json
|
|
191
|
+
|
|
192
|
+
**Load template and populate:**
|
|
193
|
+
```typescript
|
|
194
|
+
// Load template
|
|
195
|
+
const flagsTemplate = Read('.claude/templates/flags-template.json')
|
|
196
|
+
|
|
197
|
+
// Populate with change data
|
|
198
|
+
const flags = {
|
|
199
|
+
...flagsTemplate,
|
|
200
|
+
change_id: changeId,
|
|
201
|
+
change_type: changeType, // from proposal or detection
|
|
202
|
+
template: templateName,
|
|
203
|
+
created_at: new Date().toISOString(),
|
|
204
|
+
updated_at: new Date().toISOString(),
|
|
205
|
+
current_phase: templateData.phases[0], // First phase
|
|
206
|
+
meta: {
|
|
207
|
+
...flagsTemplate.meta,
|
|
208
|
+
total_phases: templateData.total_phases,
|
|
209
|
+
pending_phases: templateData.total_phases,
|
|
210
|
+
total_estimated_minutes: templateData.estimated_minutes
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Initialize all phases as pending
|
|
215
|
+
templateData.phases.forEach((phaseId, index) => {
|
|
216
|
+
flags.phases[phaseId] = {
|
|
217
|
+
phase_number: index + 1,
|
|
218
|
+
status: 'pending',
|
|
219
|
+
agent: getAgentForPhase(phaseId),
|
|
220
|
+
estimated_minutes: getEstimatedMinutes(phaseId)
|
|
221
|
+
}
|
|
222
|
+
})
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Write to: `openspec/changes/{change-id}/.claude/flags.json`
|
|
226
|
+
|
|
227
|
+
### Step 7: Generate context.md
|
|
228
|
+
|
|
229
|
+
**Load template and populate:**
|
|
230
|
+
```typescript
|
|
231
|
+
// Load template
|
|
232
|
+
let contextTemplate = Read('.claude/templates/context-template.md')
|
|
233
|
+
|
|
234
|
+
// Load project tech stack
|
|
235
|
+
const projectTech = Read('.claude/contexts/domain/project/tech-stack.md')
|
|
236
|
+
|
|
237
|
+
// Detect additional tech from proposal/tasks
|
|
238
|
+
const additionalTech = detectAdditionalTech(proposalContent, tasksContent)
|
|
239
|
+
|
|
240
|
+
// Replace placeholders
|
|
241
|
+
contextTemplate = contextTemplate
|
|
242
|
+
.replace('{CHANGE_ID}', changeId)
|
|
243
|
+
.replace('{CHANGE_TITLE}', extractTitle(proposalContent))
|
|
244
|
+
.replace('{CHANGE_TYPE}', changeType)
|
|
245
|
+
.replace('{CURRENT_PHASE_NUMBER}', '1')
|
|
246
|
+
.replace('{TOTAL_PHASES}', templateData.total_phases)
|
|
247
|
+
.replace('{CREATED_DATE}', new Date().toISOString())
|
|
248
|
+
.replace('{CORE_TECH_LIST}', generateCoreTechList(projectTech))
|
|
249
|
+
.replace('{ADDITIONAL_TECH_LIST}', generateAdditionalTechList(additionalTech))
|
|
250
|
+
.replace('{CURRENT_PHASE}', templateData.phases[0])
|
|
251
|
+
.replace('{STATUS}', 'pending')
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Write to: `openspec/changes/{change-id}/.claude/context.md`
|
|
255
|
+
|
|
256
|
+
### Step 8: Output Summary
|
|
257
|
+
|
|
258
|
+
```
|
|
259
|
+
✅ Change setup complete!
|
|
260
|
+
|
|
261
|
+
📦 Change: {change-id}
|
|
262
|
+
📋 Template: {template-name} ({total-phases} phases)
|
|
263
|
+
🛠️ Detected: {detected-categories}
|
|
264
|
+
|
|
265
|
+
📁 Files created:
|
|
266
|
+
✓ openspec/changes/{change-id}/.claude/phases.md
|
|
267
|
+
✓ openspec/changes/{change-id}/.claude/flags.json
|
|
268
|
+
✓ openspec/changes/{change-id}/.claude/context.md
|
|
269
|
+
|
|
270
|
+
📊 Workflow:
|
|
271
|
+
Phase 1: {first-phase-name} ({agent} agent, {estimated} min)
|
|
272
|
+
...
|
|
273
|
+
Phase {n}: {last-phase-name}
|
|
274
|
+
|
|
275
|
+
⏱️ Total estimated time: ~{hours}h {minutes}m
|
|
276
|
+
|
|
277
|
+
🚀 Ready to start development!
|
|
278
|
+
|
|
279
|
+
Next steps:
|
|
280
|
+
1. Review generated workflow: openspec/changes/{change-id}/.claude/phases.md
|
|
281
|
+
2. Start development: /cdev {change-id}
|
|
282
|
+
3. View progress: /cview {change-id}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Helper Functions
|
|
288
|
+
|
|
289
|
+
### extractTaskIds()
|
|
290
|
+
```typescript
|
|
291
|
+
// Extract task IDs like "1.1", "1.2", "2.1" from tasks.md
|
|
292
|
+
function extractTaskIds(content: string): string[] {
|
|
293
|
+
const regex = /-\s*\[\s*\]\s*(\d+\.\d+)/g
|
|
294
|
+
const matches = [...content.matchAll(regex)]
|
|
295
|
+
return matches.map(m => m[1])
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### getAgentForPhase()
|
|
300
|
+
```typescript
|
|
301
|
+
function getAgentForPhase(phaseId: string): string {
|
|
302
|
+
const agentMap = {
|
|
303
|
+
'frontend-mockup': 'uxui-frontend',
|
|
304
|
+
'accessibility-test': 'test-debug',
|
|
305
|
+
'manual-ux-test': 'user',
|
|
306
|
+
'business-logic-validation': 'integration',
|
|
307
|
+
'user-approval': 'user',
|
|
308
|
+
'api-design': 'integration',
|
|
309
|
+
'backend': 'backend',
|
|
310
|
+
'database': 'database',
|
|
311
|
+
'backend-tests': 'test-debug',
|
|
312
|
+
'contract-backend': 'integration',
|
|
313
|
+
'frontend-integration': 'frontend',
|
|
314
|
+
'contract-frontend': 'integration',
|
|
315
|
+
'component-tests': 'test-debug',
|
|
316
|
+
'responsive-test': 'user',
|
|
317
|
+
'e2e-tests': 'test-debug',
|
|
318
|
+
'manual-flow-test': 'user',
|
|
319
|
+
'refactor': 'test-debug',
|
|
320
|
+
'regression-tests': 'test-debug',
|
|
321
|
+
'test-coverage': 'test-debug',
|
|
322
|
+
'documentation': 'integration',
|
|
323
|
+
'report': 'integration',
|
|
324
|
+
'script-implementation': 'backend',
|
|
325
|
+
'automated-tests': 'test-debug',
|
|
326
|
+
'manual-testing': 'user',
|
|
327
|
+
'fix-implementation': 'varies',
|
|
328
|
+
'unit-tests': 'test-debug',
|
|
329
|
+
'manual-verification': 'user',
|
|
330
|
+
'refactor-implementation': 'test-debug'
|
|
331
|
+
}
|
|
332
|
+
return agentMap[phaseId] || 'integration'
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### detectAdditionalTech()
|
|
337
|
+
```typescript
|
|
338
|
+
// Detect change-specific tech (Stripe, WebSocket, etc.)
|
|
339
|
+
function detectAdditionalTech(proposal: string, tasks: string): string[] {
|
|
340
|
+
const combined = proposal + ' ' + tasks
|
|
341
|
+
const tech = []
|
|
342
|
+
|
|
343
|
+
if (combined.includes('stripe') || combined.includes('payment')) tech.push('Stripe')
|
|
344
|
+
if (combined.includes('websocket') || combined.includes('realtime')) tech.push('WebSocket')
|
|
345
|
+
if (combined.includes('redis')) tech.push('Redis')
|
|
346
|
+
if (combined.includes('s3') || combined.includes('storage')) tech.push('S3/Storage')
|
|
347
|
+
// Add more as needed
|
|
348
|
+
|
|
349
|
+
return tech
|
|
350
|
+
}
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Error Handling
|
|
356
|
+
|
|
357
|
+
**If tasks.md is missing or empty:**
|
|
358
|
+
```
|
|
359
|
+
❌ Error: tasks.md not found or empty
|
|
360
|
+
Please ensure the change has been properly initialized with OpenSpec
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
**If template selection is ambiguous:**
|
|
364
|
+
```
|
|
365
|
+
⚠️ Warning: Could not confidently detect change type
|
|
366
|
+
Defaulting to 'full-stack' template (safest option)
|
|
367
|
+
|
|
368
|
+
If this is incorrect, please:
|
|
369
|
+
1. Add more descriptive keywords to tasks.md
|
|
370
|
+
2. Or manually specify template (future feature)
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
---
|
|
374
|
+
|
|
375
|
+
## Example Session
|
|
376
|
+
|
|
377
|
+
```bash
|
|
378
|
+
$ /csetup CHANGE-003
|
|
379
|
+
|
|
380
|
+
🔍 Reading OpenSpec files...
|
|
381
|
+
✓ Read: proposal.md (2.3 KB)
|
|
382
|
+
✓ Read: tasks.md (1.8 KB)
|
|
383
|
+
✓ Read: design.md (not found - optional)
|
|
384
|
+
|
|
385
|
+
🔍 Analyzing tasks.md...
|
|
386
|
+
|
|
387
|
+
Detected:
|
|
388
|
+
✅ Frontend work: YES (found: component, page, responsive, ui)
|
|
389
|
+
❌ Backend work: NO
|
|
390
|
+
❌ Database work: NO
|
|
391
|
+
❌ API integration: NO
|
|
392
|
+
❌ Script/CLI: NO
|
|
393
|
+
|
|
394
|
+
Change type: feature
|
|
395
|
+
|
|
396
|
+
📋 Template selected: frontend-only
|
|
397
|
+
- Total phases: 11
|
|
398
|
+
- Estimated time: 3.25 hours
|
|
399
|
+
- Reason: Frontend work detected, no backend/API needed
|
|
400
|
+
|
|
401
|
+
Generating workflow...
|
|
402
|
+
✓ Generated phases.md (127 lines, 11 phases)
|
|
403
|
+
✓ Generated flags.json (initialized all phases as pending)
|
|
404
|
+
✓ Generated context.md (change context with core tech references)
|
|
405
|
+
|
|
406
|
+
✅ Change setup complete!
|
|
407
|
+
|
|
408
|
+
📦 Change: CHANGE-003
|
|
409
|
+
📋 Template: frontend-only (11 phases)
|
|
410
|
+
🛠️ Detected: Frontend
|
|
411
|
+
|
|
412
|
+
📁 Files created:
|
|
413
|
+
✓ openspec/changes/CHANGE-003/.claude/phases.md
|
|
414
|
+
✓ openspec/changes/CHANGE-003/.claude/flags.json
|
|
415
|
+
✓ openspec/changes/CHANGE-003/.claude/context.md
|
|
416
|
+
|
|
417
|
+
📊 Workflow:
|
|
418
|
+
Phase 1: Frontend Mockup (uxui-frontend, 90 min)
|
|
419
|
+
Phase 2: Accessibility Test (test-debug, 10 min)
|
|
420
|
+
Phase 3: Manual UX Test (user, 15 min)
|
|
421
|
+
Phase 4: Business Logic Validation (integration, 10 min)
|
|
422
|
+
Phase 5: User Approval (user, 5 min)
|
|
423
|
+
Phase 6: Component Tests (test-debug, 20 min)
|
|
424
|
+
Phase 7: Responsive Test (user, 15 min)
|
|
425
|
+
Phase 8: Refactor (test-debug, 20 min)
|
|
426
|
+
Phase 9: Test Coverage (test-debug, 5 min)
|
|
427
|
+
Phase 10: Documentation (integration, 15 min)
|
|
428
|
+
Phase 11: Final Report (integration, 10 min)
|
|
429
|
+
|
|
430
|
+
⏱️ Total estimated time: ~3h 15m
|
|
431
|
+
|
|
432
|
+
🚀 Ready to start development!
|
|
433
|
+
|
|
434
|
+
Next steps:
|
|
435
|
+
1. Review workflow: openspec/changes/CHANGE-003/.claude/phases.md
|
|
436
|
+
2. Start development: /cdev CHANGE-003
|
|
437
|
+
3. View progress: /cview CHANGE-003
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
## Important Notes
|
|
443
|
+
|
|
444
|
+
1. **Re-run safe:** Running `/csetup` again will **overwrite** existing files. Use with caution.
|
|
445
|
+
2. **Manual adjustments:** You can manually edit phases.md after generation if needed
|
|
446
|
+
3. **Template accuracy:** Detection is heuristic-based. Review generated workflow before starting.
|
|
447
|
+
4. **Context7 integration:** Additional tech detection can trigger Context7 queries (future enhancement)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Change Status
|
|
3
|
+
description: Quick progress status for a change
|
|
4
|
+
category: Multi-Agent
|
|
5
|
+
tags: [status, progress, quick]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Usage
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
/cstatus {change-id}
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## What It Does
|
|
15
|
+
|
|
16
|
+
Shows quick progress summary:
|
|
17
|
+
- Progress percentage with bar
|
|
18
|
+
- Current phase
|
|
19
|
+
- Time spent/remaining
|
|
20
|
+
- Quick stats
|
|
21
|
+
|
|
22
|
+
## Output Format
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
📊 CHANGE-{id}: {type} | {template}
|
|
26
|
+
|
|
27
|
+
Progress: [████████░░] 64% (7/11 phases)
|
|
28
|
+
|
|
29
|
+
Current Phase: #8 Refactor (test-debug)
|
|
30
|
+
├─ Started: 14:15 (15 minutes ago)
|
|
31
|
+
├─ Estimated: 20 minutes
|
|
32
|
+
└─ Status: in_progress
|
|
33
|
+
|
|
34
|
+
✅ Completed: 7 phases
|
|
35
|
+
🔄 In Progress: 1 phase
|
|
36
|
+
⏳ Remaining: 3 phases
|
|
37
|
+
|
|
38
|
+
⏱️ Time:
|
|
39
|
+
├─ Spent: 2h 55min (estimated: 3h 15min)
|
|
40
|
+
├─ Remaining: ~35 minutes
|
|
41
|
+
└─ Efficiency: 111% (ahead of estimate)
|
|
42
|
+
|
|
43
|
+
📈 Stats:
|
|
44
|
+
├─ Tests: 12 passed, 0 failed (75% coverage)
|
|
45
|
+
├─ Issues: 2 found, 2 fixed, 0 remaining
|
|
46
|
+
└─ Files: 4 created, 2 modified
|
|
47
|
+
|
|
48
|
+
🎯 Next Steps:
|
|
49
|
+
1. Complete refactoring (20 min)
|
|
50
|
+
2. Test coverage report (5 min)
|
|
51
|
+
3. Documentation (15 min)
|
|
52
|
+
|
|
53
|
+
Commands:
|
|
54
|
+
→ Detailed view: /cview {change-id}
|
|
55
|
+
→ Continue dev: /cdev {change-id}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Implementation
|
|
59
|
+
|
|
60
|
+
Read `openspec/changes/{change-id}/.claude/flags.json` and format output using helper functions.
|