Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/mode-economics.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ special-token spellings counted as ordinary text.
Coverage: **75 of 75 local `skills/*/SKILL.md` files**.
External `source.md` redirects and harness symlinks are excluded.

Measurement manifest SHA-256: `d4084d97d203d0df2895a57eea81b74334fcb357c4ca6db7a8b2918ab579a026`.
Measurement manifest SHA-256: `eba45d94594422dcafe69f05a325439ac695e06487ac25cae6e753d2259de9f6`.

| Skill file | Measured tokens | Source SHA-256 (first 16 characters) |
|---|---:|---|
Expand Down Expand Up @@ -161,7 +161,7 @@ Measurement manifest SHA-256: `d4084d97d203d0df2895a57eea81b74334fcb357c4ca6db7a
| [setup](../skills/setup/SKILL.md) | 8,724 | `82788542bb240309` |
| [setup-isolated-setup-doctor](../skills/setup-isolated-setup-doctor/SKILL.md) | 7,950 | `3fa5d728fa080ed0` |
| [setup-isolated-setup-install](../skills/setup-isolated-setup-install/SKILL.md) | 11,278 | `418ea9794077c6e9` |
| [setup-isolated-setup-update](../skills/setup-isolated-setup-update/SKILL.md) | 5,214 | `97dabfc08b915b4a` |
| [setup-isolated-setup-update](../skills/setup-isolated-setup-update/SKILL.md) | 5,561 | `a49d7d987bf50109` |
| [setup-isolated-setup-verify](../skills/setup-isolated-setup-verify/SKILL.md) | 8,502 | `6f0a2594801bdf27` |
| [setup-override-upstream](../skills/setup-override-upstream/SKILL.md) | 4,012 | `fb583feb56b7f77c` |
| [setup-privacy-llm](../skills/setup-privacy-llm/SKILL.md) | 2,145 | `0e27b542a1656846` |
Expand Down
4 changes: 2 additions & 2 deletions docs/vendor-neutrality.md
Original file line number Diff line number Diff line change
Expand Up @@ -584,8 +584,8 @@ generated block below.

| Skill neutrality | Count |
|---|---|
| capability-pure (names no backend) | 14 |
| portable (named backends are swappable) | 61 |
| capability-pure (names no backend) | 13 |
| portable (named backends are swappable) | 62 |
| vendor-coupled (sole-backend dependency) | 0 |

Organization scope (declared, orthogonal to vendor): ASF = 14, agnostic = 61.
Expand Down
35 changes: 30 additions & 5 deletions plugins/magpie-setup/skills/isolated-setup-update/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,23 @@ Walk each:
[`setup-isolated-setup-install`](../isolated-setup-install/SKILL.md)
re-run on the affected Step P sub-step.

Also diff the agent-guard hook the same way:
**The agent-guard hook — establish which wiring is in use before
diffing anything.** Read `enabledPlugins` in
`~/.claude/settings.json`: when it lists
`magpie-agent-guard@apache-magpie`, the guard runs **from the
installed plugin**, whose manifest registers the `PreToolUse`
hook and resolves the engine and every skill-owned guard under
`${CLAUDE_PLUGIN_ROOT}`. There is then no user-scope copy to diff
and no `guards.d` to sync: an absent
`~/.claude/scripts/agent-guard.py` is the expected shape, **not
drift**, and reporting it as missing sends the user installing a
second copy of a guard that is already running. What is worth
surfacing for a plugin install is the plugin's own version
against the framework's (a refresh is `/plugin`), and any
leftover user-scope copy from an earlier hand-wiring.

Only when the plugin is **not** enabled does the user-scope
wiring apply, and then diff it the same way as the other scripts:
`~/.claude/scripts/agent-guard.py` against the framework's
`tools/agent-guard/src/agent_guard/__init__.py`, and the
`~/.claude/scripts/guards.d/` directory against the union of the
Expand All @@ -233,10 +249,16 @@ Walk each:
locally-added `*.py` are expected; flag only missing
framework/skill guards or stale copies). A new skill guard (or a
skill newly adding one) appearing in the framework but absent
from the user's `guards.d` is the most common drift once the hook
is wired — re-syncing `guards.d` activates it with **no
from the user's `guards.d` is the most common drift on that
wiring — re-syncing `guards.d` activates it with **no
`settings.json` change**.

Either way, confirm the guard actually denies. A `git commit`
whose message carries a `Co-Authored-By:` trailer is the cheap
canary: the bundled `commit-trailer` guard blocks it before the
commit runs, so a command that goes through means the hook is
not firing, whatever the files and settings say.

**Rename migration — `claude-iso.sh` → `agent-iso.sh`.** The
clean-env launcher was renamed (it now isolates **OpenCode** as
well as Claude Code, exposing both a `claude-iso` and an
Expand All @@ -261,8 +283,11 @@ Walk each:
`allowedDomains` entries, new `permissions.deny` patterns
for newly-discovered exfiltration paths, **or the agent-guard
`hooks.PreToolUse` entry** (matcher `Bash`) if the user wired
the secure setup before the guard shipped. Report new entries
the user does not have; do not auto-merge.
the secure setup before the guard shipped and does not have the
`magpie-agent-guard` plugin enabled — with the plugin, that hook
comes from the plugin manifest and its absence from
`settings.json` is correct. Report new entries the user does not
have; do not auto-merge.

Two `sandbox.network.*` settings are worth a look while diffing
— but neither is a "missing default" to re-add:
Expand Down