qa-workflow-cc 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.
Files changed (39) hide show
  1. package/README.md +461 -0
  2. package/VERSION +1 -0
  3. package/bin/install.js +116 -0
  4. package/commands/qa/continue.md +77 -0
  5. package/commands/qa/full.md +149 -0
  6. package/commands/qa/init.md +105 -0
  7. package/commands/qa/resume.md +91 -0
  8. package/commands/qa/status.md +66 -0
  9. package/package.json +28 -0
  10. package/skills/qa/SKILL.md +420 -0
  11. package/skills/qa/references/continuation-format.md +58 -0
  12. package/skills/qa/references/exit-criteria.md +53 -0
  13. package/skills/qa/references/lifecycle.md +181 -0
  14. package/skills/qa/references/model-profiles.md +77 -0
  15. package/skills/qa/templates/agent-skeleton.md +733 -0
  16. package/skills/qa/templates/component-test.md +1088 -0
  17. package/skills/qa/templates/domain-research-queries.md +101 -0
  18. package/skills/qa/templates/domain-security-profiles.md +182 -0
  19. package/skills/qa/templates/e2e-test.md +1200 -0
  20. package/skills/qa/templates/nielsen-heuristics.md +274 -0
  21. package/skills/qa/templates/performance-benchmarks-base.md +321 -0
  22. package/skills/qa/templates/qa-report-template.md +271 -0
  23. package/skills/qa/templates/security-checklist-owasp.md +451 -0
  24. package/skills/qa/templates/stop-points/bootstrap-complete.md +36 -0
  25. package/skills/qa/templates/stop-points/certified.md +25 -0
  26. package/skills/qa/templates/stop-points/escalated.md +32 -0
  27. package/skills/qa/templates/stop-points/fix-ready.md +43 -0
  28. package/skills/qa/templates/stop-points/phase-transition.md +4 -0
  29. package/skills/qa/templates/stop-points/status-dashboard.md +32 -0
  30. package/skills/qa/templates/test-standards.md +652 -0
  31. package/skills/qa/templates/unit-test.md +998 -0
  32. package/skills/qa/templates/visual-regression.md +418 -0
  33. package/skills/qa/workflows/bootstrap.md +45 -0
  34. package/skills/qa/workflows/decision-gate.md +66 -0
  35. package/skills/qa/workflows/fix-execute.md +132 -0
  36. package/skills/qa/workflows/fix-plan.md +52 -0
  37. package/skills/qa/workflows/report-phase.md +64 -0
  38. package/skills/qa/workflows/test-phase.md +86 -0
  39. package/skills/qa/workflows/verify-phase.md +65 -0
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: qa:full
3
+ description: Run complete QA cycle with autonomous test-fix-verify loop
4
+ argument-hint: "[api|security|ux|{app-name}|cycle-N|--report-only|--fix|--verify]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Edit
9
+ - Bash
10
+ - Glob
11
+ - Grep
12
+ - Task
13
+ - WebSearch
14
+ - WebFetch
15
+ ---
16
+
17
+ <execution_context>
18
+ @.claude/qa-profile.json
19
+ @docs/qa-reports/cycle-state.json
20
+ </execution_context>
21
+
22
+ <objective>
23
+ Run a complete QA cycle: Bootstrap (if needed) → Test → Report → Decision → Fix Plan → STOP.
24
+ After user approves fixes via `/qa:continue`, executes fixes → verify → re-test autonomously.
25
+
26
+ **Orchestrator role:** Parse arguments, resolve model profiles, route to correct phase, spawn specialized agents, manage state transitions. NEVER write code directly — always delegate to agents.
27
+
28
+ **IMPORTANT:** Read reference docs on-demand, not all at once. Only load what the current phase needs.
29
+ </objective>
30
+
31
+ <context>
32
+ Arguments: $ARGUMENTS
33
+
34
+ **Supported arguments:**
35
+ - (empty) or `full` → Full QA cycle starting at Phase 1 (or bootstrap if needed)
36
+ - `api` → API/backend tests only
37
+ - `security` → Security audit only
38
+ - `ux` → UX evaluation only
39
+ - `{app-name}` → Tests for specific app (by name from profile)
40
+ - `cycle-N` → Start fresh cycle N (re-test everything)
41
+ - `--report-only` → Test + report, skip fix planning
42
+ - `--fix` → Same as `/qa:continue` (enter fix phase)
43
+ - `--verify` → Re-verify without re-testing
44
+ </context>
45
+
46
+ <process>
47
+
48
+ ## 1. Resolve Model Profile
49
+
50
+ Read `config.model_profile` from the auto-loaded qa-profile.json (default: "balanced").
51
+ Read and resolve per-agent models from `~/.claude/skills/qa/references/model-profiles.md`.
52
+
53
+ ## Context Inlining (GSD Pattern)
54
+
55
+ Before any Task() spawn, the orchestrator MUST:
56
+ 1. Read .claude/qa-profile.json → PROFILE (already auto-loaded)
57
+ 2. Read docs/qa-reports/cycle-state.json → STATE (already auto-loaded)
58
+ 3. Read ~/.claude/skills/qa/references/model-profiles.md → resolve per-agent model
59
+ 4. Inline relevant PROFILE and STATE sections into each Task() prompt
60
+ 5. Do NOT rely on @ references crossing Task() boundaries
61
+
62
+ ## 2. Check Bootstrap Status
63
+
64
+ If qa-profile.json was NOT loaded (auto-context returned empty/missing):
65
+ - Run bootstrap: Follow `~/.claude/skills/qa/workflows/bootstrap.md`
66
+ - After bootstrap completes, re-read the profile
67
+ - If `$ARGUMENTS` is `init` → STOP after bootstrap (this is handled by `/qa:init`)
68
+
69
+ If profile exists but is stale (>30 days from `generatedAt`):
70
+ - Prompt user: "QA profile is N days old. Re-scan? [yes/no]"
71
+ - If yes → re-bootstrap
72
+ - If no → proceed with existing profile
73
+
74
+ ## 3. Parse Scope
75
+
76
+ Determine test scope from `$ARGUMENTS`:
77
+
78
+ | Argument | Scope Filter |
79
+ |----------|-------------|
80
+ | `api` | Backend apps only, security auditor |
81
+ | `security` | Security auditor only |
82
+ | `ux` | UX optimizer only |
83
+ | `{app-name}` | Match against `profile.apps[].name` |
84
+ | `cycle-N` | Full scope, set cycle=N |
85
+ | (default) | Full scope |
86
+
87
+ Validate scope against `profile.scopes.available`. Error if invalid.
88
+
89
+ ## 4. Determine Cycle Number
90
+
91
+ - If `cycle-N` argument: Use N
92
+ - If cycle-state.json exists and has previous cycles: Use last cycle + 1
93
+ - Otherwise: Cycle 1
94
+
95
+ ## 5. Phase 3: Execute Tests
96
+
97
+ Follow `~/.claude/skills/qa/workflows/test-phase.md`
98
+
99
+ ## 6. Phase 4: Consolidate Report
100
+
101
+ Follow `~/.claude/skills/qa/workflows/report-phase.md`
102
+
103
+ ## 7. Phase 5: Decision Gate
104
+
105
+ Follow `~/.claude/skills/qa/workflows/decision-gate.md`
106
+
107
+ Route based on decision:
108
+ - **PASS** → Phase 8 (certification)
109
+ - **FAIL** → Phase 6 (plan fixes)
110
+ - **ESCALATE** → Phase 9 (escalation)
111
+
112
+ ## 8. Phase 6: Plan Fixes (if FAIL)
113
+
114
+ Follow `~/.claude/skills/qa/workflows/fix-plan.md`
115
+
116
+ **STOP — Present fix plan:**
117
+
118
+ Read and output `~/.claude/skills/qa/templates/stop-points/fix-ready.md`
119
+ Substitute all `{placeholder}` values with data from the fix plan and report.
120
+
121
+ ## 9. Phase 8: Certification (if PASS)
122
+
123
+ Write certification report to `docs/qa-reports/final-certification-{date}.md`.
124
+ Update state: `{ "phase": "certified", "verdict": "PASS" }`
125
+
126
+ Read and output `~/.claude/skills/qa/templates/stop-points/certified.md`
127
+ Substitute all `{placeholder}` values with certification data.
128
+
129
+ ## 10. Phase 9: Escalation (if ESCALATE)
130
+
131
+ Write escalation analysis to `docs/qa-reports/escalation-cycle-{N}.md`.
132
+ Update state: `{ "phase": "escalated" }`
133
+
134
+ Read and output `~/.claude/skills/qa/templates/stop-points/escalated.md`
135
+ Substitute all `{placeholder}` values with escalation data.
136
+
137
+ </process>
138
+
139
+ <success_criteria>
140
+ - [ ] Model profile resolved from qa-profile.json config
141
+ - [ ] Bootstrap triggered if profile missing
142
+ - [ ] Scope parsed and validated
143
+ - [ ] Test agents spawned with correct model and skill file instructions
144
+ - [ ] Raw results saved to disk before consolidation
145
+ - [ ] State checkpoints written BEFORE each phase execution
146
+ - [ ] Decision gate evaluated against exit criteria
147
+ - [ ] Stop point output matches template from templates/stop-points/
148
+ - [ ] Recovery lines included at all transition points
149
+ </success_criteria>
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: qa:init
3
+ description: Bootstrap QA infrastructure — discover tech stack, generate agents and skill files
4
+ argument-hint: "[--rebootstrap]"
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Edit
9
+ - Bash
10
+ - Glob
11
+ - Grep
12
+ - Task
13
+ - WebSearch
14
+ - WebFetch
15
+ ---
16
+
17
+ <objective>
18
+ Run QA bootstrap only (Phase 0). Discovers tech stack, researches Anthropic docs, generates agents and skill files, writes qa-profile.json, then STOPS.
19
+
20
+ Does NOT execute any QA tests. Use `/qa:full` after bootstrap to start testing.
21
+
22
+ **If `--rebootstrap` flag:** Force re-discovery even if qa-profile.json already exists.
23
+ </objective>
24
+
25
+ <context>
26
+ Arguments: $ARGUMENTS
27
+
28
+ **Flags:**
29
+ - `--rebootstrap` — Force fresh discovery even if profile exists
30
+ </context>
31
+
32
+ <process>
33
+
34
+ ## 1. Check Existing Profile
35
+
36
+ ```bash
37
+ ls .claude/qa-profile.json 2>/dev/null
38
+ ```
39
+
40
+ **If profile exists AND `--rebootstrap` NOT set:**
41
+ - Read profile, check `generatedAt` timestamp
42
+ - If fresh (<30 days): "QA profile already exists (generated {date}). Use `--rebootstrap` to force re-discovery, or `/qa:full` to start testing."
43
+ - If stale (>30 days): Prompt user: "QA profile is {N} days old. Re-scan? [yes/no]"
44
+ - If no: STOP with message above
45
+ - If yes: Continue to bootstrap
46
+
47
+ **If profile missing OR `--rebootstrap` set:** Continue to bootstrap.
48
+
49
+ ## 2. Invoke Bootstrap
50
+
51
+ Invoke the `/qa` skill which contains the full Phase 0 Bootstrap Protocol (B1-B9).
52
+
53
+ The skill file at `~/.claude/skills/qa/SKILL.md` contains:
54
+ - B1: Root Discovery (package.json, framework detection, domain detection)
55
+ - B2: Parallel Research (app discovery, security context, PRD analysis, Anthropic docs research, stack/security/UX research)
56
+ - B3: Monorepo structure detection
57
+ - B4: Profile assembly (qa-profile.json)
58
+ - B5: Directory creation + project-level CLAUDE.md registration
59
+ - B6: File generation (skill files, agent files, test matrix)
60
+ - B7: Existing file handling (skip user-modified files)
61
+ - B8: Validation (check generated files)
62
+ - B9: State checkpoint + output
63
+
64
+ Pass the `--rebootstrap` context so bootstrap knows to overwrite existing files.
65
+
66
+ ## 3. Project-Level Registration (GAP 6)
67
+
68
+ After bootstrap completes, check project CLAUDE.md:
69
+
70
+ ```bash
71
+ ls CLAUDE.md 2>/dev/null
72
+ ```
73
+
74
+ **If CLAUDE.md exists:** Check if QA section already present. If not, append:
75
+
76
+ ```markdown
77
+
78
+ ## QA Commands
79
+
80
+ | Command | Purpose |
81
+ |---------|---------|
82
+ | `/qa:full` | Full QA cycle — test, report, fix plan, verify |
83
+ | `/qa:full api` | API/backend tests only |
84
+ | `/qa:full security` | Security audit only |
85
+ | `/qa:full ux` | UX heuristic evaluation only |
86
+ | `/qa:init` | Bootstrap QA infrastructure (first-time setup) |
87
+ | `/qa:continue` | Execute approved fix plan |
88
+ | `/qa:resume` | Resume from any interrupted state |
89
+ | `/qa:status` | View current QA progress |
90
+
91
+ QA reports: `docs/qa-reports/`
92
+ QA profile: `.claude/qa-profile.json`
93
+ ```
94
+
95
+ **If no CLAUDE.md:** Skip registration (not all projects have one).
96
+
97
+ ## 4. Output Bootstrap Complete
98
+
99
+ The `/qa` skill handles the B9 output. After it returns, read and output:
100
+ `~/.claude/skills/qa/templates/stop-points/bootstrap-complete.md`
101
+ Substitute all `{placeholder}` values with profile data from B4.
102
+
103
+ **STOP HERE.** Do not proceed to QA execution.
104
+
105
+ </process>
@@ -0,0 +1,91 @@
1
+ ---
2
+ name: qa:resume
3
+ description: Resume QA from any interrupted state by reading cycle-state.json
4
+ argument-hint: ""
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Edit
9
+ - Bash
10
+ - Glob
11
+ - Grep
12
+ - Task
13
+ ---
14
+
15
+ <execution_context>
16
+ @.claude/qa-profile.json
17
+ @docs/qa-reports/cycle-state.json
18
+ </execution_context>
19
+
20
+ <objective>
21
+ Resume QA execution from wherever it was interrupted. Reads cycle-state.json and routes to the correct phase.
22
+
23
+ This is the universal recovery command — works from any state.
24
+ </objective>
25
+
26
+ <process>
27
+
28
+ ## 1. Validate State File
29
+
30
+ Read cycle-state.json from auto-context.
31
+
32
+ **If missing or empty:**
33
+ - Error: "No QA state found. Run `/qa:full` to start."
34
+ - STOP
35
+
36
+ **If corrupt or unreadable:**
37
+ - Error: "State file corrupt. Options: `/qa:full` (fresh start) or `/qa:full cycle-{N}` (re-test)"
38
+ - STOP
39
+
40
+ ## 2. Resolve Model Profile
41
+
42
+ Read `config.model_profile` from qa-profile.json (default: "balanced").
43
+ Resolve per-agent models from `~/.claude/skills/qa/references/model-profiles.md`.
44
+
45
+ ## 3. Route Based on State
46
+
47
+ | state.phase | Action |
48
+ |-------------|--------|
49
+ | `bootstrap_complete` | Load resources → Phase 3 (start testing). Route to `/qa:full` logic. |
50
+ | `testing` | Check for raw results in `docs/qa-reports/cycle-{N}-raw/`. Re-spawn missing agents. Display: "Previous test agents may still be running. Re-spawning test phase." |
51
+ | `testing_complete` | Phase 4: Consolidate from saved raw results. Read from `state.rawResultsDir`. |
52
+ | `reporting_complete` | Phase 5: Re-evaluate decision gate. Read report, apply exit criteria. |
53
+ | `awaiting_fix_approval` | Re-display fix plan summary. Output Phase 6 stop point template. |
54
+ | `fixing` | Phase 7: Read `state.batchProgress`. Skip `completedBatches`. Resume from `currentBatch`. Display: "Resuming fix execution from batch {currentBatch}. Skipping completed: {completedBatches}" |
55
+ | `verifying` | Phase 7b: Re-run verification. |
56
+ | `certified` | "Already certified. Run `/qa:full cycle-{N+1}` for a new cycle." STOP |
57
+ | `escalated` | "Escalated. Review `docs/qa-reports/escalation-cycle-{N}.md`. After resolving: `/qa:full cycle-{N+1}`" STOP |
58
+
59
+ ## 4. Execute Resumed Phase
60
+
61
+ Route to the appropriate workflow file based on phase:
62
+
63
+ | Resumed Phase | Workflow |
64
+ |---------------|----------|
65
+ | testing | Follow `~/.claude/skills/qa/workflows/test-phase.md` (re-spawn missing agents only) |
66
+ | testing_complete | Follow `~/.claude/skills/qa/workflows/report-phase.md` |
67
+ | reporting_complete | Follow `~/.claude/skills/qa/workflows/decision-gate.md` |
68
+ | fixing | Follow `~/.claude/skills/qa/workflows/fix-execute.md` (skip completed batches) |
69
+ | verifying | Follow `~/.claude/skills/qa/workflows/verify-phase.md` |
70
+
71
+ **For testing phase resume:**
72
+ - Check which agents already have saved results in `cycle-{N}-raw/`
73
+ - Only re-spawn agents that DON'T have saved results
74
+ - After all results collected → continue to Phase 4
75
+
76
+ **For fixing phase resume:**
77
+ - Read `batchProgress.completedBatches` — these are done
78
+ - Read `batchProgress.currentBatch` — start here
79
+ - Read `batchProgress.batchResults` — for context
80
+ - Continue fix execution from current batch
81
+
82
+ ## 5. Continue Autonomously
83
+
84
+ After resuming at the correct phase, continue the normal autonomous flow:
85
+ - Phase 3 → 4 → 5 → (6 → STOP | 8 → STOP | 9 → STOP)
86
+ - Phase 7 → 7b → 3 (next cycle)
87
+
88
+ All transition points output the phase-transition template:
89
+ Read and output `~/.claude/skills/qa/templates/stop-points/phase-transition.md`
90
+
91
+ </process>
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: qa:status
3
+ description: View current QA progress — cycle history, current phase, next action
4
+ argument-hint: ""
5
+ allowed-tools:
6
+ - Read
7
+ - Glob
8
+ - Grep
9
+ ---
10
+
11
+ <execution_context>
12
+ @.claude/qa-profile.json
13
+ @docs/qa-reports/cycle-state.json
14
+ </execution_context>
15
+
16
+ <objective>
17
+ Display a progress dashboard showing current QA state, cycle history, and recommended next action. Read-only — does not modify any files.
18
+ </objective>
19
+
20
+ <process>
21
+
22
+ ## 1. Check State
23
+
24
+ Read cycle-state.json from auto-context.
25
+
26
+ **If missing:**
27
+ - "No QA state found. Run `/qa:init` to bootstrap, then `/qa:full` to start testing."
28
+ - STOP
29
+
30
+ ## 2. Read Profile
31
+
32
+ Read qa-profile.json from auto-context for project name and scope info.
33
+
34
+ **If missing:**
35
+ - "No QA profile found. Run `/qa:init` to bootstrap."
36
+ - STOP
37
+
38
+ ## 3. Gather Cycle History
39
+
40
+ Read `state.previousCycles` for cycle history data.
41
+
42
+ Also check for existing reports:
43
+ ```bash
44
+ ls docs/qa-reports/cycle-*-*.md 2>/dev/null
45
+ ```
46
+
47
+ ## 4. Display Dashboard
48
+
49
+ Read and output `~/.claude/skills/qa/templates/stop-points/status-dashboard.md`
50
+ Substitute all `{placeholder}` values with data from state and profile.
51
+
52
+ ## 5. Phase Descriptions (for display)
53
+
54
+ | Phase Value | Human-Readable Label |
55
+ |-------------|---------------------|
56
+ | `bootstrap_complete` | Bootstrap complete, ready for first cycle |
57
+ | `testing` | Test agents running |
58
+ | `testing_complete` | Tests complete, awaiting consolidation |
59
+ | `reporting_complete` | Report written, awaiting decision |
60
+ | `awaiting_fix_approval` | Fix plan ready for review |
61
+ | `fixing` | Fix execution in progress |
62
+ | `verifying` | Post-fix verification running |
63
+ | `certified` | QA certified — all gates passed |
64
+ | `escalated` | Blocked — manual intervention needed |
65
+
66
+ </process>
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "qa-workflow-cc",
3
+ "version": "1.0.0",
4
+ "description": "Autonomous QA orchestrator for Claude Code — test-fix-verify cycles that run themselves.",
5
+ "bin": {
6
+ "qa-workflow-cc": "bin/install.js"
7
+ },
8
+ "files": [
9
+ "bin/",
10
+ "commands/",
11
+ "skills/",
12
+ "VERSION"
13
+ ],
14
+ "keywords": [
15
+ "claude",
16
+ "claude-code",
17
+ "qa",
18
+ "testing",
19
+ "autonomous",
20
+ "orchestrator"
21
+ ],
22
+ "author": "desland01",
23
+ "license": "MIT",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/desland01/qa-workflow.git"
27
+ }
28
+ }