2026 Q2 Skills: Context, Caching, and the Sandbox Lens

Table of Contents

1. Thesis

attributed · agent-context-thread-annotator · 2026-06-27

A skill is "an organized collection of prompts and instructions for an LLM" (OpenAI n.d.). 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:

  1. Probabilistic — prompts, system instructions, alignment (what the model is trained to do).
  2. Explicit-deterministic — hooks, permission classifiers, wire-level policy (what the harness enforces).
  3. 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.

2. What a skill is in 2026

attributed · pilot-annotation-pass · 2026-10-08

The SKILL.md convention (Anthropic-originated) is the closest thing to a cross-harness standard, read by Claude Code, Copilot CLI, and OpenCode (CLI coding agents, 2026 Q2). OpenAI Codex ships skills as bundled, reusable behaviours (e.g. a setup-demo-app skill) (OpenAI n.d.). GitHub ships gh skill — a search/preview/install/publish/update lifecycle for skills sourced from repositories, shipped as a preview command ("subject to change without notice") not yet present in a stable gh release (GitHub n.d.). The unit is converging; the governance is not.

3. Skills through the sandbox lens (first-class)

attributed · agent-context-thread-annotator · 2026-06-27

The reference decomposition: "sandbox" names at least four isolations — compute boundary, filesystem custody, network egress, secret custody — and "capability is structural; safety is declarative" (Agent sandbox architectures). 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" (Agent sandbox architectures). 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 (Agent sandbox architectures, Containment mapping). 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" (Tainted data in LLM pipelines). 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 (Agent permission guardrails).

4. Skill structure in practice (the contract you ship)

attributed · repl-corpus-check · 2026-06-25

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:

  1. Invocation. The description frontmatter is the only thing the model sees pre-invocation; trigger logic does not live in the body.
  2. Permissions. allowed-tools as least-privilege (marked (Experimental) in the spec — see disputed), matched to what the body actually does.
  3. Sandbox. Compute / fs-read / fs-write / egress / credential — the five-axis decomposition this note is built around.
  4. MCP. Server-independence is a design constraint: a vendored skill works without the MCP server reachable; MCP tools are accelerants that degrade gracefully.
  5. Hooks. No silent dependency on settings.json automation; any required hook is documented and optional.
  6. Skills composition. Anatomy is SKILL.md + optional scripts/ (deterministic code), references/ (depth docs loaded on demand — one level only, see disputed), assets/ (output templates), agents/ (sub-agent definitions); bodies stay under ~500 lines.
  7. 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.
  8. Providers. Hard provider/model assumptions are stated; otherwise the skill reads as portable across Claude / LiteLLM-fronted providers / local Ollama.
  9. Remote. Headless by default; the distribution channel is named so reviewers can score the right egress profile.

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.

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.

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 see the disputed finding on footprint declaration: the spec does define an optional compatibility field covering network access. 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.

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

corrected · pilot-annotation-pass · 2026-10-08

Skills are prompt-cache-aware primitives — named templates with tool scopes that expand at call time (Claude Code features, 2026 Q2). 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.98) (Claude Code workshop); the CLAUDE.md hierarchy is itself a cache strategy (global-static / repo / session-dynamic) (Agentic workflow); and context compression outperforms full-context agents on long-horizon tool use (Morning Brief, 2026-06-10). 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?

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 (OpenAI n.d.). 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 (OpenAI n.d.).

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) (GitHub n.d.). 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.

Three disputed verdicts were added 2026-10-29 from a re-check against primary sources, and are the last three claims below. disputed here means a primary source contradicts the claim as written without settling what should replace it; each :FINDING: records what was fetched and what it said. The claims they dispute are flagged inline at the point they are made rather than silently rewritten.

8.1. Skills are named prompt templates with tool scopes

correct · repl-corpus-check · 2026-06-24

REPL confirmed "prompt template" and "tool scope" in 2026-q2-claude-code-features.

8.2. SKILL.md is the cross-harness skill convention

correct · repl-corpus-check · 2026-06-24

REPL confirmed "SKILL.md" in 2026-q2-cli-coding-agents.

8.3. Prompt caching is opt-in, 1h TTL, with cache-reuse flags

corrected · repl-corpus-check · 2026-06-24

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. (claude-code-workshop-2026)

8.4. All six surveyed CLI agents support MCP

correct · repl-corpus-check · 2026-06-24

REPL confirmed "all six" and "MCP" in 2026-q2-cli-coding-agents.

8.5. MCP authorization is optional and excludes stdio

correct · repl-corpus-check · 2026-06-24

REPL confirmed "stdio", "OAuth 2.1", "optional" in 2026-agent-permission-guardrails.

8.6. Capability is structural; the secret-custody empty cell is unoccupied

correct · repl-corpus-check · 2026-06-24

REPL confirmed "secret custody", "egress proxy", "structural", "empty cell", "compute boundary" in 2026-agent-sandbox-systems.

8.7. Skill inputs are tainted by construction

correct · repl-corpus-check · 2026-06-24

REPL confirmed "tainted", "prompt injection", "domain" in tainted-data-llm-pipelines.

8.8. OpenAI eval-skills: four success categories + layered harness

attributed · webfetch-primary · 2026-06-24

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. (OpenAI n.d.)

8.9. gh skill provides a search/preview/install/publish/update lifecycle

attributed · webfetch-primary · 2026-06-24

Primary source: cli.github.com/manual/gh_skill (preview). Subcommands install, list, preview, search, publish (--dry-run), update. Preview only; not run locally. (GitHub n.d.)

8.10. Footprint declaration has no standard schema

disputed · webfetch-primary · 2026-10-29

Checked against (Agent Skills n.d.) on 2026-10-29. The spec is no longer in the anthropics/skills repository: spec/agent-skills-spec.md there is an 87-byte pointer to agentskills.io/specification, which is the normative document.

8.11. allowed-tools is a settled least-privilege mechanism

disputed · webfetch-primary · 2026-10-29

Checked against (Agent Skills n.d.) on 2026-10-29.

8.12. Deeper references/ nesting buys progressive-disclosure depth

disputed · webfetch-primary · 2026-10-29

Checked against (He et al. 2026) on 2026-10-29.

9. Meta-skills: skills that take skills as input

correct · pilot-annotation-pass · 2026-10-08

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. 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.md and refuse it? Partial answer: where authors carry fs-access=/=egress=/=process-access keys 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?
  • 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:

Internal:

Agent Skills. n.d. “Agent Skills Specification.” Accessed October 29, 2026. https://agentskills.io/specification.
GitHub. n.d. “gh skill: Install and Manage Agent Skills from GitHub Repositories.” Accessed October 29, 2026. https://cli.github.com/manual/gh_skill.
He, Yifeng, Yinzhe Zhao, Jicheng Wang, and Hao Chen. 2026. “Is Progressive Disclosure All You Need for Long-Context Agents?” Arxiv Preprint.
OpenAI. n.d. “Testing Agent Skills Systematically with Evals.” Accessed October 29, 2026. https://developers.openai.com/blog/eval-skills.