diff --git a/CHANGELOG.md b/CHANGELOG.md
index adfed0a..1ada917 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,7 +2,7 @@
All notable changes to this project will be documented in this file.
-## [Unreleased]
+## [0.16.0] - 2026-10-02
### Fixed
- **A failing `` !`cmd` `` is documented per runtime, and the rule is "never let it fail".** The guide
@@ -29,6 +29,25 @@ All notable changes to this project will be documented in this file.
it needs the `claude` CLI on the shell's PATH.
- **Network egress is described as org-configurable**, not as denied by default.
+### Changed
+- **Runtime terms follow Anthropic's merge of Claude Cowork into Claude.** The text now says
+ *cloud session* and *local session* for the Claude app's task runtimes (defined once in
+ `environments.md`: not Claude Code on the web or the CLI), and *sandboxed session* for those plus the
+ chat runtime. "Cowork" stays only for identifiers and UI strings (`remote_cowork`, the lint target
+ `cowork`, `cowork-harness`), page titles, and the brand's first mention. Renamed headings keep
+ working references, including the README's old `#authoring-for-cowork` anchor.
+
+### Added
+- **The 2026-10-06 change for Pro and Max, as announced.** `environments.md` quotes Anthropic's
+ notice that new tasks, scheduled ones included, run in the cloud from that date and the "Only on your
+ computer" option is removed, and what it documents about reaching the user's files from a cloud
+ session (only connected folders, only while the desktop app is open). Local-session facts stay,
+ scoped to tasks already started locally and plans the change hasn't reached; a local session is
+ still possible where the older Chat/Cowork interface is offered, and only cloud sessions have been
+ seen with the newer one.
+- **What egress settings cover**, as Anthropic documents it. They govern the session's shell and network; web fetch and search,
+ MCP servers and Claude in Chrome sit outside them.
+
## [0.15.2] - 2026-10-01
### Fixed
diff --git a/README.md b/README.md
index 52514f9..d7d9c06 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
[](https://opensource.org/licenses/MIT)
[](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/plugins)
-The skill that builds skills. Draft one and ship it in a single pass, or run evals against a baseline and iterate until it measurably works — targeting Claude Code, Claude.ai or Cowork, whose runtimes differ in ways that silently break skills. You can also just ask it how skills work. Based on Anthropic's official [`skill-creator`](https://github.com/anthropics/claude-plugins-official) plugin, with bug fixes and best practices baked in.
+The skill that builds skills. Draft one and ship it in a single pass, or run evals against a baseline and iterate until it measurably works — targeting Claude Code, the Claude app's chat, or its cloud and local sessions (Claude Cowork, now part of Claude for accounts that have moved over) — runtimes that differ in ways that silently break skills. You can also just ask it how skills work. Based on Anthropic's official [`skill-creator`](https://github.com/anthropics/claude-plugins-official) plugin, with bug fixes and best practices baked in.
| | Official `skill-creator` | `skill-creator-plus` |
|---|---|---|
@@ -17,9 +17,9 @@ The skill that builds skills. Draft one and ship it in a single pass, or run eva
| Script vs. Instruct guidance | — | Decision framework for when to bundle scripts vs. use instructions |
| Structure validation | — | Frontmatter, naming and length caps against the [agentskills.io](https://agentskills.io/specification) spec |
| Cross-runtime linting | — | 14 rules for what breaks outside Claude Code — sub-agent, `claude` CLI and browser dependencies, third-party imports, file delivery, compaction |
-| Cowork authoring guidance | — | Runtime-specific guidance for Cowork's two lanes ([below](#authoring-for-cowork)) |
+| Cloud and local session guidance | — | Runtime-specific guidance for the Claude app's cloud and local sessions ([below](#authoring-for-cowork)) |
| Claude Code runtime docs | — | Listing budget + per-skill degradation order, permission semantics, truncation caps, live-reload behavior — verified against 2.1.222–2.1.251 (listing budget re-verified at 2.1.280) |
-| Eval viewer in Cowork | Silent fail on submit | Copyable JSON textarea (fixed) |
+| Eval viewer in cloud and local sessions | Silent fail on submit | Copyable JSON textarea (fixed) |
| Description optimizer | Requires separate `ANTHROPIC_API_KEY`; drifts toward 1,024-char bloat | Uses your existing `claude` session; length-aware selection + plateau early-stop |
| Benchmarking script | Silent empty results | Fixed directory handling |
| Skill type taxonomy | 3 broad categories | 3 + 9 Anthropic internal types |
@@ -30,7 +30,7 @@ The skill that builds skills. Draft one and ship it in a single pass, or run eva
Anthropic ships a `skill-creator` plugin. It's good, but several parts are broken or missing:
- **Best practices guide included** — 620+ lines of patterns, structural templates, troubleshooting guide, and checklists extracted from Anthropic's [Complete Guide to Building Skills for Claude](https://resources.anthropic.com/hubfs/The-Complete-Guide-to-Building-Skill-for-Claude.pdf) and Thariq's [Lessons from Building Claude Code Skills](https://x.com/trq212/status/2024574133011673516). Includes a "Script vs. Instruct" decision framework for when to bundle pre-made scripts vs. keep logic as instructions — covering context window efficiency, reliability, and auditability. The built-in doesn't ship any of this.
-- **A skill that works here can break there, silently** — the `claude` CLI exists only in Claude Code, so a `claude -p` step is dead anywhere else; the Claude app's chat runtime has no sub-agent tool, so parallel eval runs have to collapse to serial there (a Claude app conversation running as cloud Cowork does have one — route by the tool list, not the product); a Cowork agent can't serve a local HTTP server and open it, so the eval viewer needs a static build; a third-party import on Cowork costs an install on every run, and egress is org-configurable, so a locked-down org can refuse it; and file delivery differs per surface — on Cowork's remote lane, writing a file is not delivering it. Structure validation can't see any of that, so there are two checks: `quick_validate` for structure, and a 14-rule portability linter for runtime assumptions — including the two ways compaction loses a skill. Both are stdlib-only, because they have to run inside the sandboxes they lint. Rule ids, flags and exit codes are in [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md).
+- **A skill that works here can break there, silently** — the `claude` CLI exists only in Claude Code, so a `claude -p` step is dead anywhere else; the Claude app's chat runtime has no sub-agent tool, so parallel eval runs have to collapse to serial there (a Claude app conversation running in a cloud session does have one — route by the tool list, not the product); an agent in a cloud or local session can't serve a local HTTP server and open it, so the eval viewer needs a static build; a third-party import there costs an install on every run, and egress is org-configurable, so a locked-down org can refuse it; and file delivery differs per surface — in a cloud session, writing a file is not delivering it. Structure validation can't see any of that, so there are two checks: `quick_validate` for structure, and a 14-rule portability linter for runtime assumptions — including the two ways compaction loses a skill. Both are stdlib-only, because they have to run inside the sandboxes they lint. Rule ids, flags and exit codes are in [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md).
- **Claude Code runtime docs** — the mechanics most skill authors hit the hard way, read out of the shipping binary rather than inherited from a blog post: overflow of the shared listing budget drops descriptions **per skill, least-recently-used first**, packing first-fit, so full and name-only entries coexist and a long description can lose to a shorter one; `allowed-tools` **grants** permission rather than requesting it; and compaction is a CHARACTER gate, not the documented token one, losing content two different ways — truncation keeps the first 19,900 characters and leaves a marker, while the combined cross-skill cap **zeroes** a skill outright with no marker and no entry. Verified against Claude Code 2.1.222–2.1.251; the listing budget re-verified at 2.1.280. Where the public docs and the binary disagree, [the reference](skill-creator-plus/skills/skill-creator-plus/references/official-guide-patterns.md) says so and shows which one shipped.
The eval viewer, description optimizer and benchmarking fixes are in the table above; see the [CHANGELOG](CHANGELOG.md) for the full list.
@@ -85,16 +85,17 @@ Then repeat. Order is flexible, and an existing draft can join at step 1.
- **Blind A/B comparison** — the comparator agent scores two outputs without knowing which skill produced them; the analyzer agent then unblinds and explains the differences.
- **Description optimization** — generates trigger and non-trigger queries, runs an optimization loop with a train/test split, and selects the best-performing description. A description is what decides whether your skill is ever invoked at all.
-## Authoring for Cowork
+
+## Authoring for cloud and local sessions
-Cowork breaks assumptions that hold everywhere else, and it breaks them *quietly* — the write succeeds, the tool reports success, and the file is somewhere nobody will look. The skill knows about:
+Cloud and local sessions break assumptions that hold everywhere else, and it breaks them *quietly* — the write succeeds, the tool reports success, and the file is somewhere nobody will look. The skill knows about:
-- **Where the workspace must live.** The skill directory is a read-only plugin mount, so the workspace can't sit beside it. The agent falls back to the session scratchpad — which on the remote lane is reclaimed at session end, destroying the skill it just built.
+- **Where the workspace must live.** The skill directory is a read-only plugin mount, so the workspace can't sit beside it. The agent falls back to the session scratchpad — which in a cloud session is reclaimed at session end, destroying the skill it just built.
- **File tools and the shell don't share a working directory.** No single relative path is correct for both, so the identifier and the base have to stay apart.
-- **Writing a file is not delivering it.** On the remote lane a file written and never presented through a tool is silently lost. Delivery is two steps, always taught in order.
-- **A script's stdout is not delivery for text, either.** Tool-call output is collapsed in the Cowork transcript, so anything the user actually needs to read has to be said, not printed.
+- **Writing a file is not delivering it.** In a cloud session a file written and never presented through a tool is silently lost. Delivery is two steps, always taught in order.
+- **A script's stdout is not delivery for text, either.** Tool-call output is collapsed in a cloud or local session's transcript, so anything the user actually needs to read has to be said, not printed.
-Parts of this are authoring guidance rather than verified behavior, and the guidance says which is which. For the current, dated state of Cowork's runtime — what was checked, when, and on which Desktop and agent builds — see [Writing skills that survive Cowork](https://ccinternals.dev/cowork/) on ccinternals.dev, which most of this guidance draws on. See [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) for the linter's flags, rule ids and exit codes.
+Parts of this are authoring guidance rather than verified behavior, and the guidance says which is which. For the current, dated state of these runtimes — what was checked, when, and on which Desktop and agent builds — see [Writing skills that survive Cowork](https://ccinternals.dev/cowork/) on ccinternals.dev, which most of this guidance draws on. See [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) for the linter's flags, rule ids and exit codes.
## Installation
diff --git a/VERSION b/VERSION
index 4312e0d..04a373e 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.15.2
+0.16.0
diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md
index 024376f..65f3d27 100644
--- a/docs/DEVELOPMENT.md
+++ b/docs/DEVELOPMENT.md
@@ -10,17 +10,17 @@ python skill-creator-plus/skills/skill-creator-plus/scripts/quick_validate.py sk
# Cross-runtime portability lint (stdlib-only; --target claude-code|claude-ai|cowork|all)
cd skill-creator-plus/skills/skill-creator-plus && python -m scripts.check_portability . --target all
# Rules: desc-over-hard-cap, listing-entry-truncation, listing-desc-drop-risk, subagent-dependency,
-# claude-cli-dependency, browser-display-dependency, outputs-prefix-relative (Cowork-only:
+# claude-cli-dependency, browser-display-dependency, outputs-prefix-relative (cowork target only:
# a workspace under a relative `outputs/` path: refused on Desktop 2.7032.0+, nested and hidden on older
-# Desktop, lost in cloud Cowork),
+# Desktop, lost in a cloud session),
# relative-output-path (ADVISORY, claude-ai + cowork: SKILL.md or references/ tells the model to
-# write a file to a bare relative path — invisible in cloud Cowork, refused by local Cowork's file
-# tools, outside the outputs dir on the chat runtime. Precision over recall: imperative write verb +
+# write a file to a bare relative path — invisible in a cloud session, refused by a local session's
+# file tools, outside the outputs dir on the chat runtime. Precision over recall: imperative write verb +
# relative file path only; silent on absolute/~/$VAR/ bases, bundled files, a basename
# the file anchors elsewhere, a stated base on the line, cd-to-absolute fences, and any line
# outputs-prefix-relative already owns. Suppress per file with
# ``),
-# thirdparty-import (allowlisted against Cowork's
+# thirdparty-import (allowlisted against the local session's
# preinstalled stack), delivery-tool-single-lane, delivery-conditional-deliverable,
# plugin-bin-directory (PLUGIN-level, claude-ai-only: the plugin root — the dir holding
# `.claude-plugin/plugin.json` — has a non-empty `bin/`, which claude.ai rejects OUTRIGHT from
@@ -120,7 +120,7 @@ cowork-harness verify-cassettes harness/cassettes --allow-empty
## cowork-harness dogfood suite (`harness/`)
-`harness/` regression-tests this repo's own skill under Claude Cowork's runtime contract. It is
+`harness/` regression-tests this repo's own skill under the runtime contract of a cloud or local session. It is
maintainer CI, not part of the user-facing skill workflow. Full instructions: `harness/README.md`.
- **CI** (`.github/workflows/harness.yml`) runs the token-free static lane on every PR/push:
diff --git a/harness/cassettes/no-trigger.cassette.json b/harness/cassettes/no-trigger.cassette.json
index 3eed2bf..128a0c8 100644
--- a/harness/cassettes/no-trigger.cassette.json
+++ b/harness/cassettes/no-trigger.cassette.json
@@ -25,39 +25,39 @@
"requires_capabilities": []
},
"events": [
- "{\"type\":\"control_request\",\"request_id\":\"76b8b50e-0782-44bc-ab67-f43ec2bd929f\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"workspace\",\"message\":{\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"claude-code\",\"title\":\"Claude Code\",\"description\":\"Anthropic's agentic coding tool\",\"websiteUrl\":\"https://claude.com/claude-code\",\"version\":\"2.1.286\"}},\"jsonrpc\":\"2.0\",\"id\":0}}}",
- "{\"type\":\"control_request\",\"request_id\":\"0a3fe720-9336-4bc6-a307-bc23922f6a9a\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"cowork\",\"message\":{\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"claude-code\",\"title\":\"Claude Code\",\"description\":\"Anthropic's agentic coding tool\",\"websiteUrl\":\"https://claude.com/claude-code\",\"version\":\"2.1.286\"}},\"jsonrpc\":\"2.0\",\"id\":0}}}",
- "{\"type\":\"control_request\",\"request_id\":\"6788888b-fcb1-497e-af51-fba397202fe1\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"skills\",\"message\":{\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"claude-code\",\"title\":\"Claude Code\",\"description\":\"Anthropic's agentic coding tool\",\"websiteUrl\":\"https://claude.com/claude-code\",\"version\":\"2.1.286\"}},\"jsonrpc\":\"2.0\",\"id\":0}}}",
- "{\"type\":\"control_request\",\"request_id\":\"e24c2771-caed-4047-804c-4ace64e90bc3\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"plugins\",\"message\":{\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"claude-code\",\"title\":\"Claude Code\",\"description\":\"Anthropic's agentic coding tool\",\"websiteUrl\":\"https://claude.com/claude-code\",\"version\":\"2.1.286\"}},\"jsonrpc\":\"2.0\",\"id\":0}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"init-1\",\"response\":{\"commands\":[{\"name\":\"deep-research\",\"description\":\"Deep research harness — fan-out web searches, fetch sources, adversarially verify claims, synthesize a cited report. (dynamic workflow)\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"skill-creator-plus:skill-creator-plus\",\"description\":\"(skill-creator-plus) Create, test, evaluate, and improve Claude skills — and answer questions about how skills work. Use for \\\"create a skill\\\", \\\"make a skill for\\\", \\\"write a SKILL.md\\\", \\\"turn this into a skill\\\", \\\"run evals\\\", \\\"test/benchmark my skill\\\", \\\"optimize my skill description\\\", \\\"improve triggering\\\", \\\"A/B test my skill\\\", \\\"blind comparison\\\", packaging for distribution, editing an existing skill, or reviewing skill quality. Also for a single narrow question about skill mechanics, however small — referencing a bundled script or reference doc, path variables, frontmatter fields, directory layout, size limits, or what breaks across Claude Code, Claude.ai and Cowork.\",\"argumentHint\":\"\",\"aliases\":[\"skill-creator-plus\"]},{\"name\":\"design\",\"description\":\"Grant or revoke Claude agent access to your Design projects\",\"argumentHint\":\"consent | revoke\",\"builtin\":true},{\"name\":\"advisor\",\"description\":\"Let Claude consult a stronger model at key moments\",\"argumentHint\":\"[fable|opus|sonnet|off]\",\"builtin\":true},{\"name\":\"agents\",\"description\":\"(removed) Ask Claude to create/manage subagents, or edit .claude/agents/\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"auto-mode-setup\",\"description\":\"Teach auto mode about your environment, plus optional rule tweaks\",\"argumentHint\":\"[--request-id ] (--wizard posture=… scope=… depth=… --propose | --expect-sha256 <64-hex> --apply-file )\",\"builtin\":true},{\"name\":\"autocompact\",\"description\":\"Configure the auto-compact window size\",\"argumentHint\":\"[auto|]\",\"builtin\":true},{\"name\":\"clear\",\"description\":\"Start a new session with empty context; previous session stays on disk (resumable with /resume)\",\"argumentHint\":\"[name]\",\"aliases\":[\"reset\",\"new\"],\"builtin\":true},{\"name\":\"color\",\"description\":\"Set the prompt bar color for this session\",\"argumentHint\":\"[red|blue|green|yellow|purple|orange|pink|cyan|default]\",\"builtin\":true},{\"name\":\"compact\",\"description\":\"Free up context by summarizing the conversation so far\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"config\",\"description\":\"Set a setting by key\",\"argumentHint\":\"key=value\",\"aliases\":[\"settings\"],\"builtin\":true},{\"name\":\"output-style\",\"description\":\"List output styles or switch to one\",\"argumentHint\":\"[style]\",\"builtin\":true},{\"name\":\"context\",\"description\":\"Show current context usage\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"effort\",\"description\":\"Set effort level for model usage\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"fast\",\"description\":\"Toggle fast mode (Opus 5.5)\",\"argumentHint\":\"[on|off]\",\"builtin\":true},{\"name\":\"focus\",\"description\":\"Toggle focus view: just your prompt, summary, and response\",\"argumentHint\":\"[on|off]\",\"builtin\":true},{\"name\":\"heapdump\",\"description\":\"Dump the JS heap to the Desktop; on Linux with no Desktop folder, the home directory\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"init\",\"description\":\"Initialize a new CLAUDE.md file with codebase documentation\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"mcp\",\"description\":\"Manage MCP servers\",\"argumentHint\":\"[reconnect|enable|disable [|all]]\",\"builtin\":true},{\"name\":\"import\",\"description\":\"Import config from another AI coding agent\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"model\",\"description\":\"Set the AI model for Claude Code\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"__remote-workflow\",\"description\":\"Run the workflow script delivered in this session environment (server-launched sessions only)\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"workflow-launch-exec\",\"description\":\"Execute a server-launched workflow handoff (workflow_launch event sessions only)\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"plugin-types\",\"description\":\"Write claude-code.d.ts, claude-code-plugins.d.ts and claude-code-mcp.d.ts: the plugin API's TypeScript declarations, the enabled plugins' type contracts and the inputs of the connected MCP tools, for typing a hooks module against this session\",\"argumentHint\":\"[dir]\",\"builtin\":true},{\"name\":\"reload-plugins\",\"description\":\"Activate pending plugin changes in the current session\",\"argumentHint\":\"[--force]\",\"builtin\":true},{\"name\":\"reload-skills\",\"description\":\"Pick up skills added or changed on disk during this session\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"rename\",\"description\":\"Rename the current conversation\",\"argumentHint\":\"[name]\",\"aliases\":[\"name\"],\"builtin\":true},{\"name\":\"security-review\",\"description\":\"Complete a security review of the pending changes on the current branch\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"usage\",\"description\":\"Show session cost, plan usage, and what's contributing to your limits\",\"argumentHint\":\"\",\"aliases\":[\"cost\",\"stats\"],\"builtin\":true},{\"name\":\"insights\",\"description\":\"Generate a report analyzing your Claude Code sessions\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"recap\",\"description\":\"Generate a one-line session recap now\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"skill-doctor\",\"description\":\"Show which loaded skills are unused and costing context\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"goal\",\"description\":\"Set a goal — keep working until the condition is met\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"design-consent\",\"description\":\"Grant Claude agent access to your Design projects\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"design-revoke\",\"description\":\"Revoke Claude agent access to your Design projects\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"list-agents\",\"description\":\"List subagents, teammates, and other Claude sessions you can message\",\"argumentHint\":\"\",\"aliases\":[\"peers\"],\"builtin\":true},{\"name\":\"team-onboarding\",\"description\":\"Help teammates ramp on Claude Code with a guide from your usage\",\"argumentHint\":\"\",\"builtin\":true}],\"agents\":[{\"name\":\"claude\",\"description\":\"Catch-all for any task that doesn't fit a more specific agent. FleetView's default when no agent name is typed.\"},{\"name\":\"claude-code-guide\",\"description\":\"Use this agent when the user asks questions (\\\"Can Claude...\\\", \\\"Does Claude...\\\", \\\"How do I...\\\") about: (1) Claude Code (the CLI tool) - features, hooks, slash commands, MCP servers, settings, IDE integrations, keyboard shortcuts; (2) Claude Agent SDK - building custom agents; (3) Claude API (formerly Anthropic API) - Messages API for directly passing messages to Claude, Tool Runner (`client.beta.messages.tool_runner`) for running an agentic loop over your own tools, manual tool-use loops, Managed Agents for server-hosted agents with a managed sandbox, prompt caching, and general Anthropic SDK usage; (4) Claude Tag (Claude in Slack) - what it is, setting it up for a Slack workspace, `/install-slack-app`; (5) `claude plugin eval` (writing and running plugin eval suites, its JSON/report, sandbox, CI) and the `/skill-doctor` report. **IMPORTANT:** Before spawning a new agent, check if there is already a running or recently completed claude-code-guide agent that you can continue via SendMessage.\",\"model\":\"haiku\"},{\"name\":\"Explore\",\"description\":\"Fast read-only search agent for locating code. Use it to find files by pattern (eg. \\\"src/components/**/*.tsx\\\"), grep for symbols or keywords (eg. \\\"API endpoints\\\"), or answer \\\"where is X defined / which files reference Y.\\\" Do NOT use it for code review, design-doc auditing, cross-file consistency checks, or open-ended analysis — it reads excerpts rather than whole files and will miss content past its read window. When calling, specify search breadth: \\\"quick\\\" for a single targeted lookup, \\\"medium\\\" for moderate exploration, or \\\"very thorough\\\" to search across multiple locations and naming conventions.\",\"model\":\"inherit\"},{\"name\":\"general-purpose\",\"description\":\"General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries use this agent to perform the search for you.\"},{\"name\":\"Plan\",\"description\":\"Software architect agent for designing implementation plans. Use this when you need to plan the implementation strategy for a task. Returns step-by-step plans, identifies critical files, and considers architectural trade-offs.\",\"model\":\"inherit\"},{\"name\":\"statusline-setup\",\"description\":\"Use this agent to configure the user's Claude Code status line setting.\",\"model\":\"sonnet\"}],\"output_style\":\"default\",\"available_output_styles\":[\"default\",\"Proactive\",\"Concise\",\"Explanatory\",\"Learning\"],\"user_output_styles_dir\":\"/sessions/local_avwqn42465/mnt/.claude/output-styles\",\"models\":[{\"value\":\"default\",\"resolvedModel\":\"claude-sonnet-5-5\",\"displayName\":\"Default (recommended)\",\"description\":\"Sonnet 5.5 · Efficient for routine tasks\",\"supportsEffort\":true,\"supportedEffortLevels\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"],\"supportsAdaptiveThinking\":true,\"supportsAutoMode\":true},{\"value\":\"sonnet\",\"resolvedModel\":\"claude-sonnet-5-5\",\"displayName\":\"Sonnet\",\"description\":\"Sonnet 5.5 · Efficient for routine tasks\",\"supportsEffort\":true,\"supportedEffortLevels\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"],\"supportsAdaptiveThinking\":true,\"supportsAutoMode\":true},{\"value\":\"claude-fable-5-1\",\"resolvedModel\":\"claude-fable-5-1\",\"displayName\":\"Fable\",\"description\":\"Fable 5.1 · Most capable for your hardest and longest-running tasks\",\"supportsEffort\":true,\"supportedEffortLevels\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"],\"supportsAdaptiveThinking\":true,\"supportsAutoMode\":true},{\"value\":\"opus\",\"resolvedModel\":\"claude-opus-5-5\",\"displayName\":\"Opus\",\"description\":\"Opus 5.5 · Best for everyday, complex tasks\",\"supportsEffort\":true,\"supportedEffortLevels\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"],\"supportsAdaptiveThinking\":true,\"supportsFastMode\":true,\"supportsAutoMode\":true},{\"value\":\"haiku\",\"resolvedModel\":\"claude-haiku-4-5-20251001\",\"displayName\":\"Haiku\",\"description\":\"Haiku 4.5 · Fastest for quick answers\"},{\"value\":\"claude-opus-5\",\"resolvedModel\":\"claude-opus-5\",\"displayName\":\"Opus 5\",\"description\":\"Newer version available · select Opus for Opus 5.5\",\"supportsEffort\":true,\"supportedEffortLevels\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"],\"supportsAdaptiveThinking\":true,\"supportsFastMode\":true,\"supportsAutoMode\":true}],\"account\":{\"tokenSource\":\"CLAUDE_CODE_OAUTH_TOKEN\",\"apiProvider\":\"firstParty\"},\"pid\":1,\"current_permission_mode\":\"default\",\"hooks_applied\":true,\"feedback_mode\":{\"kind\":\"post\"},\"analytics_disabled\":false,\"remote_control_auto_enable\":false,\"remote_control_auto_connect_default\":false,\"remote_control_available\":true,\"remote_control_auto_on_by_default\":false,\"ide_rc_auto_enable_gate\":true,\"fast_mode_state\":\"off\",\"fast_mode_disabled_reason\":\"sdk_opt_in_required\",\"session_state\":\"idle\",\"capabilities\":[\"ui_surface_v1\"]},\"pending_permission_requests\":[],\"pending_user_dialog_requests\":[]}}",
- "{\"type\":\"control_request\",\"request_id\":\"d1ee087b-9c40-4996-a78c-709e96e90b85\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"workspace\",\"message\":{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}}}",
- "{\"type\":\"control_request\",\"request_id\":\"1887712c-b41c-4809-a4f9-1ae6c6405257\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"cowork\",\"message\":{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}}}",
- "{\"type\":\"control_request\",\"request_id\":\"5f65aa75-151e-4df7-982c-dd840e3bdd85\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"skills\",\"message\":{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}}}",
- "{\"type\":\"control_request\",\"request_id\":\"40ca6b5e-c471-46dd-bc57-29ff0ca44400\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"plugins\",\"message\":{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}}}",
- "{\"type\":\"control_request\",\"request_id\":\"83fffd3b-f75f-408c-b381-fe2fff5957d1\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"workspace\",\"message\":{\"method\":\"tools/list\",\"jsonrpc\":\"2.0\",\"id\":1}}}",
- "{\"type\":\"control_request\",\"request_id\":\"888c87d2-35e6-4662-a8b3-afab726b1f6b\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"cowork\",\"message\":{\"method\":\"tools/list\",\"jsonrpc\":\"2.0\",\"id\":1}}}",
- "{\"type\":\"control_request\",\"request_id\":\"d1fdcb5f-7569-4444-a1c7-bc3e98216061\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"skills\",\"message\":{\"method\":\"tools/list\",\"jsonrpc\":\"2.0\",\"id\":1}}}",
- "{\"type\":\"control_request\",\"request_id\":\"36b1181d-eb0d-43eb-8c60-8c5b951fc6bc\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"plugins\",\"message\":{\"method\":\"tools/list\",\"jsonrpc\":\"2.0\",\"id\":1}}}",
- "{\"type\":\"system\",\"subtype\":\"init\",\"cwd\":\"/sessions/local_avwqn42465\",\"session_id\":\"490910bd-08a1-4e69-8f0d-6ce1d4c23663\",\"tools\":[\"Task\",\"AskUserQuestion\",\"Bash\",\"Edit\",\"Glob\",\"Grep\",\"NotebookEdit\",\"Read\",\"Skill\",\"TaskCreate\",\"TaskGet\",\"TaskList\",\"TaskStop\",\"TaskUpdate\",\"ToolSearch\",\"WebSearch\",\"Write\",\"mcp__cowork__present_files\",\"mcp__plugins__list_plugins\",\"mcp__plugins__search_plugins\",\"mcp__plugins__suggest_plugin_install\",\"mcp__skills__list_skills\",\"mcp__skills__suggest_skills\",\"mcp__workspace__web_fetch\"],\"mcp_servers\":[{\"name\":\"workspace\",\"status\":\"connected\",\"source\":\"sdk\"},{\"name\":\"cowork\",\"status\":\"connected\",\"source\":\"sdk\"},{\"name\":\"skills\",\"status\":\"connected\",\"source\":\"sdk\"},{\"name\":\"plugins\",\"status\":\"connected\",\"source\":\"sdk\"}],\"model\":\"claude-opus-5\",\"permissionMode\":\"default\",\"slash_commands\":[\"deep-research\",\"skill-creator-plus:skill-creator-plus\",\"design\",\"advisor\",\"agents\",\"auto-mode-setup\",\"autocompact\",\"clear\",\"color\",\"compact\",\"config\",\"output-style\",\"context\",\"effort\",\"fast\",\"focus\",\"heapdump\",\"init\",\"mcp\",\"import\",\"model\",\"__remote-workflow\",\"workflow-launch-exec\",\"plugin-types\",\"reload-plugins\",\"reload-skills\",\"rename\",\"security-review\",\"usage\",\"insights\",\"recap\",\"skill-doctor\",\"goal\",\"design-consent\",\"design-revoke\",\"list-agents\",\"team-onboarding\"],\"terminal_slash_commands\":[\"color\",\"focus\",\"reload-plugins\"],\"apiKeySource\":\"none\",\"claude_code_version\":\"2.1.286\",\"output_style\":\"default\",\"agents\":[\"claude\",\"claude-code-guide\",\"Explore\",\"general-purpose\",\"Plan\",\"statusline-setup\"],\"skills\":[\"deep-research\",\"skill-creator-plus:skill-creator-plus\",\"design\"],\"plugins\":[{\"name\":\"skill-creator-plus\",\"path\":\"/sessions/local_avwqn42465/mnt/.local-plugins/marketplaces/local-desktop-app-uploads/skill-creator-plus\",\"source\":\"skill-creator-plus@inline\",\"version\":\"0.15.2\"},{\"name\":\"cc-plugin-agents-md\",\"path\":\"builtin\",\"source\":\"cc-plugin-agents-md@builtin\"},{\"name\":\"cc-plugin-telemetry\",\"path\":\"builtin\",\"source\":\"cc-plugin-telemetry@builtin\"}],\"capabilities\":[\"interrupt_receipt_v1\",\"interrupt_cancel_queued_v1\",\"msg_lifecycle_v1\",\"sdk_mcp_tools_list_changed\",\"sdk_mcp_manifests\",\"mcp_read_resource_v1\",\"mcp_tool_ui_meta_v1\",\"ui_surface_v1\"],\"analytics_disabled\":false,\"product_feedback_disabled\":false,\"uuid\":\"3f0f4de6-4e00-431e-af1c-f782b3f76215\",\"memory_paths\":{\"auto\":\"/sessions/local_avwqn42465/mnt/.claude/projects/-sessions-local-avwqn42465/memory/\"},\"messaging_socket_path\":\"/tmp/cc-socks/1.sock\",\"fast_mode_state\":\"off\",\"fast_mode_disabled_reason\":\"sdk_opt_in_required\",\"per_turn_effort_active\":false,\"view_mode\":\"default\"}",
- "{\"type\":\"assistant\",\"message\":{\"model\":\"claude-opus-5\",\"id\":\"msg_011CfdhXv9aGGmE7sAJuk8UY\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"Paris.\"}],\"container\":null,\"stop_reason\":null,\"stop_sequence\":null,\"stop_details\":null,\"usage\":{\"input_tokens\":2,\"cache_creation_input_tokens\":20789,\"cache_read_input_tokens\":0,\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":20789},\"output_tokens\":2,\"service_tier\":\"standard\",\"inference_geo\":\"not_available\"},\"input_transformations\":[],\"diagnostics\":null,\"context_management\":null},\"parent_tool_use_id\":null,\"session_id\":\"490910bd-08a1-4e69-8f0d-6ce1d4c23663\",\"uuid\":\"508eff62-4ff2-4001-a7c2-c9a191fca9cb\",\"timestamp\":\"2026-10-02T16:08:22.166Z\",\"request_id\":\"req_011CfdhXuRv9iT96KeY1s5od\"}",
- "{\"type\":\"rate_limit_event\",\"rate_limit_info\":{\"status\":\"allowed\",\"resetsAt\":1790974800,\"rateLimitType\":\"five_hour\",\"overageStatus\":\"allowed\",\"overageResetsAt\":1793491200,\"isUsingOverage\":false,\"unifiedWindows\":{\"five_hour\":{\"utilization\":0,\"resetsAt\":1790974800},\"seven_day\":{\"utilization\":0.03,\"resetsAt\":1791428400}}},\"uuid\":\"7bc3d8f6-52f6-49bc-8147-74909fc7b0f1\",\"session_id\":\"490910bd-08a1-4e69-8f0d-6ce1d4c23663\"}",
- "{\"duration_api_ms\":1605,\"stop_reason\":\"end_turn\",\"session_id\":\"490910bd-08a1-4e69-8f0d-6ce1d4c23663\",\"total_cost_usd\":0.20804999999999998,\"usage\":{\"input_tokens\":2,\"cache_creation_input_tokens\":20789,\"cache_read_input_tokens\":0,\"output_tokens\":6,\"output_tokens_details\":{\"thinking_tokens\":0},\"server_tool_use\":{\"web_search_requests\":0,\"web_fetch_requests\":0},\"service_tier\":\"standard\",\"cache_creation\":{\"ephemeral_1h_input_tokens\":20789,\"ephemeral_5m_input_tokens\":0},\"inference_geo\":\"not_available\",\"iterations\":[{\"input_tokens\":2,\"output_tokens\":6,\"cache_read_input_tokens\":0,\"cache_creation_input_tokens\":20789,\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":20789},\"type\":\"message\"}],\"speed\":\"standard\",\"fallback_credit\":null},\"modelUsage\":{\"claude-opus-5\":{\"inputTokens\":2,\"outputTokens\":6,\"cacheReadInputTokens\":0,\"cacheCreationInputTokens\":20789,\"webSearchRequests\":0,\"costUSD\":0.20804999999999998,\"contextWindow\":1000000,\"maxOutputTokens\":64000,\"thinkingTokens\":0,\"canonicalModel\":\"claude-opus-5\",\"provider\":\"firstParty\",\"costBasis\":\"list\"}},\"permission_denials\":[],\"terminal_reason\":\"completed\",\"fast_mode_state\":\"off\",\"fast_mode_disabled_reason\":\"sdk_opt_in_required\",\"subagent_stats\":{\"spawned\":0,\"requested\":{\"background\":0,\"foreground\":0,\"unset\":0},\"started_in_background\":0,\"max_depth\":0,\"spawned_by_subagents\":0,\"completed\":0,\"failed\":0,\"killed\":{\"parent\":0,\"user\":0,\"system\":0},\"refused\":{\"depth_limit\":0,\"concurrency_limit\":0,\"budget\":0},\"by_type\":{}},\"is_error\":false,\"num_turns\":1,\"subtype\":\"success\",\"api_error_status\":null,\"result\":\"Paris.\",\"ttft_ms\":1609,\"type\":\"result\",\"duration_ms\":1683,\"uuid\":\"1aa395a2-7f9f-415a-82ac-1c6a1a135f95\",\"ttft_stream_ms\":1120,\"time_to_request_ms\":50,\"first_content_frame_ms\":1122,\"queued_turn_count\":0,\"result_index\":0}"
+ "{\"type\":\"control_request\",\"request_id\":\"c25e6efb-101b-478d-a726-11eb27ddf256\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"workspace\",\"message\":{\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"claude-code\",\"title\":\"Claude Code\",\"description\":\"Anthropic's agentic coding tool\",\"websiteUrl\":\"https://claude.com/claude-code\",\"version\":\"2.1.286\"}},\"jsonrpc\":\"2.0\",\"id\":0}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"877d8756-93f5-4216-89be-47bf87b0937a\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"cowork\",\"message\":{\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"claude-code\",\"title\":\"Claude Code\",\"description\":\"Anthropic's agentic coding tool\",\"websiteUrl\":\"https://claude.com/claude-code\",\"version\":\"2.1.286\"}},\"jsonrpc\":\"2.0\",\"id\":0}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"dcad59f7-1624-4e51-be28-54c6a090ced8\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"skills\",\"message\":{\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"claude-code\",\"title\":\"Claude Code\",\"description\":\"Anthropic's agentic coding tool\",\"websiteUrl\":\"https://claude.com/claude-code\",\"version\":\"2.1.286\"}},\"jsonrpc\":\"2.0\",\"id\":0}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"8c474c35-7f51-41fa-9bf4-e494aaaa7cc2\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"plugins\",\"message\":{\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{},\"clientInfo\":{\"name\":\"claude-code\",\"title\":\"Claude Code\",\"description\":\"Anthropic's agentic coding tool\",\"websiteUrl\":\"https://claude.com/claude-code\",\"version\":\"2.1.286\"}},\"jsonrpc\":\"2.0\",\"id\":0}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"init-1\",\"response\":{\"commands\":[{\"name\":\"deep-research\",\"description\":\"Deep research harness — fan-out web searches, fetch sources, adversarially verify claims, synthesize a cited report. (dynamic workflow)\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"skill-creator-plus:skill-creator-plus\",\"description\":\"(skill-creator-plus) Create, test, evaluate, and improve Claude skills — and answer questions about how skills work. Use for \\\"create a skill\\\", \\\"make a skill for\\\", \\\"write a SKILL.md\\\", \\\"turn this into a skill\\\", \\\"run evals\\\", \\\"test/benchmark my skill\\\", \\\"optimize my skill description\\\", \\\"improve triggering\\\", \\\"A/B test my skill\\\", \\\"blind comparison\\\", packaging for distribution, editing an existing skill, or reviewing skill quality. Also for a single narrow question about skill mechanics, however small — referencing a bundled script or reference doc, path variables, frontmatter fields, directory layout, size limits, or what breaks across Claude Code, Claude.ai and Cowork.\",\"argumentHint\":\"\",\"aliases\":[\"skill-creator-plus\"]},{\"name\":\"design\",\"description\":\"Grant or revoke Claude agent access to your Design projects\",\"argumentHint\":\"consent | revoke\",\"builtin\":true},{\"name\":\"advisor\",\"description\":\"Let Claude consult a stronger model at key moments\",\"argumentHint\":\"[fable|opus|sonnet|off]\",\"builtin\":true},{\"name\":\"agents\",\"description\":\"(removed) Ask Claude to create/manage subagents, or edit .claude/agents/\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"auto-mode-setup\",\"description\":\"Teach auto mode about your environment, plus optional rule tweaks\",\"argumentHint\":\"[--request-id ] (--wizard posture=… scope=… depth=… --propose | --expect-sha256 <64-hex> --apply-file )\",\"builtin\":true},{\"name\":\"autocompact\",\"description\":\"Configure the auto-compact window size\",\"argumentHint\":\"[auto|]\",\"builtin\":true},{\"name\":\"clear\",\"description\":\"Start a new session with empty context; previous session stays on disk (resumable with /resume)\",\"argumentHint\":\"[name]\",\"aliases\":[\"reset\",\"new\"],\"builtin\":true},{\"name\":\"color\",\"description\":\"Set the prompt bar color for this session\",\"argumentHint\":\"[red|blue|green|yellow|purple|orange|pink|cyan|default]\",\"builtin\":true},{\"name\":\"compact\",\"description\":\"Free up context by summarizing the conversation so far\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"config\",\"description\":\"Set a setting by key\",\"argumentHint\":\"key=value\",\"aliases\":[\"settings\"],\"builtin\":true},{\"name\":\"output-style\",\"description\":\"List output styles or switch to one\",\"argumentHint\":\"[style]\",\"builtin\":true},{\"name\":\"context\",\"description\":\"Show current context usage\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"effort\",\"description\":\"Set effort level for model usage\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"fast\",\"description\":\"Toggle fast mode (Opus 5.5)\",\"argumentHint\":\"[on|off]\",\"builtin\":true},{\"name\":\"focus\",\"description\":\"Toggle focus view: just your prompt, summary, and response\",\"argumentHint\":\"[on|off]\",\"builtin\":true},{\"name\":\"heapdump\",\"description\":\"Dump the JS heap to the Desktop; on Linux with no Desktop folder, the home directory\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"init\",\"description\":\"Initialize a new CLAUDE.md file with codebase documentation\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"mcp\",\"description\":\"Manage MCP servers\",\"argumentHint\":\"[reconnect|enable|disable [|all]]\",\"builtin\":true},{\"name\":\"import\",\"description\":\"Import config from another AI coding agent\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"model\",\"description\":\"Set the AI model for Claude Code\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"__remote-workflow\",\"description\":\"Run the workflow script delivered in this session environment (server-launched sessions only)\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"workflow-launch-exec\",\"description\":\"Execute a server-launched workflow handoff (workflow_launch event sessions only)\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"plugin-types\",\"description\":\"Write claude-code.d.ts, claude-code-plugins.d.ts and claude-code-mcp.d.ts: the plugin API's TypeScript declarations, the enabled plugins' type contracts and the inputs of the connected MCP tools, for typing a hooks module against this session\",\"argumentHint\":\"[dir]\",\"builtin\":true},{\"name\":\"reload-plugins\",\"description\":\"Activate pending plugin changes in the current session\",\"argumentHint\":\"[--force]\",\"builtin\":true},{\"name\":\"reload-skills\",\"description\":\"Pick up skills added or changed on disk during this session\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"rename\",\"description\":\"Rename the current conversation\",\"argumentHint\":\"[name]\",\"aliases\":[\"name\"],\"builtin\":true},{\"name\":\"security-review\",\"description\":\"Complete a security review of the pending changes on the current branch\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"usage\",\"description\":\"Show session cost, plan usage, and what's contributing to your limits\",\"argumentHint\":\"\",\"aliases\":[\"cost\",\"stats\"],\"builtin\":true},{\"name\":\"insights\",\"description\":\"Generate a report analyzing your Claude Code sessions\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"recap\",\"description\":\"Generate a one-line session recap now\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"skill-doctor\",\"description\":\"Show which loaded skills are unused and costing context\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"goal\",\"description\":\"Set a goal — keep working until the condition is met\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"design-consent\",\"description\":\"Grant Claude agent access to your Design projects\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"design-revoke\",\"description\":\"Revoke Claude agent access to your Design projects\",\"argumentHint\":\"\",\"builtin\":true},{\"name\":\"list-agents\",\"description\":\"List subagents, teammates, and other Claude sessions you can message\",\"argumentHint\":\"\",\"aliases\":[\"peers\"],\"builtin\":true},{\"name\":\"team-onboarding\",\"description\":\"Help teammates ramp on Claude Code with a guide from your usage\",\"argumentHint\":\"\",\"builtin\":true}],\"agents\":[{\"name\":\"claude\",\"description\":\"Catch-all for any task that doesn't fit a more specific agent. FleetView's default when no agent name is typed.\"},{\"name\":\"claude-code-guide\",\"description\":\"Use this agent when the user asks questions (\\\"Can Claude...\\\", \\\"Does Claude...\\\", \\\"How do I...\\\") about: (1) Claude Code (the CLI tool) - features, hooks, slash commands, MCP servers, settings, IDE integrations, keyboard shortcuts; (2) Claude Agent SDK - building custom agents; (3) Claude API (formerly Anthropic API) - Messages API for directly passing messages to Claude, Tool Runner (`client.beta.messages.tool_runner`) for running an agentic loop over your own tools, manual tool-use loops, Managed Agents for server-hosted agents with a managed sandbox, prompt caching, and general Anthropic SDK usage; (4) Claude Tag (Claude in Slack) - what it is, setting it up for a Slack workspace, `/install-slack-app`; (5) `claude plugin eval` (writing and running plugin eval suites, its JSON/report, sandbox, CI) and the `/skill-doctor` report. **IMPORTANT:** Before spawning a new agent, check if there is already a running or recently completed claude-code-guide agent that you can continue via SendMessage.\",\"model\":\"haiku\"},{\"name\":\"Explore\",\"description\":\"Fast read-only search agent for locating code. Use it to find files by pattern (eg. \\\"src/components/**/*.tsx\\\"), grep for symbols or keywords (eg. \\\"API endpoints\\\"), or answer \\\"where is X defined / which files reference Y.\\\" Do NOT use it for code review, design-doc auditing, cross-file consistency checks, or open-ended analysis — it reads excerpts rather than whole files and will miss content past its read window. When calling, specify search breadth: \\\"quick\\\" for a single targeted lookup, \\\"medium\\\" for moderate exploration, or \\\"very thorough\\\" to search across multiple locations and naming conventions.\",\"model\":\"inherit\"},{\"name\":\"general-purpose\",\"description\":\"General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries use this agent to perform the search for you.\"},{\"name\":\"Plan\",\"description\":\"Software architect agent for designing implementation plans. Use this when you need to plan the implementation strategy for a task. Returns step-by-step plans, identifies critical files, and considers architectural trade-offs.\",\"model\":\"inherit\"},{\"name\":\"statusline-setup\",\"description\":\"Use this agent to configure the user's Claude Code status line setting.\",\"model\":\"sonnet\"}],\"output_style\":\"default\",\"available_output_styles\":[\"default\",\"Proactive\",\"Concise\",\"Explanatory\",\"Learning\"],\"user_output_styles_dir\":\"/sessions/local_azyc3bpolk/mnt/.claude/output-styles\",\"models\":[{\"value\":\"default\",\"resolvedModel\":\"claude-sonnet-5-5\",\"displayName\":\"Default (recommended)\",\"description\":\"Sonnet 5.5 · Efficient for routine tasks\",\"supportsEffort\":true,\"supportedEffortLevels\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"],\"supportsAdaptiveThinking\":true,\"supportsAutoMode\":true},{\"value\":\"sonnet\",\"resolvedModel\":\"claude-sonnet-5-5\",\"displayName\":\"Sonnet\",\"description\":\"Sonnet 5.5 · Efficient for routine tasks\",\"supportsEffort\":true,\"supportedEffortLevels\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"],\"supportsAdaptiveThinking\":true,\"supportsAutoMode\":true},{\"value\":\"claude-fable-5-1\",\"resolvedModel\":\"claude-fable-5-1\",\"displayName\":\"Fable\",\"description\":\"Fable 5.1 · Most capable for your hardest and longest-running tasks\",\"supportsEffort\":true,\"supportedEffortLevels\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"],\"supportsAdaptiveThinking\":true,\"supportsAutoMode\":true},{\"value\":\"opus\",\"resolvedModel\":\"claude-opus-5-5\",\"displayName\":\"Opus\",\"description\":\"Opus 5.5 · Best for everyday, complex tasks\",\"supportsEffort\":true,\"supportedEffortLevels\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"],\"supportsAdaptiveThinking\":true,\"supportsFastMode\":true,\"supportsAutoMode\":true},{\"value\":\"haiku\",\"resolvedModel\":\"claude-haiku-4-5-20251001\",\"displayName\":\"Haiku\",\"description\":\"Haiku 4.5 · Fastest for quick answers\"},{\"value\":\"claude-opus-5\",\"resolvedModel\":\"claude-opus-5\",\"displayName\":\"Opus 5\",\"description\":\"Newer version available · select Opus for Opus 5.5\",\"supportsEffort\":true,\"supportedEffortLevels\":[\"low\",\"medium\",\"high\",\"xhigh\",\"max\"],\"supportsAdaptiveThinking\":true,\"supportsFastMode\":true,\"supportsAutoMode\":true}],\"account\":{\"tokenSource\":\"CLAUDE_CODE_OAUTH_TOKEN\",\"apiProvider\":\"firstParty\"},\"pid\":1,\"current_permission_mode\":\"default\",\"hooks_applied\":true,\"feedback_mode\":{\"kind\":\"post\"},\"analytics_disabled\":false,\"remote_control_auto_enable\":false,\"remote_control_auto_connect_default\":false,\"remote_control_available\":true,\"remote_control_auto_on_by_default\":false,\"ide_rc_auto_enable_gate\":true,\"fast_mode_state\":\"off\",\"fast_mode_disabled_reason\":\"sdk_opt_in_required\",\"session_state\":\"idle\",\"capabilities\":[\"ui_surface_v1\"]},\"pending_permission_requests\":[],\"pending_user_dialog_requests\":[]}}",
+ "{\"type\":\"control_request\",\"request_id\":\"99e02a45-18e3-40ee-adfb-4e1c570928d3\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"workspace\",\"message\":{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"64e36a3a-94a3-4bcf-acf9-79188444fcd4\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"cowork\",\"message\":{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"93a0294f-2440-4c6e-8b9a-ad6e23a1eaf3\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"skills\",\"message\":{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"335baac8-c4e3-47bc-b478-20450c9975cb\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"plugins\",\"message\":{\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"fbddfdf5-7fff-4e2f-b64c-053e7304b04e\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"workspace\",\"message\":{\"method\":\"tools/list\",\"jsonrpc\":\"2.0\",\"id\":1}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"4b1d37b6-570f-4a86-ae69-266bd58a19c9\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"cowork\",\"message\":{\"method\":\"tools/list\",\"jsonrpc\":\"2.0\",\"id\":1}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"c7807d0c-37d5-48f6-aac8-97a1434603a7\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"skills\",\"message\":{\"method\":\"tools/list\",\"jsonrpc\":\"2.0\",\"id\":1}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"a6ef9c94-2883-4eab-9ed6-06d8e6fe1673\",\"request\":{\"subtype\":\"mcp_message\",\"server_name\":\"plugins\",\"message\":{\"method\":\"tools/list\",\"jsonrpc\":\"2.0\",\"id\":1}}}",
+ "{\"type\":\"system\",\"subtype\":\"init\",\"cwd\":\"/sessions/local_azyc3bpolk\",\"session_id\":\"b4cdb096-a26b-4892-84a3-b100e3abfc78\",\"tools\":[\"Task\",\"AskUserQuestion\",\"Bash\",\"Edit\",\"Glob\",\"Grep\",\"NotebookEdit\",\"Read\",\"Skill\",\"TaskCreate\",\"TaskGet\",\"TaskList\",\"TaskStop\",\"TaskUpdate\",\"ToolSearch\",\"WebSearch\",\"Write\",\"mcp__cowork__present_files\",\"mcp__plugins__list_plugins\",\"mcp__plugins__search_plugins\",\"mcp__plugins__suggest_plugin_install\",\"mcp__skills__list_skills\",\"mcp__skills__suggest_skills\",\"mcp__workspace__web_fetch\"],\"mcp_servers\":[{\"name\":\"workspace\",\"status\":\"connected\",\"source\":\"sdk\"},{\"name\":\"cowork\",\"status\":\"connected\",\"source\":\"sdk\"},{\"name\":\"skills\",\"status\":\"connected\",\"source\":\"sdk\"},{\"name\":\"plugins\",\"status\":\"connected\",\"source\":\"sdk\"}],\"model\":\"claude-opus-5\",\"permissionMode\":\"default\",\"slash_commands\":[\"deep-research\",\"skill-creator-plus:skill-creator-plus\",\"design\",\"advisor\",\"agents\",\"auto-mode-setup\",\"autocompact\",\"clear\",\"color\",\"compact\",\"config\",\"output-style\",\"context\",\"effort\",\"fast\",\"focus\",\"heapdump\",\"init\",\"mcp\",\"import\",\"model\",\"__remote-workflow\",\"workflow-launch-exec\",\"plugin-types\",\"reload-plugins\",\"reload-skills\",\"rename\",\"security-review\",\"usage\",\"insights\",\"recap\",\"skill-doctor\",\"goal\",\"design-consent\",\"design-revoke\",\"list-agents\",\"team-onboarding\"],\"terminal_slash_commands\":[\"color\",\"focus\",\"reload-plugins\"],\"apiKeySource\":\"none\",\"claude_code_version\":\"2.1.286\",\"output_style\":\"default\",\"agents\":[\"claude\",\"claude-code-guide\",\"Explore\",\"general-purpose\",\"Plan\",\"statusline-setup\"],\"skills\":[\"deep-research\",\"skill-creator-plus:skill-creator-plus\",\"design\"],\"plugins\":[{\"name\":\"skill-creator-plus\",\"path\":\"/sessions/local_azyc3bpolk/mnt/.local-plugins/marketplaces/local-desktop-app-uploads/skill-creator-plus\",\"source\":\"skill-creator-plus@inline\",\"version\":\"0.16.0\"},{\"name\":\"cc-plugin-agents-md\",\"path\":\"builtin\",\"source\":\"cc-plugin-agents-md@builtin\"},{\"name\":\"cc-plugin-telemetry\",\"path\":\"builtin\",\"source\":\"cc-plugin-telemetry@builtin\"}],\"capabilities\":[\"interrupt_receipt_v1\",\"interrupt_cancel_queued_v1\",\"msg_lifecycle_v1\",\"sdk_mcp_tools_list_changed\",\"sdk_mcp_manifests\",\"mcp_read_resource_v1\",\"mcp_tool_ui_meta_v1\",\"ui_surface_v1\"],\"analytics_disabled\":false,\"product_feedback_disabled\":false,\"uuid\":\"9462f0c6-1b86-4739-b1be-874452400675\",\"memory_paths\":{\"auto\":\"/sessions/local_azyc3bpolk/mnt/.claude/projects/-sessions-local-azyc3bpolk/memory/\"},\"messaging_socket_path\":\"/tmp/cc-socks/1.sock\",\"fast_mode_state\":\"off\",\"fast_mode_disabled_reason\":\"sdk_opt_in_required\",\"per_turn_effort_active\":false,\"view_mode\":\"default\"}",
+ "{\"type\":\"assistant\",\"message\":{\"model\":\"claude-opus-5\",\"id\":\"msg_011Cfdx2unCSDdQwRAUzWSiA\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"Paris.\"}],\"container\":null,\"stop_reason\":null,\"stop_sequence\":null,\"stop_details\":null,\"usage\":{\"input_tokens\":2,\"cache_creation_input_tokens\":20844,\"cache_read_input_tokens\":0,\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":20844},\"output_tokens\":6,\"service_tier\":\"standard\",\"inference_geo\":\"not_available\"},\"input_transformations\":[],\"diagnostics\":null,\"context_management\":null},\"parent_tool_use_id\":null,\"session_id\":\"b4cdb096-a26b-4892-84a3-b100e3abfc78\",\"uuid\":\"e3c3cd65-1f20-4768-9e56-45793ace1fde\",\"timestamp\":\"2026-10-02T19:18:30.819Z\",\"request_id\":\"req_011Cfdx2uHS52gbUdq3KbcnT\"}",
+ "{\"type\":\"rate_limit_event\",\"rate_limit_info\":{\"status\":\"allowed\",\"resetsAt\":1790974800,\"rateLimitType\":\"five_hour\",\"overageStatus\":\"allowed\",\"overageResetsAt\":1793491200,\"isUsingOverage\":false,\"unifiedWindows\":{\"five_hour\":{\"utilization\":0,\"resetsAt\":1790974800},\"seven_day\":{\"utilization\":0.03,\"resetsAt\":1791428400}}},\"uuid\":\"7ff8750f-d1af-4d41-a65d-8bcbf6040c2f\",\"session_id\":\"b4cdb096-a26b-4892-84a3-b100e3abfc78\"}",
+ "{\"duration_api_ms\":1353,\"stop_reason\":\"end_turn\",\"session_id\":\"b4cdb096-a26b-4892-84a3-b100e3abfc78\",\"total_cost_usd\":0.2086,\"usage\":{\"input_tokens\":2,\"cache_creation_input_tokens\":20844,\"cache_read_input_tokens\":0,\"output_tokens\":6,\"output_tokens_details\":{\"thinking_tokens\":0},\"server_tool_use\":{\"web_search_requests\":0,\"web_fetch_requests\":0},\"service_tier\":\"standard\",\"cache_creation\":{\"ephemeral_1h_input_tokens\":20844,\"ephemeral_5m_input_tokens\":0},\"inference_geo\":\"not_available\",\"iterations\":[{\"input_tokens\":2,\"output_tokens\":6,\"cache_read_input_tokens\":0,\"cache_creation_input_tokens\":20844,\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":20844},\"type\":\"message\"}],\"speed\":\"standard\",\"fallback_credit\":null},\"modelUsage\":{\"claude-opus-5\":{\"inputTokens\":2,\"outputTokens\":6,\"cacheReadInputTokens\":0,\"cacheCreationInputTokens\":20844,\"webSearchRequests\":0,\"costUSD\":0.2086,\"contextWindow\":1000000,\"maxOutputTokens\":64000,\"thinkingTokens\":0,\"canonicalModel\":\"claude-opus-5\",\"provider\":\"firstParty\",\"costBasis\":\"list\"}},\"permission_denials\":[],\"terminal_reason\":\"completed\",\"fast_mode_state\":\"off\",\"fast_mode_disabled_reason\":\"sdk_opt_in_required\",\"subagent_stats\":{\"spawned\":0,\"requested\":{\"background\":0,\"foreground\":0,\"unset\":0},\"started_in_background\":0,\"max_depth\":0,\"spawned_by_subagents\":0,\"completed\":0,\"failed\":0,\"killed\":{\"parent\":0,\"user\":0,\"system\":0},\"refused\":{\"depth_limit\":0,\"concurrency_limit\":0,\"budget\":0},\"by_type\":{}},\"is_error\":false,\"num_turns\":1,\"subtype\":\"success\",\"api_error_status\":null,\"result\":\"Paris.\",\"ttft_ms\":1384,\"type\":\"result\",\"duration_ms\":1409,\"uuid\":\"8c70ab01-2343-4a7c-9e16-308c088220f0\",\"ttft_stream_ms\":1383,\"time_to_request_ms\":48,\"first_content_frame_ms\":1383,\"queued_turn_count\":0,\"result_index\":0}"
],
"controlOut": [
- "{\"type\":\"control_request\",\"request_id\":\"init-1\",\"request\":{\"subtype\":\"initialize\",\"appendSubagentSystemPrompt\":\"## Cowork environment\\n\\nYou are running as a subagent inside a Cowork session. Shell commands execute in an isolated Linux sandbox rooted at /sessions/local_avwqn42465 — files created there (or under /tmp) exist only in the sandbox, not on the user's real computer. User-attached folders are mounted under /sessions/local_avwqn42465/mnt/.\\n\\nTo use a skill — including one that comes from a plugin — call the `Skill` tool with the skill's name. A plugin skill's name has the form `plugin-name:skill-name`.\",\"sdkMcpServers\":[\"workspace\",\"cowork\",\"skills\",\"plugins\"],\"hooks\":{\"PreToolUse\":[{\"matcher\":\"Task\",\"hookCallbackIds\":[\"cowork-task-bg-block\"]}]},\"toolAliases\":{\"WebFetch\":\"mcp__workspace__web_fetch\"}}}",
+ "{\"type\":\"control_request\",\"request_id\":\"init-1\",\"request\":{\"subtype\":\"initialize\",\"appendSubagentSystemPrompt\":\"## Cowork environment\\n\\nYou are running as a subagent inside a Cowork session. Shell commands execute in an isolated Linux sandbox rooted at /sessions/local_azyc3bpolk — files created there (or under /tmp) exist only in the sandbox, not on the user's real computer. User-attached folders are mounted under /sessions/local_azyc3bpolk/mnt/.\\n\\nTo use a skill — including one that comes from a plugin — call the `Skill` tool with the skill's name. A plugin skill's name has the form `plugin-name:skill-name`.\",\"sdkMcpServers\":[\"workspace\",\"cowork\",\"skills\",\"plugins\"],\"hooks\":{\"PreToolUse\":[{\"matcher\":\"Task\",\"hookCallbackIds\":[\"cowork-task-bg-block\"]}]},\"toolAliases\":{\"WebFetch\":\"mcp__workspace__web_fetch\"}}}",
"{\"type\":\"user\",\"message\":{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"What's the capital of France?\\n\"}]}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"76b8b50e-0782-44bc-ab67-f43ec2bd929f\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"workspace\",\"version\":\"1.0.0\"}}}}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"0a3fe720-9336-4bc6-a307-bc23922f6a9a\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"cowork\",\"version\":\"1.0.0\"}}}}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"6788888b-fcb1-497e-af51-fba397202fe1\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"skills\",\"version\":\"1.0.0\"}}}}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"e24c2771-caed-4047-804c-4ace64e90bc3\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"plugins\",\"version\":\"1.0.0\"}}}}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"d1ee087b-9c40-4996-a78c-709e96e90b85\",\"response\":{}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"1887712c-b41c-4809-a4f9-1ae6c6405257\",\"response\":{}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"5f65aa75-151e-4df7-982c-dd840e3bdd85\",\"response\":{}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"40ca6b5e-c471-46dd-bc57-29ff0ca44400\",\"response\":{}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"83fffd3b-f75f-408c-b381-fe2fff5957d1\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"tools\":[{\"name\":\"web_fetch\",\"description\":\"Fetch a URL from the session network (subject to the egress allowlist). web_fetch can only retrieve URLs that appeared in a user message or a prior result.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"}},\"required\":[\"url\"]}}]}}}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"888c87d2-35e6-4662-a8b3-afab726b1f6b\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"tools\":[{\"name\":\"present_files\",\"description\":\"Deliver a file to the user so they can open it on their own computer. If the file is in your scratchpad (not under a mounted folder), it is copied into mnt/outputs first and the new path is returned — keep working against that returned path, not the scratchpad original.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}},\"required\":[\"file_path\"]}}},\"required\":[\"files\"]},\"_meta\":{\"anthropic/alwaysLoad\":true}}]}}}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"d1fdcb5f-7569-4444-a1c7-bc3e98216061\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"tools\":[{\"name\":\"list_skills\",\"description\":\"List the skills installed in this session. Omit skill_names to show every installed skill; pass skill_names to highlight specific ones, or keywords to filter by topic. Call this with no arguments when the user asks what skills they have or to show their skills. If nothing matches, fall back to suggest_skills.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"skill_names\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"keywords\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"context_label\":{\"type\":\"string\"}},\"required\":[]},\"_meta\":{\"anthropic/alwaysLoad\":true}},{\"name\":\"suggest_skills\",\"description\":\"Render an interactive widget of standalone skills the user can add — org, shared, or Anthropic skills that are not yet enabled — each with an Add button. Call this when the user's task is the kind a skill would make repeatable (drafting to a house style, reviewing against a playbook or checklist, recurring reports, a domain workflow they will do again) and nothing they have installed covers it; the user does not have to ask about skills first. Also call it when they ask for recommendations outright, ask about a domain they have nothing installed for, or when list_skills came back with no matches. For skills they already have, use list_skills instead.\\nDo NOT call this when: the task is a one-off you can simply answer; you are not confident a skill would genuinely help; or you already rendered a suggestion earlier in this conversation and the user did not engage with it.\\nPass keywords taken from the task itself rather than generic terms, and set trigger — \\\"proactive\\\" when you raised this from task context, \\\"user_asked\\\" when the user asked. This covers standalone skills only, so when search_plugins is available call it too, with the same keywords and the same trigger (a relevant skill may live inside an uninstalled plugin). Do NOT write a lead-in before calling this — pass context_label for the header instead. The result may come back empty; its note field tells you what to do next.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"keywords\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"context_label\":{\"type\":\"string\"},\"trigger\":{\"type\":\"string\",\"enum\":[\"user_asked\",\"proactive\"]}},\"required\":[]},\"_meta\":{\"anthropic/alwaysLoad\":true}}]}}}}}",
- "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"36b1181d-eb0d-43eb-8c60-8c5b951fc6bc\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"tools\":[{\"name\":\"list_plugins\",\"description\":\"List the plugins installed in this session, each with its skills. Omit keywords to show every installed plugin; pass keywords to filter by topic over each plugin's name/description/skills. context_label is a display-only header — it does not filter.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"keywords\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"context_label\":{\"type\":\"string\"}},\"required\":[]},\"_meta\":{\"anthropic/alwaysLoad\":true}},{\"name\":\"search_plugins\",\"description\":\"Search for a plugin that could help with the user's request. Pass userIntent as the request verbatim or lightly paraphrased (not pre-tokenized keywords); keywords is optional extra filtering. Set includeInstalled to also consider already-installed plugins (onboarding).\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"userIntent\":{\"type\":\"string\"},\"keywords\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"includeInstalled\":{\"type\":\"boolean\"},\"trigger\":{\"type\":\"string\",\"enum\":[\"user_asked\",\"proactive\"]}},\"required\":[\"userIntent\"]},\"_meta\":{\"anthropic/alwaysLoad\":true}},{\"name\":\"suggest_plugin_install\",\"description\":\"Render an install suggestion for one or more plugins. contextLabel is a short (3-5 word) header (\\\"For your …\\\"); plugins is the list of candidates to suggest, each with pluginName, pluginId, and description.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"contextLabel\":{\"type\":\"string\"},\"plugins\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"pluginName\":{\"type\":\"string\"},\"pluginId\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"backendId\":{\"type\":\"string\"},\"skills\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"}},\"required\":[\"name\"]}}},\"required\":[\"pluginName\",\"pluginId\",\"description\"]}}},\"required\":[\"contextLabel\",\"plugins\"]},\"_meta\":{\"anthropic/alwaysLoad\":true}}]}}}}}"
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"c25e6efb-101b-478d-a726-11eb27ddf256\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"workspace\",\"version\":\"1.0.0\"}}}}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"877d8756-93f5-4216-89be-47bf87b0937a\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"cowork\",\"version\":\"1.0.0\"}}}}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"dcad59f7-1624-4e51-be28-54c6a090ced8\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"skills\",\"version\":\"1.0.0\"}}}}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"8c474c35-7f51-41fa-9bf4-e494aaaa7cc2\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":0,\"result\":{\"protocolVersion\":\"2025-11-25\",\"capabilities\":{\"tools\":{}},\"serverInfo\":{\"name\":\"plugins\",\"version\":\"1.0.0\"}}}}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"99e02a45-18e3-40ee-adfb-4e1c570928d3\",\"response\":{}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"64e36a3a-94a3-4bcf-acf9-79188444fcd4\",\"response\":{}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"93a0294f-2440-4c6e-8b9a-ad6e23a1eaf3\",\"response\":{}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"335baac8-c4e3-47bc-b478-20450c9975cb\",\"response\":{}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"fbddfdf5-7fff-4e2f-b64c-053e7304b04e\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"tools\":[{\"name\":\"web_fetch\",\"description\":\"Fetch a URL from the session network (subject to the egress allowlist). web_fetch can only retrieve URLs that appeared in a user message or a prior result.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\"}},\"required\":[\"url\"]}}]}}}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"4b1d37b6-570f-4a86-ae69-266bd58a19c9\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"tools\":[{\"name\":\"present_files\",\"description\":\"Deliver a file to the user so they can open it on their own computer. If the file is in your scratchpad (not under a mounted folder), it is copied into mnt/outputs first and the new path is returned — keep working against that returned path, not the scratchpad original.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"file_path\":{\"type\":\"string\"}},\"required\":[\"file_path\"]}}},\"required\":[\"files\"]},\"_meta\":{\"anthropic/alwaysLoad\":true}}]}}}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"c7807d0c-37d5-48f6-aac8-97a1434603a7\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"tools\":[{\"name\":\"list_skills\",\"description\":\"List the skills installed in this session. Omit skill_names to show every installed skill; pass skill_names to highlight specific ones, or keywords to filter by topic. Call this with no arguments when the user asks what skills they have or to show their skills. If nothing matches, fall back to suggest_skills.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"skill_names\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"keywords\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"context_label\":{\"type\":\"string\"}},\"required\":[]},\"_meta\":{\"anthropic/alwaysLoad\":true}},{\"name\":\"suggest_skills\",\"description\":\"Render an interactive widget of standalone skills the user can add — org, shared, or Anthropic skills that are not yet enabled — each with an Add button. Call this when the user's task is the kind a skill would make repeatable (drafting to a house style, reviewing against a playbook or checklist, recurring reports, a domain workflow they will do again) and nothing they have installed covers it; the user does not have to ask about skills first. Also call it when they ask for recommendations outright, ask about a domain they have nothing installed for, or when list_skills came back with no matches. For skills they already have, use list_skills instead.\\nDo NOT call this when: the task is a one-off you can simply answer; you are not confident a skill would genuinely help; or you already rendered a suggestion earlier in this conversation and the user did not engage with it.\\nPass keywords taken from the task itself rather than generic terms, and set trigger — \\\"proactive\\\" when you raised this from task context, \\\"user_asked\\\" when the user asked. This covers standalone skills only, so when search_plugins is available call it too, with the same keywords and the same trigger (a relevant skill may live inside an uninstalled plugin). Do NOT write a lead-in before calling this — pass context_label for the header instead. The result may come back empty; its note field tells you what to do next.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"keywords\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"context_label\":{\"type\":\"string\"},\"trigger\":{\"type\":\"string\",\"enum\":[\"user_asked\",\"proactive\"]}},\"required\":[]},\"_meta\":{\"anthropic/alwaysLoad\":true}}]}}}}}",
+ "{\"type\":\"control_response\",\"response\":{\"subtype\":\"success\",\"request_id\":\"a6ef9c94-2883-4eab-9ed6-06d8e6fe1673\",\"response\":{\"mcp_response\":{\"jsonrpc\":\"2.0\",\"id\":1,\"result\":{\"tools\":[{\"name\":\"list_plugins\",\"description\":\"List the plugins installed in this session, each with its skills. Omit keywords to show every installed plugin; pass keywords to filter by topic over each plugin's name/description/skills. context_label is a display-only header — it does not filter.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"keywords\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"context_label\":{\"type\":\"string\"}},\"required\":[]},\"_meta\":{\"anthropic/alwaysLoad\":true}},{\"name\":\"search_plugins\",\"description\":\"Search for a plugin that could help with the user's request. Pass userIntent as the request verbatim or lightly paraphrased (not pre-tokenized keywords); keywords is optional extra filtering. Set includeInstalled to also consider already-installed plugins (onboarding).\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"userIntent\":{\"type\":\"string\"},\"keywords\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"includeInstalled\":{\"type\":\"boolean\"},\"trigger\":{\"type\":\"string\",\"enum\":[\"user_asked\",\"proactive\"]}},\"required\":[\"userIntent\"]},\"_meta\":{\"anthropic/alwaysLoad\":true}},{\"name\":\"suggest_plugin_install\",\"description\":\"Render an install suggestion for one or more plugins. contextLabel is a short (3-5 word) header (\\\"For your …\\\"); plugins is the list of candidates to suggest, each with pluginName, pluginId, and description.\",\"inputSchema\":{\"type\":\"object\",\"properties\":{\"contextLabel\":{\"type\":\"string\"},\"plugins\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"pluginName\":{\"type\":\"string\"},\"pluginId\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"backendId\":{\"type\":\"string\"},\"skills\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"}},\"required\":[\"name\"]}}},\"required\":[\"pluginName\",\"pluginId\",\"description\"]}}},\"required\":[\"contextLabel\",\"plugins\"]},\"_meta\":{\"anthropic/alwaysLoad\":true}}]}}}}}"
],
"effectiveFidelity": "container",
"artifacts": [],
@@ -71,9 +71,9 @@
"fingerprint": {
"baseline": "2.9939.2",
"hashFormat": "jcs1",
- "skillHash": "4594731c10468c05fe7b65f94c753d76105beafd83dfe50a77405270f37472d2",
+ "skillHash": "dc9bae9e4c163aefbfbabc692b899663741fdfa1c82413092f99f49380913152",
"promptAssetsHash": "267cb799c2e18b49",
- "contentSig": "7f935b83265cd19c84afab50c27d9af3fd78ff1b16e00ba09b5a157ab4fbd717",
+ "contentSig": "edaab2a9cf352e82c6fa446466c2fcb86589e0b321a034726a62097ee8df85a5",
"skillSources": [
"../../skill-creator-plus"
],
@@ -85,7 +85,7 @@
],
[
"skills/skill-creator-plus/SKILL.md",
- "74da464cc63756f31ac0b328d0db7dfe6ad86e3a0c5b25b5a241a753455be503"
+ "da998daca2918b7d13b016a8696ba0a448e5bc0e355590b3ae29d775464bd3fa"
],
[
"skills/skill-creator-plus/agents/analyzer.md",
@@ -105,11 +105,11 @@
],
[
"skills/skill-creator-plus/assets/plugin-bin-launcher.sh",
- "814bd664a4fb41504ca2bc7f573a88a017bc89ff92ec10b148dc5e580fa0b0a9"
+ "a0cc103f5636c6c56f557ecfc2d3621e0239add3d4943969e3e9da13e1c8773a"
],
[
"skills/skill-creator-plus/assets/skill-script-invocation.md",
- "360055d3837d655dc4c005dcf770ab043fc1e5b98c228223e892cf00c69ac974"
+ "d1b58e08e3f230d9a659614cb9999cf3311db07e1866cbdb5fd60996c54d636e"
],
[
"skills/skill-creator-plus/references/description-optimization.md",
@@ -117,11 +117,11 @@
],
[
"skills/skill-creator-plus/references/environments.md",
- "ee57c57c9b99c46b215edb36d659c76d2d2b4b98355494170c0146348a8ab50c"
+ "fad5a181197f7544265e33aafc2b08b32c8b35e3a2719213d061010432b62d17"
],
[
"skills/skill-creator-plus/references/official-guide-patterns.md",
- "4b265e0dd6037ff3e7c4feb0d80b362141700accc1bf92c1c2479e96b1def554"
+ "690b095fb5ee447f9096da40550055d17f56f54b7dded9a590451577bddf8598"
],
[
"skills/skill-creator-plus/references/schemas.md",
@@ -137,11 +137,11 @@
],
[
"skills/skill-creator-plus/scripts/check_portability.py",
- "6ec61bae8ae77dca11f636544ad0c3ef8c9c9fbe9f3229563c24213773a7a83f"
+ "54c4ffcc14159b17f462ef4647a3ff217e146d5bb785cc2b0ffaa8db9e945a84"
],
[
"skills/skill-creator-plus/scripts/frontmatter.py",
- "2e6a4b17568abd129450f8940b674b6feba715ecb7344ec2de7bdddd559b819d"
+ "995e076e2cc8484c79750ecad5893ed119f2ccfb1540baf4de55ebb340398143"
],
[
"skills/skill-creator-plus/scripts/generate_report.py",
@@ -161,7 +161,7 @@
],
[
"skills/skill-creator-plus/scripts/requirements.txt",
- "20221834a213f062965c64eca717abef65205d47acbd193e10b58a64ede42e38"
+ "a6645a1f7673633bd164369952a91fcb5907466c723dd485b88ce4b4bda07083"
],
[
"skills/skill-creator-plus/scripts/run_eval.py",
@@ -169,7 +169,7 @@
],
[
"skills/skill-creator-plus/scripts/run_loop.py",
- "2b44a01619b931150c4bca604f03e5d94ae5dbc0f66b8caaa9d45b6de6ac57fc"
+ "43bf0d4a19d9b2166f36b0246465b8213ac5e2fd95dc02f530c9fc718452a446"
],
[
"skills/skill-creator-plus/scripts/utils.py",
@@ -180,7 +180,7 @@
"timeline": [
{
"seq": 0,
- "ts": 1380,
+ "ts": 1500,
"line": 0,
"type": "tool_use",
"name": "mcp__workspace__*",
@@ -188,7 +188,7 @@
},
{
"seq": 1,
- "ts": 1380,
+ "ts": 1500,
"line": 1,
"type": "tool_use",
"name": "mcp__cowork__*",
@@ -196,7 +196,7 @@
},
{
"seq": 2,
- "ts": 1380,
+ "ts": 1500,
"line": 2,
"type": "tool_use",
"name": "mcp__skills__*",
@@ -204,7 +204,7 @@
},
{
"seq": 3,
- "ts": 1380,
+ "ts": 1500,
"line": 3,
"type": "tool_use",
"name": "mcp__plugins__*",
@@ -212,7 +212,7 @@
},
{
"seq": 4,
- "ts": 1455,
+ "ts": 1538,
"line": 5,
"type": "tool_use",
"name": "mcp__workspace__*",
@@ -220,7 +220,7 @@
},
{
"seq": 5,
- "ts": 1455,
+ "ts": 1538,
"line": 6,
"type": "tool_use",
"name": "mcp__cowork__*",
@@ -228,7 +228,7 @@
},
{
"seq": 6,
- "ts": 1455,
+ "ts": 1538,
"line": 7,
"type": "tool_use",
"name": "mcp__skills__*",
@@ -236,7 +236,7 @@
},
{
"seq": 7,
- "ts": 1455,
+ "ts": 1538,
"line": 8,
"type": "tool_use",
"name": "mcp__plugins__*",
@@ -244,7 +244,7 @@
},
{
"seq": 8,
- "ts": 1460,
+ "ts": 1540,
"line": 9,
"type": "tool_use",
"name": "mcp__workspace__*",
@@ -252,7 +252,7 @@
},
{
"seq": 9,
- "ts": 1460,
+ "ts": 1540,
"line": 10,
"type": "tool_use",
"name": "mcp__cowork__*",
@@ -260,7 +260,7 @@
},
{
"seq": 10,
- "ts": 1460,
+ "ts": 1541,
"line": 11,
"type": "tool_use",
"name": "mcp__skills__*",
@@ -268,7 +268,7 @@
},
{
"seq": 11,
- "ts": 1460,
+ "ts": 1541,
"line": 12,
"type": "tool_use",
"name": "mcp__plugins__*",
@@ -276,7 +276,7 @@
},
{
"seq": 12,
- "ts": 3167,
+ "ts": 2964,
"line": 16,
"type": "result",
"isError": false
@@ -284,8 +284,8 @@
],
"timelineHeader": {
"v": 1,
- "startedAtWall": "2026-10-02T16:08:19.097Z",
- "startedAtMono": "1105629136716375"
+ "startedAtWall": "2026-10-02T19:18:27.886Z",
+ "startedAtMono": "1117037867399750"
},
"sessionFingerprint": "a8f3694a4f60ac4dc218e5f785f8f1e383676529e0be4814ca48ba7e9eb31338",
"folderPrefixMap": [],
diff --git a/skill-creator-plus/.claude-plugin/plugin.json b/skill-creator-plus/.claude-plugin/plugin.json
index c92e16e..b0e9358 100644
--- a/skill-creator-plus/.claude-plugin/plugin.json
+++ b/skill-creator-plus/.claude-plugin/plugin.json
@@ -1,6 +1,6 @@
{
"name": "skill-creator-plus",
- "version": "0.15.2",
+ "version": "0.16.0",
"description": "Create, test, evaluate, and iteratively improve Claude Code skills with built-in benchmarking, blind A/B comparison, and description optimization",
"author": {
"name": "Yaniv Golan",
diff --git a/skill-creator-plus/skills/skill-creator-plus/SKILL.md b/skill-creator-plus/skills/skill-creator-plus/SKILL.md
index 1b4d0c9..5dbeb62 100644
--- a/skill-creator-plus/skills/skill-creator-plus/SKILL.md
+++ b/skill-creator-plus/skills/skill-creator-plus/SKILL.md
@@ -4,7 +4,7 @@ description: Create, test, evaluate, and improve Claude skills — and answer qu
license: MIT
metadata:
author: Yaniv Golan
- version: "0.15.2"
+ version: "0.16.0"
---
# Skill Creator
@@ -82,7 +82,7 @@ Check available MCPs - if useful for research (searching docs, finding similar s
### Write the SKILL.md
-**Where the skill directory goes:** somewhere the user can keep it — a location in their project, confirmed with them if unclear. Never inside this plugin's own directory (read-only on a plugin install), and never a scratch directory. **Build it in one place and never keep a second copy to sync.** Authoring is mostly shell work, and the shell's cwd is not the file tools' — so name the destination once and address it per family: in Cowork, build in the directory your instructions designate for your work (outputs if named, else your working directory), by absolute path, each family in its own spelling. `references/environments.md` has the mechanism.
+**Where the skill directory goes:** somewhere the user can keep it — a location in their project, confirmed with them if unclear. Never inside this plugin's own directory (read-only on a plugin install), and never a scratch directory. **Build it in one place and never keep a second copy to sync.** Authoring is mostly shell work, and the shell's cwd is not the file tools' — so name the destination once and address it per family: in a sandboxed session, build in the directory your instructions designate for your work (outputs if named, else your working directory), by absolute path, each family in its own spelling. `references/environments.md` has the mechanism.
Based on the user interview, fill in these components:
@@ -98,7 +98,7 @@ Based on the user interview, fill in these components:
**Claude-specific extensions (supported; skills remain portable if you don't use them):**
-- **when_to_use** (Claude-only): extra phrasing for Claude's matcher. **Never put load-bearing trigger info here** — non-Claude hosts ignore it, and under Cowork it is only half-visible even on Claude. Keep `description` self-sufficient.
+- **when_to_use** (Claude-only): extra phrasing for Claude's matcher. **Never put load-bearing trigger info here** — non-Claude hosts ignore it, and in a local session it is only half-visible even on Claude. Keep `description` self-sufficient.
- **allowed-tools / disallowed-tools / shell (Claude-specific)**: these *grant and restrict*; none of them triggers a permission prompt. The real gate is **workspace trust**, accepted once per folder — so review a project's skills before trusting its repo.
- Other Claude-only fields (`model`, `effort`, `agent`, `context: fork`, `paths`, `disable-model-invocation`, `user-invocable`, `argument-hint`, Dynamic Context Injection, path variables): documented in `references/official-guide-patterns.md` (Advanced Skill Authoring Features). Non-Claude hosts silently ignore them.
@@ -123,9 +123,9 @@ skill-name/
substitution into `SKILL.md` text only — it arrives literally in a `references/*.md` and is the empty
string in a shell. There is no skill-relative path resolution; CWD is never the skill directory.
**Don't hand-write the stanza** — paste it from `assets/skill-script-invocation.md`, which carries the
-exact token form (a SKILL.md cannot show it: the runtime substitutes it at load). Under Cowork,
+exact token form (a SKILL.md cannot show it: the runtime substitutes it at load). In a local session,
where the shell and file tools are different mounts, use its stanza B (find from the shell's side) —
-not a `bin/` launcher: none has been seen on Cowork's shell PATH, and a top-level `bin/` makes a plugin
+not a `bin/` launcher: none has been seen on a cloud or local session's shell PATH, and a top-level `bin/` makes a plugin
unpublishable through claude.ai organization settings (`claude plugin validate` does not warn).
`assets/plugin-bin-launcher.sh` is for CLI-installed plugins only.
@@ -247,7 +247,7 @@ See `references/schemas.md` for the full schema (including the `assertions` fiel
This section is one continuous sequence — don't stop partway through. Do NOT use `/skill-test` or any other testing skill.
-Put results in `-workspace/`. **Put it where your instructions say to work — never as a sibling to the skill directory.** In Cowork your **file tools** need the absolute path of that directory: outputs if named (locally not the "Primary working directory", a private folder), else your working directory — never a bare path or an `outputs/` prefix. Your **shell** may spell that directory differently (locally `/sessions//mnt/outputs/`). Resolve both once (``, shell ``); give sub-agents both, labelled. On a plugin or marketplace install the skill directory is read-only, so a sibling path silently falls back to a scratchpad the user never sees — and on remote Cowork that is destroyed at session end. If you're unsure, ask. Organize it by iteration (`iteration-1/`, `iteration-2/`), and within that one directory per test case named for what it tests (`pdf-extraction/`, `multi-page-form/` — Step 1 explains the naming). Create directories as you go.
+Put results in `-workspace/`. **Put it where your instructions say to work — never as a sibling to the skill directory.** In a sandboxed session your **file tools** need the absolute path of that directory: outputs if named (locally not the "Primary working directory", a private folder), else your working directory — never a bare path or an `outputs/` prefix. Your **shell** may spell that directory differently (locally `/sessions//mnt/outputs/`). Resolve both once (``, shell ``); give sub-agents both, labelled. On a plugin or marketplace install the skill directory is read-only, so a sibling path silently falls back to a scratchpad the user never sees — and in a cloud session that is destroyed at session end. If you're unsure, ask. Organize it by iteration (`iteration-1/`, `iteration-2/`), and within that one directory per test case named for what it tests (`pdf-extraction/`, `multi-page-form/` — Step 1 explains the naming). Create directories as you go.
### Step 1: Spawn all runs (with-skill AND baseline) in the same turn
@@ -312,7 +312,7 @@ Once all runs are done:
1. **Grade each run** — spawn a grader subagent (or grade inline) that reads `agents/grader.md` and evaluates each assertion against the outputs. Save results to `grading.json` in each config directory (e.g., `eval-1/with_skill/grading.json`); a grader sub-agent gets that directory in both labelled forms, as in the executor template above — it writes with file tools and may run scripts. The grading.json expectations array must use the fields `text`, `passed`, and `evidence` (not `name`/`met`/`details` or other variants) — the viewer depends on these exact field names. For assertions that can be checked programmatically, write and run a script rather than eyeballing it — scripts are faster, more reliable, and can be reused across iterations. If a check is also something a user of the finished skill would benefit from running themselves (e.g., a `validate_X.py` or `smoke_test_X.sh`), bundle it in the skill's `scripts/` directory so the same code serves both the eval grader and end users.
-**Every shell command below uses `` — the absolute path you resolved once at the start of this section.** Never rely on a working directory carrying between shell calls: on some surfaces each call is independent, so a `cd` in one call is gone by the next. An absolute path is correct on every surface, which is why you resolve once rather than `cd` first. A relative path also resolves against the *shell's* working directory, which under Cowork is not where your file tools write. The same applies to any path you put in a sub-agent dispatch prompt.
+**Every shell command below uses `` — the absolute path you resolved once at the start of this section.** Never rely on a working directory carrying between shell calls: on some surfaces each call is independent, so a `cd` in one call is gone by the next. An absolute path is correct on every surface, which is why you resolve once rather than `cd` first. A relative path also resolves against the *shell's* working directory, which in a cloud or local session is not where your file tools write. The same applies to any path you put in a sub-agent dispatch prompt.
2. **Aggregate into benchmark** — run the aggregation script from the skill-creator directory:
```bash
@@ -333,7 +333,7 @@ Once all runs are done:
```
For iteration 2+, also pass `--previous-workspace /iteration-`.
- **Cowork / headless environments:** If `webbrowser.open()` is not available or the environment has no display, use `--static ` to write a standalone HTML file instead of starting a server. When the user clicks "Submit All Reviews", the viewer displays the raw JSON in a copyable textarea (no file is downloaded — blob downloads blank the page in embedded viewers). The user pastes the JSON directly into the chat, or saves it themselves into the workspace as `feedback.json`. **Important: In static mode, you cannot read feedback.json from disk** — see `references/environments.md` (Cowork section) for how to handle the feedback loop.
+ **Sandboxed sessions / headless environments:** If `webbrowser.open()` is not available or the environment has no display, use `--static ` to write a standalone HTML file instead of starting a server. When the user clicks "Submit All Reviews", the viewer displays the raw JSON in a copyable textarea (no file is downloaded — blob downloads blank the page in embedded viewers). The user pastes the JSON directly into the chat, or saves it themselves into the workspace as `feedback.json`. **Important: In static mode, you cannot read feedback.json from disk** — see `references/environments.md` → *Sandboxed sessions* for how to handle the feedback loop.
Note: please use generate_review.py to create the viewer; there's no need to write custom HTML.
@@ -429,7 +429,7 @@ This is optional, requires subagents, and most users won't need it. The human re
The description field is the primary mechanism that determines whether Claude invokes a skill. After creating or improving a skill, offer to optimize it: generate ~20 realistic trigger eval queries, have the user review them, then run the automated optimization loop (`scripts/run_loop.py` — real `claude -p` calls, run from the skill-creator-plus skill directory) and apply the resulting `best_description`.
-Read `references/description-optimization.md` for the full procedure before starting — it covers how to write good eval queries, the user-review HTML template, the exact run_loop command and flags, and how triggering works under the hood. Requires the `claude` CLI (Claude Code / Cowork only).
+Read `references/description-optimization.md` for the full procedure before starting — it covers how to write good eval queries, the user-review HTML template, the exact run_loop command and flags, and how triggering works under the hood. Requires the `claude` CLI (Claude Code, or a session where `command -v claude` finds it).
---
@@ -458,7 +458,7 @@ You can run `python -m scripts.quick_validate ` to check some of
cd ${CLAUDE_SKILL_DIR} && python -m scripts.quick_validate
```
-If the shell says that directory does not exist, it sees these files under a different path (Cowork's host loop). If the line above shows the variable unexpanded (cloud Cowork does that when this skill is invoked before the conversation's cloud session exists, typically as its first message, and so does a re-read from disk after a compaction), the `cd` silently lands in the home directory. Either way, find the directory from the shell's side and `cd` to the one that holds `scripts/`:
+If the shell says that directory does not exist, it sees these files under a different path (a local session's host loop). If the line above shows the variable unexpanded (it does when this skill is invoked before the conversation has started its cloud session, typically as its first message, and so does a re-read from disk after a compaction), the `cd` silently lands in the home directory. Either way, find the directory from the shell's side and `cd` to the one that holds `scripts/`:
```bash
find / -path '*skill-creator-plus/scripts/quick_validate.py' -print -quit 2>/dev/null
@@ -466,9 +466,9 @@ find / -path '*skill-creator-plus/scripts/quick_validate.py' -print -quit 2>/dev
Never skip `check_portability` or hand-roll the `.skill` zip because the scripts seem unreachable — locate them.
-Also run `python -m scripts.check_portability --target ` — a stdlib-only cross-runtime linter (no dependencies, runs in any environment). It flags constructs that break on the skill's target runtime: an over-cap `description`, subagent use (the Claude app's chat runtime has no sub-agent tool), `claude` CLI use (not on the chat runtime's PATH), browser/server assumptions (no display in Cowork or the chat runtime), third-party Python imports outside the stack Cowork preinstalls (each costs a `pip install` on every run, and a locked-down org can deny the egress that install needs), a `SKILL.md` over the 19,900-character post-compaction cap (`compaction-truncation-risk`), a workspace placed under a relative `outputs/` path, which Cowork refuses, nests, or loses depending on the lane (`outputs-prefix-relative`), a file written to a bare relative path, which lands where the user can't see it or is refused outside Claude Code (`relative-output-path`, advisory), a delivery tool named for only one Cowork lane (`delivery-tool-single-lane` — phrase delivery by outcome, naming no tool; naming both, capability-conditionally, is also acceptable and stays clean), and the deliverable itself gated on a delivery tool's availability (`delivery-conditional-deliverable`). Pass `--target` matching where the skill will run; `--strict` to gate.
+Also run `python -m scripts.check_portability --target ` — a stdlib-only cross-runtime linter (no dependencies, runs in any environment). It flags constructs that break on the skill's target runtime: an over-cap `description`, subagent use (the Claude app's chat runtime has no sub-agent tool), `claude` CLI use (not on the chat runtime's PATH), browser/server assumptions (no display in a cloud or local session or the chat runtime), third-party Python imports outside the stack a cloud session preinstalls (each costs a `pip install` on every run, and a locked-down org can deny the egress that install needs), a `SKILL.md` over the 19,900-character post-compaction cap (`compaction-truncation-risk`), a workspace placed under a relative `outputs/` path, which a cloud or local session refuses, nests, or loses depending on where it runs (`outputs-prefix-relative`), a file written to a bare relative path, which lands where the user can't see it or is refused outside Claude Code (`relative-output-path`, advisory), a delivery tool named for only one kind of session (`delivery-tool-single-lane` — phrase delivery by outcome, naming no tool; naming both, capability-conditionally, is also acceptable and stays clean), and the deliverable itself gated on a delivery tool's availability (`delivery-conditional-deliverable`). Pass `--target` matching where the skill will run; `--strict` to gate.
-If `cowork-harness` is installed, also run its two token-free static checks — `cowork-harness lint-skill --strict ` and `cowork-harness analyze-skill --strict `. They're cheap and safe on any skill, and catch runtime bugs the checklist can't (host-path leaks, interactive-artifact write-backs lost under Cowork); their findings matter most for **Cowork-targeted** skills. Optional — skip silently if the tool isn't installed. See `references/environments.md` § *Testing Cowork-targeted skills with cowork-harness*.
+If `cowork-harness` is installed, also run its two token-free static checks — `cowork-harness lint-skill --strict ` and `cowork-harness analyze-skill --strict `. They're cheap and safe on any skill, and catch runtime bugs the checklist can't (host-path leaks, interactive-artifact write-backs lost in a cloud or local session); their findings matter most for skills that will run in one. Optional — skip silently if the tool isn't installed. See `references/environments.md` § *Testing skills for cloud and local sessions with cowork-harness*.
### Package the Skill
@@ -482,7 +482,7 @@ cd && python -m scripts.package_skill /…`; state the path in your reply in the file-tool form the user sees. Never a bare filename, never an unnamed location.) Then present it: scan your available tools for one whose description says it sends or presents files to the user, and call it — the file is not delivered until you do, and stating the path is not a substitute — unless your instructions explicitly say that writing into a named folder delivers the file and not to send it as well. Only if no such tool exists, the path you already stated is the presentation. See `references/environments.md` → *Delivering files to the user* for why this two-step rule exists and which tool serves which surface. Packaging itself works everywhere Python does — never make it conditional on a presentation tool.
+**Never delete from the outputs directory.** Production denies `unlink`/`rmdir` there until the user approves it, so a "remove the stale copy and re-copy" step — the natural way to sync two directories — fails in production while succeeding in most test setups. Build once rather than staging a copy you have to refresh; if a file must change, overwrite it in place. Write the `.skill` file to a path you name in your reply — the workspace. (In a cloud or local session `package_skill.py` runs in the shell, so give it the shell form, `/…`; state the path in your reply in the file-tool form the user sees. Never a bare filename, never an unnamed location.) Then present it: scan your available tools for one whose description says it sends or presents files to the user, and call it — the file is not delivered until you do, and stating the path is not a substitute — unless your instructions explicitly say that writing into a named folder delivers the file and not to send it as well. Only if no such tool exists, the path you already stated is the presentation. See `references/environments.md` → *Delivering files to the user* for why this two-step rule exists and which tool serves which surface. Packaging itself works everywhere Python does — never make it conditional on a presentation tool.
**Sending the `.skill` file is also how the user saves it.** Where the app renders a sent `.skill` as a card with a Save skill button, that button installs the whole package, scripts included, into the user's account — so sending it is never optional. If your tools also include one that saves a skill straight from the conversation, it carries `SKILL.md` alone: never use it instead of sending the file, and never for a skill that bundles scripts, references or assets. See `references/environments.md` → *Sandboxed sessions*.
@@ -490,15 +490,15 @@ cd && python -m scripts.package_skill /bin on the Bash tool's PATH.
#
-# READ FIRST — this is an OPTIMISATION, not a fallback. Measured: at Cowork host-loop, the lane
+# READ FIRST — this is an OPTIMISATION, not a fallback. Measured: on a local session's host loop, the lane
# with the namespace split this exists to bridge, the shell's PATH carries no plugin bin/ at all.
# Gate every use on `command -v ` and keep a search branch behind it.
#
diff --git a/skill-creator-plus/skills/skill-creator-plus/assets/skill-script-invocation.md b/skill-creator-plus/skills/skill-creator-plus/assets/skill-script-invocation.md
index 86479ff..df7ad8f 100644
--- a/skill-creator-plus/skills/skill-creator-plus/assets/skill-script-invocation.md
+++ b/skill-creator-plus/skills/skill-creator-plus/assets/skill-script-invocation.md
@@ -23,16 +23,16 @@ environment variable, and expands to nothing in a shell. Read the resolved path
and pass it along verbatim, including to any sub-agent.
```
-## B. Anywhere the skill may run outside Claude Code (Cowork), or if unsure
+## B. Anywhere the skill may run outside Claude Code (a cloud or local session), or if unsure
```markdown
**Running this skill's scripts.** Prefer the absolute path this file was loaded with:
python3 ${CLAUDE_SKILL_DIR}/scripts/