@execuro-sw-ecosystem/sw-ecosystem-agentic-harness 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/.mcp.json +8 -0
  2. package/CHANGELOG.md +78 -0
  3. package/CONTRIBUTING.md +54 -0
  4. package/LICENSE +21 -0
  5. package/README.md +304 -0
  6. package/SECURITY.md +50 -0
  7. package/agents/sw-admin-frontend-developer.md +52 -0
  8. package/agents/sw-php-backend-developer.md +63 -0
  9. package/agents/sw-product-manager.md +62 -0
  10. package/agents/sw-qa-engineer.md +160 -0
  11. package/agents/sw-shopware-architect.md +79 -0
  12. package/agents/sw-storefront-developer.md +93 -0
  13. package/agents/sw-tender-editor.md +43 -0
  14. package/bin/cli.mjs +73 -0
  15. package/codex/agents/sw-admin-frontend-developer.toml +54 -0
  16. package/codex/agents/sw-php-backend-developer.toml +65 -0
  17. package/codex/agents/sw-product-manager.toml +66 -0
  18. package/codex/agents/sw-qa-engineer.toml +161 -0
  19. package/codex/agents/sw-shopware-architect.toml +81 -0
  20. package/codex/agents/sw-storefront-developer.toml +96 -0
  21. package/codex/agents/sw-tender-editor.toml +50 -0
  22. package/content/AGENTS.md +63 -0
  23. package/content/claude-settings.json +31 -0
  24. package/content/mcp-servers.json +18 -0
  25. package/copilot/agents/sw-admin-frontend-developer.agent.md +53 -0
  26. package/copilot/agents/sw-php-backend-developer.agent.md +64 -0
  27. package/copilot/agents/sw-product-manager.agent.md +65 -0
  28. package/copilot/agents/sw-qa-engineer.agent.md +160 -0
  29. package/copilot/agents/sw-shopware-architect.agent.md +80 -0
  30. package/copilot/agents/sw-storefront-developer.agent.md +94 -0
  31. package/copilot/agents/sw-tender-editor.agent.md +46 -0
  32. package/lib/actions.mjs +449 -0
  33. package/lib/commands.mjs +446 -0
  34. package/lib/companions.mjs +117 -0
  35. package/lib/content.mjs +101 -0
  36. package/lib/fsx.mjs +188 -0
  37. package/lib/guide.mjs +98 -0
  38. package/lib/hosts.mjs +283 -0
  39. package/lib/lock.mjs +158 -0
  40. package/lib/merge.mjs +338 -0
  41. package/lib/out.mjs +74 -0
  42. package/mcp.json +10 -0
  43. package/package.json +58 -0
  44. package/plugin.json +19 -0
  45. package/skills/sw-design-requirements/SKILL.md +102 -0
  46. package/skills/sw-design-requirements/reference/clarification-loop.md +20 -0
  47. package/skills/sw-design-requirements/reference/confidence-rubric.md +82 -0
  48. package/skills/sw-design-requirements/reference/consistency-probes.md +65 -0
  49. package/skills/sw-design-requirements/reference/editor-gate.md +15 -0
  50. package/skills/sw-design-requirements/reference/editor-mode.md +15 -0
  51. package/skills/sw-design-requirements/reference/prd-confidence-checklist.md +95 -0
  52. package/skills/sw-design-requirements/reference/prd-template.md +153 -0
  53. package/skills/sw-design-requirements/reference/readiness-and-report.md +21 -0
  54. package/skills/sw-design-requirements/reference/splitting-guidelines.md +69 -0
  55. package/skills/sw-design-solution/SKILL.md +48 -0
  56. package/skills/sw-design-solution/reference/adr-flow.md +13 -0
  57. package/skills/sw-design-solution/reference/adr-template.md +40 -0
  58. package/skills/sw-design-solution/reference/clarification-loop.md +13 -0
  59. package/skills/sw-design-solution/reference/draft-and-spawn.md +21 -0
  60. package/skills/sw-design-solution/reference/editor-mode.md +16 -0
  61. package/skills/sw-design-solution/reference/pre-check-and-target.md +19 -0
  62. package/skills/sw-design-solution/reference/readiness-and-report.md +15 -0
  63. package/skills/sw-design-solution/reference/research-and-evidence.md +25 -0
  64. package/skills/sw-design-solution/reference/tech-spec-template.md +112 -0
  65. package/skills/sw-design-solution/reference/toolchain-conformance.md +9 -0
  66. package/skills/sw-discover-tender/SKILL.md +68 -0
  67. package/skills/sw-discover-tender/reference/agent-briefs.md +135 -0
  68. package/skills/sw-discover-tender/reference/analysis-template.md +224 -0
  69. package/skills/sw-discover-tender/reference/assumption-catalogue.md +104 -0
  70. package/skills/sw-discover-tender/reference/client-question-rules.md +47 -0
  71. package/skills/sw-discover-tender/reference/confidence-rubric.md +80 -0
  72. package/skills/sw-discover-tender/reference/context-parameters.md +116 -0
  73. package/skills/sw-discover-tender/reference/coverage-mapping.md +62 -0
  74. package/skills/sw-discover-tender/reference/editor-mode.md +11 -0
  75. package/skills/sw-discover-tender/reference/editor-session.md +115 -0
  76. package/skills/sw-discover-tender/reference/estimation-model.md +106 -0
  77. package/skills/sw-discover-tender/reference/procedure.md +98 -0
  78. package/skills/sw-discover-tender/reference/response-rules.md +13 -0
  79. package/skills/sw-document-feature/SKILL.md +64 -0
  80. package/skills/sw-document-feature/reference/adr-promotion.md +64 -0
  81. package/skills/sw-document-feature/reference/built-check.md +71 -0
  82. package/skills/sw-document-feature/reference/domain-guidelines.md +59 -0
  83. package/skills/sw-document-feature/reference/page-rules.md +129 -0
  84. package/skills/sw-document-feature/reference/procedure.md +58 -0
  85. package/skills/sw-document-feature/reference/scaffold/README.md +78 -0
  86. package/skills/sw-document-feature/reference/scaffold/_config.yml +51 -0
  87. package/skills/sw-document-feature/reference/scaffold/adr/index.md +44 -0
  88. package/skills/sw-document-feature/reference/scaffold/baseline/glossary.md +55 -0
  89. package/skills/sw-document-feature/reference/scaffold/baseline/tech-stack.md +48 -0
  90. package/skills/sw-document-feature/reference/scaffold/domains/index.md +55 -0
  91. package/skills/sw-document-feature/reference/scaffold/domains/platform/configuration.md +54 -0
  92. package/skills/sw-document-feature/reference/scaffold/domains/platform/customization-guidelines.md +47 -0
  93. package/skills/sw-document-feature/reference/scaffold/domains/platform/debugging.md +55 -0
  94. package/skills/sw-document-feature/reference/scaffold/domains/platform/environments-and-deployment.md +49 -0
  95. package/skills/sw-document-feature/reference/scaffold/domains/platform/extensions-inventory.md +40 -0
  96. package/skills/sw-document-feature/reference/scaffold/domains/platform/index.md +39 -0
  97. package/skills/sw-document-feature/reference/scaffold/domains/platform/logging.md +46 -0
  98. package/skills/sw-document-feature/reference/scaffold/guidelines/documentation-guidelines.md +102 -0
  99. package/skills/sw-document-feature/reference/scaffold/guidelines/index.md +50 -0
  100. package/skills/sw-document-feature/reference/scaffold/index.md +68 -0
  101. package/skills/sw-document-feature/reference/scaffold/vanilla/README.md +24 -0
  102. package/skills/sw-document-feature/reference/scaffold/vanilla/adr/index.md +36 -0
  103. package/skills/sw-document-feature/reference/scaffold/vanilla/index.md +68 -0
  104. package/skills/sw-document-feature/reference/setup-wiki.md +142 -0
  105. package/skills/sw-document-feature/reference/source-mapping.md +71 -0
  106. package/skills/sw-document-feature/reference/templates/adr.md +26 -0
  107. package/skills/sw-document-feature/reference/templates/domain-index.md +36 -0
  108. package/skills/sw-document-feature/reference/templates/feature-page.md +64 -0
  109. package/skills/sw-document-feature/reference/templates/guideline.md +42 -0
  110. package/skills/sw-implement-feature/SKILL.md +52 -0
  111. package/skills/sw-implement-feature/reference/ac-loop.md +24 -0
  112. package/skills/sw-implement-feature/reference/build-order.md +17 -0
  113. package/skills/sw-implement-feature/reference/delegation.md +18 -0
  114. package/skills/sw-setup/SKILL.md +144 -0
  115. package/skills/sw-setup/reference/rows.md +223 -0
  116. package/skills/sw-verify-feature/SKILL.md +64 -0
  117. package/skills/sw-verify-feature/reference/reconcile-and-report.md +42 -0
  118. package/skills/sw-verify-feature/reference/verification-report-template.md +57 -0
  119. package/skills/sw-verify-feature-ac-tests/SKILL.md +76 -0
  120. package/skills/sw-verify-feature-ac-tests/reference/audit-execute-score.md +40 -0
  121. package/skills/sw-verify-feature-architecture/SKILL.md +66 -0
  122. package/skills/sw-verify-feature-architecture/reference/guidelines-and-twig.md +27 -0
  123. package/skills/sw-verify-feature-code-quality/SKILL.md +73 -0
  124. package/skills/sw-verify-feature-code-quality/reference/gates.md +22 -0
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: sw-design-requirements
3
+ description: Turn a briefing — chat text or a file, covering one or more features — into a lean, business-only PRD stored as specs/NNNN-slug.md. Runs an interactive clarification loop for the requirement gaps and inconsistencies that actually change the requirements, then scores a weighted confidence %. Use when asked to write, draft, refine, continue, or score a PRD / requirements doc / feature brief for this Shopware project. Never writes a tech spec or answers architecture questions — that's sw-design-solution.
4
+ when_to_use: Trigger phrases — "write a PRD", "draft requirements", "turn this brief into a PRD", "continue PRD 0003", "is this PRD ready for specification", "raise the confidence on this PRD", "requirements for <feature>".
5
+ argument-hint: [file-path | briefing text | specs/NNNN-slug.md to continue] [--editor]
6
+ allowed-tools: Read Write Edit Glob Grep AskUserQuestion Agent Skill Bash(ls *) Bash(mkdir -p specs) Bash(npx -y @execuro-sw-ecosystem/sw-specs-editor@0.1.0 *) mcp__ShopwareDevKnowledgeBase__list_docs mcp__ShopwareDevKnowledgeBase__grep_docs mcp__ShopwareDevKnowledgeBase__read_doc mcp__ShopwareDevKnowledgeBase__kb_status
7
+
8
+ ---
9
+
10
+ # sw-design-requirements
11
+
12
+ Produce or advance one PRD, business requirements only. Sole delegate for `specs/*.md`; `sw-product-manager` only researches, never writes one. A feasibility chat is not by itself a PRD request — ask before writing one if unclear.
13
+
14
+ ## Hard boundary
15
+
16
+ Answers **what** and **why**, never **how**: no architecture, DAL entities, schema, plugin structure, class/service names, APIs, events, subscribers, Symfony/Vue/Twig, performance strategy, or effort estimates.
17
+
18
+ A user-asserted tech decision or platform limitation: don't discuss, expand, validate, or challenge it — record it as one bullet in **§10 Early Tech Decisions / Limitations**, tagged `[decision]` or `[constraint]`, with who set it. Never raises confidence or feeds FRs. A mid-run technical question: one line it belongs in the tech spec, log in §10 if a decision, return to requirements.
19
+
20
+ ## Architect advisor (exception, not default)
21
+
22
+ Tech decisions belong to `sw-design-solution`. Consult `sw-shopware-architect` (delegate to it as a sub-agent if your host supports sub-agents; otherwise read that agent's definition and do the work yourself) only when a high-impact §10 decision (data model, checkout/cart, plugin vs app) needs a viability check or conflicts with stock/a plugin, a requirement can't be stated without knowing if Shopware can do it at all, or a §11 `(recommended)` mark needs a feasibility verdict (*Recommended options must be advised*). Check merchant docs first (step 2); spawn only when insufficient. Brief: PRD path, §10 bullet or FR, the question, detected version if known — verdict not design, max 3 lines, anchored as one §10 bullet tagged `[architect]`. Never adds FRs or confidence, never a wording or loop-settleable decision.
23
+
24
+ ## Inputs
25
+
26
+ | Argument | Behaviour |
27
+ | --- | --- |
28
+ | Path to `specs/NNNN-*.md` | **Continue mode** — load, keep its number, advance |
29
+ | Any other file path, or free text | **New PRD** — used as source brief |
30
+ | Nothing | Ask for the feature in one sentence, then proceed |
31
+ | `<path> --editor` | **Editor hand-off** — step 0 checks the optional `sw-specs-editor` skill is installed, then invokes it on `<path>` and stops. Nothing else runs. |
32
+ | `<path> --editor-session <url> --batch <file>` | **Editor mode** — continue mode driven by one note batch; see `reference/editor-mode.md` in this skill's directory. |
33
+
34
+ Images, notes, tickets, transcripts count as sources; extract requirements, discard narrative.
35
+
36
+ ## Procedure
37
+
38
+ ### 0. Editor flags
39
+
40
+ `--editor` → run the gate in `reference/editor-gate.md` in this skill's directory first; the Specs Editor is optional and may not be installed, in which case stop there. Available → call Skill `sw-specs-editor` with the document path, stop; nothing else runs. `--editor-session` → continue mode under `reference/editor-mode.md` in this skill's directory.
41
+
42
+ ### 1. Establish the target file
43
+
44
+ New PRD:
45
+ ```
46
+ mkdir -p specs
47
+ ls specs
48
+ ```
49
+ Take the highest `NNNN`, add 1, zero-pad to 4; slug = kebab-case, 2–5 words. Target: `specs/NNNN-slug.md`.
50
+
51
+ Continue mode: keep the existing path, number and slug. Never renumber or create a second file for the same feature.
52
+
53
+ ### 2. Targeted consistency lookup
54
+
55
+ Always read first: `specs/*.md` (overlap, contradiction, supersession), `custom/plugins/*` and `custom/static-plugins/*` (what's already built), `CLAUDE.md` if present.
56
+
57
+ For every distinct Shopware concept named, delegate to the `sw-product-manager` sub-agent if your host supports sub-agents (otherwise read its definition and do the work yourself) against stock Shopware, version-matched, cross-checked with `vendor/`. Never reason from memory or grep `vendor/` yourself — sw-product-manager's job. `shopware_version: unknown` or `unverified` → note it in §10.
58
+
59
+ Fill **§9 OOTB / Extend / Custom** from that verdict plus the plugin scan: `confirmed-stock` → `OOTB`; an existing plugin → `Extend`; neither → `Custom`; no evidence → `_TBD_`. Word "Why" in what's missing/different from stock, never how it'd be built.
60
+
61
+ Work through `reference/consistency-probes.md` in this skill's directory for the rest (prior answers, other PRDs, plugins, the stock-Shopware KB lookup, internal coherence) — skill-local, no agent.
62
+
63
+ Every conflict becomes a step-4 clarification question, never a silent assumption.
64
+
65
+ ### 3. Draft
66
+
67
+ Fill `reference/prd-template.md` in this skill's directory. Unknown sections stay `_TBD_`, never invented.
68
+
69
+ Writing rules — enforce on every line:
70
+ - FRs: one testable sentence each, `FR-n`, present-tense imperative ("The storefront shows…", "A guest cannot…").
71
+ - No paragraph over 4 lines; density not length — rows never dropped to shorten.
72
+ - Business vocabulary only. Shopware domain nouns (Product, Order, Cart, Customer Group, Sales Channel, Rule Builder) count as domain, not implementation.
73
+ - No filler: drop "the system should be able to", "in order to", restated goals.
74
+ - Never invent numbers, thresholds, SLAs, metrics — absent means open question.
75
+
76
+ §9's "Why" column: business terms only, never an implementation approach (see step 2).
77
+
78
+ Check `reference/splitting-guidelines.md` in this skill's directory; two loosely coupled features → raise it in step 6, never split unasked or on size alone.
79
+
80
+ ### 4. Clarification loop
81
+
82
+ Work through `reference/clarification-loop.md` in this skill's directory: when to skip, the ask/don't-ask test, the question loop, the recommended-option rules, and how to anchor answers into the PRD.
83
+
84
+ Use `reference/prd-confidence-checklist.md` in this skill's directory for gap probes; merge with sw-product-manager's `draft_questions` into one queue.
85
+
86
+ ### 5. Score, write, report
87
+
88
+ Work through `reference/readiness-and-report.md` in this skill's directory: apply the confidence rubric, fill the meta table and §13, write the file, and build the closing report.
89
+
90
+ ## Reference files
91
+
92
+ All under `reference/` in this skill's directory:
93
+
94
+ - `reference/consistency-probes.md` — step 2: what counts as a conflict, where to look, the KB stock-behaviour lookup
95
+ - `reference/prd-template.md` — step 3: section structure to fill
96
+ - `reference/splitting-guidelines.md` — steps 3 and 6: when one PRD should have been two
97
+ - `reference/clarification-loop.md` — step 4: the question loop, recommended-option rules, anchoring answers
98
+ - `reference/prd-confidence-checklist.md` — step 4: gap probes and the ask/don't-ask test
99
+ - `reference/confidence-rubric.md` — step 5: scoring bands, status rule
100
+ - `reference/readiness-and-report.md` — step 5: scoring, writing the file, and the closing report
101
+ - `reference/editor-mode.md` — `--editor-session` runs: scoped procedure, diagrams, progress events
102
+ - `reference/editor-gate.md` — step 0: the optional-add-on check before the `--editor` hand-off
@@ -0,0 +1,20 @@
1
+ # Clarification loop
2
+
3
+ Interactive by default; skip if unattended or the user asked for no questions — write every gap to §11, stop after step 5.
4
+
5
+ **One class of question.** Ask only if the answer changes domain modelling, functional behaviour, or acceptance criteria — test: *would requirements differ either way?* No → `(assumed)` marker or leave out, no §11 block. Never ask about wording, ordering, formatting, or anything inferable/technical. **Short and concrete:** one sentence, one decision, no preamble, no "and/or" — split into two, choice not background.
6
+
7
+ Loop: ask the user with a structured question tool if you have one (Claude Code: `AskUserQuestion`; Codex: `request_user_input`, which is non-blocking outside Plan mode — so end the turn after asking), up to 4 questions/round, 2–4 options each with a short consequence, ranked by confidence unlocked. Max 3 rounds, rest → §11. Contradictions with a prior answer, PRD, plugin, or stock Shopware: explicit choice quoting both sides (stock cites sw-product-manager's evidence).
8
+
9
+ **Recommended options must be advised — mandatory.** Never mark `(recommended)` on your own judgement; an agent recommends, this skill only records.
10
+ - `sw-product-manager` always advises; `sw-shopware-architect` too when options differ in feasibility/platform depth, per *Architect advisor*.
11
+ - One batched brief per agent per run, covering every question it advises on — never one spawn per question. PRD path, questions, options verbatim, (architect only) detected version; ask for the option and one-line reason.
12
+ - Note form: `[<agent>] <stance>: <reason>`, under its option; the recommended option always has one; a note under the question only when nothing is recommended.
13
+ - Disagree → keep `sw-product-manager`'s mark, both notes. No advice → no mark, `[pm] no recommendation — business preference`.
14
+ - Interactive: identical — a "(Recommended)" option needs the same advice, stated in its consequence line.
15
+
16
+ **Anchoring answers — mandatory.** Never a quote, Q&A pair, or transcript — rewrite into the PRD's own voice, in the section it belongs:
17
+
18
+ > "yes but only with a verified email" → §5 gains `FR-7 A guest may submit after confirming email via a one-time link.`; §12 gains `C-3 | Guest access | Allowed, gated by email confirmation | 2026-08-11`
19
+
20
+ §12 holds one line per resolved decision — topic, decision, date, never the raw question or reply. An answer invalidating existing text: edit it, note the supersession.
@@ -0,0 +1,82 @@
1
+ # Confidence rubric
2
+
3
+ Score each dimension 0–100 against its bands, multiply by weight, sum, round to a whole percent.
4
+
5
+ `points = score × weight / 100`
6
+
7
+ Score the PRD **as written**, not the conversation. If a decision was made in chat but is not in the file, it does not count.
8
+
9
+ ## Scope & boundaries — weight 20
10
+
11
+ | Score | Band |
12
+ | --- | --- |
13
+ | 100 | §1 goal is unambiguous; §2 in-scope and out-of-scope both populated; sales channels and actors in §3 fixed |
14
+ | 70 | In-scope clear, out-of-scope thin or absent |
15
+ | 40 | Goal clear, boundaries mostly implied |
16
+ | 0 | Goal itself is `_TBD_` or the feature could mean two different things |
17
+
18
+ ## Domain impact — weight 15
19
+
20
+ | Score | Band |
21
+ | --- | --- |
22
+ | 100 | Every affected concept in §4 with its change; new concepts defined |
23
+ | 70 | Main concepts listed, one or two secondary effects unresolved |
24
+ | 40 | Concepts named without stating what changes |
25
+ | 0 | §4 is `_TBD_` |
26
+
27
+ ## Functional coverage — weight 25
28
+
29
+ | Score | Band |
30
+ | --- | --- |
31
+ | 100 | FRs cover the whole in-scope surface; each is a single testable sentence; nothing left as "and similar" |
32
+ | 70 | Happy path complete, secondary flows partial |
33
+ | 40 | Only the headline behaviour is specified |
34
+ | 0 | No FRs, or FRs are goals rather than behaviours |
35
+
36
+ ## Acceptance criteria — weight 20
37
+
38
+ | Score | Band |
39
+ | --- | --- |
40
+ | 100 | Every non-trivial FR has Given/When/Then, externally observable, unambiguous pass/fail |
41
+ | 70 | Majority covered; a few FRs have none |
42
+ | 40 | A handful of examples rather than criteria |
43
+ | 0 | §7 is `_TBD_` |
44
+
45
+ ## Edge cases & rules — weight 10
46
+
47
+ | Score | Band |
48
+ | --- | --- |
49
+ | 100 | §6 covers empty state, limits, failure, and the reversal/cancellation path; error behaviour is specified from the actor's view |
50
+ | 70 | Main rules stated, failure behaviour thin |
51
+ | 40 | Rules present, no edge cases |
52
+ | 0 | §6 is `_TBD_` |
53
+
54
+ ## Consistency resolved — weight 10
55
+
56
+ | Score | Band |
57
+ | --- | --- |
58
+ | 100 | All five probes in `consistency-probes.md` run; every conflict found is resolved and logged in §12 |
59
+ | 70 | Probes run; a conflict is recorded in §11 but not yet resolved |
60
+ | 40 | Probes run only partially |
61
+ | 0 | Not run, or a known conflict is left unrecorded |
62
+
63
+ ## Status
64
+
65
+ | Confidence | Open questions in §11 | Status |
66
+ | --- | --- | --- |
67
+ | ≥ 90% | none | **Ready for specification** |
68
+ | ≥ 90% | one or more | **In progress** |
69
+ | < 90% | any | **In progress** |
70
+
71
+ The open-question rule overrides the arithmetic without exception: a PRD scoring 94% with one open question stays *In progress*.
72
+
73
+ ## Honesty rules
74
+
75
+ - Do not round up to cross 90%.
76
+ - Never raise a score because the user seems satisfied, is in a hurry, or asked for the PRD to be finished.
77
+ - A `(assumed)` marker caps its dimension at 70 unless the user confirms the assumption.
78
+ - `_TBD_` anywhere in §1–§8 caps that dimension at 40.
79
+ - §10 Early Tech Decisions is never scored. Recording a technical decision cannot raise confidence.
80
+ - §9 OOTB / Extend / Custom Assessment is never scored either — it is a preliminary signal, not a decision, and carries no weight in the total.
81
+ - If the total moved down since the last run, say so plainly in the report and name the cause — that goes in the report, not in §13.
82
+ - **Weakest dimension** in §13 is one sentence, max 25 words: the dimension, the one gap, what closes it. What changed this run, which rows were answered, why scores moved — none of that goes into §13; it goes into the run report.
@@ -0,0 +1,65 @@
1
+ # Consistency probes
2
+
3
+ Run before drafting. Every conflict becomes a clarification question — never a silent assumption, never a resolution you pick yourself.
4
+
5
+ ## 1. Against earlier answers in this PRD
6
+
7
+ Continue mode: re-read §12 Clarification Log and §5 before writing. A new answer that contradicts a logged decision is a conflict, not an update.
8
+
9
+ Ask as an explicit choice, quoting both sides:
10
+ > "C-2 recorded that guests may not use this. The new brief has guests submitting the form. Which holds?"
11
+
12
+ On resolution: edit the affected FR/AC, and log the supersession in §12 (`C-7 | Guest access | Reversed C-2 — guests now allowed | 2026-08-14`).
13
+
14
+ ## 2. Against other PRDs in `specs/`
15
+
16
+ Read every `specs/*.md` header and §2 Scope. Look for:
17
+ - The same capability specified twice — the second PRD should reference or supersede the first.
18
+ - Directly contradictory rules across PRDs touching the same domain concept.
19
+ - A PRD marked `Ready for specification` whose assumptions this one breaks.
20
+
21
+ If this PRD replaces another, fill the `Supersedes` meta row and confirm with the user.
22
+
23
+ ## 3. Against this project's existing code
24
+
25
+ Read `custom/plugins/*` and `custom/static-plugins/*` — plugin names, `composer.json` descriptions, and any README. On a fresh boilerplate these are empty; then this probe is a no-op.
26
+
27
+ A conflict is: the brief asks for something an existing plugin already provides, or contradicts behaviour an existing plugin establishes.
28
+
29
+ When there is no conflict but an existing plugin covers similar ground, that is a signal for §9 OOTB / Extend / Custom Assessment — it points toward `Extend` rather than `Custom` for the FRs it's close to.
30
+
31
+ ## 4. Against stock Shopware
32
+
33
+ The most valuable probe. Shopware 6 ships a lot; briefs routinely re-specify it. This probe is delegated to the `sw-product-manager` subagent — never reasoned about from memory here, and never a static hardcoded list (Shopware's stock feature set changes across versions).
34
+
35
+ For every distinct Shopware concept the brief names, invoke `sw-product-manager`. It checks against the official docs matched to the project's actual installed Shopware version (from `composer.lock`), cross-checked with installed `vendor/` code when present, and returns a verdict + evidence (doc URL+version, or vendor path) — or `unverified` if neither source was reachable.
36
+
37
+ Frame a `confirmed-stock` finding as a scope question, not a design opinion:
38
+ > "sw-product-manager confirmed Shopware's Promotions + Rule Builder already covers 'free shipping over €50' (docs.shopware.com, v6.6). Does FR-3 need behaviour beyond that, or should it be dropped as a configuration task?"
39
+
40
+ Three valid outcomes — all fine, all the user's call:
41
+ - **Drop** the FR, note it in §2 Out of scope with the stock feature named.
42
+ - **Keep** it, and narrow the FR to the delta that stock Shopware cannot do.
43
+ - **Keep** it as-is because the user has a reason; log the reason in §12.
44
+
45
+ An `unverified` finding is not a pass — note it in §10 rather than assuming the brief is safe, and leave the corresponding §9 row `_TBD_` rather than guessing.
46
+
47
+ A `confirmed-stock` verdict, when the FR is kept, is also the signal for §9 OOTB / Extend / Custom Assessment: it points the estimate for that FR toward `OOTB`, cited to sw-product-manager's evidence.
48
+
49
+ ## 5. Internal coherence of the PRD itself
50
+
51
+ Before scoring:
52
+ - Every FR reachable by at least one actor in §3.
53
+ - Every non-trivial FR has an AC in §7.
54
+ - No FR contradicts a BR in §6.
55
+ - Nothing in §2 Out of scope is specified anyway in §5.
56
+ - Nothing in §9 has leaked into §5 as a requirement.
57
+
58
+ Internal contradictions are fixed by editing, not by asking — unless the fix changes intent, which is a question.
59
+
60
+ ## 6. Stock behaviour lookup (ShopwareDevKnowledgeBase MCP)
61
+
62
+ `platform/func` only; `platform/dev` off limits.
63
+ - Once per run: `read_doc { path: "platform/index.md" }`.
64
+ - Per feature noun: `grep_docs { pattern: "<noun>", path: "platform/func" }`, read the page; try `platform/synonyms.md` when empty.
65
+ - Use results only to name stock features and raise a conflict question quoting the doc path — never an FR, §9 line, or design hint. `platform` not `implemented`, or unavailable → say so once, use the `vendor/` grep.
@@ -0,0 +1,15 @@
1
+ # Editor install gate
2
+
3
+ Runs before the `--editor` hand-off (step 0). The Specs Editor is an **optional** add-on: it is not part of this plugin, and a host that never installed it is a supported, normal setup. `sw-setup` offers to install it.
4
+
5
+ What is checked is the **skill**, `sw-specs-editor`, because that is what `sw-setup` installs and what the hand-off calls. The skill brings the CLI with it — it invokes `npx -y @execuro-sw-ecosystem/sw-specs-editor@0.1.0`, which fetches the package on first use.
6
+
7
+ Check: is the `sw-specs-editor` skill available in this session?
8
+
9
+ **Available** → hand off to it with the document path, and stop. Nothing else runs.
10
+
11
+ **Not available** → **stop the run here**. Say, in one line:
12
+
13
+ > The Specs Editor is not installed. Run `sw-setup` to add it, or re-run without `--editor`.
14
+
15
+ Then stop. Do not fall back to the terminal flow, do not read or write the PRD, do not continue with the normal procedure. The user asked for the page; silently giving them something else is worse than telling them they did not get it.
@@ -0,0 +1,15 @@
1
+ # Editor mode
2
+
3
+ Invoked as `<path> --editor-session <url> --batch <batch.json>` — one note batch from the page. Continue mode, same procedure, boundary, anchoring/logging rules, plus:
4
+
5
+ - **Scoped to the batch.** Never a full pass on open. Step 2 only for concepts/PRDs/plugins the notes touch; edit only named blocks plus whatever answers invalidate; re-score every run; §11 blocks only where the batch exposed a gap.
6
+ - **No terminal questions.** Never invoke a structured question tool (Claude Code: `AskUserQuestion`; Codex: `request_user_input`). Every gap becomes a §11 question block (`**Q-n**`, 2–4 `- [ ]` options, one `(recommended)`), notes per *Recommended options must be advised*. Max 6/run, ranked by confidence.
7
+ - **Batch input**: read ticks first — a tick with no note is still an answer. Per note: `answer` or `[x]` tick (own answer `- [x] ✎ text`) → anchor per *Anchoring answers*, append §12, delete block. `comment`/`free` → this run's briefing (block-bound: `path`, `line`–`endLine`, verify `md`/`hash`, fall back to `quote`, honour `selection`). `diagram` → update the graph file (below). Technical note → report belongs to the spec, change nothing.
8
+ - **Full pass on request only.** A review request ("check the whole PRD", "reconcile") runs the full flow: step 2, §11 gap review, missing options/marks/notes filled. Otherwise touched questions get options.
9
+ - **Scoped agent runs.** Spawn `sw-product-manager`/`sw-shopware-architect` only when a note touches feasibility, §10, or a §11 block changes (one brief per run); else edit, anchor, log alone.
10
+ - **Preserve on every write:** status tags on item ids (`- **FR-3** [done] …`, also `AC-n`/`BR-n`), the `Diagram:` line, the §11 question blocks and ticks. Rewrite in place; never regenerate.
11
+ - **Diagrams.** Domain diagram: `specs/NNNN-slug.domain.graph.json` (business concepts only). Write/update, run `npx -y @execuro-sw-ecosystem/sw-specs-editor@0.1.0 diagram specs/NNNN-slug.domain.graph.json specs/NNNN-slug.domain.excalidraw`, ensure §4 carries `Diagram: specs/NNNN-slug.domain.excalidraw`; never write `.excalidraw` directly, first request only.
12
+ - **Progress.** Before each step, before/after each spawn: `npx -y @execuro-sw-ecosystem/sw-specs-editor@0.1.0 emit progress "<step>" --batch <id> --doc prd`.
13
+ - **Report:** changed blocks, answers (Q ids → anchor), top remaining gap or `none`, confidence %, status, `Agents: <list or none>`.
14
+
15
+ Graph shape (`bin/cli.mjs diagram` input): `{ "title", "direction": "LR", "groups": [{id,label}], "nodes": [{id,label,type: entity|actor|service|external|event|store, group?, note?}], "edges": [{from,to,label?}] }`.
@@ -0,0 +1,95 @@
1
+ # Gap checklist (Shopware 6)
2
+
3
+ Scan the drafted PRD against this list. A probe is worth asking **only** when the brief leaves it genuinely open *and* the two plausible answers produce different requirements. Most probes will not apply to most PRDs — skip them silently.
4
+
5
+ Never turn a probe into a technical question. "Which customer groups get the discount?" is a requirement. "Should this use the Rule Builder or a subscriber?" is not.
6
+
7
+ ## A. Actors & context — almost always worth checking
8
+
9
+ - Guests, logged-in customers, or both? Does it need an account?
10
+ - Which customer groups? Net or gross price display — does that change behaviour?
11
+ - B2B involved — a company/business buyer, not just an individual? If yes, see §B.
12
+ - Which sales channels — Storefront, headless via Store API, Admin only?
13
+ - Multi-language / multi-currency / multi-country in play? Does behaviour differ per country?
14
+ - Does a merchant admin configure this, or is it fixed?
15
+
16
+ ## B. B2B — only when §A flagged a business/company buyer
17
+
18
+ Shopware's B2B Components is a distinct Commercial capability set, Evolve plan or higher (never Rise or Community — see §I). A brief that says "B2B" rarely means all of it; scope which parts apply.
19
+
20
+ - Which capabilities does the brief actually need — employee roles, order approval, budgets, quotes, organisation units, catalogue restrictions per unit, negotiated pricing, quick order, shopping lists, sales agent login — or a subset?
21
+ - One employee role covers ordering, or do roles need to differ (who can order, who can approve, who manages other employees)?
22
+ - Does every order need approval, or only ones crossing a threshold (amount, weight, shipping cost, method)? What happens to an order while it's pending?
23
+ - Spending limits — company-wide, per department, or per employee? What reset cadence (weekly/monthly/quarterly/yearly) matches the client's actual procurement cycle?
24
+ - Quotes — customer-initiated only, or can the merchant send one proactively? What happens when a quote expires unanswered?
25
+ - Does the company need more than one organisational level (e.g. region > branch > team), and do units need separate addresses or payment methods?
26
+ - Does every unit see the same product catalogue, or does visibility need to differ per unit?
27
+ - Negotiated/individual pricing — per unit, per customer tag, or both? Does it override or stack with existing customer-group/tiered pricing?
28
+ - Quick order — manual number+quantity entry enough, or is bulk CSV upload required, and in what format?
29
+ - Shopping lists (reorder templates) — customer-managed only, or does the merchant's team need to build/edit them on a customer's behalf?
30
+ - Third-party sales agents placing orders on a customer's behalf — needed, or out of scope?
31
+
32
+ ## C. Catalog & pricing
33
+
34
+ - Which product kinds: standard, variants, digital/downloadable, custom-configurable, bundles, free-gift?
35
+ - Variant-level or parent-level behaviour?
36
+ - Which price wins when several could apply — list, tiered/advanced, customer-group, promotion, manual — and does it stack with existing promotions/vouchers?
37
+ - Stock relevance: reserve, block, or ignore availability? Behaviour when out of stock, on clearance, or on restock delay?
38
+ - Does the rule apply per line item, per cart, or per customer over time?
39
+
40
+ ## D. Cart, checkout & order
41
+
42
+ - Cart stage, order stage, or both? What happens to a cart already holding the old behaviour?
43
+ - Effect on totals, taxes, shipping costs, surcharges?
44
+ - Constrained to specific payment or shipping methods?
45
+ - Which order-state transitions matter — cancellation, return, refund?
46
+ - Recorded on the order for later reference — invoice, document, confirmation?
47
+
48
+ ## E. Content, storefront & communication
49
+
50
+ - New page, new URL, or change to an existing one? SEO-relevant?
51
+ - Editable via Shopping Experiences (CMS) by merchants, or hard-coded by developers?
52
+ - Which notifications fire, to whom, and on what event?
53
+ - Any new or changed content — email, page copy — the merchant must be able to edit or translate?
54
+
55
+ ## F. Admin & permissions
56
+
57
+ - Does a merchant need a new list, detail view, or setting — or is an existing module extended?
58
+ - Which roles may see and which may change it?
59
+ - Bulk actions, import/export, or CSV needed?
60
+
61
+ ## G. Data & integrations
62
+
63
+ - Who owns the data — Shopware or an external system (ERP, PIM, CRM, WMS)?
64
+ - Direction and business freshness expectation (real time, hourly, nightly)?
65
+ - What happens when the external system is unavailable — block, queue, degrade?
66
+ - Existing records: migrated, backfilled, or left as-is?
67
+ - Personal data, consent, retention, invoice or tax implications?
68
+
69
+ ## H. Acceptance & failure
70
+
71
+ - For each FR: what observable outcome makes it done?
72
+ - What does the actor see when it fails, is not permitted, or hits a limit?
73
+ - Empty state and first-run behaviour?
74
+ - Any threshold, limit, or timing the business has actually stated? (Never invent one.)
75
+
76
+ ## I. Licence tier — a business availability question, not a technical one
77
+
78
+ Several capabilities are Shopware **Commercial** (Rise / Evolve / Beyond), not open-source Community. If the brief assumes one, confirm the plan covers it or that the PRD requires building it.
79
+
80
+ Commercial-only: B2B Components — Evolve or higher, never Rise or Community (see §B) — Subscriptions (Beyond only), Multi-Inventory (Evolve/Beyond), Advanced Search, Returns Management, Content Generator, Text/Image AI, Spatial Commerce, Custom Products (Rise, and a separate feature from B2B Components despite the naming similarity).
81
+
82
+ Individual/negotiated pricing within B2B Components has conflicting tier documentation (Evolve vs. Beyond) — confirm directly against the client's Commercial contract before writing acceptance criteria that assume it.
83
+
84
+ Ask as: *"This relies on Shopware's B2B order-approval feature, which needs the Evolve plan or higher. Does the project have that plan, or must this be built from scratch?"* — the answer changes scope and requirements, so it is high-impact.
85
+
86
+ ## Ask or don't
87
+
88
+ There is no impact grading. A gap is either worth a question or it is not:
89
+
90
+ | | Handling |
91
+ | --- | --- |
92
+ | Changes domain modelling, functional behaviour, or acceptance criteria — answering it moves confidence toward 90% | Ask it, or write it as a §11 row. It blocks *Ready for specification* while open. |
93
+ | Everything else — wording, ordering, cosmetics, inferable defaults, details the requirements do not turn on | Never ask, never write a row. Assume and mark `(assumed)`, or leave it out. |
94
+
95
+ Test before writing any question: *if answered both ways, would the PRD's requirements differ?* No → it is not a question.
@@ -0,0 +1,153 @@
1
+ # PRD template
2
+
3
+ Copy verbatim, fill, delete every `<!-- -->` hint. Keep section numbers and titles unchanged — later tooling and the rubric key off them.
4
+
5
+ Unknown content stays `_TBD_`. Never delete an empty section; an empty section is a signal, an invented one is a defect.
6
+
7
+ ---
8
+
9
+ ```markdown
10
+ # PRD-NNNN — <Feature name>
11
+
12
+ | | |
13
+ | --- | --- |
14
+ | **Status** | In progress |
15
+ | **Confidence** | 0% |
16
+ | **Created** | YYYY-MM-DD |
17
+ | **Updated** | YYYY-MM-DD |
18
+ | **Source** | chat \| path/to/brief.md |
19
+ | **Supersedes** | — |
20
+
21
+ ## 1. Problem & Goal
22
+
23
+ <!-- 2–4 sentences. Who is blocked or losing value today, and what changes for them. No solution. -->
24
+
25
+ **Success looks like:** <!-- one sentence, observable from the outside -->
26
+
27
+ ## 2. Scope
28
+
29
+ **In scope**
30
+ - <!-- bullet per capability -->
31
+
32
+ **Out of scope**
33
+ - <!-- bullet per explicitly excluded thing, with a 3–6 word reason -->
34
+
35
+ ## 3. Actors & Sales-Channel Scope
36
+
37
+ | Actor | Where | Notes |
38
+ | --- | --- | --- |
39
+ | <!-- Guest / Registered customer / B2B buyer / Merchant admin / External system --> | <!-- Storefront / Store API / Admin / Background --> | <!-- customer group, role, country restriction --> |
40
+
41
+ **Sales channels:** <!-- which, or "all" -->
42
+ **Languages / currencies / countries:** <!-- or "inherits project default" -->
43
+
44
+ ## 4. Domain Impact
45
+
46
+ Business-level only — what concepts change, not how they are stored.
47
+
48
+ | Concept | Change | Why |
49
+ | --- | --- | --- |
50
+ | <!-- Order --> | <!-- gains a customer-chosen delivery date --> | <!-- FR-3 --> |
51
+
52
+ **New concepts:** <!-- name + one-line definition, or "none" -->
53
+
54
+ <!-- Optional, added by the Specs Editor on first request — keep the line exactly in this shape: -->
55
+ <!-- Diagram: specs/NNNN-slug.domain.excalidraw -->
56
+
57
+ ## 5. Functional Requirements
58
+
59
+ One testable sentence each. Present tense, active voice.
60
+
61
+ <!-- Status tag convention (FR, BR, AC): an optional `[done]` / `[partly]` / `[open]` directly after the bold id, e.g. `- **FR-1** [done] …`; absent = open. Set by the user in the Specs Editor or by sw-implement-feature / sw-verify-feature. Preserve it on every rewrite. -->
62
+
63
+ - **FR-1** <!-- The storefront shows … -->
64
+ - **FR-2**
65
+
66
+ ## 6. Business Rules & Edge Cases
67
+
68
+ - **BR-1** <!-- condition → required outcome -->
69
+
70
+ **Edge cases**
71
+ - <!-- empty state, limit reached, concurrent change, cancelled/refunded, deleted reference, unsupported currency … -->
72
+
73
+ **Error behaviour visible to the actor**
74
+ - <!-- what they see when it fails -->
75
+
76
+ ## 7. Acceptance Criteria
77
+
78
+ Given/When/Then, one block per FR that needs it. Externally observable only.
79
+
80
+ - **AC-1** (FR-1)
81
+ - **Given** …
82
+ - **When** …
83
+ - **Then** …
84
+
85
+ ## 8. Data & Integrations
86
+
87
+ | Data | Source of truth | Direction | Business expectation |
88
+ | --- | --- | --- | --- |
89
+ | <!-- Stock levels --> | <!-- ERP --> | <!-- ERP → Shop --> | <!-- accurate within 15 min --> |
90
+
91
+ **Existing data:** <!-- what happens to records created before this ships, or "none" -->
92
+ **Personal data / compliance:** <!-- GDPR, invoices, legal texts, or "none" -->
93
+
94
+ ## 9. OOTB / Extend / Custom Assessment (preliminary)
95
+
96
+ _Preliminary signal, not a decision. Estimates the most likely delivery path per requirement, to surface complexity early. The binding classification is made in the tech spec (`sw-design-solution`)._
97
+
98
+ | FR | Customer ask | Estimate | Why | Source |
99
+ | --- | --- | --- | --- | --- |
100
+ | <!-- FR-3 --> | <!-- one line --> | <!-- OOTB \| Extend \| Custom --> | <!-- what is missing or differs from stock Shopware / an existing project plugin, in business terms only — never an implementation approach --> | <!-- sw-product-manager verdict (Shopware vX, doc/vendor evidence) or existing-plugin scan --> |
101
+
102
+ Leave a row `_TBD_` rather than guessing without a `sw-product-manager` verdict or a plugin-scan finding behind it.
103
+
104
+ ## 10. Early Tech Decisions / Limitations
105
+
106
+ Decisions the business or team has already fixed. Recorded, not evaluated. Not requirements. No effect on confidence.
107
+
108
+ - `[decision]` <!-- statement --> — set by <!-- who -->, <!-- date -->
109
+ - `[constraint]` <!-- statement --> — set by <!-- who -->, <!-- date -->
110
+ - `[architect]` <!-- one-line verdict, only if sw-shopware-architect was consulted --> — <!-- date -->
111
+
112
+ ## 11. Open Questions
113
+
114
+ <!-- One block per question, blank line between. Example: -->
115
+ <!--
116
+ **Q-1** One short, concrete question — no preamble, no restated context.
117
+ Blocks: FR-4, AC-2
118
+ - [ ] A: First option (recommended)
119
+ - [pm] one-line reason
120
+ - [ ] B: Second option
121
+ - [ ] C: Third option — options stay blank until an editor-mode run touching this question fills them
122
+ -->
123
+
124
+ Every question here is a gap that changes domain modelling, functional behaviour, or acceptance criteria — nothing smaller is written down. Any open question blocks *Ready for specification*.
125
+
126
+ Rules: one block per question, a `**Q-n**` line, optional `[adr]`/`[gate]` tag right after the id (decision cards in the Specs Editor), optional `Blocks:` line. Options are `- [ ] <Letter>: text`, 2–4 of them, exactly one `(recommended)`. Agent notes are indented ` - [<agent>] text` under the option they judge; a note under the question line only when no option is recommended. An answer is `[x]` on one option, or an own-answer line `- [x] ✎ text`. Older PRDs (a legacy question table) are converted to this format automatically on the first editor-mode write.
127
+
128
+ ## 12. Clarification Log
129
+
130
+ One line per resolved decision. No question text, no quotes, no transcript.
131
+
132
+ | # | Topic | Decision | Date |
133
+ | --- | --- | --- | --- |
134
+ | C-1 | <!-- --> | <!-- --> | YYYY-MM-DD |
135
+
136
+ ## 13. Confidence Breakdown
137
+
138
+ | Dimension | Weight | Score | Points |
139
+ | --- | --- | --- | --- |
140
+ | Scope & boundaries | 20 | 0 | 0.0 |
141
+ | Domain impact | 15 | 0 | 0.0 |
142
+ | Functional coverage | 25 | 0 | 0.0 |
143
+ | Acceptance criteria | 20 | 0 | 0.0 |
144
+ | Edge cases & rules | 10 | 0 | 0.0 |
145
+ | Consistency resolved | 10 | 0 | 0.0 |
146
+ | **Total** | **100** | | **0%** |
147
+
148
+ **Weakest dimension:** <!-- <dimension name> — one sentence (max 25 words): the single gap holding it down and what closes it. Never a run summary; that belongs in the report. -->
149
+ ```
150
+
151
+ ---
152
+
153
+ Leanness here means density, not size. A PRD is as long as the feature needs: fill every row the feature actually has and drop none to hit a target. See `splitting-guidelines.md` for when one PRD should have been two.
@@ -0,0 +1,21 @@
1
+ # Readiness and report
2
+
3
+ Entered at step 5, after the clarification loop settles. Decides how confidence is scored, what gets written, and what the step 6 report contains.
4
+
5
+ ### 5. Score and write
6
+
7
+ Apply `reference/confidence-rubric.md` in this skill's directory. Fill the meta table and §13 — **Weakest dimension** is one sentence, max 25 words, naming the gap and what closes it; the run narrative belongs only in the report, never §13. Status: `In progress` below 90%; `Ready for specification` at 90%+ **and** no open §11 question — absolute, every question changes requirements.
8
+
9
+ Write the file. In continue mode, update `Updated`, `Confidence`, `Status` and §13; append to §12.
10
+
11
+ ### 6. Report
12
+
13
+ Five lines, no more (six with an architect), each one line:
14
+ - path written
15
+ - confidence % and status
16
+ - what changed this run (continue mode)
17
+ - remaining gap costing most confidence, or `none`
18
+ - a split recommendation, phrased as a question, only if guidelines warrant one
19
+ - `Architect consulted: <topic> — <one-line verdict>`, only if spawned this run
20
+
21
+ Never paste the PRD body back into chat.