Install crew
Install and customise a team of AI agents (a chief-of-staff orchestrator that routes to division leads and specialists) into the user's own project or global config. Interviews the user about their business, departments, teams, products, or the people they manage — or reads their existing CLAUDE.md / AGENTS.md — then renders a tailored crew for Claude Code and/or Codex. Use when the user wants to "install the crew", "set up the agent team", "build my chief of staff", "scaffold agents for my business", or runs this kit for the first time.From its SKILL.md
npx -y skills add skyremote/chief-of-staff-kit --skill install-crewAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 17 stars17 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
12.8 KB, as published. Nobody here has run it
Install the crew
This skill turns a set of generic agent templates into a customised team of agents for the person installing it — wired to their org, their house style, their tools.
The team is one shape, instantiated to fit anyone:
chief-of-staff ← orchestrator: triages, routes, synthesises
┌───────────────┼───────────────┐
lead A lead B lead C ← one "lead" per division (see below)
└───────────────┼───────────────┘
(any lead pulls in any specialist)
architect · code-auditor · program-manager · problem-solver
presentation-writer · voice-scriptwriter · growth-marketer
product-designer · ops-steward · content-engine
web-builder · video-editor · skool-writer-and-publish ← shared specialists
inbox-reader · email-writer · notes-archivist · memory-harvester ← opt-in comms
A "division" is deliberately abstract. For the installing user it might be a business, a department, a team, a product line, a client portfolio, or a person they manage. The installer's job is to learn what their divisions are and generate one lead per division.
Your job when this skill runs: conduct a short interview (informed by anything already in their config), confirm a plan, then write the agent files. Never invent the user's business facts — ask, or leave a clean placeholder and say so.
Files in this skill
templates/orchestrator.md— the chief-of-staff template.templates/division-lead.md— ONE lead template, instantiated once per division.templates/specialists/*.md— the 13 generic specialists.templates/comms/*.md— the 4 integration-dependent agents (opt-in).references/rendering-claude-code.md— how to write Claude Code subagents.references/rendering-codex.md— how to write Codex prompts + AGENTS.md.references/team-readme-template.md— the team README the installer writes for the user.
Read the relevant rendering reference before you write files. Read each template before you fill it.
Step 0 — Confirm the target tool(s)
Ask which the user runs (offer both):
- Claude Code → render native subagents (
references/rendering-claude-code.md). - Codex → render native custom-agent TOML files + a root
AGENTS.md(references/rendering-codex.md). Current Codex releases can spawn project or global custom agents. Detect the installed Codex version before rendering and use the legacy prompt-file fallback in that reference only for an older release without custom agents. - Both → render each from the same answers.
Step 1 — Read before you ask
Look for context the user has already written, and use it to propose a draft org rather than interrogating them from scratch:
- Global config:
~/.claude/CLAUDE.md(and~/.codex/AGENTS.mdif present). - Project config in the current working directory:
CLAUDE.mdand/orAGENTS.md.
From whatever exists, extract candidate divisions (named businesses, departments, teams, products), the user's house style (language/spelling variant, emoji policy, versioning rules), a default tech stack if mentioned, and any filing conventions. Draft a proposed roster from this. If nothing is found, start clean.
"I read your config and it looks like you run A, B, and C — should each be its own lead? Anything missing?" beats twenty cold questions.
Step 2 — Interview (confirm and fill the gaps)
Work through these, conversationally, confirming what you inferred in Step 1. Prefer multiple-choice where you can. Keep it tight.
-
Divisions → the list of leads. For each: a display name, the domain it owns, a one-line "what it is", what it owns, what it explicitly does not own, the standing facts it must always know, and who it hands off to. A division can be a company, a department, a product, a client book, or a report you manage. (If the user has only one domain, one lead is fine — the orchestrator still adds value.)
-
Specialists → which of the 13 to include (default: all). Drop any that don't fit how they work.
-
Comms agents (opt-in, default off) →
inbox-reader,email-writer,notes-archivist,memory-harvester. Only install the ones the user wants, and for each, capture what integration they'll wire (or note it's unwired). -
House style → spelling/language variant, emoji policy, deliverable versioning, any standing "always do X" rules. This becomes
{{WORKSPACE_CONTEXT}}. Do not assume a variant or an emoji rule — use what they tell you; if they say nothing, render a neutral block. -
Default tech stack (if they build software) → fills the architect's
{{DEFAULT_STACK}}. -
Filing map (if they want ops-steward) → where things get filed; fills
{{FILING_MAP}}. -
Install scope → project (
<workspace>/.claude/agents/) or global (~/.claude/agents/). See the non-git caveat in the rendering reference and pick accordingly. -
Front door (recommended: yes) → should the orchestrator become the DEFAULT session, so a bare
claude(and the desktop app) boots straight into it with no flags? If yes, you'll set theagentkey in Step 4.5.Before asking this question, scan for scheduled headless runs — the
agentkey applies toclaude -ptoo, so an unattended job would silently start booting as the orchestrator. Check and SHOW the user what you find:crontab -l 2>/dev/null | grep -n "claude" grep -rln "claude -p\|claude --print" ~/Library/LaunchAgents /Library/LaunchAgents 2>/dev/null grep -rln "claude -p\|claude --print" <workspace> --include="*.sh" 2>/dev/null(On Linux, check systemd user timers and
/etc/cron*as well.) Any hit that should NOT run as the orchestrator must pin its own agent with--agent <name>— offer to add the flag for them before enabling the front door. Most people with a cron do not remember they have a cron; the scan is the point, not the caveat.
Step 3 — Show the plan, then confirm
Before writing anything, show the user:
- The exact list of agents you'll create (orchestrator + each named lead + chosen specialists + any comms agents).
- The target tool(s) and the exact directory(ies) you'll write to.
- A one-line note on scope and (if relevant) the non-git caveat decision.
Wait for a yes. This is the only gate — once confirmed, write everything.
Step 4 — Render and write
Follow the rendering reference for each target tool. The mechanics:
- For each division, copy
templates/division-lead.mdand fill its tokens ({{LEAD_NAME}},{{LEAD_SLUG}},{{DOMAIN}},{{WHAT_IT_IS}},{{OWNS}},{{DOES_NOT_OWN}},{{KEY_FACTS}},{{HANDOFFS}},{{LEAD_COLOR}}). Give each a unique kebab-casename(e.g.lead-<slug>). - Copy each chosen specialist; fill
{{DEFAULT_STACK}}(architect) and{{FILING_MAP}}(ops-steward) where present. - Copy each opted-in comms agent; fill
{{INTEGRATION_SETUP}}. - Inject the same rendered
{{WORKSPACE_CONTEXT}}block into every agent so the whole crew behaves consistently. - Copy
templates/orchestrator.mdand regenerate{{LEADS_LIST}}and{{SPECIALISTS_LIST}}from the roster you actually installed — not the full catalogue. - Write the team README from
references/team-readme-template.md, filling{{ROSTER_TABLE}}from the installed files. - Grep every written file for a leftover
{{— a surviving token is a bug; fix it before finishing.
Step 4.5 — Make it the front door (if opted in)
If the user said yes to the front-door question, wire the orchestrator in as the default main-loop agent (Claude Code only):
- Set the
agentkey in the chosen scope's settings —~/.claude/settings.jsonfor global installs,<workspace>/.claude/settings.jsonfor project installs:
Merge into the existing file — never overwrite other settings. This swaps the main loop to the orchestrator (its system prompt, tools, and model) for bare{ "agent": "chief-of-staff" }claudeand the desktop app, and--agent <name>still overrides it per-invocation when the user wants a different seat. - VS Code extension caveat — the extension has no agent setting of its own. If
the embedded session doesn't pick up the key, the integrated terminal is the
route. Offer this shell function (NOT a bare alias — that breaks
claude updateandclaude --version):claude() { if [[ $# -eq 0 ]] || [[ "$1" == -* ]]; then command claude --agent chief-of-staff "$@" else command claude "$@" fi } - Headless caveat — the
agentkey DOES apply to headlessclaude -pruns (verified empirically 2026-08-18). Warn the user: any unattended script that should NOT run as the orchestrator (crons, render jobs, pipelines) must pin its own agent explicitly with--agent <name>, or it will silently boot the orchestrator — its persona, tools, and model — for every scheduled run. Revisit the scheduled-run scan from the Step 2 front-door question: every hit found there must be pinned (or the user must explicitly accept the change) BEFORE you set the key. Nothing errors when this goes wrong — the job just quietly becomes a different job — so the scan is the only warning they get.
Step 5 — Report and tell them to restart
Report what you wrote and where. Then:
- Claude Code: agents load at session start, not mid-session — tell the user to
start a new session, then invoke
@chief-of-stafffor anything cross-cutting or call any agent byname. - Codex: point them at the new prompt files and
AGENTS.md. - If you mirrored project files to global (non-git workspace), remind them to re-sync after edits.
Step 6 — First drive (do not skip)
An installed crew a user doesn't know how to drive is a failed install. After they restart, walk them through three checks in their new session, in order:
- Identity check: have them ask "who am I speaking to?" — the orchestrator
should answer in character (and, if a sign-off was configured, close with it).
If not, the agent didn't load: re-check the install directory and restart. If
they opted into the front door (Step 4.5), a BARE
claudemust pass this check with no flags. - Inline answer: one trivial question from their real work — it should be answered directly, with no delegation. This teaches them the inline-first gate.
- First delegation: one small real task that clearly belongs to a single lead ("ask the <lead> to…"). Point out the routing line and the synthesised answer.
Then leave them a QUICKSTART.md next to the team README covering: when to talk to
the orchestrator vs a lead directly; that delegation is the exception (inline-first);
how to ask for a nested sub-team when work is genuinely big; the sign-off-stops =
context-getting-full canary and compacting around 40%; and where the roster README
lives. Close by telling them the update path: pull the kit's latest and re-run
update-crew. If they installed by hand-copying the templates rather than via the
marketplace/plugin, the update path is different — clone or pull the kit's repo and
run update-crew from there against their installed agents (see "Hand-copied
installs" in the update-crew skill).
Guardrails
- Never fabricate the user's facts. If you don't know a division's details, ask, or write a clear placeholder and tell them to fill it. A confidently-wrong fact is worse than a gap.
- Keep the published descriptions clean. Real names, companies, domains, and
paths belong in the persona body via
{{WORKSPACE_CONTEXT}}, never in the frontmatterdescription(that string is broadly visible). - Scale the crew to the user. One division and three specialists is a perfectly good crew. Don't push all 18 agents on someone who needs five.
- Hold the boundaries. The value of this team is clean ownership and routing — keep each lead's "does not own" honest so the orchestrator can route without collisions.