@tekyzinc/gsd-t 3.12.12 → 3.12.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/CHANGELOG.md +73 -26
- package/README.md +76 -76
- package/bin/design-orchestrator.js +1 -1
- package/bin/gsd-t-unattended.cjs +1 -1
- package/bin/gsd-t-unattended.js +1 -1
- package/bin/gsd-t.js +82 -10
- package/commands/gsd-t-backlog-promote.md +6 -6
- package/commands/gsd-t-complete-milestone.md +7 -7
- package/commands/gsd-t-design-audit.md +3 -3
- package/commands/gsd-t-design-build.md +1 -1
- package/commands/gsd-t-design-decompose.md +4 -4
- package/commands/gsd-t-execute.md +1 -1
- package/commands/gsd-t-feature.md +3 -3
- package/commands/gsd-t-gap-analysis.md +3 -3
- package/commands/gsd-t-health.md +3 -3
- package/commands/gsd-t-help.md +10 -10
- package/commands/gsd-t-impact.md +3 -3
- package/commands/gsd-t-init-scan-setup.md +5 -5
- package/commands/gsd-t-init.md +4 -4
- package/commands/gsd-t-log.md +1 -1
- package/commands/gsd-t-milestone.md +2 -2
- package/commands/gsd-t-pause.md +2 -2
- package/commands/gsd-t-prd.md +2 -2
- package/commands/gsd-t-project.md +1 -1
- package/commands/gsd-t-resume.md +4 -4
- package/commands/gsd-t-scan.md +3 -3
- package/commands/gsd-t-setup.md +2 -2
- package/commands/gsd-t-test-sync.md +1 -1
- package/commands/gsd-t-unattended-watch.md +5 -5
- package/commands/gsd-t-unattended.md +9 -9
- package/commands/gsd-t-wave.md +4 -4
- package/commands/gsd.md +17 -17
- package/docs/GSD-T-README.md +68 -68
- package/docs/architecture.md +8 -8
- package/docs/context-budget-recovery-plan.md +2 -2
- package/docs/infrastructure.md +7 -7
- package/docs/methodology.md +1 -1
- package/docs/neo4j-setup.md +2 -2
- package/docs/prd-gsd2-hybrid.md +1 -1
- package/docs/prd-harness-evolution.md +1 -1
- package/docs/requirements.md +2 -2
- package/docs/unattended-config.md +1 -1
- package/docs/unattended-windows-caveats.md +1 -1
- package/docs/workflows.md +1 -1
- package/package.json +1 -1
- package/scripts/context-meter/threshold.test.js +2 -2
- package/scripts/gsd-t-auto-route.js +1 -1
- package/scripts/gsd-t-context-meter.e2e.test.js +1 -1
- package/scripts/gsd-t-context-meter.test.js +1 -1
- package/scripts/gsd-t-update-check.js +1 -1
- package/templates/CLAUDE-global.md +18 -163
- package/templates/stacks/_markdown.md +32 -0
- package/templates/stacks/design-to-code.md +1 -1
package/bin/gsd-t.js
CHANGED
|
@@ -1294,9 +1294,9 @@ function showInstallSummary(gsdtCount, utilCount) {
|
|
|
1294
1294
|
log(`${BOLD}Quick Start:${RESET}`);
|
|
1295
1295
|
log(` ${DIM}$${RESET} cd your-project`);
|
|
1296
1296
|
log(` ${DIM}$${RESET} claude`);
|
|
1297
|
-
log(` ${DIM}>${RESET} /
|
|
1298
|
-
log(` ${DIM}>${RESET} /
|
|
1299
|
-
log(` ${DIM}>${RESET} /
|
|
1297
|
+
log(` ${DIM}>${RESET} /gsd-t-init my-project`);
|
|
1298
|
+
log(` ${DIM}>${RESET} /gsd-t-milestone "First Feature"`);
|
|
1299
|
+
log(` ${DIM}>${RESET} /gsd-t-wave`);
|
|
1300
1300
|
log("");
|
|
1301
1301
|
log(`${BOLD}Other commands:${RESET}`);
|
|
1302
1302
|
log(` ${DIM}$${RESET} npx @tekyzinc/gsd-t status ${DIM}— check installation${RESET}`);
|
|
@@ -1344,7 +1344,7 @@ function initClaudeMd(projectDir, projectName, today) {
|
|
|
1344
1344
|
info("CLAUDE.md already contains GSD-T section — skipping");
|
|
1345
1345
|
} else {
|
|
1346
1346
|
warn("CLAUDE.md exists but doesn't reference GSD-T");
|
|
1347
|
-
info("Run /
|
|
1347
|
+
info("Run /gsd-t-init inside Claude Code to add GSD-T section");
|
|
1348
1348
|
}
|
|
1349
1349
|
} else { throw e; }
|
|
1350
1350
|
}
|
|
@@ -1513,8 +1513,8 @@ function showInitTree(projectDir) {
|
|
|
1513
1513
|
log(`${BOLD}Next steps:${RESET}`);
|
|
1514
1514
|
log(` 1. Edit CLAUDE.md — add project overview and tech stack`);
|
|
1515
1515
|
log(` 2. Start Claude Code: ${DIM}claude${RESET}`);
|
|
1516
|
-
log(` 3. Run: ${DIM}/
|
|
1517
|
-
log(` Or: ${DIM}/
|
|
1516
|
+
log(` 3. Run: ${DIM}/gsd-t-populate${RESET} ${DIM}(if existing codebase)${RESET}`);
|
|
1517
|
+
log(` Or: ${DIM}/gsd-t-project${RESET} ${DIM}(if new project)${RESET}`);
|
|
1518
1518
|
log("");
|
|
1519
1519
|
}
|
|
1520
1520
|
|
|
@@ -1687,7 +1687,7 @@ function showStatusProject() {
|
|
|
1687
1687
|
}
|
|
1688
1688
|
} else if (hasClaudeMd) {
|
|
1689
1689
|
info("CLAUDE.md found but no .gsd-t/ directory");
|
|
1690
|
-
info("Run /
|
|
1690
|
+
info("Run /gsd-t-init inside Claude Code to set up");
|
|
1691
1691
|
} else {
|
|
1692
1692
|
info("Not in a GSD-T project directory");
|
|
1693
1693
|
info(`Run 'npx @tekyzinc/gsd-t init' to set up this directory`);
|
|
@@ -1945,6 +1945,19 @@ function exportUniversalRulesForNpm() {
|
|
|
1945
1945
|
}
|
|
1946
1946
|
|
|
1947
1947
|
async function doUpdateAll() {
|
|
1948
|
+
// Step 1: Upgrade the globally-installed npm package FIRST. Without this,
|
|
1949
|
+
// `update-all` would only propagate command files — but the global `gsd-t`
|
|
1950
|
+
// binary itself could stay pinned to an older version (e.g., user stuck
|
|
1951
|
+
// on v3.11.11 while npm registry has v3.12.12). See CHANGELOG v3.12.13.
|
|
1952
|
+
// Guard with an env flag to prevent re-exec loops.
|
|
1953
|
+
if (!process.env.GSDT_POST_UPGRADE) {
|
|
1954
|
+
const upgraded = await upgradeGlobalBinary();
|
|
1955
|
+
if (upgraded.reexec) {
|
|
1956
|
+
reexecUpdateAll();
|
|
1957
|
+
return;
|
|
1958
|
+
}
|
|
1959
|
+
}
|
|
1960
|
+
|
|
1948
1961
|
await updateGlobalCommands();
|
|
1949
1962
|
heading("Updating registered projects...");
|
|
1950
1963
|
log("");
|
|
@@ -1969,6 +1982,65 @@ async function doUpdateAll() {
|
|
|
1969
1982
|
showUpdateAllSummary(projects.length, counts, playwrightMissing, swaggerMissing, syncCount);
|
|
1970
1983
|
}
|
|
1971
1984
|
|
|
1985
|
+
// Upgrade the globally-installed @tekyzinc/gsd-t to @latest. Returns
|
|
1986
|
+
// { upgraded: bool, reexec: bool, error?: string }.
|
|
1987
|
+
// - reexec=true when the on-disk version after `npm install -g` is newer than
|
|
1988
|
+
// the currently-running PKG_VERSION, meaning we need to hand off to the
|
|
1989
|
+
// freshly-installed binary so the new code drives propagation.
|
|
1990
|
+
// - reexec=false when already at latest, or when the install failed (we
|
|
1991
|
+
// continue with the current binary and still propagate command files).
|
|
1992
|
+
async function upgradeGlobalBinary() {
|
|
1993
|
+
heading("Upgrading global @tekyzinc/gsd-t to latest...");
|
|
1994
|
+
try {
|
|
1995
|
+
execFileSync("npm", ["install", "-g", "@tekyzinc/gsd-t@latest"], {
|
|
1996
|
+
stdio: "inherit",
|
|
1997
|
+
env: process.env,
|
|
1998
|
+
});
|
|
1999
|
+
} catch (e) {
|
|
2000
|
+
warn(`Global npm install failed: ${e.message || e}`);
|
|
2001
|
+
info("Continuing with current binary — command files will still be propagated.");
|
|
2002
|
+
return { upgraded: false, reexec: false, error: String(e.message || e) };
|
|
2003
|
+
}
|
|
2004
|
+
|
|
2005
|
+
// Read the freshly-installed global package's version. If it's newer than
|
|
2006
|
+
// the currently-running process, signal a re-exec.
|
|
2007
|
+
let newVersion = null;
|
|
2008
|
+
try {
|
|
2009
|
+
const prefix = execFileSync("npm", ["prefix", "-g"], { encoding: "utf8" }).trim();
|
|
2010
|
+
const globalPkgJson = path.join(prefix, "lib", "node_modules", "@tekyzinc", "gsd-t", "package.json");
|
|
2011
|
+
if (fs.existsSync(globalPkgJson)) {
|
|
2012
|
+
newVersion = JSON.parse(fs.readFileSync(globalPkgJson, "utf8")).version;
|
|
2013
|
+
}
|
|
2014
|
+
} catch {
|
|
2015
|
+
// Best-effort; fall through.
|
|
2016
|
+
}
|
|
2017
|
+
|
|
2018
|
+
if (newVersion && newVersion !== PKG_VERSION) {
|
|
2019
|
+
success(`Global binary upgraded: v${PKG_VERSION} → v${newVersion}`);
|
|
2020
|
+
info("Handing off to the newly-installed binary for propagation...");
|
|
2021
|
+
return { upgraded: true, reexec: true };
|
|
2022
|
+
}
|
|
2023
|
+
success(`Global binary already at latest (v${PKG_VERSION})`);
|
|
2024
|
+
return { upgraded: true, reexec: false };
|
|
2025
|
+
}
|
|
2026
|
+
|
|
2027
|
+
// Hand execution to the newly-installed global `gsd-t update-all`. Sets the
|
|
2028
|
+
// GSDT_POST_UPGRADE env flag so the child does not recurse into another
|
|
2029
|
+
// upgrade attempt.
|
|
2030
|
+
function reexecUpdateAll() {
|
|
2031
|
+
const env = Object.assign({}, process.env, { GSDT_POST_UPGRADE: "1" });
|
|
2032
|
+
try {
|
|
2033
|
+
execFileSync("gsd-t", ["update-all"], { stdio: "inherit", env });
|
|
2034
|
+
} catch (e) {
|
|
2035
|
+
// Surface the child's exit code; execFileSync throws with .status on
|
|
2036
|
+
// non-zero exit. Fall through to re-throw so the caller exits cleanly.
|
|
2037
|
+
if (e && typeof e.status === "number") {
|
|
2038
|
+
process.exit(e.status);
|
|
2039
|
+
}
|
|
2040
|
+
throw e;
|
|
2041
|
+
}
|
|
2042
|
+
}
|
|
2043
|
+
|
|
1972
2044
|
async function updateGlobalCommands() {
|
|
1973
2045
|
if (getInstalledVersion() !== PKG_VERSION) {
|
|
1974
2046
|
await doInstall({ update: true });
|
|
@@ -2718,7 +2790,7 @@ function parseHeadlessFlags(args) {
|
|
|
2718
2790
|
* Build the claude -p invocation string for a GSD-T command.
|
|
2719
2791
|
*
|
|
2720
2792
|
* Non-interactive `claude -p` mode requires the bare `/gsd-t-X` form — the
|
|
2721
|
-
* `/
|
|
2793
|
+
* `/gsd-t-X` namespace prefix is rejected as "Unknown command" even
|
|
2722
2794
|
* though interactive mode accepts both. Verified by M36 Phase 0 Spike A
|
|
2723
2795
|
* (2026-04-15). See .gsd-t/M36-spike-findings.md.
|
|
2724
2796
|
*/
|
|
@@ -3378,8 +3450,8 @@ function showHelp() {
|
|
|
3378
3450
|
log(` ${DIM}$${RESET} npx @tekyzinc/gsd-t init my-saas-app`);
|
|
3379
3451
|
log(` ${DIM}$${RESET} npx @tekyzinc/gsd-t update\n`);
|
|
3380
3452
|
log(`${BOLD}After installing, use in Claude Code:${RESET}`);
|
|
3381
|
-
log(` ${DIM}>${RESET} /
|
|
3382
|
-
log(` ${DIM}>${RESET} /
|
|
3453
|
+
log(` ${DIM}>${RESET} /gsd-t-project "Build a task management app"`);
|
|
3454
|
+
log(` ${DIM}>${RESET} /gsd-t-wave\n`);
|
|
3383
3455
|
log(`${DIM}Docs: https://github.com/Tekyz-Inc/get-stuff-done-teams${RESET}\n`);
|
|
3384
3456
|
}
|
|
3385
3457
|
|
|
@@ -13,14 +13,14 @@ Parse $ARGUMENTS to extract:
|
|
|
13
13
|
- `<position>` — the entry number to promote
|
|
14
14
|
|
|
15
15
|
If no position is provided, show an error:
|
|
16
|
-
"Usage: `/
|
|
16
|
+
"Usage: `/gsd-t-backlog-promote <position>`"
|
|
17
17
|
|
|
18
18
|
## Step 2: Find and Display Entry
|
|
19
19
|
|
|
20
20
|
Find the entry at the specified position in `.gsd-t/backlog.md`.
|
|
21
21
|
|
|
22
22
|
If the position doesn't exist, show an error:
|
|
23
|
-
"No backlog entry at position {position}. Run `/
|
|
23
|
+
"No backlog entry at position {position}. Run `/gsd-t-backlog-list` to see available entries."
|
|
24
24
|
|
|
25
25
|
Display the entry to the user:
|
|
26
26
|
```
|
|
@@ -88,10 +88,10 @@ After classification is confirmed:
|
|
|
88
88
|
|
|
89
89
|
Based on the classification, present the command for the user to invoke:
|
|
90
90
|
|
|
91
|
-
- **Milestone**: "Run `/
|
|
92
|
-
- **Quick**: "Run `/
|
|
93
|
-
- **Debug**: "Run `/
|
|
94
|
-
- **Feature**: "Run `/
|
|
91
|
+
- **Milestone**: "Run `/gsd-t-milestone {refined description}`"
|
|
92
|
+
- **Quick**: "Run `/gsd-t-quick {refined description}`"
|
|
93
|
+
- **Debug**: "Run `/gsd-t-debug {refined description}`"
|
|
94
|
+
- **Feature**: "Run `/gsd-t-feature {refined description}`"
|
|
95
95
|
|
|
96
96
|
Display the full command with the refined description ready to copy.
|
|
97
97
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
You are finalizing a completed milestone. Your job is to archive the milestone documentation, create a git tag, and prepare for the next milestone.
|
|
4
4
|
|
|
5
5
|
This command is:
|
|
6
|
-
- **Auto-invoked** by `/
|
|
7
|
-
- **Auto-invoked** by `/
|
|
6
|
+
- **Auto-invoked** by `/gsd-t-verify` (Step 8) after all quality gates pass — at ALL autonomy levels
|
|
7
|
+
- **Auto-invoked** by `/gsd-t-wave` as part of the VERIFY+COMPLETE phase
|
|
8
8
|
- **Standalone** when user wants to manually close a milestone
|
|
9
9
|
|
|
10
10
|
## Step 1: Verify Completion
|
|
@@ -14,7 +14,7 @@ Read:
|
|
|
14
14
|
2. `.gsd-t/verify-report.md` — confirm all checks passed
|
|
15
15
|
|
|
16
16
|
If status is not VERIFIED:
|
|
17
|
-
"⚠️ Milestone not yet verified. Run `/
|
|
17
|
+
"⚠️ Milestone not yet verified. Run `/gsd-t-verify` first, or use `--force` to complete anyway."
|
|
18
18
|
|
|
19
19
|
If `--force` flag provided, proceed with warning in archive.
|
|
20
20
|
|
|
@@ -76,7 +76,7 @@ Refer to `.gsd-t/contracts/goal-backward-contract.md` for the full verification
|
|
|
76
76
|
{findings table}
|
|
77
77
|
|
|
78
78
|
Options:
|
|
79
|
-
1. Fix the findings and re-run /
|
|
79
|
+
1. Fix the findings and re-run /gsd-t-verify
|
|
80
80
|
2. Override with explicit acknowledgment: re-run this command with --force-goal-backward
|
|
81
81
|
|
|
82
82
|
Proceed with option 1 (recommended) or acknowledge to force completion?
|
|
@@ -493,8 +493,8 @@ Summary:
|
|
|
493
493
|
|
|
494
494
|
Next steps:
|
|
495
495
|
- Push tags: git push origin v{version}
|
|
496
|
-
- Start next milestone: /
|
|
497
|
-
- Or view roadmap: /
|
|
496
|
+
- Start next milestone: /gsd-t-milestone "{next name}"
|
|
497
|
+
- Or view roadmap: /gsd-t-status
|
|
498
498
|
```
|
|
499
499
|
|
|
500
500
|
## Step 13: Update Roadmap (if exists)
|
|
@@ -510,7 +510,7 @@ If `.gsd-t/roadmap.md` exists:
|
|
|
510
510
|
"Cannot complete — verification found issues. Address them first or use `--force`."
|
|
511
511
|
|
|
512
512
|
### If no milestone active:
|
|
513
|
-
"No active milestone to complete. Run `/
|
|
513
|
+
"No active milestone to complete. Run `/gsd-t-status` to see state."
|
|
514
514
|
|
|
515
515
|
### If git operations fail:
|
|
516
516
|
- Still create archive
|
|
@@ -400,7 +400,7 @@ If ANY CRITICAL or HIGH deviations were found, automatically prompt the fix work
|
|
|
400
400
|
The audit report at `.gsd-t/design-audit-{page-name}-{YYYY-MM-DD}.md`
|
|
401
401
|
has the exact Figma values for each deviation.
|
|
402
402
|
|
|
403
|
-
`/
|
|
403
|
+
`/gsd-t-quick fix all CRITICAL and HIGH deviations from .gsd-t/design-audit-{page-name}-{YYYY-MM-DD}.md — use the Figma values in the report as the source of truth`
|
|
404
404
|
|
|
405
405
|
───────────────────────────────────────────────────────────────
|
|
406
406
|
```
|
|
@@ -414,7 +414,7 @@ If ONLY MEDIUM or LOW deviations remain, show:
|
|
|
414
414
|
|
|
415
415
|
**{N} MEDIUM + {N} LOW deviations.** These are minor — fix if you want pixel-perfect.
|
|
416
416
|
|
|
417
|
-
`/
|
|
417
|
+
`/gsd-t-quick fix MEDIUM and LOW deviations from .gsd-t/design-audit-{page-name}-{YYYY-MM-DD}.md`
|
|
418
418
|
|
|
419
419
|
───────────────────────────────────────────────────────────────
|
|
420
420
|
```
|
|
@@ -427,7 +427,7 @@ After fixes are applied, **re-run the audit automatically** to verify. Loop unti
|
|
|
427
427
|
|
|
428
428
|
## Rules
|
|
429
429
|
|
|
430
|
-
- **You write ZERO code during the audit phase (Steps 1-5).** Report only. Code changes happen in Step 6 via `/
|
|
430
|
+
- **You write ZERO code during the audit phase (Steps 1-5).** Report only. Code changes happen in Step 6 via `/gsd-t-quick`.
|
|
431
431
|
- **You do NOT "look close" at anything.** Every property gets an exact value from Figma and an exact value from the build. They match or they don't.
|
|
432
432
|
- **You do NOT skip widgets.** Every widget in the Figma AND every widget in the build gets audited.
|
|
433
433
|
- **You MUST call `get_design_context` per widget node — NOT `get_screenshot`.** `get_design_context` returns structured code, component properties, and design tokens. `get_screenshot` returns only a visual image that you cannot extract exact values from. Using `get_screenshot` for widget extraction defeats the entire purpose of structured comparison — you end up eyeballing instead of measuring. The ONLY acceptable use of `get_screenshot` is for the built page (Step 2) where you need to see what was actually rendered. For Figma source data, ALWAYS use `get_design_context`.
|
|
@@ -40,7 +40,7 @@ Pass any of these as `$ARGUMENTS`:
|
|
|
40
40
|
## Prerequisites
|
|
41
41
|
|
|
42
42
|
- Design contracts must exist in `.gsd-t/contracts/design/` with an `INDEX.md`
|
|
43
|
-
- If no contracts exist, run `/
|
|
43
|
+
- If no contracts exist, run `/gsd-t-design-decompose` first
|
|
44
44
|
|
|
45
45
|
## Why a JS Orchestrator?
|
|
46
46
|
|
|
@@ -471,7 +471,7 @@ This domain owns the following design contracts:
|
|
|
471
471
|
- Pages: (none — pages owned by page-assembly domain)
|
|
472
472
|
```
|
|
473
473
|
|
|
474
|
-
If `.gsd-t/domains/` does NOT exist yet, suggest the user run `/
|
|
474
|
+
If `.gsd-t/domains/` does NOT exist yet, suggest the user run `/gsd-t-partition` next, with a note that design contracts should be partitioned into domains:
|
|
475
475
|
- **design-system domain** owns element contracts
|
|
476
476
|
- **widgets domain** owns widget contracts
|
|
477
477
|
- **pages domain** owns page assembly + routing
|
|
@@ -494,11 +494,11 @@ Display:
|
|
|
494
494
|
|
|
495
495
|
**Design Build** — build UI from contracts with tiered review gates (elements → widgets → pages)
|
|
496
496
|
|
|
497
|
-
`/
|
|
497
|
+
`/gsd-t-design-build`
|
|
498
498
|
|
|
499
499
|
**Also available:**
|
|
500
|
-
- `/
|
|
501
|
-
- `/
|
|
500
|
+
- `/gsd-t-partition` — if you need domain boundaries before building
|
|
501
|
+
- `/gsd-t-plan` — if you need task lists before building
|
|
502
502
|
|
|
503
503
|
───────────────────────────────────────────────────────────────
|
|
504
504
|
```
|
|
@@ -66,7 +66,7 @@ This calls `getSessionStatus()` (v2.0.0) which reads `.gsd-t/.context-meter-stat
|
|
|
66
66
|
|
|
67
67
|
Use the returned `threshold` as the gate signal for the rest of this run. The gate logic is in Step 3.5; do NOT skip it. If the Context Meter hook isn't installed (`.gsd-t/.context-meter-state.json` missing and doctor reports it), run `gsd-t doctor` to diagnose — the gate still works via the heuristic fallback but real-time readings give much better guardrails.
|
|
68
68
|
|
|
69
|
-
Why: every `/
|
|
69
|
+
Why: every `/gsd-t-execute` invocation is a fresh orchestrator session and needs a current reading of context utilization before spawning any subagents. The authoritative source is the Context Meter state file; the fallback keeps the gate functional on projects that haven't installed the hook yet.
|
|
70
70
|
|
|
71
71
|
## Step 1: Load State
|
|
72
72
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GSD-T: Feature — Add a Major Feature to an Existing Project
|
|
2
2
|
|
|
3
|
-
You are the lead agent planning a significant new feature for an existing codebase. Unlike `/
|
|
3
|
+
You are the lead agent planning a significant new feature for an existing codebase. Unlike `/gsd-t-project` (greenfield), this command respects and builds on what already exists — existing patterns, schema, auth, conventions, and contracts.
|
|
4
4
|
|
|
5
5
|
## Step 0.5: Scan Freshness Auto-Refresh
|
|
6
6
|
|
|
@@ -154,7 +154,7 @@ The feature may be a single milestone or multiple, depending on scope:
|
|
|
154
154
|
### Single Milestone (if feature is focused):
|
|
155
155
|
- 2-4 domains, < 15 tasks total
|
|
156
156
|
- Minimal impact on existing contracts
|
|
157
|
-
- Skip roadmap, go straight to: "Run `/
|
|
157
|
+
- Skip roadmap, go straight to: "Run `/gsd-t-partition` to begin"
|
|
158
158
|
|
|
159
159
|
### Multiple Milestones (if feature is complex):
|
|
160
160
|
Apply these sequencing rules:
|
|
@@ -267,7 +267,7 @@ Present:
|
|
|
267
267
|
4. Any conflicts with existing work
|
|
268
268
|
5. Recommended starting point
|
|
269
269
|
|
|
270
|
-
Ask: "Ready to start? Run `/
|
|
270
|
+
Ask: "Ready to start? Run `/gsd-t-partition` for Milestone {N}."
|
|
271
271
|
|
|
272
272
|
$ARGUMENTS
|
|
273
273
|
|
|
@@ -224,13 +224,13 @@ Show the recommended groupings and offer promotion paths:
|
|
|
224
224
|
## Recommended Next Steps
|
|
225
225
|
|
|
226
226
|
1. {Milestone name} — {N} gaps ({critical} critical, {high} high)
|
|
227
|
-
→ /
|
|
227
|
+
→ /gsd-t-milestone "{name}"
|
|
228
228
|
|
|
229
229
|
2. {Feature name} — {N} gaps
|
|
230
|
-
→ /
|
|
230
|
+
→ /gsd-t-feature "{name}"
|
|
231
231
|
|
|
232
232
|
3. Quick fixes — {N} items
|
|
233
|
-
→ /
|
|
233
|
+
→ /gsd-t-quick "{description}"
|
|
234
234
|
|
|
235
235
|
Promote any of these now, or review the gap analysis first?
|
|
236
236
|
```
|
package/commands/gsd-t-health.md
CHANGED
|
@@ -131,9 +131,9 @@ After repair, re-run the checks and report the final state.
|
|
|
131
131
|
## Step 6: Next Steps
|
|
132
132
|
|
|
133
133
|
If HEALTHY → "✅ GSD-T structure is healthy — all required files present."
|
|
134
|
-
If DEGRADED with --repair done → "✅ Repaired {N} missing files. Run /
|
|
135
|
-
If DEGRADED without --repair → "⚠ Run /
|
|
136
|
-
If BROKEN → "🔴 Project structure is broken. Run /
|
|
134
|
+
If DEGRADED with --repair done → "✅ Repaired {N} missing files. Run /gsd-t-health again to confirm."
|
|
135
|
+
If DEGRADED without --repair → "⚠ Run /gsd-t-health --repair to create {N} missing files."
|
|
136
|
+
If BROKEN → "🔴 Project structure is broken. Run /gsd-t-health --repair or /gsd-t-init to rebuild."
|
|
137
137
|
|
|
138
138
|
$ARGUMENTS
|
|
139
139
|
|
package/commands/gsd-t-help.md
CHANGED
|
@@ -84,8 +84,8 @@ BACKLOG Manual
|
|
|
84
84
|
backlog-settings Manage types, apps, categories, and defaults
|
|
85
85
|
|
|
86
86
|
───────────────────────────────────────────────────────────────────────────────
|
|
87
|
-
Type /
|
|
88
|
-
Example: /
|
|
87
|
+
Type /gsd-t-help {command} for detailed help on any command.
|
|
88
|
+
Example: /gsd-t-help impact
|
|
89
89
|
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
90
90
|
```
|
|
91
91
|
|
|
@@ -94,7 +94,7 @@ Example: /user:gsd-t-help impact
|
|
|
94
94
|
When user provides a command name, show detailed help:
|
|
95
95
|
|
|
96
96
|
```
|
|
97
|
-
/
|
|
97
|
+
/gsd-t-help {command}
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
### Command Details Format:
|
|
@@ -108,7 +108,7 @@ SUMMARY
|
|
|
108
108
|
{One-line description}
|
|
109
109
|
|
|
110
110
|
USAGE
|
|
111
|
-
/
|
|
111
|
+
/gsd-t-{command} [arguments]
|
|
112
112
|
|
|
113
113
|
WHEN TO USE
|
|
114
114
|
• {Use case 1}
|
|
@@ -131,8 +131,8 @@ FILES CREATED/UPDATED
|
|
|
131
131
|
• {file 2}
|
|
132
132
|
|
|
133
133
|
EXAMPLES
|
|
134
|
-
/
|
|
135
|
-
/
|
|
134
|
+
/gsd-t-{command}
|
|
135
|
+
/gsd-t-{command} "with argument"
|
|
136
136
|
|
|
137
137
|
RELATED COMMANDS
|
|
138
138
|
• {related 1} — {why related}
|
|
@@ -149,10 +149,10 @@ Use these when user asks for help on a specific command:
|
|
|
149
149
|
- **Summary**: Describe what you need in plain language — auto-routes to the right GSD-T command using semantic evaluation
|
|
150
150
|
- **Auto-invoked**: Yes — via UserPromptSubmit hook when prompt does not start with `/`
|
|
151
151
|
- **Files**: Reads `CLAUDE.md`, `.gsd-t/progress.md`, command summaries from `gsd-t-help`
|
|
152
|
-
- **How it works**: First checks if this is a continuation of an ongoing command (mid-task follow-up, status report, or acknowledgment) — if so, outputs `→ /gsd ──▶ continue /
|
|
152
|
+
- **How it works**: First checks if this is a continuation of an ongoing command (mid-task follow-up, status report, or acknowledgment) — if so, outputs `→ /gsd ──▶ continue /gsd-t-{last-command}` and resumes. For new requests, evaluates against every command's purpose and "Use when" criteria. Commands that match get shortlisted, best fit is selected. Shows runner-up when close.
|
|
153
153
|
- **Auto-route**: After `gsd-t install`, any plain text message (no leading `/`) is automatically routed through `/gsd`. Slash commands pass through unchanged. Binary detection — no heuristics.
|
|
154
154
|
- **Use when**: You don't want to remember which command to use — just describe what you want
|
|
155
|
-
- **Examples**: `/
|
|
155
|
+
- **Examples**: `/gsd Fix the login bug`, `/gsd Add dark mode`, `/gsd Scan for tech debt`
|
|
156
156
|
- **Auto-route examples**: `Fix the login bug` (no slash needed), `Add dark mode`, `Scan for tech debt`
|
|
157
157
|
|
|
158
158
|
### prd
|
|
@@ -228,7 +228,7 @@ Use these when user asks for help on a specific command:
|
|
|
228
228
|
- **Use when**: Ready to define specific implementation tasks
|
|
229
229
|
- **Note (M22)**: Tasks auto-split if estimated scope exceeds 70% context window — guarantees fresh dispatch works
|
|
230
230
|
- **Note (M26)**: Pre-mortem step now also reads rules.jsonl for historical failure patterns via getPreMortemRules
|
|
231
|
-
- **Note (M38)**: Conversational use cases (formerly `/
|
|
231
|
+
- **Note (M38)**: Conversational use cases (formerly `/gsd-t-prompt`, `/gsd-t-brainstorm`, `/gsd-t-discuss`) are now handled by the Smart Router's conversational mode — just describe what you want via `/gsd` or plain text.
|
|
232
232
|
|
|
233
233
|
### impact
|
|
234
234
|
- **Summary**: Analyze downstream effects of planned changes
|
|
@@ -433,7 +433,7 @@ Did you mean one of these?
|
|
|
433
433
|
• {closest match 1}
|
|
434
434
|
• {closest match 2}
|
|
435
435
|
|
|
436
|
-
Run /
|
|
436
|
+
Run /gsd-t-help for full command list.
|
|
437
437
|
```
|
|
438
438
|
|
|
439
439
|
$ARGUMENTS
|
package/commands/gsd-t-impact.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
You are analyzing the downstream effects of planned changes before execution. Your job is to identify what might break, what needs updating, and what risks exist.
|
|
4
4
|
|
|
5
5
|
This command is:
|
|
6
|
-
- **Auto-invoked** between plan and execute phases in `/
|
|
6
|
+
- **Auto-invoked** between plan and execute phases in `/gsd-t-wave`
|
|
7
7
|
- **Standalone** when user wants to evaluate potential changes
|
|
8
8
|
|
|
9
9
|
## Step 1: Load Context
|
|
@@ -273,7 +273,7 @@ Validate the test landscape before recommending proceed/block:
|
|
|
273
273
|
- List the red items
|
|
274
274
|
- Generate remediation tasks
|
|
275
275
|
- Add tasks to current domain's task list
|
|
276
|
-
- "Run `/
|
|
276
|
+
- "Run `/gsd-t-execute` to address these first, then re-run impact analysis."
|
|
277
277
|
- Do NOT proceed to execute phase
|
|
278
278
|
|
|
279
279
|
## Standalone Mode
|
|
@@ -281,7 +281,7 @@ Validate the test landscape before recommending proceed/block:
|
|
|
281
281
|
When run independently (not as part of wave):
|
|
282
282
|
|
|
283
283
|
```
|
|
284
|
-
/
|
|
284
|
+
/gsd-t-impact "considering adding user roles to the auth system"
|
|
285
285
|
```
|
|
286
286
|
|
|
287
287
|
1. Ask clarifying questions about the change
|
|
@@ -64,7 +64,7 @@ All subsequent steps run from inside the project directory.
|
|
|
64
64
|
|
|
65
65
|
## Step 3: Initialize Project (gsd-t-init)
|
|
66
66
|
|
|
67
|
-
Execute the full init workflow (same as `/
|
|
67
|
+
Execute the full init workflow (same as `/gsd-t-init`):
|
|
68
68
|
|
|
69
69
|
1. Create `.gsd-t/` directory structure (contracts/, domains/, progress.md, backlog.md, backlog-settings.md, token-log.md, qa-issues.md)
|
|
70
70
|
2. Ensure `CLAUDE.md` exists (create starter if missing, append GSD-T section if present without it)
|
|
@@ -101,7 +101,7 @@ If the project has source code, graph indexing (`.gsd-t/graph/`) will run as par
|
|
|
101
101
|
|
|
102
102
|
## Step 4: Deep Codebase Scan (gsd-t-scan)
|
|
103
103
|
|
|
104
|
-
Execute the full scan workflow (same as `/
|
|
104
|
+
Execute the full scan workflow (same as `/gsd-t-scan`):
|
|
105
105
|
|
|
106
106
|
1. Scan across all dimensions: architecture, business rules, security, quality, contracts
|
|
107
107
|
2. Build `.gsd-t/techdebt.md` register
|
|
@@ -114,7 +114,7 @@ Always use team mode for the scan unless the codebase is trivially small (< 5 fi
|
|
|
114
114
|
|
|
115
115
|
## Step 5: Generate Project CLAUDE.md (gsd-t-setup)
|
|
116
116
|
|
|
117
|
-
Execute the full setup workflow (same as `/
|
|
117
|
+
Execute the full setup workflow (same as `/gsd-t-setup`):
|
|
118
118
|
|
|
119
119
|
1. Read global `~/.claude/CLAUDE.md` to understand what's already covered
|
|
120
120
|
2. Use scan findings + auto-detection to populate project-specific sections
|
|
@@ -139,8 +139,8 @@ Project Onboarded: {project name}
|
|
|
139
139
|
|
|
140
140
|
Next steps:
|
|
141
141
|
→ Review .gsd-t/techdebt.md for critical items
|
|
142
|
-
→ /
|
|
143
|
-
→ /
|
|
142
|
+
→ /gsd-t-milestone to define your first milestone
|
|
143
|
+
→ /gsd-t-wave to run a full development cycle
|
|
144
144
|
```
|
|
145
145
|
|
|
146
146
|
### Autonomy Behavior
|
package/commands/gsd-t-init.md
CHANGED
|
@@ -154,7 +154,7 @@ Read the project's `CLAUDE.md` (if it exists) to auto-populate backlog settings:
|
|
|
154
154
|
1. **Apps**: Scan for app names, service names, or product names (look for headings, "Tech Stack" sections, or named components). Populate the `## Apps` section in `backlog-settings.md` with discovered names (lowercase).
|
|
155
155
|
2. **Categories**: Scan for domain concepts, module names, and technical areas (e.g., "authentication", "payments", "api", "database"). Populate the `## Categories` section.
|
|
156
156
|
3. **Default App**: Set `**Default App:**` to the most prominent app found (the one mentioned most, or the first one). If only one app is found, use it.
|
|
157
|
-
4. **If nothing found**: Leave the placeholder values from the template — the user can configure later via `/
|
|
157
|
+
4. **If nothing found**: Leave the placeholder values from the template — the user can configure later via `/gsd-t-backlog-settings`.
|
|
158
158
|
|
|
159
159
|
## Step 5: Initialize Progress File
|
|
160
160
|
|
|
@@ -366,10 +366,10 @@ After initialization:
|
|
|
366
366
|
Tell the user:
|
|
367
367
|
1. What was created (including backlog files: `.gsd-t/backlog.md` and `.gsd-t/backlog-settings.md`)
|
|
368
368
|
2. What they should fill in (CLAUDE.md details, requirements)
|
|
369
|
-
3. Backlog settings status: whether apps/categories were auto-derived from CLAUDE.md or need manual configuration via `/
|
|
369
|
+
3. Backlog settings status: whether apps/categories were auto-derived from CLAUDE.md or need manual configuration via `/gsd-t-backlog-settings`
|
|
370
370
|
4. Recommended next step:
|
|
371
|
-
- New project: "Define your milestone, then run /
|
|
372
|
-
- Existing code: "I've mapped the codebase. Ready for /
|
|
371
|
+
- New project: "Define your milestone, then run /gsd-t-partition"
|
|
372
|
+
- Existing code: "I've mapped the codebase. Ready for /gsd-t-partition {milestone}"
|
|
373
373
|
|
|
374
374
|
$ARGUMENTS
|
|
375
375
|
|
package/commands/gsd-t-log.md
CHANGED
|
@@ -8,7 +8,7 @@ Read:
|
|
|
8
8
|
1. `.gsd-t/progress.md` — current Decision Log entries
|
|
9
9
|
2. Note the **last entry's timestamp** — this is the cutoff; only commits after this time need processing
|
|
10
10
|
|
|
11
|
-
If `.gsd-t/progress.md` doesn't exist, inform user: "No GSD-T state found. Run `/
|
|
11
|
+
If `.gsd-t/progress.md` doesn't exist, inform user: "No GSD-T state found. Run `/gsd-t-init` first."
|
|
12
12
|
|
|
13
13
|
## Step 2: Get Recent Commits
|
|
14
14
|
|
|
@@ -44,7 +44,7 @@ Before formal partitioning, do a quick assessment:
|
|
|
44
44
|
|
|
45
45
|
- **Complexity estimate**: Simple (1-2 domains), Medium (3-4), Complex (5+)
|
|
46
46
|
- **Recommended approach**:
|
|
47
|
-
- Simple: Consider using /
|
|
47
|
+
- Simple: Consider using /gsd-t-quick for each piece
|
|
48
48
|
- Medium: Standard partition → plan → execute flow
|
|
49
49
|
- Complex: Partition → discuss → plan → execute → integrate → verify
|
|
50
50
|
|
|
@@ -78,7 +78,7 @@ Before proceeding to partition:
|
|
|
78
78
|
If the user wants to proceed immediately, execute the partition workflow (same as gsd-t-partition) for this milestone.
|
|
79
79
|
|
|
80
80
|
Otherwise, set status to DEFINED and remind them:
|
|
81
|
-
"Run /
|
|
81
|
+
"Run /gsd-t-partition to decompose into domains, or /gsd-t-discuss to explore approaches first."
|
|
82
82
|
|
|
83
83
|
$ARGUMENTS
|
|
84
84
|
|
package/commands/gsd-t-pause.md
CHANGED
|
@@ -54,7 +54,7 @@ Create `.gsd-t/continue-here-{timestamp}.md`:
|
|
|
54
54
|
{$ARGUMENTS if provided, otherwise: _No note provided._}
|
|
55
55
|
|
|
56
56
|
## Resume Command
|
|
57
|
-
/
|
|
57
|
+
/gsd-t-resume
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
## Step 4: Confirm to User
|
|
@@ -67,7 +67,7 @@ Output:
|
|
|
67
67
|
Saved position: .gsd-t/continue-here-{timestamp}.md
|
|
68
68
|
Next action: {next action summary}
|
|
69
69
|
|
|
70
|
-
To resume: /
|
|
70
|
+
To resume: /gsd-t-resume
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
## Step 5: Do NOT Stop Work (unless user asked to pause all work)
|
package/commands/gsd-t-prd.md
CHANGED
|
@@ -291,13 +291,13 @@ Next steps:
|
|
|
291
291
|
|
|
292
292
|
For a new project:
|
|
293
293
|
```
|
|
294
|
-
/
|
|
294
|
+
/gsd-t-project {one-line summary}
|
|
295
295
|
```
|
|
296
296
|
Then paste the PRD when prompted. The PRD's requirements table becomes docs/requirements.md. The architecture section seeds docs/architecture.md. The milestone sequence becomes your roadmap.
|
|
297
297
|
|
|
298
298
|
For a feature on an existing project:
|
|
299
299
|
```
|
|
300
|
-
/
|
|
300
|
+
/gsd-t-feature {one-line summary}
|
|
301
301
|
```
|
|
302
302
|
Then paste the PRD when prompted.
|
|
303
303
|
|
|
@@ -200,7 +200,7 @@ Present:
|
|
|
200
200
|
4. Any scope decisions you made and why
|
|
201
201
|
5. Questions or trade-offs that need user input
|
|
202
202
|
|
|
203
|
-
Ask: "Ready to start Milestone 1? Run `/
|
|
203
|
+
Ask: "Ready to start Milestone 1? Run `/gsd-t-partition` to decompose it into domains."
|
|
204
204
|
|
|
205
205
|
Or if the user wants to review first: "Review the roadmap in `.gsd-t/roadmap.md` and let me know if you want to adjust scope or ordering."
|
|
206
206
|
|
package/commands/gsd-t-resume.md
CHANGED
|
@@ -149,7 +149,7 @@ Progress:
|
|
|
149
149
|
Next up: {specific next action}
|
|
150
150
|
Blockers: {any pending items} | None
|
|
151
151
|
|
|
152
|
-
Ready to continue? Or run /
|
|
152
|
+
Ready to continue? Or run /gsd-t-status for full details.
|
|
153
153
|
```
|
|
154
154
|
|
|
155
155
|
## Step 4: Continue
|
|
@@ -171,9 +171,9 @@ When the resumed work reaches a natural handoff point, do NOT print a "Next Up"
|
|
|
171
171
|
|--------------------------|-----------------|
|
|
172
172
|
| A task (mid-wave, tasks remaining) | next task in the same wave |
|
|
173
173
|
| The last task of a wave (waves remaining) | next wave |
|
|
174
|
-
| The last task of the last wave | `/
|
|
175
|
-
| `/
|
|
176
|
-
| `/
|
|
174
|
+
| The last task of the last wave | `/gsd-t-verify` (which auto-invokes `/gsd-t-complete-milestone` per verify Step 8) |
|
|
175
|
+
| `/gsd-t-verify` (VERIFIED or VERIFIED-WITH-WARNINGS) | `/gsd-t-complete-milestone` (verify already spawns this — do not re-invoke) |
|
|
176
|
+
| `/gsd-t-complete-milestone` | honor any outstanding multi-step user directive (see below) |
|
|
177
177
|
|
|
178
178
|
**Never stop at "Wave N complete" or "Task N done" and wait.** The only stopping points are:
|
|
179
179
|
1. VERIFY-FAILED (report failures)
|
package/commands/gsd-t-scan.md
CHANGED
|
@@ -235,7 +235,7 @@ Operations implemented independently in 2+ places — candidates for extraction
|
|
|
235
235
|
If none found: `✅ No shared service candidates detected.`
|
|
236
236
|
|
|
237
237
|
> **Note**: These candidates should seed Step 1.6 (Consumer Surface Identification) the next
|
|
238
|
-
> time `/
|
|
238
|
+
> time `/gsd-t-partition` is run. Copy the "Consumer Surfaces Detected" table into
|
|
239
239
|
> partition's Step 1.6.1 to skip re-research.
|
|
240
240
|
|
|
241
241
|
## Complexity Hotspots
|
|
@@ -442,7 +442,7 @@ Can be scheduled: During next maintenance window
|
|
|
442
442
|
Combines: all "Shared Service Candidates" from quality.md Reusability Analysis
|
|
443
443
|
Estimated effort: {assessment}
|
|
444
444
|
Should be prioritized: BEFORE adding new consumer surfaces to the system
|
|
445
|
-
Note: Use `/
|
|
445
|
+
Note: Use `/gsd-t-partition` Step 1.6 to design the SharedCore domain
|
|
446
446
|
```
|
|
447
447
|
|
|
448
448
|
## Step 5: Update Living Documents
|
|
@@ -563,7 +563,7 @@ If `.gsd-t/progress.md` exists:
|
|
|
563
563
|
|
|
564
564
|
If `.gsd-t/roadmap.md` exists:
|
|
565
565
|
- Do NOT auto-add milestones — present suggestions to user
|
|
566
|
-
- User decides which to promote with `/
|
|
566
|
+
- User decides which to promote with `/gsd-t-promote-debt`
|
|
567
567
|
|
|
568
568
|
If `CLAUDE.md` exists:
|
|
569
569
|
- Suggest updates for any patterns or conventions discovered during scan
|