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.
@@ -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)
@@ -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
- graph TD
86
- A[Component A] --> B[Component B]
87
- A --> C[Component C]
88
- C --> D[Database]
89
- C --> E[External Service]
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. If Mermaid is not available, provide an ASCII or text-based representation.]
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
- ENTITY_A ||--o{ ENTITY_B : "has many"
123
- ENTITY_B }o--|| ENTITY_C : "belongs to"
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
- graph TB
100
- %% Replace with actual system context diagram
101
- User[User] -->|Uses| System[The System]
102
- System -->|Calls| ExtService[External Service]
103
- System -->|Reads/Writes| DB[(Database)]
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
- graph TB
114
- %% Replace with actual container diagram
115
- subgraph System Boundary
116
- App[Application<br/>Language/Framework]
117
- DB[(Database<br/>Engine)]
118
- end
119
- User[User] --> App
120
- App --> DB
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
- graph TB
131
- %% Replace with actual component diagram if c4_levels includes "component"
132
- subgraph Container
133
- ModA[Module A]
134
- ModB[Module B]
135
- ModC[Module C]
136
- end
137
- ModA --> ModB
138
- ModB --> ModC
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
- [Include only if `c4_levels` includes `code`. Focus on the most critical or complex modules.]
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]\n');
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 .\n');
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) {