@kudusov.takhir/ba-toolkit 3.6.0 → 3.8.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.
@@ -22,12 +22,13 @@ Examples:
22
22
 
23
23
  ## Context loading
24
24
 
25
- 0. If `00_principles_*.md` exists, load it — apply language convention (section 1) and ID naming convention (section 2).
25
+ 0. If `00_principles_*.md` exists, load it — apply language convention (section 1), ID naming convention (section 2), and any team capacity defaults from section 8 (Project-Specific Notes).
26
26
  1. Load `00_estimate_{slug}.md` or check `03_stories_{slug}.md` for inline `**Estimate:**` fields. **Required** — sprint planning cannot proceed without estimates.
27
- 2. Load `03_stories_{slug}.md` — source of story priority (MoSCoW or custom), epic grouping, and acceptance criteria count.
27
+ 2. Load `03_stories_{slug}.md` — source of story priority (MoSCoW or custom), persona, business value score, epic grouping, **Depends on** field (per v3.5.0+ template), and acceptance criteria count.
28
28
  3. Load `00_risks_{slug}.md` if it exists — use risk scores to elevate priority of stories that mitigate 🔴 Critical or 🟡 High risks.
29
- 4. Load `02_srs_{slug}.md` — to extract any sequencing constraints (dependencies, technical prerequisites).
30
- 5. Load `00_sprint_{slug}.md` if it exists — merge mode: preserve confirmed sprints, re-plan only future ones.
29
+ 4. Load `02_srs_{slug}.md` — to extract any sequencing constraints (dependencies, technical prerequisites) beyond the explicit `Depends on` fields in stories.
30
+ 5. Load `00_discovery_{slug}.md` if it exists — for early signals about which features matter most to MVP success.
31
+ 6. Load `00_sprint_{slug}.md` if it exists — merge mode: preserve confirmed sprints, re-plan only future ones.
31
32
 
32
33
  ## Environment
33
34
 
@@ -35,17 +36,33 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
35
36
 
36
37
  ## Calibration interview
37
38
 
38
- Ask the following before planning (skip questions already answered in context or via syntax flags):
39
+ > **Follow the [Interview Protocol](../references/interview-protocol.md):** ask one question at a time, present a 2-column `| ID | Variant |` markdown table of up to 4 options plus a free-text "Other" row last (5 rows max), mark exactly one row **Recommended**, render variants in the user's language (rule 11), and wait for an answer.
40
+ >
41
+ > **Inline context (protocol rule 9):** if the user wrote text after `/sprint` (e.g., `/sprint 2-week sprints, 35 SP velocity, 70% focus factor`), parse it and skip the matching questions.
39
42
 
40
- 1. **Sprint length:** How many weeks per sprint? _(default: 2 weeks)_
41
- 2. **Team velocity:** Estimated Story Points per sprint (or T-shirt / person-days equivalent)? _(if not given, estimate from story count: assume 30–40 SP for a 3–5 developer team)_
42
- 3. **Team size:** Number of developers contributing to this project? _(used to sanity-check velocity)_
43
- 4. **Sprint 0:** Does the team need a sprint 0 for setup, architecture, or environment? _(yes/no if yes, add SP-00 with no user stories)_
44
- 5. **Hard deadline:** Is there a fixed release date or milestone? _(if yes, flag stories that will not fit before the deadline)_
45
- 6. **Parallel tracks:** Are frontend and backend worked on simultaneously, or sequentially? _(affects story ordering within a sprint)_
43
+ Ask the following before planning (skip questions already answered in context or via inline flags):
44
+
45
+ 1. **Sprint length:** How many weeks per sprint? **Recommended:** 2 weeks.
46
+ 2. **Theoretical velocity:** Maximum Story Points per sprint at 100% capacity (or T-shirt / person-days equivalent)? *(If not given, estimate from team size: assume 8–10 SP per developer per 2-week sprint at 100% capacity, before focus factor.)*
47
+ 3. **Team size:** Number of developers contributing to this project? *(Used to sanity-check velocity.)*
48
+ 4. **Focus factor** what percentage of theoretical capacity is actually available for new feature work? **Recommended: 65%**. Industry baseline accounts for: meetings, code review, mentoring, context-switching. A team that runs at 100% theoretical velocity is a team that's burning out.
49
+ 5. **Buffer / slack** — what percentage of capacity is reserved for bugs, support, and unplanned work? **Recommended: 15%**. Without explicit slack the first production incident derails the whole sprint.
50
+ 6. **Ceremonies overhead** — planning + review + retro + refinement time per sprint? **Recommended: 1 day per 2-week sprint per developer.**
51
+ 7. **Holidays / PTO** — any planned absence during the sprint window that should reduce capacity?
52
+ 8. **Sprint 0:** Does the team need a sprint 0 for setup, architecture, or environment? *(Yes / no — if yes, add SP-00 with no user stories.)*
53
+ 9. **Hard deadline:** Is there a fixed release date or milestone? *(If yes, flag stories that will not fit before the deadline.)*
54
+ 10. **Parallel tracks:** Are frontend and backend worked on simultaneously, or sequentially? *(Affects story ordering within a sprint.)*
46
55
 
47
56
  If the user types `/sprint` without additional input and prior context is sufficient, apply defaults and state assumptions explicitly in the output.
48
57
 
58
+ **Net velocity formula:**
59
+
60
+ ```
61
+ Net velocity = Theoretical velocity × Focus factor × (1 − Buffer fraction) − Ceremonies cost
62
+ ```
63
+
64
+ Example: 50 SP theoretical × 0.65 focus × (1 − 0.15) buffer − 5 SP ceremonies = **22.6 SP net velocity**. The skill assigns stories against **net velocity**, not theoretical. Senior scrum masters never schedule against the theoretical number — that's how teams overcommit and miss sprints.
65
+
49
66
  ## Planning algorithm
50
67
 
51
68
  ### Step 1 — Priority ordering
@@ -54,16 +71,17 @@ Sort stories for assignment using this precedence:
54
71
 
55
72
  1. **Must** stories first (MoSCoW: Must > Should > Could > Won't).
56
73
  2. Within the same priority tier, elevate stories that mitigate 🔴 Critical or 🟡 High risks (from `00_risks_{slug}.md`).
57
- 3. Within the same priority and risk tier, order by dependencies: stories that are prerequisite to others go first.
58
- 4. Within the same tier with no dependencies, order by estimate ascending (smaller stories first reduces WIP).
74
+ 3. Within the same priority and risk tier, sort by **Business Value Score** (per v3.5.0+ stories template) higher value first.
75
+ 4. Within the same priority, risk, and value tier, order by dependencies: stories that are prerequisite to others go first. **Read the `Depends on` field per v3.5.0+ stories template** for explicit story-to-story dependencies, plus any sequencing constraints from `02_srs_*.md`.
76
+ 5. Within the same tier with no dependencies, order by estimate ascending (smaller stories first — reduces WIP).
59
77
 
60
78
  ### Step 2 — Sprint assignment
61
79
 
62
- Fill sprints greedily from the ordered list:
80
+ Fill sprints greedily from the ordered list against **net velocity** (not theoretical):
63
81
 
64
- - Assign stories to the current sprint until adding the next story would exceed velocity.
65
- - If a story alone exceeds velocity, flag it for splitting: `⚠️ US-NNN (N SP) exceeds sprint capacity — consider /split US-NNN`.
66
- - If a story has an explicit prerequisite not yet assigned, defer it to the sprint after its prerequisite completes.
82
+ - Assign stories to the current sprint until adding the next story would exceed net velocity.
83
+ - If a story alone exceeds net velocity, flag it for splitting: `⚠️ US-NNN (N SP) exceeds sprint capacity — consider /split US-NNN`.
84
+ - If a story has an explicit `Depends on` not yet assigned, defer it to the sprint after its prerequisite completes.
67
85
  - When a hard deadline is provided, mark the sprint that contains it and flag any Must stories not scheduled before it as 🚨 **At risk**.
68
86
 
69
87
  ### Step 3 — Sprint goal derivation
@@ -74,78 +92,7 @@ For each sprint, derive a one-sentence goal that describes the primary user-faci
74
92
 
75
93
  ## Generation
76
94
 
77
- Save `00_sprint_{slug}.md` to the output directory.
78
-
79
- ```markdown
80
- # Sprint Plan: {PROJECT_NAME}
81
-
82
- **Domain:** {DOMAIN}
83
- **Date:** {DATE}
84
- **Slug:** {SLUG}
85
- **Sprint length:** {N} weeks
86
- **Team velocity:** {N} SP per sprint
87
- **Sources:** {list of artifacts used}
88
-
89
- ---
90
-
91
- ## Summary
92
-
93
- | Sprint | Goal | Stories | Points | Capacity |
94
- |--------|------|:-------:|:------:|:--------:|
95
- | SP-00 | Setup and environment | — | — | — |
96
- | SP-01 | [Goal] | N | N SP | N% |
97
- | SP-02 | [Goal] | N | N SP | N% |
98
- | **Total** | | **N** | **N SP** | |
99
-
100
- **Planned:** N stories / N SP across N sprints
101
- **Unplanned backlog:** N stories / N SP (scope exceeds capacity or marked Won't)
102
-
103
- ---
104
-
105
- ## Sprint Details
106
-
107
- ### SP-01 — [Sprint Goal]
108
-
109
- **Duration:** Week 1–2
110
- **Capacity:** {N} SP
111
-
112
- | US | Title | Epic | Priority | Risk | Estimate |
113
- |----|-------|------|---------|------|---------|
114
- | US-001 | [Title] | E-01 | Must | RISK-02 ↑ | 5 SP |
115
- | US-002 | [Title] | E-01 | Must | — | 3 SP |
116
- | US-005 | [Title] | E-02 | Should | — | 8 SP |
117
-
118
- **Sprint total:** N SP / {velocity} SP capacity (N%)
119
-
120
- **Definition of Done for this sprint:**
121
- - [ ] All stories pass their Acceptance Criteria.
122
- - [ ] API endpoints for this sprint are integrated and tested.
123
- - [ ] No 🔴 Critical open items in `/analyze` for completed stories.
124
-
125
- ---
126
-
127
- ### SP-02 — [Sprint Goal]
128
-
129
- ...
130
-
131
- ---
132
-
133
- ## Unplanned Backlog
134
-
135
- Stories not assigned to any sprint (capacity exceeded, low priority, or deferred):
136
-
137
- | US | Title | Epic | Priority | Estimate | Reason |
138
- |----|-------|------|---------|---------|--------|
139
- | US-018 | [Title] | E-04 | Could | 3 SP | Capacity exceeded |
140
- | US-022 | [Title] | E-05 | Won't | 8 SP | Out of MVP scope |
141
-
142
- ---
143
-
144
- ## Assumptions
145
-
146
- - Sprint velocity: {N} SP based on {source: user input / estimate from team size}.
147
- - {Any other assumption made during planning.}
148
- ```
95
+ Save `00_sprint_{slug}.md` to the output directory. The full layout lives at `references/templates/sprint-template.md` and is the single source of truth — including the per-story Persona column (per v3.5.0+ stories template), the net-velocity header, and the sprint-level Definition of Done.
149
96
 
150
97
  Sprint IDs are sequential (SP-00, SP-01, SP-02, …). SP-00 is reserved for setup/architecture sprint if requested.
151
98
 
@@ -10,57 +10,40 @@ Cross-cutting command of the BA Toolkit pipeline. Available after `/stories` is
10
10
 
11
11
  ## Context loading
12
12
 
13
- 0. If `00_principles_*.md` exists in the output directory, load it. Use its traceability requirements (section 3) to determine which links are CRITICAL, HIGH, or MEDIUM severity when flagging gaps.
14
- 1. Read all pipeline artifacts from the output directory. Minimum required: `02_srs_*.md` and `03_stories_*.md`.
15
- 2. Determine which artifacts are available and adapt matrix columns accordingly.
13
+ 0. If `00_principles_*.md` exists in the output directory, load it. Use its traceability requirements (section 3) to determine which links are CRITICAL, HIGH, or MEDIUM severity when flagging gaps. The principles file is the source of truth for severity thresholds — `/trace` does not invent its own.
14
+ 1. Read all pipeline artifacts from the output directory. Minimum required: `02_srs_*.md` and `03_stories_*.md`. Auto-consume any of: `00_discovery_*.md`, `00_principles_*.md`, `04_usecases_*.md`, `05_ac_*.md`, `06_nfr_*.md`, `07_datadict_*.md`, `07a_research_*.md`, `08_apicontract_*.md`, `09_wireframes_*.md`, `10_scenarios_*.md`, `11_handoff_*.md`, `12_implplan_*.md`.
15
+ 2. Determine which artifacts are available and adapt matrix columns accordingly. The implementation plan (`12_implplan_*.md`) introduces a new traceability column: FR → Task (T-NN-NNN), so the chain is now `FR → US → UC → AC → NFR → Entity → ADR → API → WF → SC → Task`.
16
16
  3. Domain reference not needed for this skill — all information comes from the artifacts.
17
17
 
18
18
  ## Environment
19
19
 
20
20
  Read `references/environment.md` from the `ba-toolkit` directory to determine the output directory for the current platform. If the file is unavailable, apply the default rule: if `/mnt/user-data/outputs/` exists and is writable, save there (Claude.ai); otherwise save to the current working directory.
21
21
 
22
- ## Generation
23
-
24
- No interview needed. Information is extracted from existing artifacts automatically.
25
-
26
- **File:** `00_trace_{slug}.md`
27
-
28
- ```markdown
29
- # Traceability Matrix: {Name}
22
+ ## Calibration interview
30
23
 
31
- **Date:** {date}
32
- **Artifacts:** {list of found pipeline files}
24
+ > **Follow the [Interview Protocol](../references/interview-protocol.md):** ask one question at a time, present a 2-column `| ID | Variant |` markdown table of up to 4 options plus a free-text "Other" row last (5 rows max), mark exactly one row **Recommended**, render variants in the user's language (rule 11), and wait for an answer.
25
+ >
26
+ > **Inline context (protocol rule 9):** if the user wrote text after `/trace` (e.g., `/trace forward only, focus on FR→US`), parse it as the focus hint and skip the matching questions.
33
27
 
34
- ## Matrix
28
+ If the user invokes `/trace` with no inline hint, ask the following short calibration interview (skip any question already answered by inline context or by `00_principles_*.md`):
35
29
 
36
- | FR | US | UC | AC | NFR | Data Entity | API Endpoint | Wireframe |
37
- |----|----|----|----|----|-------------|-------------|-----------|
38
- | FR-001 | US-001, US-002 | UC-001 | AC-001-01 | NFR-003 | User, Bet | POST /bets | WF-005 |
30
+ 1. **Direction** — forward (FR downstream), reverse (downstream FR), or bidirectional (both)? **Recommended:** bidirectional, because senior BA practice always produces both directions.
31
+ 2. **Scope** — full pipeline, or focus on a specific artifact pair (e.g., FR → API only)?
32
+ 3. **Severity-thresholds source** — use the thresholds from `00_principles_*.md` §3 if it exists, or apply the defaults (Must FR with no US = CRITICAL, Should FR with no US = HIGH, Could FR with no US = MEDIUM, Won't FR uncovered = LOW)?
39
33
 
40
- ## Coverage Statistics
41
-
42
- | Artifact | Total | Covered | Uncovered | Coverage % |
43
- |----------|-------|---------|-----------|------------|
44
-
45
- ## Uncovered Elements
34
+ ## Generation
46
35
 
47
- ### FR without linked US
48
- ### US without linked UC
49
- ### US without AC
50
- ### FR without NFR coverage
51
- ### Data entities without FR/US link
52
- ### API endpoints without FR/US link
53
- ### Wireframes without US link
36
+ **File:** `00_trace_{slug}.md`
54
37
 
55
- ## Recommendations
56
- Specific actions to close coverage gaps.
57
- ```
38
+ The full per-axis matrix layout lives at `references/templates/trace-template.md` and is the single source of truth. The artifact carries: a Forward Traceability matrix (FR → all downstream artifacts), a Reverse Traceability matrix (US, UC, AC, NFR, Entity, API, WF, SC, Task → FR), Coverage Gaps grouped by severity (Critical / High / Medium / Low per the principles thresholds), Coverage Statistics per artifact pair, and Recommended Actions sorted by severity.
58
39
 
59
40
  **Rules:**
60
41
  - Columns include only artifact types that have been created. Missing columns marked with `—`.
61
- - Links extracted from "Linked FR/US" fields in each artifact.
62
- - Inconsistency (link present in one artifact but missing in another) is flagged.
63
- - Coverage: an element is covered if it has at least one link in the next matrix column.
42
+ - **Both forward and reverse traceability are produced by default.** Forward catches "what does this requirement become?", reverse catches "why does this artifact exist?" — a senior BA needs both directions to validate provenance.
43
+ - Links extracted from `Linked FR`, `Source`, and `Linked US` fields in each artifact (per the v3.5.0+ provenance template fields).
44
+ - Inconsistency (link present in one artifact but missing in another) is flagged as a separate finding.
45
+ - **Severity is read from `00_principles_*.md` §3** if present; otherwise default thresholds apply (Must = CRITICAL on uncovered, Should = HIGH, Could = MEDIUM, Won't = LOW).
46
+ - Coverage: an element is covered if it has at least one link in the relevant downstream column. Orphaned elements in any direction are flagged at their stated severity.
64
47
 
65
48
  ## Iterative refinement
66
49