a-team
Health Uyari
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Basarisiz
- rm -rf — Recursive force deletion command in .agent-sync/pre_tool_use.py
Permissions Gecti
- Permissions — No dangerous permissions requested
Bu listing icin henuz AI raporu yok.
Universal multi-agent infrastructure for AI coding assistants. 25 specialist agents, 16 enforced workflow skills, and a lead orchestrator — for Claude Code, Codex CLI, Cursor, and OpenCode.
A Team — A Complete Engineering Team in One Folder v1.1.0
Not a marketplace of agents you configure. A pre-configured, pre-enforced engineering team of 25 specialists — with a lead orchestrator, hard quality gates, and a Pipeline Auditor that verifies work was actually done, not just reported. Drop one folder into any project and it's operational from the first keystroke. Works on Claude Code, Codex CLI, Cursor, and OpenCode.
Born from the community. A Team was built by studying, using, and needing to personalise several excellent open-source agent projects. The architecture combines the best patterns from each into a single, portable baseline. See Acknowledgments for the projects that made this possible.
Domain packs — install any alongside A Team:
- builder-ai — LLM engineering quality (evals, RAG, prompt versioning, safety)
- builder-design — AI UI design (states, streaming, accessibility, tokens)
- builder-product — Product quality gates (PRD, metrics, research synthesis, AI validation)
- builder-growth — Growth & messaging (positioning, copy, experiments, retention)
What It Does
A Team turns any AI coding assistant into a structured, self-enforcing engineering team. Instead of one general-purpose model trying to do everything, you get:
- 25 specialist agents, each with a defined scope, model tier, and tool set
- 18 workflow skills that gate what can happen and when
- A lead orchestrator that manages daily task flow, dispatch, and state
- Hard enforcement hooks that inject mandatory checks at session start and after every file edit
- A pipeline auditor that verifies agents actually ran required checks — not just claimed they did
The infrastructure is stateless by design. Every agent derives its context from files, not memory. Sessions can be interrupted and resumed without drift.
Installation
Pick the method that fits your setup. All methods install the same files into your project directory.
Option A — One-liner (recommended)
Mac / Linux / WSL:
bash <(curl -fsSL https://raw.githubusercontent.com/RBraga01/a-team/main/install.sh)
Windows PowerShell:
irm https://raw.githubusercontent.com/RBraga01/a-team/main/install.ps1 | iex
To install into a specific directory, pass the path as an argument:
bash <(curl -fsSL https://raw.githubusercontent.com/RBraga01/a-team/main/install.sh) /path/to/project
Option B — GitHub CLI
# Clone the repo (shallow, only latest commit)
gh repo clone RBraga01/a-team -- --depth 1
# Copy the infrastructure into your project
cp -r a-team/.claude your-project/
cp -r a-team/skills your-project/
cp -r a-team/hooks your-project/
cp -r a-team/templates your-project/
cp a-team/INIT_TEMPLATE.md your-project/INIT.md
# Clean up
rm -rf a-team
Option C — Git (no GitHub CLI)
# Sparse clone — downloads only the necessary directories, not the full repo
git clone --filter=blob:none --sparse --depth 1 \
https://github.com/RBraga01/a-team.git
cd a-team
git sparse-checkout set .claude skills hooks templates INIT_TEMPLATE.md
# Copy into your project
cp -r .claude skills hooks templates ../your-project/
cp INIT_TEMPLATE.md ../your-project/INIT.md
cd .. && rm -rf a-team
Windows (PowerShell equivalent):
git clone --filter=blob:none --sparse --depth 1 `
https://github.com/RBraga01/a-team.git
cd a-team
git sparse-checkout set .claude skills hooks templates INIT_TEMPLATE.md
Copy-Item -Recurse .claude,skills,hooks,templates ..\your-project\
Copy-Item INIT_TEMPLATE.md ..\your-project\INIT.md
cd .. ; Remove-Item a-team -Recurse -Force
Option D — Download ZIP (no git required)
- Go to github.com/RBraga01/a-team
- Click Code → Download ZIP
- Extract and copy
.claude/,skills/,hooks/,templates/into your project root - Copy
INIT_TEMPLATE.mdasINIT.md
Adding A Team to an Existing Project
If the project is already in progress, use cp -rn (no-clobber) when copying the folders so your existing files are not overwritten:
cp -rn a-team/.claude ./
cp -rn a-team/skills ./
cp -rn a-team/hooks ./
cp -rn a-team/templates ./
cp a-team/INIT_TEMPLATE.md ./INIT.md
Then fill out INIT.md to describe what already exists — languages, frameworks, current test coverage, known technical debt. The orchestrator uses this to prune irrelevant agents; accuracy here matters more than on a greenfield project.
After running /orchestrate init, review .agent-sync/TEAM.md before doing any work. Restore any agent that was incorrectly pruned. Start the first session with /orchestrate morning to let the orchestrator read the repo state before touching anything.
Note: If you already have a
.claude/settings.json, do not let the install overwrite it — merge the A Team permissions manually to preserve your existing configuration.
Quick Start
After installing, three steps to get the full team operational:
1. Fill out INIT.md
Open INIT.md and tick the checkboxes for your project:
- Primary languages (Go, Python, Kotlin, Swift, etc.)
- Tech stack (database, infra, CI/CD)
- Compliance scope (GDPR, PCI-DSS, etc.)
- Which AI platforms are active (Claude Code, Codex, Cursor, OpenCode)
Takes about 5 minutes.
2. Initialize the team
/orchestrate init
The orchestrator reads INIT.md, prunes irrelevant agents and skills, and generates:
.agent-sync/TEAM.md— permanent record of the active roster.agent-sync/ROUTING.md— task routing table + file claims table
3. Start working
Every subsequent session, the using-a-team meta-skill is injected automatically via the SessionStart hook. No manual setup needed per session.
Tip: Run
/orchestrate morningto kick off the daily task cycle, or just start working — the enforcement hooks fire automatically on every session start and every file edit.
Folder Layout
A Team/
├── README.md ← This file
├── CLAUDE.md ← Project overview loaded by Claude Code
├── AGENTS.md ← Agent roster & command reference
├── INIT_TEMPLATE.md ← Template for project-specific init doc
│
├── .claude/
│ ├── settings.json ← Permissions, hooks, worktree config
│ ├── agents/ ← 25 agent profiles (name, model, tools, instructions)
│ ├── commands/ ← Slash commands (/orchestrate, /plan, /quality-gate, …)
│ └── rules/ ← Coding and workflow standards loaded by all agents
│
├── skills/ ← 18 workflow skill modules
│ ├── using-a-team/ ← Meta-skill: mandatory trigger map
│ ├── verification-before-completion/
│ ├── test-driven-development/
│ ├── systematic-debugging/
│ ├── brainstorming/
│ ├── subagent-driven-development/
│ ├── using-git-worktrees/
│ ├── executing-plans/
│ ├── writing-plans/
│ ├── dispatching-parallel-agents/
│ ├── finishing-a-development-branch/
│ └── writing-skills/
│
├── hooks/
│ └── session-start.md ← Injected at every session start
│
├── .cursor-plugin/ ← Cursor IDE integration
├── .codex-plugin/ ← Codex CLI integration
├── .opencode/ ← OpenCode integration
│
└── tests/ ← Harness test suite for A Team itself
Initialization in Detail
INIT.md
The project's scope declaration. The orchestrator reads it once to decide which agents and skills are relevant. Fill it out before running /orchestrate init.
Key sections:
- Primary programming languages — controls which language-specialist agents survive pruning
- Tech stack — controls database-reviewer, e2e-runner, etc.
- Communication tools — controls chief-of-staff
- Scope boundaries — autonomous loops, E2E tests, documentation needs
- Special constraints — domain-specific guardrails enforced across all agents
Pruning
The orchestrator deletes agent files and skill folders that don't apply to the declared scope. A Python-only project loses go-reviewer, rust-reviewer. A project with no E2E requirement loses e2e-runner. The workspace is leaner and agents no longer encounter context that doesn't apply to them.
After pruning, .agent-sync/TEAM.md records what was kept and why. This file is the source of truth for the active roster.
ROUTING.md
Generated during init. Two sections:
- Task routing table — maps task types to agents based on the declared stack (e.g., all
.pychanges route topython-reviewer). - File Claims table — starts empty; populated at dispatch time to prevent parallel agents from colliding on the same source files.
The Session Lifecycle
Session Start (automatic)
The SessionStart hook fires cat skills/using-a-team/SKILL.md at the beginning of every session. This injects the mandatory trigger map into context before any work begins.
The PostToolUse hook fires after every Write or Edit, reminding: use code-reviewer before committing, use verification-before-completion before claiming done.
Session Start Checklist (enforced by the meta-skill)
- Is
INIT.mdpresent? If not → fill it out first. - Is
.agent-sync/TEAM.mdpresent? If not → run/orchestrate initfirst. - What is the current task? → identify which skills and agents apply before starting.
Agent Roster (25)
Core Engineering
| Agent | Tier | Role | When to use |
|---|---|---|---|
| orchestrator | T1 · opus-4-8 | Lead — reads INIT.md, prunes team, manages daily cycle | /orchestrate |
| architect | T1 · opus-4-8 | System design, ADRs, tech decisions | Architectural questions |
| planner | T2 · sonnet-4-6 | Implementation plans before coding | New features |
| code-reviewer | T2 · sonnet-4-6 | Code quality, security, maintainability | After every code change |
| security-reviewer | T2 · sonnet-4-6 | OWASP Top 10, secrets, injection | Auth, API, input, DB code |
| tdd-guide | T2 · sonnet-4-6 | RED → GREEN → REFACTOR enforcement | New features, bug fixes |
| refactor-cleaner | T2 · sonnet-4-6 | Dead code, duplication | Code maintenance |
| build-error-resolver | T2 · sonnet-4-6 | Build and type failures (minimal diffs only) | Build broken |
| e2e-runner | T2 · sonnet-4-6 | End-to-end test flows | Critical user journeys |
| debugger | T2 · sonnet-4-6 | Root-cause investigation (Phase 1 before fix) | Any bug |
Language & Platform Specialists
All language specialists run at T2 · sonnet-4-6 (or platform equivalent).
| Agent | Language / Platform | Trigger |
|---|---|---|
| database-reviewer | PostgreSQL | SQL, migrations, schema changes |
| go-reviewer | Go | All .go file changes |
| python-reviewer | Python | All .py file changes |
| rust-reviewer | Rust | All .rs file changes |
| kotlin-reviewer | Kotlin / Android | All .kt changes, Jetpack Compose, Coroutines |
| swift-reviewer | Swift / iOS | All .swift changes, SwiftUI, Combine, ARC |
| flutter-reviewer | Flutter / Dart | All .dart changes, Riverpod/Bloc, null safety |
Operational
| Agent | Tier | Purpose |
|---|---|---|
| chief-of-staff | T2 · sonnet-4-6 | Email, Slack, Calendar triage |
| loop-operator | T2 · sonnet-4-6 | Autonomous loop safety |
| doc-updater | T3 · haiku-4-5 | Codemaps, README, post-feature docs |
| harness-optimizer | T3 · haiku-4-5 | Pipeline auditor — detects rule evasion, blocks merge |
| infra-reviewer | T2 · sonnet-4-6 | Terraform, Docker, K8s, CI/CD — IaC safety and security |
| compliance-reviewer | T2 · sonnet-4-6 | GDPR, COPPA, PCI-DSS, SOC2, HIPAA — configured per project scope |
| ai-reviewer | T2 · sonnet-4-6 | LLM code — prompt injection, tool call safety, token cost, hallucination handling |
| performance-profiler | T3 · haiku-4-5 | Systematic profiling — baseline, locate bottleneck, validate improvement |
Skill Library (18)
Skills are instruction modules that agents must consult before acting. Hard-gate skills cannot be skipped. Workflow skills define process.
Hard Gates
| Skill | Rule |
|---|---|
| using-a-team | Injected every session. If a skill or agent applies, it must be used. |
| verification-before-completion | Must run the actual command and read the actual output before claiming done. Cleans up workspace log/trace files after verification passes. |
| test-driven-development | Write the failing test before writing the implementation. No exceptions. |
| systematic-debugging | Phase 1 (reproduce and isolate) must complete before any fix is proposed. |
| brainstorming | Design session required before writing any new feature or component. |
Workflow Skills
| Skill | Use case |
|---|---|
| using-git-worktrees | Create an isolated worktree before starting any development work |
| subagent-driven-development | Execute a plan by dispatching fresh subagents per task, with two-stage review |
| executing-plans | Run a written plan step-by-step in the current session |
| writing-plans | Create structured implementation plans from a spec |
| dispatching-parallel-agents | Launch 2+ independent tasks simultaneously |
| finishing-a-development-branch | Wrap up a branch before merge (coverage, review, changelog) |
| writing-skills | Create new A Team skills via TDD |
| api-contract-first | Hard gate — OpenAPI/protobuf contract before any API endpoint |
| incident-response | Workflow — production incident playbook (detect → contain → resolve → post-mortem) |
| data-migration | Hard gate — schema changes need rollback plan and dry-run before production |
| performance-audit | Workflow — baseline → profile → single change → measure delta |
Mandatory Skill Trigger Map
If any of these situations apply, the corresponding skill or agent is not optional:
| You are about to… | Required first |
|---|---|
| Write a new feature or component | brainstorming skill |
| Start any development work | using-git-worktrees skill |
| Write any code | test-driven-development skill |
| Debug a bug | debugger agent (Phase 1 first) |
| Claim anything is "done" | verification-before-completion skill |
| Write or modify code | code-reviewer agent afterward |
| Touch auth, API, input, DB | security-reviewer agent afterward |
Change .go / .py / .rs files |
language-specific reviewer agent |
| Merge a branch | harness-optimizer audit → /quality-gate |
Rationalization red flags — these thoughts mean a mandatory step is being skipped:
- "This change is too small to need a review"
- "I'll write the test after I confirm it works"
- "The tests were passing before so they're probably still passing"
- "The plan is in my head, I don't need to write it down"
The Orchestrator Daily Cycle
The orchestrator operates as a stateless machine. It never assumes what happened in a prior session — it derives all state from files.
/orchestrate morning
- Reads
TASKS.md— selects up to 3 tasks for today respectingdepends_onconstraints. - Assigns each task to the correct agent using
ROUTING.md. - Writes
DAILY.mdSections 1 + 2 (intent + execution plan). - Presents the plan. Stops. Waits for explicit human approval.
- On approval: dispatches the first wave — all tasks with no dependencies.
/orchestrate tick (after each async task completes)
- Reads
DAILY.md+ all.agent-sync/results/*.json. - Marks completed tasks
[x]with commit hash and test summary. - Adds ambiguous decisions to the Veto Buffer (Section 3).
- Dispatches newly unblocked PENDING tasks.
/orchestrate report (end of day)
- Processes remaining results.
- Compiles Evening Telemetry — tasks complete, commits, tests, veto items, proposed first task tomorrow.
Veto Buffer
Every ambiguous autonomous decision gets a Veto Buffer entry: context, choice made, branch it's isolated on, action options. Only a human resolves Veto Buffer items. The orchestrator never resolves them.
File Lock Protocol
Prevents parallel agents from colliding on the same source files before either merges.
How it works
When the orchestrator dispatches an agent, it writes a row to the ## File Claims table in ROUTING.md for each source file that agent will modify:
| File | Agent | Task | Status |
| src/auth/login.ts | code-reviewer | TASK-004 | in-progress |
Before dispatching a second agent, the orchestrator reads the table. If any target file is in-progress by a different agent, the new task is added to PENDING with a depends_on — not dispatched in parallel.
Path normalization (worktree safety)
Because each parallel agent runs inside its own worktree directory (e.g., ../project-task-001/), the same file appears at a different absolute path in every worktree. All paths written to or read from the File Claims table must be relative to the git repository root — never absolute, never worktree-local.
# Normalize from any worktree before every read or write
REPO_ROOT=$(git worktree list --porcelain | awk 'NR==1 {print $2}')
RELATIVE=$(realpath --relative-to="$REPO_ROOT" "$ABSOLUTE_PATH")
Without this, agent A locks ../project-task-001/src/auth/login.ts while agent B looks up src/auth/login.ts — the lock is invisible to B and the collision happens anyway.
When a task completes without blockers, its File Claims rows are released. The next agent can then claim those files.
The code-reviewer also checks the File Claims table before starting any review. If a file it needs to review is claimed by a different active agent, it blocks and reports rather than proceeding.
Scope: source files only (.ts, .kt, .py, .go, .rs, etc.). Config files, docs, and test fixtures are not claimed.
Pipeline Audit (harness-optimizer)
The harness-optimizer runs as a pipeline auditor before any branch merge. It reads terminal command history and task result files to verify agents actually ran required checks — not just reported that they did.
What it checks
verification-before-completion compliance — For every completed task, the history must contain an actual test or build command (
npm test,pytest,go test ./..., etc.) run after the last code change. If not →EVASION.code-reviewer compliance — For every task that modified source files, a code-reviewer result must exist in
.agent-sync/results/. If not →EVASION.File Claim hygiene — If any File Claim row is still
in-progressfor a task already marked done in DAILY.md →STALE CLAIM.
On evasion
The auditor writes .agent-sync/AUDIT.md with a BLOCK MERGE verdict. The orchestrator reads this file before dispatching finishing-a-development-branch. If it contains BLOCK MERGE, the branch cannot be finished — the failing tasks are routed back to their original agents for re-execution with proper compliance.
Coding Standards (.claude/rules/)
All agents enforce these rules. Key principles with examples:
Immutability
// [INVALID] — mutates in place
user.verified = true
// [VALID] — returns new copy
return { ...user, verified: true }
Early returns (max 4 nesting levels)
// [INVALID] — nested conditionals
if (user) { if (user.active) { if (user.role === 'admin') { doWork() } } }
// [VALID] — early returns
if (!user) return
if (!user.active) return
if (user.role !== 'admin') return
doWork()
Error handling — never silent
// [INVALID]
try { await send() } catch (_) {}
// [VALID]
try { await send() } catch (err) { logger.error('send failed', { err }); throw err }
Full standards: .claude/rules/coding-style.md, security.md, testing.md, orchestration.md.
Multi-CLI Integration
A Team is designed to run on one CLI or several simultaneously. Each platform reads from its own manifest but all agents share the same definitions and state directory.
What each platform loads
| Platform | Agents | Skills | Rules | Hooks | Commands |
|---|---|---|---|---|---|
| Claude Code | .claude/agents/ |
skills/ |
.claude/rules/ |
settings.json hooks |
.claude/commands/ |
| Codex CLI | .claude/agents/ (via agentsPath) |
skills/ |
.claude/rules/ |
onSessionStart hook |
— |
| Cursor | .claude/agents/ (via agentsPath) |
skills/ |
.claude/rules/ |
onSessionStart hook |
— |
| OpenCode | — | skills/ |
— | — | .opencode/commands/ |
Running multiple CLIs on the same project
All CLIs share .agent-sync/ (DAILY.md, ROUTING.md, TEAM.md, results/). This means:
- The orchestrator's state is visible regardless of which CLI triggered it.
- File Claims are written once and honoured by any CLI reading ROUTING.md.
- Hooks are not propagated across platforms — configure
onSessionStartin each plugin manifest separately (already done in.codex-plugin/and.cursor-plugin/).
Platform-specific behaviour
Claude Code is the primary platform. It has the full hook system (SessionStart, PostToolUse), slash commands, and native sub-agent dispatch via the Agent tool.
Codex CLI loads agents and skills from the same paths as Claude Code. It does not support PostToolUse hooks — the session-start reminder is injected but mid-session enforcement relies on the agents' own rules, not hooks.
Cursor loads agents and skills. Its rule injection depends on the .cursor-plugin/ manifest's rulesPath. Slash commands are not available; use the skill invocation pattern instead.
OpenCode has command aliases in .opencode/commands/ mapping to the same workflows. It does not have native agent or hook support — skills are invoked manually.
Command Reference
/orchestrate init Read INIT.md, prune team, generate TEAM.md + ROUTING.md
/orchestrate morning Plan today's tasks (requires human approval before dispatch)
/orchestrate tick Process completed task results, dispatch unblocked tasks
/orchestrate report End-of-day telemetry
/plan Create implementation plan
/feature Full feature workflow: brainstorm → plan → implement → review
/code-review Review staged/recent changes
/security-review Security audit
/debug Systematic root-cause debugging
/build-fix Fix build errors (minimal diffs only)
/e2e Run end-to-end test suite
/refactor Find and remove dead code
/quality-gate Full pre-merge check (code + security + audit)
Acknowledgments
A Team was built by studying the architecture and workflow patterns of the following open-source projects. No code or prompt text was copied verbatim — only concepts, patterns, and structural ideas were adapted and re-implemented from scratch.
| Project | What it informed |
|---|---|
| Superpowers | Skill-based methodology, TDD enforcement, subagent-driven development, and Git Worktree isolation patterns |
| tick-md | Logical task-state management using Markdown files and atomic Git commits as the state machine |
| Switchman | Concurrent agent coordination and file-level conflict detection across parallel agent workspaces |
| Armory | Headless automated test suite for validating the semantic effectiveness of rules and prompts |
| BMad Cursor Master Workflow Agent and Rules | Short, density-focused rule files with mandatory [VALID]/[INVALID] code examples for LLM pattern replication |
| claude-skills | Modular skill library architecture with native tool integrations |
| Pi-DCP | Token optimization via hooks that prune redundant command history and debug logs from agent context |
| GitAgent (Open GAP) | Agent identity standardization through structured files and framework-agnostic state contracts |
License
MIT — see LICENSE. You are free to use, modify, and distribute A Team in any project, commercial or otherwise, as long as the copyright notice is retained.
Adding a New Agent
- Create
.claude/agents/<name>.mdwith the frontmatter (name,description,allowedTools,model) and instructions. - Add the agent to
.agent-sync/TEAM.md(active roster). - Add a routing rule in
.agent-sync/ROUTING.md. - Add the trigger condition to
skills/using-a-team/SKILL.md. - Add a session-start check to
hooks/session-start.mdif the agent has a mandatory trigger.
Adding a New Skill
Use the /writing-skills meta-skill. It walks through spec, TDD, and validation of the new skill before it is added to the library. After creation, register the trigger in using-a-team/SKILL.md.
Yorumlar (0)
Yorum birakmak icin giris yap.
Yorum birakSonuc bulunamadi