A compiler for AI dev teams. Point it at a repository; it reads the actual code, asks a short interview, and generates a small, project-specific team of review agents — in the native format of whatever AI tool you use (Claude Code, Codex, Gemini CLI, Cursor) — plus deterministic verification hooks that enforce the checkable part of each agent's checklist.
It runs once and exits. It is not a persistent chatbot team. It produces files.
Status: experimental (v0.1.0). Interfaces and output formats will change. Treat generated agents as a strong first draft to review, not gospel — and always read generated hook scripts before enabling them (see SECURITY.md).
Static agent libraries give everyone the same "Security Engineer" whether they're building a landing page or a telehealth app. Team-Ops generates a Security agent that names your payment integration and your auth middleware — or doesn't include one at all if your project has no reason for it.
The one rule the generator lives by: if a generated line could apply to any
project, it's deleted. A shipped eval set (evals/) and a mechanical
specificity linter (specificity-linter.md) enforce that.
- gstack — a fixed, excellent team of skills. Team-Ops sits above it: it can generate the project-specific team, and if gstack is installed, the generated agents delegate execution to its commands. Complementary, not competitive.
- Static subagent collections — curate or recommend from a fixed roster. Team-Ops generates, grounded in your repo.
- Skill-from-codebase tools (e.g. Repomix) — produce reference docs about a codebase. Team-Ops produces a build team with enforced review discipline.
Claude Code — clone straight into your project's skills folder:
git clone https://github.com/saar2u/team-ops .claude/skills/team-opsRestart Claude Code (or /reload-plugins), then run /team-ops or say
"Set up a Team-Ops team for this project." It will scan the repo, ask you an
interview and wait, propose a roster, then generate on your approval.
Codex / Gemini CLI / other tools — point the tool at SKILL.md and give the
same instruction; it emits the portable targets (AGENTS.md / GEMINI.md + a git
pre-commit gate) instead of Claude-native files.
| Your tool | Files written |
|---|---|
| Claude Code | .claude/agents/<role>.md + a Stop hook in .claude/settings.json |
| Codex / Copilot / generic | AGENTS.md |
| Gemini CLI | GEMINI.md |
| Cursor | .cursor/rules/<role>.mdc |
| all | .team-ops/checks/*.sh + run.sh, .githooks/pre-commit, .team-ops/manifest.json |
- Scan the repo into grounded PROJECT FACTS (
references/detection-signals.md). - Interview — a mandatory stop; up to five questions, then wait.
- Decide a 4–6 role team by rule; cut roles the project has no work for.
- Generate each agent from
templates/agent.template.md, grounded in real paths. - Lint every agent through
specificity-linter.md(no generic filler survives). - Emit hooks — turn enforceable checklist lines into scripts via
hooks-emitter.md, each passinghook-linter.md(drop anything that could cry wolf). - Emit native files per platform (
emitters.md) + a manifest for cheap re-runs.
| File | Purpose |
|---|---|
SKILL.md |
the generator / entry point |
references/detection-signals.md |
concrete repo-scan table |
templates/agent.template.md |
per-agent output template |
specificity-linter.md |
mechanical gate against generic agents |
hooks-emitter.md |
checklist → portable verification scripts + per-host wiring |
hook-linter.md |
keeps generated hooks from false-positiving |
emitters.md |
canonical → native, one section per platform |
evals/eval-set.md |
six cases + rubric proving output is project-specific |
See CONTRIBUTING.md. The short version: any change to a template or the generator must keep the eval set passing, and any new check must pass the hook linter. Specificity is the product — PRs that add generic filler will be asked to make it concrete or drop it.
MIT.