@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.
- package/brains/claude-agents/scribe.md +8 -0
- package/package.json +2 -2
- package/scripts/validate_report.mjs +7 -1
- package/scripts/verify_framework.mjs +6 -0
- package/templates/charter.md +7 -7
- package/templates/delivery_plan.md +9 -11
- package/templates/epic.md +13 -15
- package/templates/hotfix.md +9 -12
- package/templates/risk_registry.md +6 -8
- package/templates/roadmap.md +7 -9
- package/templates/sprint_report.md +9 -10
- package/templates/story.md +12 -13
|
@@ -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
|
+
"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);
|
package/templates/charter.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<instructions>
|
|
2
2
|
FOLLOW THIS EXACT STRUCTURE. Output sections in order 1-9.
|
|
3
3
|
|
|
4
|
-
1. **
|
|
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. **
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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. **
|
|
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
|
package/templates/hotfix.md
CHANGED
|
@@ -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. **
|
|
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. **
|
|
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
|
-
|
|
39
|
-
|
|
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 |
|
package/templates/roadmap.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<instructions>
|
|
2
2
|
FOLLOW THIS EXACT STRUCTURE. Output sections in order 1-7.
|
|
3
3
|
|
|
4
|
-
1. **
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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. **
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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)
|
package/templates/story.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<instructions>
|
|
2
2
|
FOLLOW THIS EXACT STRUCTURE. Output sections in order 1-4.
|
|
3
3
|
|
|
4
|
-
1. **
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|