jumpstart-mode 1.0.8 → 1.0.9
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/.github/agents/jumpstart-analyst.agent.md +1 -1
- package/.github/agents/jumpstart-architect.agent.md +1 -1
- package/.github/agents/jumpstart-challenger.agent.md +1 -1
- package/.github/agents/jumpstart-developer.agent.md +1 -1
- package/.github/agents/jumpstart-diagram-verifier.agent.md +34 -0
- package/.github/agents/jumpstart-facilitator.agent.md +2 -5
- package/.github/agents/jumpstart-pm.agent.md +1 -1
- package/.github/agents/jumpstart-scout.agent.md +1 -1
- package/.jumpstart/agents/architect.md +64 -9
- package/.jumpstart/agents/diagram-verifier.md +128 -0
- package/.jumpstart/agents/scout.md +245 -27
- package/.jumpstart/commands/commands.md +40 -0
- package/.jumpstart/config.yaml +24 -0
- package/.jumpstart/templates/architecture.md +57 -9
- package/.jumpstart/templates/codebase-context.md +98 -23
- package/bin/cli.js +21 -2
- package/bin/verify-diagrams.js +695 -0
- package/package.json +1 -1
|
@@ -237,6 +237,46 @@ This file defines the slash commands that drive the Jump Start workflow. Each co
|
|
|
237
237
|
|
|
238
238
|
---
|
|
239
239
|
|
|
240
|
+
## /jumpstart.verify
|
|
241
|
+
|
|
242
|
+
**Phase:** Any (utility)
|
|
243
|
+
**Agent:** The Diagram Verifier
|
|
244
|
+
**Agent File:** `.jumpstart/agents/diagram-verifier.md`
|
|
245
|
+
**Output:** Verification report (displayed, not written to file)
|
|
246
|
+
|
|
247
|
+
**Description:** Validate all Mermaid diagrams in specification artifacts for structural syntax correctness and semantic accuracy. Runs both the automated CLI syntax checker and AI-powered semantic validation. Can be invoked manually at any time or is triggered automatically at phase gates for Scout and Architect when `diagram_verification.auto_verify_at_gate` is `true`.
|
|
248
|
+
|
|
249
|
+
**Usage:**
|
|
250
|
+
```
|
|
251
|
+
/jumpstart.verify
|
|
252
|
+
/jumpstart.verify specs/architecture.md
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**CLI equivalent:**
|
|
256
|
+
```
|
|
257
|
+
npx jumpstart-mode verify
|
|
258
|
+
npx jumpstart-mode verify --file specs/architecture.md --strict
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
**Pre-conditions:**
|
|
262
|
+
- `diagram_verification.enabled` must be `true` in `.jumpstart/config.yaml` (default: `true`).
|
|
263
|
+
- At least one Markdown file with Mermaid code blocks must exist in the scan directories.
|
|
264
|
+
|
|
265
|
+
**Behavior:**
|
|
266
|
+
1. Load the Diagram Verifier agent persona from `.jumpstart/agents/diagram-verifier.md`.
|
|
267
|
+
2. Read `diagram_verification` settings from `.jumpstart/config.yaml`.
|
|
268
|
+
3. Run `npx jumpstart-mode verify` against configured `scan_dirs` (or a specific file if provided).
|
|
269
|
+
4. Perform semantic validation on each diagram (level consistency, alias uniqueness, relationship completeness).
|
|
270
|
+
5. Present a structured report of findings — errors, warnings, and passes.
|
|
271
|
+
6. For each error or warning, suggest a specific fix with corrected Mermaid code.
|
|
272
|
+
|
|
273
|
+
**Guardrails:**
|
|
274
|
+
- The verifier does not modify any files. It reports findings only.
|
|
275
|
+
- The responsible agent (Scout or Architect) or the human applies fixes.
|
|
276
|
+
- When `strict_c4_semantics` is `true`, C4 level consistency violations are treated as errors.
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
240
280
|
## /jumpstart.party
|
|
241
281
|
|
|
242
282
|
**Phase:** Any (cross-phase collaboration)
|
package/.jumpstart/config.yaml
CHANGED
|
@@ -59,6 +59,18 @@ agents:
|
|
|
59
59
|
max_file_scan_depth: 6 # How deep to walk the directory tree (0 = unlimited)
|
|
60
60
|
include_dependency_analysis: true # Parse package managers and map dependency graph
|
|
61
61
|
include_debt_assessment: true # Flag apparent technical debt, security concerns, outdated deps
|
|
62
|
+
exclude_jumpstart_paths: # Paths created by JumpStart install — excluded from brownfield analysis
|
|
63
|
+
- ".jumpstart/"
|
|
64
|
+
- "specs/"
|
|
65
|
+
- "AGENTS.md"
|
|
66
|
+
- "CLAUDE.md"
|
|
67
|
+
- ".cursorrules"
|
|
68
|
+
- ".github/copilot-instructions.md"
|
|
69
|
+
- ".github/agents/"
|
|
70
|
+
- ".github/prompts/"
|
|
71
|
+
- ".github/instructions/"
|
|
72
|
+
- ".vscode/mcp.json"
|
|
73
|
+
- ".cursor/mcp.json"
|
|
62
74
|
|
|
63
75
|
challenger:
|
|
64
76
|
persona_file: "agents/challenger.md"
|
|
@@ -146,6 +158,18 @@ hooks:
|
|
|
146
158
|
# - "gh issue create --title 'Review: {phase_name}' --body 'Artifact: {artifact_path}'"
|
|
147
159
|
# - "curl -X POST $SLACK_WEBHOOK -d '{\"text\": \"Jump Start: {phase_name} complete\"}'"
|
|
148
160
|
|
|
161
|
+
# ---------------------------------------------------------------------------
|
|
162
|
+
# Diagram Verification
|
|
163
|
+
# ---------------------------------------------------------------------------
|
|
164
|
+
diagram_verification:
|
|
165
|
+
enabled: true # Enable Mermaid diagram verification
|
|
166
|
+
auto_verify_at_gate: true # Automatically run verifier before phase gate approval
|
|
167
|
+
scan_dirs: ["specs"] # Directories to scan for Mermaid diagrams
|
|
168
|
+
strict_c4_semantics: true # Enforce strict C4 level consistency rules
|
|
169
|
+
# The verifier can be invoked manually via:
|
|
170
|
+
# /jumpstart.verify (in VS Code Copilot Chat)
|
|
171
|
+
# npx jumpstart-mode verify (in terminal)
|
|
172
|
+
|
|
149
173
|
# ---------------------------------------------------------------------------
|
|
150
174
|
# Output Paths
|
|
151
175
|
# ---------------------------------------------------------------------------
|
|
@@ -82,14 +82,33 @@
|
|
|
82
82
|
## Component Interaction Diagram
|
|
83
83
|
|
|
84
84
|
```mermaid
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
85
|
+
C4Component
|
|
86
|
+
title Component Interaction — [System Name]
|
|
87
|
+
|
|
88
|
+
%% Replace with actual components from Step 3: System Component Design
|
|
89
|
+
Container_Boundary(system, "System") {
|
|
90
|
+
Component(gateway, "API Gateway", "Framework", "Request routing and rate limiting")
|
|
91
|
+
Component(auth, "Auth Service", "Service", "Authentication and authorization")
|
|
92
|
+
Component(core, "Core Service", "Service", "Primary business logic")
|
|
93
|
+
Component(notif, "Notification Service", "Service", "Email and push notifications")
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
ContainerDb(db, "Database", "Engine", "Persistent storage")
|
|
97
|
+
ContainerDb(cache, "Cache", "Redis", "Session and query cache")
|
|
98
|
+
System_Ext(extApi, "External API", "Third-party integration")
|
|
99
|
+
|
|
100
|
+
Rel(gateway, auth, "Authenticates via")
|
|
101
|
+
Rel(gateway, core, "Routes requests to")
|
|
102
|
+
Rel(core, db, "Reads/writes", "SQL")
|
|
103
|
+
Rel(core, cache, "Caches queries", "Redis Protocol")
|
|
104
|
+
Rel(core, extApi, "Fetches data from", "REST/HTTPS")
|
|
105
|
+
Rel(core, notif, "Triggers notifications")
|
|
106
|
+
Rel(auth, cache, "Stores sessions", "Redis Protocol")
|
|
107
|
+
|
|
108
|
+
UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")
|
|
90
109
|
```
|
|
91
110
|
|
|
92
|
-
[Replace with the actual component interaction diagram.
|
|
111
|
+
[Replace with the actual component interaction diagram from Step 3. Use `C4Component` for Mermaid C4 syntax if `diagram_format` is `mermaid`, or provide an ASCII/text-based representation otherwise.]
|
|
93
112
|
|
|
94
113
|
---
|
|
95
114
|
|
|
@@ -119,11 +138,40 @@ graph TD
|
|
|
119
138
|
|
|
120
139
|
```mermaid
|
|
121
140
|
erDiagram
|
|
122
|
-
|
|
123
|
-
|
|
141
|
+
USER {
|
|
142
|
+
uuid id PK
|
|
143
|
+
string email UK "NOT NULL"
|
|
144
|
+
string name "NOT NULL"
|
|
145
|
+
string password_hash "NOT NULL"
|
|
146
|
+
timestamp created_at "NOT NULL"
|
|
147
|
+
timestamp updated_at "NOT NULL"
|
|
148
|
+
}
|
|
149
|
+
PROJECT {
|
|
150
|
+
uuid id PK
|
|
151
|
+
uuid owner_id FK "NOT NULL"
|
|
152
|
+
string title "NOT NULL"
|
|
153
|
+
text description
|
|
154
|
+
enum status "NOT NULL"
|
|
155
|
+
timestamp created_at "NOT NULL"
|
|
156
|
+
}
|
|
157
|
+
TASK {
|
|
158
|
+
uuid id PK
|
|
159
|
+
uuid project_id FK "NOT NULL"
|
|
160
|
+
uuid assignee_id FK
|
|
161
|
+
string title "NOT NULL"
|
|
162
|
+
text description
|
|
163
|
+
enum priority "NOT NULL"
|
|
164
|
+
enum status "NOT NULL"
|
|
165
|
+
timestamp due_date
|
|
166
|
+
timestamp created_at "NOT NULL"
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
USER ||--o{ PROJECT : "owns"
|
|
170
|
+
USER ||--o{ TASK : "assigned to"
|
|
171
|
+
PROJECT ||--o{ TASK : "contains"
|
|
124
172
|
```
|
|
125
173
|
|
|
126
|
-
[Replace with actual ERD.]
|
|
174
|
+
[Replace with actual ERD. Include field definitions with types, constraints, and keys for each entity. Use Mermaid's `erDiagram` with field blocks for detailed models.]
|
|
127
175
|
|
|
128
176
|
### Relationship Details
|
|
129
177
|
|
|
@@ -26,6 +26,8 @@
|
|
|
26
26
|
|
|
27
27
|
## Repository Structure
|
|
28
28
|
|
|
29
|
+
> **Note:** This structure reflects the *original* codebase only. Files and directories created by the JumpStart installation process (`.jumpstart/`, `specs/`, `AGENTS.md`, `CLAUDE.md`, `.cursorrules`, and Copilot integration files under `.github/`) are excluded. See `agents.scout.exclude_jumpstart_paths` in config for the full exclusion list.
|
|
30
|
+
|
|
29
31
|
```
|
|
30
32
|
[project-root]/
|
|
31
33
|
|-- [annotated directory tree]
|
|
@@ -96,11 +98,24 @@
|
|
|
96
98
|
### System Context (Level 1)
|
|
97
99
|
|
|
98
100
|
```mermaid
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
C4Context
|
|
102
|
+
title System Context Diagram — [System Name]
|
|
103
|
+
|
|
104
|
+
%% Replace with actual actors and systems discovered during reconnaissance
|
|
105
|
+
Person(user, "End User", "Primary user of the system")
|
|
106
|
+
Person(admin, "Administrator", "Manages system configuration")
|
|
107
|
+
|
|
108
|
+
System(system, "System Name", "Brief description of the system")
|
|
109
|
+
|
|
110
|
+
System_Ext(extApi, "External API", "Third-party service")
|
|
111
|
+
SystemDb_Ext(extDb, "External Database", "External data store")
|
|
112
|
+
|
|
113
|
+
Rel(user, system, "Uses", "HTTPS")
|
|
114
|
+
Rel(admin, system, "Manages", "HTTPS")
|
|
115
|
+
Rel(system, extApi, "Sends requests to", "REST/HTTPS")
|
|
116
|
+
Rel(system, extDb, "Reads from", "SQL/TLS")
|
|
117
|
+
|
|
118
|
+
UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")
|
|
104
119
|
```
|
|
105
120
|
|
|
106
121
|
[Description of what this diagram shows — the system boundary and external actors.]
|
|
@@ -110,14 +125,28 @@ graph TB
|
|
|
110
125
|
### Container Diagram (Level 2)
|
|
111
126
|
|
|
112
127
|
```mermaid
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
128
|
+
C4Container
|
|
129
|
+
title Container Diagram — [System Name]
|
|
130
|
+
|
|
131
|
+
%% Replace with actual containers discovered in the codebase
|
|
132
|
+
Person(user, "End User", "Primary user")
|
|
133
|
+
|
|
134
|
+
System_Boundary(system, "System Name") {
|
|
135
|
+
Container(webapp, "Web Application", "Framework", "Front-end application")
|
|
136
|
+
Container(api, "API Server", "Framework", "Handles business logic")
|
|
137
|
+
ContainerDb(db, "Database", "Engine", "Persistent data store")
|
|
138
|
+
ContainerDb(cache, "Cache", "Engine", "Session and query cache")
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
System_Ext(extSvc, "External Service", "Third-party integration")
|
|
142
|
+
|
|
143
|
+
Rel(user, webapp, "Visits", "HTTPS")
|
|
144
|
+
Rel(webapp, api, "Makes API calls", "REST/HTTPS")
|
|
145
|
+
Rel(api, db, "Reads/writes data", "SQL")
|
|
146
|
+
Rel(api, cache, "Caches data", "Redis Protocol")
|
|
147
|
+
Rel(api, extSvc, "Integrates with", "REST/HTTPS")
|
|
148
|
+
|
|
149
|
+
UpdateLayoutConfig($c4ShapeInRow="3", $c4BoundaryInRow="1")
|
|
121
150
|
```
|
|
122
151
|
|
|
123
152
|
[Description of the major deployable containers within the system.]
|
|
@@ -127,15 +156,25 @@ graph TB
|
|
|
127
156
|
### Component Diagram (Level 3) — If Configured
|
|
128
157
|
|
|
129
158
|
```mermaid
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
159
|
+
C4Component
|
|
160
|
+
title Component Diagram — [Container Name]
|
|
161
|
+
|
|
162
|
+
%% Replace with actual components if c4_levels includes "component"
|
|
163
|
+
Container_Boundary(api, "API Server") {
|
|
164
|
+
Component(router, "Router", "Framework Router", "Routes requests to handlers")
|
|
165
|
+
Component(controller, "Controller", "Controller", "Handles HTTP requests")
|
|
166
|
+
Component(service, "Service", "Service", "Business logic")
|
|
167
|
+
ComponentDb(repo, "Repository", "ORM", "Data access layer")
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
ContainerDb(db, "Database", "Engine", "Persistent storage")
|
|
171
|
+
|
|
172
|
+
Rel(router, controller, "Routes to")
|
|
173
|
+
Rel(controller, service, "Delegates to")
|
|
174
|
+
Rel(service, repo, "Queries via")
|
|
175
|
+
Rel(repo, db, "Executes queries", "SQL")
|
|
176
|
+
|
|
177
|
+
UpdateLayoutConfig($c4ShapeInRow="4", $c4BoundaryInRow="1")
|
|
139
178
|
```
|
|
140
179
|
|
|
141
180
|
[Description of internal components within the primary container.]
|
|
@@ -144,7 +183,43 @@ graph TB
|
|
|
144
183
|
|
|
145
184
|
### Code Diagram (Level 4) — If Configured
|
|
146
185
|
|
|
147
|
-
|
|
186
|
+
```mermaid
|
|
187
|
+
classDiagram
|
|
188
|
+
direction TB
|
|
189
|
+
|
|
190
|
+
%% Replace with actual classes/interfaces if c4_levels includes "code"
|
|
191
|
+
%% Focus on the most critical or complex module only
|
|
192
|
+
|
|
193
|
+
class ServiceInterface {
|
|
194
|
+
<<interface>>
|
|
195
|
+
+execute(input: InputDTO): OutputDTO
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
class ConcreteService {
|
|
199
|
+
-repository: Repository
|
|
200
|
+
-logger: Logger
|
|
201
|
+
+execute(input: InputDTO): OutputDTO
|
|
202
|
+
-validate(input: InputDTO): void
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
class Repository {
|
|
206
|
+
<<interface>>
|
|
207
|
+
+findById(id: string): Entity
|
|
208
|
+
+save(entity: Entity): Entity
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
class Entity {
|
|
212
|
+
+id: string
|
|
213
|
+
+createdAt: Date
|
|
214
|
+
+updatedAt: Date
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
ServiceInterface <|.. ConcreteService : implements
|
|
218
|
+
ConcreteService --> Repository : uses
|
|
219
|
+
Repository ..> Entity : returns
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
[Include only if `c4_levels` includes `code`. Focus on the most critical or complex modules. Map actual classes and interfaces from the codebase.]
|
|
148
223
|
|
|
149
224
|
---
|
|
150
225
|
|
package/bin/cli.js
CHANGED
|
@@ -74,7 +74,10 @@ function parseArgs() {
|
|
|
74
74
|
function showHelp() {
|
|
75
75
|
console.log(chalk.bold.blue('\n🚀 Jump Start Framework - Spec-driven agentic coding\n'));
|
|
76
76
|
console.log(chalk.bold('USAGE:'));
|
|
77
|
-
console.log(' npx jumpstart-mode [directory] [options]
|
|
77
|
+
console.log(' npx jumpstart-mode [directory] [options]');
|
|
78
|
+
console.log(' npx jumpstart-mode verify [verify-options]\n');
|
|
79
|
+
console.log(chalk.bold('COMMANDS:'));
|
|
80
|
+
console.log(' verify Validate Mermaid diagrams in spec files\n');
|
|
78
81
|
console.log(chalk.bold('OPTIONS:'));
|
|
79
82
|
console.log(' <directory> Target directory (default: current directory)');
|
|
80
83
|
console.log(' --name <name> Set project name in config');
|
|
@@ -83,12 +86,19 @@ function showHelp() {
|
|
|
83
86
|
console.log(' --force Overwrite existing files without prompting');
|
|
84
87
|
console.log(' --dry-run Show what would be installed without copying');
|
|
85
88
|
console.log(' --help, -h Display this help message\n');
|
|
89
|
+
console.log(chalk.bold('VERIFY OPTIONS:'));
|
|
90
|
+
console.log(' --dir <path> Directory to scan (default: specs)');
|
|
91
|
+
console.log(' --file <path> Scan a single file');
|
|
92
|
+
console.log(' --strict Treat warnings as errors');
|
|
93
|
+
console.log(' --json Output as JSON\n');
|
|
86
94
|
console.log(chalk.bold('EXAMPLES:'));
|
|
87
95
|
console.log(' npx jumpstart-mode');
|
|
88
96
|
console.log(' npx jumpstart-mode ./my-project');
|
|
89
97
|
console.log(' npx jumpstart-mode . --name "My Project" --copilot');
|
|
90
98
|
console.log(' npx jumpstart-mode ./existing-app --type brownfield --copilot');
|
|
91
|
-
console.log(' npx jumpstart-mode --dry-run
|
|
99
|
+
console.log(' npx jumpstart-mode --dry-run .');
|
|
100
|
+
console.log(' npx jumpstart-mode verify');
|
|
101
|
+
console.log(' npx jumpstart-mode verify --file specs/architecture.md --strict\n');
|
|
92
102
|
}
|
|
93
103
|
|
|
94
104
|
// Detect whether a target directory is a greenfield or brownfield project
|
|
@@ -563,6 +573,15 @@ function appendContext7Config(configPath, dryRun) {
|
|
|
563
573
|
// Main entry point
|
|
564
574
|
async function main() {
|
|
565
575
|
try {
|
|
576
|
+
// Check for verify subcommand before parsing normal args
|
|
577
|
+
if (process.argv[2] === 'verify') {
|
|
578
|
+
const { run } = require('./verify-diagrams');
|
|
579
|
+
// Pass remaining args after 'verify' as if they were the full argv
|
|
580
|
+
const verifyArgv = ['node', 'verify', ...process.argv.slice(3)];
|
|
581
|
+
run(verifyArgv);
|
|
582
|
+
return; // verify-diagrams handles process.exit
|
|
583
|
+
}
|
|
584
|
+
|
|
566
585
|
let config = parseArgs();
|
|
567
586
|
|
|
568
587
|
if (config.help) {
|