@execuro-sw-ecosystem/sw-ecosystem-agentic-harness 0.1.10 → 0.1.12
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 +32 -0
- package/agents/sw-product-manager.md +9 -3
- package/agents/sw-shopware-architect.md +5 -1
- package/agents/sw-tender-editor.md +34 -19
- package/codex/agents/sw-product-manager.toml +9 -3
- package/codex/agents/sw-shopware-architect.toml +6 -2
- package/codex/agents/sw-tender-editor.toml +34 -19
- package/content/AGENTS.md +3 -3
- package/copilot/agents/sw-product-manager.agent.md +9 -3
- package/copilot/agents/sw-shopware-architect.agent.md +6 -2
- package/copilot/agents/sw-tender-editor.agent.md +35 -20
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/skills/sw-design-requirements/SKILL.md +6 -4
- package/skills/sw-design-requirements/reference/clarification-loop.md +2 -2
- package/skills/sw-design-requirements/reference/consistency-probes.md +15 -1
- package/skills/sw-design-requirements/reference/editor-mode.md +4 -2
- package/skills/sw-design-solution/SKILL.md +3 -3
- package/skills/sw-design-solution/reference/clarification-loop.md +2 -0
- package/skills/sw-design-solution/reference/editor-mode.md +7 -5
- package/skills/sw-design-solution/reference/pre-check-and-target.md +25 -12
- package/skills/sw-design-solution/reference/research-and-evidence.md +1 -1
- package/skills/sw-design-solution/reference/tech-spec-template.md +2 -2
- package/skills/sw-discover-tender/SKILL.md +39 -43
- package/skills/sw-discover-tender/reference/agent-briefs.md +65 -110
- package/skills/sw-discover-tender/reference/analysis-template.md +41 -208
- package/skills/sw-discover-tender/reference/assumption-catalogue.md +69 -104
- package/skills/sw-discover-tender/reference/client-question-rules.md +16 -35
- package/skills/sw-discover-tender/reference/context-parameters.md +14 -107
- package/skills/sw-discover-tender/reference/coverage-mapping.md +33 -56
- package/skills/sw-discover-tender/reference/editor-session.md +32 -73
- package/skills/sw-discover-tender/reference/estimation-model.md +43 -79
- package/skills/sw-discover-tender/reference/procedure.md +36 -72
- package/skills/sw-discover-tender/reference/project-information.md +31 -0
- package/skills/sw-discover-tender/reference/response-rules.md +11 -10
- package/skills/sw-implement-feature/SKILL.md +11 -2
- package/skills/sw-setup/SKILL.md +10 -5
- package/skills/sw-discover-tender/reference/confidence-rubric.md +0 -80
- package/skills/sw-discover-tender/reference/editor-mode.md +0 -11
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Export rules
|
|
2
2
|
|
|
3
|
-
The
|
|
3
|
+
The runtime's `export` command applies these; this file is the reference an agent or the operator checks a result against. No agent writes an export file — export is a runtime command / API call, and there is no per-cluster CSV of any kind.
|
|
4
4
|
|
|
5
|
-
- **
|
|
6
|
-
- **
|
|
7
|
-
- **
|
|
8
|
-
- **
|
|
9
|
-
- **
|
|
10
|
-
- **
|
|
11
|
-
- **
|
|
5
|
+
- **X-1** Available anytime. Unconfirmed scope items export with empty answer cells.
|
|
6
|
+
- **X-2** XLSX input: `<source basename>-response-v<n>.xlsx` (X-9), a copy of the client's own workbook. The original is never modified. `export` refuses while any exported table lacks its coverage-to-client-token map, listing the tables (by their `<sheet> r<headerRow>` key) — map them first (`coverage-mapping.md`, `procedure.md` step 7).
|
|
7
|
+
- **X-3** Fit-back by item pointer: export resolves each item via the committed fit-back map (`import-map.json`, `<srcdir>/<base>/import-map.json`) — `items[id].table` names the table, `items[id].row` the row — and writes the mapped compliance token, the Client Response and the effort into the client's own columns at that row. An item with no pointer is reported as `not written: <id> (no source row)`, never silently dropped. The coverage-to-client-token map is decided agentically at export, not at intake (`coverage-mapping.md`), and stored per table key for later exports of the same document. Accepted assumptions go into the mapped assumptions column when a table named one; otherwise they follow the Client Response as bullets in the same cell. No column is added.
|
|
8
|
+
- **X-4** Surgical write: only the written cells change; every other part of the workbook is copied byte-for-byte; Excel recalculates on open. No library that re-serialises the workbook.
|
|
9
|
+
- **X-5** CSV or PDF input: no fit-back map — `<source basename>-response-v<n>.xlsx` (X-9) built as the tool's own workbook mirroring the working sheet's own tabs in page order: `Overview` (regime, totals by priority and by tab, readiness counts), `Project information` (`Parameter · Value · Source`), `Functional`/`Non-functional`/`Project & services` (always present, columns `ID · Topic · Requirement · Requirement Coverage (the six values as-is) · Estimation · Client Response · Assumptions`, answer cells filled for confirmed items only), `Integrations`, `Glossary`; `Log` and References are never exported.
|
|
10
|
+
- **X-6** The page shows each scope item's exact exported text before it is confirmed, for every item, confirmed or not.
|
|
11
|
+
- **X-7** The tool writes no cost, price, rate, licence fee or budget of its own — see `estimation-model.md`'s money rule for the exact word list, the `cost:` exemption and scope. Project information keeps the client's or the operator's own figure verbatim; a `cost:` reference is never exported.
|
|
12
|
+
- **X-9** Numbered exports: every export writes `<base>-response-v<n>.xlsx`, `n` the next free number — an existing file, and an explicit `--out` that already exists, are never overwritten. Each export appends a section 8 Log line: `- <date> · export v<n> · <file> · confirmed <c>/<n> · changed since v<n-1>: <k>`. "Changed since last export" is the set of confirmed items whose exported text differs from the last export's snapshot, or that are newly confirmed since then; it is shown in the CLI export output, in the section 8 line, and as a page filter.
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
Unproven in the XLSX writer, per the task 3 POC: conditional formatting, print area, over-wide or x14 validation, tables, pre-filled answer cells, desktop Excel, Google Sheets.
|
|
@@ -22,9 +22,18 @@ Implement one feature from its technical spec, under TDD, then hand off to full
|
|
|
22
22
|
|
|
23
23
|
### 0. Pre-check
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
**Probe what this run is about to use, never the whole environment.** Check only what the ACs in this run actually need, as file existence — never invoke `sw-setup`, which surveys twelve rows behind an `npx` registry call to answer two or three of them:
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
| This run has… | Probe |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| any AC | `vendor/shopware/core`, plus `vendor/bin/phpunit` for a PHPUnit AC |
|
|
30
|
+
| an e2e AC | `tests/acceptance/package.json`, `tests/acceptance/playwright.config.ts`, and `tests/acceptance/.env` defining `APP_URL`, `SHOPWARE_ADMIN_USERNAME`, `SHOPWARE_ADMIN_PASSWORD` |
|
|
31
|
+
| an e2e AC | Playwright browsers — the cache directory (`~/.cache/ms-playwright`, or the project-local browsers path). Never `npx playwright install --dry-run`: it reaches the network |
|
|
32
|
+
| a PHPUnit or Jest AC | in the target plugin: `phpunit.xml.dist`, `tests/TestBootstrap.php`, and `jest.admin.config.js` / `jest.storefront.config.js` only for the surface that AC touches |
|
|
33
|
+
|
|
34
|
+
An API-only feature never probes Playwright. Anything missing → stop, tell the user to run `/sw-setup` — it is the one place the environment is fixed, and this skill neither invokes nor repairs it. Never mark an AC `partly` for a missing environment.
|
|
35
|
+
|
|
36
|
+
**Shopware version — detect once, before spawning anything, never assume** (the first path is also the vendor/ probe above, so read it once): `vendor/shopware/core/composer.json` `version` → `composer.lock` → `composer.json` constraint ("unconfirmed"); PHP from the project runtime (`compose.yaml`, `.ddev/config.yaml`, `Dockerfile`), not the host. State it with evidence in every Agent-tool brief below — implementer spawns, architect escalation, QA e2e runs — so no sub-agent has to re-derive it; a version with no evidence must still be passed on as unconfirmed (e.g. constraint-only), never treated as certain. Unknown → ask the user.
|
|
28
37
|
|
|
29
38
|
|
|
30
39
|
Then work through the three reference files in this skill's directory, in order:
|
package/skills/sw-setup/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sw-setup
|
|
3
|
-
description: Print one environment-readiness table for the project's development/test setup — vendor/, Node, the editor CLIs, shopware-cli, the KB MCP, the acceptance-test project, Playwright browsers, its .env, per-plugin test scaffolding, the project wiki, `.gitignore` and whether the SW AH npm packages are current, plus the installer CLI's own configuration/drift status. Stops when every row is ticked. When rows are missing, asks one yes/no question and delegates the fix to the installer CLI. Use when asked to set up the project, check if the environment is ready, or bootstrap the tests. Never designs, implements or verifies a feature itself — that's sw-design-solution, sw-implement-feature and sw-verify-feature
|
|
3
|
+
description: Print one environment-readiness table for the project's development/test setup — vendor/, Node, the editor CLIs, shopware-cli, the KB MCP, the acceptance-test project, Playwright browsers, its .env, per-plugin test scaffolding, the project wiki, `.gitignore` and whether the SW AH npm packages are current, plus the installer CLI's own configuration/drift status. Stops when every row is ticked. When rows are missing, asks one yes/no question and delegates the fix to the installer CLI. Use when asked to set up the project, check if the environment is ready, or bootstrap the tests. Never designs, implements or verifies a feature itself — that's sw-design-solution, sw-implement-feature and sw-verify-feature; run this one up front, before them. Never writes a coding agent's configuration file itself — that's the installer CLI.
|
|
4
4
|
when_to_use: Trigger phrases — "set up the project", "is the environment ready", "bootstrap the tests", "sw-setup".
|
|
5
5
|
allowed-tools: Read Glob Grep AskUserQuestion Skill Bash mcp__ShopwareDevKnowledgeBase__kb_status Bash(npx -y @execuro-sw-ecosystem/sw-ecosystem-agentic-harness@latest *) Bash(npx -y @execuro-sw-ecosystem/sw-specs-editor@latest *) Bash(npx -y @execuro-sw-ecosystem/sw-tender-discovery-tool@latest *)
|
|
6
6
|
---
|
|
@@ -28,10 +28,15 @@ question; it never restates or re-implements the install protocol.
|
|
|
28
28
|
|
|
29
29
|
## Called from other skills
|
|
30
30
|
|
|
31
|
-
`sw-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
`sw-verify-feature` invokes this skill once, before spawning, and passes the
|
|
32
|
+
table to its verifiers as `args`; one run standalone invokes it itself. A
|
|
33
|
+
caller passes no arguments and reads the printed table, never re-running it.
|
|
34
|
+
|
|
35
|
+
`sw-design-requirements`, `sw-design-solution` and `sw-implement-feature` do
|
|
36
|
+
**not** invoke it: each probes only what its own run uses and stops naming
|
|
37
|
+
`sw-setup` when one is missing. A full table is the price of surveying an
|
|
38
|
+
environment, not of one run's prerequisites — so this skill stays the one place
|
|
39
|
+
it is surveyed and fixed, run up front.
|
|
35
40
|
|
|
36
41
|
## Procedure
|
|
37
42
|
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
# Confidence rubric
|
|
2
|
-
|
|
3
|
-
Score each dimension 0–100 against its bands, multiply by weight, sum, round to a whole percent. `points = score × weight / 100`. Score the document as written; a verdict given in chat does not count.
|
|
4
|
-
|
|
5
|
-
## Coverage evidence — weight 20
|
|
6
|
-
|
|
7
|
-
| Score | Band |
|
|
8
|
-
| --- | --- |
|
|
9
|
-
| 100 | Every Must `req` line's class rests on a PM verdict or a mechanism cited to `vendor/` or a KB page; ≤5% of rows `unverified` |
|
|
10
|
-
| 70 | ≤15% `unverified`; Should/Could rows partly evidenced |
|
|
11
|
-
| 40 | The PM wave was partly not consulted, or >15% `unverified` |
|
|
12
|
-
| 0 | Classes set from memory |
|
|
13
|
-
|
|
14
|
-
## Estimate basis — weight 20
|
|
15
|
-
|
|
16
|
-
| Score | Band |
|
|
17
|
-
| --- | --- |
|
|
18
|
-
| 100 | Every estimated row has low/mid/high, a level and drivers; foundation efforts attached to named rows |
|
|
19
|
-
| 70 | ≤10% of estimated rows lack a three-point |
|
|
20
|
-
| 40 | The architect was not consulted for at least one cluster |
|
|
21
|
-
| 0 | PD figures without agent input |
|
|
22
|
-
|
|
23
|
-
## Scope lock — weight 20
|
|
24
|
-
|
|
25
|
-
Counts `accepted` lines only. `[ ]`, an unreconciled `[x]`, `rejected` and `suspect` count as nothing.
|
|
26
|
-
|
|
27
|
-
| Score | Band |
|
|
28
|
-
| --- | --- |
|
|
29
|
-
| 100 | ≥80% of Must PD sits on rows that are `detailed` or covered by an accepted line; every vague Must row has a `CQ-n` |
|
|
30
|
-
| 70 | 60–80% of Must PD locked; every vague Must row has a `CQ-n` |
|
|
31
|
-
| 40 | <60% locked, or a vague Must row without a `CQ-n` |
|
|
32
|
-
| 0 | No accepted line and no client question |
|
|
33
|
-
|
|
34
|
-
## Platform decision — weight 15
|
|
35
|
-
|
|
36
|
-
| Score | Band |
|
|
37
|
-
| --- | --- |
|
|
38
|
-
| 100 | Plan, hosting, PSP and CMP decided in §6, each with a reason naming the rows it serves and a source (profile, PM tier, architect alternative); the plan's PD delta stated |
|
|
39
|
-
| 70 | One §6 platform item `_TBD_` or open in a `Q-n` |
|
|
40
|
-
| 40 | Two or more `_TBD_` or open, or the plan undecided |
|
|
41
|
-
| 0 | Profile missing, or the §6 platform table empty |
|
|
42
|
-
|
|
43
|
-
## Integration & migration — weight 15
|
|
44
|
-
|
|
45
|
-
| Score | Band |
|
|
46
|
-
| --- | --- |
|
|
47
|
-
| 100 | Every interface and migration object the RFP names is in §6 with pattern and owner split; §8 and §1.2 are complete for every estimate-driving parameter and migration volume |
|
|
48
|
-
| 70 | Main interfaces covered; secondary ones or the owner split missing; §8/§1.2 mostly complete |
|
|
49
|
-
| 40 | Approach lines missing for named interfaces, or an estimate-driving §1.2 parameter or a §1.2 migration volume is missing without a `CQ-n` |
|
|
50
|
-
| 0 | §6 interface and migration tables `_TBD_` |
|
|
51
|
-
|
|
52
|
-
## Consistency — weight 10
|
|
53
|
-
|
|
54
|
-
| Score | Band |
|
|
55
|
-
| --- | --- |
|
|
56
|
-
| 100 | All probes run (plugins, prior analyses, PRDs, partner assets, RFP-internal); every conflict resolved or logged as `K-n` in §7 |
|
|
57
|
-
| 70 | Probes run; a `K-n` unresolved |
|
|
58
|
-
| 40 | Probes run only partially |
|
|
59
|
-
| 0 | A known conflict unrecorded |
|
|
60
|
-
|
|
61
|
-
## Status
|
|
62
|
-
|
|
63
|
-
| Confidence | Open `high` `Q-n` | Blocking `CQ-n` on a Must row | `suspect` lines | Unreconciled ticks | Status |
|
|
64
|
-
| --- | --- | --- | --- | --- | --- |
|
|
65
|
-
| > 90 | none | none | none | none | **Ready to submit** |
|
|
66
|
-
| > 90 | any of the four present | | | | **Review** |
|
|
67
|
-
| 80–90 | | | | | **Review** |
|
|
68
|
-
| < 80 | | | | | **Draft** |
|
|
69
|
-
|
|
70
|
-
The four conditions override the arithmetic. §2 *Weakest dimension* names every blocker by id.
|
|
71
|
-
|
|
72
|
-
## Honesty rules
|
|
73
|
-
|
|
74
|
-
- Do not round up to cross 80 or 90.
|
|
75
|
-
- Never raise a score because the deadline is close or the user wants the response finished.
|
|
76
|
-
- A row with an open non-blocking question (`estimated, CQ-n`) caps *Scope lock* at 70 for the share of Must PD it carries, unless the assumption its estimate rests on is `accepted`.
|
|
77
|
-
- `_TBD_` anywhere in §6 caps that dimension at 40.
|
|
78
|
-
- `_TBD_` overhead or buffer in the profile caps *Estimate basis* at 70; §2 states that PD is given before both.
|
|
79
|
-
- `reuse: rfp-NNNN <ID>` is evidence only if the source row carried a verdict, not a guess.
|
|
80
|
-
- If the total moved down since the last run, the report says so and names the cause.
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# Pending harness edits for the tender skill
|
|
2
|
-
|
|
3
|
-
The "Editor mode" section and the eight SKILL.md edits this file used to carry were **applied** (SKILL.md `## Editor mode`, the `--editor` / `--editor-session` input rows, step 0, the `[x] suspect` reconcile bullet, frontmatter, reference list), with the batch kinds redefined for staged writes. What follows is the only part still outstanding.
|
|
4
|
-
|
|
5
|
-
## `extension` class (ladder OOTB → Plugin → Extension → Custom)
|
|
6
|
-
|
|
7
|
-
- `coverage-mapping.md` Internal classes: add `| extension | Development on a specific, named, existing base — a stock feature, a store plugin, a partner asset or a project plugin under custom/plugins — materially smaller than building the capability from scratch; the base is named in the row's Text |`. Token rule: `| extension | the development token; comment prefix "Extension of <base>." |`. Synonyms: `| extension | Extension of, Erweiterung von |`. Note under the table: "Not the Shopware plugin/app sense and not 'uses extension points'; test: if the base disappeared, would the estimate roughly double? yes → extension, no → custom."
|
|
8
|
-
- `analysis-template.md` kinds line: class `stock | config | plugin | extension | custom | commitment | service | not-offered | blocked`; the tool shows `stock` and `config` as OOTB.
|
|
9
|
-
- `agent-briefs.md` §ARCH: the class list gains `extension` with the definition and test above; an `assume` candidate may name `extension` as the class the row takes once accepted. §ROWS: plugin vs extension, and extension vs custom, are not conflicts (the architect decides).
|
|
10
|
-
- `estimation-model.md`: one line — an `extension` row states its base in Text; the three-point covers the delta on that base only.
|
|
11
|
-
- `response-rules.md` class note line: `extension` → "Extension of <base>."
|