specross 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/README.md +207 -0
- package/bin/cli.js +292 -0
- package/package.json +25 -0
- package/template/CLAUDE.md +106 -0
- package/template/_templates/bug-report.md +81 -0
- package/template/_templates/story.md +130 -0
- package/template/_templates/tech-spec.md +109 -0
- package/template/_templates/test-cases.md +80 -0
- package/template/agents/ba.md +73 -0
- package/template/agents/dev.md +93 -0
- package/template/agents/qc.md +122 -0
- package/template/commands/ba/impact.md +42 -0
- package/template/commands/ba/new-story.md +68 -0
- package/template/commands/ba/release.md +128 -0
- package/template/commands/ba/review.md +44 -0
- package/template/commands/dev/gen-scaffold.md +40 -0
- package/template/commands/dev/gen-tech-spec.md +39 -0
- package/template/commands/dev/review.md +52 -0
- package/template/commands/dev/status.md +51 -0
- package/template/commands/dev/sync.md +62 -0
- package/template/commands/help.md +77 -0
- package/template/commands/qc/bug-report.md +33 -0
- package/template/commands/qc/gen-scripts.md +42 -0
- package/template/commands/qc/gen-test-cases.md +41 -0
- package/template/commands/qc/status.md +51 -0
- package/template/commands/qc/sync.md +71 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
> **Agent:** Read `.claude/agents/qc.md` and adopt that persona fully before proceeding.
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Generate automation test scripts for story: $ARGUMENTS
|
|
6
|
+
|
|
7
|
+
## Steps
|
|
8
|
+
|
|
9
|
+
1. Read `stories/$ARGUMENTS/test/test-cases.md`. If it doesn't exist, stop and say: "Test cases not found. Run `/qc:gen-test-cases $ARGUMENTS` first."
|
|
10
|
+
|
|
11
|
+
2. Read `stories/$ARGUMENTS/story.md` for business context and AC details.
|
|
12
|
+
|
|
13
|
+
3. Read `CLAUDE.md` for:
|
|
14
|
+
- The testing framework in use (e.g. Playwright, Cypress, pytest, Jest, etc.)
|
|
15
|
+
- Test folder conventions and file naming
|
|
16
|
+
- Any existing test helpers, fixtures, or page objects to reuse
|
|
17
|
+
|
|
18
|
+
4. For each test case in test-cases.md, generate an automation script:
|
|
19
|
+
- Map TC-001 → test function/block with the same ID in a comment
|
|
20
|
+
- Use the testing framework specified in CLAUDE.md
|
|
21
|
+
- Write realistic selectors, assertions, and setup/teardown
|
|
22
|
+
- Use `// TODO:` or `# TODO:` where QC needs to fill in dynamic values (e.g. test user credentials, specific IDs)
|
|
23
|
+
- Group happy path, edge case, and negative tests into separate describe/class blocks
|
|
24
|
+
|
|
25
|
+
5. Write scripts to `tests/{story-name}/` using the naming convention in CLAUDE.md. If no convention is specified, use `{story-name}.spec.{ext}`.
|
|
26
|
+
|
|
27
|
+
6. Add a `tests/{story-name}/README.md` with:
|
|
28
|
+
- How to run these tests
|
|
29
|
+
- Any environment variables or setup required
|
|
30
|
+
- Which TC IDs each test function covers
|
|
31
|
+
|
|
32
|
+
7. Print a summary:
|
|
33
|
+
|
|
34
|
+
**Scripts generated for `$ARGUMENTS`:**
|
|
35
|
+
|
|
36
|
+
| File | TCs covered |
|
|
37
|
+
|------|-------------|
|
|
38
|
+
| tests/$ARGUMENTS/... | TC-001, TC-002, TC-003 |
|
|
39
|
+
|
|
40
|
+
**Next steps:**
|
|
41
|
+
1. Fill in any `// TODO` values (credentials, test data, selectors)
|
|
42
|
+
2. Run the suite and use `/qc:bug-report $ARGUMENTS {TC-ID}` for any failures
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
> **Agent:** Read `.claude/agents/qc.md` and adopt that persona fully before proceeding.
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Generate test cases for story: $ARGUMENTS
|
|
6
|
+
|
|
7
|
+
## Steps
|
|
8
|
+
|
|
9
|
+
1. Read `stories/$ARGUMENTS/story.md` fully. If it doesn't exist, stop and say:
|
|
10
|
+
"Story not found. Run `/ba:new-story $ARGUMENTS` first."
|
|
11
|
+
|
|
12
|
+
2. Check that the story has complete Acceptance Criteria. If incomplete, warn the user.
|
|
13
|
+
|
|
14
|
+
3. Read `CLAUDE.md` for testing conventions, framework, and naming standards.
|
|
15
|
+
|
|
16
|
+
4. Read `_templates/test-cases.md` — this is the **exact output format** to follow.
|
|
17
|
+
- Follow the TC numbering scheme, section structure, and coverage matrix from the template
|
|
18
|
+
- Do not skip sections — if a section has no content, note "None for this story"
|
|
19
|
+
|
|
20
|
+
5. Check if `stories/$ARGUMENTS/test/test-cases.md` already exists. If so, warn and ask to confirm before overwriting.
|
|
21
|
+
|
|
22
|
+
6. Generate test cases following `_templates/test-cases.md` exactly, and write to `stories/$ARGUMENTS/test/test-cases.md`.
|
|
23
|
+
- Fill `{{STORY_NAME}}` with the title-cased story name
|
|
24
|
+
- Fill `{{STORY_SLUG}}` with `$ARGUMENTS`
|
|
25
|
+
- Fill `{{DATE}}` with today's date
|
|
26
|
+
- Every AC → at least 1 happy path TC + 1 negative TC
|
|
27
|
+
- Every Edge Case from story.md → its own TC
|
|
28
|
+
- Coverage matrix must list every AC with its TC IDs
|
|
29
|
+
|
|
30
|
+
7. Read `stories/$ARGUMENTS/CHANGELOG.md` to find the current story version (the latest `## vX.Y.Z` entry at the top). Create `.spec-lock` at `stories/$ARGUMENTS/test/.spec-lock`:
|
|
31
|
+
```
|
|
32
|
+
story: $ARGUMENTS
|
|
33
|
+
spec-version: {current-story-version}
|
|
34
|
+
generated: {today}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
8. Print a coverage summary then next steps:
|
|
38
|
+
- Total TCs by type (happy path / edge case / negative)
|
|
39
|
+
- Any ACs that have incomplete coverage (flag as ⚠️)
|
|
40
|
+
- "Next: `/qc:gen-scripts $ARGUMENTS` to generate automation scripts"
|
|
41
|
+
- "To customize the TC format, edit `_templates/test-cases.md`"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
> **Agent:** Read `.claude/agents/qc.md` and adopt that persona fully before proceeding.
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Scan all released stories and show which ones need a test case sync.
|
|
6
|
+
|
|
7
|
+
## Steps
|
|
8
|
+
|
|
9
|
+
1. List all subdirectories under `stories/`. Each subdirectory is a story slug.
|
|
10
|
+
If `stories/` is empty or doesn't exist, print "No stories released yet." and stop.
|
|
11
|
+
|
|
12
|
+
2. For each story folder, collect its sync status:
|
|
13
|
+
|
|
14
|
+
a. Read `stories/{story}/CHANGELOG.md` — extract the latest version (the first `## vX.Y.Z` entry at the top). If CHANGELOG doesn't exist, mark as `unknown`.
|
|
15
|
+
|
|
16
|
+
b. Check `stories/{story}/test/.spec-lock`:
|
|
17
|
+
- If it **doesn't exist** → status: `⚪ No test cases`
|
|
18
|
+
- If it exists → read `spec-version`
|
|
19
|
+
- If `spec-version` == latest version → status: `✅ Up to date`
|
|
20
|
+
- If `spec-version` != latest version → status: `🔴 Outdated (locked: {spec-version} → latest: {latest})`
|
|
21
|
+
|
|
22
|
+
3. Print the status table:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
26
|
+
📋 QC STATUS
|
|
27
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
28
|
+
[one line per story, sorted: outdated first, then up-to-date, then no test cases]
|
|
29
|
+
|
|
30
|
+
🔴 user-authentication v1.0.0 → v1.3.0 /qc:sync user-authentication
|
|
31
|
+
🔴 create-order v1.1.0 → v1.2.0 /qc:sync create-order
|
|
32
|
+
✅ payment-flow v2.0.0
|
|
33
|
+
⚪ export-report /qc:gen-test-cases export-report
|
|
34
|
+
|
|
35
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
36
|
+
{N} stories need sync {M} up to date {K} no test cases yet
|
|
37
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
4. If there are outdated stories, print a shortcut block:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Run these to sync:
|
|
44
|
+
[one line per outdated story]
|
|
45
|
+
/qc:sync {story}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
If everything is up to date, print:
|
|
49
|
+
```
|
|
50
|
+
✅ All test cases are up to date.
|
|
51
|
+
```
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
> **Agent:** Read `.claude/agents/qc.md` and adopt that persona fully before proceeding.
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Check if the story spec has changed since the test cases were generated, and show what needs to be updated.
|
|
6
|
+
|
|
7
|
+
Story: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
1. Read `stories/$ARGUMENTS/test/.spec-lock`. If it doesn't exist, say:
|
|
12
|
+
"No spec-lock found. Run `/qc:gen-test-cases $ARGUMENTS` to generate test cases first."
|
|
13
|
+
|
|
14
|
+
The `.spec-lock` contains the story version these test cases were based on (e.g. `v1.0.0`).
|
|
15
|
+
|
|
16
|
+
2. Read `stories/$ARGUMENTS/CHANGELOG.md` to find the latest released version.
|
|
17
|
+
|
|
18
|
+
3. Compare the locked version vs the latest version:
|
|
19
|
+
- If they match → print "✅ Your test cases are up to date. No action needed." and stop.
|
|
20
|
+
- If they differ → continue.
|
|
21
|
+
|
|
22
|
+
4. Read the latest release note at `stories/$ARGUMENTS/docs/release-{latest-version}.md` to understand what changed.
|
|
23
|
+
|
|
24
|
+
5. Read the current `stories/$ARGUMENTS/story.md` fully.
|
|
25
|
+
|
|
26
|
+
6. Read the current `stories/$ARGUMENTS/test/test-cases.md` fully.
|
|
27
|
+
|
|
28
|
+
7. Produce a sync report:
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
32
|
+
🔄 QC SYNC — $ARGUMENTS
|
|
33
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
34
|
+
Your test cases: v{locked}
|
|
35
|
+
Latest story: v{latest}
|
|
36
|
+
|
|
37
|
+
CHANGES SINCE YOUR LAST SYNC:
|
|
38
|
+
[List each changed AC or edge case, clearly described]
|
|
39
|
+
|
|
40
|
+
TEST CASES AFFECTED:
|
|
41
|
+
┌─────────────────────────────────────────────────────┐
|
|
42
|
+
│ TC │ Status │ Action needed │
|
|
43
|
+
├─────────────────────────────────────────────────────┤
|
|
44
|
+
│ TC-003 │ ❌ Invalid │ AC changed — rewrite steps │
|
|
45
|
+
│ TC-007 │ ⚠️ Partial │ Add new assertion for X │
|
|
46
|
+
│ NEW │ ✅ Required │ Add TC for AC-05 (remember me)│
|
|
47
|
+
└─────────────────────────────────────────────────────┘
|
|
48
|
+
|
|
49
|
+
NEW TEST CASES TO ADD:
|
|
50
|
+
[For each new AC or edge case, describe the new TC(s) needed]
|
|
51
|
+
|
|
52
|
+
SCRIPTS TO UPDATE:
|
|
53
|
+
[If automation scripts exist, note which files need updating]
|
|
54
|
+
|
|
55
|
+
EFFORT ESTIMATE: Low / Medium / High
|
|
56
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
8. After the report, ask: "Would you like me to update the test cases now with these changes?"
|
|
60
|
+
- If yes: update `stories/$ARGUMENTS/test/test-cases.md` — edit invalid TCs and append new TCs
|
|
61
|
+
- If no: leave as-is
|
|
62
|
+
|
|
63
|
+
9. Once test cases are updated (now or manually), remind them to update `.spec-lock`:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
When you've finished updating your test cases and scripts, update your spec-lock:
|
|
67
|
+
|
|
68
|
+
stories/$ARGUMENTS/test/.spec-lock
|
|
69
|
+
→ change spec-version to: {latest}
|
|
70
|
+
→ change synced: to today's date
|
|
71
|
+
```
|