Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
{
"name": "a-team",
"description": "Universal multi-agent infrastructure: 26 specialist agents, 19 enforced workflow skills, and a lead orchestrator",
"version": "1.2.0",
"version": "1.3.0",
"source": "./",
"author": {
"name": "RBraga01",
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "a-team",
"description": "Universal multi-agent infrastructure: 26 specialist agents, 19 enforced workflow skills, and a lead orchestrator",
"version": "1.2.0",
"version": "1.3.0",
"author": {
"name": "RBraga01",
"url": "https://github.com/RBraga01"
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "a-team",
"version": "1.2.0",
"version": "1.3.0",
"description": "A complete engineering team in one folder. 26 pre-configured specialists, 19 enforced workflow skills, a lead orchestrator, and a Pipeline Auditor — for Claude Code, Codex CLI, Cursor, and OpenCode.",
"author": {
"name": "RBraga01",
Expand Down
47 changes: 47 additions & 0 deletions .copilot-plugin/hooks/hooks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"version": 1,
"hooks": {
"SessionStart": [
{
"type": "command",
"command": "python .agent-sync/status.py 2>/dev/null || python3 .agent-sync/status.py 2>/dev/null || py .agent-sync/status.py 2>/dev/null || echo '[A Team] install Python to see state'"
},
{
"type": "command",
"command": "cat \"hooks/session-start.md\" 2>/dev/null || cat \"skills/using-a-team/SKILL.md\" 2>/dev/null || echo '[A Team] Session started. Run /orchestrate init if .agent-sync/TEAM.md is missing.'"
},
{
"type": "command",
"command": "for f in scripts/pre_tool_use.py scripts/watcher.py scripts/status.py scripts/metrics.py scripts/session_export.py; do test -f \"$f\" || echo \"[A Team] WARNING: $f not found - enforcement inactive. Re-run the installer.\"; done"
},
{
"type": "command",
"command": "if test -f scripts/watcher.py; then (python scripts/watcher.py >/dev/null 2>&1 || python3 scripts/watcher.py >/dev/null 2>&1) & fi"
}
],
"PreToolUse": [
{
"matcher": "",
"type": "command",
"command": "if test -f scripts/pre_tool_use.py; then python scripts/pre_tool_use.py 2>/dev/null || python3 scripts/pre_tool_use.py 2>/dev/null; else echo '[A Team] WARNING: security gate inactive (scripts/pre_tool_use.py missing - re-run installer)'; fi"
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"type": "command",
"command": "echo '[A Team] File modified. Use code-reviewer agent before committing. Use verification-before-completion before claiming done.'"
}
],
"SessionEnd": [
{
"type": "command",
"command": "test -f scripts/metrics.py && (python scripts/metrics.py session_end 2>/dev/null || python3 scripts/metrics.py session_end 2>/dev/null) || true"
},
{
"type": "command",
"command": "test -f scripts/session_export.py && (python scripts/session_export.py 2>/dev/null || python3 scripts/session_export.py 2>/dev/null) || true"
}
]
}
}
24 changes: 24 additions & 0 deletions .copilot-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"name": "a-team",
"description": "A complete engineering team in one folder. 26 pre-configured specialists, 19 enforced workflow skills, a lead orchestrator, and a Pipeline Auditor.",
"version": "1.3.0",
"author": {
"name": "RBraga01",
"url": "https://github.com/RBraga01"
},
"homepage": "https://rbraga01.github.io/a-team/",
"repository": "https://github.com/RBraga01/a-team",
"license": "MIT",
"keywords": [
"multi-agent",
"ai-agents",
"workflow",
"tdd",
"code-review",
"orchestration",
"copilot-cli"
],
"skills": "../skills/",
"agents": "../.claude/agents/",
"hooks": "./hooks/hooks.json"
}
2 changes: 1 addition & 1 deletion .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "a-team",
"displayName": "A Team",
"description": "A complete engineering team in one folder. 26 pre-configured specialists, 19 enforced workflow skills, a lead orchestrator, and a Pipeline Auditor — for Claude Code, Codex CLI, Cursor, and OpenCode.",
"version": "1.2.0",
"version": "1.3.0",
"author": {
"name": "RBraga01",
"url": "https://github.com/RBraga01"
Expand Down
1 change: 1 addition & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
- [ ] Codex CLI
- [ ] Cursor
- [ ] OpenCode
- [ ] GitHub Copilot CLI

## Checklist

Expand Down
5 changes: 3 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# A Team — Agent & Skill Roster v1.2.0
# A Team — Agent & Skill Roster v1.3.0

> **Model values below are Claude Code defaults** (`model:` frontmatter). On other platforms (Codex, Cursor, OpenCode), select the equivalent tier in your platform's model settings: Tier 1 = o3/GPT-4o/Gemini 2.5 Pro · Tier 2 = GPT-4o/Gemini Flash · Tier 3 = GPT-4o-mini/Gemini Flash-Lite.
> **Model values below are Claude Code defaults** (`model:` frontmatter). On other platforms (Codex, Cursor, OpenCode, GitHub Copilot CLI), select the equivalent tier in your platform's model settings: Tier 1 = o3/GPT-4o/Gemini 2.5 Pro · Tier 2 = GPT-4o/Gemini Flash · Tier 3 = GPT-4o-mini/Gemini Flash-Lite.

## Core Engineering Agents

Expand Down Expand Up @@ -111,4 +111,5 @@ For independent problems, dispatch in parallel:
| Claude Code | `.claude/` (native) |
| Cursor | `.cursor-plugin/plugin.json` |
| Codex | `.codex-plugin/plugin.json` |
| GitHub Copilot CLI | `.copilot-plugin/plugin.json` |
| OpenCode | `.opencode/commands/` |
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,28 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

---

## [1.3.0] — 2026-06-16

### Added

**Platform: GitHub Copilot CLI** (4 → 5 supported platforms):

- New `.copilot-plugin/plugin.json` declaring A Team's agents (`../.claude/agents/`)
and skills (`../skills/`) for Copilot CLI auto-install.
- New `.copilot-plugin/hooks/hooks.json` carrying `SessionStart`, `PreToolUse`,
`PostToolUse`, and `SessionEnd` hooks — full enforcement parity with Claude Code's
`.claude/settings.json` (not just SessionStart like Codex CLI today).
- Install command: `copilot plugin install RBraga01/a-team:.copilot-plugin`.
- No new agents, skills, or rules — purely additive platform plumbing.

### Changed

- `README.md`, `CLAUDE.md`, `AGENTS.md`, `CONTRIBUTING.md`, and the PR template
updated to reference Copilot CLI as a supported platform.
- Version bumped to `1.3.0` across all plugin manifests for consistency.

---

## [1.2.0] — 2026-06-16

### Added
Expand Down
6 changes: 3 additions & 3 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,15 @@ abstract: >-
language specialists, domain, and operations), 19 enforced workflow skills including
hard gates that cannot be bypassed, and a lead orchestrator that manages daily task
flow. The infrastructure is stateless by design — every agent derives its context
from files. Compatible with Claude Code, Codex CLI, Cursor, and OpenCode.
from files. Compatible with Claude Code, Codex CLI, Cursor, OpenCode, and GitHub Copilot CLI.

authors:
- family-names: Braga
given-names: Ricardo Romão Marques
alias: RBraga01
email: ricardormbraga@hotmail.com

version: "1.2.0"
version: "1.3.0"

date-released: "2026-06-02"

Expand Down Expand Up @@ -62,7 +62,7 @@ preferred-citation:
- family-names: Braga
given-names: Ricardo Romão Marques
alias: RBraga01
version: "1.2.0"
version: "1.3.0"
date-released: "2026-06-02"
license: MIT
repository-code: "https://github.com/RBraga01/a-team"
Expand Down
6 changes: 4 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# A Team — A Complete Engineering Team in One Folder v1.2.0
# A Team — A Complete Engineering Team in One Folder v1.3.0

Not a marketplace of agents you configure — a pre-configured, pre-enforced team of 26 specialists
with a lead orchestrator, hard quality gates, and a Pipeline Auditor that verifies work was done,
not just reported. Drop this folder into any project and it's operational from the first keystroke.
Works on Claude Code, Codex CLI, Cursor, and OpenCode.
Works on Claude Code, Codex CLI, Cursor, OpenCode, and GitHub Copilot CLI.

## Quick Start

Expand All @@ -30,6 +30,7 @@ A Team/
│ └── session-start.md ← Injected at every session start
├── .cursor-plugin/ ← Cursor IDE integration
├── .codex-plugin/ ← Codex CLI integration
├── .copilot-plugin/ ← GitHub Copilot CLI integration
└── .opencode/ ← OpenCode integration
```

Expand Down Expand Up @@ -127,4 +128,5 @@ All agents enforce the rules in `.claude/rules/`:
| Claude Code | `.claude/` (native) |
| Cursor | `.cursor-plugin/plugin.json` |
| Codex CLI | `.codex-plugin/plugin.json` |
| GitHub Copilot CLI | `.copilot-plugin/plugin.json` |
| OpenCode | `.opencode/commands/` |
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ git checkout -b fix/brief-description
- Use `/writing-skills` meta-skill to walk through spec, TDD, and validation
- Create `skills/<name>/SKILL.md`
- Register trigger in `skills/using-a-team/SKILL.md`
- Add to plugin manifests (`.codex-plugin/`, `.cursor-plugin/`)
- Add to plugin manifests (`.codex-plugin/`, `.cursor-plugin/`, `.copilot-plugin/`)
- Add `Skill(<name>)` and `Skill(<name>:*)` to `settings.json`

**Rules changes:**
Expand Down
18 changes: 14 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<img src="assets/ATeam_full.png" alt="A Team logo" width="200">
</p>

# A Team — A Complete Engineering Team in One Folder v1.2.0
# A Team — A Complete Engineering Team in One Folder v1.3.0

Not a marketplace of agents you configure. A pre-configured, pre-enforced engineering team of 26 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.
Not a marketplace of agents you configure. A pre-configured, pre-enforced engineering team of 26 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, OpenCode, and GitHub Copilot CLI.

> **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](#acknowledgments) for the projects that made this possible.

Expand Down Expand Up @@ -147,7 +147,7 @@ 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)
- Which AI platforms are active (Claude Code, Codex, Cursor, OpenCode, GitHub Copilot CLI)

Takes about 5 minutes.

Expand Down Expand Up @@ -203,6 +203,7 @@ A Team/
├── .cursor-plugin/ ← Cursor IDE integration
├── .codex-plugin/ ← Codex CLI integration
├── .copilot-plugin/ ← GitHub Copilot CLI integration
├── .opencode/ ← OpenCode integration
└── tests/ ← Harness test suite for A Team itself
Expand Down Expand Up @@ -488,6 +489,7 @@ A Team is designed to run on one CLI or several simultaneously. Each platform re
| **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 | — |
| **GitHub Copilot CLI** | `.claude/agents/` (via `agents` path) | `skills/` | `.claude/rules/` | `SessionStart` / `PreToolUse` / `PostToolUse` / `SessionEnd` hooks | — |
| **OpenCode** | — | `skills/` | — | — | `.opencode/commands/` |

### Running multiple CLIs on the same project
Expand All @@ -496,7 +498,7 @@ All CLIs share `.agent-sync/` (DAILY.md, ROUTING.md, TEAM.md, results/). This me

- 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 `onSessionStart` in each plugin manifest separately (already done in `.codex-plugin/` and `.cursor-plugin/`).
- Hooks are **not** propagated across platforms — configure session-start hooks in each plugin manifest separately (already done in `.codex-plugin/`, `.cursor-plugin/`, and `.copilot-plugin/`).

### Platform-specific behaviour

Expand All @@ -508,6 +510,14 @@ All CLIs share `.agent-sync/` (DAILY.md, ROUTING.md, TEAM.md, results/). This me

**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.

**GitHub Copilot CLI** loads agents, skills, and hooks via the `.copilot-plugin/plugin.json` manifest. It supports the A Team session, tool-use, post-edit, and session-end gates through Copilot CLI hooks, so enforcement parity is full — not partial.

Install:

```bash
copilot plugin install RBraga01/a-team:.copilot-plugin
```

---

## Command Reference
Expand Down
28 changes: 20 additions & 8 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@
.g-amber { border-left-color:var(--amber); }

/* ── PLATFORMS ── */
.platforms-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.platforms-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:16px; }
.platform-card {
background:var(--surface); border:1px solid var(--border);
border-radius:var(--r); padding:28px 20px; text-align:center;
Expand Down Expand Up @@ -358,10 +358,12 @@
.plat-openai .plat-logo { background:rgba(16,163,127,.1); border:1px solid rgba(16,163,127,.2); --glow-color:rgba(16,163,127,.1); }
.plat-cursor .plat-logo { background:rgba(99,102,241,.1); border:1px solid rgba(99,102,241,.2); --glow-color:rgba(99,102,241,.1); }
.plat-opencode .plat-logo { background:rgba(148,163,184,.1); border:1px solid rgba(148,163,184,.2); --glow-color:rgba(148,163,184,.1); }
.plat-github .plat-logo { background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.18); --glow-color:rgba(255,255,255,.08); }
.plat-anthropic { --glow-color:rgba(255,127,80,.08); }
.plat-openai { --glow-color:rgba(16,163,127,.08); }
.plat-cursor { --glow-color:rgba(99,102,241,.08); }
.plat-opencode { --glow-color:rgba(148,163,184,.08); }
.plat-github { --glow-color:rgba(255,255,255,.06); }

/* ── STEPS ── */
.steps { display:flex; flex-direction:column; gap:0; }
Expand Down Expand Up @@ -564,7 +566,7 @@
<a class="nav-logo" href="#">
<div class="nav-logo-icon">AT</div>
<span class="nav-logo-text">A Team</span>
<span class="nav-logo-badge">v1.2.0</span>
<span class="nav-logo-badge">v1.3.0</span>
</a>
<div class="nav-right">
<button class="theme-toggle" id="themeToggle" aria-label="Toggle theme">🌙</button>
Expand Down Expand Up @@ -600,7 +602,7 @@ <h1>Your AI coding assistant<br>deserves a <span class="grad">real team</span></
<div class="hero-stats">
<div class="hero-stat"><div class="hero-stat-n n-blue">26</div><div class="hero-stat-l">Specialist Agents</div></div>
<div class="hero-stat"><div class="hero-stat-n n-purple">19</div><div class="hero-stat-l">Workflow Skills</div></div>
<div class="hero-stat"><div class="hero-stat-n n-cyan">4</div><div class="hero-stat-l">AI Platforms</div></div>
<div class="hero-stat"><div class="hero-stat-n n-cyan">5</div><div class="hero-stat-l">AI Platforms</div></div>
<div class="hero-stat"><div class="hero-stat-n n-green">0</div><div class="hero-stat-l">Config Drift</div></div>
</div>
</div>
Expand Down Expand Up @@ -766,6 +768,16 @@ <h3>Cursor</h3>
<span class="plat-badge badge-strong">Strong Support</span>
</div>

<!-- GitHub Copilot CLI -->
<div class="platform-card plat-github reveal">
<div class="plat-logo">
<img src="https://cdn.simpleicons.org/github/ffffff" width="36" height="36" alt="GitHub">
</div>
<h3>Copilot CLI</h3>
<p>Agents, skills, and hooks load through the Copilot CLI plugin manifest</p>
<span class="plat-badge badge-full">Full Support</span>
</div>

<!-- OpenCode -->
<div class="platform-card plat-opencode reveal">
<div class="plat-logo">
Expand Down Expand Up @@ -979,23 +991,23 @@ <h2>Frequently asked questions</h2>
</tr>
</tbody>
</table>
<p>On <strong>Claude Code</strong>, the <code>model:</code> frontmatter in each agent file sets the default automatically. On <strong>Codex, Cursor, and OpenCode</strong>, select the equivalent tier in your platform's model settings — the frontmatter is a Claude Code-specific field and may be ignored by other platforms.</p>
<p>On <strong>Claude Code</strong>, the <code>model:</code> frontmatter in each agent file sets the default automatically. On <strong>Codex, Cursor, OpenCode, and GitHub Copilot CLI</strong>, select the equivalent tier in your platform's model settings — the frontmatter is a Claude Code-specific field and may be ignored by other platforms.</p>
</div>
</details>

<details class="faq-item">
<summary>Can I run multiple AI platforms simultaneously on the same project?</summary>
<div class="faq-body">
<p>Yes. All platforms share the same <code>.agent-sync/</code> directory (DAILY.md, ROUTING.md, TEAM.md), so orchestrator state is visible regardless of which CLI triggered it.</p>
<p>Important: session-start hooks are <strong>not</strong> propagated between platforms. Each platform's plugin manifest configures its own <code>onSessionStart</code> hook independently — the files are already pre-configured for Claude Code, Codex, and Cursor.</p>
<p>Important: session-start hooks are <strong>not</strong> propagated between platforms. Each platform's plugin manifest configures its own session-start hook independently — the files are already pre-configured for Claude Code, Codex, Cursor, and GitHub Copilot CLI.</p>
</div>
</details>

<details class="faq-item">
<summary>Does it work on Windows, Mac, and Linux?</summary>
<div class="faq-body">
<p>Yes. A Team is platform-agnostic — it's markdown files and JSON, with no compiled code or OS-specific scripts. The path normalisation for git worktrees uses standard POSIX-style paths that work across all systems via the git CLI.</p>
<p>The bash commands in agent files (for running tests, linting, etc.) are standard shell commands that work on all three platforms.</p>
<p>The bash commands in agent files (for running tests, linting, etc.) are standard shell commands that work across the supported platforms.</p>
</div>
</details>

Expand Down Expand Up @@ -1182,9 +1194,9 @@ <h2>Help us reach more developers ⭐</h2>
<footer>
<div class="footer-logo">
<div class="licon">AT</div>
<span>A Team v1.2.0 — Universal Multi-Agent Baseline</span>
<span>A Team v1.3.0 — Universal Multi-Agent Baseline</span>
</div>
<p>MIT License · v1.2.0 · 26 agents · 19 skills · 4 platforms</p>
<p>MIT License · v1.3.0 · 26 agents · 19 skills · 5 platforms</p>
<div class="footer-links">
<a href="https://github.com/RBraga01/a-team" target="_blank">GitHub</a>
<a href="https://github.com/RBraga01/a-team/blob/main/docs/decision-tree.md" target="_blank">Decision Tree</a>
Expand Down
Loading