2026 Q2 Skills: Context, Caching, and the Sandbox Lens
Table of Contents
- 1. Thesis
- 2. What a skill is in 2026
- 3. Skills through the sandbox lens (first-class)
- 4. Skill structure in practice (the contract you ship)
- 5. Caching and context: why skill composition is affordable
- 6. Evals: making a skill provide good context
- 7. Deployment, rollout, testing
- 8. Claims (REPL-evaluated)
- 8.1. Skills are named prompt templates with tool scopes
- 8.2. SKILL.md is the cross-harness skill convention
- 8.3. Prompt caching is opt-in, 1h TTL, with cache-reuse flags
- 8.4. All six surveyed CLI agents support MCP
- 8.5. MCP authorization is optional and excludes stdio
- 8.6. Capability is structural; the secret-custody empty cell is unoccupied
- 8.7. Skill inputs are tainted by construction
- 8.8. OpenAI eval-skills: four success categories + layered harness
- 8.9. gh skill provides a search/preview/install/publish/update lifecycle
- 9. Meta-skills: skills that take skills as input
- 10. Open questions
- 11. References
1. Thesis
A skill is "an organized collection of prompts and instructions for an LLM" (??, ????). That framing is correct but incomplete. The moment a skill runs, it spends capability: it executes code, reads and writes files, reaches the network, and uses credentials. The right first-class frame for a 2026 skill is therefore not the prompt — it is the sandbox.
Agent control in 2026 spans three registers:
- Probabilistic — prompts, system instructions, alignment (what the model is trained to do).
- Explicit-deterministic — hooks, permission classifiers, wire-level policy (what the harness enforces).
- Implicit-deterministic — a skill's tool-scope, an MCP server's surface, a schema (what the design permits at all).
Skills live in (3). A skill with a restricted tool list cannot exfiltrate a file not because a policy refused it but because the action was never on the menu. That is a sandbox boundary expressed as authoring convention. This note reads skills through that lens, then covers the caching/context economics that make them cheap, and the eval + deployment tooling that makes them testable.
2. What a skill is in 2026
The SKILL.md convention (Anthropic-originated) is the closest thing to a
cross-harness standard, read by Claude Code, Copilot CLI, and OpenCode
(??, a). OpenAI Codex ships skills as bundled, reusable behaviours
(e.g. a setup-demo-app skill) (??, ). GitHub ships gh skill
— a search/preview/install/publish/update lifecycle for skills sourced from
repositories (??, a). The unit is converging; the governance is not.
3. Skills through the sandbox lens (first-class)
The reference decomposition: "sandbox" names at least four isolations — compute boundary, filesystem custody, network egress, secret custody — and "capability is structural; safety is declarative" (??, a). Splitting filesystem into read and write gives the five axes the operator actually reasons about. Every skill can be scored on them:
| Axis | The question | Skill-level control (implicit) | Harness control (explicit) |
|---|---|---|---|
| compute | can it execute code? | is =Bash=/exec in the tool list? | sandbox/jail, rctl |
| fs-read | what can it read? | Read=/=Grep scope |
mount RO, Seatbelt file-read* |
| fs-write | what can it mutate? | Edit=/=Write present? |
mount RW set, worktree isolation |
| egress | what hosts can it reach? | =WebFetch=/MCP tools present? | egress proxy / pf allowlist |
| credential | what secrets does it touch? | does a tool require a key? | egress-proxy injection; key never in env |
The central observation: a skill's tool-list restriction is a sandbox policy written in the skill, one register earlier than the harness. But it is the weakest of the three registers — it constrains what the model is offered, not what the process can do. The corpus reference axiom holds: filesystem AND network isolation are both required, and the compute boundary alone is "a launchpad" (??, a). So a skill's tool-scope is necessary context hygiene, never the security boundary.
Two failure modes the sandbox notes make concrete, both relevant to skills:
- The credential axis is the asymmetric risk. The secret-custody "empty cell" — a locally-run agent that materialises secrets only at approved-host egress — is unoccupied as a product, and the documented containment incidents land exactly there (??, a, ??, a). A skill that calls an authenticated API inherits this: if the credential is readable, a prompt-injected skill exfiltrates it.
- Skill inputs are tainted. "If a third party could have written any part of it, it's tainted" (??, a). A skill that reads logs, issues, or tool output is reading attacker-writable text; its tool-scope is the only thing bounding the blast radius when that text is interpreted as instructions.
The permission story that closes the gap is three-layer — identity to session scope
to wire-level — and the MCP authorization gap is real: the MCP spec makes auth
optional and excludes stdio transports (the common dev case), so most skills
reaching MCP tools run with session-wide grants and no per-operation scope
(??, a).
4. Skill structure in practice (the contract you ship)
The sandbox lens is one of nine surfaces a skill is in contract with when it ships. In practice — observed by porting a populated agent directory into a vetted skill repo — the surfaces line up like this:
- Invocation. The
descriptionfrontmatter is the only thing the model sees pre-invocation; trigger logic does not live in the body. - Permissions.
allowed-toolsas least-privilege, matched to what the body actually does. - Sandbox. Compute / fs-read / fs-write / egress / credential — the five-axis decomposition this note is built around.
- MCP. Server-independence is a design constraint: a vendored skill works without the MCP server reachable; MCP tools are accelerants that degrade gracefully.
- Hooks. No silent dependency on
settings.jsonautomation; any required hook is documented and optional. - Skills composition. Anatomy is
SKILL.md+ optionalscripts/(deterministic code),references/(depth docs loaded on demand),assets/(output templates),agents/(sub-agent definitions); bodies stay under ~500 lines. - Memory. Recalled memory is background context, not user instructions. A memory naming a file is a claim, not a guarantee — verify before acting; write only on explicit intent.
- Providers. Hard provider/model assumptions are stated; otherwise the skill reads as portable across Claude / LiteLLM-fronted providers / local Ollama.
- Remote. Headless by default; the distribution channel is named so reviewers can score the right egress profile.
Sandbox is one surface among nine; the lens is necessary but not sufficient. (The convergence signal: two independent authoring tracks landed on this same decomposition in the same week — the surfaces appear to be approximately stable.)
4.1. Sub-agent teams as a skill anatomy
When a framework has multiple roles — a builder, a reviewer, an
arbiter, a probe — the skill is the team, not each role. The
SKILL.md is the team manifest (voice, composition recipes, when
each role speaks); agents/ holds the role prompts. The bundle is
the unit shipped, cached, and triggered.
This produces an authoring choice: a framework with role labels can ship under generic labels ("agent / reviewer / arbiter") or under human names ("Aidan / Vera / Themis"-style), or both. Two skills, two trigger surfaces, same underlying framework. Generic reads like telemetry; named reads like narrative. The cost is a duplicated description; the benefit is that the invocation surface fits the work mode.
When two distinct role taxonomies overlap on a shared essence, naming the shared role identically is the bridge across them. Tiny pattern; meaningful in a converging-unit, diverging-governance world.
4.2. Distribution channels carry the sandbox profile
The same SKILL.md gets a different egress entry depending on how
it's shipped:
| Channel | Resolution | Egress at runtime |
|---|---|---|
| Vendored real files | filesystem path | none (zero MCP) |
| MCP-served | tool dispatch | egress to MCP server |
| Fetched-then-local | install-time download | egress at install |
A skill scored egress: none as vendored may score
egress: mcp-server when served, because the server itself sits in
its runtime sandbox profile. The distribution choice is part of the
skill's footprint, not just an operational detail.
4.3. A working pattern for SKILL.md as footprint manifest
A skill may carry an explicit footprint in custom frontmatter — declared filesystem reads/writes, allowed egress, named process access. No standard schema exists yet, but the convention is essential where it is used. A harness reading these keys could derive a sandbox profile and refuse the wrong-shaped invocation — authoring-time declaration, not yet harness-enforced. (See 10.)
4.4. The pre-condition: arriving from a populated setup
The ecosystem describes 2026 skills as if greenfield. In practice
users arrive with ~/.claude/agents/ populated by a year of
accumulation — tens to a hundred files, ranging from framework
primitives through role personas to one-off project agents. The
port is its own problem, and the triage is itself a sandbox
decision:
| Bucket | Heuristic | Destination |
|---|---|---|
| Cluster | 3+ share a coherent theme | Multi-role skill |
| Promote | Stands alone, one clear trigger | Single-role skill |
| Backup + delete | Personal / project / model-bound | Private archive |
| Drop | Stale / superseded | (gone) |
Personal agents (named after collaborators, tied to a specific project, bound to a specific external model) carry an exfiltration risk in a shared bundle they don't carry in a private archive. Choosing the destination is choosing the sandbox profile.
4.5. A 2025 to 2026 refinement layer is portable across frameworks
Pre-skill multi-agent frameworks tend to have a 2025 vocabulary
(FIFO backchannels, broadcast-status pipes, capability asymmetry as
convention) and a 2026 refinement (NDJSON+TTL gossip, OTLP
telemetry, an explicit safe/unsafe tool partition, a zero-egress
invariant). The pattern is portable: when porting an old framework
into a 2026 skill, identify the refinement layer first; keep the
old prompt body as the legacy implementation; add the SKILL.md
instruction to substitute the modern primitive when invoking. The
skill becomes a portable description of the framework across both
vocabularies.
5. Caching and context: why skill composition is affordable
Skills are prompt-cache-aware primitives — named templates with tool scopes that
expand at call time (??, a). Three corpus facts make composition
cheap: prompt caching is opt-in with a 1-hour TTL
(ENABLE_PROMPT_CACHING_1H, 2.1.108) and dynamic system-prompt sections can be
excluded for cache reuse (--exclude-dynamic-system-prompt-sections, 2.1.114)
(??, a); the CLAUDE.md hierarchy is itself a cache strategy
(global-static / repo / session-dynamic) (??, a); and
context compression outperforms full-context agents on long-horizon tool use
(??, a). The open question the corpus poses and does not answer:
at 1M context, is curated memory still necessary, or does it become the signal in a
sea of raw context? (??, a)
6. Evals: making a skill provide good context
The unit of progress is the eval. OpenAI's framing defines success in four
categories — outcome (did the task complete), process (right tools, right
order), style (conventions), efficiency (no wasted tokens/commands) — and keeps
the must-pass list small (??, ). The harness is layered:
deterministic checks against JSONL traces (codex exec --json — "did it run
npm install?"), model-assisted rubric grading with a structured --output-schema,
and small prompt sets (10–20 cases) spanning explicit invocation, implicit
triggering, contextual variation, and negative controls (??, ).
Read through this note's lens, "good context" for a skill is the minimal context that passes the must-pass checks — which is also the minimal sandbox surface. The efficiency goal and the implicit-guardrail goal point the same way: a skill that needs fewer tools and less context is both cheaper and safer.
7. Deployment, rollout, testing
gh skill gives skills a software lifecycle: search (discover), preview (test
before install), install (deploy from a repo namespace), publish --dry-run
(validate before release), update (bulk upgrade) (??, a). preview and
--dry-run are the testing/rollout seams — the place an eval suite (above) should
gate. A skill rollout is then: eval locally to gh skill preview to publish
--dry-run → publish → update across the fleet.
The lifecycle is not channel-neutral. The three distribution channels above
(vendored / MCP-served / fetched-then-local) impose different rollout
properties — vendored skills update with the repo, MCP-served skills update
when the server does, gh skill update is explicit. Eval gates are
identical; rollback semantics are not.
8. Claims (REPL-evaluated)
Verdicts produced 2026-06-24. correct = the cited term/claim was found in the
cited corpus note by REPL (wal-sh.site.org/read-all + slurp + substring);
attributed = sourced from a fetched primary document, not independently executed.
8.1. Skills are named prompt templates with tool scopes
REPL confirmed "prompt template" and "tool scope" in
2026-q2-claude-code-features. (??, a)
8.2. SKILL.md is the cross-harness skill convention
REPL confirmed "SKILL.md" in 2026-q2-cli-coding-agents. (??, a)
8.3. Prompt caching is opt-in, 1h TTL, with cache-reuse flags
REPL found ENABLE_PROMPT_CACHING_1H and --exclude-dynamic-system-prompt-sections
in claude-code-workshop-2026; absent from 2026-q2-claude-code-features. Citation
corrected accordingly. (??, a)
8.4. All six surveyed CLI agents support MCP
REPL confirmed "all six" and "MCP" in 2026-q2-cli-coding-agents. (??, a)
8.5. MCP authorization is optional and excludes stdio
REPL confirmed "stdio", "OAuth 2.1", "optional" in
2026-agent-permission-guardrails. (??, a)
8.6. Capability is structural; the secret-custody empty cell is unoccupied
REPL confirmed "secret custody", "egress proxy", "structural", "empty cell",
"compute boundary" in 2026-agent-sandbox-systems. (??, a)
8.7. Skill inputs are tainted by construction
REPL confirmed "tainted", "prompt injection", "domain" in
tainted-data-llm-pipelines. (??, a)
8.8. OpenAI eval-skills: four success categories + layered harness
Primary source: developers.openai.com/blog/eval-skills — outcome/process/style/ efficiency; deterministic JSONL-trace checks + rubric grading + 10–20 case sets. Not independently executed. (??, )
8.9. gh skill provides a search/preview/install/publish/update lifecycle
Primary source: cli.github.com/manual/gh_skill (preview). Subcommands install,
list, preview, search, publish (--dry-run), update. Preview only; not run
locally. (??, a)
9. Meta-skills: skills that take skills as input
A skill set is an agent's externalised procedural memory. The unit of design is the set rather than the skill: a skill that contradicts or duplicates another corrupts the shared vocabulary every agent in the repo assumes. Something has to operate on the set. A meta-skill is a skill whose argument is other skills. Four kinds, by what they check:
- Eval — does the skill still work? Invoke it, or dry-run its commands, and confirm the described outcome. Catches drift from the code it documents (a renamed target, a moved path).
- Audit — coverage and freshness. Which boundaries have no skill; which skills cite files or URLs that no longer exist; which overlap.
- Consistency — contract conformance: frontmatter shape, a usage block,
rationale present. Mechanical; a linter for
SKILL.md. - Tone — house-style conformance over the skill corpus rather than the prose corpus.
An earlier draft (2026-06-01) recorded two facts that no longer hold. It
described the local contract as plain markdown with no YAML frontmatter; the
skills in this repo now open with YAML frontmatter carrying name,
description, and user_invocable (see research-audit/SKILL.md), which is
the SKILL.md convention above. It also stated that no meta-skill existed.
Three do. skills-guardrail audits and enforces resource constraints on
skills (egress, process, filesystem access): the sandbox lens applied to the
skill corpus, and the audit kind above. research-audit is a read-only tone
and annotation check over published notes. /skill-doctor reports on a
skill's structure and triggering: the consistency and eval kinds. What
remains open is a tone check over .claude/skills/** itself.
The tension the taxonomy resolves is between messy creation and a curated set. Skills should be cheap to write; friction kills the habit, and an unwritten skill is procedural memory lost. The cost of mess is paid not at creation but in composition: drift, overlap, contradiction, staleness. The resolution is not gatekeeping the write path. It is a messy write path and an audited read path, with meta-skills reconciling the set on a cadence.
10. Open questions
- Is a skill's tool-scope observable as a sandbox profile — can a harness derive
the compute/fs/egress/credential footprint from a
SKILL.mdand refuse it? Partial answer: where authors carryfs-access=/=egress=/=process-accesskeys in custom frontmatter, the footprint is already declared; the gap is harness adoption of a standard schema. - Does 1M context enable a new class of whole-repo skills, or just make existing skills cheaper? (??, a)
- Where does eval "efficiency" (minimal context) and security (minimal surface) diverge, if ever?
- When the same framework ships under both generic-label and human-name invocation surfaces, does triggering quality degrade (description collision), or does the disambiguation by conversational register hold?
11. References
Core external links:
- anthropics/skills — the SKILL.md convention.
- Antithesis: Agent Skills (2026).
- OpenAI: Evaluating agent skills.
- gh skill — deploy / rollout / test lifecycle.
Internal:
- Agent sandbox systems — the four-isolation decomposition.
- Containment mapping.
- Agent permission guardrails.
- Annotation systems — the verdict methodology.