runboard 0.1.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.
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: runboard-roadmap
3
+ description: Produce a Now/Next/Later improvement roadmap from a Runboard assessment, anchored on the binding constraint. Use when someone asks what to work on, how to prioritise, or what to fix first.
4
+ ---
5
+
6
+ # Runboard: Roadmap
7
+
8
+ The CLI identifies the binding constraint and enforces the Now/Next/Later limits. You help
9
+ the leader understand and commit to it.
10
+
11
+ ## Steps
12
+
13
+ 1. Generate the roadmap:
14
+
15
+ ```bash
16
+ runboard roadmap
17
+ ```
18
+
19
+ This needs at least one assessment.
20
+
21
+ 2. Read `.runboard/roadmap.md`. It contains:
22
+ - The **binding constraint** (lowest level; ties broken by worse trajectory).
23
+ - **Now** (≤ 3 items), **Next** (≤ 5 items), **Later**, each phrased as a business
24
+ outcome.
25
+
26
+ 3. Walk the leader through it. Reinforce that the "Now" items target the single most
27
+ limiting area.
28
+
29
+ ## Rules
30
+
31
+ - Do not reorder or invent priorities — the CLI's ordering is deterministic and is the
32
+ point. If the leader disagrees, capture that as input to the next assessment, not as an
33
+ edit to the computed plan.
@@ -0,0 +1,10 @@
1
+ # Baseline Assessment — <%= it.date %>
2
+
3
+ Overall maturity **<%= it.average %> / 5** across nine dimensions.
4
+
5
+ | Dimension | Level | Trajectory | Evidence |
6
+ |-----------|-------|------------|----------|
7
+ <% it.rows.forEach(function(r){ %>| <%= r.title %> | <%= r.level %> | <%= r.trajectory %> | <%= r.evidence %> |
8
+ <% }) %>
9
+
10
+ **Binding constraint:** <%= it.constraint.title %> (level <%= it.constraint.level %>).
@@ -0,0 +1,22 @@
1
+ # Technology Board Update — <%= it.date %>
2
+
3
+ **Overall maturity: <%= it.average %> / 5.** <%= it.headline %>
4
+
5
+ ## Where we stand
6
+
7
+ <% it.areas.forEach(function(area){ %>**<%= area.title %>** — average <%= area.average %> / 5. <%= area.comment %>
8
+ <% }) %>
9
+
10
+ ## Biggest constraint
11
+
12
+ Our most limiting area is **<%= it.constraint.title %>** (level <%= it.constraint.level %>). In business terms: <%= it.constraintBusiness %>
13
+
14
+ ## What we're doing about it
15
+
16
+ <% it.now.forEach(function(item){ %>- <%= item %>
17
+ <% }) %>
18
+
19
+ ## Risks to watch
20
+
21
+ <% if (it.triggers.length === 0) { %>No areas are stuck or regressing.<% } else { %><% it.triggers.forEach(function(t){ %>- **<%= t %>** has not improved across recent reviews.
22
+ <% }) %><% } %>
@@ -0,0 +1,8 @@
1
+ # Monthly Update — <%= it.date %>
2
+
3
+ Overall maturity **<%= it.average %> / 5**.
4
+
5
+ <% it.areas.forEach(function(area){ %>- **<%= area.title %>**: <%= area.average %> / 5
6
+ <% }) %>
7
+
8
+ **Focus this month:** <%= it.constraint.title %> (level <%= it.constraint.level %>).
@@ -0,0 +1,21 @@
1
+ # Pulse — <%= it.date %>
2
+
3
+ Comparing **<%= it.prevDate %>** → **<%= it.date %>**. Average <%= it.prevAverage %> → **<%= it.average %>** / 5.
4
+
5
+ ## What moved
6
+
7
+ | Dimension | Was | Now | Change |
8
+ |-----------|-----|-----|--------|
9
+ <% it.deltas.forEach(function(d){ %>| <%= d.key %> | <%= d.from %> | <%= d.to %> | <%= d.change > 0 ? "+" + d.change : d.change %> |
10
+ <% }) %>
11
+
12
+ ## Auto-triggers (flat or regressing across 3 assessments)
13
+
14
+ <% if (it.triggers.length === 0) { %>None — nothing is stuck.<% } else { %><% it.triggers.forEach(function(t){ %>- **<%= t %>** has not improved in three consecutive assessments.
15
+ <% }) %><% } %>
16
+
17
+ ## What moved and why it matters
18
+
19
+ <% if (it.improved.length) { %>Progress in <%= it.improved.join(", ") %>.<% } %>
20
+ <% if (it.regressed.length) { %>Watch <%= it.regressed.join(", ") %> — losing ground.<% } %>
21
+ <% if (!it.improved.length && !it.regressed.length) { %>Steady state since the last assessment.<% } %>
@@ -0,0 +1,20 @@
1
+ # Roadmap — <%= it.date %>
2
+
3
+ **Binding constraint: <%= it.constraint.title %>** (level <%= it.constraint.level %>, <%= it.constraint.trajectory %>).
4
+
5
+ This is the lowest-scoring area dragging on everything above it. Start here.
6
+
7
+ ## Now (do these first)
8
+
9
+ <% it.now.forEach(function(item){ %>- <%= item %>
10
+ <% }) %>
11
+
12
+ ## Next
13
+
14
+ <% it.next.forEach(function(item){ %>- <%= item %>
15
+ <% }) %>
16
+
17
+ ## Later
18
+
19
+ <% if (it.later.length === 0) { %>- Revisit after the Now items land and re-assess.<% } else { %><% it.later.forEach(function(item){ %>- <%= item %>
20
+ <% }) %><% } %>