gsdd-cli 0.18.5 → 0.19.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/LICENSE +21 -21
- package/README.md +609 -608
- package/agents/DISTILLATION.md +421 -421
- package/agents/README.md +62 -62
- package/agents/approach-explorer.md +361 -361
- package/agents/debugger.md +82 -82
- package/agents/executor.md +394 -394
- package/agents/integration-checker.md +318 -318
- package/agents/mapper.md +103 -103
- package/agents/planner.md +313 -313
- package/agents/researcher.md +84 -84
- package/agents/roadmapper.md +296 -296
- package/agents/synthesizer.md +236 -236
- package/agents/verifier.md +337 -337
- package/bin/adapters/agents.mjs +34 -34
- package/bin/adapters/claude.mjs +191 -191
- package/bin/adapters/codex.mjs +85 -85
- package/bin/adapters/index.mjs +20 -20
- package/bin/adapters/opencode.mjs +278 -278
- package/bin/gsdd.mjs +123 -116
- package/bin/lib/cli-utils.mjs +28 -28
- package/bin/lib/evidence-contract.mjs +112 -112
- package/bin/lib/file-ops.mjs +186 -144
- package/bin/lib/health-truth.mjs +181 -178
- package/bin/lib/health.mjs +246 -226
- package/bin/lib/init-flow.mjs +247 -231
- package/bin/lib/init-prompts.mjs +248 -247
- package/bin/lib/init-runtime.mjs +191 -190
- package/bin/lib/init.mjs +17 -17
- package/bin/lib/lifecycle-preflight.mjs +347 -325
- package/bin/lib/lifecycle-state.mjs +351 -267
- package/bin/lib/manifest.mjs +116 -114
- package/bin/lib/models.mjs +411 -411
- package/bin/lib/phase.mjs +360 -358
- package/bin/lib/plan-constants.mjs +30 -30
- package/bin/lib/provenance.mjs +109 -106
- package/bin/lib/rendering.mjs +115 -83
- package/bin/lib/runtime-freshness.mjs +214 -214
- package/bin/lib/templates.mjs +225 -224
- package/bin/lib/workspace-root.mjs +2 -1
- package/distilled/DESIGN.md +2333 -2323
- package/distilled/EVIDENCE-INDEX.md +394 -392
- package/distilled/README.md +196 -193
- package/distilled/SKILL.md +86 -85
- package/distilled/templates/agents.block.md +21 -21
- package/distilled/templates/agents.md +6 -6
- package/distilled/templates/approach.md +232 -232
- package/distilled/templates/auth-matrix.md +78 -78
- package/distilled/templates/brownfield-change/CHANGE.md +99 -0
- package/distilled/templates/brownfield-change/HANDOFF.md +38 -0
- package/distilled/templates/brownfield-change/VERIFICATION.md +56 -0
- package/distilled/templates/codebase/architecture.md +110 -110
- package/distilled/templates/codebase/concerns.md +95 -95
- package/distilled/templates/codebase/conventions.md +193 -193
- package/distilled/templates/codebase/stack.md +96 -96
- package/distilled/templates/delegates/approach-explorer.md +25 -25
- package/distilled/templates/delegates/mapper-arch.md +26 -26
- package/distilled/templates/delegates/mapper-concerns.md +27 -27
- package/distilled/templates/delegates/mapper-quality.md +28 -28
- package/distilled/templates/delegates/mapper-tech.md +25 -25
- package/distilled/templates/delegates/plan-checker.md +68 -68
- package/distilled/templates/delegates/researcher-architecture.md +30 -30
- package/distilled/templates/delegates/researcher-features.md +30 -30
- package/distilled/templates/delegates/researcher-pitfalls.md +30 -30
- package/distilled/templates/delegates/researcher-stack.md +30 -30
- package/distilled/templates/delegates/researcher-synthesizer.md +31 -31
- package/distilled/templates/research/architecture.md +57 -57
- package/distilled/templates/research/features.md +23 -23
- package/distilled/templates/research/pitfalls.md +46 -46
- package/distilled/templates/research/stack.md +45 -45
- package/distilled/templates/research/summary.md +67 -67
- package/distilled/templates/roadmap.md +74 -62
- package/distilled/templates/spec.md +110 -110
- package/distilled/workflows/audit-milestone.md +275 -271
- package/distilled/workflows/complete-milestone.md +336 -332
- package/distilled/workflows/execute.md +454 -449
- package/distilled/workflows/map-codebase.md +253 -253
- package/distilled/workflows/new-milestone.md +242 -238
- package/distilled/workflows/new-project.md +398 -398
- package/distilled/workflows/pause.md +160 -156
- package/distilled/workflows/plan-milestone-gaps.md +183 -183
- package/distilled/workflows/plan.md +451 -447
- package/distilled/workflows/progress.md +227 -223
- package/distilled/workflows/quick.md +351 -347
- package/distilled/workflows/resume.md +220 -212
- package/distilled/workflows/verify-work.md +260 -260
- package/distilled/workflows/verify.md +431 -429
- package/docs/BROWNFIELD-PROOF.md +95 -95
- package/docs/RUNTIME-SUPPORT.md +80 -69
- package/docs/USER-GUIDE.md +394 -386
- package/docs/VERIFICATION-DISCIPLINE.md +59 -59
- package/docs/claude/context-monitor.md +98 -98
- package/docs/proof/consumer-node-cli/README.md +37 -37
- package/docs/proof/consumer-node-cli/ROADMAP.md +14 -14
- package/docs/proof/consumer-node-cli/SPEC.md +17 -17
- package/docs/proof/consumer-node-cli/brief.md +9 -9
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-PLAN.md +34 -34
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-01-SUMMARY.md +10 -10
- package/docs/proof/consumer-node-cli/phases/01-foundation/01-VERIFICATION.md +30 -30
- package/package.json +62 -61
package/bin/lib/init-runtime.mjs
CHANGED
|
@@ -1,152 +1,153 @@
|
|
|
1
|
-
const RUNTIME_OPTIONS = [
|
|
2
|
-
{
|
|
3
|
-
id: 'claude',
|
|
4
|
-
label: 'Claude Code',
|
|
5
|
-
description: 'Directly validated native skills, commands, and agents with local freshness checks',
|
|
6
|
-
kind: 'native',
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
id: 'opencode',
|
|
10
|
-
label: 'OpenCode',
|
|
11
|
-
description: 'Directly validated native slash commands and agents with local freshness checks',
|
|
12
|
-
kind: 'native',
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
id: 'codex',
|
|
16
|
-
label: 'Codex CLI',
|
|
17
|
-
description: 'Directly validated portable skills plus native checker agents with local freshness checks',
|
|
18
|
-
kind: 'native',
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
id: 'cursor',
|
|
22
|
-
label: 'Cursor',
|
|
23
|
-
description: 'Qualified support via skills-native slash commands from .agents/skills/ with the same local freshness checks',
|
|
24
|
-
kind: 'skills_native',
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
id: 'copilot',
|
|
28
|
-
label: 'GitHub Copilot',
|
|
29
|
-
description: 'Qualified support via skills-native slash commands from .agents/skills/ with the same local freshness checks',
|
|
30
|
-
kind: 'skills_native',
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
id: 'gemini',
|
|
34
|
-
label: 'Gemini CLI',
|
|
35
|
-
description: 'Qualified support via skills-native slash commands from .agents/skills/ with the same local freshness checks',
|
|
36
|
-
kind: 'skills_native',
|
|
37
|
-
},
|
|
38
|
-
];
|
|
39
|
-
|
|
40
|
-
export const INIT_VERSION = 'v1.1';
|
|
41
|
-
|
|
42
|
-
export function normalizeRequestedTools(requestedTools) {
|
|
43
|
-
const selectedRuntimes = [];
|
|
44
|
-
const adapterTargets = [];
|
|
45
|
-
const addRuntime = (runtime) => {
|
|
46
|
-
if (!selectedRuntimes.includes(runtime)) selectedRuntimes.push(runtime);
|
|
47
|
-
};
|
|
48
|
-
const addAdapter = (adapter) => {
|
|
49
|
-
if (!adapterTargets.includes(adapter)) adapterTargets.push(adapter);
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
for (const tool of requestedTools) {
|
|
53
|
-
if (tool === 'claude' || tool === 'opencode' || tool === 'codex') {
|
|
54
|
-
addRuntime(tool);
|
|
55
|
-
addAdapter(tool);
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
if (tool === 'cursor' || tool === 'copilot' || tool === 'gemini') {
|
|
59
|
-
addRuntime(tool);
|
|
60
|
-
addAdapter(tool);
|
|
61
|
-
continue;
|
|
62
|
-
}
|
|
63
|
-
if (tool === 'agents') {
|
|
64
|
-
addAdapter('agents');
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
return { selectedRuntimes, adapterTargets };
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
export function detectPlatforms(adapters) {
|
|
72
|
-
return Object.values(adapters)
|
|
73
|
-
.filter((adapter, index, arr) => arr.findIndex((other) => other.id === adapter.id) === index)
|
|
74
|
-
.filter((adapter) => adapter.detect())
|
|
75
|
-
.map((adapter) => adapter.name);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export function buildRuntimeChoices(adapters) {
|
|
79
|
-
const detected = new Set(detectPlatforms(adapters));
|
|
80
|
-
return RUNTIME_OPTIONS.map((option) => ({
|
|
81
|
-
...option,
|
|
82
|
-
detected: detected.has(option.id),
|
|
83
|
-
selected: detected.has(option.id),
|
|
84
|
-
}));
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
export function resolveAdapters(adapters, platformNames) {
|
|
88
|
-
const seen = new Set();
|
|
89
|
-
const resolved = [];
|
|
90
|
-
|
|
91
|
-
for (const platformName of platformNames) {
|
|
92
|
-
const adapter = adapters[platformName];
|
|
93
|
-
if (!adapter || seen.has(adapter.id)) continue;
|
|
94
|
-
seen.add(adapter.id);
|
|
95
|
-
resolved.push(adapter);
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
return resolved;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export function getAdaptersToUpdate(adapters, platformNames) {
|
|
102
|
-
const requested = new Set(platformNames);
|
|
103
|
-
const seen = new Set();
|
|
104
|
-
const installed = [];
|
|
105
|
-
|
|
106
|
-
for (const [platformName, adapter] of Object.entries(adapters)) {
|
|
107
|
-
if (seen.has(adapter.id)) continue;
|
|
108
|
-
if (!requested.has(platformName) && !adapter.isInstalled()) continue;
|
|
109
|
-
seen.add(adapter.id);
|
|
110
|
-
installed.push(adapter);
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return installed;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export async function resolveInteractiveInitSession({ ctx, promptApi, parsedTools, isAuto }) {
|
|
117
|
-
if (parsedTools.length > 0) {
|
|
118
|
-
return {
|
|
119
|
-
...normalizeRequestedTools(parsedTools),
|
|
120
|
-
config: null,
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
if (isAuto) {
|
|
125
|
-
return { selectedRuntimes: [], adapterTargets: [], config: null };
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
if (!process.stdin.isTTY) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
1
|
+
const RUNTIME_OPTIONS = [
|
|
2
|
+
{
|
|
3
|
+
id: 'claude',
|
|
4
|
+
label: 'Claude Code',
|
|
5
|
+
description: 'Directly validated native skills, commands, and agents with local freshness checks',
|
|
6
|
+
kind: 'native',
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
id: 'opencode',
|
|
10
|
+
label: 'OpenCode',
|
|
11
|
+
description: 'Directly validated native slash commands and agents with local freshness checks',
|
|
12
|
+
kind: 'native',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: 'codex',
|
|
16
|
+
label: 'Codex CLI',
|
|
17
|
+
description: 'Directly validated portable skills plus native checker agents with local freshness checks',
|
|
18
|
+
kind: 'native',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: 'cursor',
|
|
22
|
+
label: 'Cursor',
|
|
23
|
+
description: 'Qualified support via skills-native slash commands from .agents/skills/ with the same local freshness checks',
|
|
24
|
+
kind: 'skills_native',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: 'copilot',
|
|
28
|
+
label: 'GitHub Copilot',
|
|
29
|
+
description: 'Qualified support via skills-native slash commands from .agents/skills/ with the same local freshness checks',
|
|
30
|
+
kind: 'skills_native',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'gemini',
|
|
34
|
+
label: 'Gemini CLI',
|
|
35
|
+
description: 'Qualified support via skills-native slash commands from .agents/skills/ with the same local freshness checks',
|
|
36
|
+
kind: 'skills_native',
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
|
|
40
|
+
export const INIT_VERSION = 'v1.1';
|
|
41
|
+
|
|
42
|
+
export function normalizeRequestedTools(requestedTools) {
|
|
43
|
+
const selectedRuntimes = [];
|
|
44
|
+
const adapterTargets = [];
|
|
45
|
+
const addRuntime = (runtime) => {
|
|
46
|
+
if (!selectedRuntimes.includes(runtime)) selectedRuntimes.push(runtime);
|
|
47
|
+
};
|
|
48
|
+
const addAdapter = (adapter) => {
|
|
49
|
+
if (!adapterTargets.includes(adapter)) adapterTargets.push(adapter);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
for (const tool of requestedTools) {
|
|
53
|
+
if (tool === 'claude' || tool === 'opencode' || tool === 'codex') {
|
|
54
|
+
addRuntime(tool);
|
|
55
|
+
addAdapter(tool);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (tool === 'cursor' || tool === 'copilot' || tool === 'gemini') {
|
|
59
|
+
addRuntime(tool);
|
|
60
|
+
addAdapter(tool);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (tool === 'agents') {
|
|
64
|
+
addAdapter('agents');
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return { selectedRuntimes, adapterTargets };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export function detectPlatforms(adapters = {}) {
|
|
72
|
+
return Object.values(adapters)
|
|
73
|
+
.filter((adapter, index, arr) => arr.findIndex((other) => other.id === adapter.id) === index)
|
|
74
|
+
.filter((adapter) => adapter.detect())
|
|
75
|
+
.map((adapter) => adapter.name);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export function buildRuntimeChoices(adapters = {}) {
|
|
79
|
+
const detected = new Set(detectPlatforms(adapters));
|
|
80
|
+
return RUNTIME_OPTIONS.map((option) => ({
|
|
81
|
+
...option,
|
|
82
|
+
detected: detected.has(option.id),
|
|
83
|
+
selected: detected.has(option.id),
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export function resolveAdapters(adapters, platformNames) {
|
|
88
|
+
const seen = new Set();
|
|
89
|
+
const resolved = [];
|
|
90
|
+
|
|
91
|
+
for (const platformName of platformNames) {
|
|
92
|
+
const adapter = adapters[platformName];
|
|
93
|
+
if (!adapter || seen.has(adapter.id)) continue;
|
|
94
|
+
seen.add(adapter.id);
|
|
95
|
+
resolved.push(adapter);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return resolved;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export function getAdaptersToUpdate(adapters, platformNames) {
|
|
102
|
+
const requested = new Set(platformNames);
|
|
103
|
+
const seen = new Set();
|
|
104
|
+
const installed = [];
|
|
105
|
+
|
|
106
|
+
for (const [platformName, adapter] of Object.entries(adapters)) {
|
|
107
|
+
if (seen.has(adapter.id)) continue;
|
|
108
|
+
if (!requested.has(platformName) && !adapter.isInstalled()) continue;
|
|
109
|
+
seen.add(adapter.id);
|
|
110
|
+
installed.push(adapter);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return installed;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export async function resolveInteractiveInitSession({ ctx, promptApi, parsedTools, isAuto }) {
|
|
117
|
+
if (parsedTools.length > 0) {
|
|
118
|
+
return {
|
|
119
|
+
...normalizeRequestedTools(parsedTools),
|
|
120
|
+
config: null,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (isAuto) {
|
|
125
|
+
return { selectedRuntimes: [], adapterTargets: [], config: null };
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (!process.stdin.isTTY) {
|
|
129
|
+
const detected = detectPlatforms(ctx.adapters);
|
|
130
|
+
return {
|
|
131
|
+
selectedRuntimes: detected,
|
|
132
|
+
adapterTargets: detected,
|
|
133
|
+
config: null,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return promptApi.runInitWizard({ cwd: ctx.cwd, adapters: ctx.adapters });
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export function resolveWizardAdapterTargets(selectedRuntimes, installGovernance) {
|
|
141
|
+
const adapterTargets = [];
|
|
142
|
+
for (const runtime of selectedRuntimes) {
|
|
143
|
+
if (runtime === 'claude' || runtime === 'opencode' || runtime === 'codex') {
|
|
144
|
+
adapterTargets.push(runtime);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (installGovernance) adapterTargets.push('agents');
|
|
148
|
+
return adapterTargets;
|
|
149
|
+
}
|
|
150
|
+
|
|
150
151
|
export function getPostInitRoutingLines(selectedRuntimes) {
|
|
151
152
|
const lines = [];
|
|
152
153
|
if (selectedRuntimes.includes('claude')) lines.push(' Claude Code: /gsdd-new-project | /gsdd-quick | /gsdd-map-codebase');
|
|
@@ -158,23 +159,23 @@ export function getPostInitRoutingLines(selectedRuntimes) {
|
|
|
158
159
|
lines.push(' Any tool: open .agents/skills/gsdd-new-project/SKILL.md, gsdd-quick/SKILL.md, or gsdd-map-codebase/SKILL.md');
|
|
159
160
|
return lines;
|
|
160
161
|
}
|
|
161
|
-
|
|
162
|
-
export function getHelpText() {
|
|
163
|
-
return `
|
|
162
|
+
|
|
163
|
+
export function getHelpText() {
|
|
164
|
+
return `
|
|
164
165
|
gsdd - Workspine CLI
|
|
165
166
|
Repo-native delivery spine for long-horizon AI-assisted work across coding runtimes.
|
|
166
|
-
|
|
167
|
-
Usage: gsdd <command> [args]
|
|
168
|
-
|
|
167
|
+
|
|
168
|
+
Usage: gsdd <command> [args]
|
|
169
|
+
|
|
169
170
|
Commands:
|
|
170
171
|
init [--tools <platform>] [--auto] [--brief <file>]
|
|
171
172
|
Launch guided install wizard in TTYs, or use --tools for manual/headless setup
|
|
172
173
|
--auto: non-interactive mode with smart defaults (requires --tools)
|
|
173
174
|
--brief <file>: copy project brief to .planning/PROJECT_BRIEF.md
|
|
174
|
-
update [--tools <platform>] [--templates] [--dry]
|
|
175
|
-
Regenerate adapters from latest framework sources
|
|
176
|
-
--templates: also refresh .planning/templates/ and roles
|
|
177
|
-
--dry: preview changes without writing files
|
|
175
|
+
update [--tools <platform>] [--templates] [--dry]
|
|
176
|
+
Regenerate adapters from latest framework sources
|
|
177
|
+
--templates: also refresh .planning/templates/ and roles
|
|
178
|
+
--dry: preview changes without writing files
|
|
178
179
|
health [--json] Check workspace integrity (healthy/degraded/broken)
|
|
179
180
|
models [subcommand] Inspect or update model profile / runtime overrides
|
|
180
181
|
find-phase [N] Show phase info as JSON (for agent consumption)
|
|
@@ -186,50 +187,50 @@ Commands:
|
|
|
186
187
|
lifecycle-preflight <surface> [phase]
|
|
187
188
|
Inspect deterministic lifecycle gate results for a workflow surface
|
|
188
189
|
help Show this summary
|
|
189
|
-
|
|
190
|
-
Platforms (for --tools):
|
|
191
|
-
claude Generate Claude Code skills (.claude/skills/gsdd-*), commands (.claude/commands/gsdd-*.md), and native agents (.claude/agents/gsdd-*.md)
|
|
192
|
-
opencode Generate OpenCode local slash commands (.opencode/commands/gsdd-*.md) + native agents (.opencode/agents/gsdd-*.md)
|
|
193
|
-
codex Generate Codex CLI native plan-checker agent (.codex/agents/gsdd-plan-checker.toml)
|
|
194
|
-
agents Generate/Update root AGENTS.md (bounded GSDD block)
|
|
195
|
-
cursor Generate root AGENTS.md governance block; workflows are already discovered natively from .agents/skills/ (legacy alias kept for backward compatibility)
|
|
196
|
-
copilot Generate root AGENTS.md governance block; workflows are already discovered natively from .agents/skills/ (legacy alias kept for backward compatibility)
|
|
197
|
-
gemini Generate root AGENTS.md governance block; workflows are already discovered natively from .agents/skills/ (legacy alias kept for backward compatibility)
|
|
198
|
-
all Generate all adapters (Claude, OpenCode, Codex, AGENTS.md, Cursor, Copilot, Gemini)
|
|
199
|
-
|
|
190
|
+
|
|
191
|
+
Platforms (for --tools):
|
|
192
|
+
claude Generate Claude Code skills (.claude/skills/gsdd-*), commands (.claude/commands/gsdd-*.md), and native agents (.claude/agents/gsdd-*.md)
|
|
193
|
+
opencode Generate OpenCode local slash commands (.opencode/commands/gsdd-*.md) + native agents (.opencode/agents/gsdd-*.md)
|
|
194
|
+
codex Generate Codex CLI native plan-checker agent (.codex/agents/gsdd-plan-checker.toml)
|
|
195
|
+
agents Generate/Update root AGENTS.md (bounded GSDD block)
|
|
196
|
+
cursor Generate root AGENTS.md governance block; workflows are already discovered natively from .agents/skills/ (legacy alias kept for backward compatibility)
|
|
197
|
+
copilot Generate root AGENTS.md governance block; workflows are already discovered natively from .agents/skills/ (legacy alias kept for backward compatibility)
|
|
198
|
+
gemini Generate root AGENTS.md governance block; workflows are already discovered natively from .agents/skills/ (legacy alias kept for backward compatibility)
|
|
199
|
+
all Generate all adapters (Claude, OpenCode, Codex, AGENTS.md, Cursor, Copilot, Gemini)
|
|
200
|
+
|
|
200
201
|
Notes:
|
|
201
202
|
- init always generates open-standard skills at .agents/skills/gsdd-*; this is the shared workflow entry surface
|
|
202
203
|
- init also generates a local .planning/bin/gsdd* helper surface for workflow-embedded lifecycle helpers; it is internal/advanced, not the normal first-run user entrypoint
|
|
203
204
|
- Workspine is the public product name; the retained package, command, workflow, and workspace contracts stay gsdd-cli, gsdd, gsdd-*, and .planning/
|
|
204
|
-
- running
|
|
205
|
+
- running \`npx -y gsdd-cli init\` in a terminal opens the guided runtime-selection wizard; bare \`gsdd init\` is equivalent only when globally installed
|
|
205
206
|
- the wizard lets you pick runtimes first, then separately decide whether repo-wide AGENTS.md governance is worth installing
|
|
206
|
-
- \`gsdd health\` compares any installed generated runtime surfaces against current render output and points back to \`gsdd update\` when they drift
|
|
207
|
+
- \`npx -y gsdd-cli health\` compares any installed generated runtime surfaces against current render output and points back to \`npx -y gsdd-cli update\` when they drift
|
|
207
208
|
- directly validated launch surfaces in this repo are Claude Code, OpenCode, and Codex CLI
|
|
208
209
|
- Cursor, Copilot, and Gemini are qualified support through the shared .agents/skills/ surface plus optional governance
|
|
209
210
|
- --tools remains the advanced/manual path and preserves legacy runtime aliases for backward compatibility
|
|
210
211
|
- --tools codex generates .codex/agents/gsdd-plan-checker.toml (portable skill is the entry surface; $gsdd-plan is plan-only until explicit $gsdd-execute)
|
|
211
212
|
- root AGENTS.md is only written on init when explicitly requested via --tools agents, --tools all, or the wizard governance opt-in
|
|
212
|
-
- normal user path: npx gsdd-cli init -> run /gsdd-* or $gsdd-* -> gsdd health -> npx gsdd-cli update when repair or refresh is needed
|
|
213
|
+
- normal user path: npx -y gsdd-cli init -> run /gsdd-* or $gsdd-* -> npx -y gsdd-cli health -> npx -y gsdd-cli update when repair or refresh is needed
|
|
213
214
|
- post-init, choose your starting lane honestly: new-project for greenfield or fuzzy/milestone work, quick for a concrete bounded change, map-codebase first when the repo needs deeper orientation
|
|
214
215
|
|
|
215
216
|
Examples:
|
|
216
|
-
npx gsdd-cli init
|
|
217
|
-
npx gsdd-cli init --tools claude
|
|
218
|
-
npx gsdd-cli init --tools cursor
|
|
219
|
-
npx gsdd-cli init --auto --tools claude --brief project-idea.md
|
|
220
|
-
npx gsdd-cli init --auto --tools all
|
|
221
|
-
npx gsdd-cli models show
|
|
222
|
-
npx gsdd-cli models profile quality
|
|
223
|
-
npx gsdd-cli models agent-profile --agent plan-checker --profile quality
|
|
224
|
-
npx gsdd-cli models set --runtime opencode --agent plan-checker --model anthropic/claude-opus-4-6
|
|
225
|
-
npx gsdd-cli models clear --runtime opencode --agent plan-checker
|
|
226
|
-
npx gsdd-cli init --tools agents
|
|
227
|
-
npx gsdd-cli init --tools all
|
|
228
|
-
npx gsdd-cli update
|
|
229
|
-
npx gsdd-cli find-phase
|
|
230
|
-
npx gsdd-cli verify 1
|
|
231
|
-
npx gsdd-cli scaffold phase 4 Payments
|
|
232
|
-
|
|
217
|
+
npx -y gsdd-cli init
|
|
218
|
+
npx -y gsdd-cli init --tools claude
|
|
219
|
+
npx -y gsdd-cli init --tools cursor
|
|
220
|
+
npx -y gsdd-cli init --auto --tools claude --brief project-idea.md
|
|
221
|
+
npx -y gsdd-cli init --auto --tools all
|
|
222
|
+
npx -y gsdd-cli models show
|
|
223
|
+
npx -y gsdd-cli models profile quality
|
|
224
|
+
npx -y gsdd-cli models agent-profile --agent plan-checker --profile quality
|
|
225
|
+
npx -y gsdd-cli models set --runtime opencode --agent plan-checker --model anthropic/claude-opus-4-6
|
|
226
|
+
npx -y gsdd-cli models clear --runtime opencode --agent plan-checker
|
|
227
|
+
npx -y gsdd-cli init --tools agents
|
|
228
|
+
npx -y gsdd-cli init --tools all
|
|
229
|
+
npx -y gsdd-cli update
|
|
230
|
+
npx -y gsdd-cli find-phase
|
|
231
|
+
npx -y gsdd-cli verify 1
|
|
232
|
+
npx -y gsdd-cli scaffold phase 4 Payments
|
|
233
|
+
|
|
233
234
|
Workflows (run via skills/adapters generated by init, not direct CLI):
|
|
234
235
|
gsdd-new-project Full initializer: questioning, brownfield audit, research, spec, roadmap
|
|
235
236
|
gsdd-map-codebase Map or refresh brownfield codebase context before choosing or refreshing a work lane
|
package/bin/lib/init.mjs
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
// init.mjs - thin public facade for init/update commands and prompt helpers
|
|
2
|
-
|
|
3
|
-
import { createCmdInit, createCmdUpdate } from './init-flow.mjs';
|
|
4
|
-
import { createInitPromptApi, promptChoiceList } from './init-prompts.mjs';
|
|
5
|
-
import { buildRuntimeChoices, detectPlatforms, getHelpText, normalizeRequestedTools } from './init-runtime.mjs';
|
|
6
|
-
|
|
1
|
+
// init.mjs - thin public facade for init/update commands and prompt helpers
|
|
2
|
+
|
|
3
|
+
import { createCmdInit, createCmdUpdate } from './init-flow.mjs';
|
|
4
|
+
import { createInitPromptApi, promptChoiceList } from './init-prompts.mjs';
|
|
5
|
+
import { buildRuntimeChoices, detectPlatforms, getHelpText, normalizeRequestedTools } from './init-runtime.mjs';
|
|
6
|
+
|
|
7
7
|
function cmdHelp() {
|
|
8
8
|
console.log(getHelpText().trimEnd());
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
buildRuntimeChoices,
|
|
13
|
-
cmdHelp,
|
|
14
|
-
createCmdInit,
|
|
15
|
-
createCmdUpdate,
|
|
16
|
-
createInitPromptApi,
|
|
17
|
-
detectPlatforms,
|
|
18
|
-
normalizeRequestedTools,
|
|
19
|
-
promptChoiceList,
|
|
20
|
-
};
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
buildRuntimeChoices,
|
|
13
|
+
cmdHelp,
|
|
14
|
+
createCmdInit,
|
|
15
|
+
createCmdUpdate,
|
|
16
|
+
createInitPromptApi,
|
|
17
|
+
detectPlatforms,
|
|
18
|
+
normalizeRequestedTools,
|
|
19
|
+
promptChoiceList,
|
|
20
|
+
};
|