@event4u/agent-config 9.7.0 → 9.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 +144 -0
- package/README.md +5 -5
- package/dist/agent-src/commands/commit/in-chunks.md +8 -0
- package/dist/agent-src/commands/commit.md +17 -0
- package/dist/agent-src/commands/pr/create.md +4 -0
- package/dist/agent-src/contexts/override-system.md +75 -5
- package/dist/agent-src/rules/context-hygiene.md +2 -0
- package/dist/agent-src/rules/doc-screenshot-hygiene.md +97 -0
- package/dist/agent-src/rules/domain-safety-pii.md +1 -0
- package/dist/agent-src/rules/external-code-graph-interop.md +13 -3
- package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +2 -0
- package/dist/agent-src/rules/git-history-discipline.md +2 -0
- package/dist/agent-src/rules/language-and-tone.md +2 -0
- package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
- package/dist/agent-src/rules/media-governance-routing.md +2 -0
- package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
- package/dist/agent-src/rules/no-roadmap-references.md +3 -0
- package/dist/agent-src/rules/non-destructive-by-default.md +20 -0
- package/dist/agent-src/rules/onboarding-gate.md +2 -0
- package/dist/agent-src/rules/output-discipline.md +2 -0
- package/dist/agent-src/rules/persona-governance.md +2 -0
- package/dist/agent-src/rules/preservation-guard.md +3 -0
- package/dist/agent-src/rules/roadmap-progress-sync.md +2 -0
- package/dist/agent-src/rules/secret-vcs-guard.md +106 -0
- package/dist/agent-src/rules/security-sensitive-stop.md +1 -1
- package/dist/agent-src/rules/skill-quality.md +2 -0
- package/dist/agent-src/rules/source-confidentiality.md +2 -0
- package/dist/agent-src/rules/source-of-truth.md +2 -0
- package/dist/agent-src/rules/telegraph-speak.md +2 -0
- package/dist/agent-src/rules/token-optimizer-maintenance.md +2 -0
- package/dist/agent-src/rules/tool-safety.md +1 -0
- package/dist/agent-src/rules/verify-before-complete.md +2 -0
- package/dist/agent-src/skills/adr-create/SKILL.md +17 -1
- package/dist/agent-src/skills/code-intelligence/SKILL.md +94 -0
- package/dist/agent-src/skills/gated-reach/SKILL.md +185 -0
- package/dist/agent-src/skills/gated-reach/evals/triggers.json +72 -0
- package/dist/agent-src/skills/image-analyser/SKILL.md +14 -12
- package/dist/agent-src/skills/image-editing/SKILL.md +1 -0
- package/dist/agent-src/skills/readme-writing/SKILL.md +6 -1
- package/dist/agent-src/skills/screenshot-hygiene/SKILL.md +171 -0
- package/dist/agent-src/skills/secrets-management/SKILL.md +44 -1
- package/dist/agent-src/skills/subagent-orchestration/prompts/adversarial-verification-council.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge-two-stage.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-competitively.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-parallel.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-steps.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-worktrees.md +29 -0
- package/dist/agent-src/skills/subagent-orchestration/prompts/judge-with-debate.md +29 -0
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +4 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/github-workflows/secret-scan.yml +65 -0
- package/dist/cli/configRoot.js +112 -0
- package/dist/cli/configRoot.js.map +1 -0
- package/dist/cli/configRoot.test.js +97 -0
- package/dist/cli/configRoot.test.js.map +1 -0
- package/dist/cli/help.js +4 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/main.js +19 -2
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/registry.js +1 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +161 -44
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +4 -4
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +13 -8
- package/dist/discovery/trust-report.md +11 -11
- package/dist/discovery/workspaces.json +11 -6
- package/dist/install/install.mjs +16 -0
- package/dist/mcp/registry-manifest.json +3 -3
- package/dist/router.json +1 -1
- package/dist/server/app.js +10 -0
- package/dist/server/app.js.map +1 -1
- package/dist/server/routes/ping.js +18 -0
- package/dist/server/routes/ping.js.map +1 -1
- package/dist/server/schemas/settings.js +8 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/server/serverInfo.js +6 -2
- package/dist/server/serverInfo.js.map +1 -1
- package/dist/server/token.js +11 -4
- package/dist/server/token.js.map +1 -1
- package/dist/server/writeRoot.js +15 -1
- package/dist/server/writeRoot.js.map +1 -1
- package/dist/shared/capabilities.js +33 -0
- package/dist/shared/capabilities.js.map +1 -0
- package/dist/shared/capabilities.test.js +39 -0
- package/dist/shared/capabilities.test.js.map +1 -0
- package/dist/ui/assets/{index-BiEZiZ31.js → index-CrmZ34Rg.js} +16 -16
- package/dist/ui/assets/index-CrmZ34Rg.js.map +1 -0
- package/dist/ui/index.html +14 -5
- package/docs/CLAIMS.md +62 -37
- package/docs/architecture.md +2 -2
- package/docs/benchmark.md +137 -0
- package/docs/catalog.md +8 -3
- package/docs/comparison.yaml +44 -2
- package/docs/contracts/local-server-ports.md +53 -0
- package/docs/contracts/no-runtime-boundary.md +1 -1
- package/docs/contracts/subagent-boundary.md +15 -0
- package/docs/customization.md +14 -3
- package/docs/decisions/ADR-016-installer-architecture.md +2 -0
- package/docs/decisions/ADR-088-no-external-runtime-federation.md +1 -1
- package/docs/decisions/ADR-094-agent-memory-layer-removal.md +1 -1
- package/docs/decisions/ADR-109-subagent-v1-contract.md +2 -0
- package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +2 -0
- package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +11 -3
- package/docs/decisions/ADR-124-embedded-engine-doctrine.md +255 -0
- package/docs/decisions/ADR-125-doc-screenshot-anonymization.md +131 -0
- package/docs/decisions/ADR-126-internet-reach-operator-tooling.md +254 -0
- package/docs/decisions/ADR-127-enforcement-claims-must-resolve.md +150 -0
- package/docs/decisions/ADR-128-executable-evidence-and-measured-escalation.md +201 -0
- package/docs/decisions/INDEX.md +21 -0
- package/docs/decisions/engine-reclassification-2026-07.md +104 -0
- package/docs/distribution/awesome-list-submission.md +1 -1
- package/docs/distribution/registries.md +36 -27
- package/docs/enforcement-by-host.md +7 -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/guides/gated-platform-reads.md +221 -0
- package/docs/positioning-evidence.md +1 -1
- package/docs/proof.md +92 -16
- package/docs/threat-model.md +1 -0
- package/package.json +5 -2
- package/src/config/agent-settings.template.yml +43 -0
- package/src/config/reach-channels.yml +217 -0
- package/src/config/reach-prescriptions-intake.yml +200 -0
- package/src/scripts/_dispatch.bash +15 -0
- package/src/scripts/_lib/exec_evidence.ts +251 -0
- package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +10 -0
- package/src/scripts/_lib/fixtures/secret-detector/positives.txt +11 -0
- package/src/scripts/_lib/kernel_rules.ts +46 -0
- package/src/scripts/_lib/reddit_thread_parse.ts +598 -0
- package/src/scripts/_lib/risk_paths.ts +160 -0
- package/src/scripts/_lib/secret_detector.test.ts +103 -0
- package/src/scripts/_lib/secret_detector.ts +319 -0
- package/src/scripts/_lib/tool_probe.ts +359 -0
- package/src/scripts/adr/regenerate_index.ts +81 -6
- package/src/scripts/audit_adr_coverage.ts +33 -0
- package/src/scripts/build_proof.ts +162 -0
- package/src/scripts/check_adr_frontmatter.ts +195 -0
- package/src/scripts/check_artefact_count_messaging.ts +4 -0
- package/src/scripts/check_backstop_debt.ts +200 -0
- package/src/scripts/check_claims.ts +188 -8
- package/src/scripts/check_comparison.ts +12 -0
- package/src/scripts/check_enforcement_coverage.ts +592 -0
- package/src/scripts/check_kernel_rule_bundle.ts +16 -12
- package/src/scripts/check_reach_channels.ts +407 -0
- package/src/scripts/check_reach_staleness.ts +364 -0
- package/src/scripts/check_secret_leak.test.ts +47 -0
- package/src/scripts/check_secret_leak.ts +290 -0
- package/src/scripts/code_graph/build.ts +0 -0
- package/src/scripts/code_graph/cli.ts +207 -0
- package/src/scripts/code_graph/detect.ts +134 -0
- package/src/scripts/code_graph/extract.ts +386 -0
- package/src/scripts/code_graph/loader.ts +123 -0
- package/src/scripts/code_graph/query.ts +176 -0
- package/src/scripts/code_graph/sanitize.ts +30 -0
- package/src/scripts/code_graph/types.ts +83 -0
- package/src/scripts/code_graph/validate.ts +63 -0
- package/src/scripts/external_sources_denylist.json +3 -1
- package/src/scripts/generate_subagent_floor.ts +194 -0
- package/src/scripts/hook_manifest.yaml +13 -3
- package/src/scripts/hooks/code_graph_nudge_hook.ts +184 -0
- package/src/scripts/iron_law_sha.ts +3 -12
- package/src/scripts/lint_override_kernel_guard.ts +219 -0
- package/src/scripts/measure_rule_budget.ts +3 -12
- package/src/scripts/postinstall_gui.ts +129 -0
- package/src/scripts/reach_doctor.ts +1651 -0
- package/src/scripts/release.ts +24 -3
- package/src/scripts/risk_escalation_shadow.ts +160 -0
- package/src/scripts/schemas/agent-settings.schema.json +23 -0
- package/src/scripts/schemas/reach-channels.schema.json +134 -0
- package/src/scripts/schemas/reach-doctor-payload.schema.json +220 -0
- package/src/scripts/schemas/rule.schema.json +10 -0
- package/src/scripts/skill_linter.ts +55 -0
- package/src/scripts/validate_reach_prescriptions.ts +751 -0
- package/src/server/schemas/settings.ts +16 -0
- package/src/shared/capabilities.test.ts +43 -0
- package/src/shared/capabilities.ts +75 -0
- package/src/templates/minimal/agents-overrides-readme.md +20 -0
- package/dist/ui/assets/index-BiEZiZ31.js.map +0 -1
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Bootstrap shim for the event4u agent-config suite. This plugin ships ONLY the dispatcher hooks plus one install-pointer skill — ALL content (skills, rules, commands) is installed via `npx -y @event4u/agent-config init`, which writes the file projection AND registers the same hooks in ~/.claude/settings.json. DEPRECATED as a content channel; kept so the marketplace listing stays discoverable and existing installs keep working hooks.",
|
|
9
|
-
"version": "9.
|
|
9
|
+
"version": "9.8.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,42 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
|
|
|
18
18
|
|
|
19
19
|
### Added
|
|
20
20
|
|
|
21
|
+
- **Internet-reach operator tooling** — upstream-tool health and install-pinning
|
|
22
|
+
discipline for the tools a reach recipe needs. The router skill this was
|
|
23
|
+
scoped around was **cancelled pre-authoring by its own benchmark gate**: the
|
|
24
|
+
pre-registered run returned 0/12 outright wins against the host's native web
|
|
25
|
+
tools (`band: stop`), so no skill, no triggers, no capability-area claim. The
|
|
26
|
+
null is published in [`docs/benchmark.md`](docs/benchmark.md) § internet-reach;
|
|
27
|
+
the decision is [ADR-126](docs/decisions/ADR-126-internet-reach-operator-tooling.md).
|
|
28
|
+
- `reach:doctor` — new read-only command: per-channel probe status,
|
|
29
|
+
`active_backend`, tier, lifecycle, and the exact **pinned** fix command for
|
|
30
|
+
the current platform when a backend is missing or broken. No writes, no
|
|
31
|
+
installs, no network (`--deep` is the explicit opt-in that makes one real
|
|
32
|
+
request per backend and still writes nothing).
|
|
33
|
+
- `src/config/reach-channels.yml` + `reach-channels.schema.json` — ordered
|
|
34
|
+
backend candidates per channel (swapping a backend is a config reorder, not
|
|
35
|
+
a code edit), the four-value lifecycle vocabulary reused from
|
|
36
|
+
`provider-lifecycle`, `last_verified` staleness metadata, and an install
|
|
37
|
+
pattern that **rejects** unpinned versions, `latest`/`main`/`HEAD` refs and
|
|
38
|
+
archive-URL install sources.
|
|
39
|
+
- `tool_probe` — five-state probe taxonomy (`ok`/`missing`/`broken`/`timeout`/
|
|
40
|
+
`error`) with stale-shim detection (resolvable shim, dead interpreter),
|
|
41
|
+
exit-126/127 mapping, timeout-only single retry, and per-channel error
|
|
42
|
+
isolation. Every spawn routes through `hardenedSpawnEnv()`.
|
|
43
|
+
- `check-reach-channels` + `check-reach-prescriptions` CI gates — pinning and
|
|
44
|
+
intake-record discipline is machine-checked, not an honour system; a
|
|
45
|
+
prescription that cannot be pinned does not ship.
|
|
46
|
+
- `check-reach-staleness` CI gate — offline: a channel unverified for >90 days,
|
|
47
|
+
a `deprecated` channel with no `replacement`, or a channel past its
|
|
48
|
+
`removal_after` date and still present fails the build.
|
|
49
|
+
- Registry trust is enforced at runtime, not just in CI: `reach:doctor` (incl.
|
|
50
|
+
`--registry <path>`) validates the registry against its schema and refuses to
|
|
51
|
+
probe on any violation (exit 2). `probe_args` is a flag-shaped **allowlist**
|
|
52
|
+
and `probe_cmd` must equal its backend `id`, so a registry entry can neither
|
|
53
|
+
smuggle a shell payload nor label a row with a binary other than the one that
|
|
54
|
+
ran — both closed by an adversarial pre-merge review, with permanent
|
|
55
|
+
regression fixtures.
|
|
56
|
+
|
|
21
57
|
- **Doc-follows-code discipline** — deterministic, framework-agnostic mechanism
|
|
22
58
|
so documentation is updated when code changes.
|
|
23
59
|
- `downstream-changes` rule gains a first-class **Doc-Impact** obligation:
|
|
@@ -139,6 +175,114 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
|
|
|
139
175
|
> that forces a new era split (`# Era: 9.3.x`, etc.) — see
|
|
140
176
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
141
177
|
|
|
178
|
+
## [9.8.0](https://github.com/event4u-app/agent-config/compare/9.7.0...9.8.0) (2026-07-26)
|
|
179
|
+
|
|
180
|
+
### Features
|
|
181
|
+
|
|
182
|
+
* **proof:** publish what re-derives itself, and what it prevents ([8ba878f](https://github.com/event4u-app/agent-config/commit/8ba878f0bb2244b33ce57f3484d5c0d0f887a5e9))
|
|
183
|
+
* **governance:** classify trust-boundary risk, measure before gating ([1421f82](https://github.com/event4u-app/agent-config/commit/1421f829ee58fe56a4c41a15c5f2e3925f17b5e9))
|
|
184
|
+
* **claims:** add exec: evidence that re-runs the command ([081b9ed](https://github.com/event4u-app/agent-config/commit/081b9ed36e29e3bb9e665004c16f3db9f831a107))
|
|
185
|
+
* **ci:** run the backstops rules declare, and baseline the five that were already red ([545d9cc](https://github.com/event4u-app/agent-config/commit/545d9ccd02cba430c8b5cb7c9b15fb0c9fe40463))
|
|
186
|
+
* **proof:** read the same checked rows as failure modes, not just as comparisons ([d2196de](https://github.com/event4u-app/agent-config/commit/d2196de10a220300b2897a379bf419c89416c117))
|
|
187
|
+
* **adr:** index the decisions filed outside the ADR directory, and stop auditing a hardcoded list ([2a2999a](https://github.com/event4u-app/agent-config/commit/2a2999a437f98fa94eae76638598923f0ba85bcd))
|
|
188
|
+
* **claims:** see the figure shapes that actually ship, and refuse a qual claim as a licence for a number ([5d7b166](https://github.com/event4u-app/agent-config/commit/5d7b1666364bb227fc687704560c93ddfb5fad2f))
|
|
189
|
+
* **host-integration:** config-root spawn flag + embed contract v1 ([a9f0038](https://github.com/event4u-app/agent-config/commit/a9f0038631ed97b815ab255d3a307a617423f091))
|
|
190
|
+
* **skill:** gated-reach — ship-tier channels only ([88f03c3](https://github.com/event4u-app/agent-config/commit/88f03c349fd89ffa36ca642eeef4bb8cd31263a8))
|
|
191
|
+
* **lint:** refuse nag phrasing in skill bodies ([004d696](https://github.com/event4u-app/agent-config/commit/004d696d3afae203e1581c63de979d0571031331))
|
|
192
|
+
* **reach:** distinguish "installed" from "able to extract" in reach:doctor ([e012bf7](https://github.com/event4u-app/agent-config/commit/e012bf784d0544002ec86128cc2fb2d6805e44d0))
|
|
193
|
+
* **reach:** read Reddit and single tweets credential-free ([9b89a34](https://github.com/event4u-app/agent-config/commit/9b89a34cf863167fda437f51ab54396f11229b60))
|
|
194
|
+
* **adr:** name the condition that reopens a decision, and validate ADR frontmatter at all ([5315ca1](https://github.com/event4u-app/agent-config/commit/5315ca1a05cb110dec839083dc8ef61b5f4fad9e))
|
|
195
|
+
* **subagents:** deliver the safety floor the contract already promised ([48ccf6a](https://github.com/event4u-app/agent-config/commit/48ccf6a10a45ba2ee2583a5dd3765ab0b8db9605))
|
|
196
|
+
* **overrides:** a kernel rule may be tightened, never replaced ([7821e22](https://github.com/event4u-app/agent-config/commit/7821e2202e9a03d9b0f80f299374a9cad3969139))
|
|
197
|
+
* **enforcement:** resolve what enforces each rule, instead of trusting the claim ([efc0fab](https://github.com/event4u-app/agent-config/commit/efc0fab2b8fc1bf181ba89ecc9f427312996dc56))
|
|
198
|
+
* **reach:** mechanize the supply-chain and staleness discipline as CI gates ([3d1b0f6](https://github.com/event4u-app/agent-config/commit/3d1b0f6375ba0f193fa198817bfa145091deebb1))
|
|
199
|
+
* **reach:** channel registry, five-state probe engine and read-only reach:doctor ([2cf6f04](https://github.com/event4u-app/agent-config/commit/2cf6f0406e3e82f955832698db556c7cba8887e2))
|
|
200
|
+
* **reach:** pre-registered reach-vs-native benchmark, published as an honest null ([8238f8b](https://github.com/event4u-app/agent-config/commit/8238f8bf78ac3f5cd47ad6ffdc703bbd562a206f))
|
|
201
|
+
* **code-graph:** code-intelligence skill + interop routing + host degradation (Phase 4) ([eabe48c](https://github.com/event4u-app/agent-config/commit/eabe48c49311278cfcb96ba3401b5240b4707261))
|
|
202
|
+
* **code-graph:** PreToolUse code-graph nudge hook (Phase 4) ([6d674ee](https://github.com/event4u-app/agent-config/commit/6d674ee421581a72094d581d35fc429006f7f4b4))
|
|
203
|
+
* **code-graph:** incremental --update + symlink-confinement fix (Phase 4) ([c0c846c](https://github.com/event4u-app/agent-config/commit/c0c846c222fc76bfcc685de96ae0dd0055a2fd38))
|
|
204
|
+
* add doc-screenshot anonymization discipline (rule + skill + ADR-125) ([c3e4671](https://github.com/event4u-app/agent-config/commit/c3e4671fd7822976d1293632b3b1ee7d707034a5))
|
|
205
|
+
* **code-graph:** source-agnostic query tier + detection (Phase 3) ([f5a0117](https://github.com/event4u-app/agent-config/commit/f5a0117a3445c4c3070f4432788a645cc2522f5a))
|
|
206
|
+
* **code-graph:** native WASM tree-sitter extract+build engine (Phase 2) ([8d78fef](https://github.com/event4u-app/agent-config/commit/8d78fefd788c6da88516ccdcdfde6ca84e572938))
|
|
207
|
+
* **adr-124:** land embedded-engine doctrine + reclassification sweep (Phase 0-1) ([e1db617](https://github.com/event4u-app/agent-config/commit/e1db617307d13de6d520b9aacc6aa0bb5472fb92))
|
|
208
|
+
* **install:** restart/launch the GUI on a global (re)install ([fae7a6c](https://github.com/event4u-app/agent-config/commit/fae7a6c6ad60441e2df9d056b92cc083ca63940d))
|
|
209
|
+
* secret-scan pre-flight in /commit, /commit:in-chunks, /pr:create ([ab69931](https://github.com/event4u-app/agent-config/commit/ab6993114bb57f6d8f2fea98ec4c2ec0e82366e7))
|
|
210
|
+
* secret-vcs-guard rule + secrets-management runtime guard ([9426f7e](https://github.com/event4u-app/agent-config/commit/9426f7e175b6b1325a4989eb07f709c8d9090bbe))
|
|
211
|
+
* secret detector library + CI leak-scan gate ([3168244](https://github.com/event4u-app/agent-config/commit/316824447b277f966dfe194e0c7c6741121b7e9f))
|
|
212
|
+
|
|
213
|
+
### Bug Fixes
|
|
214
|
+
|
|
215
|
+
* **roadmaps:** inline the council convergence instead of linking the transcript ([c47d9fc](https://github.com/event4u-app/agent-config/commit/c47d9fc0f8e390a8edce2a30d3dd8c5350ae0fd1))
|
|
216
|
+
* **docs:** replace stale 3.2.0 registry submission body and guard the file ([b393514](https://github.com/event4u-app/agent-config/commit/b393514dfa2a891ae24294d43155fa080ca115cd))
|
|
217
|
+
* **ci:** give the backstop gates their baseline, and stop an empty scan reading as clean ([69083f5](https://github.com/event4u-app/agent-config/commit/69083f577975c0de1d9535b4b45c27f475a676d7))
|
|
218
|
+
* **claims:** derive the denominator, and stop citing a gate that does not run ([89049f1](https://github.com/event4u-app/agent-config/commit/89049f1db36d63e33c7bb4f4a80712f3f2f72556))
|
|
219
|
+
* **enforcement:** say which build — a taskfile-named validator is not a CI gate ([7a87271](https://github.com/event4u-app/agent-config/commit/7a87271cce6b0cabeb664ccf890acd1f0335a0e7))
|
|
220
|
+
* **ci:** regenerate docs/proof.md and stop tracking a per-run eval artifact ([e8973c7](https://github.com/event4u-app/agent-config/commit/e8973c784513e33d7a0eb8e43d55c4a46b446a17))
|
|
221
|
+
* **claims:** the witness-sweep fixture encoded the bug it was testing ([b7b8621](https://github.com/event4u-app/agent-config/commit/b7b8621966d82f7f0cda87838974f1066258a6ec))
|
|
222
|
+
* **claims:** correct three shipped numbers, one of them understated by 3x ([2c52959](https://github.com/event4u-app/agent-config/commit/2c529590bce9ccb8cdabb1835f01670d7f60140a))
|
|
223
|
+
* **ci:** three self-inflicted reds — my own schema, my own legacy path, my own hand-edit ([7945f6c](https://github.com/event4u-app/agent-config/commit/7945f6cd74640a8f401451896c7a8c9cadce9dfd))
|
|
224
|
+
* **enforcement:** satisfy noUncheckedIndexedAccess in the two new scripts ([6501cce](https://github.com/event4u-app/agent-config/commit/6501ccebb757dd482dbd69bd5b784db447080e4a))
|
|
225
|
+
* **output-discipline:** wire the linter the rule already claimed was wired ([d996c6d](https://github.com/event4u-app/agent-config/commit/d996c6d7372add7e9b738bca2064078bbbc4a958))
|
|
226
|
+
* **kernel:** single-source the kernel list, and point the slow-rollout gate at a directory that exists ([676d74f](https://github.com/event4u-app/agent-config/commit/676d74f67d8db05d9f404e7a17d43172a2786bb1))
|
|
227
|
+
* **reach:** close the content-echo class at all four sites, not three ([17e806d](https://github.com/event4u-app/agent-config/commit/17e806d37af0894908f9b12a5044dc7c1fb1d51c))
|
|
228
|
+
* **reach:** confine credential_path, refuse non-files, and name what --deep consents to ([ffd02d0](https://github.com/event4u-app/agent-config/commit/ffd02d0d33b85f5e70de442d1c8dc4d5208b4c50))
|
|
229
|
+
* **reach:** redact echoed file content, unify error sanitization, document the gate boundaries ([52a1ded](https://github.com/event4u-app/agent-config/commit/52a1ded5314c99a51414ad3b6f44a60177ce40e5))
|
|
230
|
+
* **settings:** declare hooks.code_graph.enabled in the Zod settings schema ([ef475ce](https://github.com/event4u-app/agent-config/commit/ef475ce39a0e937f1f6cbfe9ed544633a789c969))
|
|
231
|
+
* **proof:** regenerate proof.md after code-intelligence skill-count bump ([8ad88c8](https://github.com/event4u-app/agent-config/commit/8ad88c82eee0252d903c9efb93b62e380a6acba5))
|
|
232
|
+
* sync settings Zod schema + regenerate proof/capabilities for screenshots config ([4812a6e](https://github.com/event4u-app/agent-config/commit/4812a6e232c7323695faf6a90328b13b2e48bbe0))
|
|
233
|
+
* **proof:** regenerate proof.md after comparison.yaml row-1 rewording ([f36f583](https://github.com/event4u-app/agent-config/commit/f36f583c1aab82da7171e4c9f3f28306b5e1345a))
|
|
234
|
+
* **roadmap:** unlink future reclassification-doc path in sequencing plan ([d74b4b0](https://github.com/event4u-app/agent-config/commit/d74b4b060cb01569c47615822b09ed2f055a2474))
|
|
235
|
+
* **review:** reclassify MCP server B, machine-visible partial supersession ([1b2ed21](https://github.com/event4u-app/agent-config/commit/1b2ed21046a6c904d435dd48472f512477436cad))
|
|
236
|
+
* **install:** make postinstall_gui self-contained (prepack-check) ([54a77b1](https://github.com/event4u-app/agent-config/commit/54a77b1bf981053f7e778ec2e6643637f608c313))
|
|
237
|
+
* widen check_secret_leak opts types for exactOptionalPropertyTypes ([593dfab](https://github.com/event4u-app/agent-config/commit/593dfab595be8c8f5cc722f038e8e60fcdb2609b))
|
|
238
|
+
* **release:** make the tag-workflow dispatch non-fatal + document actions:write ([d47949e](https://github.com/event4u-app/agent-config/commit/d47949e1357e5b4794b442c3b69fd84c999d23fa))
|
|
239
|
+
|
|
240
|
+
### Documentation
|
|
241
|
+
|
|
242
|
+
* **roadmaps:** record adoption progress and add two new roadmaps ([7af5375](https://github.com/event4u-app/agent-config/commit/7af537591d3628d4a2285553c41adcdf5e23e734))
|
|
243
|
+
* **readme:** reorder the opening to lead with the wedge, not the catalog ([ab66da8](https://github.com/event4u-app/agent-config/commit/ab66da8e968a540528fffca05ce65184c0817740))
|
|
244
|
+
* **adr:** record the cut as ADR-128, and archive the roadmap ([b365e90](https://github.com/event4u-app/agent-config/commit/b365e907461312f5e71e502de21333b10a211655))
|
|
245
|
+
* **roadmap:** archive road-to-wiring-truth, complete ([aaafb9e](https://github.com/event4u-app/agent-config/commit/aaafb9e7543b9b4a75f40b09805725dc437ca564))
|
|
246
|
+
* **roadmap:** archive road-to-number-truth, complete ([a12bbae](https://github.com/event4u-app/agent-config/commit/a12bbae9d83e60531a87b69fd135c37cbb02de8a))
|
|
247
|
+
* **contracts:** write the local-server-ports + host-integration contract ([610e539](https://github.com/event4u-app/agent-config/commit/610e539538bac8a914ce28a2b4f9c9ef91165b61))
|
|
248
|
+
* **roadmaps:** track the AC host-integration roadmaps + landed status ([34fcc27](https://github.com/event4u-app/agent-config/commit/34fcc271fe9eda5d24d8ee2a3260cdfbddad5722))
|
|
249
|
+
* **roadmap:** close gated-reach, spawn the YouTube follow-up, park five successors ([530917a](https://github.com/event4u-app/agent-config/commit/530917a3a1c4be5c514fe4eb507dea83a65b4b53))
|
|
250
|
+
* register the gated-reach claim, comparison row, and amend ADR-126 ([bb0b263](https://github.com/event4u-app/agent-config/commit/bb0b263292236a623e7cb71d2a9832f1e090cc3a))
|
|
251
|
+
* **bench:** publish the gated-reach outcomes, ships and parks alike ([5ca8930](https://github.com/event4u-app/agent-config/commit/5ca89304c517b91d2d3950213c835e6336ef5d57))
|
|
252
|
+
* **reach:** operator prescriptions for platforms the host cannot fetch ([844bb1b](https://github.com/event4u-app/agent-config/commit/844bb1b3cfa3633c2e4f383496ae04393ea15a48))
|
|
253
|
+
* **roadmap:** archive road-to-enforcement-proof, complete ([a590aca](https://github.com/event4u-app/agent-config/commit/a590aca449b9aa0a186d4739c9931f2b46458fcf))
|
|
254
|
+
* **proof:** publish both numbers, including the unflattering one ([eabe545](https://github.com/event4u-app/agent-config/commit/eabe545965648adbe4637f4b6f80ea3dcbc5de46))
|
|
255
|
+
* **reach:** make Reddit ranking + thread structure the goal — and it stays credential-free ([4c3b3cb](https://github.com/event4u-app/agent-config/commit/4c3b3cbafba3087078ff3a2ff0f0509e36dc29e1))
|
|
256
|
+
* **reach:** roadmap for credential-free gated reach — Reddit, single tweets, transcripts ([ff4b40c](https://github.com/event4u-app/agent-config/commit/ff4b40c83a8925fabfbf9c87ae29af092bcc1f0a))
|
|
257
|
+
* **reach:** correct my own overstatement about what the witness contains ([0e46437](https://github.com/event4u-app/agent-config/commit/0e46437e6377b863245e769cce9c0721e39a4698))
|
|
258
|
+
* **reach:** record all four council divergences, and give both accepted costs a re-entry point ([7f85378](https://github.com/event4u-app/agent-config/commit/7f853788973a3fcfac61e34866047d8704d61bd6))
|
|
259
|
+
* **reach:** ADR-126, archived roadmap, comparison row and maintenance log ([4bfc9da](https://github.com/event4u-app/agent-config/commit/4bfc9da38cd809465713e8544b953e38781594b4))
|
|
260
|
+
* **roadmap:** add native-code-intelligence roadmap + engine queue ([7c7ac11](https://github.com/event4u-app/agent-config/commit/7c7ac1149b8715794be0baac5b3285e514fb9b65))
|
|
261
|
+
* **adr:** propose ADR-124 embedded-engine doctrine ([d8c90a5](https://github.com/event4u-app/agent-config/commit/d8c90a52397a048b52abf17575f6d67d298b364b))
|
|
262
|
+
* **roadmap:** sync dashboard for archived Starlight roadmap ([d30846c](https://github.com/event4u-app/agent-config/commit/d30846c1299ef9784ea33a8572f830a0ae1b571f))
|
|
263
|
+
* **roadmap:** complete + archive Starlight project-docs roadmap ([4c7b91f](https://github.com/event4u-app/agent-config/commit/4c7b91f407f1238ffc83c1700f444e136c476400))
|
|
264
|
+
* **roadmap:** add Starlight project-docs roadmap ([f63e87f](https://github.com/event4u-app/agent-config/commit/f63e87f3ebc2cc53e2ceccb6a43591fd394aa90e))
|
|
265
|
+
* **site:** add setup, configuration, CLI and agent-command docs ([7c05e68](https://github.com/event4u-app/agent-config/commit/7c05e68fdc27c391c0882d2f2d0284bb3f3f9d8f))
|
|
266
|
+
* **site:** restyle docs site to the data-helpers look ([ef0e7a0](https://github.com/event4u-app/agent-config/commit/ef0e7a05de293d49c7f6fb474c40f157f621de13))
|
|
267
|
+
* document the secret-in-VCS guardrail (threat model + SECURITY) ([e10e316](https://github.com/event4u-app/agent-config/commit/e10e3160bb07b6457602b2c2ee70f2215a66dfb5))
|
|
268
|
+
|
|
269
|
+
### Tests
|
|
270
|
+
|
|
271
|
+
* **bench:** gated-reach — pre-registration, rows, per-channel verdict ([8233aed](https://github.com/event4u-app/agent-config/commit/8233aedd50c80156a9d8996967e1fd2a7db70109))
|
|
272
|
+
* **reach:** drop the witness instrument that watched shared state, and say what that costs ([1be7ab9](https://github.com/event4u-app/agent-config/commit/1be7ab98373f20cbfd0048184cc62a0c93de1151))
|
|
273
|
+
* **reach:** cover the sanitized error path, the export gate and the win32 skip ([3b5a47a](https://github.com/event4u-app/agent-config/commit/3b5a47a5c30d0968f2631924c813d3c6b13884d2))
|
|
274
|
+
* **reach:** the read-only witness parses the AST instead of grepping the source ([e54f22d](https://github.com/event4u-app/agent-config/commit/e54f22d994736c3e6cbb37390bc4b843975fa05e))
|
|
275
|
+
|
|
276
|
+
### Chores
|
|
277
|
+
|
|
278
|
+
* **reports:** regenerate the originality audit, stale on main ([aef5b53](https://github.com/event4u-app/agent-config/commit/aef5b53bbaf918a6b849060063e6c40196ab5dd4))
|
|
279
|
+
* regenerate drifted originality report (pre-push consistency sync) ([66c7f04](https://github.com/event4u-app/agent-config/commit/66c7f04afe9005b91c07457902edcf2ee0cf3a78))
|
|
280
|
+
* **test:** remove two orphans the depythonization left in the linter test ([e800c8e](https://github.com/event4u-app/agent-config/commit/e800c8e8627e26388de29c2b3e38b95620932b64))
|
|
281
|
+
* **regen:** sync skill counts + meta-pack membership after code-intelligence ([0775e14](https://github.com/event4u-app/agent-config/commit/0775e148c1fbd61da13f9ad5646e4f8ef7bfe324))
|
|
282
|
+
* **roadmap:** park native-code-intelligence in later/ (Phases 0-4 done, 5-6 gated) ([f7b3c2f](https://github.com/event4u-app/agent-config/commit/f7b3c2f63339efb81b497e6eeda05a3e843171d7))
|
|
283
|
+
* regenerate docs/proof.md for the +1 rule count ([620614c](https://github.com/event4u-app/agent-config/commit/620614c901b1c7971c8c55d97477c74e5b2f2ba2))
|
|
284
|
+
* regenerate dist projections + counts, archive completed roadmap ([55052c9](https://github.com/event4u-app/agent-config/commit/55052c941be45cea1d4dfc65fc048a0c8f450958))
|
|
285
|
+
|
|
142
286
|
## [9.7.0](https://github.com/event4u-app/agent-config/compare/9.6.0...9.7.0) (2026-07-21)
|
|
143
287
|
|
|
144
288
|
### Features
|
package/README.md
CHANGED
|
@@ -4,17 +4,17 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://github.com/event4u-app/agent-config/actions/workflows/smoke.yml) [](https://github.com/event4u-app/agent-config/actions/workflows/smoke-public-install.yml) [](https://www.npmjs.com/package/@event4u/agent-config) [](https://glama.ai/mcp/servers/event4u-app/agent-config)
|
|
6
6
|
|
|
7
|
-
[](dist/agent-src/skills/) [](dist/agent-src/rules/) [](dist/agent-src/commands/) [](docs/guidelines/) [](dist/agent-src/personas/) [](dist/agent-src/personas/advisors/)
|
|
8
|
-
|
|
9
|
-
> **Choose your experience — developer · founder · content · agency · finance · ops. Add packs. Get a focused command set, not a 500-artefact dump.** Bring your own AI provider.
|
|
10
|
-
|
|
11
7
|
**Try it in 30 seconds** — drop one read-only subagent into any repo and watch it gate "done": `@production-validator check this branch is actually done`. No wizard, no lock-in, nothing else installed — the [30-second wedge ↓](#quickstart) is the whole first step. Start at the proof, not the catalog: **[event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/)**.
|
|
12
8
|
|
|
13
9
|

|
|
14
10
|
|
|
15
11
|
**Every public claim in this README is machine-checked — [verify it yourself](docs/proof.md).** In a market that runs on unbacked headline numbers, this one binds each claim to resolvable evidence or fails its own build.
|
|
16
12
|
|
|
17
|
-
**
|
|
13
|
+
> **Choose your experience — developer · founder · content · agency · finance · ops. Add packs. Get a focused command set, not a 500-artefact dump.** Bring your own AI provider.
|
|
14
|
+
|
|
15
|
+
[](dist/agent-src/skills/) [](dist/agent-src/rules/) [](dist/agent-src/commands/) [](docs/guidelines/) [](dist/agent-src/personas/) [](dist/agent-src/personas/advisors/)
|
|
16
|
+
|
|
17
|
+
**A deep library of skills, commands and governed rules** — plus a capability router that loads the right skill on intent and multi-agent orchestration with consensus review. The whole layer is compiled into **20 host agents** — of 23 detected, 3 being export-only<!-- claim:host-agent-count --> (Claude Code, Cursor, Augment, Cline, Windsurf, Copilot, Gemini CLI, Codex, Continue, Zed, JetBrains, Aider and more) — with **zero runtime daemon**.<!-- claim:no-runtime-daemon --> Six role-shaped entry paths sit on top, so any host becomes a reliable team member — without locking you to a single model or vendor.
|
|
18
18
|
|
|
19
19
|
### What's different
|
|
20
20
|
|
|
@@ -70,6 +70,14 @@ Splitting rules:
|
|
|
70
70
|
|
|
71
71
|
Generate commit messages per [`commit-conventions`](../../rules/commit-conventions.md).
|
|
72
72
|
|
|
73
|
+
### 3b. Secret-leak pre-flight — MANDATORY, not autonomy-lifted
|
|
74
|
+
|
|
75
|
+
Run `./scripts-run src/scripts/check_secret_leak`. A high-confidence hit is a
|
|
76
|
+
safety surface: **STOP even under this autonomous flow** (autonomy never lifts
|
|
77
|
+
it), hand to [`secret-vcs-guard`](../../rules/secret-vcs-guard.md) — show the
|
|
78
|
+
match, ask, offer the alternative. Never auto-commit a secret; never silently
|
|
79
|
+
strip one.
|
|
80
|
+
|
|
73
81
|
### 4. Validate, then commit immediately
|
|
74
82
|
|
|
75
83
|
Before staging anything, run the same `preview-on-error` validator as
|
|
@@ -79,6 +79,23 @@ If there are no uncommitted changes (staged or unstaged), report "Nothing to com
|
|
|
79
79
|
- Are purely stylistic/formatting changes (separate from logic changes)
|
|
80
80
|
- Are unrelated to the main change (e.g. config fix, unrelated typo)
|
|
81
81
|
|
|
82
|
+
### 3b. Secret-leak pre-flight
|
|
83
|
+
|
|
84
|
+
Before planning any commit, scan the changed set for credentials:
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
./scripts-run src/scripts/check_secret_leak
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
If it exits non-zero (a high-confidence secret in the diff or an untracked file),
|
|
91
|
+
**STOP** — do not stage or commit. Hand control to the
|
|
92
|
+
`.augment/rules/secret-vcs-guard.md` rule: show the match, ask via numbered
|
|
93
|
+
options, and offer the tiered alternative (see
|
|
94
|
+
`.augment/skills/secrets-management/SKILL.md`). Only proceed
|
|
95
|
+
once the user resolves it (move to a store, or add an audited
|
|
96
|
+
`# secret-allow` / `.secret-allow` entry for a confirmed false positive). Never
|
|
97
|
+
silently commit a secret; never silently strip one.
|
|
98
|
+
|
|
82
99
|
### 4. Plan the commits
|
|
83
100
|
|
|
84
101
|
For each logical group, determine the commit message following the commit conventions rule
|
|
@@ -53,6 +53,10 @@ Uses `/create-pr:description-only` to generate the PR content, then creates the
|
|
|
53
53
|
- Verify the current branch is NOT the default branch (`main` / `master`).
|
|
54
54
|
- Run `git status` — warn if there are uncommitted changes.
|
|
55
55
|
- Run `git log origin/{default}..HEAD --oneline` to verify there are commits to push.
|
|
56
|
+
- **Secret-leak pre-flight (MANDATORY before push):** run
|
|
57
|
+
`./scripts-run src/scripts/check_secret_leak`. On a high-confidence hit, STOP —
|
|
58
|
+
do not push; hand to `.augment/rules/secret-vcs-guard.md` (show, ask, offer the
|
|
59
|
+
alternative, rotate-first if already in history). Pushing publishes the secret.
|
|
56
60
|
- If the branch has not been pushed yet, ask the user (in their language) whether to push.
|
|
57
61
|
|
|
58
62
|
### 1b. Freshness gate — MANDATORY before opening any PR
|
|
@@ -19,12 +19,58 @@ When an agent loads any skill, rule, command, guideline, or template:
|
|
|
19
19
|
```
|
|
20
20
|
1. Load original from .augment/{type}/{name}
|
|
21
21
|
2. Check agents/overrides/{type}/{name} exists?
|
|
22
|
-
├── YES →
|
|
23
|
-
│ ├──
|
|
24
|
-
│
|
|
22
|
+
├── YES → Is the target a KERNEL or safety-floor rule?
|
|
23
|
+
│ ├── YES → replace → REFUSE. Report it. Keep the original.
|
|
24
|
+
│ │ extend → allowed ONLY with a registered exception (below)
|
|
25
|
+
│ └── NO → Read Mode header
|
|
26
|
+
│ ├── extend → Apply original FIRST, then layer override on top
|
|
27
|
+
│ └── replace → Skip original entirely, use override only
|
|
25
28
|
└── NO → Use original unchanged
|
|
26
29
|
```
|
|
27
30
|
|
|
31
|
+
## The non-overridable class
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
A KERNEL OR SAFETY-FLOOR RULE MAY BE TIGHTENED, NEVER REPLACED OR RELAXED.
|
|
35
|
+
A `replace`-MODE OVERRIDE ON ONE IS REFUSED AND REPORTED — NEVER SILENTLY APPLIED.
|
|
36
|
+
AN `extend` ON ONE REQUIRES A REGISTERED, JUSTIFIED EXCEPTION.
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
The nine kernel rules — `agent-authority`, `ask-when-uncertain`, `commit-policy`,
|
|
40
|
+
`direct-answers`, `language-and-tone`, `no-cheap-questions`,
|
|
41
|
+
`non-destructive-by-default`, `scope-control`, `verify-before-complete` — plus
|
|
42
|
+
anything carrying `tier: safety-floor`, are not replaceable. Dropping an empty
|
|
43
|
+
file at `agents/overrides/rules/non-destructive-by-default.md` must not remove
|
|
44
|
+
the Hard Floor.
|
|
45
|
+
|
|
46
|
+
**Why not a blanket ban.** Legitimate tightening exists, and this package does
|
|
47
|
+
it: its own `verify-before-complete` override adds a mandatory-Playwright clause
|
|
48
|
+
for UI changes. Banning the name would forbid a change that makes the floor
|
|
49
|
+
*stronger*. So direction matters, not identity — and since no linter can prove
|
|
50
|
+
"relaxes" versus "legitimately narrows" from prose, `extend` is the machine-
|
|
51
|
+
checkable proxy for tightening and the registry carries the human judgement.
|
|
52
|
+
|
|
53
|
+
**The exception registry.** An `extend` override on a kernel or safety-floor rule
|
|
54
|
+
requires an entry in `agents/overrides/kernel-exceptions.yml`:
|
|
55
|
+
|
|
56
|
+
```yaml
|
|
57
|
+
exceptions:
|
|
58
|
+
- rule: verify-before-complete
|
|
59
|
+
mode: extend
|
|
60
|
+
justification: "Ships a browser UI; code-only tests cannot prove what renders."
|
|
61
|
+
approved_by: maintainer
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Honest limit — read this before trusting the class.** This is a norm with a
|
|
65
|
+
partial gate, and saying so is the point. The override layer is resolved by the
|
|
66
|
+
*agent reading these instructions*, not by a loader, so an `extend` block that
|
|
67
|
+
says "ignore everything above" is not mechanically detectable — and nothing here
|
|
68
|
+
stops a consumer relaxing a rule through another channel (a persona file,
|
|
69
|
+
host-level config, a direct instruction). What the gate does cover is this
|
|
70
|
+
package's own authoring surface: a `replace`-mode kernel override, or an
|
|
71
|
+
unregistered kernel exception, fails deterministically. Everything else is
|
|
72
|
+
reported, not claimed as enforced.
|
|
73
|
+
|
|
28
74
|
## Directory Mapping
|
|
29
75
|
|
|
30
76
|
```
|
|
@@ -93,7 +139,9 @@ The original is loaded first. The override adds, modifies, or removes specific p
|
|
|
93
139
|
|
|
94
140
|
## Mode: replace
|
|
95
141
|
|
|
96
|
-
The original is completely ignored. The override is the sole source of truth
|
|
142
|
+
The original is completely ignored. The override is the sole source of truth —
|
|
143
|
+
**except for kernel and safety-floor rules, where `replace` is refused outright**
|
|
144
|
+
(see "The non-overridable class" above).
|
|
97
145
|
|
|
98
146
|
**Use when:**
|
|
99
147
|
- The shared skill/rule fundamentally doesn't fit the project
|
|
@@ -101,6 +149,24 @@ The original is completely ignored. The override is the sole source of truth.
|
|
|
101
149
|
|
|
102
150
|
**Best practice:** Must be self-contained and complete. No references to the original.
|
|
103
151
|
|
|
152
|
+
**Note the update cost.** A whole-file replacement freezes that file at the
|
|
153
|
+
version you forked it from: later fixes to the original — including security
|
|
154
|
+
fixes — stop reaching you, silently, because your copy wins on name match
|
|
155
|
+
forever. Prefer `extend`, which keeps the rest of the original in the update
|
|
156
|
+
flow. This is the same silent-drift failure the deploy-tiering discussion names.
|
|
157
|
+
|
|
158
|
+
## Citation obligation
|
|
159
|
+
|
|
160
|
+
Every override carries, directly under its Mode header, one line naming what it
|
|
161
|
+
overrides and why:
|
|
162
|
+
|
|
163
|
+
```markdown
|
|
164
|
+
> Overrides: verify-before-complete §Turn-completion — ships a browser UI; code-only tests cannot prove what renders.
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Without it the layer is usable but not auditable: a reviewer six months later
|
|
168
|
+
cannot tell an intentional narrowing from an accident. No reason, no override.
|
|
169
|
+
|
|
104
170
|
## Agent Behavior
|
|
105
171
|
|
|
106
172
|
Agents **must** check for overrides before applying any shared resource:
|
|
@@ -111,6 +177,10 @@ Agents **must** check for overrides before applying any shared resource:
|
|
|
111
177
|
4. Before reading a guideline → check `agents/overrides/guidelines/{lang}-{name}.md`
|
|
112
178
|
5. Before using a template → check `agents/overrides/templates/{name}.md`
|
|
113
179
|
|
|
180
|
+
**Before honouring an override on a rule, check the non-overridable class
|
|
181
|
+
first.** A `replace` on a kernel or safety-floor rule is refused and reported to
|
|
182
|
+
the user — it is never silently dropped and never silently applied.
|
|
183
|
+
|
|
114
184
|
## When to Create vs. When to Fix
|
|
115
185
|
|
|
116
186
|
| Situation | Action |
|
|
@@ -155,7 +225,7 @@ When a project using this package wants to **optimize** a shared rule or skill:
|
|
|
155
225
|
|
|
156
226
|
### Anti-patterns
|
|
157
227
|
|
|
158
|
-
- Keeping the override after upstream merge →
|
|
228
|
+
- Keeping the override after upstream merge → causes drift
|
|
159
229
|
- Submitting only the condensed version → breaks source-of-truth workflow
|
|
160
230
|
- Submitting project-specific behavior as universal improvement
|
|
161
231
|
- Forgetting to create the PR → improvement stays siloed
|
|
@@ -12,6 +12,8 @@ routes_to:
|
|
|
12
12
|
- "guideline:agent-infra/context-hygiene-mechanics"
|
|
13
13
|
workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
|
|
14
14
|
packs: [meta]
|
|
15
|
+
enforced_by:
|
|
16
|
+
- "hook:context-hygiene"
|
|
15
17
|
---
|
|
16
18
|
|
|
17
19
|
# Context Hygiene
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
4
|
+
description: "Screenshots for docs — anonymize sensitive data before shipping; data-bearing shots are human-gated (published egress); terminal/CLI/IDE screenshots forbidden"
|
|
5
|
+
triggers:
|
|
6
|
+
- keyword: "screenshot"
|
|
7
|
+
- keyword: "screenshots"
|
|
8
|
+
- keyword: "screen capture"
|
|
9
|
+
- keyword: "screen grab"
|
|
10
|
+
- keyword: "admin panel screenshot"
|
|
11
|
+
- keyword: "dashboard screenshot"
|
|
12
|
+
- keyword: "docs site"
|
|
13
|
+
- keyword: "Starlight"
|
|
14
|
+
- phrase: "add a screenshot"
|
|
15
|
+
- phrase: "screenshot for the docs"
|
|
16
|
+
- phrase: "screenshot in the readme"
|
|
17
|
+
- phrase: "embed an image in the docs"
|
|
18
|
+
- phrase: "put a screenshot"
|
|
19
|
+
- phrase: "generate a docs site"
|
|
20
|
+
- phrase: "capture the ui"
|
|
21
|
+
- path_prefix: "docs/media/"
|
|
22
|
+
routes_to:
|
|
23
|
+
- "skill:screenshot-hygiene"
|
|
24
|
+
applies_to_user_types:
|
|
25
|
+
- "all"
|
|
26
|
+
workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
|
|
27
|
+
packs: [meta]
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
# Doc-Screenshot Hygiene
|
|
31
|
+
|
|
32
|
+
Agents may create screenshots for documentation when genuinely useful (a docs
|
|
33
|
+
site, feature docs, a README visual) and embed them. But a screenshot is an
|
|
34
|
+
opaque artifact that can carry **real PII, secrets, or revealing local paths**
|
|
35
|
+
straight into shipped, hosted, committed docs — an irreversible published egress.
|
|
36
|
+
This rule governs the anonymization discipline before any screenshot ships. Full
|
|
37
|
+
workflow: [`screenshot-hygiene`](../skills/screenshot-hygiene/SKILL.md).
|
|
38
|
+
|
|
39
|
+
## The Iron Law
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
A SHIPPED SCREENSHOT WITH UNREDACTED SENSITIVE DATA IS AN
|
|
43
|
+
IRREVERSIBLE PUBLISHED EGRESS. NEVER SHIP ONE.
|
|
44
|
+
ANONYMIZE BEFORE IT SHIPS — REAL NAMES, ADDRESSES, BIRTHDATES, TOKENS,
|
|
45
|
+
SECRETS, REAL EMAILS, IDENTITY-REVEALING LOCAL PATHS.
|
|
46
|
+
DETECTION IS A HELPER, NEVER A CLEARANCE. THE GATE IS HUMAN CONFIRMATION.
|
|
47
|
+
A DATA-BEARING SCREENSHOT EMBED IS GATED PER non-destructive-by-default
|
|
48
|
+
(THIS-TURN CONFIRMATION). TERMINAL / CLI / IDE SCREENSHOTS ARE FORBIDDEN.
|
|
49
|
+
WHEN UNCERTAIN → REDACT OR REFUSE. NEVER SHIP-AND-HOPE.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## The anonymization taxonomy
|
|
53
|
+
|
|
54
|
+
**Always redact / refuse (sensitive):** real person's name, postal address,
|
|
55
|
+
birthdate, phone; passwords, API tokens, secrets, cookies, bearer tokens,
|
|
56
|
+
private keys; real email addresses (anything not `@example.{com,org,net}` / a
|
|
57
|
+
fake-data domain); absolute local paths revealing a real identity
|
|
58
|
+
(`/Users/<realname>/…`); client / customer / project identifiers; internal
|
|
59
|
+
hostnames (`*.internal`); anything GDPR-sensitive; aggregate counts or data
|
|
60
|
+
tells that reveal real users.
|
|
61
|
+
|
|
62
|
+
**Allowed (no redaction):** well-known fake data (Max Mustermann, Musterstraße,
|
|
63
|
+
`@example.com`); the maintainer's OWN public handle shown as a username (e.g.
|
|
64
|
+
a handle in an admin panel — it is already public), and a path rooted at that
|
|
65
|
+
public handle. The maintainer's **real name is never allowed**, even co-located
|
|
66
|
+
with the handle. The safe set is `screenshots.identity_allowlist` (default
|
|
67
|
+
empty → every identity is human-decided).
|
|
68
|
+
|
|
69
|
+
## Risk tiers — symmetric friction
|
|
70
|
+
|
|
71
|
+
- **Illustrative / no data** (architecture diagrams, logos, icons, wireframes,
|
|
72
|
+
placeholder-only UI): embed with a one-line justification. Low friction.
|
|
73
|
+
- **Data-bearing** (dashboards, admin panels, forms/lists with content, anything
|
|
74
|
+
showing real-looking data): run the hygiene workflow, then **this-turn human
|
|
75
|
+
confirmation before embed** (per [`non-destructive-by-default`](non-destructive-by-default.md)).
|
|
76
|
+
- **Terminal / CLI / IDE output**: **forbidden** as screenshots (highest leak
|
|
77
|
+
vector — absolute paths, env tokens). Use a text code block with text
|
|
78
|
+
redaction. Set `screenshots.forbid_terminal_capture` (default `true`).
|
|
79
|
+
|
|
80
|
+
## When it fires — and when NOT
|
|
81
|
+
|
|
82
|
+
**Fires** when creating/embedding a screenshot into documentation (docs site,
|
|
83
|
+
README, feature docs) or when a screenshot lands under `docs/media/`.
|
|
84
|
+
|
|
85
|
+
**Does NOT fire** on: image *generation* (see `media-governance-routing`,
|
|
86
|
+
`image-likeness-and-rights`); a user-supplied screenshot used only as a design
|
|
87
|
+
spec to compare against (see `design-fidelity`, `cross-source-consistency`);
|
|
88
|
+
non-doc surfaces.
|
|
89
|
+
|
|
90
|
+
## See also
|
|
91
|
+
|
|
92
|
+
- [`screenshot-hygiene`](../skills/screenshot-hygiene/SKILL.md) — the decide → capture → detect → redact → audit → embed workflow + the human-gate checklist.
|
|
93
|
+
- [`non-destructive-by-default`](non-destructive-by-default.md) — the published-egress Hard Floor a data-bearing embed routes into.
|
|
94
|
+
- [`domain-safety-pii`](domain-safety-pii.md) — the sibling PII rule for text surfaces (drafts / logs / exports); screenshots are the visual surface.
|
|
95
|
+
- [`lethal-trifecta-guard`](lethal-trifecta-guard.md) — a screenshot is the private-data + egress legs; the human gate is the egress control.
|
|
96
|
+
- [`readme-writing`](../skills/readme-writing/SKILL.md) — flags unrequested data-bearing screenshots.
|
|
97
|
+
- [`image-analyser`](../skills/image-analyser/SKILL.md), [`image-editing`](../skills/image-editing/SKILL.md) — the OCR-detect / region-redact helpers.
|
|
@@ -164,3 +164,4 @@ PreToolUse hook — see `agents/settings/contexts/legal-privilege-probe.md`.
|
|
|
164
164
|
- `skill:logging-monitoring`, `skill:secrets-management` — technical surfaces.
|
|
165
165
|
- `domain-safety-disclaimer` — companion advisory rule.
|
|
166
166
|
- `domain-safety-retention` — companion retention rule.
|
|
167
|
+
- `doc-screenshot-hygiene` — the visual sibling: PII inside a **screenshot** shipped into docs (this rule covers text drafts / logs / exports, not images).
|
|
@@ -23,15 +23,20 @@ packs: [meta]
|
|
|
23
23
|
Some repos commit a pre-built code-intelligence index — a `graph.json`-shaped
|
|
24
24
|
artifact or a SCIP index (`index.scip`, `*.scip`). When one exists, it already
|
|
25
25
|
answers "who calls X", "where is Y used", "what does this import" far more
|
|
26
|
-
precisely than a fresh `grep`. This suite is an **orchestrator,
|
|
27
|
-
|
|
26
|
+
precisely than a fresh `grep`. This suite is an **orchestrator first, owner
|
|
27
|
+
where it wins** (ADR-124): query a consumer-shipped index when it is present
|
|
28
|
+
and fresh; where none is shipped or ours is measurably better, the suite's own
|
|
29
|
+
native code-graph engine (default-off, benchmark-gated) covers the gap. Either
|
|
30
|
+
way — query first, grep as fallback, and name which source answered.
|
|
28
31
|
|
|
29
32
|
## The rule
|
|
30
33
|
|
|
31
34
|
```
|
|
32
35
|
REPO SHIPS A CODE-GRAPH INDEX (graph.json-shaped OR a SCIP index)
|
|
33
36
|
→ QUERY IT FIRST FOR CODEBASE-STRUCTURE QUESTIONS. GREP IS THE FALLBACK,
|
|
34
|
-
NOT THE FIRST MOVE. NEVER REBUILD
|
|
37
|
+
NOT THE FIRST MOVE. NEVER REBUILD A FRESH CONSUMER-SHIPPED INDEX.
|
|
38
|
+
NO FRESH INDEX SHIPPED → THE NATIVE ENGINE MAY BUILD ONE (ADR-124); STILL
|
|
39
|
+
GREP-FALLBACK FOR WHAT THE GRAPH DOES NOT ANSWER, AND SAY WHICH SOURCE ANSWERED.
|
|
35
40
|
```
|
|
36
41
|
|
|
37
42
|
## When it fires
|
|
@@ -58,6 +63,11 @@ AND the repo contains a detectable index:
|
|
|
58
63
|
|
|
59
64
|
## See also
|
|
60
65
|
|
|
66
|
+
- [`code-intelligence`](../skills/code-intelligence/SKILL.md) — the executable
|
|
67
|
+
routing skill: `code_graph detect|query|affected|path` over the native engine
|
|
68
|
+
or a consumer-shipped index, grep as the stated fallback. On hook-capable
|
|
69
|
+
hosts the PreToolUse `code-graph` nudge surfaces this once per session; on
|
|
70
|
+
instruction-file hosts this rule is the surface.
|
|
61
71
|
- [`discovery_graph`](../scripts/discovery_graph.ts) — this suite's OWN artefact
|
|
62
72
|
relation-graph (`affected`/`explain`); the external code-graph is the
|
|
63
73
|
*source-code* analogue this rule defers to for code questions.
|
|
@@ -9,6 +9,8 @@ validator_ignore:
|
|
|
9
9
|
reason: "Rule scopes the .md-English mandate to the authoring tree."
|
|
10
10
|
workspaces: [agent-config-maintainer, construction, engineering, finance, founder, gtm, legal-review-prep, ops, product, small-business]
|
|
11
11
|
packs: [meta]
|
|
12
|
+
enforced_by:
|
|
13
|
+
- "validator:src/scripts/check_md_language.ts"
|
|
12
14
|
---
|
|
13
15
|
|
|
14
16
|
# Language and Tone
|
|
@@ -14,6 +14,8 @@ triggers:
|
|
|
14
14
|
- phrase: "read the file and post"
|
|
15
15
|
workspaces: [engineering]
|
|
16
16
|
packs: [engineering-base]
|
|
17
|
+
enforced_by:
|
|
18
|
+
- "validator:src/scripts/lint_skill_frontmatter_safety.ts"
|
|
17
19
|
---
|
|
18
20
|
|
|
19
21
|
# Lethal-Trifecta Guard
|
|
@@ -84,3 +86,4 @@ backstop.
|
|
|
84
86
|
- [`non-destructive-by-default`](non-destructive-by-default.md) — the human-in-the-loop egress floor.
|
|
85
87
|
- [`threat-modeling`](../skills/threat-modeling/SKILL.md) — abuse-case enumeration.
|
|
86
88
|
- [`domain-safety-pii`](domain-safety-pii.md) § Surface 4 — legal privilege markers extend this egress gate (legal pack); a privileged document on an outbound path is blocked pending explicit confirmation.
|
|
89
|
+
- [`doc-screenshot-hygiene`](doc-screenshot-hygiene.md) — a screenshot embedded into shipped docs is private-data + egress on one path; the human gate on a data-bearing embed is the egress control.
|
|
@@ -28,6 +28,8 @@ validator_ignore:
|
|
|
28
28
|
reason: "Rule contrasts project-local placement with the .agent-src.uncondensed/rules/ alternative — mentioning the path is the argument."
|
|
29
29
|
workspaces: [agent-config-maintainer, engineering, gtm]
|
|
30
30
|
packs: [ai-image, ai-video]
|
|
31
|
+
enforced_by:
|
|
32
|
+
- "validator:src/scripts/lint_media_policy_linkage.ts"
|
|
31
33
|
---
|
|
32
34
|
|
|
33
35
|
# Media Governance Routing
|
|
@@ -19,6 +19,9 @@ validator_ignore:
|
|
|
19
19
|
reason: "Rule contrasts the authoring tree with transient layers."
|
|
20
20
|
workspaces: [agent-config-maintainer]
|
|
21
21
|
packs: [meta]
|
|
22
|
+
enforced_by:
|
|
23
|
+
- "validator:src/scripts/check_no_roadmap_refs.ts"
|
|
24
|
+
- "validator:src/scripts/check_council_references.ts"
|
|
22
25
|
---
|
|
23
26
|
|
|
24
27
|
# No Transient References from Stable Artifacts
|