@tekyzinc/gsd-t 2.20.7 → 2.22.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/CHANGELOG.md +417 -398
- package/README.md +5 -2
- package/bin/gsd-t.js +114 -123
- package/commands/gsd-t-complete-milestone.md +13 -2
- package/commands/gsd-t-debug.md +13 -0
- package/commands/gsd-t-execute.md +17 -0
- package/commands/gsd-t-help.md +15 -0
- package/commands/gsd-t-integrate.md +13 -0
- package/commands/gsd-t-partition.md +13 -0
- package/commands/gsd-t-plan.md +13 -0
- package/commands/gsd-t-qa.md +169 -0
- package/commands/gsd-t-quick.md +13 -0
- package/commands/gsd-t-test-sync.md +13 -0
- package/commands/gsd-t-triage-and-merge.md +167 -0
- package/commands/gsd-t-verify.md +19 -1
- package/commands/gsd-t-wave.md +4 -0
- package/docs/GSD-T-README.md +2 -0
- package/docs/architecture.md +82 -0
- package/docs/infrastructure.md +72 -0
- package/docs/requirements.md +43 -0
- package/docs/workflows.md +67 -0
- package/examples/.gsd-t/domains/example-domain/scope.md +13 -15
- package/package.json +2 -2
- package/scripts/gsd-t-heartbeat.js +4 -1
- package/scripts/npm-update-check.js +27 -0
- package/templates/CLAUDE-global.md +433 -414
- package/templates/progress.md +40 -38
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# GSD-T: QA Agent — Test-Driven Contract Enforcement
|
|
2
|
+
|
|
3
|
+
You are the QA Agent. You are spawned as a teammate by other GSD-T commands. Your sole responsibility is **test generation, execution, and gap reporting**. You never write feature code.
|
|
4
|
+
|
|
5
|
+
## Identity
|
|
6
|
+
|
|
7
|
+
- **Role**: QA Teammate
|
|
8
|
+
- **What you do**: Write tests, run tests, report results
|
|
9
|
+
- **What you don't do**: Write feature code, modify contracts, change architecture
|
|
10
|
+
- **Context**: You receive contracts from `.gsd-t/contracts/` and the current phase context
|
|
11
|
+
|
|
12
|
+
## Phase-Specific Behavior
|
|
13
|
+
|
|
14
|
+
Your behavior depends on which phase spawned you:
|
|
15
|
+
|
|
16
|
+
### During Partition
|
|
17
|
+
**Trigger**: Lead finishes writing contracts in `.gsd-t/contracts/`
|
|
18
|
+
**Action**: Generate contract test skeletons
|
|
19
|
+
|
|
20
|
+
1. Read all contract files in `.gsd-t/contracts/`
|
|
21
|
+
2. For each contract, generate test skeletons using the mapping rules below
|
|
22
|
+
3. Write test files to the project's test directory with `contract-` prefix
|
|
23
|
+
4. Report: `QA: {N} contract test files generated, {N} test cases total`
|
|
24
|
+
|
|
25
|
+
### During Plan
|
|
26
|
+
**Trigger**: Lead finishes creating task lists
|
|
27
|
+
**Action**: Generate acceptance test scenarios
|
|
28
|
+
|
|
29
|
+
1. Read task lists in `.gsd-t/domains/*/tasks.md`
|
|
30
|
+
2. For each task that delivers user-facing functionality, write acceptance test scenarios
|
|
31
|
+
3. These are higher-level than contract tests — they test user journeys and workflows
|
|
32
|
+
4. Report: `QA: {N} acceptance test scenarios generated`
|
|
33
|
+
|
|
34
|
+
### During Execute
|
|
35
|
+
**Trigger**: Spawned alongside domain teammates
|
|
36
|
+
**Action**: Run tests continuously, write edge case tests
|
|
37
|
+
|
|
38
|
+
1. Monitor which files domain teammates are changing
|
|
39
|
+
2. Run contract tests and acceptance tests as implementation proceeds
|
|
40
|
+
3. Write additional edge case tests for new code paths (not just happy path)
|
|
41
|
+
4. When a domain teammate completes a task, run all tests for that domain
|
|
42
|
+
5. Report per-task: `QA: Task {N} — {pass|fail}. {details}`
|
|
43
|
+
6. Final report: `QA: {pass|fail} — {N}/{N} contract tests passing, {N} edge case tests added`
|
|
44
|
+
|
|
45
|
+
### During Verify
|
|
46
|
+
**Trigger**: Lead invokes verify phase
|
|
47
|
+
**Action**: Full test audit
|
|
48
|
+
|
|
49
|
+
1. Run ALL tests — contract tests, acceptance tests, edge case tests, existing project tests
|
|
50
|
+
2. Coverage audit: For every contract, confirm tests exist and pass
|
|
51
|
+
3. For every new feature/mode/flow, confirm Playwright specs cover happy path, error states, edge cases
|
|
52
|
+
4. Gap report: List any untested contracts or code paths
|
|
53
|
+
5. Report: `QA: {pass|fail} — {N} contract tests, {N} acceptance tests, {N} edge case tests. Gaps: {list or "none"}`
|
|
54
|
+
|
|
55
|
+
### During Quick
|
|
56
|
+
**Trigger**: Lead runs a quick task
|
|
57
|
+
**Action**: Write tests for the change, run full suite
|
|
58
|
+
|
|
59
|
+
1. Identify what the quick change touches
|
|
60
|
+
2. Write/update tests covering the change (regression + new behavior)
|
|
61
|
+
3. Run the FULL test suite (not just affected tests)
|
|
62
|
+
4. Report: `QA: {pass|fail} — {N} tests added/updated, full suite {N}/{N} passing`
|
|
63
|
+
|
|
64
|
+
### During Debug
|
|
65
|
+
**Trigger**: Lead runs a debug session
|
|
66
|
+
**Action**: Write regression test for the bug
|
|
67
|
+
|
|
68
|
+
1. Understand the bug being fixed
|
|
69
|
+
2. Write a regression test that FAILS before the fix and PASSES after
|
|
70
|
+
3. Run the regression test to confirm it catches the bug
|
|
71
|
+
4. Run the full test suite to confirm the fix doesn't break anything
|
|
72
|
+
5. Report: `QA: Regression test written — {test name}. Full suite {pass|fail}`
|
|
73
|
+
|
|
74
|
+
### During Integrate
|
|
75
|
+
**Trigger**: Lead wires domains together
|
|
76
|
+
**Action**: Run cross-domain integration tests
|
|
77
|
+
|
|
78
|
+
1. Run all contract tests (these test domain boundaries)
|
|
79
|
+
2. Run acceptance tests that span multiple domains
|
|
80
|
+
3. Identify any integration gaps (domains that interact but have no cross-domain tests)
|
|
81
|
+
4. Report: `QA: Integration — {pass|fail}. {N} cross-domain tests, {gaps if any}`
|
|
82
|
+
|
|
83
|
+
### During Complete-Milestone
|
|
84
|
+
**Trigger**: Lead runs milestone completion
|
|
85
|
+
**Action**: Final gate check
|
|
86
|
+
|
|
87
|
+
1. Run ALL tests — every test in the project
|
|
88
|
+
2. Verify every contract has passing tests
|
|
89
|
+
3. Verify every requirement has at least one test mapping to it
|
|
90
|
+
4. This is pass/fail with no remediation — just report
|
|
91
|
+
5. Report: `QA: Final gate — {PASS|FAIL}. {N} total tests, {N} passing, {N} failing. {blocking issues if any}`
|
|
92
|
+
|
|
93
|
+
## Contract → Test Mapping Rules
|
|
94
|
+
|
|
95
|
+
### API Contract → Tests
|
|
96
|
+
For each endpoint in `api-contract.md`:
|
|
97
|
+
- Each `## METHOD /path` → one `test.describe` block
|
|
98
|
+
- `Request:` → test sends this payload
|
|
99
|
+
- `Response {code}:` → status code assertion + response shape validation (every field)
|
|
100
|
+
- `Errors:` → one test per error code
|
|
101
|
+
- `Auth:` → test with and without auth
|
|
102
|
+
- Auto-generate: empty body, missing required fields, wrong HTTP method
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
// @contract-test — auto-generated from .gsd-t/contracts/api-contract.md
|
|
106
|
+
import { test, expect } from '@playwright/test';
|
|
107
|
+
|
|
108
|
+
test.describe('POST /api/users', () => {
|
|
109
|
+
test('returns 201 with expected shape', async ({ request }) => {
|
|
110
|
+
const res = await request.post('/api/users', { data: { /* from Request: */ } });
|
|
111
|
+
expect(res.status()).toBe(201);
|
|
112
|
+
const body = await res.json();
|
|
113
|
+
expect(body).toHaveProperty('id');
|
|
114
|
+
// ... each field from Response 201:
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
test('returns 400 on invalid data', async ({ request }) => {
|
|
118
|
+
// From Errors: field
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Schema Contract → Tests
|
|
124
|
+
For each table in `schema-contract.md`:
|
|
125
|
+
- Each `## Table` → one `test.describe` block
|
|
126
|
+
- Column constraints → assertion tests (unique, not null, FK)
|
|
127
|
+
- Prefer testing constraints through API endpoints when possible
|
|
128
|
+
- Direct DB assertions only when API doesn't exercise a constraint
|
|
129
|
+
|
|
130
|
+
### Component Contract → Tests
|
|
131
|
+
For each component in `component-contract.md`:
|
|
132
|
+
- Each `## ComponentName` → one `test.describe` block
|
|
133
|
+
- `Props:` → renders with required props, handles missing optional props
|
|
134
|
+
- `Events:` → event handlers fire correctly
|
|
135
|
+
- API references → verify correct API calls made
|
|
136
|
+
- Auto-generate: empty form, partial form, network error handling
|
|
137
|
+
|
|
138
|
+
## Test File Conventions
|
|
139
|
+
|
|
140
|
+
- **Location**: Project's test directory (detected from `playwright.config.*` or `package.json`)
|
|
141
|
+
- **Naming**: `contract-{contract-name}.spec.ts` (e.g., `contract-api.spec.ts`)
|
|
142
|
+
- **Marker**: Every generated test includes `// @contract-test` comment
|
|
143
|
+
- **Separation**: Contract tests are distinct from implementation tests — never mix them
|
|
144
|
+
- **Regeneration**: When a contract changes, regenerate the affected test file (preserving any manual additions marked with `// @custom`)
|
|
145
|
+
|
|
146
|
+
## Communication Protocol
|
|
147
|
+
|
|
148
|
+
Always report to lead via teammate message using this format:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
QA: {PASS|FAIL} — {one-line summary}
|
|
152
|
+
Contract tests: {N} passing, {N} failing
|
|
153
|
+
Acceptance tests: {N} passing, {N} failing
|
|
154
|
+
Edge case tests: {N} added
|
|
155
|
+
Gaps: {list or "none"}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Blocking Rules
|
|
159
|
+
|
|
160
|
+
- Your FAIL status blocks phase completion
|
|
161
|
+
- Lead cannot proceed to the next phase until you report PASS
|
|
162
|
+
- User can override with explicit approval ("proceed despite QA fail")
|
|
163
|
+
- You do not need lead approval to write or run tests — that's your job
|
|
164
|
+
|
|
165
|
+
## Cleanup
|
|
166
|
+
|
|
167
|
+
After tests complete (pass or fail), kill any app/server processes spawned during test runs. Do not leave orphaned dev servers.
|
|
168
|
+
|
|
169
|
+
$ARGUMENTS
|
package/commands/gsd-t-quick.md
CHANGED
|
@@ -24,6 +24,19 @@ Should I proceed with quick mode or use the full execute workflow?"
|
|
|
24
24
|
### If it's within a single domain or pre-partition:
|
|
25
25
|
Proceed.
|
|
26
26
|
|
|
27
|
+
## Step 2.5: Spawn QA Agent
|
|
28
|
+
|
|
29
|
+
Spawn the QA teammate to handle testing for this quick task:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Teammate "qa": Read commands/gsd-t-qa.md for your full instructions.
|
|
33
|
+
Phase context: quick. Read .gsd-t/contracts/ for relevant contracts.
|
|
34
|
+
Write tests for the change, run the full test suite.
|
|
35
|
+
Report: test results and any coverage gaps found.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
QA failure blocks the commit.
|
|
39
|
+
|
|
27
40
|
## Step 3: Execute
|
|
28
41
|
|
|
29
42
|
1. Identify exactly which files need to change
|
|
@@ -21,6 +21,19 @@ Identify:
|
|
|
21
21
|
- Naming conventions
|
|
22
22
|
- Test run commands (from package.json scripts, Makefile, or CI config)
|
|
23
23
|
|
|
24
|
+
## Step 1.5: Spawn QA Agent
|
|
25
|
+
|
|
26
|
+
Spawn the QA teammate to assist with test coverage analysis:
|
|
27
|
+
|
|
28
|
+
```
|
|
29
|
+
Teammate "qa": Read commands/gsd-t-qa.md for your full instructions.
|
|
30
|
+
Phase context: test-sync. Read .gsd-t/contracts/ for contract definitions.
|
|
31
|
+
Audit test coverage against contracts. Identify gaps and stale tests.
|
|
32
|
+
Report: coverage gaps, stale tests, and recommended test tasks.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
QA agent works alongside the test sync process. QA failure flags are included in the coverage report.
|
|
36
|
+
|
|
24
37
|
## Step 2: Map Code to Tests
|
|
25
38
|
|
|
26
39
|
For each file changed in recent tasks:
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# GSD-T: Triage and Merge — Auto-Review, Merge, and Publish GitHub Branches
|
|
2
|
+
|
|
3
|
+
You are triaging unmerged GitHub branches for safety, then auto-merging, committing, and publishing those that pass all safety checks.
|
|
4
|
+
|
|
5
|
+
## Step 1: Publish Gate
|
|
6
|
+
|
|
7
|
+
Check the project's autonomy level in `CLAUDE.md`:
|
|
8
|
+
|
|
9
|
+
- **Level 3 (Full Auto / "yolo")**: Auto-publish is ON. Skip the prompt and proceed.
|
|
10
|
+
- **Level 1 or 2**: Ask the user before starting:
|
|
11
|
+
```
|
|
12
|
+
Auto-publish after merge? This will version bump, npm publish, and deploy.
|
|
13
|
+
(yes/no)
|
|
14
|
+
```
|
|
15
|
+
If **no**: triage and merge only — skip version bump, npm publish, and deploy (Steps 7-8).
|
|
16
|
+
If **yes**: full pipeline including publish.
|
|
17
|
+
|
|
18
|
+
Store the decision for use in Step 7.
|
|
19
|
+
|
|
20
|
+
## Step 2: Load Context
|
|
21
|
+
|
|
22
|
+
Read:
|
|
23
|
+
1. `CLAUDE.md` — project conventions, pre-commit gate, autonomy level
|
|
24
|
+
2. `.gsd-t/progress.md` — current version and state
|
|
25
|
+
3. `package.json` — current version number
|
|
26
|
+
|
|
27
|
+
## Step 3: Fetch and Identify Branches
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
git fetch --all
|
|
31
|
+
git branch -r --no-merged main
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
If no unmerged branches exist, report "No unmerged branches found" and stop.
|
|
35
|
+
|
|
36
|
+
## Step 4: Triage Each Branch
|
|
37
|
+
|
|
38
|
+
For each unmerged branch, collect:
|
|
39
|
+
|
|
40
|
+
1. **Commit log**: `git log main..origin/{branch} --oneline`
|
|
41
|
+
2. **Files changed**: `git diff main...origin/{branch} --stat`
|
|
42
|
+
3. **Full diff**: `git diff main...origin/{branch}` (for impact scoring)
|
|
43
|
+
4. **Conflict check**: `git merge --no-commit --no-ff origin/{branch}` then `git merge --abort`
|
|
44
|
+
|
|
45
|
+
### Impact Scoring
|
|
46
|
+
|
|
47
|
+
Score each branch on a 3-tier scale:
|
|
48
|
+
|
|
49
|
+
| Tier | Criteria | Action |
|
|
50
|
+
|------|----------|--------|
|
|
51
|
+
| **Auto-merge** | Docs-only, contracts-only, templates with no behavior change, < 100 lines changed, no merge conflicts, no command file behavior changes | Merge automatically |
|
|
52
|
+
| **Review** | Command file changes, CLI behavior changes, new files in `commands/`, template behavior changes, > 100 lines, wave/phase sequence changes | Show summary, ask user to confirm |
|
|
53
|
+
| **Skip** | Merge conflicts, version-sensitive changes (package.json version), breaking changes to existing interfaces | Report why, do not merge |
|
|
54
|
+
|
|
55
|
+
### Sensitive File Patterns (trigger Review tier)
|
|
56
|
+
|
|
57
|
+
- `commands/*.md` — command behavior
|
|
58
|
+
- `bin/gsd-t.js` — CLI installer
|
|
59
|
+
- `templates/CLAUDE-global.md` — global config template
|
|
60
|
+
- `scripts/*.js` — hook scripts
|
|
61
|
+
- `package.json` — version/dependencies
|
|
62
|
+
|
|
63
|
+
### Safe File Patterns (stay in Auto-merge tier)
|
|
64
|
+
|
|
65
|
+
- `.gsd-t/contracts/*.md` — contract definitions
|
|
66
|
+
- `.gsd-t/techdebt.md` — debt tracking
|
|
67
|
+
- `docs/*.md` — documentation
|
|
68
|
+
- `examples/**` — example files
|
|
69
|
+
- `*.md` in root (except README.md with structural changes)
|
|
70
|
+
|
|
71
|
+
## Step 5: Report Triage Results
|
|
72
|
+
|
|
73
|
+
Display a summary table:
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
77
|
+
║ Branch Triage Results ║
|
|
78
|
+
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
79
|
+
|
|
80
|
+
AUTO-MERGE
|
|
81
|
+
──────────
|
|
82
|
+
✓ {branch-name} — {commit count} commits, {lines} lines, {description}
|
|
83
|
+
|
|
84
|
+
NEEDS REVIEW
|
|
85
|
+
────────────
|
|
86
|
+
? {branch-name} — {commit count} commits, {lines} lines, {reason for review}
|
|
87
|
+
|
|
88
|
+
SKIPPED
|
|
89
|
+
───────
|
|
90
|
+
✗ {branch-name} — {reason} (conflicts / breaking changes)
|
|
91
|
+
|
|
92
|
+
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Step 6: Merge Safe Branches
|
|
96
|
+
|
|
97
|
+
For each Auto-merge branch:
|
|
98
|
+
1. `git merge origin/{branch} --no-edit`
|
|
99
|
+
2. Verify merge succeeded
|
|
100
|
+
3. Log the merge
|
|
101
|
+
|
|
102
|
+
For each Review branch:
|
|
103
|
+
1. Show the diff summary and reason it needs review
|
|
104
|
+
2. Ask: "Merge {branch}? (yes/no)"
|
|
105
|
+
3. If yes, merge it
|
|
106
|
+
|
|
107
|
+
If ALL branches were skipped (none merged), report why and stop.
|
|
108
|
+
|
|
109
|
+
## Step 7: Version Bump and Publish
|
|
110
|
+
|
|
111
|
+
**If publish gate is OFF** (user declined in Step 1): Skip this step entirely. Report merged branches and stop.
|
|
112
|
+
|
|
113
|
+
After all merges complete:
|
|
114
|
+
|
|
115
|
+
1. **Determine version bump**:
|
|
116
|
+
- If any merged branch adds new commands → bump minor
|
|
117
|
+
- If merged branches are docs/contracts/fixes only → bump patch
|
|
118
|
+
- If any merged branch has breaking changes → bump minor (breaking = major, but those should be in Review tier)
|
|
119
|
+
|
|
120
|
+
2. **Update files**:
|
|
121
|
+
- `package.json` — bump version
|
|
122
|
+
- `.gsd-t/progress.md` — update version + add Decision Log entry summarizing all merged branches
|
|
123
|
+
- `CHANGELOG.md` — add release entry listing what each branch contributed
|
|
124
|
+
|
|
125
|
+
3. **Pre-Commit Gate**: Run the project-specific pre-commit checklist:
|
|
126
|
+
- If any merged branch changed command files → update GSD-T-README.md, README.md, CLAUDE-global template, gsd-t-help
|
|
127
|
+
- If any merged branch changed CLI → verify install/update/status/doctor work
|
|
128
|
+
- If any merged branch changed templates → verify gsd-t-init output
|
|
129
|
+
|
|
130
|
+
4. **Commit**: `git add` changed files and commit:
|
|
131
|
+
```
|
|
132
|
+
chore: version bump to v{version} for merged branch(es)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
5. **Push**: `git push`
|
|
136
|
+
|
|
137
|
+
6. **Publish**: `npm publish --access public`
|
|
138
|
+
|
|
139
|
+
7. **Deploy**: Install globally and propagate:
|
|
140
|
+
```bash
|
|
141
|
+
npm install -g @tekyzinc/gsd-t@{version}
|
|
142
|
+
gsd-t update-all
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## Step 8: Report
|
|
146
|
+
|
|
147
|
+
Display final summary:
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
Triage complete:
|
|
151
|
+
Merged: {N} branches
|
|
152
|
+
Skipped: {N} branches
|
|
153
|
+
Published: v{new-version} (or "Skipped — publish gate off")
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Document Ripple
|
|
157
|
+
|
|
158
|
+
After completing triage-and-merge, check if any of these need updating based on what was merged:
|
|
159
|
+
|
|
160
|
+
1. **`.gsd-t/progress.md`** — Decision Log entry (always)
|
|
161
|
+
2. **`CHANGELOG.md`** — Release notes (always, if publishing)
|
|
162
|
+
3. **`README.md`** — If merged branches changed commands or structure
|
|
163
|
+
4. **`docs/GSD-T-README.md`** — If merged branches changed commands or workflow
|
|
164
|
+
5. **`templates/CLAUDE-global.md`** — If merged branches added commands
|
|
165
|
+
6. **`commands/gsd-t-help.md`** — If merged branches added commands
|
|
166
|
+
|
|
167
|
+
$ARGUMENTS
|
package/commands/gsd-t-verify.md
CHANGED
|
@@ -12,6 +12,19 @@ Read:
|
|
|
12
12
|
5. `docs/requirements.md` — original requirements
|
|
13
13
|
6. All source code
|
|
14
14
|
|
|
15
|
+
## Step 1.5: Spawn QA Agent
|
|
16
|
+
|
|
17
|
+
Spawn the QA teammate to run the full test audit:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Teammate "qa": Read commands/gsd-t-qa.md for your full instructions.
|
|
21
|
+
Phase context: verify. Read .gsd-t/contracts/ for contract definitions.
|
|
22
|
+
Run full test audit — contract tests, acceptance tests, E2E suite.
|
|
23
|
+
Report: comprehensive test results with pass/fail counts and coverage gaps.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
QA failure blocks verification completion.
|
|
27
|
+
|
|
15
28
|
## Step 2: Define Verification Dimensions
|
|
16
29
|
|
|
17
30
|
Standard dimensions (adjust based on project):
|
|
@@ -88,7 +101,12 @@ Teammate assignments:
|
|
|
88
101
|
- Secret/credential handling
|
|
89
102
|
Report: severity-ranked findings.
|
|
90
103
|
|
|
91
|
-
|
|
104
|
+
- Teammate "qa": Read commands/gsd-t-qa.md for your full instructions.
|
|
105
|
+
Phase context: verify. Read .gsd-t/contracts/ for contract definitions.
|
|
106
|
+
Run full test audit — contract tests, acceptance tests, E2E suite.
|
|
107
|
+
Report: comprehensive test results with pass/fail counts and coverage gaps.
|
|
108
|
+
|
|
109
|
+
Lead: Collect all reports (including QA), synthesize, create remediation plan.
|
|
92
110
|
```
|
|
93
111
|
|
|
94
112
|
## Step 4: Compile Verification Report
|
package/commands/gsd-t-wave.md
CHANGED
|
@@ -11,6 +11,10 @@ Read:
|
|
|
11
11
|
|
|
12
12
|
Determine current status and resume from wherever the milestone left off.
|
|
13
13
|
|
|
14
|
+
## Step 1.5: QA Agent Spawning
|
|
15
|
+
|
|
16
|
+
Every phase that produces or validates code will automatically spawn a QA teammate. The QA agent is spawned per-phase (not once for the entire wave) because each phase has different QA responsibilities. Each phase's command file contains its own QA spawn instructions — follow them when executing that phase.
|
|
17
|
+
|
|
14
18
|
## Step 2: Execute Remaining Phases
|
|
15
19
|
|
|
16
20
|
Work through each phase that hasn't been completed:
|
package/docs/GSD-T-README.md
CHANGED
|
@@ -98,6 +98,7 @@ GSD-T reads all state files and tells you exactly where you left off.
|
|
|
98
98
|
| `/user:gsd-t-impact` | Analyze downstream effects | In wave |
|
|
99
99
|
| `/user:gsd-t-execute` | Run tasks (solo or team) | In wave |
|
|
100
100
|
| `/user:gsd-t-test-sync` | Sync tests with code changes | In wave |
|
|
101
|
+
| `/user:gsd-t-qa` | QA agent — test generation, execution, gap reporting | Auto-spawned |
|
|
101
102
|
| `/user:gsd-t-integrate` | Wire domains together | In wave |
|
|
102
103
|
| `/user:gsd-t-verify` | Run quality gates | In wave |
|
|
103
104
|
| `/user:gsd-t-complete-milestone` | Archive + git tag | In wave |
|
|
@@ -114,6 +115,7 @@ GSD-T reads all state files and tells you exactly where you left off.
|
|
|
114
115
|
| `/user:gsd-t-log` | Sync progress Decision Log with recent git activity | Manual |
|
|
115
116
|
| `/user:gsd-t-version-update` | Update GSD-T to latest version | Manual |
|
|
116
117
|
| `/user:gsd-t-version-update-all` | Update GSD-T + all registered projects | Manual |
|
|
118
|
+
| `/user:gsd-t-triage-and-merge` | Auto-review, merge, and publish GitHub branches | Manual |
|
|
117
119
|
|
|
118
120
|
---
|
|
119
121
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Architecture — GSD-T Framework (@tekyzinc/gsd-t)
|
|
2
|
+
|
|
3
|
+
## Last Updated: 2026-02-18
|
|
4
|
+
|
|
5
|
+
## System Overview
|
|
6
|
+
|
|
7
|
+
GSD-T is an npm-distributed methodology framework for Claude Code. It provides slash commands (markdown files), a CLI installer (Node.js), and document templates that together enable contract-driven development with AI assistance.
|
|
8
|
+
|
|
9
|
+
The framework has no runtime — it is consumed entirely by Claude Code's slash command system and the user's shell. The CLI handles installation, updates, and diagnostics. The command files define the workflow methodology that Claude Code follows.
|
|
10
|
+
|
|
11
|
+
## Components
|
|
12
|
+
|
|
13
|
+
### CLI Installer (bin/gsd-t.js)
|
|
14
|
+
- **Purpose**: Install, update, diagnose, and manage GSD-T across projects
|
|
15
|
+
- **Location**: `bin/gsd-t.js`
|
|
16
|
+
- **Dependencies**: Node.js built-ins only (fs, path, os, child_process, https)
|
|
17
|
+
- **Subcommands**: install, update, status, doctor, init, uninstall, update-all, register, changelog
|
|
18
|
+
|
|
19
|
+
### Slash Commands (commands/*.md)
|
|
20
|
+
- **Purpose**: Define the GSD-T methodology as executable workflows for Claude Code
|
|
21
|
+
- **Location**: `commands/`
|
|
22
|
+
- **Count**: 41 (37 GSD-T workflow + 4 utility)
|
|
23
|
+
- **Format**: Pure markdown with step-numbered instructions, team mode blocks, and document ripple sections
|
|
24
|
+
|
|
25
|
+
### Templates (templates/*.md)
|
|
26
|
+
- **Purpose**: Starter files for project initialization
|
|
27
|
+
- **Location**: `templates/`
|
|
28
|
+
- **Count**: 9 (CLAUDE-global, CLAUDE-project, requirements, architecture, workflows, infrastructure, progress, backlog, backlog-settings)
|
|
29
|
+
- **Tokens**: `{Project Name}`, `{Date}`, `{app}` replaced during init
|
|
30
|
+
|
|
31
|
+
### Heartbeat System (scripts/gsd-t-heartbeat.js)
|
|
32
|
+
- **Purpose**: Real-time event logging via Claude Code hooks
|
|
33
|
+
- **Location**: `scripts/gsd-t-heartbeat.js`
|
|
34
|
+
- **Output**: `.gsd-t/heartbeat-{session}.jsonl` files
|
|
35
|
+
|
|
36
|
+
### Examples (examples/)
|
|
37
|
+
- **Purpose**: Reference project structure and settings
|
|
38
|
+
- **Location**: `examples/`
|
|
39
|
+
- **Contents**: settings.json, .gsd-t/ with sample contracts and domain structure
|
|
40
|
+
|
|
41
|
+
## Data Models
|
|
42
|
+
|
|
43
|
+
### Progress State (.gsd-t/progress.md)
|
|
44
|
+
| Field | Type | Notes |
|
|
45
|
+
|-------|------|-------|
|
|
46
|
+
| Project | string | Name from CLAUDE.md |
|
|
47
|
+
| Version | semver | Major.Minor.Patch |
|
|
48
|
+
| Status | enum | INITIALIZED, IN_PROGRESS, READY |
|
|
49
|
+
| Current Milestone | string | Active milestone name or "None" |
|
|
50
|
+
| Decision Log | entries | Timestamped log of all changes |
|
|
51
|
+
|
|
52
|
+
### Backlog (.gsd-t/backlog.md)
|
|
53
|
+
| Field | Type | Notes |
|
|
54
|
+
|-------|------|-------|
|
|
55
|
+
| ID | Bn | Sequential backlog item ID |
|
|
56
|
+
| Type | enum | bug, feature, improvement, ux, architecture |
|
|
57
|
+
| App | string | Target application |
|
|
58
|
+
| Category | string | Domain/module category |
|
|
59
|
+
| Description | string | Item summary |
|
|
60
|
+
|
|
61
|
+
### Contracts (.gsd-t/contracts/)
|
|
62
|
+
| Contract | Purpose |
|
|
63
|
+
|----------|---------|
|
|
64
|
+
| command-interface-contract.md | Slash command file format and structure |
|
|
65
|
+
| file-format-contract.md | File naming and organization rules |
|
|
66
|
+
| integration-points.md | How components connect |
|
|
67
|
+
| backlog-file-formats.md | Backlog markdown structure |
|
|
68
|
+
| domain-structure.md | Domain directory layout |
|
|
69
|
+
| pre-commit-gate.md | Commit checklist contract |
|
|
70
|
+
| progress-file-format.md | Progress.md structure |
|
|
71
|
+
| wave-phase-sequence.md | Phase ordering rules |
|
|
72
|
+
|
|
73
|
+
## Design Decisions
|
|
74
|
+
|
|
75
|
+
| Date | Decision | Rationale | Alternatives Considered |
|
|
76
|
+
|------|----------|-----------|------------------------|
|
|
77
|
+
| 2026-02-07 | Zero external dependencies for CLI | Simplicity, no install failures, no supply chain risk | Using commander.js, yargs |
|
|
78
|
+
| 2026-02-07 | Markdown-only command files | Claude Code native format, no build step, human-readable | YAML frontmatter, JSON config |
|
|
79
|
+
| 2026-02-09 | Semantic versioning with git tags | Standard npm practice, enables update checks | CalVer, build numbers |
|
|
80
|
+
| 2026-02-12 | Heartbeat via Claude Code hooks | Non-invasive monitoring, no command file changes needed | Polling, WebSocket |
|
|
81
|
+
| 2026-02-13 | Semantic router over keyword matching | Better intent detection, fewer misroutes | Regex patterns, ML classifier |
|
|
82
|
+
| 2026-02-16 | Mandatory Playwright for all projects | Consistent E2E testing, no "we'll add tests later" | Optional testing, Jest-only |
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Infrastructure — GSD-T Framework (@tekyzinc/gsd-t)
|
|
2
|
+
|
|
3
|
+
## Last Updated: 2026-02-18
|
|
4
|
+
|
|
5
|
+
## Quick Reference
|
|
6
|
+
|
|
7
|
+
| Task | Command |
|
|
8
|
+
|------|---------|
|
|
9
|
+
| Install GSD-T | `npx @tekyzinc/gsd-t install` |
|
|
10
|
+
| Check status | `npx @tekyzinc/gsd-t status` |
|
|
11
|
+
| Update GSD-T | `npx @tekyzinc/gsd-t update` |
|
|
12
|
+
| Update all projects | `npx @tekyzinc/gsd-t update-all` |
|
|
13
|
+
| Diagnose issues | `npx @tekyzinc/gsd-t doctor` |
|
|
14
|
+
| View changelog | `npx @tekyzinc/gsd-t changelog` |
|
|
15
|
+
| Publish to npm | `npm publish` |
|
|
16
|
+
|
|
17
|
+
## Local Development
|
|
18
|
+
|
|
19
|
+
### Setup
|
|
20
|
+
```bash
|
|
21
|
+
# Clone and install
|
|
22
|
+
git clone https://github.com/Tekyz-Inc/get-stuff-done-teams.git
|
|
23
|
+
cd get-stuff-done-teams
|
|
24
|
+
|
|
25
|
+
# No npm install needed — zero dependencies
|
|
26
|
+
# Test the CLI directly:
|
|
27
|
+
node bin/gsd-t.js status
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Testing
|
|
31
|
+
```bash
|
|
32
|
+
# Test CLI subcommands
|
|
33
|
+
node bin/gsd-t.js install
|
|
34
|
+
node bin/gsd-t.js status
|
|
35
|
+
node bin/gsd-t.js doctor
|
|
36
|
+
node bin/gsd-t.js init test-project
|
|
37
|
+
|
|
38
|
+
# Validate command files exist
|
|
39
|
+
ls commands/*.md | wc -l # Should be 41
|
|
40
|
+
ls templates/*.md | wc -l # Should be 9
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Distribution
|
|
44
|
+
|
|
45
|
+
### npm Package
|
|
46
|
+
- **Registry**: https://www.npmjs.com/package/@tekyzinc/gsd-t
|
|
47
|
+
- **Publish**: `npm publish` (requires npm login with Tekyz account)
|
|
48
|
+
- **Version**: Managed in `package.json`, synced to `.gsd-t/progress.md`
|
|
49
|
+
|
|
50
|
+
### Installed Locations
|
|
51
|
+
| What | Where |
|
|
52
|
+
|------|-------|
|
|
53
|
+
| Slash commands | `~/.claude/commands/` |
|
|
54
|
+
| Global config | `~/.claude/CLAUDE.md` |
|
|
55
|
+
| Heartbeat hook | `~/.claude/settings.json` (hooks section) |
|
|
56
|
+
| Version cache | `~/.claude/.gsd-t-version` |
|
|
57
|
+
| Update cache | `~/.claude/.gsd-t-update-cache` |
|
|
58
|
+
| Project registry | `~/.claude/.gsd-t-projects` |
|
|
59
|
+
|
|
60
|
+
## Repository Structure
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
get-stuff-done-teams/
|
|
64
|
+
├── bin/gsd-t.js — CLI (zero dependencies)
|
|
65
|
+
├── commands/ — 41 slash command files
|
|
66
|
+
├── templates/ — 9 document templates
|
|
67
|
+
├── scripts/ — Heartbeat hook script
|
|
68
|
+
├── examples/ — Reference project structure
|
|
69
|
+
├── docs/ — Methodology + living docs
|
|
70
|
+
├── .gsd-t/ — GSD-T state (self-managed)
|
|
71
|
+
└── package.json — npm package config
|
|
72
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Requirements — GSD-T Framework (@tekyzinc/gsd-t)
|
|
2
|
+
|
|
3
|
+
## Last Updated: 2026-02-18
|
|
4
|
+
|
|
5
|
+
## Functional Requirements
|
|
6
|
+
|
|
7
|
+
| ID | Requirement | Priority | Status | Tests |
|
|
8
|
+
|----|-------------|----------|--------|-------|
|
|
9
|
+
| REQ-001 | CLI installer with install, update, status, doctor, init, uninstall, update-all, register, changelog subcommands | P1 | complete | manual CLI testing |
|
|
10
|
+
| REQ-002 | 37 GSD-T workflow slash commands for Claude Code | P1 | complete | validated by use |
|
|
11
|
+
| REQ-003 | 4 utility commands (branch, checkin, Claude-md, gsd smart router) | P1 | complete | validated by use |
|
|
12
|
+
| REQ-004 | Backlog management system (7 commands: add, list, move, edit, remove, promote, settings) | P1 | complete | validated by use |
|
|
13
|
+
| REQ-005 | Contract-driven development with domain partitioning | P1 | complete | validated by use |
|
|
14
|
+
| REQ-006 | Wave orchestration (full cycle: partition → plan → execute → test-sync → integrate → verify) | P1 | complete | validated by use |
|
|
15
|
+
| REQ-007 | Heartbeat system via Claude Code hooks | P2 | complete | hook scripts installed |
|
|
16
|
+
| REQ-008 | Automatic update check against npm registry | P2 | complete | CLI + slash command |
|
|
17
|
+
| REQ-009 | Document templates for living docs (9 templates) | P1 | complete | used by gsd-t-init |
|
|
18
|
+
| REQ-010 | Smart router — natural language intent → command routing | P2 | complete | validated by use |
|
|
19
|
+
|
|
20
|
+
## Technical Requirements
|
|
21
|
+
|
|
22
|
+
| ID | Requirement | Priority | Status |
|
|
23
|
+
|----|-------------|----------|--------|
|
|
24
|
+
| TECH-001 | Zero external npm dependencies | P1 | complete |
|
|
25
|
+
| TECH-002 | Node.js >= 16 compatibility | P1 | complete |
|
|
26
|
+
| TECH-003 | Cross-platform support (macOS, Linux, Windows) | P1 | complete |
|
|
27
|
+
| TECH-004 | Semantic versioning with git tags | P1 | complete |
|
|
28
|
+
| TECH-005 | Pre-Commit Gate enforced on every commit | P1 | complete |
|
|
29
|
+
|
|
30
|
+
## Non-Functional Requirements
|
|
31
|
+
|
|
32
|
+
| ID | Requirement | Metric | Status |
|
|
33
|
+
|----|-------------|--------|--------|
|
|
34
|
+
| NFR-001 | CLI install completes in < 5 seconds | < 5s | complete |
|
|
35
|
+
| NFR-002 | No runtime crashes on missing files | graceful fallback | complete |
|
|
36
|
+
| NFR-003 | Command files are pure markdown (no frontmatter) | 100% compliance | complete |
|
|
37
|
+
|
|
38
|
+
## Test Coverage
|
|
39
|
+
|
|
40
|
+
| Requirement | Test File | Test Name | Status |
|
|
41
|
+
|-------------|-----------|-----------|--------|
|
|
42
|
+
| REQ-001 | manual | CLI subcommand testing | passing |
|
|
43
|
+
| REQ-002–010 | manual | Workflow validation by use | passing |
|