# Claude Code Agent Team Generator: From Product Brief to a Linted .claude Directory

> Claude Agents Team is an open-source Claude Code plugin that writes a whole agent team from a product description and lints every file before it exits.

*2026-10-19T12:49:04Z*

# Claude Code Agent Team Generator: From Product Brief to a Linted .claude Directory

If you use Claude Code on a real project, you eventually want an agent team: an orchestrator, a few specialist subagents, some skills, shared rules and hooks. Writing that `.claude` directory by hand takes hours, and it is easy to get subtly wrong.

Claude Agents Team is an open-source Claude Code plugin that generates the whole directory from a product description, then lints every file it wrote before the run exits.

![Brief in, team out: orchestrator, specialists, skills, rules and hooks from one product description](/uploads/sites/d2901c92-cbd7-4bc0-a576-f63b4938258b/media/claude-agents-team-brief-in-team-out.png)

**The short answer:** run `/team-gen` with a product brief and you get an orchestrator, specialist agents, skills, rules and hooks in `.claude/`. `/evaluate-agent` scores any agent or skill file against a rule set where every rule cites a source. `/meet` runs a multi-agent meeting on a topic and writes the minutes.

## The problem

An agent team is more than a list of prompts. Each agent needs frontmatter that parses, a description that tells Claude when to delegate, a sensible tool list and a model that fits the job. The team also needs an orchestrator that routes work, rules everyone follows and hooks that enforce them.

The README is blunt about where this came from: the author runs three large agent teams (about 14, 42 and 40 agents) and was hand-rolling each one from scratch. The plugin extracts the patterns that worked, lets you compose new teams from them, and tells you when an agent is below standard.

## How it works

Three pillars, one plugin.

### 1. `/team-gen`: a brief becomes a team

Give it a PRD file or an inline brief. It extracts the signals it needs (services, tech stack, team size hint, constraints) and asks you when something is unclear instead of inventing it. Then it picks from the archetype library, fills the templates and writes the directory.

The library has 8 agent archetypes and 4 skill archetypes, 13 rule templates and 4 hook templates (counted from the repository's `templates/` folder):

| Archetype | Model | Notes |
|---|---|---|
| orchestrator | Opus | Always included. Owns routing and the plan lifecycle. |
| tech-leader | Opus | Optional. Read-only architecture review. |
| domain-engineer | Sonnet | One per service or owned path. |
| designer | Sonnet | When the product has a real UI. |
| qa-engineer | Sonnet | Always included. |
| security-engineer | Sonnet | When auth, payments, PII or external calls are involved. |
| devops-engineer | Sonnet | When the team owns CI/CD or infrastructure. |
| monitor | Haiku | Background agent for larger or always-on teams. |

The skill assembles a `team.json` and hands it to a scaffold script. You can save that file under `.claude/team.json` so regenerating later is one command.

### 2. The evaluator: every file is graded

![Graded before it exits: a static linter checks every generated agent and skill file](/uploads/sites/d2901c92-cbd7-4bc0-a576-f63b4938258b/media/claude-agents-team-graded-before-it-exits.png)

The evaluator is the part the rest is built around. It scores an agent or skill file across six dimensions: frontmatter, description, tool hygiene, model fit, body structure and anti-patterns. Each rule cites Anthropic's spec or published prior art (the rubric references LangChain `agentevals`, Braintrust, Galileo and Anthropic's own evals write-up).

There are three phases:

- **Static linter.** Deterministic, free and safe for CI.
- **LLM-as-judge** (`--deep`). One isolated call per dimension, for nuance such as vague descriptions or contradictions. It uses the Anthropic API.
- **Behavioral harness.** Compares what an agent did in a transcript with what its definition promised.

The generator runs the static linter on every file it produces. A `reject` verdict on any file fails the run, and the exit code is the worst verdict observed. The README shows the shape of a run:

```text
=== Self-evaluation ===
  shop-orch.md           A  100/100  ship
  api-engineer.md        A   97/100  ship
  ...
=== Self-eval worst verdict: exit 0 ===
```

### 3. `/meet`: a team meeting with minutes

![/meet runs a multi-agent meeting on a topic and writes the minutes](/uploads/sites/d2901c92-cbd7-4bc0-a576-f63b4938258b/media/claude-agents-team-team-meetings.png)

Once a team exists, `/meet "Should we ship the v2 migration this quarter?"` sends the topic to each agent in parallel. Every agent answers from its own domain: a constraint check, its top three risks, dependencies, open questions and an effort estimate. The orchestrator then consolidates a ranked top-10 of risks, the disagreements and the open questions, and writes the minutes to `.meetings/YYYY-MM-DD-<topic>.md`.

The docs give a rough cost: one to three minutes of wall-clock for a five-agent team, and five to ten for fifteen agents. Each attendee costs on the order of 200 input and 200 output tokens, plus the orchestrator.

## Getting started

Install from the repository (commands from the README):

```bash
git clone https://github.com/fadymondy/agents-team.git
claude plugin install ./agents-team/plugins/agents-team
```

Then:

```bash
# Generate a team from a PRD
/team-gen ./my-product-spec.md --target .

# Hold a meeting on a topic
/meet "Should we ship the v2 migration this quarter?"

# Lint an agent
/evaluate-agent .claude/agents/code-reviewer.md
```

The repo ships an example PRD and spec under `examples/` if you want to run the generator end to end first.

## Honest limits

- **It writes files, not guarantees.** A grade A means the files pass the rule set. It does not prove the team will behave well on your codebase.
- **The behavioral harness is early.** The README describes its first version as replay-only, scoring a transcript after the fact.
- **The judge costs tokens.** `/evaluate-agent --deep` calls the Anthropic API and needs `ANTHROPIC_API_KEY`. The static linter does not.
- **It is opinionated.** The rules and archetypes reflect how the author runs teams: plan first, small wins, no push without permission, a QA and a security agent by default. Remove what you do not want.
- **Not Claude Code's own agent-teams feature.** This plugin generates the definition files. It does not change how Claude Code schedules or runs them.

## FAQ

**Is this the same as Claude Code's built-in agent teams?** No. It is a separate open-source plugin that generates and checks the files of a team in your `.claude` directory.

**Does the linter call an LLM?** No. The static linter is deterministic and free. Only the optional `--deep` judge uses the API.

**What happens if a generated file fails the lint?** A `reject` verdict on any file fails the run.

**Can I edit the result?** Yes. It is plain Markdown and JSON. Edit `team.json` and regenerate, or edit an agent and re-lint it with `/evaluate-agent`.

**What does it cost?** It is open source under the MIT license, and it runs inside your own Claude Code session.

## Links

- Product Hunt: [Claude Agents Team](https://www.producthunt.com/products/claude-agents-team)
- Source: [github.com/fadymondy/agents-team](https://github.com/fadymondy/agents-team)
- Docs: [team-gen](https://github.com/fadymondy/agents-team/blob/main/docs/team-gen.md), [meet](https://github.com/fadymondy/agents-team/blob/main/docs/meet.md), [evaluator](https://github.com/fadymondy/agents-team/blob/main/docs/evaluator.md)
- Why I built it: [Why I built Claude Agents Team](https://fadymondy.com/en/blog/why-i-built-claude-agents-team)
- Arabic version: [النسخة العربية](https://agents-team.fadymondy.com/ar/blog/claude-code-agent-team-generator)

---

Source: https://agents-team.fadymondy.com/en/blog/claude-code-agent-team-generator
