@tekyzinc/gsd-t 2.39.12 → 2.39.13
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/commands/gsd-t-complete-milestone.md +20 -0
- package/commands/gsd-t-debug.md +12 -0
- package/commands/gsd-t-execute.md +12 -0
- package/commands/gsd-t-feature.md +18 -0
- package/commands/gsd-t-gap-analysis.md +17 -0
- package/commands/gsd-t-partition.md +17 -0
- package/commands/gsd-t-quick.md +12 -0
- package/commands/gsd-t-scan.md +44 -0
- package/package.json +1 -1
|
@@ -213,6 +213,26 @@ If `README.md` exists, update it to reflect the completed milestone:
|
|
|
213
213
|
|
|
214
214
|
If `README.md` doesn't exist, create one with project name, description, version, tech stack, setup instructions, and link to `docs/`.
|
|
215
215
|
|
|
216
|
+
## Step 8.5: Scan Doc Milestone Checkpoint
|
|
217
|
+
|
|
218
|
+
Before tagging, ensure scan docs reflect the final state of the codebase after all milestone work. This is the full-refresh counterpart to the micro-updates done during execute/quick/debug.
|
|
219
|
+
|
|
220
|
+
If `.gsd-t/scan/` exists (a prior scan has been run):
|
|
221
|
+
1. Check `.gsd-t/scan/.cache.json` for staleness — count commits since last scan
|
|
222
|
+
2. If **any dimension is stale** (>0 commits since scan):
|
|
223
|
+
- Log: "Running milestone scan checkpoint — refreshing all stale scan dimensions..."
|
|
224
|
+
- Re-run all stale dimensions using scan teammates (same team structure as `gsd-t-scan` Step 2):
|
|
225
|
+
- Stale `architecture.md` → architecture teammate (model: haiku)
|
|
226
|
+
- Stale `quality.md` → quality teammate (model: sonnet)
|
|
227
|
+
- Stale `security.md` → security teammate (model: sonnet)
|
|
228
|
+
- Stale `business-rules.md` → business-rules teammate (model: haiku)
|
|
229
|
+
- Stale `contract-drift.md` → contracts teammate (model: haiku)
|
|
230
|
+
- Update `.gsd-t/scan/.cache.json` after refresh
|
|
231
|
+
- Update `.gsd-t/techdebt.md` — mark any items resolved during this milestone as `[RESOLVED]`
|
|
232
|
+
3. If all dimensions are fresh → skip with log: "Scan docs are fresh — no checkpoint refresh needed"
|
|
233
|
+
|
|
234
|
+
If `.gsd-t/scan/` doesn't exist → skip (no scan data to maintain).
|
|
235
|
+
|
|
216
236
|
## Step 9: Document Ripple
|
|
217
237
|
|
|
218
238
|
Before creating the git tag, verify all documentation is up to date:
|
package/commands/gsd-t-debug.md
CHANGED
|
@@ -262,6 +262,18 @@ After fixing, assess what documentation was affected by the change and update AL
|
|
|
262
262
|
9. **Domain `tasks.md`** — If the bug was in an active milestone, update task status or add a remediation task
|
|
263
263
|
10. **`CLAUDE.md`** — Did the fix establish a new convention or pattern that future work should follow? Add it
|
|
264
264
|
|
|
265
|
+
### Scan Doc Micro-Update (if `.gsd-t/scan/` exists):
|
|
266
|
+
Patch structural metadata in scan docs so they stay fresh between full scans. Near-zero cost — no LLM re-analysis.
|
|
267
|
+
|
|
268
|
+
For each scan doc that exists, apply only the relevant patches:
|
|
269
|
+
- **`.gsd-t/scan/architecture.md`** — Update file/directory counts if the fix added/removed files
|
|
270
|
+
- **`.gsd-t/scan/quality.md`** — Mark resolved TODOs/FIXMEs, update test counts if tests were added
|
|
271
|
+
- **`.gsd-t/scan/security.md`** — If the bug was a security issue, mark the finding `[RESOLVED]`
|
|
272
|
+
- **`.gsd-t/scan/business-rules.md`** — If the fix changed validation/auth/workflow logic, update the rule
|
|
273
|
+
- **`.gsd-t/scan/contract-drift.md`** — If contracts were updated as part of the fix, mark resolved drift items
|
|
274
|
+
|
|
275
|
+
Skip scan docs not affected by this fix. Skip analytical sections — those require a full scan.
|
|
276
|
+
|
|
265
277
|
### Skip what's not affected — don't update docs for the sake of updating them.
|
|
266
278
|
|
|
267
279
|
## Step 5: Test Verification (run tests confirming fix)
|
|
@@ -259,6 +259,18 @@ Execute modifies source code, so the Pre-Commit Gate (referenced in Step 9) cove
|
|
|
259
259
|
4. **`docs/architecture.md`** — Did a task add/change a component or data flow? Update it
|
|
260
260
|
5. **`.gsd-t/techdebt.md`** — Did a task resolve a debt item? Mark it done. Did it reveal new debt? Add it
|
|
261
261
|
|
|
262
|
+
### Scan Doc Micro-Update (if `.gsd-t/scan/` exists):
|
|
263
|
+
After all tasks complete, patch structural metadata in scan docs so they stay fresh between full scans. This is near-zero cost — no LLM re-analysis, just updating counts and lists from code.
|
|
264
|
+
|
|
265
|
+
For each scan doc that exists, apply only the relevant patches:
|
|
266
|
+
- **`.gsd-t/scan/architecture.md`** — Update file/directory counts, add new files/modules created during execution
|
|
267
|
+
- **`.gsd-t/scan/quality.md`** — Mark resolved TODOs/FIXMEs, update test counts (run `grep -rc "test\|it\|describe" tests/` or equivalent), append new files to Consumer Surfaces table if applicable
|
|
268
|
+
- **`.gsd-t/scan/security.md`** — If a security finding was fixed during execution, mark it `[RESOLVED]`
|
|
269
|
+
- **`.gsd-t/scan/business-rules.md`** — Append any new validation/auth/workflow rules added during execution
|
|
270
|
+
- **`.gsd-t/scan/contract-drift.md`** — If contracts were updated, mark resolved drift items
|
|
271
|
+
|
|
272
|
+
Skip any scan doc that wasn't affected by the executed tasks. Skip analytical sections (assessments, recommendations) — those require a full scan to update.
|
|
273
|
+
|
|
262
274
|
$ARGUMENTS
|
|
263
275
|
|
|
264
276
|
## Auto-Clear
|
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
|
|
3
3
|
You are the lead agent planning a significant new feature for an existing codebase. Unlike `/user:gsd-t-project` (greenfield), this command respects and builds on what already exists — existing patterns, schema, auth, conventions, and contracts.
|
|
4
4
|
|
|
5
|
+
## Step 0.5: Scan Freshness Auto-Refresh
|
|
6
|
+
|
|
7
|
+
Before reading scan data for impact analysis, check if scan docs are stale and auto-refresh if needed. This ensures feature planning is based on current code — no warnings, no user involvement.
|
|
8
|
+
|
|
9
|
+
If `.gsd-t/scan/.cache.json` exists:
|
|
10
|
+
1. Read the cache and check `scannedAt` for each dimension
|
|
11
|
+
2. Count commits since the scan: `git rev-list --count --after="{scannedAt}" HEAD`
|
|
12
|
+
3. If **>10 commits since scan** OR **scan is older than 14 days**:
|
|
13
|
+
- Log: "Auto-refreshing scan docs (stale by {N} commits / {N} days)..."
|
|
14
|
+
- Re-run only the stale dimensions by spawning the relevant scan teammates:
|
|
15
|
+
- If `quality.md` stale → spawn quality teammate (model: sonnet)
|
|
16
|
+
- If `architecture.md` stale → spawn architecture teammate (model: haiku)
|
|
17
|
+
- If `security.md` stale → spawn security teammate (model: sonnet)
|
|
18
|
+
- Update `.gsd-t/scan/.cache.json` after refresh
|
|
19
|
+
4. If fresh → proceed silently
|
|
20
|
+
|
|
21
|
+
If `.gsd-t/scan/` doesn't exist at all → skip (no scan data to refresh).
|
|
22
|
+
|
|
5
23
|
## Step 1: Understand What Exists
|
|
6
24
|
|
|
7
25
|
Read everything:
|
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
You are performing a gap analysis between a provided specification and the existing codebase. The user pastes requirements or a spec, and you systematically identify what's done, what's partial, what's wrong, and what's missing.
|
|
4
4
|
|
|
5
|
+
## Step 0.5: Scan Freshness Auto-Refresh
|
|
6
|
+
|
|
7
|
+
Before reading scan data for gap classification, check if scan docs are stale and auto-refresh if needed. This ensures gap analysis is based on current code — no warnings, no user involvement.
|
|
8
|
+
|
|
9
|
+
If `.gsd-t/scan/.cache.json` exists:
|
|
10
|
+
1. Read the cache and check `scannedAt` for each dimension
|
|
11
|
+
2. Count commits since the scan: `git rev-list --count --after="{scannedAt}" HEAD`
|
|
12
|
+
3. If **>10 commits since scan** OR **scan is older than 14 days**:
|
|
13
|
+
- Log: "Auto-refreshing scan docs (stale by {N} commits / {N} days)..."
|
|
14
|
+
- Re-run only the stale dimensions by spawning the relevant scan teammates:
|
|
15
|
+
- If `architecture.md` stale → spawn architecture teammate (model: haiku)
|
|
16
|
+
- If `quality.md` stale → spawn quality teammate (model: sonnet)
|
|
17
|
+
- Update `.gsd-t/scan/.cache.json` after refresh
|
|
18
|
+
4. If fresh → proceed silently
|
|
19
|
+
|
|
20
|
+
If `.gsd-t/scan/` doesn't exist at all → skip (no scan data to refresh).
|
|
21
|
+
|
|
5
22
|
## Step 1: Load Context
|
|
6
23
|
|
|
7
24
|
Read (if they exist):
|
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
You are the lead agent in a contract-driven development workflow. Your job is to decompose the current milestone into independent domains with explicit boundaries and contracts.
|
|
4
4
|
|
|
5
|
+
## Step 0.5: Scan Freshness Auto-Refresh
|
|
6
|
+
|
|
7
|
+
Before reading scan data, check if scan docs are stale and auto-refresh if needed. This ensures partition decisions are based on current code — no warnings, no user involvement.
|
|
8
|
+
|
|
9
|
+
If `.gsd-t/scan/.cache.json` exists:
|
|
10
|
+
1. Read the cache and check `dimensions.quality.scannedAt` and `dimensions.architecture.scannedAt`
|
|
11
|
+
2. Count commits since the scan: `git rev-list --count --after="{scannedAt}" HEAD`
|
|
12
|
+
3. If **>10 commits since scan** OR **scan is older than 14 days**:
|
|
13
|
+
- Log: "Auto-refreshing scan docs (stale by {N} commits / {N} days)..."
|
|
14
|
+
- Re-run only the stale dimensions by spawning the relevant scan teammates:
|
|
15
|
+
- If `quality.md` stale → spawn quality teammate (model: sonnet)
|
|
16
|
+
- If `architecture.md` stale → spawn architecture teammate (model: haiku)
|
|
17
|
+
- Update `.gsd-t/scan/.cache.json` after refresh
|
|
18
|
+
4. If fresh → proceed silently
|
|
19
|
+
|
|
20
|
+
If `.gsd-t/scan/` doesn't exist at all → skip (no scan data to refresh).
|
|
21
|
+
|
|
5
22
|
## Step 1: Understand the Project
|
|
6
23
|
|
|
7
24
|
Read these files in order:
|
package/commands/gsd-t-quick.md
CHANGED
|
@@ -100,6 +100,18 @@ If `.gsd-t/progress.md` exists, assess what documentation was affected and updat
|
|
|
100
100
|
8. **`.gsd-t/techdebt.md`** — Did this task resolve a debt item? Mark it done. Did it reveal new debt? Add it
|
|
101
101
|
9. **`CLAUDE.md`** — Did this task establish a convention future work should follow? Add it
|
|
102
102
|
|
|
103
|
+
### Scan Doc Micro-Update (if `.gsd-t/scan/` exists):
|
|
104
|
+
Patch structural metadata in scan docs so they stay fresh between full scans. Near-zero cost — no LLM re-analysis.
|
|
105
|
+
|
|
106
|
+
For each scan doc that exists, apply only the relevant patches:
|
|
107
|
+
- **`.gsd-t/scan/architecture.md`** — Update file/directory counts, add new files/modules created
|
|
108
|
+
- **`.gsd-t/scan/quality.md`** — Mark resolved TODOs/FIXMEs, update test counts, append new files to Consumer Surfaces if applicable
|
|
109
|
+
- **`.gsd-t/scan/security.md`** — If a security finding was fixed, mark it `[RESOLVED]`
|
|
110
|
+
- **`.gsd-t/scan/business-rules.md`** — Append any new validation/auth/workflow rules added
|
|
111
|
+
- **`.gsd-t/scan/contract-drift.md`** — If contracts were updated, mark resolved drift items
|
|
112
|
+
|
|
113
|
+
Skip scan docs not affected by this task. Skip analytical sections — those require a full scan.
|
|
114
|
+
|
|
103
115
|
### Skip what's not affected — most quick tasks will only touch 1-2 of these.
|
|
104
116
|
|
|
105
117
|
## Step 5: Test & Verify (MANDATORY)
|
package/commands/gsd-t-scan.md
CHANGED
|
@@ -497,6 +497,50 @@ After updating living documents, verify nothing was broken:
|
|
|
497
497
|
2. **Verify passing**: If any tests fail that were passing before the scan began, investigate and fix
|
|
498
498
|
3. **Log test baseline**: Record the current test state in `.gsd-t/scan/test-baseline.md` — this gives future milestones a starting point
|
|
499
499
|
|
|
500
|
+
## Step 6.5: Generate Scan Freshness Cache
|
|
501
|
+
|
|
502
|
+
After the scan completes and living docs are updated, generate a hash cache so downstream commands can detect staleness without re-scanning.
|
|
503
|
+
|
|
504
|
+
Create `.gsd-t/scan/.cache.json` with this structure:
|
|
505
|
+
|
|
506
|
+
```bash
|
|
507
|
+
node -e "
|
|
508
|
+
const fs = require('fs');
|
|
509
|
+
const path = require('path');
|
|
510
|
+
const crypto = require('crypto');
|
|
511
|
+
|
|
512
|
+
const root = process.argv[1];
|
|
513
|
+
const scanDir = path.join(root, '.gsd-t', 'scan');
|
|
514
|
+
|
|
515
|
+
// Hash all source files that affect each scan dimension
|
|
516
|
+
const dimensions = {
|
|
517
|
+
architecture: ['**/*.js', '**/*.ts', '**/*.py', '**/*.json', '**/package.json', '**/tsconfig.json'],
|
|
518
|
+
quality: ['**/*.js', '**/*.ts', '**/*.py', '**/*.test.*', '**/*.spec.*'],
|
|
519
|
+
security: ['**/*.js', '**/*.ts', '**/*.py', '**/*.env*', '**/package.json', '**/package-lock.json'],
|
|
520
|
+
'business-rules': ['**/*.js', '**/*.ts', '**/*.py'],
|
|
521
|
+
'contract-drift': ['.gsd-t/contracts/**']
|
|
522
|
+
};
|
|
523
|
+
|
|
524
|
+
// For each dimension, hash the scan doc itself to track its version
|
|
525
|
+
const cache = { generated: new Date().toISOString(), dimensions: {} };
|
|
526
|
+
for (const [dim, _patterns] of Object.entries(dimensions)) {
|
|
527
|
+
const scanFile = path.join(scanDir, dim + '.md');
|
|
528
|
+
if (fs.existsSync(scanFile)) {
|
|
529
|
+
const content = fs.readFileSync(scanFile, 'utf8');
|
|
530
|
+
cache.dimensions[dim] = {
|
|
531
|
+
scanHash: crypto.createHash('md5').update(content).digest('hex'),
|
|
532
|
+
scannedAt: new Date().toISOString()
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
fs.writeFileSync(path.join(scanDir, '.cache.json'), JSON.stringify(cache, null, 2));
|
|
538
|
+
console.log('Scan cache generated:', Object.keys(cache.dimensions).length, 'dimensions cached');
|
|
539
|
+
" "$PROJECT_ROOT"
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
This cache enables downstream commands (`partition`, `feature`, `gap-analysis`) to check scan freshness and auto-refresh stale dimensions before consuming scan data.
|
|
543
|
+
|
|
500
544
|
## Step 7: Update Project State
|
|
501
545
|
|
|
502
546
|
If `.gsd-t/progress.md` exists:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tekyzinc/gsd-t",
|
|
3
|
-
"version": "2.39.
|
|
3
|
+
"version": "2.39.13",
|
|
4
4
|
"description": "GSD-T: Contract-Driven Development for Claude Code — 49 slash commands with graph-powered code analysis, real-time agent dashboard, execution intelligence, backlog management, impact analysis, test sync, milestone archival, and PRD generation",
|
|
5
5
|
"author": "Tekyz, Inc.",
|
|
6
6
|
"license": "MIT",
|