Skip to content

Repository files navigation

team-justin

A versioned engineering team for Claude Code. A main-thread lead (the lead skill, /team-justin:lead) scopes work, detects the stack, routes to the right specialist subagent, and drives it to done — either building a project from scratch or contributing to an existing codebase.

Requirements

  • Claude Code ≥ 2.1.220. Not enforceable in plugin.json (no engine/min-version field exists) — older CLIs may silently ignore newer frontmatter fields rather than erroring.
  • Model access to claude-opus-5 and claude-sonnet-5. Every agent pins an explicit model ID rather than the floating opus/sonnet aliases, so behavior is reproducible across installs. If your plan or provider (Bedrock/Vertex/Foundry) doesn't expose those IDs, swap the model: line in agents/*.md back to the alias.

Layout

  • skills/lead/SKILL.md — the lead / orchestrator; invokes as /team-justin:lead (add the plan verb to grill a change and persist its brief). You are the PM — the team has no roadmap or prioritization function.
  • agents/*.md — specialist subagents.
  • TRACKER.md — the user-level plan store: the change's brief.md (incl. commit/PR cadence), planner's tickets, captured IDEAS.md lines, one file per known defect under issues/, and freeform brainstorming under notes/. Nothing of it is written into the working repo.
  • SOURCES.md — official MCP/skill/plugin each stack must use (official sources first).
  • ROSTER.md — current + planned agents, and how to grow the team.
  • CHANGELOG.md / VERSION — release history.

Install (as a Claude Code plugin)

This repo is a self-contained Claude Code plugin (team-justin, .claude-plugin/plugin.json) served by its own single-plugin marketplace (.claude-plugin/marketplace.json, name team-justin). Installing as a plugin — rather than symlinking into ~/.claude — is what makes it work identically locally and in Claude Code on the web, because plugin content resolves ${CLAUDE_PLUGIN_ROOT} (the install dir) in both, whereas the web VM never sees your machine's ~/.claude.

Most users — install from the marketplace:

/plugin marketplace add ap-justin/team-justin
/plugin install team-justin@team-justin

Contributors (editing the plugin itself — no install, picks up edits live): clone the repo and point Claude at your clone:

git clone https://github.com/ap-justin/team-justin
claude --plugin-dir ./team-justin     # /reload-plugins after edits

Claude Code on the web — commit this to the .claude/settings.json of each repo you want the team in; the web session prompts once to install:

{
  "extraKnownMarketplaces": {
    "team-justin": { "source": { "source": "github", "repo": "ap-justin/team-justin" } }
  },
  "enabledPlugins": { "team-justin@team-justin": true }
}

Skills/agents load namespaced as team-justin:* (e.g. the lead is /team-justin:lead). Edit here, version in git.

Migrating from the old symlink setup? Remove the ~/.claude/agents and ~/.claude/skills/* symlinks that point here (they'd shadow the plugin copies with un-namespaced duplicates), then use one of the installs above.

Use

  • From scratch: "build a landing page for X" / "new SvelteKit app that…"
  • Contribute: from inside a repo, "add feature Y" / "fix Z" — the lead maps the codebase and routes to the matching specialist.
  • Or invoke explicitly: /team-justin:lead <task>.
  • Plan it first: /team-justin:lead plan <subject> — the lead grills you to the studs, then writes a change-shaped brief (what lands, blast radius, cadence — commits are the steps; a PR split means an environment boundary or a partial ship — decisions, non-goals, done-when) to the plan store. A bare lead <task> still grills when the work warrants it; only plan persists.
  • Park it for later: /team-justin:lead idea <one-liner> — one unexamined line into the plan store's IDEAS.md. No grill, no codebase read, no triage; the next plan grill reads it back and you decide whether it's in scope.
  • Record a bug: /team-justin:lead issue <what's wrong> — opens a defect file in the plan store's issues/ from what you just said. No investigation, no fix; the fields it didn't look into say _not investigated_ so the stub can't pass for a finished write-up.
  • Any verb also takes an explicit trailing-: form — plan: / idea: / issue: — for when the task itself starts with one of those words.

Principles

  • Official sources first — no agent answers framework/API specifics from training data; it resolves via the official MCP/skill/plugin in SOURCES.md.
  • Single-responsibility agents — each does one job well.
  • Reuse built-insExplore, Plan, /code-review, /tdd, /verify instead of reinventing them.
  • Minimal diff in brownfield — match the target repo's conventions, never impose the team's defaults.

About

A versioned engineering team for Claude Code — a lead skill that scopes work, detects the stack, and routes to 24 specialist subagents. Installable plugin; works locally and on the web.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages