@kudusov.takhir/ba-toolkit 3.11.0 → 3.13.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 CHANGED
@@ -11,6 +11,27 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
11
11
 
12
12
  ---
13
13
 
14
+ ## [3.13.0] — 2026-04-11
15
+
16
+ ### Added
17
+
18
+ - **`[parallel]` marker in `/implement-plan` task DAG.** Tasks that share the same prerequisites and do not depend on each other are now marked `[parallel]` in the title and `✓` in a new `parallel` column in the Task DAG appendix. The "How to use this plan" section instructs AI coding agents that `[parallel]` tasks can be executed concurrently. Inspired by Spec Kit's parallel execution markers.
19
+ - **`/analyze` recommended as quality gate in closing messages.** The "If you're stuck" block in closing messages is replaced with a "Quality check before moving on" block that recommends `/analyze` for a cross-artifact quality sweep, especially after `/srs`, `/stories`, and before `/handoff`.
20
+ - **Cascading artifact update added to ROADMAP.md.** New "Cascading artifact update" item in the Next section — a future `/cascade` utility skill (or `/revise` extension) to propagate requirement changes through downstream artifacts.
21
+
22
+ ---
23
+
24
+ ## [3.12.0] — 2026-04-11
25
+
26
+ ### Changed
27
+
28
+ - **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.
29
+ - **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.
30
+ - **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.
31
+ - **`/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.
32
+
33
+ ---
34
+
14
35
  ## [3.11.0] — 2026-04-11
15
36
 
16
37
  ### Added
@@ -818,6 +839,8 @@ CI scripts that relied on the old behaviour (`init` creates files only, `install
818
839
  ---
819
840
 
820
841
  [Unreleased]: https://github.com/TakhirKudusov/ba-toolkit/compare/v3.10.1...HEAD
842
+ [3.13.0]: https://github.com/TakhirKudusov/ba-toolkit/compare/v3.12.0...v3.13.0
843
+ [3.12.0]: https://github.com/TakhirKudusov/ba-toolkit/compare/v3.11.0...v3.12.0
821
844
  [3.11.0]: https://github.com/TakhirKudusov/ba-toolkit/compare/v3.10.6...v3.11.0
822
845
  [3.10.6]: https://github.com/TakhirKudusov/ba-toolkit/compare/v3.10.5...v3.10.6
823
846
  [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.11.0",
3
+ "version": "3.13.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",
@@ -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 **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.
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
 
@@ -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 **Recommended**, render variants in the user's language (rule 11), and wait for an answer.
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 **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.
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
 
@@ -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 **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.
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
  >
@@ -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 as a structured table the user can answer in-place rather than as a numbered list of free-text questions. Each row references the exact location (section + element ID), the category, the question, and an empty answer cell:
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
- Ambiguities found in {artifact_file} ({N} questions):
79
-
80
- | # | Location | Category | Question | Answer |
81
- |---|----------|----------|----------|--------|
82
- | 1 | FR-003 | A — Metrics-free | "The system must respond quickly" — what is the acceptable response time in ms under normal load? | _(awaiting answer)_ |
83
- | 2 | US-007 | B — Undefined term | Role "Manager" used here but not defined in `02_srs_*.md` Roles. Equivalent to "Admin"? Separate role? | _(awaiting answer)_ |
84
- | 3 | FR-015 vs NFR-002 | C — Conflicting | NFR-002 requires TLS 1.3 only; FR-015 mentions "standard encryption". Reference NFR-002 explicitly? | _(awaiting answer)_ |
85
- | 4 | AC-005-02 | A Metrics-free | "Then" clause says "system handles the error correctly" — specific expected behaviour? | _(awaiting answer)_ |
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 | Othertype your own answer |
87
99
  ```
88
100
 
89
- The table format lets the user fill in answers in the rightmost column and copy-paste the table back. It also lets the user defer specific questions explicitly by writing `(deferred)` instead of an answer.
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 presenting the table, wait for the user to answer. Accept answers inline (the user can reply with the table filled in, or answer free-form by row number). After all answers are received:
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.
@@ -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 **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.
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 **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.
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 **Recommended** based on the problem/audience answers so far.
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).
@@ -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 **Recommended**, render variants in the user's language (rule 11), and wait for an answer.
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
 
@@ -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 **Recommended**, render variants in the user's language (rule 11), and wait for an answer.
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 **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.
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
 
@@ -106,6 +106,7 @@ Each task is one atomic, AI-actionable unit of work. Rules:
106
106
  - **id:** `T-<phase>-<seq>`, e.g. `T-04-007`. Phase number → first segment; sequence → second segment, zero-padded to 3 digits.
107
107
  - **title:** imperative, ≤ 10 words ("Create `users` table with email-unique constraint", "Implement `POST /auth/login` handler").
108
108
  - **dependsOn:** list of task ids that must complete first. Defaults to the previous task in the same phase, plus any explicit cross-phase prerequisites. Empty for the first task in Phase 1.
109
+ - **parallel:** if this task has the same `dependsOn` as one or more sibling tasks (i.e., they share the same prerequisites and do not depend on each other), mark all of them with `**[parallel]**` next to the title. An AI coding agent can execute `[parallel]` tasks concurrently. Only mark tasks parallel when they are genuinely independent — touching different files, different entities, or different API endpoints with no shared state.
109
110
  - **references:** list of `FR-NNN`, `US-NNN`, `UC-NNN`, `AC-NNN-NN`, `NFR-NNN`, `Entity:Name`, `Endpoint: METHOD /path`, `WF-NNN`, `SC-NNN` ids that this task implements. **Always at least one.** Phase 1 tasks (Foundation) are the only exception and may reference `01_brief` or `00_principles` as their source.
110
111
  - **files:** list of file paths the AI agent should create or modify (best-effort; framework-dependent). Optional. Examples: `src/db/schema.sql`, `apps/api/src/auth/login.controller.ts`. **If unknown, omit rather than guess.**
111
112
  - **definitionOfDone:** bullet list of acceptance hooks. Pull from the linked AC where possible ("AC-001-03 passes", "endpoint returns 401 on invalid credentials"). Always include a type-check / lint hook on backend tasks and a render-state hook on UI tasks.
@@ -146,6 +147,7 @@ Within a phase, order tasks so each task's `dependsOn` list points only at tasks
146
147
 
147
148
  - Phases are ordered. Do not start phase N+1 until every task in phases 1..N is complete (or explicitly waived in writing).
148
149
  - Within a phase, follow task ids in ascending order unless `dependsOn` says otherwise.
150
+ - Tasks marked **[parallel]** share the same prerequisites and do not depend on each other — they can be executed concurrently.
149
151
  - Every task has a `references` list — read those BA artifact sections before writing code.
150
152
  - Every task has a `definitionOfDone` — do not mark a task complete until every box is checked.
151
153
  - The Task DAG appendix is the machine-readable source of truth for dependencies.
@@ -233,12 +235,13 @@ Items the plan could not resolve from existing artifacts. The AI coding agent mu
233
235
 
234
236
  Machine-readable dependency graph. A topological sort of this table yields a valid execution order.
235
237
 
236
- | id | phase | title | dependsOn | references |
237
- |----|-------|-------|-----------|------------|
238
- | T-01-001 | 1 | {title} | — | {ids} |
239
- | T-01-002 | 1 | {title} | T-01-001 | {ids} |
240
- | T-02-001 | 2 | {title} | T-01-003 | Entity:User, FR-001 |
241
- | | | | | |
238
+ | id | phase | title | dependsOn | parallel | references |
239
+ |----|-------|-------|-----------|----------|------------|
240
+ | T-01-001 | 1 | {title} | — | — | {ids} |
241
+ | T-01-002 | 1 | {title} | T-01-001 | ✓ | {ids} |
242
+ | T-01-003 | 1 | {title} | T-01-001 | | {ids} |
243
+ | T-02-001 | 2 | {title} | T-01-002, T-01-003 | | Entity:User, FR-001 |
244
+ | … | … | … | … | … | … |
242
245
  ```
243
246
 
244
247
  ### 8. AGENTS.md update
@@ -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 **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.
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 **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.
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. Artifact languagewhich language should all artifacts be generated in? (default: the language of the user's first message)
40
- 2. Traceability strictnessshould every Must-priority US require a Use Case, or only US with complex flows? (default: only complex flows)
41
- 3. NFR baselinewhich **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).
42
- 4. 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).
43
- 5. Quality gateat what severity level should `/analyze` findings block `/done`? (default: CRITICAL only)
44
- 6. 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)
45
- 7. **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.)*
46
- 8. **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.
47
- 9. **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.
39
+ 1. Traceability strictnessshould every Must-priority US require a Use Case, or only US with complex flows? (default: only complex flows)
40
+ 2. NFR baselinewhich **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 gateat 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
 
@@ -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 **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
+ > **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 **Recommended** |
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 |
@@ -31,8 +31,9 @@ Next step: /{next_command}
31
31
  → Time estimate: {min}–{max} minutes
32
32
  → After that: /{step_after_next} ({one-line of what it does})
33
33
 
34
- If you're stuck on the next step:
35
- - Run `/clarify` here first to surface ambiguities while context is fresh.
34
+ Quality check before moving on:
35
+ - Run `/analyze` for a cross-artifact quality sweep catches duplicates, coverage gaps, and terminology drift across all existing artifacts. Especially recommended after `/srs`, `/stories`, and before `/handoff`.
36
+ - Run `/clarify` to surface ambiguities while context is fresh.
36
37
  - Run `/validate` to confirm this artifact is internally consistent.
37
38
  - The next skill reads this artifact automatically, so you don't need to paste anything.
38
39
  ```
@@ -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 Recommended.** In every options table, append `**Recommended**` to the end of the `Variant` cell of the single row that best fits the project context. 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. Translate the marker together with the variant text per rule 11 (e.g. `**Рекомендуется**`, `**Recomendado**`).
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 and the letter IDs (`a`, `b`, …) stay ASCII, unchanged. The `**Recommended**` marker is also translated. 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.
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 Recommended):
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) **Recommended** |
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 `**Recommended**` marker on row `a` reflects the loaded SaaS domain reference + the inline context the user gave with `/brief`.*
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. Who is the primary user?
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 **Recommended** |
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 Recommended, never the "Other" row.*
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 / `Recommended` marker — `ID` column and letter IDs stay ASCII:
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 / платформа для разработчиков |
@@ -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 **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.
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
 
@@ -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 **Recommended**, render variants in the user's language (rule 11), and wait for an answer.
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 **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.
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
 
@@ -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 **Recommended**, render variants in the user's language (rule 11), and wait for an answer.
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
 
@@ -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 **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.
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
 
@@ -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 **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.
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
 
@@ -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 **Recommended**, render variants in the user's language (rule 11), and wait for an answer.
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
 
@@ -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 **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.
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 **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.
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