@event4u/agent-config 9.6.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 +207 -942
- package/README.md +21 -21
- package/dist/agent-src/README.md +2 -2
- 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/downstream-changes.md +31 -1
- 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/agent-docs-writing/SKILL.md +34 -16
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +9 -9
- 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/doc-impact.yml +101 -0
- 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 +164 -47
- 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/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/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 +64 -38
- package/docs/architecture.md +2 -2
- package/docs/archive/CHANGELOG-6.0.0-overview.md +953 -0
- package/docs/benchmark.md +170 -9
- 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-122-adversarial-verification-council.md +30 -0
- package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +31 -0
- 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/spawn-site-policy.md +72 -0
- package/docs/threat-model.md +2 -1
- package/package.json +6 -3
- package/src/agent-src/README.md +2 -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/adversarial_bench_score.ts +106 -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/spawn_env.ts +24 -4
- 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/bench_adversarial_council.ts +292 -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_no_new_legacy_path.ts +2 -0
- 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/check_source_pointer_freshness.ts +165 -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/hooks/dispatch_hook.ts +5 -1
- package/src/scripts/iron_law_sha.ts +3 -12
- package/src/scripts/lint_override_kernel_guard.ts +219 -0
- package/src/scripts/lint_readme_serial_comma.ts +169 -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
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
|
|
|
@@ -27,13 +27,13 @@ It is both deep **and** disciplined — and honest about what it deliberately is
|
|
|
27
27
|
|
|
28
28
|
**What it deliberately is *not*** — a content + governance layer, not a runtime: **no background daemon, no separate state database, no self-rewriting memory, no auto-build pipeline.** The host agent runs the loop; every learned change is human-reviewed; the same layer stays portable across tools. Capability without a process to babysit.
|
|
29
29
|
|
|
30
|
-
> **Where this comes from (honest provenance).** The skills, rules
|
|
30
|
+
> **Where this comes from (honest provenance).** The skills, rules and personas
|
|
31
31
|
> are distilled from real production work on TypeScript and PHP codebases. The
|
|
32
32
|
> governance mechanics are stack-agnostic, but the domain heuristics are richest
|
|
33
33
|
> where they were forged — treat coverage on other stacks as promising, not
|
|
34
|
-
> proven
|
|
34
|
+
> proven and tell us where it falls short.
|
|
35
35
|
|
|
36
|
-
See exactly [what works on which host](docs/capability-matrix.md)
|
|
36
|
+
See exactly [what works on which host](docs/capability-matrix.md) or jump to [things you can do in a minute](docs/cookbook.md).
|
|
37
37
|
|
|
38
38
|
### Pick your profile — six entry paths
|
|
39
39
|
|
|
@@ -100,14 +100,14 @@ is platform operation, not a user-work flow.)
|
|
|
100
100
|
|
|
101
101
|
> **Creative Pack — cinematic AI video.** script → character-locked image → motion+audio prompt → provider render → stitched clip, with `AIV_DRYRUN=true` as the cost-safety default. A first-class capability inside the **content / creator** experience — no longer the package's headline. See [`/video:from-script`](.augment/commands/video/from-script.md).
|
|
102
102
|
|
|
103
|
-
> **Legal Pack — not legal advice.** The EU/DE legal pack (contract/NDA/DPA review, triage) is a **research-and-drafting aid only** — it does not provide legal advice, does not replace a qualified lawyer
|
|
103
|
+
> **Legal Pack — not legal advice.** The EU/DE legal pack (contract/NDA/DPA review, triage) is a **research-and-drafting aid only** — it does not provide legal advice, does not replace a qualified lawyer and must not be relied on for any concrete matter. It produces general information and general templates, never individual-case examination. Read [`LEGAL_NOTICE.md`](LEGAL_NOTICE.md) before use.
|
|
104
104
|
|
|
105
105
|
> Full catalog — every skill, rule, command, guideline: [`docs/catalog.md`](docs/catalog.md). The headline is the **experience** (profile + packs) **and** the depth behind it.
|
|
106
106
|
|
|
107
107
|
## Use it in your project
|
|
108
108
|
|
|
109
109
|
Run from a consumer repo — bootstrap via `npx`, the agent picks up
|
|
110
|
-
your stack
|
|
110
|
+
your stack and you ship work end-to-end. New install? Start with the
|
|
111
111
|
[Quickstart](#quickstart). Already installed? [Supported tools](#supported-tools)
|
|
112
112
|
shows the wired AIs; [`docs/featured-commands.md`](docs/featured-commands.md)
|
|
113
113
|
lists the end-to-end workflows (`/implement-ticket`, `/work`,
|
|
@@ -119,8 +119,8 @@ lists the end-to-end workflows (`/implement-ticket`, `/work`,
|
|
|
119
119
|
|
|
120
120
|
Don't take the claims on trust — **verify them.** [`docs/proof.md`](docs/proof.md)
|
|
121
121
|
is generated from source: a claim→evidence table (every public claim binds to a
|
|
122
|
-
resolvable pointer
|
|
123
|
-
the package changed nothing
|
|
122
|
+
resolvable pointer or CI fails), honest-null benchmarks *including the runs where
|
|
123
|
+
the package changed nothing* and a "verify it yourself" block you run on a fresh
|
|
124
124
|
checkout. The proof page fails CI if it drifts from its sources — reproducibility
|
|
125
125
|
is the proof. Browse it on the deployed docs site — the proof page is the primary entry:
|
|
126
126
|
[event4u-app.github.io/agent-config/proof/](https://event4u-app.github.io/agent-config/proof/).
|
|
@@ -132,7 +132,7 @@ find-replace re-skin PRs here runs on your catalog too —
|
|
|
132
132
|
[`docs/anti-reskin-gate.md`](docs/anti-reskin-gate.md).
|
|
133
133
|
|
|
134
134
|
Audit-disciplined by construction — every memory consult, decision
|
|
135
|
-
key
|
|
135
|
+
key and hook concern lands in `agents/runtime/state/` so you can replay it.
|
|
136
136
|
[Core principles](#core-principles) names the four invariants;
|
|
137
137
|
[What `agent-config` is — and what it isn't](#what-agent-config-is--and-what-it-isnt)
|
|
138
138
|
draws the scope boundary.
|
|
@@ -207,7 +207,7 @@ Migrating from a v1.x install? `npx @event4u/agent-config migrate` — full note
|
|
|
207
207
|
|
|
208
208
|
A **content layer** — skills, rules, commands, guidelines, personas — distributed via npm and projected into every supported AI tool's native config format. It follows the [Agent Skills open standard](https://agentskills.io).
|
|
209
209
|
|
|
210
|
-
It is **not** an agent runtime. The agent loop, the LLM dispatcher
|
|
210
|
+
It is **not** an agent runtime. The agent loop, the LLM dispatcher and tool orchestration stay with the host tool (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI, Copilot). Think of it as a playbook and style guide for those tools — not a replacement.
|
|
211
211
|
|
|
212
212
|
| In scope | Out of scope |
|
|
213
213
|
|---|---|
|
|
@@ -254,7 +254,7 @@ refine → memory → analyze → plan → implement → test → verify → rep
|
|
|
254
254
|
- **Reviews** the diff through four judges (bugs, security, tests, code quality).
|
|
255
255
|
- **Reports** changes, verdicts, follow-ups — then stops. `/commit` and `/pr:create` are suggestions, never auto-run.
|
|
256
256
|
|
|
257
|
-
Any ambiguity halts the flow with numbered options — never a silent guess. Persona comes from `.agent-settings.yml` (`roles.active_role`): `senior-engineer` (default), `qa
|
|
257
|
+
Any ambiguity halts the flow with numbered options — never a silent guess. Persona comes from `.agent-settings.yml` (`roles.active_role`): `senior-engineer` (default), `qa` or `advisory` (plan-only).
|
|
258
258
|
|
|
259
259
|
→ [Command reference](dist/agent-src/commands/implement-ticket.md) · [Flow contract](docs/contracts/implement-ticket-flow.md)
|
|
260
260
|
|
|
@@ -316,7 +316,7 @@ Create the user file interactively: `/agents user init` ([schema](docs/contracts
|
|
|
316
316
|
|
|
317
317
|
### Self-hosted MCP on Cloudflare — zero local install
|
|
318
318
|
|
|
319
|
-
Skills, commands, rules
|
|
319
|
+
Skills, commands, rules and guidelines can be served as an MCP endpoint from your own Cloudflare Worker — any MCP client (Claude Desktop, Claude Code, Cursor, Zed, Continue, hosted agents) talks to it over HTTP. Two auth modes: `public` (default, OSS read-only deploys) and `bearer-auth` (operator opt-in, `MCP-Token` Wrangler secret).
|
|
320
320
|
|
|
321
321
|
```bash
|
|
322
322
|
task mcp:cloud:login # one-time, opens browser
|
|
@@ -340,13 +340,13 @@ task mcp:cloud:secret-put # opt in to bearer-auth (recommended for private de
|
|
|
340
340
|
|
|
341
341
|
The Hard Floor on organization-mode features (SSO, central policy, OAuth connectors, team-context) is preserved by design — they stay cancelled until a real first customer + funded security audit lifts them. The small-team recipe is the supported path in the meantime.
|
|
342
342
|
|
|
343
|
-
> *The 9.3/10 feedback round (2026-05-25) re-asked for OAuth knowledge connectors, IAM / org governance
|
|
343
|
+
> *The 9.3/10 feedback round (2026-05-25) re-asked for OAuth knowledge connectors, IAM / org governance and organization-shared memory. Each is a stable cancellation row in [`team-deployment-posture`](docs/deploy/team-deployment-posture.md) under the same three release gates — recruited team customer · funded audit · maintainer ADR.*
|
|
344
344
|
|
|
345
345
|
---
|
|
346
346
|
|
|
347
347
|
## Harness expectations
|
|
348
348
|
|
|
349
|
-
Three classes of install/runtime behaviour look like package bugs but are host-harness behaviour the package cannot control — sibling-plugin namespaces (`codex:*`, `cc-gemini-plugin:*`), deferred tools surfaced via `ToolSearch
|
|
349
|
+
Three classes of install/runtime behaviour look like package bugs but are host-harness behaviour the package cannot control — sibling-plugin namespaces (`codex:*`, `cc-gemini-plugin:*`), deferred tools surfaced via `ToolSearch` and cross-scope skill drift (real bug, fixed in the distribution-channels track). Diagnostics + the package's response: [`docs/contracts/harness-expectations.md`](docs/contracts/harness-expectations.md). First step when a skill appears twice: `task probe:skills`.
|
|
350
350
|
|
|
351
351
|
## Supported tools
|
|
352
352
|
|
|
@@ -477,7 +477,7 @@ Browse content: [all commands](dist/agent-src/commands/) · [skills catalog](doc
|
|
|
477
477
|
## Troubleshooting
|
|
478
478
|
|
|
479
479
|
First stop for any install problem: `agent-config doctor` — it flags a
|
|
480
|
-
missing-from-`PATH` binary, binary↔plugin version drift, stale orphans
|
|
480
|
+
missing-from-`PATH` binary, binary↔plugin version drift, stale orphans and
|
|
481
481
|
manifest issues, each with a one-line fix hint.
|
|
482
482
|
|
|
483
483
|
### A new command / skill is missing in Claude Code after an upgrade
|
|
@@ -486,7 +486,7 @@ Under the single-surface model, `agent-config upgrade` refreshes the
|
|
|
486
486
|
`~/.claude/` file projection — that IS the content surface, so a fresh
|
|
487
487
|
session picks the new commands up directly. If commands are still missing,
|
|
488
488
|
the usual cause is a leftover **marketplace plugin**: it is a git-SHA
|
|
489
|
-
snapshot that never moves with the npm upgrade
|
|
489
|
+
snapshot that never moves with the npm upgrade and it shadows nothing —
|
|
490
490
|
it just lists everything twice while lagging behind. Remove it:
|
|
491
491
|
|
|
492
492
|
```bash
|
|
@@ -521,7 +521,7 @@ Only the initial `npm install -g` hard-aborts an upgrade. Every later step
|
|
|
521
521
|
(global re-deploy with hook registration, settings sync, wrapper + git-hook
|
|
522
522
|
refresh) runs independently — a single failed step is reported in the
|
|
523
523
|
end-of-run summary instead of silently skipping the rest. Re-run
|
|
524
|
-
`agent-config upgrade` to converge
|
|
524
|
+
`agent-config upgrade` to converge and use `agent-config doctor` to name
|
|
525
525
|
anything left in a mixed state.
|
|
526
526
|
|
|
527
527
|
### `agent-config: command not found` / hooks stopped firing
|
package/dist/agent-src/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Agent Infrastructure
|
|
2
2
|
|
|
3
3
|
> **⚠️ DO NOT edit files in `dist/agent-src/` or `.augment/` directly.**
|
|
4
|
-
> The source of truth is
|
|
5
|
-
> See
|
|
4
|
+
> The source of truth is `src/` (`src/skills/`, `src/rules/`, `src/agent-src/`). Edit there, then run `task sync`.
|
|
5
|
+
> See the `source-of-truth` rule and the `/condense` command for the full workflow.
|
|
6
6
|
|
|
7
7
|
This directory contains the shared agent infrastructure: skills, commands, rules, guidelines,
|
|
8
8
|
templates, and contexts that power the AI coding assistant across all projects.
|
|
@@ -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).
|
|
@@ -45,7 +45,36 @@ After editing any file, search for **all** of these:
|
|
|
45
45
|
| **Config / bindings** | Search service providers, config files | Update class references in DI bindings |
|
|
46
46
|
| **API schemas / OpenAPI** | Check controller attributes | Update if response structure changed |
|
|
47
47
|
| **Routes** | Search `routes/` for controller references | Update after controller rename/move |
|
|
48
|
-
| **Documentation** | Search `agents/`, `docs
|
|
48
|
+
| **Documentation** | Search `agents/`, `docs/`, `README`, examples for references | Update the doc that **describes** the changed surface — see Doc-Impact below |
|
|
49
|
+
|
|
50
|
+
## Doc-Impact — docs follow code (same change)
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
A CHANGE TO A PUBLIC SURFACE IS INCOMPLETE UNTIL THE DOC THAT
|
|
54
|
+
DESCRIBES IT IS UPDATED IN THE SAME CHANGE. A DOC MAKING A CLAIM
|
|
55
|
+
THE CODE NOW CONTRADICTS IS A BROKEN CHANGE, NOT A STYLE NIT.
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Public surfaces** whose change triggers a doc update: HTTP route /
|
|
59
|
+
endpoint · exported function / class signature · CLI command or flag ·
|
|
60
|
+
config / settings key · env var · DB schema or migration · event
|
|
61
|
+
payload. Update the doc that describes it — README, API / OpenAPI docs,
|
|
62
|
+
AGENTS.md, code examples, CHANGELOG — in the same commit.
|
|
63
|
+
|
|
64
|
+
**Drift = a falsifiable-claim contradiction**, not incompleteness. Fire
|
|
65
|
+
when a reader following the doc would be misled: an endpoint that no
|
|
66
|
+
longer exists, a wrong return type, a renamed key, a broken example. Do
|
|
67
|
+
**not** fire on "the doc could be more detailed" — completeness is a
|
|
68
|
+
quality nit, not drift.
|
|
69
|
+
|
|
70
|
+
**Escape hatch** (no false-positive fatigue): refactor-only / no
|
|
71
|
+
public-surface change → no doc obligation. If a surface changed but
|
|
72
|
+
genuinely needs no doc edit, state the one-line reason instead of
|
|
73
|
+
editing a doc to satisfy the rule.
|
|
74
|
+
|
|
75
|
+
Detection + the framework-agnostic surface→doc map (Laravel / Symfony /
|
|
76
|
+
Next.js / Python / Go) live in [`agent-docs-writing`](../skills/agent-docs-writing/SKILL.md)
|
|
77
|
+
§ Doc-Impact — run it after every code change.
|
|
49
78
|
|
|
50
79
|
## Breaking changes
|
|
51
80
|
|
|
@@ -78,3 +107,4 @@ After completing all downstream changes:
|
|
|
78
107
|
3. **No broken types / signatures** — project's type-checker (PHPStan / Psalm, TypeScript, mypy / pyright, `go vet`, `cargo check`).
|
|
79
108
|
4. **No stale references** — grep for the old name / namespace / import path to confirm zero results.
|
|
80
109
|
5. **No own-orphans** — the same sweep applied to the new diff: identifiers whose last reference disappeared in a file this diff touched are removed in the same diff (see [`minimal-safe-diff § Own-orphan cleanup`](minimal-safe-diff.md#own-orphan-cleanup)); pre-existing dead code stays.
|
|
110
|
+
6. **No doc drift** — a public surface changed this diff has its describing doc updated (or the one-line no-doc-needed reason stated), per Doc-Impact above.
|
|
@@ -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
|
|
@@ -7,6 +7,8 @@ load_context:
|
|
|
7
7
|
- ../contexts/authority/destructive-mechanics.md
|
|
8
8
|
workspaces: [engineering]
|
|
9
9
|
packs: [engineering-base]
|
|
10
|
+
enforced_by:
|
|
11
|
+
- "none"
|
|
10
12
|
---
|
|
11
13
|
|
|
12
14
|
# Non-Destructive by Default
|
|
@@ -57,3 +59,21 @@ Applies on every surface — web, Skills API, any cloud agent. No "cloud overrid
|
|
|
57
59
|
## See also
|
|
58
60
|
|
|
59
61
|
[`autonomous-execution`](autonomous-execution.md) · [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`user-interaction`](user-interaction.md).
|
|
62
|
+
|
|
63
|
+
## Enforcement — stated honestly (`enforced_by: none`)
|
|
64
|
+
|
|
65
|
+
This floor has **no mechanical backstop**, and pretending otherwise would be the
|
|
66
|
+
failure it exists to prevent. No script can enforce "ask before you deploy" — the
|
|
67
|
+
obligation is to pause and surface, and the only thing that observes it is the
|
|
68
|
+
human in the loop. Adjacent hooks (`block-no-verify`) guard hook-bypass, not
|
|
69
|
+
destructive intent; claiming them here would inflate coverage, so they are not
|
|
70
|
+
claimed.
|
|
71
|
+
|
|
72
|
+
So this rule is load-bearing **and** unenforced. It is carried by the model
|
|
73
|
+
honouring it — which is why it is a kernel rule, why it is short, and why it is
|
|
74
|
+
counted as uncovered in the enforcement-coverage report rather than excluded
|
|
75
|
+
from it.
|
|
76
|
+
|
|
77
|
+
## See also
|
|
78
|
+
|
|
79
|
+
[`autonomous-execution`](autonomous-execution.md) · [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`user-interaction`](user-interaction.md).
|