@kudusov.takhir/ba-toolkit 3.11.0 → 3.12.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 +12 -0
- package/package.json +1 -1
- package/skills/ac/SKILL.md +1 -1
- package/skills/analyze/SKILL.md +1 -1
- package/skills/apicontract/SKILL.md +1 -1
- package/skills/brief/SKILL.md +1 -1
- package/skills/clarify/SKILL.md +26 -12
- package/skills/datadict/SKILL.md +1 -1
- package/skills/discovery/SKILL.md +2 -2
- package/skills/estimate/SKILL.md +1 -1
- package/skills/export/SKILL.md +1 -1
- package/skills/implement-plan/SKILL.md +1 -1
- package/skills/nfr/SKILL.md +1 -1
- package/skills/principles/SKILL.md +11 -10
- package/skills/publish/SKILL.md +2 -2
- package/skills/references/interview-protocol.md +15 -13
- package/skills/research/SKILL.md +1 -1
- package/skills/risk/SKILL.md +1 -1
- package/skills/scenarios/SKILL.md +1 -1
- package/skills/sprint/SKILL.md +1 -1
- package/skills/srs/SKILL.md +1 -1
- package/skills/stories/SKILL.md +1 -1
- package/skills/trace/SKILL.md +1 -1
- package/skills/usecases/SKILL.md +1 -1
- package/skills/wireframes/SKILL.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,17 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
+
## [3.12.0] — 2026-04-11
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- **Interview question numbering.** Every interview-phase skill now prefixes questions with `(N/M)` — e.g., `(2/7) Who is the primary user?` — so users see progress through the interview. Interview protocol rule 1 extended; all examples updated. All 21 SKILL.md files inherit the change via protocol reference.
|
|
19
|
+
- **Recommended marker simplified.** `**Recommended**` → `(recommended)`. No bold, no emoji, no translation — always English regardless of the user's language. Updated in interview protocol rules 10–11, 22 skill and reference files, and 2 regression tests.
|
|
20
|
+
- **Language question removed from /principles.** Artifact language is now auto-detected from the user's first message instead of being asked as a required interview topic. Remaining topics renumbered (9 → 8). The generated `## 1. Artifact Language` section is still written — it records what was detected.
|
|
21
|
+
- **`/clarify` one-at-a-time question flow.** Ambiguities are now presented sequentially with `(N/M)` numbering instead of a single bulk table. Binary questions (e.g., "Is Manager the same as Admin?") get a short options table following the interview protocol format; open-ended questions get free-form input. Users can reply `skip` or `defer` to leave a question unresolved.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
14
25
|
## [3.11.0] — 2026-04-11
|
|
15
26
|
|
|
16
27
|
### Added
|
|
@@ -818,6 +829,7 @@ CI scripts that relied on the old behaviour (`init` creates files only, `install
|
|
|
818
829
|
---
|
|
819
830
|
|
|
820
831
|
[Unreleased]: https://github.com/TakhirKudusov/ba-toolkit/compare/v3.10.1...HEAD
|
|
832
|
+
[3.12.0]: https://github.com/TakhirKudusov/ba-toolkit/compare/v3.11.0...v3.12.0
|
|
821
833
|
[3.11.0]: https://github.com/TakhirKudusov/ba-toolkit/compare/v3.10.6...v3.11.0
|
|
822
834
|
[3.10.6]: https://github.com/TakhirKudusov/ba-toolkit/compare/v3.10.5...v3.10.6
|
|
823
835
|
[3.10.5]: https://github.com/TakhirKudusov/ba-toolkit/compare/v3.10.4...v3.10.5
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kudusov.takhir/ba-toolkit",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.12.0",
|
|
4
4
|
"description": "AI-powered Business Analyst pipeline — 24 skills from concept discovery to a sequenced implementation plan an AI coding agent can execute, with one-command Notion + Confluence publish. Works with Claude Code, Codex CLI, Gemini CLI, Cursor, and Windsurf.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"business-analyst",
|
package/skills/ac/SKILL.md
CHANGED
|
@@ -21,7 +21,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
21
21
|
|
|
22
22
|
## Interview
|
|
23
23
|
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
25
25
|
>
|
|
26
26
|
> **Inline context (protocol rule 9):** if the user wrote text after `/ac` (e.g., `/ac focus on US-007 and US-011`), use it as a story-id filter for which acceptance criteria to draft first.
|
|
27
27
|
|
package/skills/analyze/SKILL.md
CHANGED
|
@@ -21,7 +21,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
21
21
|
|
|
22
22
|
## Calibration interview
|
|
23
23
|
|
|
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
|
|
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
25
|
>
|
|
26
26
|
> **Inline context (protocol rule 9):** if the user wrote text after `/analyze` (e.g., `/analyze focus on security and performance`), parse it as a category-focus hint and run only those categories.
|
|
27
27
|
|
|
@@ -21,7 +21,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
21
21
|
|
|
22
22
|
## Interview
|
|
23
23
|
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
25
25
|
>
|
|
26
26
|
> **Inline context (protocol rule 9):** if the user wrote text after `/apicontract` (e.g., `/apicontract REST with JWT auth, OpenAPI 3.1`), use it as a style and protocol hint for the API design.
|
|
27
27
|
|
package/skills/brief/SKILL.md
CHANGED
|
@@ -36,7 +36,7 @@ The domain is written into the brief metadata and passed to all subsequent pipel
|
|
|
36
36
|
|
|
37
37
|
### 4. Interview
|
|
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 domain-appropriate options (load `references/domains/{domain}.md` for the ones that fit) plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
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 domain-appropriate options (load `references/domains/{domain}.md` for the ones that fit) plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
40
40
|
>
|
|
41
41
|
> **Inline context (protocol rule 9):** if the user wrote text after `/brief` (e.g., `/brief I want to build an online store for construction materials`), parse that as the lead-in answer, acknowledge it in one line, and skip directly to the first structured question that the inline text doesn't already cover.
|
|
42
42
|
>
|
package/skills/clarify/SKILL.md
CHANGED
|
@@ -72,27 +72,41 @@ Inconsistent use of must / shall / should / may. IEEE 830 expects strict modal d
|
|
|
72
72
|
|
|
73
73
|
## Output to the user
|
|
74
74
|
|
|
75
|
-
Present findings
|
|
75
|
+
Present findings **one at a time**, following the same conversational flow as the interview protocol (see `references/interview-protocol.md` rule 1). After the analysis pass, count the total ambiguities found and present them sequentially with `(N/M)` numbering.
|
|
76
|
+
|
|
77
|
+
Each question shows the location, category, and the specific ambiguity:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Found {M} ambiguities in {artifact_file}. Resolving one at a time.
|
|
81
|
+
|
|
82
|
+
(1/5) **FR-003** · Category A — Metrics-free
|
|
83
|
+
"The system must respond quickly" — what is the acceptable response time in ms under normal load?
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Wait for the user to answer before showing the next question.
|
|
87
|
+
|
|
88
|
+
For **binary or constrained questions** (e.g., "Is Manager the same as Admin?" or "Which currency?"), present a short options table following the interview protocol format:
|
|
76
89
|
|
|
77
90
|
```
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
|
|
|
86
|
-
| 5 | FR-022 | I — Currency gap | "User charged a fee" — currency? per region? | _(awaiting answer)_ |
|
|
91
|
+
(2/5) **US-007** · Category B — Undefined term
|
|
92
|
+
Role "Manager" used here but not defined in Roles. What is it?
|
|
93
|
+
|
|
94
|
+
| ID | Variant |
|
|
95
|
+
|----|--------------------------------------------------|
|
|
96
|
+
| a | Same as "Admin" — merge into one role |
|
|
97
|
+
| b | Separate role with its own permissions |
|
|
98
|
+
| c | Other — type your own answer |
|
|
87
99
|
```
|
|
88
100
|
|
|
89
|
-
|
|
101
|
+
For **open-ended questions** (e.g., "What is the response time target?"), ask directly without a table — the user types a free-form answer.
|
|
102
|
+
|
|
103
|
+
The user can reply `skip` or `defer` to any question to leave it unresolved. Acknowledge each answer in one line before moving to the next question.
|
|
90
104
|
|
|
91
105
|
If no ambiguities are found, state that clearly and suggest `/analyze` for a broader cross-artifact check.
|
|
92
106
|
|
|
93
107
|
## Resolution
|
|
94
108
|
|
|
95
|
-
After
|
|
109
|
+
After all questions are answered (or deferred):
|
|
96
110
|
|
|
97
111
|
1. Apply the answers to update the artifact (rewrite affected elements).
|
|
98
112
|
2. **Ripple-effect check.** Before saving, identify any answer that affects a prior or downstream artifact (a role definition affects `/srs` Roles section AND `/stories` personas AND `/usecases` actors AND `/scenarios` personas; a new business rule affects `/srs` business rules AND `/ac` Given/When/Then conditions AND `/datadict` constraints AND `/apicontract` validation rules). For each ripple, list the affected files and offer to update them with `/revise`. Do not auto-modify unrelated artifacts without confirmation.
|
package/skills/datadict/SKILL.md
CHANGED
|
@@ -21,7 +21,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
21
21
|
|
|
22
22
|
## Interview
|
|
23
23
|
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
25
25
|
>
|
|
26
26
|
> **Inline context (protocol rule 9):** if the user wrote text after `/datadict` (e.g., `/datadict the user and order entities are critical`), use it as a hint for which entities to model first.
|
|
27
27
|
|
|
@@ -33,7 +33,7 @@ If none of the 12 fits, record the recommended domain as `custom:{name}` and let
|
|
|
33
33
|
|
|
34
34
|
### 4. Interview
|
|
35
35
|
|
|
36
|
-
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
36
|
+
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
37
37
|
>
|
|
38
38
|
> **Inline context (protocol rule 9):** if the user wrote text after `/discovery` (e.g., `/discovery I think there's a need for a tool that helps freelance designers track invoices and chase late payments`), parse it as the lead-in answer, acknowledge it in one line, and skip directly to the first structured question that the inline text doesn't already cover.
|
|
39
39
|
>
|
|
@@ -44,7 +44,7 @@ Cover 5–7 topics in 2 rounds. Do not generate the artifact until you can recom
|
|
|
44
44
|
**Required topics:**
|
|
45
45
|
1. Problem space — what pain point, gap, or opportunity is being explored.
|
|
46
46
|
2. Target audience hypothesis — 1–2 candidate user segments, as concrete as possible.
|
|
47
|
-
3. Domain shortlist — narrow to 1 of the 12 supported domains (or `custom`) with a one-line rationale; mark one row
|
|
47
|
+
3. Domain shortlist — narrow to 1 of the 12 supported domains (or `custom`) with a one-line rationale; mark one row (recommended) based on the problem/audience answers so far.
|
|
48
48
|
4. Reference products and analogues — what already exists in this space (3–5 examples), and what's missing or done badly.
|
|
49
49
|
5. MVP feature hypotheses — 5–10 candidate features for a first version. Bullet list, not committed scope.
|
|
50
50
|
6. Differentiation angle — why this idea would beat the existing analogues (one or two sentences).
|
package/skills/estimate/SKILL.md
CHANGED
|
@@ -35,7 +35,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
35
35
|
|
|
36
36
|
## Calibration interview
|
|
37
37
|
|
|
38
|
-
> **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
|
|
38
|
+
> **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.
|
|
39
39
|
>
|
|
40
40
|
> **Inline context (protocol rule 9):** if the user wrote text after `/estimate` (e.g., `/estimate t-shirt, post-srs phase, +20% buffer`), parse it and skip the matching questions.
|
|
41
41
|
|
package/skills/export/SKILL.md
CHANGED
|
@@ -36,7 +36,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
36
36
|
|
|
37
37
|
## Format interview
|
|
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
|
|
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
40
|
>
|
|
41
41
|
> **Inline context (protocol rule 9):** if the user wrote text after `/export` (e.g., `/export jira PROJ`, `/export github owner/repo`), parse it as a format + target hint and skip the matching questions.
|
|
42
42
|
|
|
@@ -59,7 +59,7 @@ The plan must record an explicit tech stack so an AI coding agent can pick file
|
|
|
59
59
|
|
|
60
60
|
**Step 2 — calibration interview (fallback).** If `/research` was not run, OR if `/research` left specific decisions as TBD, run a short calibration interview.
|
|
61
61
|
|
|
62
|
-
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
62
|
+
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
63
63
|
>
|
|
64
64
|
> **Inline context (protocol rule 9):** if the user wrote text after `/implement-plan` (e.g., `/implement-plan use Next.js, FastAPI, and Postgres on Fly.io`), parse it as the tech-stack hint and skip whichever interview questions it already answers.
|
|
65
65
|
|
package/skills/nfr/SKILL.md
CHANGED
|
@@ -21,7 +21,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
21
21
|
|
|
22
22
|
## Interview
|
|
23
23
|
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
25
25
|
>
|
|
26
26
|
> **Inline context (protocol rule 9):** if the user wrote text after `/nfr` (e.g., `/nfr emphasise security and compliance`), use it as a category hint for which NFR areas to prioritise.
|
|
27
27
|
|
|
@@ -27,7 +27,7 @@ If `01_brief_*.md` already exists, extract the slug and domain from it. Otherwis
|
|
|
27
27
|
|
|
28
28
|
### 3. Interview
|
|
29
29
|
|
|
30
|
-
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
30
|
+
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
31
31
|
>
|
|
32
32
|
> **Inline context (protocol rule 9):** if the user wrote text after `/principles`, parse it as the lead-in answer and skip directly to the first structured question it doesn't already cover.
|
|
33
33
|
>
|
|
@@ -36,15 +36,16 @@ If `01_brief_*.md` already exists, extract the slug and domain from it. Otherwis
|
|
|
36
36
|
1–2 rounds, 3–5 topics each. Do not ask about topics the user can accept as defaults.
|
|
37
37
|
|
|
38
38
|
**Required topics:**
|
|
39
|
-
1.
|
|
40
|
-
2.
|
|
41
|
-
3.
|
|
42
|
-
4.
|
|
43
|
-
5.
|
|
44
|
-
6.
|
|
45
|
-
7. **
|
|
46
|
-
8. **
|
|
47
|
-
|
|
39
|
+
1. Traceability strictness — should every Must-priority US require a Use Case, or only US with complex flows? (default: only complex flows)
|
|
40
|
+
2. NFR baseline — which **ISO/IEC 25010** quality characteristics are mandatory beyond the domain defaults? (Performance Efficiency / Reliability / Security / Compatibility / Usability / Maintainability / Portability / Functional Suitability — `/nfr` reads this list verbatim and treats it as a checklist).
|
|
41
|
+
3. Definition of Ready — any project-specific acceptance criteria for finalizing an artifact beyond the `v3.7.0+` baseline DoR per artifact type listed in §4 below? (e.g., stakeholder sign-off, specific review steps).
|
|
42
|
+
4. Quality gate — at what severity level should `/analyze` findings block `/done`? (default: CRITICAL only)
|
|
43
|
+
5. Output folder structure — save all artifacts flat in the output directory (default), or inside a `{slug}/` subfolder? (useful when managing multiple projects side by side)
|
|
44
|
+
6. **Testing strategy** — TDD (tests before implementation), tests-after, integration-only, manual-only, none? Drives whether `/implement-plan` task templates embed "Tests to write first" blocks. **Recommended:** TDD for production-grade systems; tests-after for prototypes; manual-only or none for spike work. *(This is the principles-based approach to the testing-discipline question that batch 6 item 2 surfaced — the right place to declare a testing strategy is here, not as a separate skill.)*
|
|
45
|
+
7. **Stakeholder decision authority** — who has sign-off authority on changes to these principles? Captured by name and role. Without this, principle changes become contentious mid-project.
|
|
46
|
+
8. **Code review and branching policy** — trunk-based / GitFlow / GitHub flow? Required reviewers per PR? `/implement-plan` and downstream skills assume one of these defaults but the principles file is the source of truth.
|
|
47
|
+
|
|
48
|
+
**Note:** Artifact language is **not** an interview topic — it is detected automatically from the user's first message and recorded in `## 1. Artifact Language` of the generated file. The user can override it later by re-running `/principles`.
|
|
48
49
|
|
|
49
50
|
### 4. Generation
|
|
50
51
|
|
package/skills/publish/SKILL.md
CHANGED
|
@@ -28,7 +28,7 @@ Verify at least one BA Toolkit artifact exists in cwd by listing files matching
|
|
|
28
28
|
|
|
29
29
|
### 3. Format selection
|
|
30
30
|
|
|
31
|
-
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
31
|
+
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
32
32
|
>
|
|
33
33
|
> **Inline context (protocol rule 9):** if the user wrote text after `/publish` (e.g., `/publish notion`, `/publish to confluence`, `/publish both`), parse it as the format choice and skip the question entirely.
|
|
34
34
|
|
|
@@ -38,7 +38,7 @@ If no format is given, ask:
|
|
|
38
38
|
>
|
|
39
39
|
> | ID | Variant |
|
|
40
40
|
> |----|------------------------------------------------------|
|
|
41
|
-
> | a | Both Notion and Confluence
|
|
41
|
+
> | a | Both Notion and Confluence (recommended) |
|
|
42
42
|
> | b | Notion only |
|
|
43
43
|
> | c | Confluence only |
|
|
44
44
|
> | d | Other — type your own answer |
|
|
@@ -4,7 +4,7 @@ Every BA Toolkit skill that gathers information from the user MUST follow this p
|
|
|
4
4
|
|
|
5
5
|
## Rules
|
|
6
6
|
|
|
7
|
-
1. **One question at a time.** Never send a numbered list of 5+ questions in a single message. Ask one question, wait for the answer, acknowledge it in one line, then ask the next.
|
|
7
|
+
1. **One question at a time, numbered.** Never send a numbered list of 5+ questions in a single message. Ask one question, wait for the answer, acknowledge it in one line, then ask the next. Prefix each question with its number and total in the format `(N/M)` — e.g., `(1/7)`, `(3/7)`. Estimate M before the interview starts based on the skill's required topics minus any already answered via inline context (rule 9). If the total changes mid-interview (e.g., a user answer opens a follow-up topic), update the denominator silently.
|
|
8
8
|
|
|
9
9
|
2. **Present options as a 2-column markdown table.** Every question carries a short table with columns `| ID | Variant |`. The IDs are lowercase letters starting at `a` (`a`, `b`, `c`, `d`, `e`, …). Tables render cleanly in every supported AI agent (Claude Code, Codex CLI, Gemini CLI, Cursor, Windsurf) and scan faster than a numbered list. Pull the variants from:
|
|
10
10
|
- The project domain (load `references/domains/{domain}.md` and reuse its vocabulary, typical entities, and business goals verbatim when they fit — do not invent domain-specific options when the reference file already lists them).
|
|
@@ -27,9 +27,9 @@ Every BA Toolkit skill that gathers information from the user MUST follow this p
|
|
|
27
27
|
|
|
28
28
|
9. **Inline command context.** If the user invokes the skill with text after the slash command — for example `/brief I want to build an online store for construction materials targeting B2B buyers in LATAM` or `/srs the SRS should focus on the payments module first` — parse that text as if it were the answer to the lead-in question (rule 8). Skip the open-ended lead-in and use the inline text to pre-fill any structured questions you can. Only ask the user for what's still missing. Acknowledge the inline context once at the start (`Got it — online store for construction materials, B2B buyers, LATAM market.`) so the user knows their context was understood, then jump straight into the first structured question that the inline text didn't already answer. This rule applies to **every** skill that has an Interview phase, not just entry-point skills.
|
|
29
29
|
|
|
30
|
-
10. **Mark exactly one row as
|
|
30
|
+
10. **Mark exactly one row as recommended.** In every options table, append `(recommended)` to the end of the `Variant` cell of the single row that best fits the project context. Always use the English word `(recommended)` regardless of the user's language — do not translate, bold, or add emoji to the marker. Pick the row using, in order: (a) the loaded `references/domains/{domain}.md` for the current skill — what the reference treats as the typical default; (b) what the user has already said earlier in this interview; (c) the inline context from rule 9; (d) widely-accepted industry default. Never recommend the free-text "Other" row. Never recommend more than one row. If none of (a)–(d) gives you a defensible choice, omit the marker entirely for that question rather than guessing — a missing recommendation is better than a misleading one.
|
|
31
31
|
|
|
32
|
-
11. **Variant text in the user's language.** The `Variant` column header and every variant string must be written in the same language as the user's first message in this conversation — the same rule the generated artifact already follows. The `ID` column header
|
|
32
|
+
11. **Variant text in the user's language.** The `Variant` column header and every variant string must be written in the same language as the user's first message in this conversation — the same rule the generated artifact already follows. The `ID` column header, the letter IDs (`a`, `b`, …), and the `(recommended)` marker stay in English, unchanged. Domain reference files in `references/domains/` are English-only by design; when the interview language is not English, translate the variants on the fly as you render the table — do not paste the English source verbatim and do not ask the user which language to use.
|
|
33
33
|
|
|
34
34
|
## Example
|
|
35
35
|
|
|
@@ -42,40 +42,42 @@ Bad (old style — questionnaire dump):
|
|
|
42
42
|
> 4. What are the success metrics?
|
|
43
43
|
> 5. What are the key constraints?
|
|
44
44
|
|
|
45
|
-
Good (protocol style — one question, table of variants, 5 rows max, one
|
|
45
|
+
Good (protocol style — one question at a time, numbered, table of variants, 5 rows max, one recommended):
|
|
46
46
|
|
|
47
|
-
> Let's start with the product itself. What are you building?
|
|
47
|
+
> (1/7) Let's start with the product itself. What are you building?
|
|
48
48
|
>
|
|
49
49
|
> | ID | Variant |
|
|
50
50
|
> |----|-------------------------------------------------------------------------------|
|
|
51
|
-
> | a | A B2B SaaS tool for internal teams (dashboards, automation)
|
|
51
|
+
> | a | A B2B SaaS tool for internal teams (dashboards, automation) (recommended) |
|
|
52
52
|
> | b | A customer-facing web application (marketplace, portal) |
|
|
53
53
|
> | c | A mobile app (consumer or B2B) |
|
|
54
54
|
> | d | An API / developer platform |
|
|
55
55
|
> | e | Other — type your own answer |
|
|
56
56
|
|
|
57
|
-
*User replies with `a`, types the verbatim variant text, or picks `e` and types their own description. The
|
|
57
|
+
*User replies with `a`, types the verbatim variant text, or picks `e` and types their own description. The `(recommended)` marker on row `a` reflects the loaded SaaS domain reference + the inline context the user gave with `/brief`.*
|
|
58
58
|
|
|
59
|
-
> Got it — internal B2B SaaS tool.
|
|
59
|
+
> Got it — internal B2B SaaS tool.
|
|
60
|
+
>
|
|
61
|
+
> (2/7) Who is the primary user?
|
|
60
62
|
>
|
|
61
63
|
> | ID | Variant |
|
|
62
64
|
> |----|--------------------------------------------------------------------------|
|
|
63
|
-
> | a | Product Manager at a 50–500-person SaaS startup
|
|
65
|
+
> | a | Product Manager at a 50–500-person SaaS startup (recommended) |
|
|
64
66
|
> | b | Engineering Lead at a B2B company |
|
|
65
67
|
> | c | Operations / Support team at a mid-size SaaS |
|
|
66
68
|
> | d | Other — type your own answer |
|
|
67
69
|
|
|
68
|
-
*…and so on, one question at a time, until every required topic for the current skill has an answer. Tables stay at 5 rows or fewer; exactly one predefined row is marked
|
|
70
|
+
*…and so on, one question at a time, until every required topic for the current skill has an answer. Tables stay at 5 rows or fewer; exactly one predefined row is marked (recommended), never the "Other" row.*
|
|
69
71
|
|
|
70
72
|
### Variant translation example (rule 11)
|
|
71
73
|
|
|
72
|
-
If the user's first message was in Russian, the same question is rendered with Russian variants and a translated `Variant` header
|
|
74
|
+
If the user's first message was in Russian, the same question is rendered with Russian variants and a translated `Variant` header — `ID` column, letter IDs, and `(recommended)` marker stay in English:
|
|
73
75
|
|
|
74
|
-
> Давайте начнём с самого продукта. Что вы создаёте?
|
|
76
|
+
> (1/7) Давайте начнём с самого продукта. Что вы создаёте?
|
|
75
77
|
>
|
|
76
78
|
> | ID | Вариант |
|
|
77
79
|
> |----|----------------------------------------------------------------------------------|
|
|
78
|
-
> | a | B2B SaaS-инструмент для внутренних команд (дашборды, автоматизация)
|
|
80
|
+
> | a | B2B SaaS-инструмент для внутренних команд (дашборды, автоматизация) (recommended) |
|
|
79
81
|
> | b | Клиентское веб-приложение (маркетплейс, портал) |
|
|
80
82
|
> | c | Мобильное приложение (для потребителей или B2B) |
|
|
81
83
|
> | d | API / платформа для разработчиков |
|
package/skills/research/SKILL.md
CHANGED
|
@@ -27,7 +27,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
27
27
|
|
|
28
28
|
## Interview
|
|
29
29
|
|
|
30
|
-
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
30
|
+
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
31
31
|
>
|
|
32
32
|
> **Inline context (protocol rule 9):** if the user wrote text after `/research` (e.g., `/research compare PostgreSQL vs DynamoDB for our event store`), use it as the focus question to research instead of asking for one.
|
|
33
33
|
|
package/skills/risk/SKILL.md
CHANGED
|
@@ -37,7 +37,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
37
37
|
|
|
38
38
|
## Calibration interview
|
|
39
39
|
|
|
40
|
-
> **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
|
|
40
|
+
> **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.
|
|
41
41
|
>
|
|
42
42
|
> **Inline context (protocol rule 9):** if the user wrote text after `/risk` (e.g., `/risk medium tolerance, focus on compliance`), parse it and skip the matching questions.
|
|
43
43
|
|
|
@@ -23,7 +23,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
23
23
|
|
|
24
24
|
## Interview
|
|
25
25
|
|
|
26
|
-
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
26
|
+
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
27
27
|
>
|
|
28
28
|
> **Inline context (protocol rule 9):** if the user wrote text after `/scenarios` (e.g., `/scenarios focus on the new-user onboarding journey`), use it to scope which end-to-end scenarios to draft.
|
|
29
29
|
|
package/skills/sprint/SKILL.md
CHANGED
|
@@ -36,7 +36,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
36
36
|
|
|
37
37
|
## Calibration interview
|
|
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
|
|
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
40
|
>
|
|
41
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.
|
|
42
42
|
|
package/skills/srs/SKILL.md
CHANGED
|
@@ -23,7 +23,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
23
23
|
|
|
24
24
|
## Interview
|
|
25
25
|
|
|
26
|
-
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
26
|
+
> **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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
27
27
|
>
|
|
28
28
|
> **Inline context (protocol rule 9):** if the user wrote text after `/srs` (e.g., `/srs focus on the payments module first`), parse it as a scope hint and use it to prioritise which functional areas you ask about.
|
|
29
29
|
|
package/skills/stories/SKILL.md
CHANGED
|
@@ -21,7 +21,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
21
21
|
|
|
22
22
|
## Interview
|
|
23
23
|
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
25
25
|
>
|
|
26
26
|
> **Inline context (protocol rule 9):** if the user wrote text after `/stories` (e.g., `/stories focus on the onboarding epic`), parse it as a scope hint and use it to narrow which areas you draft user stories for.
|
|
27
27
|
|
package/skills/trace/SKILL.md
CHANGED
|
@@ -21,7 +21,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
21
21
|
|
|
22
22
|
## Calibration interview
|
|
23
23
|
|
|
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
|
|
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
25
|
>
|
|
26
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.
|
|
27
27
|
|
package/skills/usecases/SKILL.md
CHANGED
|
@@ -21,7 +21,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
21
21
|
|
|
22
22
|
## Interview
|
|
23
23
|
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
25
25
|
>
|
|
26
26
|
> **Inline context (protocol rule 9):** if the user wrote text after `/usecases` (e.g., `/usecases focus on admin flows`), use it as a scope hint for which use cases to draft.
|
|
27
27
|
|
|
@@ -21,7 +21,7 @@ Read `references/environment.md` from the `ba-toolkit` directory to determine th
|
|
|
21
21
|
|
|
22
22
|
## Interview
|
|
23
23
|
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row
|
|
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 domain-appropriate options plus a free-text "Other" row last (5 rows max), mark exactly one row (recommended) based on the loaded domain reference and prior answers, render variants in the user's language (rule 11), and wait for an answer before asking the next question.
|
|
25
25
|
>
|
|
26
26
|
> **Inline context (protocol rule 9):** if the user wrote text after `/wireframes` (e.g., `/wireframes mobile-first, focus on the checkout flow`), use it as a layout and scope hint for which screens to draft first.
|
|
27
27
|
|