Agents
41 Claude Code agents, grouped by domain. This folder is the browsable,
installable copy of .claude/agents/, which Claude Code loads automatically when
you work in this repo. The two must stay identical (see Keeping the copies in
sync).
Contents
- How they work together
- Roster
- Stack agents and their house rules
- House practices
- Memory
- Install
- Adding an agent
- Keeping the copies in sync
- Other runtimes
How they work together
host-agent hosts: it holds the house rules and decides who handles what.
eng-manager-agent decomposes multi-domain work and launches the specialists.
Subagents can nest three layers below the main session, so run host-agent as
the main session (claude --agent host-agent) to leave room for the layers.
flowchart TD
H["host-agent<br/>(main session)"] --> E[eng-manager-agent]
H --> ST[stacy-agent]
H --> PE[principal-eng-agent]
H --> X["any specialist or skill"]
E --> K["kotlin/ · java/ · swift/ · golang/ · web/"]
E --> D["design/ · product/ · data/ · platform/"]
E --> G["generic/ · conversation/"]
E --> ST
E --> PE
Roster
| Folder | Agent | Use it for |
|---|---|---|
person/ |
stacy-agent |
Code review, building, and pattern calls in Stacy Devino’s voice; the house reviewer persona |
host-agent |
The house’s host: enforces the house rules, delegates to any agent or skill, spins work up and down, reports messes, self-evolves only with your approval | |
conversation/ |
principal-eng-agent |
Architecture and senior code review; simplify, reuse, prefer proven patterns |
career-eng-agent |
Staff+ career paths, leveling, promotion cases | |
generic/ |
eng-manager-agent |
Orchestrating several specialists on one task; launches them itself (Agent tool); runs architecture-review |
dir-eng-agent |
Engineering-org health, delivery, quality gates | |
gradle-agent |
Gradle, Kotlin DSL, version catalogs, convention plugins, build speed | |
market-research-agent |
Competitors, pricing, positioning, market signals | |
user-researcher-agent |
Behavior, motivation, friction, gamification | |
kotlin/ |
android-agent |
Android with Compose and KMP-style architecture; ART/AOSP internals |
kmp-agent |
Kotlin Multiplatform: commonMain, expect/actual |
|
cmp-agent |
Compose Multiplatform UI across Android, iOS, desktop, web | |
kotlin-agent |
Idiomatic Kotlin and Kotlin-first dependencies | |
kotlin-springboot-agent |
Kotlin + Spring Boot services | |
java/ |
java-spring-agent |
Java + Spring Boot services |
swift/ |
ios-agent |
iOS apps across Swift, Objective-C, and legacy code |
swift-agent |
Swift language, SwiftPM, testing, version migrations | |
golang/ |
golang-agent |
Idiomatic, standard-library-first Go |
web/ |
frontend-web-agent |
Frontend work that crosses design, a11y, performance, tooling |
javascript-web-agent |
Browser JS/TS and Web APIs | |
javascript-runtime-agent |
Node, Deno, Bun, edge runtimes | |
react-web-agent |
React and React meta-frameworks | |
design/ |
mobile-design-agent |
iOS HIG + Material design decisions |
web-design-agent |
Responsive web layout and typography | |
accessibility-agent |
Accessibility audits (HIG, Android, WCAG 2.1 AA) | |
dir-design-agent |
Design-system health and design leadership | |
product/ |
mobile-product-agent |
Mobile product scope and platform trade-offs |
backend-product-agent |
API and service-boundary product decisions | |
customer-product-agent |
Customer-experience-led product shaping | |
dir-product-agent |
Product-org health and roadmap coherence | |
data/ |
googleanalytics-agent |
GA4 / Firebase Analytics instrumentation |
airflow-agent |
Airflow DAGs and operators | |
airtable-agent |
Airtable schema, formulas, automations, API | |
snowflake-insights-agent |
Snowflake ingestion, modeling, cost | |
snowflake-data-agent |
Snowflake Cortex and in-platform AI | |
platform/ |
aws-agent |
AWS architecture and IAM |
gcp-agent |
GCP infrastructure | |
google-api-agent |
Google Cloud and Workspace APIs | |
kubernetes-agent |
Kubernetes on EKS | |
terraform-agent |
Terraform / OpenTofu | |
docker-agent |
Dockerfiles, Compose, image builds |
Stack agents and their house rules
Each stack agent’s House practices names the platform/ rules it follows and
the CI workflow that checks its work.
| Agent | Rules (platform/) |
CI |
|---|---|---|
kotlin-agent |
AGENTS.kotlin.md |
jvm-quality |
android-agent |
AGENTS.kotlin.md + AGENTS.android.md |
jvm-quality + android-quality |
kmp-agent, cmp-agent |
AGENTS.kotlin.md + AGENTS.kmp.md |
jvm-quality + shared-kmp-quality |
kotlin-springboot-agent |
AGENTS.kotlin.md + AGENTS.spring.md |
jvm-quality |
java-spring-agent |
AGENTS.java.md + AGENTS.spring.md |
jvm-quality |
gradle-agent |
Gradle rules in AGENTS.kotlin.md, build rules in AGENTS.java.md |
jvm-quality, android-quality, shared-kmp-quality |
swift-agent |
AGENTS.swift.md |
swift-quality |
ios-agent |
AGENTS.swift.md + AGENTS.ios.md |
swift-quality + ios-quality |
javascript-web-agent, javascript-runtime-agent |
AGENTS.typescript.md |
web-quality |
react-web-agent, frontend-web-agent |
AGENTS.typescript.md + AGENTS.react.md |
web-quality |
House practices
Every agent except stacy-agent and host-agent ends with a House practices
(team memory, 2026-10) section; those two read the source directly. It has three layers:
- Evidence, for every agent. Check repo state against
origin/main, list every hit before claiming “zero X”, stay in scope, verify before “done”, treat pasted secrets as compromised, follow the rooms inAGENTS.mdand theplatform/files for each stack in the diff. - Code, for agents that write or review it. No speculative refactors, no defensive code or leftover noise, load-bearing comments only, tests that call the changed function, commit only when asked.
- Domain notes, e.g. lint enforcement drift and multiplatform-first helpers for the Kotlin agents, cross-platform parity for iOS and design, ticket workflow for product, and each stack agent’s rules and CI.
stacy-agent carries the same lessons in its working-style defaults. When a
lesson changes, update the memory first, then the agents that cite it.
Memory
| Agent | memory: |
Directory | Writes |
|---|---|---|---|
stacy-agent |
project |
.claude/agent-memory/stacy-agent/ |
team lessons, as it learns them |
host-agent |
project |
.claude/agent-memory/host-agent/ |
its own lessons, only after you approve each one (learning, evidence, why, exact change) |
project memory lives in the repo you are working in. host-agent’s working
memory for the current effort is machine-local:
.claude/agent-memory-local/host-agent/WORKING.md, ignored by git.
Install
flowchart LR
A[agents/] -- "link_agents.sh SET" --> P["~/.claude/agents/SET/<br/>symlinks, every project"]
A -- "link_agents.sh --scan SET PATH" --> S["~/.claude/agents/SET/<br/>only the agents a project needs"]
A -- "rsync" --> R["REPO/.claude/agents/<br/>copies, shared with the team"]
A personal agent set
./agents/link_agents.sh --list # show the roster
./agents/link_agents.sh house # symlink all into ~/.claude/agents/house/
./agents/link_agents.sh --scan house ~/code/app # pick agents for a project's stack
claude --agent host-agent # start a hosted session
Links point back into this repo, so git pull here updates every set. --scan
detects the project’s stacks, recommends the matching agents plus a bench
(host-agent, stacy-agent, eng-manager-agent, principal-eng-agent,
product and research), asks before linking, and writes a SYSTEM.md in the set
recording the choices. It runs on the stock macOS bash 3.2.
The script finds agents in the category folders next to it, so this README is
never linked. If ~/.claude/agents/ already has another copy of these agents,
remove it first or every agent shows up twice.
One repository
Copy, don’t link, so everyone who clones the repo gets the same agents:
rsync -a --exclude README.md --exclude link_agents.sh --exclude sdk agents/ ../your-app/.claude/agents/
cp -R .claude/agent-memory ../your-app/.claude/ # team memory, optional
Never put a README in .claude/agents/: Claude Code reads every .md file
there as an agent definition.
A set of repositories
Use one personal set (above), and start host-agent from one repo with the others
added: claude --agent host-agent --add-dir ../other-repo. Each repo’s own
AGENTS.md still governs that repo. To give each repo a shared copy instead,
repeat the rsync per repo.
Adding an agent
- Put it in the matching category folder with standard frontmatter (
name,description,tools). If it delegates, includeAgentintools. - Add a House practices section built from
.claude/agent-memory/stacy-agent/, plus itsplatform/rules if it is a stack agent. - Add a row to the roster above and to
eng-manager-agent’s roster, then sync the copies.
Keeping the copies in sync
Edit one copy, then mirror it:
rsync -a --delete --exclude README.md --exclude link_agents.sh --exclude sdk agents/ .claude/agents/
diff -r -x README.md -x link_agents.sh -x sdk -x .DS_Store agents .claude/agents # must print nothing
scripts/export-agents.py && scripts/export-agents.py --check # regenerate the other runtimes
Other runtimes
Copilot and Cursor read .claude/agents/ directly. For Codex (.codex/agents/*.toml),
Gemini CLI (.gemini/agents/*.md) and Copilot’s own .github/agents/*.agent.md,
run scripts/export-agents.py; the outputs are generated from this folder and
checked in. sdk/openai_agents_house.py builds OpenAI Agents SDK agents from the
same files at runtime (python3 agents/sdk/openai_agents_house.py prints the
roster with each agent’s capabilities). What each runtime honors, and what it
ignores (tools:, memory:), is in PORTABILITY.md.