@sandrinio/vbounce 1.3.2 → 1.4.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.
@@ -98,8 +98,16 @@ The manifest is a semantic routing table — it helps agents quickly find releva
98
98
  ## Your Output
99
99
 
100
100
  Write a **Scribe Report** to `.bounce/reports/sprint-S-{XX}-scribe.md`:
101
+ You MUST include the YAML frontmatter block exactly as shown below:
101
102
 
102
103
  ```markdown
104
+ ---
105
+ mode: "{init / audit / create}"
106
+ docs_created: {count}
107
+ docs_updated: {count}
108
+ docs_removed: {count}
109
+ ---
110
+
103
111
  # Scribe Report: Sprint S-{XX}
104
112
 
105
113
  ## Mode
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sandrinio/vbounce",
3
- "version": "1.3.2",
3
+ "version": "1.4.0",
4
4
  "description": "V-Bounce OS: Turn your AI coding assistant into a full engineering team through structured SDLC skills.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -46,4 +46,4 @@
46
46
  "js-yaml": "^4.1.1",
47
47
  "marked": "^17.0.3"
48
48
  }
49
- }
49
+ }
@@ -26,7 +26,8 @@ const SCHEMAS = {
26
26
  devops: {
27
27
  base: ['type', 'status'],
28
28
  conditional: { 'story-merge': ['conflicts_detected'], 'sprint-release': ['version'] }
29
- }
29
+ },
30
+ scribe: ['mode', 'docs_created', 'docs_updated', 'docs_removed']
30
31
  };
31
32
 
32
33
  function extractFrontmatter(content) {
@@ -89,6 +90,7 @@ function main() {
89
90
  else if (filename.endsWith('-qa.md')) agentType = 'qa';
90
91
  else if (filename.endsWith('-arch.md')) agentType = 'arch';
91
92
  else if (filename.endsWith('-devops.md')) agentType = 'devops';
93
+ else if (filename.endsWith('-scribe.md')) agentType = 'scribe';
92
94
 
93
95
  if (agentType === 'unknown') {
94
96
  console.error(`WARNING: Unrecognized report type for ${filename}. Ensure filename ends in -dev.md, -qa.md, -arch.md, or -devops.md.`);
@@ -108,6 +110,10 @@ function main() {
108
110
  if (agentType === 'qa') validateQA(data);
109
111
  if (agentType === 'arch') validateArch(data);
110
112
  if (agentType === 'devops') validateDevops(data);
113
+ if (agentType === 'scribe') {
114
+ const missing = SCHEMAS.scribe.filter(k => !(k in data));
115
+ if (missing.length > 0) throw new Error(`SCRIBE_SCHEMA_ERROR: Missing required keys: ${missing.join(', ')}`);
116
+ }
111
117
 
112
118
  console.log(`VALID: ${filename} matches the ${agentType.toUpperCase()} schema.`);
113
119
  process.exit(0);
@@ -41,6 +41,12 @@ const EXPECTED_PROMPT_SIGNATURES = {
41
41
  'conflicts_detected:',
42
42
  'type: "sprint-release"',
43
43
  'version:'
44
+ ],
45
+ 'scribe.md': [
46
+ 'mode:',
47
+ 'docs_created:',
48
+ 'docs_updated:',
49
+ 'docs_removed:'
44
50
  ]
45
51
  };
46
52
 
@@ -1,7 +1,7 @@
1
1
  <instructions>
2
2
  FOLLOW THIS EXACT STRUCTURE. Output sections in order 1-9.
3
3
 
4
- 1. **Header**: Set Status, Ambiguity Score, Readiness based on completeness
4
+ 1. **YAML Frontmatter**: Set status, ambiguity, and readiness
5
5
  2. **§1 Project Identity**: What it is, what it's NOT, success metrics
6
6
  3. **§2 Design Principles**: 3-5 numbered rules (these guide all future decisions)
7
7
  4. **§3 Architecture**: System diagram + Tech Stack table (mark unknown as `[TBD]`)
@@ -31,13 +31,13 @@ Downstream consumers:
31
31
  Do NOT output these instructions.
32
32
  </instructions>
33
33
 
34
- # Project Charter: [Project Name]
35
-
36
- > **Status**: 🌱 Initial Draft / 🌿 Refining / 🌳 Approved
37
- > **Ambiguity Score**: 🔴 High / 🟡 Medium / 🟢 Low
38
- > **Readiness**: Blocked / Ready for Roadmap / Ready for Epics
39
-
40
34
  ---
35
+ status: "🌱 Initial Draft / 🌿 Refining / 🌳 Approved"
36
+ ambiguity: "🔴 High / 🟡 Medium / 🟢 Low"
37
+ readiness: "Blocked / Ready for Roadmap / Ready for Epics"
38
+ ---
39
+
40
+ # Project Charter: [Project Name]
41
41
 
42
42
  ## 1. Project Identity
43
43
 
@@ -1,7 +1,7 @@
1
1
  <instructions>
2
2
  FOLLOW THIS EXACT STRUCTURE. Output sections in order 1-7.
3
3
 
4
- 1. **Header**: Set Status, link to Roadmap + Risk Registry, Sprint Cadence
4
+ 1. **YAML Frontmatter**: Set status, last updated, roadmap ref, risk registry ref, delivery ref, and sprint cadence
5
5
  2. **§1 Project Window**: Start/End dates, total sprints, team
6
6
  3. **§2 Sprint Registry**: Table of ALL sprints with goals and status (auto-populated between markers)
7
7
  4. **§3 Active Sprint**: CURRENT sprint only — goal + assigned stories with L1-L4 labels + V-Bounce state
@@ -59,19 +59,17 @@ Downstream consumers:
59
59
  Do NOT output these instructions.
60
60
  </instructions>
61
61
 
62
- # Delivery Plan: {Project Name}
63
-
64
62
  ---
65
-
66
- > **Last Updated**: {YYYY-MM-DD}
67
- > **Status**: Planning / In Sprint / Delivered
68
- > **Roadmap**: `product_plans/{project}_roadmap.md`
69
- > **Risk Registry**: `product_plans/RISK_REGISTRY.md`
70
- > **Delivery**: `D-{NN}_{release_name}`
71
- > **Sprint Cadence**: 1-week sprints within 2-week project window
72
-
63
+ last_updated: "{YYYY-MM-DD}"
64
+ status: "Planning / In Sprint / Delivered"
65
+ roadmap_ref: "product_plans/{project}_roadmap.md"
66
+ risk_registry_ref: "product_plans/RISK_REGISTRY.md"
67
+ delivery_ref: "D-{NN}_{release_name}"
68
+ sprint_cadence: "1-week sprints within 2-week project window"
73
69
  ---
74
70
 
71
+ # Delivery Plan: {Project Name}
72
+
75
73
  ## 1. Project Window
76
74
 
77
75
  | Key | Value |
package/templates/epic.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <instructions>
2
2
  FOLLOW THIS EXACT STRUCTURE. Output sections in order.
3
3
 
4
- 1. **Metadata Table**: Status, Ambiguity, Priority, Owner, Tags, Target Date
4
+ 1. **YAML Frontmatter**: Epic ID, Status, Ambiguity, Context Source, Release, Owner, Priority, Tags, Target Date
5
5
  2. **§1 Problem & Value**: Why (problem), What (solution), Success Metrics
6
6
  3. **§2 Scope Boundaries**: IN-SCOPE checkboxes, OUT-OF-SCOPE list
7
7
  4. **§3 Context**: Personas, User Journey diagram, Constraints table
@@ -37,21 +37,19 @@ Downstream consumers:
37
37
  Do NOT output these instructions.
38
38
  </instructions>
39
39
 
40
- # EPIC-{ID}: {Epic Name}
41
-
42
- ## Metadata
43
- | Field | Value |
44
- |-------|-------|
45
- | **Status** | Draft / Ready / In Progress / Done |
46
- | **Ambiguity** | 🔴 High / 🟡 Medium / 🟢 Low |
47
- | **Context Source** | Charter §{section} / Roadmap §{section} / User Input |
48
- | **Release** | {Release name from Roadmap §2} |
49
- | **Owner** | {PM/PO name} |
50
- | **Priority** | P0 - Critical / P1 - High / P2 - Medium |
51
- | **Tags** | #frontend, #api, #auth |
52
- | **Target Date** | {YYYY-MM-DD} |
53
-
54
40
  ---
41
+ epic_id: "EPIC-{ID}"
42
+ status: "Draft / Ready / In Progress / Done"
43
+ ambiguity: "🔴 High / 🟡 Medium / 🟢 Low"
44
+ context_source: "Charter §{section} / Roadmap §{section} / User Input"
45
+ release: "{Release name from Roadmap §2}"
46
+ owner: "{PM/PO name}"
47
+ priority: "P0 - Critical / P1 - High / P2 - Medium"
48
+ tags: ["frontend", "api", "auth"]
49
+ target_date: "{YYYY-MM-DD}"
50
+ ---
51
+
52
+ # EPIC-{ID}: {Epic Name}
55
53
 
56
54
  ## 1. Problem & Value
57
55
  > Target Audience: Stakeholders, Business Sponsors
@@ -1,7 +1,7 @@
1
1
  <instructions>
2
2
  FOLLOW THIS EXACT STRUCTURE. This is a lightweight alternative to the Epic/Story hierarchy for L1 (Trivial) tasks.
3
3
 
4
- 1. **Metadata Table**: Target Release, Status, Actor
4
+ 1. **YAML Frontmatter**: Hotfix ID, Status, Target Release, Actor, Complexity Label
5
5
  2. **§1 The Fix**: What is broken/changing and why
6
6
  3. **§2 Implementation Instructions**: Which file(s) to change and what to do
7
7
  4. **§3 Verification**: Simple manual test
@@ -20,18 +20,15 @@ Constraints:
20
20
  Do NOT output these instructions.
21
21
  </instructions>
22
22
 
23
- # HOTFIX: {Name}
24
-
25
- ## Metadata
26
-
27
- | Field | Value |
28
- |-------|-------|
29
- | **Target Release** | `D-{NN}_{release_name}` |
30
- | **Status** | Draft / Bouncing / Done |
31
- | **Actor** | {Persona Name / User} |
32
- | **Complexity Label** | L1 (Trivial) |
33
-
34
23
  ---
24
+ hotfix_id: "HOTFIX-{Date}-{Name}"
25
+ status: "Draft / Bouncing / Done"
26
+ target_release: "D-{NN}_{release_name}"
27
+ actor: "{Persona Name / User}"
28
+ complexity_label: "L1 (Trivial)"
29
+ ---
30
+
31
+ # HOTFIX: {Name}
35
32
 
36
33
  ## 1. The Fix
37
34
  > What needs to be changed and why.
@@ -1,7 +1,7 @@
1
1
  <instructions>
2
2
  FOLLOW THIS EXACT STRUCTURE. Output sections in order 1-4.
3
3
 
4
- 1. **Header**: Set Status, link to Roadmap and Delivery Plan
4
+ 1. **YAML Frontmatter**: Set status, last updated, and roadmap ref
5
5
  2. **§1 Active Risks**: Table of open risks with phase, source, likelihood, impact, mitigation
6
6
  3. **§2 Risk Analysis Log**: Phase-stamped entries appended on state transitions
7
7
  4. **§3 Closed Risks**: Resolved/mitigated risks moved here
@@ -31,16 +31,14 @@ The Risk Registry is reviewed by the Team Lead at sprint boundaries and by the A
31
31
  Do NOT output these instructions.
32
32
  </instructions>
33
33
 
34
- # Risk Registry: {Project Name}
35
-
36
34
  ---
37
-
38
- > **Last Updated**: {YYYY-MM-DD}
39
- > **Status**: Active / Archived
40
- > **Roadmap**: `product_plans/{project}_roadmap.md`
41
-
35
+ last_updated: "{YYYY-MM-DD}"
36
+ status: "Active / Archived"
37
+ roadmap_ref: "product_plans/{project}_roadmap.md"
42
38
  ---
43
39
 
40
+ # Risk Registry: {Project Name}
41
+
44
42
  ## 1. Active Risks
45
43
 
46
44
  | ID | Risk | Phase | Source | Likelihood | Impact | Mitigation | Owner | Status |
@@ -1,7 +1,7 @@
1
1
  <instructions>
2
2
  FOLLOW THIS EXACT STRUCTURE. Output sections in order 1-7.
3
3
 
4
- 1. **Header**: Set Status, Last Updated, link to Charter
4
+ 1. **YAML Frontmatter**: Set status, last updated, charter ref, and risk registry ref
5
5
  2. **§1 Strategic Context**: Vision (from Charter), primary goal, target users, success metrics
6
6
  3. **§2 Release Plan**: Group epics into named releases with exit criteria — NOT sprint-level tracking
7
7
  4. **§3 Technical Architecture Decisions**: Key choices with rationale and status (this is the ADR log)
@@ -26,17 +26,15 @@ Charter (why) → **Roadmap** (strategic what/when) → Epic (detailed what) →
26
26
  Do NOT output these instructions.
27
27
  </instructions>
28
28
 
29
- # Product Roadmap: {Project Name}
30
-
31
29
  ---
32
-
33
- > **Last Updated**: {YYYY-MM-DD}
34
- > **Status**: Planning / Active / MVP Complete / Shipped
35
- > **Charter**: `product_plans/{project}_charter.md`
36
- > **Risk Registry**: `product_plans/RISK_REGISTRY.md`
37
-
30
+ last_updated: "{YYYY-MM-DD}"
31
+ status: "Planning / Active / MVP Complete / Shipped"
32
+ charter_ref: "product_plans/{project}_charter.md"
33
+ risk_registry_ref: "product_plans/RISK_REGISTRY.md"
38
34
  ---
39
35
 
36
+ # Product Roadmap: {Project Name}
37
+
40
38
  ## 1. Strategic Context
41
39
 
42
40
  | Key | Value |
@@ -1,7 +1,7 @@
1
1
  <instructions>
2
2
  FOLLOW THIS EXACT STRUCTURE. Output sections in order 1-6.
3
3
 
4
- 1. **Header**: Sprint ID, Goal, Dates, Status, Delivery
4
+ 1. **YAML Frontmatter**: Sprint ID, Goal, Dates, Status, Delivery Ref, Delivery Plan Ref
5
5
  2. **§1 What Was Delivered**: User-facing summary — what's accessible/usable vs what's internal/backend
6
6
  3. **§2 Story Results**: Table of all stories with final status and per-story metrics
7
7
  4. **§3 Execution Metrics**: AI performance metrics — tokens, duration, bounces, correction tax
@@ -20,18 +20,17 @@ versus what was built under the hood. Write it from the user's perspective, not
20
20
  Do NOT output these instructions.
21
21
  </instructions>
22
22
 
23
- # Sprint Report: S-{XX}
24
-
25
23
  ---
26
-
27
- > **Sprint Goal**: {One-sentence North Star}
28
- > **Dates**: {MM/DD - MM/DD}
29
- > **Status**: Achieved / Partially Achieved / Failed
30
- > **Delivery**: D-{NN}_{release_name}
31
- > **Delivery Plan**: `product_plans/{delivery}/DELIVERY_PLAN.md`
32
-
24
+ sprint_id: "S-{XX}"
25
+ sprint_goal: "{One-sentence North Star}"
26
+ dates: "{MM/DD - MM/DD}"
27
+ status: "Achieved / Partially Achieved / Failed"
28
+ delivery_ref: "D-{NN}_{release_name}"
29
+ delivery_plan_ref: "product_plans/{delivery}/DELIVERY_PLAN.md"
33
30
  ---
34
31
 
32
+ # Sprint Report: S-{XX}
33
+
35
34
  ## 1. What Was Delivered
36
35
 
37
36
  ### User-Facing (Accessible Now)
@@ -1,7 +1,7 @@
1
1
  <instructions>
2
2
  FOLLOW THIS EXACT STRUCTURE. Output sections in order 1-4.
3
3
 
4
- 1. **Metadata Table**: Parent Epic, Status, Ambiguity, Actor, Complexity, Complexity Label
4
+ 1. **YAML Frontmatter**: Story ID, Parent Epic, Status, Ambiguity, Context Source, Actor, Complexity, Complexity Label
5
5
  2. **§1 The Spec**: User Story (As a... I want... So that...) + Detailed Requirements
6
6
  3. **§2 The Truth**: Gherkin acceptance criteria + manual verification steps
7
7
  4. **§3 Implementation Guide**: Files to modify, technical logic, API contract
@@ -38,19 +38,18 @@ Agent handoff sections:
38
38
  Do NOT output these instructions.
39
39
  </instructions>
40
40
 
41
- # STORY-{EpicID}-{StoryID}: {Story Name}
41
+ ---
42
+ story_id: "STORY-{EpicID}-{StoryID}"
43
+ parent_epic_ref: "EPIC-{ID}"
44
+ status: "Draft / Refinement / Probing/Spiking / Ready to Bounce / Bouncing / QA Passed / Architect Passed / Sprint Review / Done / Escalated / Parking Lot"
45
+ ambiguity: "🔴 High / 🟡 Medium / 🟢 Low"
46
+ context_source: "Epic §{section} / Codebase / User Input"
47
+ actor: "{Persona Name}"
48
+ complexity: "Small (1 file) / Medium (2-3 files) / Large (Refactor needed)"
49
+ complexity_label: "L1 / L2 / L3 / L4 (default: L2)"
50
+ ---
42
51
 
43
- ## Metadata
44
-
45
- | Field | Value |
46
- |-------|-------|
47
- | **Parent Epic** | [EPIC-{ID}: {Name}](link) |
48
- | **Status** | Draft / Refinement / Probing/Spiking / Ready to Bounce / Bouncing / QA Passed / Architect Passed / Sprint Review / Done / Escalated / Parking Lot |
49
- | **Ambiguity** | 🔴 High / 🟡 Medium / 🟢 Low |
50
- | **Context Source** | Epic §{section} / Codebase / User Input |
51
- | **Actor** | {Persona Name} |
52
- | **Complexity** | Small (1 file) / Medium (2-3 files) / Large (Refactor needed) |
53
- | **Complexity Label** | L1 / L2 / L3 / L4 (default: L2) |
52
+ # STORY-{EpicID}-{StoryID}: {Story Name}
54
53
 
55
54
  ### Complexity Labels (Sprint Planning)
56
55