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
2 changes: 1 addition & 1 deletion docs/harness/claudecode/claudecode-vertexai.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ audit through Google Cloud.
> login prompt still labels it **Google Vertex AI**, and its environment variables keep the `VERTEX`
> name.
>
> Verified against Claude Code 2.1.299 on 2026-10-14.
> Verified against Claude Code 2.1.302 on 2026-10-18.

This page covers the minimum setup. Anthropic maintains the full procedure, including IAM, region
rules, model pinning, and troubleshooting, in
Expand Down
2 changes: 1 addition & 1 deletion docs/skills/agent-creator-claudecode.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ conditions under which Claude Code silently skips a file, and tool and permissio

- **Skill name:** `agent-creator-claudecode`
- **Source:** [skills/agent-creator-claudecode](https://github.com/CowboyLogic/ai-dev/tree/main/skills/agent-creator-claudecode)
- **Claude Code version:** verified against [Claude Code 2.1.299](https://github.com/anthropics/claude-code/releases/tag/v2.1.299) (released 2026-10-14), last re-verified 2026-10-14
- **Claude Code version:** verified against [Claude Code 2.1.302](https://github.com/anthropics/claude-code/releases/tag/v2.1.302) (released 2026-10-16), last re-verified 2026-10-18

---

Expand Down
4 changes: 2 additions & 2 deletions docs/skills/client-config-claudecode.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ MCP servers, model configuration, sandbox isolation, auto mode, voice, and plugi

- **Skill name:** `client-config-claudecode`
- **Source:** [skills/client-config-claudecode](https://github.com/CowboyLogic/ai-dev/tree/main/skills/client-config-claudecode)
- **Claude Code version:** verified against [Claude Code 2.1.299](https://github.com/anthropics/claude-code/releases/tag/v2.1.299) (released 2026-10-14), last re-verified 2026-10-14
- **Claude Code version:** verified against [Claude Code 2.1.302](https://github.com/anthropics/claude-code/releases/tag/v2.1.302) (released 2026-10-16), last re-verified 2026-10-18

---

Expand Down Expand Up @@ -61,7 +61,7 @@ npx skills ls -g --agent claude-code

In a benchmark run on 2026-04-26, the skill raised the assertion pass rate from 80% to
100%, with the gain concentrated on settings that postdate the model's training. That run
predates the 2026-09-24, 2026-10-11, 2026-10-13, and 2026-10-14 reference refreshes. The detail is in the [skill README](https://github.com/CowboyLogic/ai-dev/blob/main/skills/client-config-claudecode/README.md),
predates the 2026-09-24, 2026-10-11, 2026-10-13, 2026-10-14, and 2026-10-18 reference refreshes. The detail is in the [skill README](https://github.com/CowboyLogic/ai-dev/blob/main/skills/client-config-claudecode/README.md),
and the version history is in the
[CHANGELOG](https://github.com/CowboyLogic/ai-dev/blob/main/skills/client-config-claudecode/CHANGELOG.md).

Expand Down
10 changes: 5 additions & 5 deletions skills/agent-creator-claudecode/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
A skill for creating and troubleshooting custom subagents for Claude Code.

> [!NOTE]
> **Claude Code version:** verified against [Claude Code 2.1.299](https://github.com/anthropics/claude-code/releases/tag/v2.1.299)
> (released 2026-10-14; the npm `latest` and `next` tags on 2026-10-14, with `stable` at 2.1.287).
> **Claude Code version:** verified against [Claude Code 2.1.302](https://github.com/anthropics/claude-code/releases/tag/v2.1.302)
> (released 2026-10-16; the npm `latest` and `next` tags on 2026-10-18, with `stable` at 2.1.292).
> Field behavior comes from <https://code.claude.com/docs/en/sub-agents>, with failure
> behavior from <https://code.claude.com/docs/en/errors>, checked against the changelog
> through 2.1.299. Where only the changelog supports a claim (`autoCompactWindow`,
> `CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL`, MCP server names containing `__` in `tools`), the
> reference says so. Last re-verified 2026-10-14.
> through 2.1.302. Where only the changelog supports a claim (`CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL`,
> MCP server names containing `__` in `tools`, fork mode defaulting on in `-p`, the Agent SDK,
> the desktop app and VS Code), the reference says so. Last re-verified 2026-10-18.
> Re-verify when Claude Code ships a new release.

## Overview
Expand Down
2 changes: 1 addition & 1 deletion skills/agent-creator-claudecode/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ the same family, including any `[1m]` context suffix.
| `color` | `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan` |
| `initialPrompt` | First user turn when the file runs as the main session agent |
| `experimental` | `{cacheTtl: 5m \| 1h}` prompt cache lifetime |
| `autoCompactWindow` | Auto-compact earlier than the main conversation's window (v2.1.296; changelog only, not yet in the docs table) |
| `autoCompactWindow` | Auto-compact earlier than the main conversation's window: a token count from `100000` to `1000000` (v2.1.296+; `CLAUDE_CODE_AUTO_COMPACT_WINDOW`, when set, wins) |

Plugin agents ignore `hooks`, `mcpServers`, `permissionMode`, and `initialPrompt`. Copy the
file into `.claude/agents/` if you need them.
Expand Down
36 changes: 23 additions & 13 deletions skills/agent-creator-claudecode/references/frontmatter-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
Reference for the YAML frontmatter fields of Claude Code agent files. Load this file when
writing, reviewing, or debugging agent frontmatter.

**Source (last verified 2026-10-14 against Claude Code 2.1.299; the docs page references
versions up to v2.1.292):**
**Source (last verified 2026-10-18 against Claude Code 2.1.302; the docs page references
versions up to v2.1.296):**
<https://code.claude.com/docs/en/sub-agents#supported-frontmatter-fields>

`autoCompactWindow` is the one field here that only the v2.1.296 changelog supports; the
docs table does not list it yet.
Every field in this file is in the docs table. Where a note below is labeled "changelog only",
the Claude Code changelog is its only source.

Field names are camelCase and case-sensitive. **Unrecognized fields are ignored without an
error**, so a misspelling looks exactly like a working file.
Expand Down Expand Up @@ -45,7 +45,7 @@ color: blue
initialPrompt: "Start by reading TODO.md" # main-session use only
experimental: # v2.1.248+
cacheTtl: 5m
autoCompactWindow: 200000 # v2.1.296+ (changelog only)
autoCompactWindow: 200000 # v2.1.296+; 100000 to 1000000
---
```

Expand Down Expand Up @@ -214,6 +214,14 @@ subagents in foreground or background"):
when Claude needs the result before continuing. `background: true` keeps the agent in the
background even then.

Changelog only (v2.1.302): fork mode is now also on by default in `claude -p`, the Agent SDK,
the desktop app and VS Code, so case 3 applies there; `CLAUDE_CODE_FORK_SUBAGENT=0` turns it
off, and `claude mcp serve` never offers forks. The desktop app and VS Code always run the
main conversation's subagents in the background, as the terminal does. The exception to
case 3 is a subagent's own Agent calls in `-p`, the Agent SDK, the desktop app and VS Code,
which run in the foreground by default. The sub-agents docs page still says fork mode is off for `-p` and the SDK (checked
2026-10-18), so case 4 as written above is the pre-2.1.302 behavior there.
Comment thread
MRSchexnayder marked this conversation as resolved.

A skill with `context: fork` follows the skills docs instead. Background agents get a smaller
built-in tool set than foreground ones, except forks and resumed foreground agents.

Expand Down Expand Up @@ -253,12 +261,15 @@ user prompt. Ignored for plugin agents. Does nothing when the file is used as a

### `autoCompactWindow`

Lets this agent auto-compact earlier than the main conversation's window (added in v2.1.296;
supported in frontmatter and `--agents` definitions). Same key name as the
`autoCompactWindow` setting, a token count, which the settings reference documents as 100000
to 1000000. The v2.1.296
changelog entry does not state the range or precedence for the frontmatter field, so verify
against the sub-agents docs page before relying on either.
Lets this agent auto-compact earlier than the main conversation's window (requires v2.1.296
or later; supported in frontmatter and `--agents` definitions). A token count from `100000`
to `1000000`. If `CLAUDE_CODE_AUTO_COMPACT_WINDOW` is set to a positive integer, the agent
uses that variable's window and the field has no effect.

Write a plain integer such as `200000`: in frontmatter `200k` is read as 200, which is out of
range. An out-of-range value is ignored (the agent still loads and compacts as if the field
were absent); search `claude --debug` output for `invalid autoCompactWindow` to confirm.
Source: <https://code.claude.com/docs/en/sub-agents#subagent-auto-compact-window>

### `experimental`

Expand Down Expand Up @@ -287,8 +298,7 @@ under `experimental`, not a top-level key. Not accepted in `--agents` JSON.
Session-only agents, not saved to disk. Each top-level key is the name; the value takes
`prompt` plus these fields: `description`, `tools`, `disallowedTools`, `model`,
`permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`,
`effort`, `background`, `omitClaudeMd`, `isolation`, and (v2.1.296, changelog only)
`autoCompactWindow`.
`effort`, `background`, `omitClaudeMd`, `isolation`, and (v2.1.296+) `autoCompactWindow`.

```bash
claude --agents '{
Expand Down
8 changes: 5 additions & 3 deletions skills/agent-creator-claudecode/references/tools-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,15 @@ same context.
| Need | How |
|---|---|
| Start one yourself | `/subtask <task>` (v2.1.212+; `/fork` on v2.1.161 through v2.1.211, and `/fork` also starts one when agent view is turned off) |
| Fork mode default | On in interactive sessions (v2.1.232+); off with `-p` and in the Agent SDK |
| Force fork mode | `CLAUDE_CODE_FORK_SUBAGENT=1` on everywhere, `0` off everywhere |
| Fork mode default | On in interactive sessions (v2.1.232+); off with `-p` and in the Agent SDK per the docs page. Changelog only (v2.1.302): also on by default in `-p`, the Agent SDK, the desktop app and VS Code, and `claude mcp serve` never offers forks |
Comment thread
MRSchexnayder marked this conversation as resolved.
| Force fork mode | `CLAUDE_CODE_FORK_SUBAGENT=1` on, `0` off, in every kind of session except `claude mcp serve`, which never offers forks (changelog only, v2.1.302) |
| Keep fork mode but stop Claude spawning forks | Deny the `fork` type: `Agent(fork)` in `permissions.deny` |
| Isolate a fork's edits | Claude passes `isolation: "worktree"` on the Agent call |

With fork mode on, Claude Code runs every subagent Claude spawns in the background, forks
and non-fork alike, and removes the Agent tool's `run_in_background` parameter. A fork cannot
and non-fork alike, and removes the Agent tool's `run_in_background` parameter (apart from the
cases that stay in the foreground; changelog only, v2.1.302: a subagent's own Agent calls in
`-p`, the Agent SDK, the desktop app and VS Code run in the foreground by default). A fork cannot
spawn further forks. Source: <https://code.claude.com/docs/en/sub-agents#fork-the-current-conversation>.

---
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ Claude Code ignores unrecognized fields without any error. Check in this order:
|---|---|---|
| `Agent '<name>' would be spawned with zero tools — refusing` | Every `tools` entry is **unrecognized** (typo such as `Grpe`), **not available to subagents** (`AskUserQuestion`, `Workflow`, `CronCreate` in the background), or **matched no tools in this session** (`mcp__github__*` with no GitHub server, `Agent` at the depth limit) | Fix each entry the error names. Or delete `tools` to inherit everything |
| Agent has fewer tools than listed, no error | Some entries resolved and others were dropped (background filter, unconnected MCP server) | Check the foreground/background note below; verify MCP servers are connected |
| Works with `--agent` but not when delegated | Delegated agents run in the background by default, with a reduced tool set | Remove entries only foreground agents get, set `background: false` and ask for foreground, or turn fork mode off |
| Works with `--agent` but not when delegated | Delegated agents run in the background by default, with a reduced tool set | Remove entries only foreground agents get, set `background: false` and ask for foreground, or turn fork mode off (`CLAUDE_CODE_FORK_SUBAGENT=0`) |
| `disallowedTools: Bash(git push *)` removed all of Bash | Specifiers remove the whole tool | Use a `permissions.deny` rule or a `PreToolUse` hook |
| Agent can edit despite `tools: Read, Grep` | `memory` enables Read, Write, and Edit for the memory directory | Drop `memory` or accept that Write/Edit are scoped to memory files |
| Agent cannot spawn subagents | `Agent` missing from `tools`, depth limit reached, or the tool is withheld at the limit | Add `Agent`; check `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` |
Expand Down
9 changes: 6 additions & 3 deletions skills/agent-creator-claudecode/scripts/validate-agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@
unknown or mis-cased fields, bad enum values, and fields ignored in a given scope.
Requires PyYAML. Exit status is 1 when any error is found (or any warning with --strict).

Field list last verified 2026-10-14 against Claude Code 2.1.299:
Field list last verified 2026-10-18 against Claude Code 2.1.302:
https://code.claude.com/docs/en/sub-agents#supported-frontmatter-fields
(`autoCompactWindow` comes from the v2.1.296 changelog; the docs table does not list it yet.)
"""

from __future__ import annotations
Expand Down Expand Up @@ -62,7 +61,8 @@
"experimental": "v2.1.248",
"autoCompactWindow": "v2.1.296",
}
NAME_MAX_LENGTH = 256 # longer names are skipped (docs: "Subagent files Claude Code skips")
AUTO_COMPACT_WINDOW_RANGE = (100_000, 1_000_000) # docs: "a token count from 100000 to 1000000"
NAME_MAX_LENGTH = 256 # longer names are skipped (docs: "Subagent files Claude Code skips")
SKILLS_PRELOAD_MAX = 32 # only the first 32 distinct names are preloaded
TOOL_NAME = re.compile(r"^[A-Za-z_][A-Za-z0-9_]*(\(.*\))?$")
CASE_INSENSITIVE = {f.lower(): f for f in KNOWN_FIELDS}
Expand Down Expand Up @@ -336,6 +336,9 @@ def validate(path: Path, plugin: bool) -> Report:
acw = data.get("autoCompactWindow")
if acw is not None and (isinstance(acw, bool) or not isinstance(acw, int) or acw < 1):
rep.error("autoCompactWindow: must be a positive integer number of tokens")
elif acw is not None and not AUTO_COMPACT_WINDOW_RANGE[0] <= acw <= AUTO_COMPACT_WINDOW_RANGE[1]:
rep.warn(f"autoCompactWindow: {acw} is outside {AUTO_COMPACT_WINDOW_RANGE[0]} to "
f"{AUTO_COMPACT_WINDOW_RANGE[1]}; Claude Code ignores it and compacts as if it were absent")

mcp = data.get("mcpServers")
if mcp is not None:
Expand Down
34 changes: 34 additions & 0 deletions skills/client-config-claudecode/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,40 @@

Changes to the `client-config-claudecode` skill, newest first.

## 2026-10-18 — v2.4 (verified against Claude Code 2.1.302)

Basis: Claude Code 2.1.302 (released 2026-10-16; npm `latest` and `next`, `stable` is
2.1.292), the 2.1.300–2.1.302 changelog, and the `code.claude.com/docs` pages fetched
2026-10-18. Claims only the changelog supports are labeled "changelog only" in the references.

- `references/permissions.md`: an MCP allow rule for a server whose name contains `__` or ends
in `_` is now documented upstream, so it is no longer labeled changelog only (deny and ask
rules still are); adds the auto mode classifier model (Sonnet 5 by default, with the fallbacks
the permission-modes page lists); changelog only: `CLAUDE_CODE_AUTO_MODE_MODEL` (v2.1.302),
server-side auto mode compacting a conversation too long for its safety check (v2.1.302), and
`claude -p`/Agent SDK sessions now starting in `default` on third-party providers, with
telemetry off, or on a fresh install (v2.1.302; the docs table still shows the earlier rule).
- `references/hooks.md`: the `prompt`/`agent` hook `model` default is now worded as the docs
give it (the model used for background functionality). Changelog only: agent hooks honor
`model` (v2.1.300), at most 12 prompt/agent hooks of one event run at once (v2.1.302),
`updatedInput` from `PreToolUse`/`PermissionRequest` hooks is validated (v2.1.300), a
`setMode` update in a `PermissionRequest` allow is ignored in Cowork cloud sessions
(v2.1.300), and plugin `WorktreeCreate`/`WorktreeRemove` hooks run with `--worktree`
(v2.1.300).
- `references/mcp.md`: adds the MCP docs page's rules for root-level `anyOf`/`oneOf`/`allOf`
schemas, invalid input schemas, and tool names over 128 characters; changelog only: a tool
whose schema the API still rejects is sent without parameters for the rest of the
conversation (v2.1.300).
- `references/settings-schema.md`: `advisorModel` notes `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` and
that the changelog adds `/advisor` on Claude Platform on AWS (v2.1.300) where the settings
reference still lists it as unavailable; `idleCompaction` notes the `/config` row (v2.1.302,
changelog only).
- Checked and unchanged: all 245 rows of the settings reference index are in the references and
the validator; every hook event in the hooks docs is covered; the Google Vertex AI page
claims hold.
- Evals: new `mcp-server-name-with-double-underscore` eval; not yet run (the README results
predate it).

## 2026-10-14 — v2.3 (verified against Claude Code 2.1.299)

Basis: Claude Code 2.1.299 (released 2026-10-14; npm `latest` and `next`, `stable` is
Expand Down
15 changes: 8 additions & 7 deletions skills/client-config-claudecode/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,23 @@ Evaluation results for the `client-config-claudecode` skill. The skill itself is
[SKILL.md](SKILL.md), and its history is in [CHANGELOG.md](CHANGELOG.md).

> [!NOTE]
> **Claude Code version:** verified against [Claude Code 2.1.299](https://github.com/anthropics/claude-code/releases/tag/v2.1.299)
> (released 2026-10-14; the npm `latest` and `next` tags on 2026-10-14, with `stable` at 2.1.287).
> **Claude Code version:** verified against [Claude Code 2.1.302](https://github.com/anthropics/claude-code/releases/tag/v2.1.302)
> (released 2026-10-16; the npm `latest` and `next` tags on 2026-10-18, with `stable` at 2.1.292).
> References come from the `code.claude.com/docs` pages listed in
> [assets/sources.json](assets/sources.json), checked against the changelog through 2.1.299.
> [assets/sources.json](assets/sources.json), checked against the changelog through 2.1.302.
> Where only the changelog supports a claim, the reference says so. Last re-verified
> 2026-10-14. Re-verify when Claude Code ships a new release.
> 2026-10-18. Re-verify when Claude Code ships a new release.

## Evaluation results

Benchmark run: **2026-04-26 · iteration 1** · 3 scenarios · 6 total runs

These results predate the 2026-09-24 v2.0 refresh, the 2026-10-11 v2.1 update, the
2026-10-13 v2.2 update, and the 2026-10-14 v2.3 update.
[evals/evals.json](evals/evals.json) holds the eval cases; it also includes four cases that
2026-10-13 v2.2 update, the 2026-10-14 v2.3 update, and the 2026-10-18 v2.4 update.
[evals/evals.json](evals/evals.json) holds the eval cases; it also includes five cases that
this run did not cover: `default-mode-scope` (added in v2.0), `hook-fail-closed` (added in
v2.1), `stop-hook-loop-cap` (added in v2.2), and `idle-compaction` (added in v2.3).
v2.1), `stop-hook-loop-cap` (added in v2.2), `idle-compaction` (added in v2.3), and
`mcp-server-name-with-double-underscore` (added in v2.4).

### Overall

Expand Down
20 changes: 20 additions & 0 deletions skills/client-config-claudecode/evals/evals.json
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,26 @@
"description": "Mentions the alternative of raising CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS (default 200000, floor 100000) instead of turning it off"
}
]
},
{
"id": 8,
"name": "mcp-server-name-with-double-underscore",
"prompt": "I have an MCP server configured as reports__v2. I added \"mcp__reports__v2\" to permissions.allow in settings.json but Claude still prompts for every one of its tools. What's wrong?",
"expected_output": "Explains that the bare mcp__reports__v2 rule is not read as a rule for the reports__v2 server: under the mcp__<server>__<tool> grammar it names server reports (and tool v2), so it does not match the reports__v2 server's tools, and gives mcp__reports__v2__* as the rule to write",
"assertions": [
{
"id": "misread-rule",
"description": "Explains that mcp__reports__v2 (and mcp__reports) is parsed against a server named reports (for mcp__reports__v2, with v2 as a tool name) and so does not allow the reports__v2 server's tools"
},
{
"id": "wildcard-form",
"description": "Gives mcp__reports__v2__* (the wildcard form with the whole server name) as the rule to write"
},
{
"id": "name-ends-underscore",
"description": "Notes the same wildcard form is needed for a server name that ends in an underscore"
}
]
}
]
}
Loading
Loading