{"slug": "show-hn-give-claude-code-cursor-a-real-eng-team-tiers-roles-escalation", "title": "Show HN: Give Claude Code / Cursor a real eng team (tiers, roles, escalation)", "summary": "A new open-source project, agent-dev-team, gives AI coding tools a tiered engineering structure with 21 role agents across four seniority tiers, 26 portable workflow skills, and a structured escalation protocol. The project works with Claude Code, Codex, Gemini CLI, Cursor, Windsurf, OpenCode, and GitHub Copilot via the AGENTS.md or Agent Skills format, and enforces per-role ceilings — for example, a T0 intern-engineer is limited to 2 files with no dependency, schema, API, auth, concurrency, or migration changes. The escalation protocol requires a structured handoff packet when a role hits its ceiling, so work moves to the appropriate tier rather than letting one undifferentiated assistant attempt everything.", "body_md": "A tiered engineering team for AI coding tools. 21 role agents across four seniority tiers, 26 portable workflow skills, and an escalation protocol that keeps work at the right level instead of letting one undifferentiated assistant attempt everything.\n\nWorks in Claude Code, Codex, Gemini CLI, Cursor, Windsurf, OpenCode, GitHub Copilot, and\nanything else that reads `AGENTS.md` or the [Agent Skills](https://agentskills.io) format.\n\nAn assistant with no tier does the same thing whether the task is a typo or a schema migration: it tries. The interesting failures are not \"it wrote bad code\" but \"it made a decision it had no business making\" — a schema change inside a bug fix, an auth tweak inside a rename, a migration with no way back.\n\nThis encodes that as a ceiling per role, and a structured handoff when the ceiling is hit.\n\n| Tier | Role examples | Ceiling | \n|---|---|---|\n| T0 | `intern-engineer` | 2 files. No deps, schema, API, auth, concurrency, or migrations. Halts at the first gap in the brief. | \n| T1 | `software-engineer` ,`analytics-engineer` ,`docs-engineer` | Inside an existing pattern. Escalates on interface changes. | \n| T2 | `senior-engineer` ,`code-reviewer` ,`sre` ,`data-engineer` ,`data-analyst` | Ambiguity, subsystems, migrations. Escalates on irreversible work. | \n| T3 | `principal-engineer` ,`tech-lead` ,`security-auditor` ,`incident-commander` | Must decide. Escalates only to the human, and only on intent, cost, or risk. | \n\nConfidence never raises a ceiling. A T0 that is *sure* about an auth change is still a T0\ntouching auth.\n\n```\ngit clone https://github.com/khuynh22/agent-dev-team.git\ncd agent-dev-team\n./scripts/install.sh\n```\n\nOn Windows:\n\n```\npwsh scripts/install.ps1\n```\n\nThis registers the repository as a local marketplace and installs it as a plugin, so\neverything is namespaced (`/agent-dev-team:team`) and uninstalling is one command. Add\n`--mode copy` to place files in `~/.claude/skills/` and `~/.claude/agents/` instead.\n\n```\n./scripts/install.sh --target codex --target gemini --target cursor\n```\n\nSkills are copied to that tool's skills directory. For the role definitions, point the\ntool at `AGENTS.md` in this repository — it carries the roster, the routing table, and the\nescalation protocol as plain text.\n\nPer-tool notes: [`docs/`](/khuynh22/agent-dev-team/blob/master/docs).\n\n```\n/agent-dev-team:team    add rate limiting to the upload endpoint\n```\n\nIt classifies the work, names the role and the workflow, and stops for confirmation before starting.\n\n| Command | Does | \n|---|---|\n| `/team` | Classify, route, and pick a workflow | \n| `/autopilot` | Run a ticket end to end unattended, then report | \n| `/spec` | Interview, then write requirements with acceptance criteria | \n| `/plan` | Break a spec into tasks, each with a tier and a brief | \n| `/build` | Execute the plan test-first, one verified commit per task | \n| `/review` | Run the pre-merge panel and merge the findings | \n| `/debug` | Reproduce, narrow, prove the cause, then fix | \n| `/ship` | Rollback first, then rollout, abort criteria, observability | \n| `/escalate` | Hand the current work up with a structured packet | \n\nWithout slash commands, ask for a role or a skill by name, or read `AGENTS.md`.\n\nThe thing that makes the ladder work rather than decorate. An escalation without this is incomplete work, not a judgement call.\n\n``` php\n## HANDOFF\n- **From / To:** intern-engineer (T0) -> software-engineer (T1)\n- **Trigger:** security-surface\n- **Task as given:** Replace session tokens with JWTs across the service.\n- **Done so far:** Nothing. Stopped before editing.\n- **Files touched:** none\n- **Blocking question:** Should token verification stay in middleware.js, or move behind a\n  new auth boundary?\n- **Options considered:** A: in place, smallest diff. B: new module, testable. I would\n  pick B.\n- **Reversibility:** reversible\n- **Evidence:** src/routes.js:1 imports middleware directly; 4 files touch auth.\n```\n\nDownward delegation has a matching `BRIEF` block. A T0 brief missing any field is itself an\nescalation trigger — under-specified delegation is the delegator's defect.\n\n**Direction** — `product-manager`, `tech-lead`\n\n**Ladder** — `intern-engineer`, `software-engineer`, `senior-engineer`, `principal-engineer`\n\n**Gates** — `code-reviewer`, `test-engineer`, `security-auditor`, `performance-engineer`\n\n**Production** — `sre`, `incident-commander`\n\n**Firmware** — `firmware-engineer`, `board-bringup-engineer`\n\n**Frontend** — `frontend-engineer`, `ux-reviewer`\n\n**Data** — `data-engineer`, `analytics-engineer`, `data-analyst`, `ml-engineer`\n\n**Support** — `docs-engineer`\n\n**Define** `requirements-interview` · `spec-writing`\n\n**Plan** `work-breakdown` · `architecture-decision` · `api-design`\n\n**Build** `tdd-loop` · `incremental-delivery` · `frontend-build` · `firmware-build` · `data-pipeline` · `data-modeling` · `ml-lifecycle`\n\n**Verify** `systematic-debugging` · `browser-verification`\n\n**Review** `code-review-pass` · `simplification-pass` · `security-hardening` · `performance-pass` · `data-quality` · `data-analysis`\n\n**Ship** `release-and-rollback` · `incident-response` · `documentation`\n\n**Meta** `using-agent-dev-team` · `team-escalation` · `autonomous-relay`\n\nChecklists in `references/` load only when a workflow points to one, so they cost nothing\nuntil they are needed.\n\n```\nnpm test                                     # static validation + routing evals, free\nnode scripts/run-evals.js --behavioral       # list behavioral cases\nnode scripts/run-evals.js --behavioral intern-ceiling\n```\n\nFour tiers, described in [`docs/test-plan.md`](/khuynh22/agent-dev-team/blob/master/docs/test-plan.md): static validation,\nrouting evals, behavioral evals with planted traps, and a 14 scenario manual pass\nwith a per-tool scorecard.\n\nThe routing evals are worth a look even if you never change anything — they are what keeps 26 skill descriptions distinguishable, and they caught four real description defects during initial development.\n\nThe Agent Skills spec permits exactly six frontmatter fields: `name`, `description`,\n`license`, `compatibility`, `metadata`, `allowed-tools`. Any other key is a hard error on\nclaude.ai upload and the Skills API. So:\n\n- `skills/` stays spec-pure. Tier and ownership data lives in`metadata` , which the spec\nallows, and hosts ignore.`scripts/validate.js` enforces this.\n- `agents/` carries Claude Code fields (`model` ,`effort` ,`tools` ,`color` ), because it is\na Claude Code file format, not a spec file. The**body** of each agent file is plain\nmarkdown that any tool can use.\n- `AGENTS.md` carries everything a tool needs with no file format at all.\n\nThe one thing Claude Code does that others cannot is spawn subagents automatically. Everywhere else, a tier is a persona the model adopts and a protocol it follows — which is text, and text travels.\n\nSee `CONTRIBUTING.md`\n\nThe lifecycle structure, the anti-rationalization tables, and the tiered eval approach\nfollow [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills). The tier\nladder, the handoff and brief contracts, and the firmware and hardware tracks are this\nproject's additions.", "url": "https://wpnews.pro/news/show-hn-give-claude-code-cursor-a-real-eng-team-tiers-roles-escalation", "canonical_source": "https://github.com/khuynh22/agent-dev-team", "published_at": "2026-09-12 21:54:35+00:00", "updated_at": "2026-09-12 22:26:44.593147+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["agent-dev-team", "Claude Code", "Codex", "Gemini CLI", "Cursor", "Windsurf", "OpenCode", "GitHub Copilot"], "alternates": {"html": "https://wpnews.pro/news/show-hn-give-claude-code-cursor-a-real-eng-team-tiers-roles-escalation", "markdown": "https://wpnews.pro/news/show-hn-give-claude-code-cursor-a-real-eng-team-tiers-roles-escalation.md", "text": "https://wpnews.pro/news/show-hn-give-claude-code-cursor-a-real-eng-team-tiers-roles-escalation.txt", "jsonld": "https://wpnews.pro/news/show-hn-give-claude-code-cursor-a-real-eng-team-tiers-roles-escalation.jsonld"}}