@execuro-sw-ecosystem/sw-ecosystem-agentic-harness 0.1.0 → 0.1.3
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 +63 -0
- package/README.md +53 -14
- package/SECURITY.md +1 -1
- package/agents/sw-php-backend-developer.md +1 -1
- package/agents/sw-storefront-developer.md +5 -5
- package/agents/sw-tender-editor.md +1 -1
- package/bin/cli.mjs +8 -3
- package/codex/agents/sw-php-backend-developer.toml +2 -2
- package/codex/agents/sw-storefront-developer.toml +6 -6
- package/codex/agents/sw-tender-editor.toml +2 -2
- package/content/AGENTS.md +2 -2
- package/copilot/agents/sw-php-backend-developer.agent.md +2 -2
- package/copilot/agents/sw-storefront-developer.agent.md +6 -6
- package/copilot/agents/sw-tender-editor.agent.md +2 -2
- package/lib/actions.mjs +11 -10
- package/lib/commands.mjs +17 -14
- package/lib/{companions.mjs → extra-components.mjs} +16 -16
- package/lib/guide.mjs +39 -18
- package/lib/hosts.mjs +10 -10
- package/lib/merge.mjs +10 -0
- package/package.json +2 -2
- package/plugin.json +1 -1
- package/skills/sw-design-requirements/SKILL.md +1 -1
- package/skills/sw-design-solution/SKILL.md +1 -1
- package/skills/sw-discover-tender/SKILL.md +1 -1
- package/skills/sw-document-feature/SKILL.md +1 -1
- package/skills/sw-document-feature/reference/setup-wiki.md +7 -2
- package/skills/sw-implement-feature/SKILL.md +1 -1
- package/skills/sw-setup/SKILL.md +15 -14
- package/skills/sw-setup/reference/rows.md +31 -34
- package/skills/sw-verify-feature/SKILL.md +1 -1
- package/skills/sw-verify-feature-ac-tests/SKILL.md +1 -1
- package/skills/sw-verify-feature-architecture/SKILL.md +1 -1
- package/skills/sw-verify-feature-code-quality/SKILL.md +1 -1
|
@@ -6,18 +6,7 @@ unticked. Host configuration files (`.mcp.json` entries, `.gitignore` lines,
|
|
|
6
6
|
permission grants) are not rows here — the installer CLI owns them and
|
|
7
7
|
reports their state in its own `status`/`plan` output; see `SKILL.md`.
|
|
8
8
|
|
|
9
|
-
## 1.
|
|
10
|
-
|
|
11
|
-
- **Check:** `docker compose ps` — service `web` (or the service named in
|
|
12
|
-
`compose.yaml`) shows `running`/`healthy`.
|
|
13
|
-
- **Ticked:** the `web` service is up.
|
|
14
|
-
- **Fix:** `docker compose up -d` (guideline §6.1). If the shop was never
|
|
15
|
-
installed: `docker compose exec web php bin/console system:install --basic-setup --force --no-interaction` (guideline §6.1).
|
|
16
|
-
- **Blocks:** every other row's fix that runs `docker compose exec web …`
|
|
17
|
-
(vendor/, plugin tests). Design/implement/verify skills that need a running
|
|
18
|
-
shop for live checks.
|
|
19
|
-
|
|
20
|
-
## 2. vendor/
|
|
9
|
+
## 1. vendor/
|
|
21
10
|
|
|
22
11
|
- **Check:** `vendor/shopware/core` exists, `composer.lock` exists,
|
|
23
12
|
`vendor/bin/phpunit` exists — file presence only, never a host
|
|
@@ -26,13 +15,20 @@ reports their state in its own `status`/`plan` output; see `SKILL.md`.
|
|
|
26
15
|
(guideline §6.2).
|
|
27
16
|
- **Ticked:** all three present; report the `shopware/core` version from
|
|
28
17
|
`composer.lock`.
|
|
18
|
+
- **Unticked:** the printed line names the specific missing path(s), not just
|
|
19
|
+
the row — e.g. a tree built `--no-dev` has `vendor/shopware/core` and
|
|
20
|
+
`composer.lock` but no `vendor/bin/phpunit`, so the line reads
|
|
21
|
+
`vendor/ — vendor/bin/phpunit missing (tree built --no-dev)`. This is the
|
|
22
|
+
same row and the same fix below, offered inside step 3's single question
|
|
23
|
+
like any other row.
|
|
29
24
|
- **Fix:** `docker compose exec web composer install --no-interaction`
|
|
30
25
|
(guideline §6.1 — "a vendor tree built with `--no-dev` has no
|
|
31
|
-
`vendor/bin/phpunit`").
|
|
26
|
+
`vendor/bin/phpunit`"). Runs inside the `web` container; if it is not
|
|
27
|
+
running, stop and report that — sw-setup never starts the stack itself.
|
|
32
28
|
- **Blocks:** `sw-design-solution`, `sw-implement-feature`,
|
|
33
29
|
`sw-verify-feature` (and its architecture/code-quality/ac-tests sub-skills).
|
|
34
30
|
|
|
35
|
-
##
|
|
31
|
+
## 2. Node
|
|
36
32
|
|
|
37
33
|
- **Check:** `node --version`; parse major and minor.
|
|
38
34
|
- **Ticked:** ≥ 20. Warn (do not fail) when < 20.15: the Tender Discovery Tool
|
|
@@ -45,37 +41,37 @@ reports their state in its own `status`/`plan` output; see `SKILL.md`.
|
|
|
45
41
|
(the knowledge-base MCP), the acceptance-test project,
|
|
46
42
|
Playwright.
|
|
47
43
|
|
|
48
|
-
##
|
|
44
|
+
## 3. Visual editors (optional)
|
|
49
45
|
|
|
50
46
|
The Specs Editor and the Tender Discovery Tool are **optional add-ons**, not
|
|
51
47
|
part of this plugin. The installer CLI installs them itself, per host — this
|
|
52
|
-
row never runs
|
|
48
|
+
row never runs an extra component's own install command.
|
|
53
49
|
|
|
54
50
|
So this row never blocks readiness. It asks.
|
|
55
51
|
|
|
56
|
-
- **Check:** read `
|
|
52
|
+
- **Check:** read `extra_components[]` from the `status` output the skill already
|
|
57
53
|
ran in step 1 — each entry's `available`, `installed_for` (the hosts it is
|
|
58
54
|
placed in), and `install` (the npm command, when missing). Never probe a
|
|
59
|
-
path and never run
|
|
60
|
-
- **Ticked:** `[x]` when
|
|
55
|
+
path and never run an extra component by hand; the CLI owns both.
|
|
56
|
+
- **Ticked:** `[x]` when an extra component's `available` is true and
|
|
61
57
|
`installed_for` includes this host; `[-]` when the user has declined it.
|
|
62
58
|
Only an unanswered offer shows `[ ]`, and even then it does not hold the
|
|
63
59
|
table open — report it as optional and move on.
|
|
64
|
-
- **Fix:** offer each missing
|
|
60
|
+
- **Fix:** offer each missing extra component inside step 3's single question,
|
|
65
61
|
naming what it buys, not how it works: "Specs Editor — review a PRD or
|
|
66
62
|
tech spec on a live page, with notes, question answers and diagrams.
|
|
67
63
|
Install?" — and "Tender Discovery Tool — read a client tender workbook,
|
|
68
64
|
confirm its column mapping and review the analysis on a live page.
|
|
69
65
|
Install?" On yes, for each accepted one: `npm i -D <package>@0.1.0` (the
|
|
70
|
-
`package` field from `
|
|
66
|
+
`package` field from `extra_components[]`), then re-run
|
|
71
67
|
|
|
72
68
|
```
|
|
73
|
-
npx -y @execuro-sw-ecosystem/sw-ecosystem-agentic-harness@
|
|
69
|
+
npx -y @execuro-sw-ecosystem/sw-ecosystem-agentic-harness@latest apply --yes
|
|
74
70
|
```
|
|
75
71
|
|
|
76
|
-
which places one `SKILL.md` per
|
|
72
|
+
which places one `SKILL.md` per extra component into each selected host's own
|
|
77
73
|
skills directory, records it, and removes it again on uninstall. **Never
|
|
78
|
-
run the
|
|
74
|
+
run the extra component's own `install-skill`** — with no `--target` it
|
|
79
75
|
defaults to Claude Code's own skills directory, wrong for a Codex, Copilot
|
|
80
76
|
or Cursor install. Needs the Node row ticked.
|
|
81
77
|
- **On no:** record the decline and do not re-ask on the next run. `apply`
|
|
@@ -87,7 +83,7 @@ So this row never blocks readiness. It asks.
|
|
|
87
83
|
Discovery Tool missing → `sw-discover-tender --editor` and its `.xlsx`
|
|
88
84
|
import, plus the `sw-tender-discovery-tool` skill.
|
|
89
85
|
|
|
90
|
-
##
|
|
86
|
+
## 4. shopware-cli
|
|
91
87
|
|
|
92
88
|
- **Check:** `command -v shopware-cli`.
|
|
93
89
|
- **Ticked:** present on `PATH`.
|
|
@@ -98,7 +94,7 @@ So this row never blocks readiness. It asks.
|
|
|
98
94
|
(static analysis, Twig linters), `sw-implement-feature` (per-AC
|
|
99
95
|
`extension fix`/`extension validate`).
|
|
100
96
|
|
|
101
|
-
##
|
|
97
|
+
## 5. KB MCP
|
|
102
98
|
|
|
103
99
|
- **Check:** `mcp__ShopwareDevKnowledgeBase__kb_status` reports the `platform`
|
|
104
100
|
layer as `implemented`. (Whether the `ShopwareDevKnowledgeBase` entry
|
|
@@ -118,7 +114,7 @@ So this row never blocks readiness. It asks.
|
|
|
118
114
|
`sw-design-solution` step 0.5/step 3 (KB grep), `sw-product-manager`,
|
|
119
115
|
`sw-shopware-architect`.
|
|
120
116
|
|
|
121
|
-
##
|
|
117
|
+
## 6. Acceptance-test project
|
|
122
118
|
|
|
123
119
|
- **Check:** `tests/acceptance/package.json` exists and lists
|
|
124
120
|
`@shopware-ag/acceptance-test-suite` as a dependency;
|
|
@@ -137,7 +133,7 @@ So this row never blocks readiness. It asks.
|
|
|
137
133
|
- **Blocks:** `sw-implement-feature` (e2e authoring by `sw-qa-engineer`),
|
|
138
134
|
`sw-verify-feature-ac-tests` (Playwright execution).
|
|
139
135
|
|
|
140
|
-
##
|
|
136
|
+
## 7. Playwright browsers
|
|
141
137
|
|
|
142
138
|
- **Check:** `npx playwright install --dry-run` output (or
|
|
143
139
|
`~/.cache/ms-playwright`/the project-local browsers path) shows Chromium
|
|
@@ -148,7 +144,7 @@ So this row never blocks readiness. It asks.
|
|
|
148
144
|
ticked (the `@playwright/test` version comes from there).
|
|
149
145
|
- **Blocks:** `sw-implement-feature` (e2e execution), `sw-verify-feature-ac-tests`.
|
|
150
146
|
|
|
151
|
-
##
|
|
147
|
+
## 8. ATS env
|
|
152
148
|
|
|
153
149
|
- **Check:** `tests/acceptance/.env` exists.
|
|
154
150
|
- **Ticked:** file exists and defines `APP_URL`, `SHOPWARE_ADMIN_USERNAME`,
|
|
@@ -163,7 +159,7 @@ So this row never blocks readiness. It asks.
|
|
|
163
159
|
entered. Needs the Acceptance-test project row ticked.
|
|
164
160
|
- **Blocks:** `sw-implement-feature` (e2e execution), `sw-verify-feature-ac-tests`.
|
|
165
161
|
|
|
166
|
-
##
|
|
162
|
+
## 9. Plugin tests, per `custom/plugins/<Name>`
|
|
167
163
|
|
|
168
164
|
- **Enumerate:** `ls custom/plugins`; one row per directory found.
|
|
169
165
|
- **Check per plugin:**
|
|
@@ -181,12 +177,13 @@ So this row never blocks readiness. It asks.
|
|
|
181
177
|
`phpunit.xml.dist` from §3.3, `tests/TestBootstrap.php` from §3.4 (fill
|
|
182
178
|
`<Name>`/`<Vendor>` from `composer.json`), Jest config(s) from §3.5 (option
|
|
183
179
|
(a), plugin-local preset), `package.json` scripts block from §3.5's closing
|
|
184
|
-
JSON snippet.
|
|
185
|
-
that
|
|
180
|
+
JSON snippet. The `npm install` steps run inside the `web` container; if it
|
|
181
|
+
is not running, stop and report that — sw-setup never starts the stack
|
|
182
|
+
itself.
|
|
186
183
|
- **Blocks:** `sw-implement-feature` (PHPUnit/Jest execution for that
|
|
187
184
|
plugin's ACs), `sw-verify-feature` (and its sub-skills, for that plugin).
|
|
188
185
|
|
|
189
|
-
##
|
|
186
|
+
## 10. Project wiki
|
|
190
187
|
|
|
191
188
|
- **Check:** `docs/project-wiki/` exists.
|
|
192
189
|
- **Ticked:** directory present.
|
|
@@ -195,7 +192,7 @@ So this row never blocks readiness. It asks.
|
|
|
195
192
|
logic here.
|
|
196
193
|
- **Blocks:** `sw-document-feature`.
|
|
197
194
|
|
|
198
|
-
##
|
|
195
|
+
## 11. `.gitignore`
|
|
199
196
|
|
|
200
197
|
- **Check:** `.gitignore` contains all six lines:
|
|
201
198
|
```
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sw-verify-feature
|
|
3
3
|
description: Verify a feature implementation against its technical spec (specs/NNNN-slug-spec.md) by running three independent verifiers in parallel — AC test coverage/health, architecture/guideline compliance, and code quality/static analysis — then cross-checking their verdicts into one final per-AC pass/not pass/partly report. Wired as the final step of sw-implement-feature; can also be run standalone to (re)check a feature. Not to be confused with the existing "verify-implementation" skill, which is a mock and should be ignored.
|
|
4
4
|
when_to_use: Trigger phrases — "verify spec 0007", "check if this feature is done", "run full verification for this feature", "is epic 1 actually passing".
|
|
5
|
-
argument-hint: [specs/NNNN-slug-spec.md]
|
|
5
|
+
argument-hint: '[specs/NNNN-slug-spec.md]'
|
|
6
6
|
allowed-tools: Read Write Glob Grep Agent
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sw-verify-feature-ac-tests
|
|
3
3
|
description: Verify that a feature's acceptance criteria are backed by tests that actually exist, actually pass, and actually test what their name/comment/PHPDoc claims. Classifies tests by type (API/PHPUnit, Admin Panel/Playwright, Storefront/Playwright, CLI/PHPUnit), runs a test-health audit to catch false, mismatched, or unhealthy tests, then reports per-AC Coverage and Execution as pass / partly / not pass. One of three parallel verifiers spawned by sw-verify-feature; can also be run standalone.
|
|
4
4
|
when_to_use: Trigger phrases — "verify AC tests for spec 0007", "audit test health for this feature", "are these tests actually testing what they claim", "check test coverage for epic 1".
|
|
5
|
-
argument-hint: [specs/NNNN-slug-spec.md]
|
|
5
|
+
argument-hint: '[specs/NNNN-slug-spec.md]'
|
|
6
6
|
allowed-tools: Read Glob Grep Bash mcp__playwright__browser_navigate mcp__playwright__browser_click mcp__playwright__browser_type mcp__playwright__browser_fill_form mcp__playwright__browser_snapshot mcp__playwright__browser_take_screenshot mcp__playwright__browser_wait_for mcp__playwright__browser_console_messages mcp__playwright__browser_network_requests mcp__playwright__browser_evaluate mcp__playwright__browser_select_option mcp__playwright__browser_press_key mcp__playwright__browser_hover mcp__playwright__browser_tabs mcp__playwright__browser_close
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sw-verify-feature-architecture
|
|
3
3
|
description: Verify that a feature's implementation matches the architectural decisions its spec made, and complies with Shopware's own Core conventions plus any written Project guidelines this repo defines. Reports per-AC pass/partly/not pass with the specific guideline or mismatch behind any non-pass. One of three parallel verifiers spawned by sw-verify-feature; can also be run standalone.
|
|
4
4
|
when_to_use: Trigger phrases — "verify architecture for spec 0007", "does this implementation follow the spec's design", "check Core/Project guideline compliance for this feature", "architecture audit for epic 1".
|
|
5
|
-
argument-hint: [specs/NNNN-slug-spec.md]
|
|
5
|
+
argument-hint: '[specs/NNNN-slug-spec.md]'
|
|
6
6
|
allowed-tools: Read Glob Grep Bash mcp__ShopwareDevKnowledgeBase__list_docs mcp__ShopwareDevKnowledgeBase__grep_docs mcp__ShopwareDevKnowledgeBase__read_doc mcp__ShopwareDevKnowledgeBase__kb_status
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: sw-verify-feature-code-quality
|
|
3
3
|
description: Verify the code-quality gate for a feature — identifies which tool suites actually apply (PHPStan, ESLint, Stylelint, sw-cli structural validation via shopware-cli, PHPUnit regression), executes them, and checks the touched files against written Core and Project guidelines' quality/style clauses (naming, duplication, dead code, unneeded complexity). Reports whole-plugin gate results plus any per-AC quality defect found in that AC's files. One of three parallel verifiers spawned by sw-verify-feature; can also be run standalone.
|
|
4
4
|
when_to_use: Trigger phrases — "verify code quality for spec 0007", "run static analysis for this feature", "does this pass PHPStan/ESLint", "code quality gate for epic 1".
|
|
5
|
-
argument-hint: [specs/NNNN-slug-spec.md]
|
|
5
|
+
argument-hint: '[specs/NNNN-slug-spec.md]'
|
|
6
6
|
allowed-tools: Read Glob Grep Bash mcp__ShopwareDevKnowledgeBase__list_docs mcp__ShopwareDevKnowledgeBase__grep_docs mcp__ShopwareDevKnowledgeBase__read_doc mcp__ShopwareDevKnowledgeBase__kb_status
|
|
7
7
|
---
|
|
8
8
|
|