@ktpartners/dgs-platform 2.7.3 → 2.7.5
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 +1845 -0
- package/agents/dgs-roadmapper.md +29 -0
- package/deliver-great-systems/bin/lib/init.cjs +5 -0
- package/deliver-great-systems/bin/lib/init.test.cjs +12 -0
- package/deliver-great-systems/workflows/new-project.md +7 -1
- package/deliver-great-systems/workflows/quick.md +4 -5
- package/deliver-great-systems/workflows/settings.md +30 -0
- package/deliver-great-systems/workflows/update.md +2 -2
- package/package.json +7 -2
package/agents/dgs-roadmapper.md
CHANGED
|
@@ -92,6 +92,32 @@ If a requirement fits multiple phases → assign to ONE (usually the first that
|
|
|
92
92
|
|
|
93
93
|
</philosophy>
|
|
94
94
|
|
|
95
|
+
<milestone_handling>
|
|
96
|
+
|
|
97
|
+
## Milestone Version
|
|
98
|
+
|
|
99
|
+
The orchestrator passes a `<milestone>` block in the planning context with `version` and `name`.
|
|
100
|
+
|
|
101
|
+
**Reading:** Extract `version` (e.g., "v17.0") and `name` (e.g., "Git Push and Pull Integration") from the `<milestone>` tag in the prompt.
|
|
102
|
+
|
|
103
|
+
**If no `<milestone>` block provided:** Default to `v1.0` / `milestone` (greenfield).
|
|
104
|
+
|
|
105
|
+
**Usage:**
|
|
106
|
+
|
|
107
|
+
When writing **STATE.md frontmatter**, use the provided version:
|
|
108
|
+
```yaml
|
|
109
|
+
---
|
|
110
|
+
dgs_state_version: 1.0
|
|
111
|
+
milestone: {version} # e.g., v17.0, NOT hardcoded v1.0
|
|
112
|
+
milestone_name: {name}
|
|
113
|
+
status: planning
|
|
114
|
+
---
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
When writing **ROADMAP.md**, use the version in milestone headings and references instead of assuming v1.0.
|
|
118
|
+
|
|
119
|
+
</milestone_handling>
|
|
120
|
+
|
|
95
121
|
<goal_backward_phases>
|
|
96
122
|
|
|
97
123
|
## Deriving Phase Success Criteria
|
|
@@ -402,6 +428,7 @@ Orchestrator provides:
|
|
|
402
428
|
- REQUIREMENTS.md content (v1 requirements with REQ-IDs)
|
|
403
429
|
- research/SUMMARY.md content (if exists - phase suggestions)
|
|
404
430
|
- config.json (granularity setting)
|
|
431
|
+
- Milestone version and name (from `<milestone>` block -- use when writing STATE.md/ROADMAP.md)
|
|
405
432
|
|
|
406
433
|
Parse and confirm understanding before proceeding.
|
|
407
434
|
|
|
@@ -462,8 +489,10 @@ If gaps found, include in draft for user decision.
|
|
|
462
489
|
Write files first, then return. This ensures artifacts persist even if context is lost.
|
|
463
490
|
|
|
464
491
|
1. **Write ROADMAP.md** using output format
|
|
492
|
+
Use milestone version from `<milestone>` block for headings (e.g., "v17.0 [Name]" not "v1.0 MVP").
|
|
465
493
|
|
|
466
494
|
2. **Write STATE.md** using output format
|
|
495
|
+
Use milestone version from `<milestone>` block in frontmatter (`milestone: {version}`, `milestone_name: {name}`).
|
|
467
496
|
|
|
468
497
|
3. **Update REQUIREMENTS.md traceability section**
|
|
469
498
|
|
|
@@ -397,6 +397,7 @@ function cmdInitNewProject(cwd, raw) {
|
|
|
397
397
|
const config = loadConfig(cwd);
|
|
398
398
|
const ctx = resolveProjectContext(cwd);
|
|
399
399
|
const planRootRel = path.relative(cwd, getPlanningRoot(cwd)) || '.';
|
|
400
|
+
const milestone = getMilestoneInfo(cwd);
|
|
400
401
|
|
|
401
402
|
// Detect Brave Search API key availability
|
|
402
403
|
const homedir = require('os').homedir();
|
|
@@ -461,6 +462,10 @@ function cmdInitNewProject(cwd, raw) {
|
|
|
461
462
|
requirements_path: ctx.root ? path.join(ctx.root, 'REQUIREMENTS.md') : path.join(planRootRel, 'REQUIREMENTS.md'),
|
|
462
463
|
research_dir: ctx.root ? path.join(ctx.root, 'research') : path.join(planRootRel, 'research'),
|
|
463
464
|
|
|
465
|
+
// Milestone info (product-level, shared across projects)
|
|
466
|
+
milestone_version: milestone.version,
|
|
467
|
+
milestone_name: milestone.name,
|
|
468
|
+
|
|
464
469
|
// v2 context
|
|
465
470
|
dgs_mode: ctx.dgs_mode,
|
|
466
471
|
current_project: ctx.current_project,
|
|
@@ -227,6 +227,14 @@ describe('v1 mode: init new-project', () => {
|
|
|
227
227
|
it('returns dgs_mode v1', () => {
|
|
228
228
|
assert.equal(result.dgs_mode, 'v1');
|
|
229
229
|
});
|
|
230
|
+
|
|
231
|
+
it('returns milestone_version defaulting to v1.0 when no milestones exist', () => {
|
|
232
|
+
assert.equal(result.milestone_version, 'v1.0');
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
it('returns milestone_name defaulting to milestone', () => {
|
|
236
|
+
assert.equal(result.milestone_name, 'milestone');
|
|
237
|
+
});
|
|
230
238
|
});
|
|
231
239
|
|
|
232
240
|
// ─── v1 Mode: other init commands ────────────────────────────────────────────
|
|
@@ -462,6 +470,10 @@ describe('v2 mode with project: init new-project', () => {
|
|
|
462
470
|
it('returns dgs_mode v2', () => {
|
|
463
471
|
assert.equal(result.dgs_mode, 'v2');
|
|
464
472
|
});
|
|
473
|
+
|
|
474
|
+
it('returns milestone_version defaulting to v1.0 when no milestones exist', () => {
|
|
475
|
+
assert.equal(result.milestone_version, 'v1.0');
|
|
476
|
+
});
|
|
465
477
|
});
|
|
466
478
|
|
|
467
479
|
describe('v2 mode with project: init progress', () => {
|
|
@@ -64,7 +64,7 @@ If the `--auto` argument references a spec file path or spec ID:
|
|
|
64
64
|
INIT=$(node ~/.claude/deliver-great-systems/bin/dgs-tools.cjs init new-project)
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`, `project_path`, `state_path`, `roadmap_path`, `requirements_path`, `research_dir`.
|
|
67
|
+
Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`, `project_path`, `state_path`, `roadmap_path`, `requirements_path`, `research_dir`, `milestone_version`, `milestone_name`.
|
|
68
68
|
|
|
69
69
|
Load planning-tier context files:
|
|
70
70
|
|
|
@@ -857,6 +857,11 @@ Task(prompt="
|
|
|
857
857
|
${product_doc_files}
|
|
858
858
|
</files_to_read>
|
|
859
859
|
|
|
860
|
+
<milestone>
|
|
861
|
+
version: ${milestone_version}
|
|
862
|
+
name: ${milestone_name}
|
|
863
|
+
</milestone>
|
|
864
|
+
|
|
860
865
|
</planning_context>
|
|
861
866
|
|
|
862
867
|
<instructions>
|
|
@@ -864,6 +869,7 @@ Create roadmap:
|
|
|
864
869
|
1. Derive phases from requirements (don't impose structure)
|
|
865
870
|
2. Map every v1 requirement to exactly one phase
|
|
866
871
|
3. Derive 2-5 success criteria per phase (observable user behaviors)
|
|
872
|
+
Use the milestone version from <milestone> when writing STATE.md frontmatter and ROADMAP.md headings.
|
|
867
873
|
4. Validate 100% coverage
|
|
868
874
|
5. Write files immediately (ROADMAP.md, STATE.md, update REQUIREMENTS.md traceability)
|
|
869
875
|
6. Return ROADMAP CREATED with summary
|
|
@@ -208,8 +208,7 @@ Commit message is NOT shown to user before committing — just commit silently.
|
|
|
208
208
|
**F5. Commit**
|
|
209
209
|
|
|
210
210
|
```bash
|
|
211
|
-
|
|
212
|
-
git commit -m "${commit_message}"
|
|
211
|
+
node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" commit "${commit_message}" --push
|
|
213
212
|
```
|
|
214
213
|
|
|
215
214
|
Get the short hash:
|
|
@@ -264,11 +263,11 @@ If archival occurred (result contains `"archived": true`), `.planning/quick/HIST
|
|
|
264
263
|
Commit STATE.md and HISTORY.md together so archival data is persisted:
|
|
265
264
|
|
|
266
265
|
```bash
|
|
267
|
-
|
|
266
|
+
FILE_LIST="${state_path}"
|
|
268
267
|
if [ -f "${project_root}/quick/HISTORY.md" ]; then
|
|
269
|
-
|
|
268
|
+
FILE_LIST="${FILE_LIST} ${project_root}/quick/HISTORY.md"
|
|
270
269
|
fi
|
|
271
|
-
|
|
270
|
+
node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" commit "docs(quick-${quick_id}): track fast task" --push --files ${FILE_LIST} 2>/dev/null || true
|
|
272
271
|
```
|
|
273
272
|
|
|
274
273
|
The `|| true` handles the case where nothing changed (e.g., STATE.md wasn't modified).
|
|
@@ -276,6 +276,11 @@ Set config:
|
|
|
276
276
|
node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" config-set workflow.discipline true
|
|
277
277
|
```
|
|
278
278
|
|
|
279
|
+
Track CLAUDE.md as modified:
|
|
280
|
+
```bash
|
|
281
|
+
MODIFIED_FILES="${MODIFIED_FILES} ./CLAUDE.md"
|
|
282
|
+
```
|
|
283
|
+
|
|
279
284
|
Display: `Workflow discipline: On`
|
|
280
285
|
|
|
281
286
|
**If user selects "Off" (toggle off):**
|
|
@@ -314,6 +319,11 @@ Set config:
|
|
|
314
319
|
node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" config-set workflow.discipline false
|
|
315
320
|
```
|
|
316
321
|
|
|
322
|
+
Track CLAUDE.md as modified:
|
|
323
|
+
```bash
|
|
324
|
+
MODIFIED_FILES="${MODIFIED_FILES} ./CLAUDE.md"
|
|
325
|
+
```
|
|
326
|
+
|
|
317
327
|
Display: `Workflow discipline: Off`
|
|
318
328
|
|
|
319
329
|
**If "Cancel":**
|
|
@@ -421,6 +431,12 @@ Do NOT use AskUserQuestion for any review settings.
|
|
|
421
431
|
</step>
|
|
422
432
|
|
|
423
433
|
<step name="update_config">
|
|
434
|
+
Track which files will be modified for the commit step:
|
|
435
|
+
|
|
436
|
+
```bash
|
|
437
|
+
MODIFIED_FILES="${config_path}"
|
|
438
|
+
```
|
|
439
|
+
|
|
424
440
|
Merge new settings into existing config:
|
|
425
441
|
|
|
426
442
|
```json
|
|
@@ -497,6 +513,20 @@ Write `~/.dgs/defaults.json` with:
|
|
|
497
513
|
```
|
|
498
514
|
</step>
|
|
499
515
|
|
|
516
|
+
<step name="commit_and_push">
|
|
517
|
+
Commit the config changes and push if sync_push is enabled:
|
|
518
|
+
|
|
519
|
+
```bash
|
|
520
|
+
node "$HOME/.claude/deliver-great-systems/bin/dgs-tools.cjs" commit "chore: update DGS settings" --push --files ${MODIFIED_FILES}
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
This uses dgs-tools commit which:
|
|
524
|
+
- Stages only the specified files
|
|
525
|
+
- Creates the commit
|
|
526
|
+
- With --push, reads sync_push from config and pushes when mode is "auto" (silently) or "prompt" (asks first)
|
|
527
|
+
- If sync_push is "off", no push occurs (commit-only)
|
|
528
|
+
</step>
|
|
529
|
+
|
|
500
530
|
<step name="confirm">
|
|
501
531
|
Display:
|
|
502
532
|
|
|
@@ -121,7 +121,7 @@ Exit.
|
|
|
121
121
|
<step name="show_changes_and_confirm">
|
|
122
122
|
**If update available**, fetch and show what's new BEFORE updating:
|
|
123
123
|
|
|
124
|
-
1.
|
|
124
|
+
1. Read changelog from installed package (CHANGELOG.md in the DGS install directory)
|
|
125
125
|
2. Extract entries between installed and latest versions
|
|
126
126
|
3. Display preview and ask for confirmation:
|
|
127
127
|
|
|
@@ -209,7 +209,7 @@ Format completion message (changelog was already shown in confirmation step):
|
|
|
209
209
|
|
|
210
210
|
⚠️ Restart Claude Code to pick up the new commands.
|
|
211
211
|
|
|
212
|
-
[View full changelog](https://github.com/
|
|
212
|
+
[View full changelog](https://github.com/KT-Partners-Ltd/deliver-great-systems/blob/main/CHANGELOG.md)
|
|
213
213
|
```
|
|
214
214
|
</step>
|
|
215
215
|
|
package/package.json
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ktpartners/dgs-platform",
|
|
3
3
|
"homepage": "https://kt-partners-ltd.github.io/dgs-platform-docs/",
|
|
4
|
+
"repository": {
|
|
5
|
+
"type": "git",
|
|
6
|
+
"url": "git+https://github.com/KT-Partners-Ltd/deliver-great-systems.git"
|
|
7
|
+
},
|
|
4
8
|
"bugs": {
|
|
5
9
|
"url": "https://github.com/KT-Partners-Ltd/dgs-platform-docs/issues"
|
|
6
10
|
},
|
|
7
|
-
"version": "2.7.
|
|
11
|
+
"version": "2.7.5",
|
|
8
12
|
"description": "Deliver Great Systems Platform — A meta-prompting, context engineering and spec-driven development system for Claude Code and Gemini by KT Partners.",
|
|
9
13
|
"bin": {
|
|
10
14
|
"dgs": "bin/install.js"
|
|
@@ -18,7 +22,8 @@
|
|
|
18
22
|
"agents",
|
|
19
23
|
"hooks/dist",
|
|
20
24
|
"scripts",
|
|
21
|
-
"LICENSE"
|
|
25
|
+
"LICENSE",
|
|
26
|
+
"CHANGELOG.md"
|
|
22
27
|
],
|
|
23
28
|
"keywords": [
|
|
24
29
|
"claude",
|