@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.
- package/CHANGELOG.md +106 -1
- package/package.json +1 -1
- package/skills/analyze/SKILL.md +57 -17
- package/skills/clarify/SKILL.md +31 -11
- package/skills/estimate/SKILL.md +41 -9
- package/skills/export/SKILL.md +17 -11
- package/skills/glossary/SKILL.md +24 -7
- package/skills/handoff/SKILL.md +64 -20
- package/skills/implement-plan/SKILL.md +8 -2
- package/skills/principles/SKILL.md +5 -2
- package/skills/references/templates/analyze-template.md +23 -15
- package/skills/references/templates/discovery-template.md +24 -1
- package/skills/references/templates/handoff-template.md +93 -33
- package/skills/references/templates/principles-template.md +121 -18
- package/skills/references/templates/research-template.md +74 -22
- package/skills/references/templates/risk-template.md +58 -157
- package/skills/references/templates/sprint-template.md +71 -104
- package/skills/references/templates/trace-template.md +83 -19
- package/skills/research/SKILL.md +20 -7
- package/skills/risk/SKILL.md +43 -9
- package/skills/sprint/SKILL.md +36 -89
- package/skills/trace/SKILL.md +19 -36
package/skills/sprint/SKILL.md
CHANGED
|
@@ -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)
|
|
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 `
|
|
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
|
-
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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,
|
|
58
|
-
4. Within the same
|
|
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
|
|
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
|
|
package/skills/trace/SKILL.md
CHANGED
|
@@ -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
|
-
##
|
|
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
|
-
**
|
|
32
|
-
|
|
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
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
##
|
|
41
|
-
|
|
42
|
-
| Artifact | Total | Covered | Uncovered | Coverage % |
|
|
43
|
-
|----------|-------|---------|-----------|------------|
|
|
44
|
-
|
|
45
|
-
## Uncovered Elements
|
|
34
|
+
## Generation
|
|
46
35
|
|
|
47
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
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
|
|