Install
Quick install
npx skills add https://github.com/wshobson/agents/tree/main/ARCHITECTURE.mdnpx skills add wshobson/agents --skill ARCHITECTURE --agent claude-codenpx skills add wshobson/agents --skill ARCHITECTURE --agent cursornpx skills add wshobson/agents --skill ARCHITECTURE --agent codexnpx skills add wshobson/agents --skill ARCHITECTURE --agent opencodenpx skills add wshobson/agents --skill ARCHITECTURE --agent github-copilotnpx skills add wshobson/agents --skill ARCHITECTURE --agent windsurfMore install options
Shorthand — useful for multi-skill repos:
npx skills add wshobson/agents --skill ARCHITECTUREManual — clone the repo and drop the folder into your agent's skills directory:
git clone https://github.com/wshobson/agents.gitcp -r agents/ARCHITECTURE.md ~/.claude/skills/Architecture
Top-level architectural map for the claude-agents marketplace. Detail lives in [docs/architecture.md](docs/architecture.md); this file is the index per the OpenAI harness-engineering pattern.
Invariants
- Single source of truth. All agent / skill / command authoring happens under
plugins/<name>/. Generated harness-specific artifacts (.codex/,.cursor-plugin/,.opencode/,.copilot/,commands/,agents/,skills/at extension root for Gemini) are produced by adapters and gitignored. Never hand-edit generated files.
- One canonical context file.
AGENTS.mdat repo root is the only context file authored directly.CLAUDE.mdimports it via@AGENTS.md. Gemini CLI reads it via.gemini/settings.jsoncontext.fileName. Codex / Cursor / OpenCode readAGENTS.mdnatively.
- Adapters own per-harness mechanics; source content stays portable. Authors write Claude-Code-quality markdown. Adapters under
tools/adapters/handle every harness-specific transform (frontmatter rewriting, model-alias mapping, body-size caps, tool-name remapping). Source files never carry harness conditional logic.
- Mechanical enforcement with remediation hints. Every lint / validator finding ships with a concrete fix string.
make validate,make garden, and theplugin-evalharness_portabilitydimension all follow this convention.
- Progressive disclosure all the way down. Context files (
AGENTS.md,CLAUDE.md, etc.) cap at ~150 lines. Skill bodies cap at ~8 KB (Codex's hard limit). Detail offloads todocs/andreferences/details.md. Detail is loaded on demand, not pre-injected.
Component overview
claude-agents/
├── AGENTS.md # Canonical context file (committed)
├── CLAUDE.md # @AGENTS.md + Claude-specific addenda
├── ARCHITECTURE.md # This file
├── README.md # User-facing GitHub landing page
├── GEMINI.md # Gemini-specific setup (auto-loaded by Gemini CLI)
├── CONTRIBUTING.md # Contributor entry point
├── .claude-plugin/marketplace.json # Plugin registry (source of truth)
├── .gemini/settings.json # Gemini CLI → AGENTS.md redirect
├── plugins/ # SOURCE OF TRUTH (81 local plugins; 2 externals in marketplace)
│ └── <name>/
│ ├── .claude-plugin/plugin.json
│ ├── agents/*.md
│ ├── commands/*.md
│ └── skills/<n>/{SKILL.md, references/, assets/}
├── tools/
│ ├── adapters/ # Per-harness adapter framework
│ │ ├── base.py # Parser, HarnessAdapter ABC, helpers
│ │ ├── capabilities.py # Capability matrix; consumed by every adapter
│ │ ├── codex.py / cursor.py / opencode.py / gemini.py / copilot.py
│ │ └── cursor_rules/ # Hand-curated .mdc rules
│ ├── generate.py # Unified CLI: `make generate HARNESS=<x>`
│ ├── validate_generated.py # Structural validation
│ ├── doc_gardener.py # Drift detection (per harness-engineering)
│ └── tests/ # Adapter + behavioral + CLI smoke tests
└── docs/ # Detailed reference docs
├── architecture.md # Full architecture (this file is the map)
├── plugins.md / agents.md / agent-skills.md # Catalogs
├── usage.md # User workflows
├── authoring.md # Portable-content style guide
├── harnesses.md # Cross-harness capability matrix
├── plugin-eval.md # Quality evaluation framework
└── round-trip-results.md # Real-CLI verification recipes
Cross-harness adapter framework
Each adapter consumes the canonical plugins/ source and emits harness-native artifacts:
| Adapter | Output | What it does |
|---|---|---|
| codex.py | .codex/skills/, .codex/agents/*.toml | Markdown → TOML transform, 8 KB body cap with references/ overflow, sandbox_mode heuristic, collision detection |
| cursor.py | .cursor-plugin/, .cursor/rules/*.mdc | Marketplace manifests + hand-curated rules. Cursor reads .claude/ directly for skills/agents |
| opencode.py | .opencode/agents/, .opencode/commands/, .opencode/skills/ | Permission block from tools: allowlist (locked agents preserve intent); strict lowercase tool names; OpenCode-safe skill names |
| copilot.py | .copilot/agents/, .copilot/skills/, .copilot/commands/ | Markdown agent profiles + SKILL.md skills + commands-as-skills; model maps to GPT-5 family |
| gemini.py | skills/, agents/, commands/*.toml at extension root | Native skills + April-2026 subagents; @{path} injection for large command bodies |
Detail in [docs/harnesses.md](docs/harnesses.md) (capability matrix per harness) and [docs/architecture.md](docs/architecture.md) (full design rationale).
Quality gates
Three mechanical gates, each runnable as a make target and wired into CI:
make validate— structural validation of every generated artifact. Errors block CI; warnings advisory.make garden— drift detection (dead links, stale artifacts, oversize skills, marketplace orphans). Sorted by severity with per-kind summary.make test— full pytest suite (386 tests: adapters + validators + gardener + real-source + round-trip + real-CLI smoke).
CI workflow: [.github/workflows/validate.yml](.github/workflows/validate.yml) runs all three on every PR, plus a cli-smoke-test job that installs OpenCode + Gemini and exercises them against the generated artifacts.
Plugin component model
Each plugin is a directory under plugins/. Three component types, all auto-discovered:
- Agents (
agents/<name>.md) — domain experts. Frontmatter:name,description("Use PROACTIVELY when …"),model: opus|sonnet|haiku|inherit, optionaltools:, optionalcolor:. - Skills (
skills/<n>/SKILL.md) — modular knowledge with progressive disclosure. Frontmatter:name,description(must include a recognized trigger phrase like "Use when …"). Supporting material inreferences/, templates inassets/. - Commands (
commands/<n>.md) — slash commands. Frontmatter:description,argument-hint.
Full conventions in [docs/authoring.md](docs/authoring.md). Authoring for portability across all five harnesses is the main concern; the adapter framework handles per-harness mechanics.
Model tiers
| Tier | Model | Use |
|---|---|---|
| 1 | Opus | Architecture, security, code review, production coding |
| 2 | inherit | Complex tasks — user chooses model (AI/ML, backend, specialized) |
| 3 | Sonnet | Docs, testing, debugging, support |
| 4 | Haiku | Fast ops, SEO, deployment, simple tasks |
Per-harness adapter maps these aliases to native model IDs at generation time (see tools/adapters/capabilities.py:MODEL_ALIASES).
See also
- [
docs/architecture.md](docs/architecture.md) — full design rationale, file ownership, capability matrix detail - OpenAI: Harness engineering — the practices this repo follows
- agents.md spec — the AGENTS.md convention this repo adopts
SKILL.md source
---
name: ARCHITECTURE
description: ARCHITECTURE skill from wshobson/agents.
---
# Architecture
Top-level architectural map for the claude-agents marketplace. Detail lives in [`docs/architecture.md`](docs/architecture.md); this file is the index per the OpenAI [harness-engineering](https://openai.com/index/harness-engineering/) pattern.
## Invariants
1. **Single source of truth.** All agent / skill / command authoring happens under `plugins/<name>/`. Generated harness-specific artifacts (`.codex/`, `.cursor-plugin/`, `.opencode/`, `.copilot/`, `commands/`, `agents/`, `skills/` at extension root for Gemini) are produced by adapters and gitignored. Never hand-edit generated files.
2. **One canonical context file.** `AGENTS.md` at repo root is the only context file authored directly. `CLAUDE.md` imports it via `@AGENTS.md`. Gemini CLI reads it via `.gemini/settings.json` `context.fileName`. Codex / Cursor / OpenCode read `AGENTS.md` natively.
3. **Adapters own per-harness mechanics; source content stays portable.** Authors write Claude-Code-quality markdown. Adapters under `tools/adapters/` handle every harness-specific transform (frontmatter rewriting, model-alias mapping, body-size caps, tool-name remapping). Source files never carry harness conditional logic.
4. **Mechanical enforcement with remediation hints.** Every lint / validator finding ships with a concrete fix string. `make validate`, `make garden`, and the `plugin-eval` `harness_portability` dimension all follow this convention.
5. **Progressive disclosure all the way down.** Context files (`AGENTS.md`, `CLAUDE.md`, etc.) cap at ~150 lines. Skill bodies cap at ~8 KB (Codex's hard limit). Detail offloads to `docs/` and `references/details.md`. Detail is loaded on demand, not pre-injected.
## Component overview
```
claude-agents/
├── AGENTS.md # Canonical context file (committed)
├── CLAUDE.md # @AGENTS.md + Claude-specific addenda
├── ARCHITECTURE.md # This file
├── README.md # User-facing GitHub landing page
├── GEMINI.md # Gemini-specific setup (auto-loaded by Gemini CLI)
├── CONTRIBUTING.md # Contributor entry point
├── .claude-plugin/marketplace.json # Plugin registry (source of truth)
├── .gemini/settings.json # Gemini CLI → AGENTS.md redirect
├── plugins/ # SOURCE OF TRUTH (81 local plugins; 2 externals in marketplace)
│ └── <name>/
│ ├── .claude-plugin/plugin.json
│ ├── agents/*.md
│ ├── commands/*.md
│ └── skills/<n>/{SKILL.md, references/, assets/}
├── tools/
│ ├── adapters/ # Per-harness adapter framework
│ │ ├── base.py # Parser, HarnessAdapter ABC, helpers
│ │ ├── capabilities.py # Capability matrix; consumed by every adapter
│ │ ├── codex.py / cursor.py / opencode.py / gemini.py / copilot.py
│ │ └── cursor_rules/ # Hand-curated .mdc rules
│ ├── generate.py # Unified CLI: `make generate HARNESS=<x>`
│ ├── validate_generated.py # Structural validation
│ ├── doc_gardener.py # Drift detection (per harness-engineering)
│ └── tests/ # Adapter + behavioral + CLI smoke tests
└── docs/ # Detailed reference docs
├── architecture.md # Full architecture (this file is the map)
├── plugins.md / agents.md / agent-skills.md # Catalogs
├── usage.md # User workflows
├── authoring.md # Portable-content style guide
├── harnesses.md # Cross-harness capability matrix
├── plugin-eval.md # Quality evaluation framework
└── round-trip-results.md # Real-CLI verification recipes
```
## Cross-harness adapter framework
Each adapter consumes the canonical `plugins/` source and emits harness-native artifacts:
| Adapter | Output | What it does |
|---|---|---|
| `codex.py` | `.codex/skills/`, `.codex/agents/*.toml` | Markdown → TOML transform, 8 KB body cap with `references/` overflow, sandbox_mode heuristic, collision detection |
| `cursor.py` | `.cursor-plugin/`, `.cursor/rules/*.mdc` | Marketplace manifests + hand-curated rules. Cursor reads `.claude/` directly for skills/agents |
| `opencode.py` | `.opencode/agents/`, `.opencode/commands/`, `.opencode/skills/` | Permission block from `tools:` allowlist (locked agents preserve intent); strict lowercase tool names; OpenCode-safe skill names |
| `copilot.py` | `.copilot/agents/`, `.copilot/skills/`, `.copilot/commands/` | Markdown agent profiles + SKILL.md skills + commands-as-skills; model maps to GPT-5 family |
| `gemini.py` | `skills/`, `agents/`, `commands/*.toml` at extension root | Native skills + April-2026 subagents; `@{path}` injection for large command bodies |
Detail in [`docs/harnesses.md`](docs/harnesses.md) (capability matrix per harness) and [`docs/architecture.md`](docs/architecture.md) (full design rationale).
## Quality gates
Three mechanical gates, each runnable as a make target and wired into CI:
1. **`make validate`** — structural validation of every generated artifact. Errors block CI; warnings advisory.
2. **`make garden`** — drift detection (dead links, stale artifacts, oversize skills, marketplace orphans). Sorted by severity with per-kind summary.
3. **`make test`** — full pytest suite (386 tests: adapters + validators + gardener + real-source + round-trip + real-CLI smoke).
CI workflow: [`.github/workflows/validate.yml`](.github/workflows/validate.yml) runs all three on every PR, plus a `cli-smoke-test` job that installs OpenCode + Gemini and exercises them against the generated artifacts.
## Plugin component model
Each plugin is a directory under `plugins/`. Three component types, all auto-discovered:
- **Agents** (`agents/<name>.md`) — domain experts. Frontmatter: `name`, `description` ("Use PROACTIVELY when …"), `model: opus|sonnet|haiku|inherit`, optional `tools:`, optional `color:`.
- **Skills** (`skills/<n>/SKILL.md`) — modular knowledge with progressive disclosure. Frontmatter: `name`, `description` (must include a recognized trigger phrase like "Use when …"). Supporting material in `references/`, templates in `assets/`.
- **Commands** (`commands/<n>.md`) — slash commands. Frontmatter: `description`, `argument-hint`.
Full conventions in [`docs/authoring.md`](docs/authoring.md). Authoring for portability across all five harnesses is the main concern; the adapter framework handles per-harness mechanics.
## Model tiers
| Tier | Model | Use |
|---|---|---|
| 1 | Opus | Architecture, security, code review, production coding |
| 2 | inherit | Complex tasks — user chooses model (AI/ML, backend, specialized) |
| 3 | Sonnet | Docs, testing, debugging, support |
| 4 | Haiku | Fast ops, SEO, deployment, simple tasks |
Per-harness adapter maps these aliases to native model IDs at generation time (see `tools/adapters/capabilities.py:MODEL_ALIASES`).
## See also
- [`docs/architecture.md`](docs/architecture.md) — full design rationale, file ownership, capability matrix detail
- [OpenAI: Harness engineering](https://openai.com/index/harness-engineering/) — the practices this repo follows
- [agents.md spec](https://agents.md/) — the AGENTS.md convention this repo adopts
Related skills 6
running-claude-code-via-litellm-copilot
Use when routing Claude Code through a local LiteLLM proxy to GitHub Copilot, reducing direct Anthropic spend, configuring ANTHROPIC_BASE_URL or ANTHROPIC_MODEL overrides, or troubleshooting Copilot proxy setup failures such as model-not-found, no localhost traffic, or GitHub 401/403 auth errors.
skills-cli
Use when users ask to discover, install, list, check, update, remove, back up, restore, sync, or initialize Agent Skills, mention `bunx skills`, `npx skills`, `skills.sh`, or `skills-lock.json`, ask "find a skill for X", or want help extending agent capabilities with installable skills.
repo-intake-and-plan
Narrow RigorPilot helper for README-first deep learning repo reproduction. Use when the task is specifically to scan a repository, read the README and common project files, extract documented commands, classify inference, evaluation, and training candidates, and return the smallest trustworthy reproduction plan to the main orchestrator. Do not use for environment setup, asset download, command execution, final reporting, paper lookup, or end-to-end orchestration.
image-to-video
Animate any still image on RunComfy — this skill is a smart router that matches the user's intent to the right i2v model in the RunComfy catalog. Picks HappyHorse 1.0 I2V (Arena #1, native audio, identity preservation) for general animations, Wan 2.7 with `audio_url` for custom-voiceover lip-sync, or Seedance 2.0 Pro for multi-modal animation from image + reference video + reference audio. Bundles each model's documented prompting patterns so the caller gets sharper output without burning ite...
video-edit
Edit existing video on RunComfy — this skill is a smart router that matches the user's intent to the right edit model in the RunComfy catalog. Picks Wan 2.7 Edit-Video (general restyle / background swap / packaging swap, identity + motion preservation), Kling 2.6 Pro Motion Control (transfer precise motion from a reference video to a target character), or Lucy Edit Restyle (lightweight identity-stable restyle / outfit swap). Bundles each model's documented prompting patterns so the skill gets...
nano-banana-2
Generate images with Google Nano Banana 2 (Gemini-family flash-tier text-to-image) on RunComfy — bundled with the model's documented prompting patterns so the skill gets sharper output than naive prompting against the same model. Documents Nano Banana 2's strengths (rapid iteration, in-image typography rendering, predictable framing, optional web-grounded context), the resolution-tier pricing, the safety-tolerance dial, and when to route to Nano Banana Pro / GPT Image 2 / Flux 2 / Seedream in...