Skip to main content

agent-guild

PyPI

A ready-made multi-agent setup for Claude Code, Cursor and Codex, installed into a project with one command. (The Sonnet/Opus/Haiku tiering below is Claude Code's; Cursor and Codex agents inherit the session model.) A Sonnet orchestrator delegates to specialist subagents (Opus architect and grader, Sonnet coders, Haiku utility), and three features come wired in:

  • Multiple agents: architect, coder (parallel-safe), code-grader and utility, plus the orchestrator rules that decide who does what: routing, briefs and reports. See development-workflow.md.
  • Memory, in two layers, so context survives between sessions:
    • memory-bank: current state (what's being worked on, decisions, progress), in a git-tracked memory/ folder.
    • jev-mem: long-term facts, recalled by relevance through an MCP server and session hooks.
  • Spec-Driven Development (SDD), via sdd-feature: specs, design, interfaces, implementation and grading, with approval gates between phases. Opt-in per project.
uvx agent-guild /path/to/project
                         user
                          │  approvals (chat only)
                          ▼
              ┌──────────────────────┐   reads/writes   memory/ (state, gate status)
              │ orchestrator (Sonnet)│ ───────────────▶ jevmem (facts)      ← single writer
              └──────────────────────┘                  specs/, wireframes/
        plans │      chunks │       grade │      chores │
              ▼             ▼             ▼             ▼
        architect        coder ×N     code-grader     utility
        (Opus, RO)      (Sonnet)      (Opus, RO)      (Haiku)
              └── all read specs/, memory/, jevmem recall; report memory candidates + friction ──┘

Not affiliated with or endorsed by Anthropic. "Claude" and "Claude Code" are trademarks of Anthropic.

Files

File Install to (Claude Code) Role
development-workflow.md imported from ~/.claude/CLAUDE.md Orchestrator rules: knowledge layers, routing, SDD phase → agent map, briefs, memory protocol
agents/architect.md ~/.claude/agents/ Opus, read-only. Plans, SDD Phase 1 design decisions, Phase 2 interfaces, root causes
agents/coder.md ~/.claude/agents/ Sonnet. Scoped implementation; parallel-safe
agents/code-grader.md ~/.claude/agents/ Opus, read-only. SDD Phase 5. Body identical to the sdd-feature skill's grader; only the frontmatter differs
agents/utility.md ~/.claude/agents/ Haiku. Checks, git, moves, bulk edits

These are the Claude Code sources; the installer converts them for Cursor and Codex.

Install

Quick: the installer (per project)

agent-guild copies everything into a project (plain copies, not links, so the project can edit them) and is safe to re-run: files that differ from the shipped version are skipped unless you pass --force.

uvx agent-guild /path/to/project --dry-run
uvx agent-guild /path/to/project

It does, in the project, for each coding tool it finds (see Tools below):

  • copies the agents in that tool's format and folder (.claude/agents/*.md; .cursor/agents/*.md with readonly instead of disallowedTools; .codex/agents/*.toml), and one shared development-workflow.md next to the first tool's agents;
  • copies the memory-bank, jev-memory and sdd-feature skills into that tool's skills folder (.claude/skills/, .cursor/skills/, .codex/skills/ for Codex), cloned from GitHub, or from local clones with --sources-dir DIR;
  • adds three removable sections to AGENTS.md: Agents and delegation, Memory bank and Phase Gate Protocol. If the project has only a CLAUDE.md, they go there instead; with neither, AGENTS.md is created. When Claude Code is one of the tools, CLAUDE.md gets an @AGENTS.md import (Claude Code doesn't read AGENTS.md). A section that either file already has is not added again;
  • adds the pinned jevmem server to the tool's MCP config (.mcp.json, .cursor/mcp.json, .codex/config.toml), merging into existing files;
  • for Claude Code only: adds the jevmem hooks to .claude/settings.json, sets autoMemoryEnabled: false and the project's model to sonnet.

Tools. The installer detects what the project uses: .claude/ or CLAUDE.md → Claude Code, .cursor/ → Cursor, .codex/ or .agents/ → Codex; with several, it installs for all of them, and with none, for Claude Code. Override with --tools claude,cursor,codex. Cursor and Codex agents don't carry the Claude model tiering (Cursor gets model: inherit, Codex inherits the session model) and Codex has no read-only switch for an agent, so the read-only agents say it in their instructions. Cursor also reads .claude/ and .agents/ folders, so with several tools installed it may list a skill twice.

Flag Effect
--tools claude,cursor,codex Install for these tools instead of the detected ones
--with coder-python / coder-swift / coder-typescript Add a language coder (repeatable): the generic coder, required to use that language's code-navigation MCP (codenav-mcp, codenav-swift-mcp, webnav-ts-mcp). Also adds the MCP server to .mcp.json (an existing entry is kept) and an AGENTS.md rule that routes that language's work to it. The MCP's own prerequisites (uv, a Swift toolchain, Node) are printed after the install
--coders-only With --with: install only the language coders (agent, MCP server, AGENTS.md rule) and nothing else. After a normal install, the tool detects Python, Swift and TypeScript/JS projects and prints this command for the coders you don't have yet
--without sdd / memory-bank / jevmem Leave a component out. sdd also drops code-grader and the gate section; jevmem drops its skill, server, hooks and the auto-memory switch
--model ALIAS Project main-session model; default sonnet (the per-project alternative to the global setting below), none leaves it unset
--import-cursor-skills Also copy the project's .cursor/skills/* into .claude/skills/ (needs claude among the tools); skills that already exist are kept
--personal-settings Put --model and autoMemoryEnabled in the git-ignored .claude/settings.local.json
--import-auto-memory First import the project's existing auto-memory notes into jevmem
--keep-auto-memory Don't switch auto-memory off
--sources-dir DIR Use local clones named memory-bank/, jev-mem/, sdd-feature-skill/ instead of GitHub
--git-exclude List the files this run creates in .git/info/exclude (local to your clone, never committed), so you can try the setup without it showing in git status. Off by default: files are added normally and your git settings apply. Edits to files git already tracks (e.g. an existing .mcp.json) can't be hidden; the tool warns about them
--force, --dry-run Overwrite edited copies; show the plan without writing

Still per machine, once: uvx jevmem config init and uvx --from jevmem jevmem warmup.

Prefer to do it by hand, or want the per-machine variant (agents and memory in ~/.claude for every project)? See docs/manual_installation.md.

Development

git clone https://github.com/illescasDaniel/agent-guild && cd agent-guild
uv run pytest
uv run agent-guild /path/to/project --dry-run

From a checkout, the CLI reads agents/, templates/ and development-workflow.md at the repo root; the published wheel bundles them.

Adding it to a project that already has its own setup

The installer never overwrites a file that differs from the shipped one (and skips rules sections that AGENTS.md or CLAUDE.md already has), so it is safe to run on a project with its own agents, skills and rules. After it runs:

  • Skipped files are yours. Anything the log marks skipped ... differs keeps your version. If it is an older or customised copy of a shipped one (the sdd-feature skill, code-grader, jev-memory), diff it against the shipped file and merge what you want by hand. --force replaces it instead.
  • New files can land next to yours. A skill folder you already have keeps its SKILL.md, but the shipped files that are missing (templates, scripts) are added beside it. If .claude/skills is a symlink to .cursor/skills, the log says so, and the skills are written there.
  • Cursor reads .claude/agents/ too. The agents installed here work in Cursor without copies in .cursor/agents/ (.cursor/agents/ wins on a name clash). Cursor ignores tools, disallowedTools and effort, so the read-only agents are not read-only there. If your project has a test that requires every .claude/agents/*.md to have a .cursor/agents/ twin, relax it to require the twin only for the Cursor agents.
  • Skip what you already have with --without memory-bank / jevmem / sdd, for example when your own memory-bank skill has a different name.

Design choices

  • The orchestrator is the only writer of memory. Parallel coders writing memory/ would conflict, and someone has to decide what is worth remembering. Subagents can read memory, including jevmem recall, and return Memory candidates and Friction sections in their reports.
  • Subagents don't get the jevmem hooks. The SessionStart and UserPromptSubmit hooks fire in the main session only. So the agents that need history (architect, coder, grader) can call memory_recall themselves.
  • The files on disk are the hand-off. Once a wireframe, SPEC.md or interfaces exist, briefs point to them instead of restating them. That solves the cold-start problem without long prompts.
  • disallowedTools instead of a tools allowlist for architect, coder and grader. They inherit project MCP servers (e.g. code-navigation MCPs) without per-project edits, while jevmem writes and file edits stay blocked where needed. utility keeps a plain allowlist.
  • Language coders are separate, opt-in agents with an allowlist. A generic coder only inherits the project's navigation MCPs; in practice it still reached for grep and sed, because the MCP tools arrive deferred (name only) and the brief or its own habits point elsewhere. coder-python, coder-swift and coder-typescript (--with) are generated from coder.md plus a navigation section that names the MCP's tools, and list those tools in tools: so they load up front. An AGENTS.md rule routes that language's work to them. Without --with, nothing changes.
  • The grader runs on Opus. The code it grades was written by Sonnet coders, so a different, stronger model gives a more independent review.
  • SDD is opt-in. The global workflow uses SDD only when a project's AGENTS.md / CLAUDE.md adopts the Phase Gate Protocol, or when you ask for the sdd-feature skill directly. Projects that don't want gates just leave the rule out.
  • Gates and gate status. SDD gates stay between the orchestrator and the user. The gate status is recorded in memory/activeContext.md, so a new session resumes at the right gate.

License

MIT

Metadata

Release files for agent-guild 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agent-guild 1.3.0
File Size Uploaded Provenance
agent_guild-1.3.0.tar.gz 41.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-guild 1.3.0
File Interpreter ABI Platform
agent_guild-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 80.7 kB

Release files / agent_guild-1.3.0.tar.gz

Download URL agent_guild-1.3.0.tar.gz
Size 41.1 kB
Tags Source
SHA-256 checksum
How to use checksums
351d4fcdeb43c9e52fbaaea567652868c1f8c532eb768733c108949039829f57
BLAKE2b-256 checksum
How to use checksums
f184cefc0ae756f82411aa0d7cd86d85cadebad8895a9a887375c3c11f463b31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / agent_guild-1.3.0-py3-none-any.whl

Download URL agent_guild-1.3.0-py3-none-any.whl
Size 39.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9cd9e6ebdee59f93833c6fd269ea13760914254ea4e6ae1da5a326dc3553f117
BLAKE2b-256 checksum
How to use checksums
30894dfb164f2ced976b9550739956a41b480ac37d604619ddf14a11e6186016
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for agent-guild 1.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for agent_guild-1.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page