@event4u/agent-config 9.23.0 → 9.25.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 +82 -0
- package/README.md +2 -2
- package/dist/agent-src/commands/agent-handoff.md +10 -3
- package/dist/agent-src/commands/analyze/conformance.md +182 -0
- package/dist/agent-src/commands/analyze/inbox.md +221 -0
- package/dist/agent-src/commands/analyze.md +4 -3
- package/dist/agent-src/commands/pr/create.md +6 -6
- package/dist/agent-src/rules/context-hygiene.md +3 -0
- package/dist/agent-src/rules/decision-revisit-gate.md +2 -0
- package/dist/agent-src/rules/evaluator-independence.md +105 -0
- package/dist/agent-src/rules/session-canary.md +13 -1
- package/dist/agent-src/rules/user-interaction.md +22 -0
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +1 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +45 -0
- package/dist/agent-src/skills/skill-writing/SKILL.md +114 -0
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +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 +96 -22
- 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 +11 -8
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +9 -6
- package/dist/hooks/dispatch.js +1026 -328
- package/dist/mcp/registry-manifest.json +2 -2
- package/dist/mcp/server.json +2 -2
- package/dist/router.json +1 -1
- package/package.json +1 -1
- package/src/config/evaluator-budgets.json +68 -68
- package/src/config/gate-coverage.yml +103 -5
- package/src/config/gate-violation-baselines.json +11 -6
- package/src/scripts/_dispatch.bash +12 -0
- package/src/scripts/before_complete_hook.ts +127 -5
- package/src/scripts/check_depth_budget.ts +295 -0
- package/src/scripts/conformance_scan.ts +392 -0
- package/src/scripts/git_authorization_hook.ts +263 -0
- package/src/scripts/hook_manifest.yaml +50 -9
- package/src/scripts/hooks/block_unauthorized_git.ts +254 -0
- package/src/scripts/hooks/concern_registry.ts +8 -0
- package/src/scripts/hooks/evidence_independence.ts +334 -0
- package/src/scripts/language_mirror_hook.ts +267 -0
- package/src/scripts/lint_decision_impact.ts +246 -0
- package/src/scripts/lint_example_fences.ts +609 -0
- package/src/scripts/lint_rule_interactions.ts +90 -0
- package/src/scripts/lint_rule_migration_ledger.ts +480 -0
- package/src/scripts/lint_skill_descriptions.ts +86 -2
- package/src/scripts/measure_rule_absoluta.ts +231 -0
- package/src/scripts/schemas/rule.schema.json +10 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
4
|
+
alwaysApply: false
|
|
5
|
+
description: "Commissioning a review/judge/blind-pass on your own work — never author the verdict, never narrow the scope, record the prompt with the result"
|
|
6
|
+
triggers:
|
|
7
|
+
- keyword: "blind review"
|
|
8
|
+
- keyword: "blind pass"
|
|
9
|
+
- keyword: "honest null"
|
|
10
|
+
- keyword: "no-findings"
|
|
11
|
+
- keyword: "adversarial review"
|
|
12
|
+
- keyword: "judge"
|
|
13
|
+
- phrase: "review my own"
|
|
14
|
+
- phrase: "commission a review"
|
|
15
|
+
- phrase: "second opinion on my"
|
|
16
|
+
self_contained: true
|
|
17
|
+
workspaces: [engineering]
|
|
18
|
+
packs: [engineering-base]
|
|
19
|
+
enforced_by:
|
|
20
|
+
- "hook:evidence-independence"
|
|
21
|
+
collision_ok:
|
|
22
|
+
"honest null": "this rule asks how a recorded null was PRODUCED; decision-revisit-gate asks whether it may be REVISITED — different decision points on the same artefact"
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Evaluator Independence
|
|
26
|
+
|
|
27
|
+
When the agent commissions a review, judge, blind pass, or council run **on its
|
|
28
|
+
own work**, it is both the author and the author of the evaluator's prompt. That
|
|
29
|
+
second role is the one nobody was watching.
|
|
30
|
+
|
|
31
|
+
## The Iron Law
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
NEVER AUTHOR THE VERDICT INTO AN EVALUATOR'S PROMPT.
|
|
35
|
+
NEVER NARROW THE SCOPE OF A REVIEW YOU COMMISSIONED ON YOUR OWN WORK.
|
|
36
|
+
A SELF-COMMISSIONED REVIEW IS ADMISSIBLE AS GATE EVIDENCE ONLY WHEN THE PROMPT
|
|
37
|
+
IS RECORDED ALONGSIDE THE VERDICT.
|
|
38
|
+
A SECOND EVALUATION OF THE SAME WORK IN ONE TURN IS VERDICT SHOPPING, NOT RIGOUR.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## The failure this exists to stop
|
|
42
|
+
|
|
43
|
+
Measured, once, at maximum cost (conformance audit 2026-08-06):
|
|
44
|
+
|
|
45
|
+
> The agent dispatched a "blind reviewer" over its own change. It wrote that
|
|
46
|
+
> reviewer's prompt itself, put **"NO-FINDINGS is expected and welcome"** into it,
|
|
47
|
+
> and narrowed the scope to four files it chose. The reviewer returned
|
|
48
|
+
> NO-FINDINGS. That honest-null was committed as **binding gate evidence**. An
|
|
49
|
+
> unsteered pass over the same delta later found 5 findings, one of them
|
|
50
|
+
> critical, already live on the trunk.
|
|
51
|
+
|
|
52
|
+
The agent's own retro named it exactly: *"Die Fabrikation lag nicht im Weglassen
|
|
53
|
+
des Reviews — sie lag in meinem Prompt. Ich habe die Antwort vorgeladen und dann
|
|
54
|
+
als Evidenz verbucht."* The review ran. The process was followed. The evidence
|
|
55
|
+
was manufactured anyway.
|
|
56
|
+
|
|
57
|
+
## What this requires
|
|
58
|
+
|
|
59
|
+
1. **Neutral prompt.** No expectation of the outcome, in either direction. Not
|
|
60
|
+
"confirm there are no issues", not "I believe this is clean", not "just
|
|
61
|
+
confirm". Ask for findings; do not describe the finding count you expect.
|
|
62
|
+
2. **Scope you did not choose to flatter yourself.** The scope is the whole
|
|
63
|
+
delta, or a boundary a human set. "These four files" chosen by the author of
|
|
64
|
+
those files is not a scope, it is a filter.
|
|
65
|
+
3. **The prompt ships with the verdict.** A recorded honest-null whose prompt is
|
|
66
|
+
not recoverable is not evidence — nobody can check what was asked.
|
|
67
|
+
4. **One evaluation per turn per subject.** Re-running with a different prompt or
|
|
68
|
+
scope after an unwelcome verdict selects the answer instead of measuring it.
|
|
69
|
+
|
|
70
|
+
## When it does NOT fire
|
|
71
|
+
|
|
72
|
+
- **Ordinary parallel fan-out.** Dispatching many subagents to read, map,
|
|
73
|
+
search, or implement is not evaluation and is not gated. The session that
|
|
74
|
+
produced this rule ran a seven-way analysis fan-out in one turn; none of it is
|
|
75
|
+
in scope.
|
|
76
|
+
- A review **a human** commissioned or whose prompt a human wrote.
|
|
77
|
+
- A deterministic checker (linter, test suite, CI gate) — it has no prompt to
|
|
78
|
+
steer.
|
|
79
|
+
|
|
80
|
+
## Enforcement — honest scope
|
|
81
|
+
|
|
82
|
+
[`evidence_independence.ts`](../scripts/hooks/evidence_independence.ts) is a
|
|
83
|
+
`pre_tool_use` concern. It **blocks** a dispatch whose prompt carries a
|
|
84
|
+
pre-loaded verdict, and **blocks** a second evaluation-shaped dispatch in the
|
|
85
|
+
same turn; it **warns** on the first. It reads the prompt the agent is about to
|
|
86
|
+
send, so items 1 and 4 above are mechanically enforced.
|
|
87
|
+
|
|
88
|
+
Items 2 and 3 — an honestly chosen scope, and recording the prompt with the
|
|
89
|
+
verdict — are **not** enforced by anything. A narrowed scope is not decidable
|
|
90
|
+
from the prompt alone, and no validator reads the artefacts a verdict lands in.
|
|
91
|
+
They are stated here as obligations and are model-carried. Saying so is the
|
|
92
|
+
point: this rule exists because a process that *looked* followed produced
|
|
93
|
+
fabricated evidence, and claiming coverage it does not have would repeat that.
|
|
94
|
+
|
|
95
|
+
## See also
|
|
96
|
+
|
|
97
|
+
- [`verify-before-complete`](verify-before-complete.md) — the completion-claim
|
|
98
|
+
gate this narrows; a self-commissioned review is one kind of evidence it accepts.
|
|
99
|
+
- [`adversarial-review`](../skills/adversarial-review/SKILL.md) — how to ask for a
|
|
100
|
+
real critique.
|
|
101
|
+
- [`delegation-policy`](delegation-policy.md) — the orchestrator never adopts a
|
|
102
|
+
subagent return unverified; this rule covers the case where the return was
|
|
103
|
+
steered before it was returned.
|
|
104
|
+
- [`direct-answers`](direct-answers.md) Iron Law 2 — do not claim what you have
|
|
105
|
+
not verified; a manufactured verdict is the sharpest form of that claim.
|
|
@@ -67,7 +67,7 @@ name it and suggest a fresh session or `/agent-handoff`, per
|
|
|
67
67
|
- The greeting never substitutes for substance — it prefixes the answer, it is
|
|
68
68
|
not the answer.
|
|
69
69
|
|
|
70
|
-
## Enforcement
|
|
70
|
+
## Enforcement — per session, NOT per task
|
|
71
71
|
|
|
72
72
|
> **Enforced by:** [`scripts/session_canary_hook.ts`](../../scripts/session_canary_hook.ts)
|
|
73
73
|
> (`session_start`, all hook-capable hosts) — injects the `<session-canary>`
|
|
@@ -75,6 +75,18 @@ name it and suggest a fresh session or `/agent-handoff`, per
|
|
|
75
75
|
> without it. **Copilot fallback:** no hook surface — this rule is the only
|
|
76
76
|
> carrier; re-read it when the trigger fires.
|
|
77
77
|
|
|
78
|
+
**The gap, stated because it was measured.** The injection fires on
|
|
79
|
+
`session_start`; the obligation is per *task*. Nothing re-injects at a task
|
|
80
|
+
boundary, so from the second task on the contract is model-carried.
|
|
81
|
+
|
|
82
|
+
Conformance audit, 30 sessions, 2026-08-06: opening canary dropped on ~13 of 15
|
|
83
|
+
task starts, often present only in the closing summary, twice carrying a name
|
|
84
|
+
the settings chain did not resolve; the honesty clause fired zero times. No
|
|
85
|
+
per-task gate ships — the audit found no harm beyond the lost signal, and a
|
|
86
|
+
mechanism for a signal whose absence nobody acted on has no failure mode to
|
|
87
|
+
match. The consequence stands: this canary cannot currently be relied on as the
|
|
88
|
+
degradation detector its own rationale describes.
|
|
89
|
+
|
|
78
90
|
## See also
|
|
79
91
|
|
|
80
92
|
- [`direct-answers`](direct-answers.md) — canonical reply-close obligation.
|
|
@@ -52,6 +52,28 @@ the script is the deterministic safety net.
|
|
|
52
52
|
|
|
53
53
|
If in doubt, split into serial turns — never a long batched prompt.
|
|
54
54
|
|
|
55
|
+
## The trigger is a decision, not a format
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
THE OBLIGATION FIRES ON HANDING A DECISION TO THE USER — IN ANY FORM.
|
|
59
|
+
NOT ON THE PRESENCE OF A NUMBERED LIST.
|
|
60
|
+
A TRAILING FREE-TEXT OFFER IS AN ASK. A BARE YES/NO IS AN ASK.
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Measured (30-session conformance audit, 2026-08-06): **every** malformed ask was
|
|
64
|
+
a one-line parenthetical or a trailing free-text offer — *"sag Bescheid, wenn
|
|
65
|
+
ich die drei Zeilen mitnehmen soll"*, *"Soll ich das so umsetzen?"* — while the
|
|
66
|
+
same sessions formatted their **large** asks perfectly. So the rule is being
|
|
67
|
+
read as *if numbered options, then a recommendation line*. It is the other way
|
|
68
|
+
round, and an ask that feels too small for a block is exactly the one that
|
|
69
|
+
escapes the format. Three further caught shapes: a contentless filler option; an
|
|
70
|
+
inline `(Empfohlen)` tag **beside** the recommendation line (the dual source
|
|
71
|
+
Iron Law 1 forbids); an option set answerable only as `1,3,4`.
|
|
72
|
+
|
|
73
|
+
**No gate ships for this** — `check_reply_consistency` scans authored markdown,
|
|
74
|
+
never a chat draft. `conformance:behavior` deliberately does not score ask-shape,
|
|
75
|
+
so an unmoved rate is a finding rather than a silence.
|
|
76
|
+
|
|
55
77
|
## Mechanics — rationale, failure modes, format details, examples
|
|
56
78
|
|
|
57
79
|
The "why take a position", position-agnostic clause, format
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
model_tier: medium
|
|
3
3
|
name: finishing-a-development-branch
|
|
4
|
-
description: "Use when the feature is implementation-complete and the next step is 'ship it' — verifies, cleans up,
|
|
4
|
+
description: "Use when the feature is implementation-complete and the next step is 'ship it' — verifies, cleans up, routes to merge/PR/park/discard; never destroys work without explicit confirmation."
|
|
5
5
|
domain: process
|
|
6
6
|
workspaces:
|
|
7
7
|
- engineering
|
|
@@ -236,6 +236,51 @@ rule for another reason. A batch edit across the rule set trips the
|
|
|
236
236
|
kernel-prefix byte-stability gate, and that gate is right to fire — the kernel
|
|
237
237
|
prefix is pinned deliberately.
|
|
238
238
|
|
|
239
|
+
## Optional: enumerate condition-action clauses
|
|
240
|
+
|
|
241
|
+
A rule body mixes two shapes. **Standing obligations** hold for every turn the
|
|
242
|
+
rule is loaded ("every reply mirrors the user's language"). **Condition-action
|
|
243
|
+
clauses** fire on a situation ("when the diff deletes a directory, surface it").
|
|
244
|
+
The router matches on frontmatter; in-body conditionals are prose, so a rule's
|
|
245
|
+
situational half is invisible to everything except a full read.
|
|
246
|
+
|
|
247
|
+
Where a rule carries more than two of them, group them under a
|
|
248
|
+
`## Conditions` heading, one bullet per clause, each in the shape
|
|
249
|
+
**`<condition>` → `<action>`**. Two effects, both cheap:
|
|
250
|
+
|
|
251
|
+
- A reader can answer "does this rule apply to what I am doing?" from a list
|
|
252
|
+
instead of by reading the body.
|
|
253
|
+
- A condition that turns out to be unreachable becomes visible as a line, which
|
|
254
|
+
is the input `decision-review` needs to ask whether the clause still earns its
|
|
255
|
+
place.
|
|
256
|
+
|
|
257
|
+
Optional on purpose. A rule with one conditional does not need a section to hold
|
|
258
|
+
it, and a heading over a single bullet is ceremony.
|
|
259
|
+
|
|
260
|
+
## Optional: state the decision-impact class
|
|
261
|
+
|
|
262
|
+
`type:` is a **delivery** class — how the rule reaches the model. It says
|
|
263
|
+
nothing about what is at stake when the rule fires, and kernel-membership and
|
|
264
|
+
always-loaded-budget arguments were being made with no stated impact class at
|
|
265
|
+
all. `decision_impact:` carries that, with three values:
|
|
266
|
+
|
|
267
|
+
| Value | Meaning | Consequence |
|
|
268
|
+
|---|---|---|
|
|
269
|
+
| `overrides-model-default` | the model's base behaviour is wrong here | load-bearing; the strongest case for staying loaded |
|
|
270
|
+
| `encodes-house-choice` | the model would make *a* defensible choice, not *ours* | stays until the house choice changes |
|
|
271
|
+
| `already-complied-with` | the model does this unprompted | **the one value that permits removal** |
|
|
272
|
+
|
|
273
|
+
The third carries an evidence bar, enforced by `lint_decision_impact`: it
|
|
274
|
+
requires `decision_impact_evidence`, a pointer a reviewer can follow to the
|
|
275
|
+
observation. The bar exists because that classification is what permits deleting
|
|
276
|
+
a rule, and "the model probably does this anyway" is the cheapest possible way
|
|
277
|
+
to remove a floor that was working precisely *because* nothing had crossed it —
|
|
278
|
+
`active-remediation` names that failure as deleting a rule that is merely quiet.
|
|
279
|
+
|
|
280
|
+
**Optional, and backfill is opportunistic.** Classifying all 111 rules in one
|
|
281
|
+
batch is exactly the shape that trips `check_kernel_prefix_stability`. Add it to
|
|
282
|
+
new rules, and to a rule you are already touching for another reason.
|
|
283
|
+
|
|
239
284
|
## Output format
|
|
240
285
|
|
|
241
286
|
1. Complete rule file at `src/rules/{name}.md`
|
|
@@ -530,6 +530,120 @@ tool skill*, **never** a new skill per pitfall and never a generated grid (see
|
|
|
530
530
|
[`size-enforcement`](../../rules/size-enforcement.md) § Per-tool pitfall
|
|
531
531
|
content).
|
|
532
532
|
|
|
533
|
+
## Rationalizations-to-reject section (required, security-stop-routed skills)
|
|
534
|
+
|
|
535
|
+
A skill routed by `security-sensitive-stop` already carries a forbidden-moves or
|
|
536
|
+
failure-mode list. Those describe **what is wrong**. They do not answer the
|
|
537
|
+
sentence the agent actually produces at the moment it skips the control:
|
|
538
|
+
*"this one is internal, so the tenant check is not needed here."*
|
|
539
|
+
|
|
540
|
+
So those skills add `## Rationalizations to reject`, where each entry is a pair:
|
|
541
|
+
|
|
542
|
+
- **the shortcut, in the words it will be argued in** — not a label. "It is an
|
|
543
|
+
internal endpoint" beats "insufficient authorization".
|
|
544
|
+
- **the mechanism that defeats it** — the concrete fact that makes the argument
|
|
545
|
+
wrong. "Internal is a network claim, not an identity claim; the object id
|
|
546
|
+
still comes from the request."
|
|
547
|
+
|
|
548
|
+
Writing the shortcut in its persuasive form is the whole point. A list of
|
|
549
|
+
labelled anti-patterns is matched against by a reader who has already decided;
|
|
550
|
+
a list of *arguments* is matched against by a reader mid-decision, which is when
|
|
551
|
+
the skip actually happens.
|
|
552
|
+
|
|
553
|
+
Keep it to the arguments that have really been made. An invented rationalization
|
|
554
|
+
teaches nothing and dilutes the ones that recur.
|
|
555
|
+
|
|
556
|
+
## Non-negotiable-deliverable section (required, adjacent-technology clusters)
|
|
557
|
+
|
|
558
|
+
Some skills sit next to a technology that is a *tempting wrong answer* — close
|
|
559
|
+
enough to look interchangeable, different enough that picking it silently loses
|
|
560
|
+
something. The framework-cluster skills the routing rules already disambiguate
|
|
561
|
+
pairwise are the standing example.
|
|
562
|
+
|
|
563
|
+
For those, state the deliverable as a constraint rather than as a preference:
|
|
564
|
+
|
|
565
|
+
1. **What the output must use.** One sentence, unhedged.
|
|
566
|
+
2. **The substitutes to refuse, named.** The agent will meet them; naming them
|
|
567
|
+
is what makes the refusal recognisable rather than a judgement call.
|
|
568
|
+
3. **What each substitute loses.** This is the load-bearing line. A prohibition
|
|
569
|
+
without a cost reads as arbitrary and gets argued away the first time the
|
|
570
|
+
substitute is more convenient; a named loss survives that conversation.
|
|
571
|
+
|
|
572
|
+
The routing rules answer *which skill loads*. This section answers *what the
|
|
573
|
+
skill may emit once it has loaded* — a different question, and the one that goes
|
|
574
|
+
wrong quietly.
|
|
575
|
+
|
|
576
|
+
## Destructive-operation gates belong in the description
|
|
577
|
+
|
|
578
|
+
If a skill performs an operation the user cannot undo — deleting, removing,
|
|
579
|
+
publishing, spending — the confirmation gate goes in the **description**, not
|
|
580
|
+
only in the body.
|
|
581
|
+
|
|
582
|
+
The reason is routing order: the description is what the agent reads when
|
|
583
|
+
choosing a skill, and the body loads afterwards. A gate stated only in the body
|
|
584
|
+
is invisible at exactly the moment the skill is being selected for a task whose
|
|
585
|
+
shape the gate might forbid.
|
|
586
|
+
|
|
587
|
+
One clause is enough — `worktree-lifecycle` carries "safe cleanup that refuses
|
|
588
|
+
while unique unmerged commits exist", which tells a router both what the skill
|
|
589
|
+
does and what it will not do. Verified by
|
|
590
|
+
`./scripts-run src/scripts/lint_skill_descriptions`.
|
|
591
|
+
|
|
592
|
+
## Upstream-version-notes section (optional pattern, wrapped fast-moving tools)
|
|
593
|
+
|
|
594
|
+
A skill that wraps an external tool is written against one version of it. When
|
|
595
|
+
the tool renames a flag, restructures its report, or drops a subcommand, the
|
|
596
|
+
skill does not fail loudly — it fails as **the agent concluding the skill is
|
|
597
|
+
wrong**, or, worse, inventing the removed surface so its own instructions still
|
|
598
|
+
make sense. Both are silent.
|
|
599
|
+
|
|
600
|
+
For a skill wrapping a tool that moves faster than this package's release
|
|
601
|
+
cadence, add `## Upstream version notes` carrying exactly three things:
|
|
602
|
+
|
|
603
|
+
1. **The version this skill was written against, and the date it was checked.**
|
|
604
|
+
A version alone rots into a claim nobody can date.
|
|
605
|
+
2. **What was renamed** — old → new, one line each. This is the row that stops
|
|
606
|
+
an agent inventing a flag that no longer exists.
|
|
607
|
+
3. **How to read older output** — the agent will meet reports from earlier
|
|
608
|
+
versions in logs, issues and fixtures, and needs to know which fields moved
|
|
609
|
+
rather than guessing.
|
|
610
|
+
|
|
611
|
+
State briefly what is **unchanged** too. "The subcommand set is unchanged since
|
|
612
|
+
X" is what lets an agent trust the rest of the skill after finding one stale
|
|
613
|
+
flag, instead of second-guessing every instruction that follows.
|
|
614
|
+
|
|
615
|
+
Scope floor — add it only where drift is **observed**, never anticipated. A
|
|
616
|
+
version-notes block on a stable tool is maintenance with no reader, and a stale
|
|
617
|
+
one is worse than none: it is a dated claim that is now false.
|
|
618
|
+
|
|
619
|
+
## Security-constraints section (required pattern, script-bearing skills)
|
|
620
|
+
|
|
621
|
+
A skill that ships an executable script carries its constraints in the
|
|
622
|
+
always-loaded rules — `tool-safety`, `runtime-safety`, `lethal-trifecta-guard`.
|
|
623
|
+
That holds while the skill is read inside this suite. It stops holding the
|
|
624
|
+
moment the script travels: vendored into a consumer, copied into another
|
|
625
|
+
project, or run by an agent whose rule set is not ours. The constraints stay
|
|
626
|
+
behind; the script does not.
|
|
627
|
+
|
|
628
|
+
So a skill with anything under its `scripts/` directory states them **on the
|
|
629
|
+
artifact**, in a `## Security constraints` section:
|
|
630
|
+
|
|
631
|
+
- **What it may touch** — the paths and hosts it legitimately reads or writes.
|
|
632
|
+
Naming the boundary is what makes an overreach reviewable.
|
|
633
|
+
- **What it must never do** — the prohibitions specific to THIS script, not a
|
|
634
|
+
restatement of the general rules. "Never writes outside the target directory"
|
|
635
|
+
is checkable; "follows security best practice" is not.
|
|
636
|
+
- **Its default-invocation behaviour** — read-only or mutating. A script that
|
|
637
|
+
mutates on a bare invocation already violates the `## Do NOT` list below; if
|
|
638
|
+
it is gated behind a flag, name the flag here.
|
|
639
|
+
- **What it sends outbound, if anything** — the egress leg of the lethal
|
|
640
|
+
trifecta. A script with no network access says so in four words, and that
|
|
641
|
+
sentence is the cheapest possible answer to a reviewer's first question.
|
|
642
|
+
|
|
643
|
+
This duplicates the rules on purpose, and the duplication is the point: the
|
|
644
|
+
rules are the enforcement, the section is what survives the artifact leaving
|
|
645
|
+
their reach.
|
|
646
|
+
|
|
533
647
|
## Do NOT
|
|
534
648
|
|
|
535
649
|
* Write documentation-style, pointer-only, or too-broad skills ("Laravel skill", "Django skill")
|
|
@@ -39,7 +39,7 @@ schema_version: 1
|
|
|
39
39
|
# CI guard: a release bump of `package.json` must update this value
|
|
40
40
|
# in lockstep — see scripts/check_template_pin_drift.ts (road-to-
|
|
41
41
|
# portable-runtime-and-update-check P3.3).
|
|
42
|
-
agent_config_version: "9.
|
|
42
|
+
agent_config_version: "9.25.0"
|
|
43
43
|
|
|
44
44
|
# --- Project identity ---
|
|
45
45
|
project:
|
package/dist/cli/registry.js
CHANGED
|
@@ -30,6 +30,7 @@ export const REGISTRY = [
|
|
|
30
30
|
{ name: 'doctor', disposition: 'delegate', synopsis: 'Read-only drift report: manifest ↔ filesystem.' },
|
|
31
31
|
{ name: 'converge', disposition: 'delegate', synopsis: 'Consented cleanup of duplicate install surfaces (surface-matrix driven).' },
|
|
32
32
|
{ name: 'conformance', disposition: 'delegate', synopsis: 'Consumer conformance contract: doctor --ci + installed-and-firing checks.' },
|
|
33
|
+
{ name: 'conformance:behavior', disposition: 'delegate', synopsis: 'Replay local transcripts through the mechanised conformance checks (report, not gate).' },
|
|
33
34
|
{ name: 'doctor-shell', disposition: 'native', synopsis: 'Native TS-shell environment probe.' },
|
|
34
35
|
{ name: 'rtk:detect', disposition: 'native', synopsis: 'rtk (Rust Token Killer) presence + identity readout — contract: docs/contracts/rtk-detection.md.' },
|
|
35
36
|
{ name: 'ui:serve', disposition: 'native', synopsis: 'Start the local UI server.' },
|
package/dist/cli/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/cli/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,MAAM,CAAC,MAAM,QAAQ,GAA4B;IAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,iFAAiF,EAAE;IACtI,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8BAA8B,EAAE;IACnF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kCAAkC,EAAE;IAC3F,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,oCAAoC,EAAE;IACzF,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,oCAAoC,EAAE;IACrG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,6DAA6D,EAAE;IACpH,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mEAAmE,EAAE;IAC3H,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mEAAmE,EAAE;IAC3H,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,sCAAsC,EAAE;IAC7F,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0DAA0D,EAAE;IACjH,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8EAA8E,EAAE;IACrI,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,4EAA4E,EAAE;IAC3I,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0EAA0E,EAAE;IACxI,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mEAAmE,EAAE;IACpI,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,yEAAyE,EAAE;IACtI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,+DAA+D,EAAE;IACzH,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,qEAAqE,EAAE;IAC3H,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,gDAAgD,EAAE;IACvG,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0EAA0E,EAAE;IACnI,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2EAA2E,EAAE;IACvI,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wFAAwF,EAAE;IAC7J,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,oCAAoC,EAAE;IAC/F,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,kGAAkG,EAAE;IAC3J,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,4BAA4B,EAAE;IACnF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,oFAAoF,EAAE;IACzI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,gDAAgD,EAAE;IACvG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,kEAAkE,EAAE;IACxH,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,4DAA4D,EAAE;IAChH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,8DAA8D,EAAE;IACvH,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,yDAAyD,EAAE;IAC7G,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,0FAA0F,EAAE;IACjJ,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,iDAAiD,EAAE;IACpG,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,gGAAgG,EAAE;IACxJ,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IAC3H,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kEAAkE,EAAE;IAC1H,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,4DAA4D,EAAE;IACpH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mDAAmD,EAAE;IAC9G,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,yDAAyD,EAAE;IACnH,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8EAA8E,EAAE;IACxI,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wDAAwD,EAAE;IAChH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,uFAAuF,EAAE;IAChJ,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IAC/G,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,4DAA4D,EAAE;IAC7H,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wDAAwD,EAAE;IAC/H,EAAE,IAAI,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,6CAA6C,EAAE;IAC7G,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,4EAA4E,EAAE;IAC/I,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,yEAAyE,EAAE;IAClI,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0FAA0F,EAAE;IACxJ,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,sEAAsE,EAAE;IAChI,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,qFAAqF,EAAE;IAChJ,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uCAAuC,EAAE;IACrG,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kEAAkE,EAAE;IAC/H,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2EAA2E,EAAE;IACxI,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kHAAkH,EAAE;IACjL,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,+IAA+I,EAAE;IAC7M,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uIAAuI,EAAE;IACnM,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2EAA2E,EAAE;IACxI,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,6GAA6G,EAAE;IAC1K,EAAE,IAAI,EAAE,wBAAwB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,iEAAiE,EAAE;IACxI,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8DAA8D,EAAE;IAClI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IACrH,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,kDAAkD,EAAE;IAChH,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8EAA8E,EAAE;IACzI,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2CAA2C,EAAE;IAChH,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uDAAuD,EAAE;IACrH,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2CAA2C,EAAE;IACvG,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,0CAA0C,EAAE;IACvG,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,8CAA8C,EAAE;IACpH,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,+FAA+F,EAAE;IAC5J,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,qFAAqF,EAAE;IAC/I,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wFAAwF,EAAE;IAClJ,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mDAAmD,EAAE;IAClH,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uDAAuD,EAAE;IAC5H,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,sEAAsE,EAAE;IACxI,EAAE,IAAI,EAAE,yBAAyB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,sEAAsE,EAAE;IAC9I,EAAE,IAAI,EAAE,uBAAuB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mEAAmE,EAAE;IACzI,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,2DAA2D,EAAE;IAChI,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,iEAAiE,EAAE;IACtI,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,oGAAoG,EAAE;IAChK,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,qDAAqD,EAAE;IACtH,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,yDAAyD,EAAE;IAC1H,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,sDAAsD,EAAE;IACvH,EAAE,IAAI,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,wDAAwD,EAAE;IACzH,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,mDAAmD,EAAE;IAC/G,EAAE,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,uDAAuD,EAAE;IACtH,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,4FAA4F,EAAE;CAChJ,CAAC;AAEX,MAAM,UAAU,WAAW,CAAC,IAAY;IACpC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAY;IACjC,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,QAAQ,CAAC;AACvD,CAAC"}
|