Skip to content

Commit 6700e30

Browse files
committed
Merge remote-tracking branch 'origin/main' into feat/generation-queue-management
# Conflicts: # src/services/generationPipeline.ts
2 parents 9bb8d42 + 16cba91 commit 6700e30

947 files changed

Lines changed: 136561 additions & 7983 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude/agents/do-todo.md

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,31 @@ You are a TDD-driven developer agent. Your job is to pick up ONE task and comple
3030
2. **Ensure you're on the correct branch**:
3131
- If working on a GitHub Issue: branch should be `feat/issue-NUMBER` or `fix/issue-NUMBER`
3232
- If branch doesn't exist, create it from main
33-
3. **Understand** the task — read relevant source files
34-
4. **Write a failing test first** (Red phase):
33+
3. **Check for spec context** (spec-aware TDD):
34+
- Check if the issue has a `spec:` label: `gh issue view NUMBER --json labels`
35+
- If a `spec:<change-name>` label is present, read the actual spec files:
36+
- First check `openspec/changes/<change-name>/specs/` (active change)
37+
- Fallback: `openspec/specs/` (archived specs)
38+
- Use the issue body as supplementary context only (it may drift from source)
39+
- Each Given/When/Then scenario becomes at least one test case
40+
- MUST/SHALL keywords are mandatory — every MUST must be asserted in the test suite
41+
4. **Understand** the task — read relevant source files
42+
5. **Write a failing test first** (Red phase):
3543
- For store/utility tasks: create a Vitest test in `src/**/__tests__/`
3644
- For UI/workflow tasks: create a Playwright test in `tests/e2e/`
37-
5. **Run the test** to confirm it fails: `npm test` or `npx playwright test`
38-
6. **Implement** the minimum code to make the test pass (Green phase)
39-
7. **Run all tests** to ensure nothing else broke: `npm test`
40-
8. **Refactor** if needed while keeping tests green
41-
9. **Run quality gates**:
42-
- `npx tsc --noEmit` — must be 0 errors
43-
- `npm test` — all pass
44-
- `npm run build` — succeeds
45-
10. **Mark progress**:
45+
- If spec scenarios exist: each Given/When/Then scenario becomes a test case
46+
6. **Run the test** to confirm it fails: `npm test` or `npx playwright test`
47+
7. **Implement** the minimum code to make the test pass (Green phase)
48+
8. **Run all tests** to ensure nothing else broke: `npm test`
49+
9. **Refactor** if needed while keeping tests green
50+
10. **Run quality gates**:
51+
- `npx tsc --noEmit` — must be 0 errors
52+
- `npm test` — all pass
53+
- `npm run build` — succeeds
54+
11. **Mark progress**:
4655
- If from `.llm/todo.md`: change `- [ ]` to `- [x]`
4756
- If from GitHub Issue: note the issue number in your commit
48-
11. **Commit** with a conventional commit message:
57+
12. **Commit** with a conventional commit message:
4958
```
5059
git add -A
5160
# Use an appropriate conventional commit type: feat, fix, refactor, test, docs, etc.

.claude/agents/product-manager.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,13 @@ You are the product manager for ACE-Step DAW. Your job is to translate research
1818
- Design guides in `docs/design/`
1919
- User feedback (provided in your task prompt)
2020
- Current state of `docs/design/UX_IMPROVEMENT_CHECKLIST.md`
21+
- Existing OpenSpec specs in `openspec/specs/` (living behavior contracts)
2122

2223
## Outputs
23-
1. File prioritized tasks as GitHub Issues with priority labels (`priority: P0`/`P1`/`P2`/`P3`)
24-
2. Update `docs/design/UX_IMPROVEMENT_CHECKLIST.md` with status changes
25-
3. Write feature specs as GitHub Issue bodies (detailed acceptance criteria)
24+
1. For features touching 3+ files: recommend running `/opsx:propose` in a main session to create formal specs with Given/When/Then scenarios BEFORE filing issues (note: this agent cannot run slash commands directly — flag the recommendation in the issue body)
25+
2. File prioritized tasks as GitHub Issues with priority labels (`priority: P0`/`P1`/`P2`/`P3`)
26+
3. Update `docs/design/UX_IMPROVEMENT_CHECKLIST.md` with status changes
27+
4. Write feature specs as GitHub Issue bodies (detailed acceptance criteria, referencing OpenSpec if available)
2628

2729
## Prioritization Rules
2830
- P0: Blocks users from basic usage (crash, data loss, no audio)

.claude/agents/tester.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,25 @@ You are a QA agent. Your job is to run the full test suite, analyze results, and
2222
npm test 2>&1
2323
npm run build 2>&1
2424
```
25-
2. **Analyze results**:
25+
2. **Spec validation** (if given a change name or spec-labeled issues exist):
26+
- If a change name is provided: read specs from `openspec/changes/<name>/specs/` or `openspec/specs/`
27+
- Otherwise: find active spec labels via `gh issue list --repo ace-step/ACE-Step-DAW --json labels --jq '[.[].labels[].name | select(startswith("spec:"))] | unique'`
28+
- For each spec change, read the actual spec files (source of truth, not issue bodies)
29+
- Extract MUST/SHALL requirements from spec files
30+
- Search test files for corresponding test cases covering those requirements
31+
- Report any uncovered MUST/SHALL as a spec gap
32+
- Scope: only validate specs relevant to the current task/PR, not entire repo history
33+
3. **Analyze results**:
2634
- Collect all errors, warnings, and test failures
2735
- For each failure, identify the root cause (read the failing test + source)
28-
- Categorize: type error | test failure | build error | runtime error
29-
3. **Create fix tasks** — file as GitHub Issues with label `bug` and `priority: P1` if tools are available.
36+
- Categorize: type error | test failure | build error | runtime error | spec gap
37+
4. **Create fix tasks** — file as GitHub Issues with label `bug` and `priority: P1` if tools are available.
3038
Fallback: append to `.llm/todo.md` under appropriate priority:
3139
- Type errors -> Priority 1 (blocks everything)
3240
- Test failures -> Priority 1
3341
- Build errors -> Priority 1
3442
- Code quality issues -> Priority 3
35-
4. **Generate report** to `.llm/reports/test-report-<date>.md`:
43+
5. **Generate report** to `.llm/reports/test-report-<date>.md`:
3644
```markdown
3745
## Test Report — <date>
3846

@@ -44,6 +52,10 @@ You are a QA agent. Your job is to run the full test suite, analyze results, and
4452
| Test | Error | Root Cause | Fix Task |
4553
|------|-------|------------|----------|
4654

55+
### Spec Coverage (if applicable)
56+
| Spec Change | MUST/SHALL | Covered | Gap |
57+
|-------------|-----------|---------|-----|
58+
4759
### Coverage Summary
4860
- Statements: X%
4961
- Branches: X%

.claude/commands/opsx/apply.md

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
---
2+
name: "OPSX: Apply"
3+
description: Implement tasks from an OpenSpec change (Experimental)
4+
category: Workflow
5+
tags: [workflow, artifacts, experimental]
6+
---
7+
8+
Implement tasks from an OpenSpec change.
9+
10+
**Input**: Optionally specify a change name (e.g., `/opsx:apply add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.
11+
12+
**Steps**
13+
14+
1. **Select the change**
15+
16+
If a name is provided, use it. Otherwise:
17+
- Infer from conversation context if the user mentioned a change
18+
- Auto-select if only one active change exists
19+
- If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select
20+
21+
Always announce: "Using change: <name>" and how to override (e.g., `/opsx:apply <other>`).
22+
23+
2. **Check status to understand the schema**
24+
```bash
25+
openspec status --change "<name>" --json
26+
```
27+
Parse the JSON to understand:
28+
- `schemaName`: The workflow being used (e.g., "spec-driven")
29+
- Which artifact contains the tasks (typically "tasks" for spec-driven, check status for others)
30+
31+
3. **Get apply instructions**
32+
33+
```bash
34+
openspec instructions apply --change "<name>" --json
35+
```
36+
37+
This returns:
38+
- Context file paths (varies by schema)
39+
- Progress (total, complete, remaining)
40+
- Task list with status
41+
- Dynamic instruction based on current state
42+
43+
**Handle states:**
44+
- If `state: "blocked"` (missing artifacts): show message, suggest using `/opsx:propose <name>` to complete missing artifacts
45+
- If `state: "all_done"`: congratulate, suggest archive
46+
- Otherwise: proceed to implementation
47+
48+
4. **Read context files**
49+
50+
Read the files listed in `contextFiles` from the apply instructions output.
51+
The files depend on the schema being used:
52+
- **spec-driven**: proposal, specs, design, tasks
53+
- Other schemas: follow the contextFiles from CLI output
54+
55+
5. **Show current progress**
56+
57+
Display:
58+
- Schema being used
59+
- Progress: "N/M tasks complete"
60+
- Remaining tasks overview
61+
- Dynamic instruction from CLI
62+
63+
6. **Implement tasks (loop until done or blocked)**
64+
65+
For each pending task:
66+
- Show which task is being worked on
67+
- Make the code changes required
68+
- Keep changes minimal and focused
69+
- Mark task complete in the tasks file: `- [ ]``- [x]`
70+
- Continue to next task
71+
72+
**Pause if:**
73+
- Task is unclear → ask for clarification
74+
- Implementation reveals a design issue → suggest updating artifacts
75+
- Error or blocker encountered → report and wait for guidance
76+
- User interrupts
77+
78+
7. **On completion or pause, show status**
79+
80+
Display:
81+
- Tasks completed this session
82+
- Overall progress: "N/M tasks complete"
83+
- If all done: suggest archive
84+
- If paused: explain why and wait for guidance
85+
86+
**Output During Implementation**
87+
88+
```
89+
## Implementing: <change-name> (schema: <schema-name>)
90+
91+
Working on task 3/7: <task description>
92+
[...implementation happening...]
93+
✓ Task complete
94+
95+
Working on task 4/7: <task description>
96+
[...implementation happening...]
97+
✓ Task complete
98+
```
99+
100+
**Output On Completion**
101+
102+
```
103+
## Implementation Complete
104+
105+
**Change:** <change-name>
106+
**Schema:** <schema-name>
107+
**Progress:** 7/7 tasks complete ✓
108+
109+
### Completed This Session
110+
- [x] Task 1
111+
- [x] Task 2
112+
...
113+
114+
All tasks complete! You can archive this change with `/opsx:archive`.
115+
```
116+
117+
**Output On Pause (Issue Encountered)**
118+
119+
```
120+
## Implementation Paused
121+
122+
**Change:** <change-name>
123+
**Schema:** <schema-name>
124+
**Progress:** 4/7 tasks complete
125+
126+
### Issue Encountered
127+
<description of the issue>
128+
129+
**Options:**
130+
1. <option 1>
131+
2. <option 2>
132+
3. Other approach
133+
134+
What would you like to do?
135+
```
136+
137+
**Guardrails**
138+
- Keep going through tasks until done or blocked
139+
- Always read context files before starting (from the apply instructions output)
140+
- If task is ambiguous, pause and ask before implementing
141+
- If implementation reveals issues, pause and suggest artifact updates
142+
- Keep code changes minimal and scoped to each task
143+
- Update task checkbox immediately after completing each task
144+
- Pause on errors, blockers, or unclear requirements - don't guess
145+
- Use contextFiles from CLI output, don't assume specific file names
146+
147+
**Fluid Workflow Integration**
148+
149+
This skill supports the "actions on a change" model:
150+
151+
- **Can be invoked anytime**: Before all artifacts are done (if tasks exist), after partial implementation, interleaved with other actions
152+
- **Allows artifact updates**: If implementation reveals design issues, suggest updating artifacts - not phase-locked, work fluidly

0 commit comments

Comments
 (0)