Skip to content
Open
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
bump: patch
---

### Changed

- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
bump: patch
---

### Changed

- Pointer records no longer carry an as-of date or recheck trigger; stored values keep theirs.
5 changes: 2 additions & 3 deletions plugins/harness-config/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,8 @@ and inert plugin self-grants. A deterministic detector scans skill/command/agent
bare-command-on-PATH pattern. A broad rule in the user-global file
(`${CLAUDE_CONFIG_DIR:-$HOME/.claude}/settings.json`) reaches every project. The remediation of a
finding there is the operator's, since no skill can write that file. Where a prompt approval is
saved is in [permissions: permission system](https://code.claude.com/docs/en/permissions#permission-system)
(as of 2026-11-04; recheck when that section changes the file). The principle and citations live in the marketplace
[permission-rule-hygiene convention](../../docs/contracts/permission-rule-hygiene/README.md).
saved is in [permissions: permission system](https://code.claude.com/docs/en/permissions#permission-system).
The principle and citations live in the marketplace [permission-rule-hygiene convention](../../docs/contracts/permission-rule-hygiene/README.md).
Report-only.

```shell
Expand Down
9 changes: 2 additions & 7 deletions plugins/harness-config/reference/agents-md-liveness.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,6 @@ For such a session the remedy we recommend is a `CLAUDE.md` that imports the `AG
- **Pointer**: when deciding whether `AGENTS.md` support is available, fetch
[memory: when AGENTS.md support is unavailable](https://code.claude.com/docs/en/memory#when-agents-md-support-is-unavailable)
live.
- **As of**: 2026-10-11
- **Recheck trigger**: a condition is added to or removed from that section's list, or its remedy
changes.

**No hooks setting is an availability condition.** The built-in plugin that reads `AGENTS.md` is a
built-in mod, so our
Expand All @@ -47,10 +44,8 @@ it. A session that loads no instruction files at all (`--bare` without `--add-di
live; for the plugin's own statement, read its
[README](https://github.com/anthropics/claude-code/blob/main/mods/agents-md/README.md) at commit
`2282079d6ac8`.
- **As of**: 2026-10-18 for the two docs sections; 2026-10-01 for the README commit.
- **Recheck trigger**: the overview's built-in-mods section or the settings reference's
`allowManagedHooksOnly` section changes which settings stop built-in mods, or the README's
settings paragraph changes.
- **As of**: 2026-10-01 for the README commit.
- **Recheck trigger**: the README's settings paragraph changes.

**Two of the three kinds resolve from what this plugin already reads.** A version condition is a
comparison against the floor the pointer states, plus the provider and telemetry configuration
Expand Down
11 changes: 0 additions & 11 deletions plugins/harness-config/skills/audit-automation-gaps/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,6 @@ call. This paragraph is a boundary, not a routing verdict.

- **Pointer**: when you need what `/hooks` lists, or what it shows for a selected hook, fetch
[the /hooks menu](https://code.claude.com/docs/en/hooks#the-/hooks-menu) live.
- **As of**: 2026-10-11
- **Recheck trigger**: that section stops showing each hook's source, or the menu stops listing
the resolved set of configured hooks.

## Adapting to your environment (graceful degrade)

Expand Down Expand Up @@ -172,8 +169,6 @@ control upstream says it never fires, which no local reading surfaces.
- **Pointer**: when a candidate gates on a hook event's exit code, fetch that event's decision
control live, for example
[hooks: PermissionRequest decision control](https://code.claude.com/docs/en/hooks#permissionrequest-decision-control).
- **As of**: 2026-11-10
- **Recheck trigger**: that section changes which exit codes or decision fields the event honors.

**Conditional: facts the harness does not own.** Third-party tool performance, an ecosystem's
standard formatter, server stability and auth, known issues in a tool the candidate would run. Fetch
Expand Down Expand Up @@ -296,8 +291,6 @@ hook type reaches, **Already enforced** to a deterministic finding already escal

- **Pointer**: before proposing a `prompt` or `agent` hook, fetch its status and fields live at
[hooks: prompt and agent hook fields](https://code.claude.com/docs/en/hooks#prompt-and-agent-hook-fields).
- **As of**: 2026-11-10
- **Recheck trigger**: that section changes either type's status or the fields it accepts.

Produce a verdict per candidate:

Expand Down Expand Up @@ -384,7 +377,6 @@ script exits 2 rather than guessing when it is missing.
- **Pointer**: when deciding how a script receives a plugin path variable, fetch
[plugins manifest reference: where each variable resolves](https://code.claude.com/docs/en/plugins/manifest-reference#where-each-variable-resolves)
live.
- **As of**: 2026-11-10
- **Recheck trigger**: that section starts exporting the variable to commands run through the Bash
tool.

Expand All @@ -403,9 +395,6 @@ only durable copy, and an uninstall can delete it.
- **Pointer**: when deciding whether the findings survive an uninstall, fetch
[plugins CLI reference: what an uninstall deletes and keeps](https://code.claude.com/docs/en/plugins/cli-reference#what-an-uninstall-deletes-and-keeps)
live.
- **As of**: 2026-11-10
- **Recheck trigger**: that section changes whether the plugin data directory survives an
uninstall.

## Phase 4: Implement (if `--implement` or user requests)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,8 @@
The placement rules above, the 1 s and 60 s lines among them, are this marketplace's house rules, not upstream guidance: [check-placement](https://github.com/melodic-software/claude-code-plugins/blob/main/docs/contracts/check-placement/README.md#the-rubric). A consuming repo that documents its own placement rules overrides them.

- **Pointer**: for what `PostToolBatch` receives and when it fires, fetch [hooks: PostToolBatch](https://code.claude.com/docs/en/hooks#posttoolbatch) live.
- **As of**: 2026-10-15
- **Recheck trigger**: that section adds a matcher or `if` support, or stops firing once per batch of parallel tool calls.

- **Pointer**: when deciding whether a need calls for a mod rather than a settings hook, a skill or an MCP server, fetch [mods overview: compare mods, settings hooks, skills, and MCP servers](https://code.claude.com/docs/en/plugins/mods/overview#compare-mods-settings-hooks-skills-and-mcp-servers) live; for status entries, toasts and tools, read the built-in `plugin-authoring` skill's "From the ask to the shape" table.
- **As of**: 2026-10-18
- **Recheck trigger**: either "Pick it when" cell for mods or settings hooks changes, or a release lets a settings hook draw in the interface.

**MCP Servers**: For each external service the repo interacts with:

Expand Down
11 changes: 5 additions & 6 deletions plugins/harness-config/skills/audit-instructions/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,7 @@ Phase D's `persist-report.sh`. Either can mutate a file this skill has already r
this is an instruction-held contract with a narrowed accident surface, not an enforced one. Never
describe it to an operator as a guarantee. We treat the restriction as clearing on the operator's
next message, so whoever accepts a diff can apply it (Pointer: the
[skills frontmatter reference](https://code.claude.com/docs/en/skills#frontmatter-reference).
As of: 2026-08-12. Recheck trigger: that section changes how long the restriction lasts). `audit-prompting-postures` carries the identical declaration and caveat: both state one contract.
[skills frontmatter reference](https://code.claude.com/docs/en/skills#frontmatter-reference)). `audit-prompting-postures` carries the identical declaration and caveat: both state one contract.

## Scope boundary (route out)

Expand Down Expand Up @@ -259,7 +258,7 @@ the budget as a line count: the line figure is derived per run from the bytes pe
We size a lane by the context window of the model the lane runs on, never the parent's (Pointer:
when deciding whose window sizes a lane, fetch
[subagents: what loads at startup](https://code.claude.com/docs/en/sub-agents#what-loads-at-startup)
live. As of: 2026-10-11. Recheck trigger: that section changes how a subagent's window is sized).
live).

`<lane model window>` is the `--window-tokens` value: the context window in tokens of the model the
lane runs on. When the lane's model resolves to no documented window, pass 200000, our setting for
Expand Down Expand Up @@ -348,7 +347,7 @@ what belongs to `harness-memory:audit`'s C6 instead.
Every removal or rewrite proposal is re-judged before it reaches the report, at the `standard` and `strict` verification levels: resolve the level with `bash "${CLAUDE_PLUGIN_ROOT}/lib/read-verification.sh" --plugin harness-config --skill audit-instructions` and copy its line into the report header ([levels](https://github.com/melodic-software/claude-code-plugins/blob/main/docs/contracts/verification-level/README.md)). Under `light`, and `off`, which acts as `light` here, dispatch no Phase C verifier and never re-judge inline in its place: follow "When dispatch is unavailable" below with every verification mode `skipped` for the reason `verification: skipped (<level>)`. Dispatch **fresh-context,
non-fork** subagents, since this is a self-grade of the audit's own proposals and a fork that inherits the
producing context would not be independent (pointer: when checking what a fork inherits, fetch [How forks differ from other subagents](https://code.claude.com/docs/en/sub-agents#how-forks-differ-from-other-subagents)
live; as of 2026-11-01, recheck when that table changes what a fork inherits), prompted to refute: "would removing this instruction cause Claude to make mistakes? Argue that it is still load-bearing." Where the removal call is
live), prompted to refute: "would removing this instruction cause Claude to make mistakes? Argue that it is still load-bearing." Where the removal call is
high-stakes and correlated blind spots are the risk, prefer a cross-vendor advisor **when one is
installed and set up**, e.g. the OpenAI Codex plugin, invoked per its own docs, with the
fresh-context same-vendor subagent as the stated fallback, never a route to a command that may not
Expand All @@ -373,7 +372,7 @@ gate fails, dropped for that named reason.
### When dispatch is unavailable

Phases B and C **require** fresh-context, non-fork subagent dispatch. When the Agent tool is
blocked, unavailable, or the session cannot spawn subagents (including a nested session at the spawn-depth limit; Pointer: when this skill runs inside a subagent, fetch [subagents: let subagents spawn their own subagents](https://code.claude.com/docs/en/sub-agents#let-subagents-spawn-their-own-subagents) live. As of: 2026-10-11. Recheck trigger: that section changes the depth limit or what a subagent at it can spawn):
blocked, unavailable, or the session cannot spawn subagents (including a nested session at the spawn-depth limit; Pointer: when this skill runs inside a subagent, fetch [subagents: let subagents spawn their own subagents](https://code.claude.com/docs/en/sub-agents#let-subagents-spawn-their-own-subagents) live):

1. **Disclose in the report header** which phases ran inline, which were skipped, and why dispatch
was unavailable, so a run that skipped verification is distinguishable from a verified one.
Expand Down Expand Up @@ -475,7 +474,7 @@ plainly that nothing has been applied.

- **Examples are not scaffolding.** Flag an example block only when it pins the model's *approach*
to a task, never when it steers output format; for how many to keep, fetch [use examples effectively](https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices#use-examples-effectively)
live (as of 2026-11-03; recheck when that section changes how many examples or what they should steer).
live.
- **Bare-prohibition rewrites go positive first.** The primary remediation is "say what to do
instead of what not to do"; adding a rationale is the fallback where a genuine hard "never"
survives. Do not mechanically delete every prohibition the pre-scan flags.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,20 @@ official memory and `.claude`-directory docs (cited in the report's Sources line
- User: resolve the root as `${CLAUDE_CONFIG_DIR:-~/.claude}`, never a hardcoded `~/.claude`,
then: `CLAUDE.md`, `rules/`, `skills/`, `agents/`, `output-styles/` under that root. When
deciding what the variable relocates, fetch
[env vars: variables](https://code.claude.com/docs/en/env-vars#variables) live (as of
2026-11-03; recheck when its `CLAUDE_CONFIG_DIR` row changes what the variable moves).
[env vars: variables](https://code.claude.com/docs/en/env-vars#variables) live.
- Project: `./CLAUDE.md` or `./.claude/CLAUDE.md`, `./CLAUDE.local.md`, and every nested
`CLAUDE.md` / `CLAUDE.local.md` in subdirectories of the project tree (Claude loads these on
demand once it works with a file in those directories, so walk the tree and do not stop at the
root; what counts is at
[memory: how CLAUDE.md files load](https://code.claude.com/docs/en/memory#how-claude-md-files-load),
as of 2026-11-04, recheck when that section changes what loads a nested file);
[memory: how CLAUDE.md files load](https://code.claude.com/docs/en/memory#how-claude-md-files-load));
`.claude/rules/`, `.claude/skills/`, `.claude/agents/`, `.claude/output-styles/`.
- **A natively read `AGENTS.md`**: `./AGENTS.md` and `./.claude/AGENTS.md`, each its own record, and
every nested `AGENTS.md` in subdirectories of the project tree, on the same on-demand footing as
the nested `CLAUDE.md` files above. Whether a given file is natively read depends on the
instruction-files mode and on the CLAUDE.md files along its own path, so **test it per file,
never once at the root**. When deciding whether a file is displaced, fetch
[memory: choose which instruction files load](https://code.claude.com/docs/en/memory#choose-which-instruction-files-load)
live (as of 2026-11-03; recheck when that section changes which files displace an
`AGENTS.md`). A displaced file that an import or a symlink brings in is covered by the importing
live. A displaced file that an import or a symlink brings in is covered by the importing
record, not a record of its own. The root case is the condition
`harness-memory`'s `skills/audit/scripts/lib/agents-md.sh` encodes.
**Displacement is that mode's answer, not the only one, and this bullet does not restate the
Expand Down Expand Up @@ -67,8 +64,7 @@ official memory and `.claude`-directory docs (cited in the report's Sources line
frontmatter hook can register under a different event than the one it names, so resolve the
effective event from
[subagents: hooks in subagent frontmatter](https://code.claude.com/docs/en/sub-agents#hooks-in-subagent-frontmatter)
before pairing (both pointers as of 2026-10-11; recheck when either section changes a frontmatter
hook's lifetime or the event it registers under). Two kinds, and the discriminator is **whether
before pairing. Two kinds, and the discriminator is **whether
the handler's output reaches this session's context, never the handler's `type`**
([reference/conflict-criteria.md](../reference/conflict-criteria.md) owns the distinction and its
citations):
Expand Down Expand Up @@ -140,8 +136,7 @@ involving one still carries the no-change representation and its routing recomme
`CLAUDE_CODE_DISABLE_AUTO_MEMORY` first, then `autoMemoryEnabled` across the settings scopes.
When deciding what each value means, which one wins and what the default is, fetch
[memory: enable or disable auto memory](https://code.claude.com/docs/en/memory#enable-or-disable-auto-memory)
live (as of 2026-11-03; recheck when that section changes the variable, the setting or how they
combine). Reading a lower-scope `false` as decisive would drop a `MEMORY.md` a
live. Reading a lower-scope `false` as decisive would drop a `MEMORY.md` a
higher-precedence scope re-enabled, and inventorying unconditionally would pair live instructions
against a file left on disk after auto memory was turned off, the same defect as reading a
disabled plugin's cache. `/harness-memory:stateless` owns this resolver; its `status` action reports
Expand All @@ -151,24 +146,23 @@ involving one still carries the no-change representation and its routing recomme
I15 precisely because `harness-memory`'s C6 does not read it, so excluding it outright would leave
a `MEMORY.md`-versus-`CLAUDE.md` contradiction audited by neither skill. Only the content that
actually loads is compared, the loaded portion
[memory: how it works](https://code.claude.com/docs/en/memory#how-it-works) names (as of
2026-10-11; recheck when that portion changes); topic files beside it are read on demand and are
[memory: how it works](https://code.claude.com/docs/en/memory#how-it-works) names; topic files beside it are read on demand and are
not resident. Ownership is unchanged: `harness-memory` still owns auto memory, and a finding
here routes there rather than editing it.
- **Each enabled agent's own memory, under that same gate**: an agent definition carrying a
`memory` field gets its **own** memory directory, separate from the main conversation's and named
per agent, and that subagent reads and writes its own `MEMORY.md` there. The field's value is the
scope, and each scope has its own location; read the scope-to-directory mapping from
[subagents: enable persistent memory](https://code.claude.com/docs/en/sub-agents#enable-persistent-memory)
live (as of 2026-10-11; recheck when a scope or its directory changes), and resolve a user-scope
live, and resolve a user-scope
directory under the **resolved** user root above, never a hardcoded `~/.claude`.
[reference/conflict-criteria.md](../reference/conflict-criteria.md) keeps an agent-definition-versus-
its-own-memory contradiction in scope precisely because those two *do* co-reside in that subagent,
so this inventory has to reach it: enumerate that `MEMORY.md` for every inventoried agent whose
definition enables the field, under the same loaded-portion bound. The gate is the effective state
resolved just above: enumerate agent memory only when auto memory is on, for the dependency
recorded at [sub-agents](https://code.claude.com/docs/en/sub-agents#enable-persistent-memory)
(as of 2026-10-07; recheck trigger: that section's auto-memory dependency changes); an agent
recorded at [sub-agents](https://code.claude.com/docs/en/sub-agents#enable-persistent-memory); an
agent
memory left on disk after the switch flipped is not inventoried.
Read-only and `harness-memory`-owned exactly as the main entrypoint is.
- **Org-managed policy**: the managed-policy `CLAUDE.md`, any `claudeMd` value in managed settings,
Expand All @@ -189,8 +183,8 @@ involving one still carries the no-change representation and its routing recomme
ship styles in an
`output-styles/` directory, and a plugin style with `force-for-plugin` can be active without the
user selecting it
([output styles: create a custom output style](https://code.claude.com/docs/en/output-styles#create-a-custom-output-style),
as of 2026-10-11; recheck when that section changes how `force-for-plugin` applies). Resolve
([output styles: create a custom output style](https://code.claude.com/docs/en/output-styles#create-a-custom-output-style)).
Resolve
which style is actually active, a `force-for-plugin` style from the enabled set first, else the
`outputStyle` value, which may itself name a plugin-supplied style, and inventory that one. Only
the active style is resident, so the others stay out of the corpus. Enablement is
Expand Down
Loading
Loading