gspec 1.5.1 → 1.6.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/bin/gspec.js +88 -0
- package/dist/antigravity/gspec-architect/SKILL.md +1 -1
- package/dist/antigravity/gspec-epic/SKILL.md +1 -1
- package/dist/antigravity/gspec-feature/SKILL.md +1 -1
- package/dist/antigravity/gspec-implement/SKILL.md +1 -1
- package/dist/antigravity/gspec-migrate/SKILL.md +5 -5
- package/dist/antigravity/gspec-practices/SKILL.md +1 -1
- package/dist/antigravity/gspec-profile/SKILL.md +1 -1
- package/dist/antigravity/gspec-research/SKILL.md +3 -3
- package/dist/antigravity/gspec-stack/SKILL.md +1 -1
- package/dist/antigravity/gspec-style/SKILL.md +1 -1
- package/dist/claude/gspec-architect/SKILL.md +1 -1
- package/dist/claude/gspec-epic/SKILL.md +1 -1
- package/dist/claude/gspec-feature/SKILL.md +1 -1
- package/dist/claude/gspec-implement/SKILL.md +1 -1
- package/dist/claude/gspec-migrate/SKILL.md +5 -5
- package/dist/claude/gspec-practices/SKILL.md +1 -1
- package/dist/claude/gspec-profile/SKILL.md +1 -1
- package/dist/claude/gspec-research/SKILL.md +3 -3
- package/dist/claude/gspec-stack/SKILL.md +1 -1
- package/dist/claude/gspec-style/SKILL.md +1 -1
- package/dist/codex/gspec-architect/SKILL.md +1 -1
- package/dist/codex/gspec-epic/SKILL.md +1 -1
- package/dist/codex/gspec-feature/SKILL.md +1 -1
- package/dist/codex/gspec-implement/SKILL.md +1 -1
- package/dist/codex/gspec-migrate/SKILL.md +5 -5
- package/dist/codex/gspec-practices/SKILL.md +1 -1
- package/dist/codex/gspec-profile/SKILL.md +1 -1
- package/dist/codex/gspec-research/SKILL.md +3 -3
- package/dist/codex/gspec-stack/SKILL.md +1 -1
- package/dist/codex/gspec-style/SKILL.md +1 -1
- package/dist/cursor/gspec-architect.mdc +1 -1
- package/dist/cursor/gspec-epic.mdc +1 -1
- package/dist/cursor/gspec-feature.mdc +1 -1
- package/dist/cursor/gspec-implement.mdc +1 -1
- package/dist/cursor/gspec-migrate.mdc +5 -5
- package/dist/cursor/gspec-practices.mdc +1 -1
- package/dist/cursor/gspec-profile.mdc +1 -1
- package/dist/cursor/gspec-research.mdc +3 -3
- package/dist/cursor/gspec-stack.mdc +1 -1
- package/dist/cursor/gspec-style.mdc +1 -1
- package/package.json +2 -1
- package/templates/spec-sync.md +26 -0
- package/commands/gspec.dor.md +0 -220
- package/commands/gspec.record.md +0 -168
- package/dist/antigravity/gspec-dor/SKILL.md +0 -224
- package/dist/antigravity/gspec-record/SKILL.md +0 -172
- package/dist/claude/gspec-dor/SKILL.md +0 -225
- package/dist/claude/gspec-record/SKILL.md +0 -173
- package/dist/codex/gspec-dor/SKILL.md +0 -224
- package/dist/codex/gspec-record/SKILL.md +0 -172
- package/dist/cursor/gspec-dor.mdc +0 -223
- package/dist/cursor/gspec-record.mdc +0 -171
package/bin/gspec.js
CHANGED
|
@@ -99,6 +99,16 @@ function promptConfirm(message) {
|
|
|
99
99
|
});
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
function promptConfirmNo(message) {
|
|
103
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
104
|
+
return new Promise((resolve) => {
|
|
105
|
+
rl.question(message, (answer) => {
|
|
106
|
+
rl.close();
|
|
107
|
+
resolve(answer.trim().toLowerCase().startsWith('n'));
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
102
112
|
async function findExistingFiles(target, cwd) {
|
|
103
113
|
const existing = [];
|
|
104
114
|
const destBase = join(cwd, target.installDir);
|
|
@@ -225,6 +235,78 @@ async function install(targetName, cwd) {
|
|
|
225
235
|
console.log(chalk.bold(` Created gspec/ directory with README.md\n`));
|
|
226
236
|
}
|
|
227
237
|
|
|
238
|
+
// Spec-sync instructions: platform-specific config for "always-on" agent rules
|
|
239
|
+
const SPEC_SYNC = {
|
|
240
|
+
claude: {
|
|
241
|
+
file: 'CLAUDE.md',
|
|
242
|
+
mode: 'append', // append to existing file or create new
|
|
243
|
+
wrap: (content) => content,
|
|
244
|
+
},
|
|
245
|
+
cursor: {
|
|
246
|
+
file: '.cursor/rules/gspec.mdc',
|
|
247
|
+
mode: 'create', // dedicated rule file, safe to overwrite
|
|
248
|
+
wrap: (content) => `---\ndescription: gspec specification sync — keeps living specs in sync with code changes\nalwaysApply: true\n---\n\n${content}`,
|
|
249
|
+
},
|
|
250
|
+
antigravity: {
|
|
251
|
+
file: '.agent/rules/gspec.mdc',
|
|
252
|
+
mode: 'create',
|
|
253
|
+
wrap: (content) => `---\ndescription: gspec specification sync — keeps living specs in sync with code changes\nalwaysApply: true\n---\n\n${content}`,
|
|
254
|
+
},
|
|
255
|
+
codex: {
|
|
256
|
+
file: 'AGENTS.md',
|
|
257
|
+
mode: 'append',
|
|
258
|
+
wrap: (content) => content,
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
const GSPEC_SECTION_MARKER = '<!-- gspec:spec-sync -->';
|
|
263
|
+
|
|
264
|
+
async function installSpecSync(targetName, cwd) {
|
|
265
|
+
const config = SPEC_SYNC[targetName];
|
|
266
|
+
if (!config) return;
|
|
267
|
+
|
|
268
|
+
const templatePath = join(__dirname, '..', 'templates', 'spec-sync.md');
|
|
269
|
+
const template = await readFile(templatePath, 'utf-8');
|
|
270
|
+
const wrapped = config.wrap(template);
|
|
271
|
+
const destPath = join(cwd, config.file);
|
|
272
|
+
|
|
273
|
+
if (config.mode === 'append') {
|
|
274
|
+
// For CLAUDE.md / AGENTS.md: append with a marker so we can detect and replace on re-install
|
|
275
|
+
let existing = '';
|
|
276
|
+
try {
|
|
277
|
+
existing = await readFile(destPath, 'utf-8');
|
|
278
|
+
} catch (e) {
|
|
279
|
+
if (e.code !== 'ENOENT') throw e;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
const markedContent = `${GSPEC_SECTION_MARKER}\n${wrapped}\n${GSPEC_SECTION_MARKER}`;
|
|
283
|
+
|
|
284
|
+
if (existing.includes(GSPEC_SECTION_MARKER)) {
|
|
285
|
+
// Replace existing gspec section
|
|
286
|
+
const updated = existing.replace(
|
|
287
|
+
new RegExp(`${GSPEC_SECTION_MARKER}[\\s\\S]*?${GSPEC_SECTION_MARKER}`),
|
|
288
|
+
markedContent,
|
|
289
|
+
);
|
|
290
|
+
await writeFile(destPath, updated, 'utf-8');
|
|
291
|
+
console.log(` ${chalk.green('~')} Updated gspec section in ${config.file}`);
|
|
292
|
+
} else if (existing.length > 0) {
|
|
293
|
+
// Append to existing file
|
|
294
|
+
const separator = existing.endsWith('\n') ? '\n' : '\n\n';
|
|
295
|
+
await writeFile(destPath, existing + separator + markedContent + '\n', 'utf-8');
|
|
296
|
+
console.log(` ${chalk.green('+')} Appended gspec section to ${config.file}`);
|
|
297
|
+
} else {
|
|
298
|
+
// New file
|
|
299
|
+
await writeFile(destPath, markedContent + '\n', 'utf-8');
|
|
300
|
+
console.log(` ${chalk.green('+')} Created ${config.file}`);
|
|
301
|
+
}
|
|
302
|
+
} else {
|
|
303
|
+
// For .mdc rule files: create/overwrite the dedicated file
|
|
304
|
+
await mkdir(dirname(destPath), { recursive: true });
|
|
305
|
+
await writeFile(destPath, wrapped, 'utf-8');
|
|
306
|
+
console.log(` ${chalk.green('+')} Created ${config.file}`);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
|
|
228
310
|
const MIGRATE_COMMANDS = {
|
|
229
311
|
claude: '/gspec-migrate',
|
|
230
312
|
cursor: '/gspec-migrate',
|
|
@@ -323,6 +405,12 @@ program
|
|
|
323
405
|
}
|
|
324
406
|
|
|
325
407
|
await install(targetName, process.cwd());
|
|
408
|
+
|
|
409
|
+
const skipSync = await promptConfirmNo(chalk.bold(' Enable automatic spec sync? (keeps gspec specs up to date as code changes) [Y/n]: '));
|
|
410
|
+
if (!skipSync) {
|
|
411
|
+
await installSpecSync(targetName, process.cwd());
|
|
412
|
+
}
|
|
413
|
+
|
|
326
414
|
await checkGspecFiles(process.cwd(), targetName);
|
|
327
415
|
});
|
|
328
416
|
|
|
@@ -46,7 +46,7 @@ All of these provide essential context. If any are missing, note the gap and mak
|
|
|
46
46
|
- Begin the file with YAML frontmatter containing the gspec version:
|
|
47
47
|
```
|
|
48
48
|
---
|
|
49
|
-
gspec-version: 1.
|
|
49
|
+
gspec-version: 1.6.0
|
|
50
50
|
---
|
|
51
51
|
```
|
|
52
52
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -78,7 +78,7 @@ Epic summaries and the feature PRDs they produce are designed to be **portable a
|
|
|
78
78
|
- Begin every output file (both epic summary and individual feature PRDs) with YAML frontmatter containing the gspec version:
|
|
79
79
|
```
|
|
80
80
|
---
|
|
81
|
-
gspec-version: 1.
|
|
81
|
+
gspec-version: 1.6.0
|
|
82
82
|
---
|
|
83
83
|
```
|
|
84
84
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -68,7 +68,7 @@ Feature PRDs are designed to be **portable across projects**. A feature spec wri
|
|
|
68
68
|
- Begin the file with YAML frontmatter containing the gspec version:
|
|
69
69
|
```
|
|
70
70
|
---
|
|
71
|
-
gspec-version: 1.
|
|
71
|
+
gspec-version: 1.6.0
|
|
72
72
|
---
|
|
73
73
|
```
|
|
74
74
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -112,7 +112,7 @@ Present a brief scaffold summary to the user before proceeding to feature implem
|
|
|
112
112
|
b. **Follow the practices** — Adhere to coding standards, testing requirements, and conventions from `gspec/practices.md`
|
|
113
113
|
c. **Follow the style** — Apply the design system, tokens, and component patterns from `gspec/style.md`
|
|
114
114
|
d. **Satisfy the requirements** — Trace each piece of code back to a functional requirement in the feature PRD (if available) or to the user's stated goals and the approved implementation plan
|
|
115
|
-
3. **Mark capabilities as implemented** — After successfully implementing each capability, immediately update the feature PRD by changing its checkbox from `- [ ]` to `- [x]`. Do this incrementally as each capability is completed, not in a batch at the end. If a capability line did not have a checkbox prefix, add one as `- [x]`. This ensures that if the session is interrupted, progress is not lost. When updating gspec files, preserve existing `gspec-version` YAML frontmatter. If a file lacks frontmatter, add `---\ngspec-version: 1.
|
|
115
|
+
3. **Mark capabilities as implemented** — After successfully implementing each capability, immediately update the feature PRD by changing its checkbox from `- [ ]` to `- [x]`. Do this incrementally as each capability is completed, not in a batch at the end. If a capability line did not have a checkbox prefix, add one as `- [x]`. This ensures that if the session is interrupted, progress is not lost. When updating gspec files, preserve existing `gspec-version` YAML frontmatter. If a file lacks frontmatter, add `---\ngspec-version: 1.6.0\n---` at the top.
|
|
116
116
|
4. **Update epic status** — When all capabilities in a feature PRD are checked, update the corresponding feature's checkbox in the epic summary file (if one exists) from `- [ ]` to `- [x]`.
|
|
117
117
|
5. **Run tests** — Execute the tests defined for this phase (and any existing tests to catch regressions). Fix any failures before proceeding.
|
|
118
118
|
6. **Surface new gaps** — If implementation reveals new ambiguities, pause and consult the user rather than making silent assumptions
|
|
@@ -5,7 +5,7 @@ description: Migrate existing gspec files to the current format when upgrading t
|
|
|
5
5
|
|
|
6
6
|
You are a Technical Documentation Migration Specialist.
|
|
7
7
|
|
|
8
|
-
Your task is to update existing gspec specification documents to match the current gspec format (version 1.
|
|
8
|
+
Your task is to update existing gspec specification documents to match the current gspec format (version 1.6.0). You preserve all substantive content while ensuring documents follow the latest structural conventions.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -21,14 +21,14 @@ Scan the `gspec/` directory for all Markdown files:
|
|
|
21
21
|
For each file, check the YAML frontmatter at the top of the file:
|
|
22
22
|
- If the file starts with `---` followed by YAML content and another `---`, read the `gspec-version` field
|
|
23
23
|
- If no frontmatter exists, the file predates version tracking
|
|
24
|
-
- If `gspec-version` matches `1.
|
|
24
|
+
- If `gspec-version` matches `1.6.0`, the file is current — skip it
|
|
25
25
|
|
|
26
26
|
Present an inventory to the user:
|
|
27
27
|
|
|
28
28
|
> **gspec File Inventory:**
|
|
29
29
|
> - `gspec/profile.md` — no version (needs migration)
|
|
30
30
|
> - `gspec/stack.md` — version 1.0.3 (needs migration)
|
|
31
|
-
> - `gspec/style.md` — version 1.
|
|
31
|
+
> - `gspec/style.md` — version 1.6.0 (current, skipping)
|
|
32
32
|
> - `gspec/features/user-auth.md` — no version (needs migration)
|
|
33
33
|
|
|
34
34
|
Ask the user to confirm which files to migrate, or confirm all.
|
|
@@ -64,7 +64,7 @@ For each file to migrate:
|
|
|
64
64
|
5. **Add or update the frontmatter** — Ensure the file starts with:
|
|
65
65
|
```
|
|
66
66
|
---
|
|
67
|
-
gspec-version: 1.
|
|
67
|
+
gspec-version: 1.6.0
|
|
68
68
|
---
|
|
69
69
|
```
|
|
70
70
|
6. **Present the proposed changes** to the user before writing. Show what sections are being reorganized, what is being added, and confirm no content is being lost.
|
|
@@ -78,7 +78,7 @@ After migrating all files:
|
|
|
78
78
|
3. **Present a completion summary**:
|
|
79
79
|
|
|
80
80
|
> **Migration Complete:**
|
|
81
|
-
> - 4 files migrated to version 1.
|
|
81
|
+
> - 4 files migrated to version 1.6.0
|
|
82
82
|
> - 2 files were already current (skipped)
|
|
83
83
|
> - Content preserved in all files
|
|
84
84
|
> - Sections reorganized: [list any structural changes]
|
|
@@ -162,7 +162,7 @@ After writing `gspec/research.md`, ask the user:
|
|
|
162
162
|
- Assumptions & Risks (assumptions, open questions, key risks and mitigations)
|
|
163
163
|
- Success Metrics
|
|
164
164
|
- Implementation Context (standard portability note)
|
|
165
|
-
- Begin the file with YAML frontmatter: `---\ngspec-version: 1.
|
|
165
|
+
- Begin the file with YAML frontmatter: `---\ngspec-version: 1.6.0\n---`
|
|
166
166
|
2. **Name the file** descriptively based on the feature (e.g., `gspec/features/csv-export.md`, `gspec/features/onboarding-wizard.md`)
|
|
167
167
|
3. **Keep the PRD portable** — use generic role descriptions (not project-specific persona names), define success metrics in terms of the feature's own outcomes (not project-level KPIs), and describe UX behavior generically (not tied to a specific design system). The PRD should be reusable across projects.
|
|
168
168
|
4. **Keep the PRD product-focused** — describe *what* and *why*, not *how*. Implementation details belong in the code, not the PRD.
|
|
@@ -181,7 +181,7 @@ After writing `gspec/research.md`, ask the user:
|
|
|
181
181
|
- Begin `gspec/research.md` with YAML frontmatter containing the gspec version:
|
|
182
182
|
```
|
|
183
183
|
---
|
|
184
|
-
gspec-version: 1.
|
|
184
|
+
gspec-version: 1.6.0
|
|
185
185
|
---
|
|
186
186
|
```
|
|
187
187
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -198,7 +198,7 @@ The `gspec/research.md` file must follow this structure:
|
|
|
198
198
|
|
|
199
199
|
```markdown
|
|
200
200
|
---
|
|
201
|
-
gspec-version: 1.
|
|
201
|
+
gspec-version: 1.6.0
|
|
202
202
|
---
|
|
203
203
|
|
|
204
204
|
# Competitive Research
|
|
@@ -46,7 +46,7 @@ All of these provide essential context. If any are missing, note the gap and mak
|
|
|
46
46
|
- Begin the file with YAML frontmatter containing the gspec version:
|
|
47
47
|
```
|
|
48
48
|
---
|
|
49
|
-
gspec-version: 1.
|
|
49
|
+
gspec-version: 1.6.0
|
|
50
50
|
---
|
|
51
51
|
```
|
|
52
52
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -78,7 +78,7 @@ Epic summaries and the feature PRDs they produce are designed to be **portable a
|
|
|
78
78
|
- Begin every output file (both epic summary and individual feature PRDs) with YAML frontmatter containing the gspec version:
|
|
79
79
|
```
|
|
80
80
|
---
|
|
81
|
-
gspec-version: 1.
|
|
81
|
+
gspec-version: 1.6.0
|
|
82
82
|
---
|
|
83
83
|
```
|
|
84
84
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -68,7 +68,7 @@ Feature PRDs are designed to be **portable across projects**. A feature spec wri
|
|
|
68
68
|
- Begin the file with YAML frontmatter containing the gspec version:
|
|
69
69
|
```
|
|
70
70
|
---
|
|
71
|
-
gspec-version: 1.
|
|
71
|
+
gspec-version: 1.6.0
|
|
72
72
|
---
|
|
73
73
|
```
|
|
74
74
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -112,7 +112,7 @@ Present a brief scaffold summary to the user before proceeding to feature implem
|
|
|
112
112
|
b. **Follow the practices** — Adhere to coding standards, testing requirements, and conventions from `gspec/practices.md`
|
|
113
113
|
c. **Follow the style** — Apply the design system, tokens, and component patterns from `gspec/style.md`
|
|
114
114
|
d. **Satisfy the requirements** — Trace each piece of code back to a functional requirement in the feature PRD (if available) or to the user's stated goals and the approved implementation plan
|
|
115
|
-
3. **Mark capabilities as implemented** — After successfully implementing each capability, immediately update the feature PRD by changing its checkbox from `- [ ]` to `- [x]`. Do this incrementally as each capability is completed, not in a batch at the end. If a capability line did not have a checkbox prefix, add one as `- [x]`. This ensures that if the session is interrupted, progress is not lost. When updating gspec files, preserve existing `gspec-version` YAML frontmatter. If a file lacks frontmatter, add `---\ngspec-version: 1.
|
|
115
|
+
3. **Mark capabilities as implemented** — After successfully implementing each capability, immediately update the feature PRD by changing its checkbox from `- [ ]` to `- [x]`. Do this incrementally as each capability is completed, not in a batch at the end. If a capability line did not have a checkbox prefix, add one as `- [x]`. This ensures that if the session is interrupted, progress is not lost. When updating gspec files, preserve existing `gspec-version` YAML frontmatter. If a file lacks frontmatter, add `---\ngspec-version: 1.6.0\n---` at the top.
|
|
116
116
|
4. **Update epic status** — When all capabilities in a feature PRD are checked, update the corresponding feature's checkbox in the epic summary file (if one exists) from `- [ ]` to `- [x]`.
|
|
117
117
|
5. **Run tests** — Execute the tests defined for this phase (and any existing tests to catch regressions). Fix any failures before proceeding.
|
|
118
118
|
6. **Surface new gaps** — If implementation reveals new ambiguities, pause and consult the user rather than making silent assumptions
|
|
@@ -5,7 +5,7 @@ description: Migrate existing gspec files to the current format when upgrading t
|
|
|
5
5
|
|
|
6
6
|
You are a Technical Documentation Migration Specialist.
|
|
7
7
|
|
|
8
|
-
Your task is to update existing gspec specification documents to match the current gspec format (version 1.
|
|
8
|
+
Your task is to update existing gspec specification documents to match the current gspec format (version 1.6.0). You preserve all substantive content while ensuring documents follow the latest structural conventions.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -21,14 +21,14 @@ Scan the `gspec/` directory for all Markdown files:
|
|
|
21
21
|
For each file, check the YAML frontmatter at the top of the file:
|
|
22
22
|
- If the file starts with `---` followed by YAML content and another `---`, read the `gspec-version` field
|
|
23
23
|
- If no frontmatter exists, the file predates version tracking
|
|
24
|
-
- If `gspec-version` matches `1.
|
|
24
|
+
- If `gspec-version` matches `1.6.0`, the file is current — skip it
|
|
25
25
|
|
|
26
26
|
Present an inventory to the user:
|
|
27
27
|
|
|
28
28
|
> **gspec File Inventory:**
|
|
29
29
|
> - `gspec/profile.md` — no version (needs migration)
|
|
30
30
|
> - `gspec/stack.md` — version 1.0.3 (needs migration)
|
|
31
|
-
> - `gspec/style.md` — version 1.
|
|
31
|
+
> - `gspec/style.md` — version 1.6.0 (current, skipping)
|
|
32
32
|
> - `gspec/features/user-auth.md` — no version (needs migration)
|
|
33
33
|
|
|
34
34
|
Ask the user to confirm which files to migrate, or confirm all.
|
|
@@ -64,7 +64,7 @@ For each file to migrate:
|
|
|
64
64
|
5. **Add or update the frontmatter** — Ensure the file starts with:
|
|
65
65
|
```
|
|
66
66
|
---
|
|
67
|
-
gspec-version: 1.
|
|
67
|
+
gspec-version: 1.6.0
|
|
68
68
|
---
|
|
69
69
|
```
|
|
70
70
|
6. **Present the proposed changes** to the user before writing. Show what sections are being reorganized, what is being added, and confirm no content is being lost.
|
|
@@ -78,7 +78,7 @@ After migrating all files:
|
|
|
78
78
|
3. **Present a completion summary**:
|
|
79
79
|
|
|
80
80
|
> **Migration Complete:**
|
|
81
|
-
> - 4 files migrated to version 1.
|
|
81
|
+
> - 4 files migrated to version 1.6.0
|
|
82
82
|
> - 2 files were already current (skipped)
|
|
83
83
|
> - Content preserved in all files
|
|
84
84
|
> - Sections reorganized: [list any structural changes]
|
|
@@ -162,7 +162,7 @@ After writing `gspec/research.md`, ask the user:
|
|
|
162
162
|
- Assumptions & Risks (assumptions, open questions, key risks and mitigations)
|
|
163
163
|
- Success Metrics
|
|
164
164
|
- Implementation Context (standard portability note)
|
|
165
|
-
- Begin the file with YAML frontmatter: `---\ngspec-version: 1.
|
|
165
|
+
- Begin the file with YAML frontmatter: `---\ngspec-version: 1.6.0\n---`
|
|
166
166
|
2. **Name the file** descriptively based on the feature (e.g., `gspec/features/csv-export.md`, `gspec/features/onboarding-wizard.md`)
|
|
167
167
|
3. **Keep the PRD portable** — use generic role descriptions (not project-specific persona names), define success metrics in terms of the feature's own outcomes (not project-level KPIs), and describe UX behavior generically (not tied to a specific design system). The PRD should be reusable across projects.
|
|
168
168
|
4. **Keep the PRD product-focused** — describe *what* and *why*, not *how*. Implementation details belong in the code, not the PRD.
|
|
@@ -181,7 +181,7 @@ After writing `gspec/research.md`, ask the user:
|
|
|
181
181
|
- Begin `gspec/research.md` with YAML frontmatter containing the gspec version:
|
|
182
182
|
```
|
|
183
183
|
---
|
|
184
|
-
gspec-version: 1.
|
|
184
|
+
gspec-version: 1.6.0
|
|
185
185
|
---
|
|
186
186
|
```
|
|
187
187
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -198,7 +198,7 @@ The `gspec/research.md` file must follow this structure:
|
|
|
198
198
|
|
|
199
199
|
```markdown
|
|
200
200
|
---
|
|
201
|
-
gspec-version: 1.
|
|
201
|
+
gspec-version: 1.6.0
|
|
202
202
|
---
|
|
203
203
|
|
|
204
204
|
# Competitive Research
|
|
@@ -46,7 +46,7 @@ All of these provide essential context. If any are missing, note the gap and mak
|
|
|
46
46
|
- Begin the file with YAML frontmatter containing the gspec version:
|
|
47
47
|
```
|
|
48
48
|
---
|
|
49
|
-
gspec-version: 1.
|
|
49
|
+
gspec-version: 1.6.0
|
|
50
50
|
---
|
|
51
51
|
```
|
|
52
52
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -78,7 +78,7 @@ Epic summaries and the feature PRDs they produce are designed to be **portable a
|
|
|
78
78
|
- Begin every output file (both epic summary and individual feature PRDs) with YAML frontmatter containing the gspec version:
|
|
79
79
|
```
|
|
80
80
|
---
|
|
81
|
-
gspec-version: 1.
|
|
81
|
+
gspec-version: 1.6.0
|
|
82
82
|
---
|
|
83
83
|
```
|
|
84
84
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -68,7 +68,7 @@ Feature PRDs are designed to be **portable across projects**. A feature spec wri
|
|
|
68
68
|
- Begin the file with YAML frontmatter containing the gspec version:
|
|
69
69
|
```
|
|
70
70
|
---
|
|
71
|
-
gspec-version: 1.
|
|
71
|
+
gspec-version: 1.6.0
|
|
72
72
|
---
|
|
73
73
|
```
|
|
74
74
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -112,7 +112,7 @@ Present a brief scaffold summary to the user before proceeding to feature implem
|
|
|
112
112
|
b. **Follow the practices** — Adhere to coding standards, testing requirements, and conventions from `gspec/practices.md`
|
|
113
113
|
c. **Follow the style** — Apply the design system, tokens, and component patterns from `gspec/style.md`
|
|
114
114
|
d. **Satisfy the requirements** — Trace each piece of code back to a functional requirement in the feature PRD (if available) or to the user's stated goals and the approved implementation plan
|
|
115
|
-
3. **Mark capabilities as implemented** — After successfully implementing each capability, immediately update the feature PRD by changing its checkbox from `- [ ]` to `- [x]`. Do this incrementally as each capability is completed, not in a batch at the end. If a capability line did not have a checkbox prefix, add one as `- [x]`. This ensures that if the session is interrupted, progress is not lost. When updating gspec files, preserve existing `gspec-version` YAML frontmatter. If a file lacks frontmatter, add `---\ngspec-version: 1.
|
|
115
|
+
3. **Mark capabilities as implemented** — After successfully implementing each capability, immediately update the feature PRD by changing its checkbox from `- [ ]` to `- [x]`. Do this incrementally as each capability is completed, not in a batch at the end. If a capability line did not have a checkbox prefix, add one as `- [x]`. This ensures that if the session is interrupted, progress is not lost. When updating gspec files, preserve existing `gspec-version` YAML frontmatter. If a file lacks frontmatter, add `---\ngspec-version: 1.6.0\n---` at the top.
|
|
116
116
|
4. **Update epic status** — When all capabilities in a feature PRD are checked, update the corresponding feature's checkbox in the epic summary file (if one exists) from `- [ ]` to `- [x]`.
|
|
117
117
|
5. **Run tests** — Execute the tests defined for this phase (and any existing tests to catch regressions). Fix any failures before proceeding.
|
|
118
118
|
6. **Surface new gaps** — If implementation reveals new ambiguities, pause and consult the user rather than making silent assumptions
|
|
@@ -5,7 +5,7 @@ description: Migrate existing gspec files to the current format when upgrading t
|
|
|
5
5
|
|
|
6
6
|
You are a Technical Documentation Migration Specialist.
|
|
7
7
|
|
|
8
|
-
Your task is to update existing gspec specification documents to match the current gspec format (version 1.
|
|
8
|
+
Your task is to update existing gspec specification documents to match the current gspec format (version 1.6.0). You preserve all substantive content while ensuring documents follow the latest structural conventions.
|
|
9
9
|
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -21,14 +21,14 @@ Scan the `gspec/` directory for all Markdown files:
|
|
|
21
21
|
For each file, check the YAML frontmatter at the top of the file:
|
|
22
22
|
- If the file starts with `---` followed by YAML content and another `---`, read the `gspec-version` field
|
|
23
23
|
- If no frontmatter exists, the file predates version tracking
|
|
24
|
-
- If `gspec-version` matches `1.
|
|
24
|
+
- If `gspec-version` matches `1.6.0`, the file is current — skip it
|
|
25
25
|
|
|
26
26
|
Present an inventory to the user:
|
|
27
27
|
|
|
28
28
|
> **gspec File Inventory:**
|
|
29
29
|
> - `gspec/profile.md` — no version (needs migration)
|
|
30
30
|
> - `gspec/stack.md` — version 1.0.3 (needs migration)
|
|
31
|
-
> - `gspec/style.md` — version 1.
|
|
31
|
+
> - `gspec/style.md` — version 1.6.0 (current, skipping)
|
|
32
32
|
> - `gspec/features/user-auth.md` — no version (needs migration)
|
|
33
33
|
|
|
34
34
|
Ask the user to confirm which files to migrate, or confirm all.
|
|
@@ -64,7 +64,7 @@ For each file to migrate:
|
|
|
64
64
|
5. **Add or update the frontmatter** — Ensure the file starts with:
|
|
65
65
|
```
|
|
66
66
|
---
|
|
67
|
-
gspec-version: 1.
|
|
67
|
+
gspec-version: 1.6.0
|
|
68
68
|
---
|
|
69
69
|
```
|
|
70
70
|
6. **Present the proposed changes** to the user before writing. Show what sections are being reorganized, what is being added, and confirm no content is being lost.
|
|
@@ -78,7 +78,7 @@ After migrating all files:
|
|
|
78
78
|
3. **Present a completion summary**:
|
|
79
79
|
|
|
80
80
|
> **Migration Complete:**
|
|
81
|
-
> - 4 files migrated to version 1.
|
|
81
|
+
> - 4 files migrated to version 1.6.0
|
|
82
82
|
> - 2 files were already current (skipped)
|
|
83
83
|
> - Content preserved in all files
|
|
84
84
|
> - Sections reorganized: [list any structural changes]
|
|
@@ -162,7 +162,7 @@ After writing `gspec/research.md`, ask the user:
|
|
|
162
162
|
- Assumptions & Risks (assumptions, open questions, key risks and mitigations)
|
|
163
163
|
- Success Metrics
|
|
164
164
|
- Implementation Context (standard portability note)
|
|
165
|
-
- Begin the file with YAML frontmatter: `---\ngspec-version: 1.
|
|
165
|
+
- Begin the file with YAML frontmatter: `---\ngspec-version: 1.6.0\n---`
|
|
166
166
|
2. **Name the file** descriptively based on the feature (e.g., `gspec/features/csv-export.md`, `gspec/features/onboarding-wizard.md`)
|
|
167
167
|
3. **Keep the PRD portable** — use generic role descriptions (not project-specific persona names), define success metrics in terms of the feature's own outcomes (not project-level KPIs), and describe UX behavior generically (not tied to a specific design system). The PRD should be reusable across projects.
|
|
168
168
|
4. **Keep the PRD product-focused** — describe *what* and *why*, not *how*. Implementation details belong in the code, not the PRD.
|
|
@@ -181,7 +181,7 @@ After writing `gspec/research.md`, ask the user:
|
|
|
181
181
|
- Begin `gspec/research.md` with YAML frontmatter containing the gspec version:
|
|
182
182
|
```
|
|
183
183
|
---
|
|
184
|
-
gspec-version: 1.
|
|
184
|
+
gspec-version: 1.6.0
|
|
185
185
|
---
|
|
186
186
|
```
|
|
187
187
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -198,7 +198,7 @@ The `gspec/research.md` file must follow this structure:
|
|
|
198
198
|
|
|
199
199
|
```markdown
|
|
200
200
|
---
|
|
201
|
-
gspec-version: 1.
|
|
201
|
+
gspec-version: 1.6.0
|
|
202
202
|
---
|
|
203
203
|
|
|
204
204
|
# Competitive Research
|
|
@@ -45,7 +45,7 @@ All of these provide essential context. If any are missing, note the gap and mak
|
|
|
45
45
|
- Begin the file with YAML frontmatter containing the gspec version:
|
|
46
46
|
```
|
|
47
47
|
---
|
|
48
|
-
gspec-version: 1.
|
|
48
|
+
gspec-version: 1.6.0
|
|
49
49
|
---
|
|
50
50
|
```
|
|
51
51
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -77,7 +77,7 @@ Epic summaries and the feature PRDs they produce are designed to be **portable a
|
|
|
77
77
|
- Begin every output file (both epic summary and individual feature PRDs) with YAML frontmatter containing the gspec version:
|
|
78
78
|
```
|
|
79
79
|
---
|
|
80
|
-
gspec-version: 1.
|
|
80
|
+
gspec-version: 1.6.0
|
|
81
81
|
---
|
|
82
82
|
```
|
|
83
83
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -67,7 +67,7 @@ Feature PRDs are designed to be **portable across projects**. A feature spec wri
|
|
|
67
67
|
- Begin the file with YAML frontmatter containing the gspec version:
|
|
68
68
|
```
|
|
69
69
|
---
|
|
70
|
-
gspec-version: 1.
|
|
70
|
+
gspec-version: 1.6.0
|
|
71
71
|
---
|
|
72
72
|
```
|
|
73
73
|
The frontmatter must be the very first content in the file, before the main heading.
|
|
@@ -111,7 +111,7 @@ Present a brief scaffold summary to the user before proceeding to feature implem
|
|
|
111
111
|
b. **Follow the practices** — Adhere to coding standards, testing requirements, and conventions from `gspec/practices.md`
|
|
112
112
|
c. **Follow the style** — Apply the design system, tokens, and component patterns from `gspec/style.md`
|
|
113
113
|
d. **Satisfy the requirements** — Trace each piece of code back to a functional requirement in the feature PRD (if available) or to the user's stated goals and the approved implementation plan
|
|
114
|
-
3. **Mark capabilities as implemented** — After successfully implementing each capability, immediately update the feature PRD by changing its checkbox from `- [ ]` to `- [x]`. Do this incrementally as each capability is completed, not in a batch at the end. If a capability line did not have a checkbox prefix, add one as `- [x]`. This ensures that if the session is interrupted, progress is not lost. When updating gspec files, preserve existing `gspec-version` YAML frontmatter. If a file lacks frontmatter, add `---\ngspec-version: 1.
|
|
114
|
+
3. **Mark capabilities as implemented** — After successfully implementing each capability, immediately update the feature PRD by changing its checkbox from `- [ ]` to `- [x]`. Do this incrementally as each capability is completed, not in a batch at the end. If a capability line did not have a checkbox prefix, add one as `- [x]`. This ensures that if the session is interrupted, progress is not lost. When updating gspec files, preserve existing `gspec-version` YAML frontmatter. If a file lacks frontmatter, add `---\ngspec-version: 1.6.0\n---` at the top.
|
|
115
115
|
4. **Update epic status** — When all capabilities in a feature PRD are checked, update the corresponding feature's checkbox in the epic summary file (if one exists) from `- [ ]` to `- [x]`.
|
|
116
116
|
5. **Run tests** — Execute the tests defined for this phase (and any existing tests to catch regressions). Fix any failures before proceeding.
|
|
117
117
|
6. **Surface new gaps** — If implementation reveals new ambiguities, pause and consult the user rather than making silent assumptions
|