@event4u/agent-config 8.7.0 → 8.8.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +52 -0
- package/CONTRIBUTING.md +25 -0
- package/README.md +7 -4
- package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
- package/dist/agent-src/contexts/execution/orchestration-benchmark-gate.md +28 -16
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +15 -0
- package/dist/agent-src/rules/active-remediation.md +92 -0
- package/dist/agent-src/rules/broken-access-control.md +106 -0
- package/dist/agent-src/rules/communication-through-line.md +42 -0
- package/dist/agent-src/rules/decision-revisit-gate.md +8 -0
- package/dist/agent-src/rules/minimal-safe-diff.md +18 -1
- package/dist/agent-src/rules/prefer-enums-over-literals.md +65 -0
- package/dist/agent-src/rules/senior-engineering-discipline.md +82 -0
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +105 -0
- package/dist/agent-src/skills/ai-code-blindspots/evals/triggers.json +52 -0
- package/dist/agent-src/skills/authz-review/SKILL.md +21 -4
- package/dist/agent-src/skills/dependency-upgrade/SKILL.md +20 -0
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +104 -0
- package/dist/agent-src/skills/frontend-render-security/evals/triggers.json +52 -0
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +7 -0
- package/dist/agent-src/skills/supply-chain-intake/SKILL.md +100 -0
- package/dist/agent-src/skills/supply-chain-intake/evals/triggers.json +52 -0
- package/dist/agent-src/skills/testing-anti-patterns/SKILL.md +43 -2
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/roadmaps.md +24 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +195 -15
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +3 -3
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +13 -5
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +12 -4
- package/dist/install/install.mjs +5 -2
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
- package/dist/mcp/registry-manifest.json +4 -4
- package/dist/router.json +1 -1
- package/dist/server/schemas/settings.js +2 -1
- package/dist/server/schemas/settings.js.map +1 -1
- package/docs/CLAIMS.md +30 -2
- package/docs/architecture.md +2 -2
- package/docs/catalog.md +14 -0
- package/docs/contracts/mcp-tool-inventory.md +31 -30
- package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +6 -0
- package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +2 -2
- package/docs/decisions/ADR-117-subagents-auto-default-on.md +88 -0
- package/docs/decisions/INDEX.md +1 -0
- package/docs/experiences/content_creator.md +2 -0
- package/docs/experiences/finance.md +2 -0
- package/docs/experiences/founder.md +2 -0
- package/docs/experiences/ops.md +2 -0
- package/docs/featured-skills.md +2 -2
- package/docs/getting-started-by-role.md +1 -1
- package/docs/getting-started.md +1 -1
- package/docs/governance-advantage.md +1 -1
- package/docs/guidelines/agent-infra/memory-access.md +12 -0
- package/docs/proof.md +45 -3
- package/docs/release-runbook.md +138 -0
- package/docs/second-brain-scope.md +73 -0
- package/docs/succession.md +80 -0
- package/package.json +2 -2
- package/src/config/agent-settings.template.yml +25 -6
- package/src/scripts/_lib/orchestration_gate.ts +12 -8
- package/src/scripts/_lib/orchestration_savings.ts +127 -0
- package/src/scripts/build_proof.ts +38 -0
- package/src/scripts/chat_history.ts +79 -7
- package/src/scripts/domain_soundness_status.ts +236 -0
- package/src/scripts/generate_index.ts +14 -0
- package/src/scripts/hot_context_hook.ts +47 -2
- package/src/scripts/lint_behavioural_eval_freshness.ts +140 -0
- package/src/scripts/mcp_server/consumer_tool_catalog.json +22 -3
- package/src/scripts/mcp_server/tools.ts +159 -1
- package/src/scripts/memory_lookup.ts +184 -6
- package/src/scripts/memory_replay.ts +285 -0
- package/src/scripts/orchestration_savings_report.ts +100 -0
- package/src/scripts/schemas/domain-truth.schema.json +94 -0
- package/src/scripts/schemas/evals.schema.json +113 -0
- package/src/scripts/second_brain_score.ts +186 -0
- package/src/scripts/session_memory_index.ts +94 -0
- package/src/scripts/skill_eval_coverage.ts +318 -0
- package/src/server/schemas/settings.ts +5 -2
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skill": "supply-chain-intake",
|
|
3
|
+
"last_eval": "2026-07-09",
|
|
4
|
+
"description": "5 should-trigger + 5 should-not-trigger queries. Should-trigger covers DE + EN phrasings for verifying a new third-party dependency before install (existence/slopsquatting, pin+lock, CVE, no curl|bash). Should-not-trigger covers near-miss neighbours (upgrading existing deps, secrets, generic checklist, server auth) whose vocabulary overlaps.",
|
|
5
|
+
"queries": [
|
|
6
|
+
{
|
|
7
|
+
"q": "add the package the model suggested to package.json and install it",
|
|
8
|
+
"trigger": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"q": "is this pip package real or a hallucination before I install?",
|
|
12
|
+
"trigger": true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"q": "the install command is a curl piped to bash — is that safe?",
|
|
16
|
+
"trigger": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"q": "prüf diese neue Abhängigkeit bevor ich sie installiere (existiert sie überhaupt?)",
|
|
20
|
+
"trigger": true
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"q": "should I pin this dependency and commit a lockfile?",
|
|
24
|
+
"trigger": true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"q": "upgrade our existing lodash to the latest major and fix breakages",
|
|
28
|
+
"trigger": false,
|
|
29
|
+
"note": "upgrading an already-trusted dep → dependency-upgrade"
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"q": "rotate the API keys stored in our secret manager",
|
|
33
|
+
"trigger": false,
|
|
34
|
+
"note": "secrets lifecycle → secrets-management"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"q": "what cross-cutting controls did I miss across this diff?",
|
|
38
|
+
"trigger": false,
|
|
39
|
+
"note": "cross-surface checklist → ai-code-blindspots"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"q": "review the authorization on this endpoint",
|
|
43
|
+
"trigger": false,
|
|
44
|
+
"note": "server-side authz → authz-review"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"q": "why is my build failing on a type error?",
|
|
48
|
+
"trigger": false,
|
|
49
|
+
"note": "build/type debugging — not dependency intake"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
model_tier: medium
|
|
3
3
|
name: testing-anti-patterns
|
|
4
|
-
description: "Use BEFORE writing/changing tests, adding mocks, or test-only methods on production classes —
|
|
4
|
+
description: "Use BEFORE writing/changing tests, adding mocks, or test-only methods on production classes — vs mocking-the-mock, production pollution, partial mocks, and overfit/tautological assertions"
|
|
5
5
|
domain: quality
|
|
6
6
|
workspaces:
|
|
7
7
|
- engineering
|
|
@@ -42,6 +42,7 @@ Do NOT use when:
|
|
|
42
42
|
3. NEVER mock without understanding the dependency chain — observe first, mock minimally.
|
|
43
43
|
4. NEVER ship partial mocks — mirror the real response shape completely.
|
|
44
44
|
5. NEVER treat tests as an afterthought — write the failing test first.
|
|
45
|
+
6. NEVER overfit an assertion — assert the general rule, derive expected values from inputs/seeded data, cover boundary + error cases.
|
|
45
46
|
```
|
|
46
47
|
|
|
47
48
|
## Procedure: Run the gate before each anti-pattern
|
|
@@ -126,6 +127,40 @@ Symptom: "Implementation complete, ready for testing." Implementation went in wi
|
|
|
126
127
|
|
|
127
128
|
Gate: a feature is not complete until a failing-then-passing test cycle ran for it. Route to [`test-driven-development`](../test-driven-development/SKILL.md).
|
|
128
129
|
|
|
130
|
+
### Anti-Pattern 6 — Overfit / tautological assertions & unrealistic test data
|
|
131
|
+
|
|
132
|
+
Symptom: the test passes only for one crafted input and proves nothing about the general rule — a hardcoded expected value the code always emits, a narrow regex pinned to a fixed date/id, or an assertion restating the seed. AI-written tests reach the same coverage as human tests but ~4× worse fault detection (weak-oracle): they execute the path, then assert something too weak to catch a bug. Same shape as mocking-the-mock — asserting on your own construction, not the system's behavior.
|
|
133
|
+
|
|
134
|
+
Gate:
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
BEFORE writing an assertion:
|
|
138
|
+
Ask: "Would this still pass if the input changed, and FAIL if the RULE broke?"
|
|
139
|
+
IF it only passes for one crafted value, or restates a hardcoded literal:
|
|
140
|
+
STOP — derive the expected from the input, and add cases that vary it.
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Test-data realism — seeders/factories emit random data; the test derives its expectation from that data, never a hardcoded literal:
|
|
144
|
+
|
|
145
|
+
```js
|
|
146
|
+
// ❌ WRONG — hardcoded expectation, single happy case
|
|
147
|
+
const res = await api.get('/users/1')
|
|
148
|
+
expect(res.body).toEqual({ id: 1, name: 'Alice', email: 'alice@example.com' })
|
|
149
|
+
expect(log).toMatch(/User 1 logged in at 2026-01-01/) // pins incidental values
|
|
150
|
+
|
|
151
|
+
// ✅ RIGHT — derive from seeded random data + cover more than the happy path
|
|
152
|
+
const user = await seedUser() // faker-random name/email
|
|
153
|
+
const res = await api.get(`/users/${user.id}`)
|
|
154
|
+
expect(res.body.id).toBe(user.id) // derived, not hardcoded
|
|
155
|
+
expect(res.body.name).toBe(user.name)
|
|
156
|
+
expect(res.body).not.toHaveProperty('passwordHash') // security property
|
|
157
|
+
expect((await api.get('/users/999999')).status).toBe(404) // boundary: missing
|
|
158
|
+
expect((await api.get('/users/abc')).status).toBe(400) // error: invalid input
|
|
159
|
+
expect([403, 404]).toContain((await api.get(`/users/${otherTenantUser.id}`)).status) // abuse: tenant isolation (404 hides existence)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Deriving from seeded data is necessary but **not sufficient** — a test that only reads back the exact fields it seeded is still overfit (a code mutation survives it). A real test also exercises boundary (empty / null / max / Unicode), error (missing / invalid), and, on security-sensitive paths, an abuse case (IDOR, injection string, XSS payload). Coverage of *cases*, not just lines.
|
|
163
|
+
|
|
129
164
|
## Output format
|
|
130
165
|
|
|
131
166
|
1. The mocking decision recorded as a one-line comment in the test file (`// mock at <seam>: <reason>`).
|
|
@@ -139,6 +174,7 @@ Gate: a feature is not complete until a failing-then-passing test cycle ran for
|
|
|
139
174
|
- Layer 3 environment guards from [`defense-in-depth`](../defense-in-depth/SKILL.md) often expose anti-pattern 2: if a production guard fires only in tests, the test setup is wrong, not the guard.
|
|
140
175
|
- Long mock setups (> 50% of the test) are a signal that integration tests would be simpler — consider it before piling on more mocks.
|
|
141
176
|
- **Diagnose, do not brute-force.** If a test fails after a mock change, **never guess** at another mock tweak — drop a debugger / Xdebug breakpoint at the seam, observe the real call shape, then mock minimally. Two retries without a root-cause hypothesis = STOP and rethink.
|
|
177
|
+
- An assertion that derives from seeded data but only checks the happy path is still overfit — a code mutation survives it. Require ≥1 boundary/error/abuse case per behavior, not just line coverage.
|
|
142
178
|
|
|
143
179
|
## Do NOT
|
|
144
180
|
|
|
@@ -147,6 +183,7 @@ Gate: a feature is not complete until a failing-then-passing test cycle ran for
|
|
|
147
183
|
- Do NOT mock a method whose side effects the test depends on without reading the implementation.
|
|
148
184
|
- Do NOT invent mock data shapes from memory — record from the real source.
|
|
149
185
|
- Do NOT mark a story complete until at least one test was watched failing first.
|
|
186
|
+
- Do NOT hardcode an expected value the code will emit, or pin a regex to an incidental fixed date/id — derive from inputs and seeded data, and vary the input across cases.
|
|
150
187
|
|
|
151
188
|
## Auto-trigger keywords
|
|
152
189
|
|
|
@@ -155,10 +192,14 @@ Gate: a feature is not complete until a failing-then-passing test cycle ran for
|
|
|
155
192
|
- test-only method
|
|
156
193
|
- partial mock
|
|
157
194
|
- mock without understanding
|
|
195
|
+
- overfit assertion
|
|
196
|
+
- tautological test
|
|
197
|
+
- hardcoded expected value
|
|
158
198
|
|
|
159
199
|
## Provenance
|
|
160
200
|
|
|
161
201
|
- Adopted from: an external reference (MIT, © 2025 an external reference).
|
|
162
202
|
- Cross-linked: [`pest-testing`](../pest-testing/SKILL.md), [`test-driven-development`](../test-driven-development/SKILL.md), [`judge-test-coverage`](../judge-test-coverage/SKILL.md).
|
|
163
203
|
- Provenance registry: `agents/settings/contexts/skills-provenance.yml` (entry: `testing-anti-patterns`).
|
|
164
|
-
- Iron-Law floor: `verify-before-complete`, `skill-quality`.
|
|
204
|
+
- Iron-Law floor: `verify-before-complete`, `skill-quality`, `senior-engineering-discipline`.
|
|
205
|
+
- Cross-cutting anchor: [`ai-code-blindspots`](../ai-code-blindspots/SKILL.md) routes here for the test surface.
|
|
@@ -39,7 +39,7 @@ schema_version: 1
|
|
|
39
39
|
# CI guard: a release bump of `package.json` must update this value
|
|
40
40
|
# in lockstep — see scripts/check_template_pin_drift.ts (road-to-
|
|
41
41
|
# portable-runtime-and-update-check P3.3).
|
|
42
|
-
agent_config_version: "8.
|
|
42
|
+
agent_config_version: "8.8.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
|
@@ -156,6 +156,30 @@ Templates for roadmap files stored in `agents/roadmaps/` or `{module_root}/{Modu
|
|
|
156
156
|
structured form above; renders richer instructions in per-roadmap
|
|
157
157
|
breakdown.
|
|
158
158
|
|
|
159
|
+
21. **Related roadmaps share a common filename prefix.** When you create
|
|
160
|
+
more than one roadmap that belongs together — a follow-up, siblings
|
|
161
|
+
split from one body of work in a single pass, or phases of one
|
|
162
|
+
initiative in separate files — give them a shared `road-to-<family>-…`
|
|
163
|
+
prefix so relatedness is visible in `agents/roadmaps/` and the
|
|
164
|
+
dashboard groups them. `<family>` = short kebab slug for the shared
|
|
165
|
+
initiative; the suffix distinguishes members:
|
|
166
|
+
- **Split-in-one-pass siblings** → `road-to-<family>-<part>.md`
|
|
167
|
+
(e.g. `road-to-auth-hardening-backend.md`,
|
|
168
|
+
`road-to-auth-hardening-frontend.md`,
|
|
169
|
+
`road-to-auth-hardening-infra.md`).
|
|
170
|
+
- **Follow-ups** → `road-to-<parent>-followup.md` (rule 17): the
|
|
171
|
+
special case where `<parent>` is the family prefix; keep the
|
|
172
|
+
`parent_roadmap:` back-link.
|
|
173
|
+
- **Sibling (non-parent/child) roadmaps** carry no `parent_roadmap:`;
|
|
174
|
+
the shared prefix is the only linkage — do **not** invent a new
|
|
175
|
+
frontmatter field. Cross-link siblings by name in each `## Context`
|
|
176
|
+
block when it helps a reader.
|
|
177
|
+
Pick the `<family>` slug **once, up front**, before the first of the
|
|
178
|
+
set — renaming a prefix later means migrating inbound references. A
|
|
179
|
+
lone roadmap keeps plain `road-to-<slug>.md`; the convention fires
|
|
180
|
+
only when ≥2 related roadmaps are created together or as a follow-up
|
|
181
|
+
chain.
|
|
182
|
+
|
|
159
183
|
---
|
|
160
184
|
|
|
161
185
|
## Quality Gates (remote CI by default)
|
|
@@ -4714,6 +4714,27 @@
|
|
|
4714
4714
|
"agent-config-maintainer"
|
|
4715
4715
|
]
|
|
4716
4716
|
},
|
|
4717
|
+
{
|
|
4718
|
+
"category": "rule",
|
|
4719
|
+
"checksum": "sha256:946542c49f853be23686ab459da7c76c4cc31c710bf43b25c94f5991355f7c11",
|
|
4720
|
+
"install": {
|
|
4721
|
+
"default": true,
|
|
4722
|
+
"removable": false
|
|
4723
|
+
},
|
|
4724
|
+
"lifecycle": "active",
|
|
4725
|
+
"packs": [
|
|
4726
|
+
"engineering-base"
|
|
4727
|
+
],
|
|
4728
|
+
"path": "src/rules/active-remediation.md",
|
|
4729
|
+
"trust": {
|
|
4730
|
+
"confidence": "high",
|
|
4731
|
+
"human_review_required": false,
|
|
4732
|
+
"level": "core"
|
|
4733
|
+
},
|
|
4734
|
+
"workspaces": [
|
|
4735
|
+
"engineering"
|
|
4736
|
+
]
|
|
4737
|
+
},
|
|
4717
4738
|
{
|
|
4718
4739
|
"category": "rule",
|
|
4719
4740
|
"checksum": "sha256:d64b9dea4d70a0392472bf94cf1ebc374e18196119e58e20fd660c5d4a3ed7a2",
|
|
@@ -4955,6 +4976,27 @@
|
|
|
4955
4976
|
"engineering"
|
|
4956
4977
|
]
|
|
4957
4978
|
},
|
|
4979
|
+
{
|
|
4980
|
+
"category": "rule",
|
|
4981
|
+
"checksum": "sha256:edaeae5044cbda656f1abb2377f56cdfb38cce48108e8e83872bd67a1da6ff87",
|
|
4982
|
+
"install": {
|
|
4983
|
+
"default": true,
|
|
4984
|
+
"removable": false
|
|
4985
|
+
},
|
|
4986
|
+
"lifecycle": "active",
|
|
4987
|
+
"packs": [
|
|
4988
|
+
"engineering-base"
|
|
4989
|
+
],
|
|
4990
|
+
"path": "src/rules/broken-access-control.md",
|
|
4991
|
+
"trust": {
|
|
4992
|
+
"confidence": "high",
|
|
4993
|
+
"human_review_required": false,
|
|
4994
|
+
"level": "core"
|
|
4995
|
+
},
|
|
4996
|
+
"workspaces": [
|
|
4997
|
+
"engineering"
|
|
4998
|
+
]
|
|
4999
|
+
},
|
|
4958
5000
|
{
|
|
4959
5001
|
"category": "rule",
|
|
4960
5002
|
"checksum": "sha256:9c8f9b1ded54c9601f66c0c87b84c3b2aff4726514ec0231a3cd04c6b58c0cd2",
|
|
@@ -5049,6 +5091,36 @@
|
|
|
5049
5091
|
"engineering"
|
|
5050
5092
|
]
|
|
5051
5093
|
},
|
|
5094
|
+
{
|
|
5095
|
+
"category": "rule",
|
|
5096
|
+
"checksum": "sha256:f1bc4a87f5a26163cce17fc4b3a8cd4f1dfd4ad52c9fe65da97c9357becbcf35",
|
|
5097
|
+
"install": {
|
|
5098
|
+
"default": true,
|
|
5099
|
+
"removable": false
|
|
5100
|
+
},
|
|
5101
|
+
"lifecycle": "active",
|
|
5102
|
+
"packs": [
|
|
5103
|
+
"engineering-base"
|
|
5104
|
+
],
|
|
5105
|
+
"path": "src/rules/communication-through-line.md",
|
|
5106
|
+
"trust": {
|
|
5107
|
+
"confidence": "high",
|
|
5108
|
+
"human_review_required": false,
|
|
5109
|
+
"level": "core"
|
|
5110
|
+
},
|
|
5111
|
+
"workspaces": [
|
|
5112
|
+
"agent-config-maintainer",
|
|
5113
|
+
"construction",
|
|
5114
|
+
"engineering",
|
|
5115
|
+
"finance",
|
|
5116
|
+
"founder",
|
|
5117
|
+
"gtm",
|
|
5118
|
+
"legal-review-prep",
|
|
5119
|
+
"ops",
|
|
5120
|
+
"product",
|
|
5121
|
+
"small-business"
|
|
5122
|
+
]
|
|
5123
|
+
},
|
|
5052
5124
|
{
|
|
5053
5125
|
"category": "rule",
|
|
5054
5126
|
"checksum": "sha256:44216e854bddb1c0fae430451262756ca5e7d13c41ddbe440cecdb678cecf99c",
|
|
@@ -5133,7 +5205,7 @@
|
|
|
5133
5205
|
},
|
|
5134
5206
|
{
|
|
5135
5207
|
"category": "rule",
|
|
5136
|
-
"checksum": "sha256:
|
|
5208
|
+
"checksum": "sha256:4e3fc01547374c7d76af3b02a77e0667ad10544c63c035ba34b78e90fedaee11",
|
|
5137
5209
|
"install": {
|
|
5138
5210
|
"default": true,
|
|
5139
5211
|
"removable": false
|
|
@@ -5874,7 +5946,7 @@
|
|
|
5874
5946
|
},
|
|
5875
5947
|
{
|
|
5876
5948
|
"category": "rule",
|
|
5877
|
-
"checksum": "sha256:
|
|
5949
|
+
"checksum": "sha256:2ffc4bd12a025affa1097dd9f67cdb0732efac53a97d7a0f6b65b4470974f81e",
|
|
5878
5950
|
"install": {
|
|
5879
5951
|
"default": true,
|
|
5880
5952
|
"removable": false
|
|
@@ -6235,6 +6307,27 @@
|
|
|
6235
6307
|
"engineering"
|
|
6236
6308
|
]
|
|
6237
6309
|
},
|
|
6310
|
+
{
|
|
6311
|
+
"category": "rule",
|
|
6312
|
+
"checksum": "sha256:0bac9f181f420e3262b44097ed2a192d0f71f40071aa3f7d7b39b798b2cf834b",
|
|
6313
|
+
"install": {
|
|
6314
|
+
"default": true,
|
|
6315
|
+
"removable": false
|
|
6316
|
+
},
|
|
6317
|
+
"lifecycle": "active",
|
|
6318
|
+
"packs": [
|
|
6319
|
+
"engineering-base"
|
|
6320
|
+
],
|
|
6321
|
+
"path": "src/rules/prefer-enums-over-literals.md",
|
|
6322
|
+
"trust": {
|
|
6323
|
+
"confidence": "high",
|
|
6324
|
+
"human_review_required": false,
|
|
6325
|
+
"level": "core"
|
|
6326
|
+
},
|
|
6327
|
+
"workspaces": [
|
|
6328
|
+
"engineering"
|
|
6329
|
+
]
|
|
6330
|
+
},
|
|
6238
6331
|
{
|
|
6239
6332
|
"category": "rule",
|
|
6240
6333
|
"checksum": "sha256:f80fdd3259c50aac130892d9e147821a0275f5832c0d58817e2081fa342e736b",
|
|
@@ -6461,6 +6554,27 @@
|
|
|
6461
6554
|
"engineering"
|
|
6462
6555
|
]
|
|
6463
6556
|
},
|
|
6557
|
+
{
|
|
6558
|
+
"category": "rule",
|
|
6559
|
+
"checksum": "sha256:cac72a508d3680861fdb81c7a62ea17e59c7e8564f92c8b1663c92db4d197381",
|
|
6560
|
+
"install": {
|
|
6561
|
+
"default": true,
|
|
6562
|
+
"removable": false
|
|
6563
|
+
},
|
|
6564
|
+
"lifecycle": "active",
|
|
6565
|
+
"packs": [
|
|
6566
|
+
"engineering-base"
|
|
6567
|
+
],
|
|
6568
|
+
"path": "src/rules/senior-engineering-discipline.md",
|
|
6569
|
+
"trust": {
|
|
6570
|
+
"confidence": "high",
|
|
6571
|
+
"human_review_required": false,
|
|
6572
|
+
"level": "core"
|
|
6573
|
+
},
|
|
6574
|
+
"workspaces": [
|
|
6575
|
+
"engineering"
|
|
6576
|
+
]
|
|
6577
|
+
},
|
|
6464
6578
|
{
|
|
6465
6579
|
"category": "rule",
|
|
6466
6580
|
"checksum": "sha256:6bc6052a9c5230706a1d6e79e98b947aea690791c1f7915b99878e5bf6ba01a2",
|
|
@@ -7096,6 +7210,28 @@
|
|
|
7096
7210
|
"agent-config-maintainer"
|
|
7097
7211
|
]
|
|
7098
7212
|
},
|
|
7213
|
+
{
|
|
7214
|
+
"category": "skill",
|
|
7215
|
+
"checksum": "sha256:54152dfc1fd9b0d269d1d60d4c7c036521de7685005c245cc30757e1f2513847",
|
|
7216
|
+
"install": {
|
|
7217
|
+
"default": true,
|
|
7218
|
+
"removable": false
|
|
7219
|
+
},
|
|
7220
|
+
"lifecycle": "active",
|
|
7221
|
+
"name": "ai-code-blindspots",
|
|
7222
|
+
"packs": [
|
|
7223
|
+
"engineering-base"
|
|
7224
|
+
],
|
|
7225
|
+
"path": "src/skills/ai-code-blindspots/SKILL.md",
|
|
7226
|
+
"trust": {
|
|
7227
|
+
"confidence": "high",
|
|
7228
|
+
"human_review_required": false,
|
|
7229
|
+
"level": "core"
|
|
7230
|
+
},
|
|
7231
|
+
"workspaces": [
|
|
7232
|
+
"engineering"
|
|
7233
|
+
]
|
|
7234
|
+
},
|
|
7099
7235
|
{
|
|
7100
7236
|
"category": "skill",
|
|
7101
7237
|
"checksum": "sha256:f40f6c16309f9b749e947f404344763d155f994e4b09b06a932a3517fa8604ab",
|
|
@@ -7296,7 +7432,7 @@
|
|
|
7296
7432
|
},
|
|
7297
7433
|
{
|
|
7298
7434
|
"category": "skill",
|
|
7299
|
-
"checksum": "sha256:
|
|
7435
|
+
"checksum": "sha256:d3bf7c4c62cb48619aee3ded4d008d273708688566992206f53603410eb061bd",
|
|
7300
7436
|
"install": {
|
|
7301
7437
|
"default": true,
|
|
7302
7438
|
"removable": false
|
|
@@ -8330,7 +8466,7 @@
|
|
|
8330
8466
|
},
|
|
8331
8467
|
{
|
|
8332
8468
|
"category": "skill",
|
|
8333
|
-
"checksum": "sha256:
|
|
8469
|
+
"checksum": "sha256:b1b597da66c9594e4ac58c8bc41373bbb6e4d1bd25b972cda434c02eab1d0725",
|
|
8334
8470
|
"install": {
|
|
8335
8471
|
"default": true,
|
|
8336
8472
|
"removable": false
|
|
@@ -8944,6 +9080,28 @@
|
|
|
8944
9080
|
"engineering"
|
|
8945
9081
|
]
|
|
8946
9082
|
},
|
|
9083
|
+
{
|
|
9084
|
+
"category": "skill",
|
|
9085
|
+
"checksum": "sha256:149996466060c6ab2214ffd0e1b5129cd62b655037ea3fab440ab2bb0ca33c3c",
|
|
9086
|
+
"install": {
|
|
9087
|
+
"default": true,
|
|
9088
|
+
"removable": false
|
|
9089
|
+
},
|
|
9090
|
+
"lifecycle": "active",
|
|
9091
|
+
"name": "frontend-render-security",
|
|
9092
|
+
"packs": [
|
|
9093
|
+
"engineering-base"
|
|
9094
|
+
],
|
|
9095
|
+
"path": "src/skills/frontend-render-security/SKILL.md",
|
|
9096
|
+
"trust": {
|
|
9097
|
+
"confidence": "high",
|
|
9098
|
+
"human_review_required": false,
|
|
9099
|
+
"level": "core"
|
|
9100
|
+
},
|
|
9101
|
+
"workspaces": [
|
|
9102
|
+
"engineering"
|
|
9103
|
+
]
|
|
9104
|
+
},
|
|
8947
9105
|
{
|
|
8948
9106
|
"category": "skill",
|
|
8949
9107
|
"checksum": "sha256:f1d5f7060b2252ff93e75a95773f6e84e5b83a182faebabff430f77650e768b1",
|
|
@@ -11608,7 +11766,7 @@
|
|
|
11608
11766
|
},
|
|
11609
11767
|
{
|
|
11610
11768
|
"category": "skill",
|
|
11611
|
-
"checksum": "sha256:
|
|
11769
|
+
"checksum": "sha256:08320d5aa61763262860bab8fc5f137f808ed5cb795f3d90f75c4f66e99263c7",
|
|
11612
11770
|
"install": {
|
|
11613
11771
|
"default": true,
|
|
11614
11772
|
"removable": false
|
|
@@ -12134,6 +12292,28 @@
|
|
|
12134
12292
|
"agent-config-maintainer"
|
|
12135
12293
|
]
|
|
12136
12294
|
},
|
|
12295
|
+
{
|
|
12296
|
+
"category": "skill",
|
|
12297
|
+
"checksum": "sha256:3a3a2157368c778a5276fd14dc64055fdf02742a2f72d0639eb10c0dcc0446e8",
|
|
12298
|
+
"install": {
|
|
12299
|
+
"default": true,
|
|
12300
|
+
"removable": false
|
|
12301
|
+
},
|
|
12302
|
+
"lifecycle": "active",
|
|
12303
|
+
"name": "supply-chain-intake",
|
|
12304
|
+
"packs": [
|
|
12305
|
+
"engineering-base"
|
|
12306
|
+
],
|
|
12307
|
+
"path": "src/skills/supply-chain-intake/SKILL.md",
|
|
12308
|
+
"trust": {
|
|
12309
|
+
"confidence": "high",
|
|
12310
|
+
"human_review_required": false,
|
|
12311
|
+
"level": "core"
|
|
12312
|
+
},
|
|
12313
|
+
"workspaces": [
|
|
12314
|
+
"engineering"
|
|
12315
|
+
]
|
|
12316
|
+
},
|
|
12137
12317
|
{
|
|
12138
12318
|
"category": "skill",
|
|
12139
12319
|
"checksum": "sha256:fb616defc5389d3c921ae0f6554054ac3f6ed8c20f55d75c9452738b2cc57323",
|
|
@@ -12334,7 +12514,7 @@
|
|
|
12334
12514
|
},
|
|
12335
12515
|
{
|
|
12336
12516
|
"category": "skill",
|
|
12337
|
-
"checksum": "sha256:
|
|
12517
|
+
"checksum": "sha256:0387d4a8a245a15a6a13b951b9721cf0f491dd11c4a66f604619ee480f9b407f",
|
|
12338
12518
|
"install": {
|
|
12339
12519
|
"default": true,
|
|
12340
12520
|
"removable": false
|
|
@@ -12769,7 +12949,7 @@
|
|
|
12769
12949
|
"workspaces": []
|
|
12770
12950
|
}
|
|
12771
12951
|
],
|
|
12772
|
-
"checksum": "sha256:
|
|
12952
|
+
"checksum": "sha256:236db1c9e47c8fb6c769af3954d78b738af4308cccd100d55683fbc64ed05fd1",
|
|
12773
12953
|
"deprecations": [
|
|
12774
12954
|
{
|
|
12775
12955
|
"key": "tier",
|
|
@@ -12912,10 +13092,10 @@
|
|
|
12912
13092
|
"reason": "scaffold template for ticket-bundle tickets (ADR-101); carries no runtime frontmatter — emit-tickets fills it in per ticket"
|
|
12913
13093
|
}
|
|
12914
13094
|
],
|
|
12915
|
-
"generated_at": "2026-07-
|
|
13095
|
+
"generated_at": "2026-07-09T12:23:58Z",
|
|
12916
13096
|
"packs": [
|
|
12917
13097
|
{
|
|
12918
|
-
"artefact_count":
|
|
13098
|
+
"artefact_count": 103,
|
|
12919
13099
|
"description": "Framework-neutral engineering hygiene — git, tests, reviews.",
|
|
12920
13100
|
"domain": "engineering",
|
|
12921
13101
|
"human_review_required": 0,
|
|
@@ -12925,7 +13105,7 @@
|
|
|
12925
13105
|
"trust_level_default": "core",
|
|
12926
13106
|
"trust_summary": {
|
|
12927
13107
|
"advisory": 0,
|
|
12928
|
-
"core":
|
|
13108
|
+
"core": 101,
|
|
12929
13109
|
"experimental": 1,
|
|
12930
13110
|
"professional": 1,
|
|
12931
13111
|
"restricted": 0
|
|
@@ -13685,26 +13865,26 @@
|
|
|
13685
13865
|
"stats": {
|
|
13686
13866
|
"by_category": {
|
|
13687
13867
|
"command": 172,
|
|
13688
|
-
"rule":
|
|
13689
|
-
"skill":
|
|
13868
|
+
"rule": 100,
|
|
13869
|
+
"skill": 267,
|
|
13690
13870
|
"subagent": 1,
|
|
13691
13871
|
"template": 1
|
|
13692
13872
|
},
|
|
13693
13873
|
"by_lifecycle": {
|
|
13694
|
-
"active":
|
|
13874
|
+
"active": 525,
|
|
13695
13875
|
"archived": 0,
|
|
13696
13876
|
"deprecated": 0,
|
|
13697
13877
|
"experimental": 16
|
|
13698
13878
|
},
|
|
13699
13879
|
"by_trust_level": {
|
|
13700
13880
|
"advisory": 8,
|
|
13701
|
-
"core":
|
|
13881
|
+
"core": 417,
|
|
13702
13882
|
"experimental": 20,
|
|
13703
13883
|
"professional": 96,
|
|
13704
13884
|
"restricted": 0
|
|
13705
13885
|
},
|
|
13706
13886
|
"documented_unassigned_count": 26,
|
|
13707
|
-
"total_artefacts":
|
|
13887
|
+
"total_artefacts": 541,
|
|
13708
13888
|
"unassigned_count": 0
|
|
13709
13889
|
},
|
|
13710
13890
|
"unassigned": [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
312e96cd7419ad7db0a90c2a3d76784285c009e41656ee5f98353d9c9457a29f discovery-manifest.json
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Discovery Manifest — Summary
|
|
2
2
|
|
|
3
|
-
- Generated: `2026-07-
|
|
3
|
+
- Generated: `2026-07-09T12:23:58Z`
|
|
4
4
|
- Scanner: `f36b5a348348`
|
|
5
|
-
- Artefacts: **
|
|
5
|
+
- Artefacts: **541**
|
|
6
6
|
- Unassigned: **0**
|
|
7
7
|
|
|
8
8
|
## `engineering` — Engineering
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
| Pack | Artefacts |
|
|
13
13
|
|---|---|
|
|
14
|
-
| `engineering-base` — Engineering Base |
|
|
14
|
+
| `engineering-base` — Engineering Base | 103 |
|
|
15
15
|
| `git` — Git | 4 |
|
|
16
16
|
| `php` — PHP | 6 |
|
|
17
17
|
| `laravel` — Laravel | 25 |
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
"checksum": "sha256:
|
|
3
|
-
"generated_at": "2026-07-
|
|
2
|
+
"checksum": "sha256:236db1c9e47c8fb6c769af3954d78b738af4308cccd100d55683fbc64ed05fd1",
|
|
3
|
+
"generated_at": "2026-07-09T12:23:58Z",
|
|
4
4
|
"packs": [
|
|
5
5
|
{
|
|
6
6
|
"always_on": false,
|
|
7
|
-
"artefact_count":
|
|
7
|
+
"artefact_count": 103,
|
|
8
8
|
"artefacts": [
|
|
9
9
|
"src/domains/engineering-base/mission/upgrade/command.md",
|
|
10
|
+
"src/rules/active-remediation.md",
|
|
11
|
+
"src/rules/broken-access-control.md",
|
|
10
12
|
"src/rules/commit-conventions.md",
|
|
11
13
|
"src/rules/commit-policy.md",
|
|
14
|
+
"src/rules/communication-through-line.md",
|
|
12
15
|
"src/rules/delegation-policy.md",
|
|
13
16
|
"src/rules/docker-commands.md",
|
|
14
17
|
"src/rules/downstream-changes.md",
|
|
@@ -20,8 +23,10 @@
|
|
|
20
23
|
"src/rules/minimal-safe-diff.md",
|
|
21
24
|
"src/rules/non-destructive-by-default.md",
|
|
22
25
|
"src/rules/output-discipline.md",
|
|
26
|
+
"src/rules/prefer-enums-over-literals.md",
|
|
23
27
|
"src/rules/scope-control.md",
|
|
24
28
|
"src/rules/security-sensitive-stop.md",
|
|
29
|
+
"src/rules/senior-engineering-discipline.md",
|
|
25
30
|
"src/rules/source-discovery-gate.md",
|
|
26
31
|
"src/rules/think-before-action.md",
|
|
27
32
|
"src/rules/untrusted-input-defense.md",
|
|
@@ -29,6 +34,7 @@
|
|
|
29
34
|
"src/skills/accessibility-auditor/SKILL.md",
|
|
30
35
|
"src/skills/adversarial-review/SKILL.md",
|
|
31
36
|
"src/skills/agent-security-review/SKILL.md",
|
|
37
|
+
"src/skills/ai-code-blindspots/SKILL.md",
|
|
32
38
|
"src/skills/api-design/SKILL.md",
|
|
33
39
|
"src/skills/api-endpoint/SKILL.md",
|
|
34
40
|
"src/skills/api-testing/SKILL.md",
|
|
@@ -57,6 +63,7 @@
|
|
|
57
63
|
"src/skills/fe-design/SKILL.md",
|
|
58
64
|
"src/skills/finishing-a-development-branch/SKILL.md",
|
|
59
65
|
"src/skills/form-handler/SKILL.md",
|
|
66
|
+
"src/skills/frontend-render-security/SKILL.md",
|
|
60
67
|
"src/skills/git-workflow/SKILL.md",
|
|
61
68
|
"src/skills/github-ci/SKILL.md",
|
|
62
69
|
"src/skills/grafana/SKILL.md",
|
|
@@ -86,6 +93,7 @@
|
|
|
86
93
|
"src/skills/source-discovery/SKILL.md",
|
|
87
94
|
"src/skills/sql-writing/SKILL.md",
|
|
88
95
|
"src/skills/standards-from-config/SKILL.md",
|
|
96
|
+
"src/skills/supply-chain-intake/SKILL.md",
|
|
89
97
|
"src/skills/systematic-debugging/SKILL.md",
|
|
90
98
|
"src/skills/tailwind-engineer/SKILL.md",
|
|
91
99
|
"src/skills/tech-debt-tracker/SKILL.md",
|
|
@@ -103,14 +111,14 @@
|
|
|
103
111
|
"src/skills/verify-completion-evidence/SKILL.md"
|
|
104
112
|
],
|
|
105
113
|
"by_lifecycle": {
|
|
106
|
-
"active":
|
|
114
|
+
"active": 102,
|
|
107
115
|
"archived": 0,
|
|
108
116
|
"deprecated": 0,
|
|
109
117
|
"experimental": 1
|
|
110
118
|
},
|
|
111
119
|
"by_trust_level": {
|
|
112
120
|
"advisory": 0,
|
|
113
|
-
"core":
|
|
121
|
+
"core": 101,
|
|
114
122
|
"experimental": 1,
|
|
115
123
|
"professional": 1,
|
|
116
124
|
"restricted": 0
|