gsdd-cli 0.18.4 → 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 +625 -607
- 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 +209 -161
- package/bin/lib/health-truth.mjs +181 -178
- package/bin/lib/health.mjs +265 -235
- package/bin/lib/init-flow.mjs +252 -236
- package/bin/lib/init-prompts.mjs +248 -247
- package/bin/lib/init-runtime.mjs +225 -212
- package/bin/lib/init.mjs +17 -17
- package/bin/lib/lifecycle-preflight.mjs +360 -333
- 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 +397 -378
- package/bin/lib/plan-constants.mjs +30 -30
- package/bin/lib/provenance.mjs +109 -106
- package/bin/lib/rendering.mjs +178 -130
- package/bin/lib/runtime-freshness.mjs +221 -219
- package/bin/lib/templates.mjs +225 -224
- package/bin/lib/workspace-root.mjs +132 -0
- package/distilled/DESIGN.md +2347 -2327
- package/distilled/EVIDENCE-INDEX.md +397 -394
- 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 +93 -75
- package/docs/USER-GUIDE.md +440 -399
- 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,180 +1,181 @@
|
|
|
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
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
if (selectedRuntimes.includes('
|
|
154
|
-
if (selectedRuntimes.includes('
|
|
155
|
-
if (selectedRuntimes.includes('
|
|
156
|
-
if (selectedRuntimes.includes('
|
|
157
|
-
if (selectedRuntimes.includes('
|
|
158
|
-
lines.push('
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
+
|
|
151
|
+
export function getPostInitRoutingLines(selectedRuntimes) {
|
|
152
|
+
const lines = [];
|
|
153
|
+
if (selectedRuntimes.includes('claude')) lines.push(' Claude Code: /gsdd-new-project | /gsdd-quick | /gsdd-map-codebase');
|
|
154
|
+
if (selectedRuntimes.includes('opencode')) lines.push(' OpenCode: /gsdd-new-project | /gsdd-quick | /gsdd-map-codebase');
|
|
155
|
+
if (selectedRuntimes.includes('codex')) lines.push(' Codex CLI: $gsdd-new-project | $gsdd-quick | $gsdd-map-codebase');
|
|
156
|
+
if (selectedRuntimes.includes('cursor')) lines.push(' Cursor: /gsdd-new-project | /gsdd-quick | /gsdd-map-codebase');
|
|
157
|
+
if (selectedRuntimes.includes('copilot')) lines.push(' Copilot: /gsdd-new-project | /gsdd-quick | /gsdd-map-codebase');
|
|
158
|
+
if (selectedRuntimes.includes('gemini')) lines.push(' Gemini CLI: /gsdd-new-project | /gsdd-quick | /gsdd-map-codebase');
|
|
159
|
+
lines.push(' Any tool: open .agents/skills/gsdd-new-project/SKILL.md, gsdd-quick/SKILL.md, or gsdd-map-codebase/SKILL.md');
|
|
160
|
+
return lines;
|
|
161
|
+
}
|
|
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,51 +187,53 @@ 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
|
-
|
|
200
|
-
Notes:
|
|
201
|
-
- init always generates open-standard skills at .agents/skills/gsdd
|
|
202
|
-
- init also generates a local .planning/bin/gsdd* helper surface
|
|
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
|
+
|
|
201
|
+
Notes:
|
|
202
|
+
- init always generates open-standard skills at .agents/skills/gsdd-*; this is the shared workflow entry surface
|
|
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
|
-
- 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
|
-
- directly validated launch surfaces in this repo are Claude Code, OpenCode, and Codex CLI
|
|
208
|
-
- Cursor, Copilot, and Gemini are qualified support through the shared .agents/skills/ surface plus optional governance
|
|
209
|
-
- --tools remains the advanced/manual path and preserves legacy runtime aliases for backward compatibility
|
|
210
|
-
- --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
|
-
- root AGENTS.md is only written on init when explicitly requested via --tools agents, --tools all, or the wizard governance opt-in
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
npx gsdd-cli init
|
|
217
|
-
npx gsdd-cli init --
|
|
218
|
-
npx gsdd-cli init --
|
|
219
|
-
npx gsdd-cli
|
|
220
|
-
npx gsdd-cli
|
|
221
|
-
npx gsdd-cli models
|
|
222
|
-
npx gsdd-cli models
|
|
223
|
-
npx gsdd-cli models
|
|
224
|
-
npx gsdd-cli
|
|
225
|
-
npx gsdd-cli
|
|
226
|
-
npx gsdd-cli
|
|
227
|
-
npx gsdd-cli
|
|
228
|
-
npx gsdd-cli
|
|
229
|
-
npx gsdd-cli
|
|
230
|
-
|
|
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
|
|
206
|
+
- the wizard lets you pick runtimes first, then separately decide whether repo-wide AGENTS.md governance is worth installing
|
|
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
|
|
208
|
+
- directly validated launch surfaces in this repo are Claude Code, OpenCode, and Codex CLI
|
|
209
|
+
- Cursor, Copilot, and Gemini are qualified support through the shared .agents/skills/ surface plus optional governance
|
|
210
|
+
- --tools remains the advanced/manual path and preserves legacy runtime aliases for backward compatibility
|
|
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)
|
|
212
|
+
- root AGENTS.md is only written on init when explicitly requested via --tools agents, --tools all, or the wizard governance opt-in
|
|
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
|
|
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
|
|
215
|
+
|
|
216
|
+
Examples:
|
|
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
|
+
|
|
231
234
|
Workflows (run via skills/adapters generated by init, not direct CLI):
|
|
232
235
|
gsdd-new-project Full initializer: questioning, brownfield audit, research, spec, roadmap
|
|
233
|
-
gsdd-map-codebase Map or refresh brownfield codebase context
|
|
236
|
+
gsdd-map-codebase Map or refresh brownfield codebase context before choosing or refreshing a work lane
|
|
234
237
|
gsdd-plan Research, plan, and fresh-context plan check for a phase
|
|
235
238
|
gsdd-execute Execute a phase plan and write phase summaries
|
|
236
239
|
gsdd-verify Verify a completed phase with 3-level checks
|
|
@@ -243,5 +246,15 @@ Workflows (run via skills/adapters generated by init, not direct CLI):
|
|
|
243
246
|
gsdd-pause Save session context to checkpoint
|
|
244
247
|
gsdd-resume Restore context and route to the next action
|
|
245
248
|
gsdd-progress Read-only status and routing surface
|
|
249
|
+
|
|
250
|
+
Starting lanes after init:
|
|
251
|
+
gsdd-new-project Greenfield, fuzzy brownfield scope, or milestone-shaped work
|
|
252
|
+
gsdd-quick Concrete bounded brownfield change
|
|
253
|
+
gsdd-map-codebase Deeper brownfield orientation before choosing the lane above
|
|
254
|
+
|
|
255
|
+
Advanced/internal helpers (kept available, but not the primary first-run user story):
|
|
256
|
+
lifecycle-preflight Inspect deterministic lifecycle gate results for a workflow surface
|
|
257
|
+
phase-status Update ROADMAP.md phase status through the local helper surface
|
|
258
|
+
file-op Deterministic workspace-confined file copy/delete/text mutation
|
|
246
259
|
`;
|
|
247
260
|
}
|
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
|
+
};
|