bostonaholic/team/.claude/skills/create-team-skill/SKILL.md
create-team-skill
Authoring guide for creating a new skill in this plugin, matching the conventions the existing skills already use. Establishes the three decisions every skill must make before any prose is written: how it is invoked (entry point vs building block), how it acquires its input, and how it manages the context window. Do NOT hand-write a SKILL.md directly. Trigger on "create a skill", "add a new skill", "scaffold a skill", "write a SKILL.md", or a description of new skill functionality the user wants
- Source repository stars
- 11
- Declared platforms
- 0
- Static risk flags
- 2
- Last source update
- 2026-08-28
- Source checked
- 2026-08-28
Decision brief
What it does: where it fits
This is the dev-workspace guide for authoring a skill in this plugin. Follow it so a new skill matches the conventions the existing skills already use. A skill is a document the agent reads, not a function it calls. Before writing one, make three decisions in order. Each has a w…
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/bostonaholic/team --skill ".claude/skills/create-team-skill"Inspect the Agent Skill "create-team-skill" from https://github.com/bostonaholic/team/blob/bb84b1ff5bd32f4910d754d5ca1f4398e63bf98b/.claude/skills/create-team-skill/SKILL.md at commit bb84b1ff5bd32f4910d754d5ca1f4398e63bf98b. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
§2B — Branch-diff detection (code review)
No argument. Detect the base branch through a fallback chain, then diff:
No argument. Detect the base branch through a fallback chain, then diff:Never hardcode the base branch without the chain above it. - 02
Shared convention: the artifacts directory
Every skill that hands off uses one durable, repo-local directory for what it would otherwise "keep in the conversation". That covers inputs passed between skills, checkpoints, and findings. In this repo that directory is docs/plans//, where is - or -. This guide calls it . Prod…
Every skill that hands off uses one durable, repo-local directory for what it would otherwise "keep in the conversation". That covers inputs passed between skills, checkpoints, and findings. In this repo that directory… - 03
Part 1 — Invocation surface
The load-bearing rule: composition never goes through the skill-invocation tool. The invocation tool is for the top surface only — a user typing the skill, or the model auto-invoking it by intent. When one skill pulls in another, it reads that skill's file or spawns a subagent.
Is it irreversible or side-effecting (deploys, pushes, deletes, sends)? →Is it purely reference material — methodology, conventions, a protocol anotherWould a user plausibly type / to run it as an action, even if agents also - 04
§1A — Wire it as an entry point
1. Write the description as a router. Lead with WHAT it does, then end with the trigger sentence naming the phrases and the slash name that should fire it:
Write the description as a router. Lead with WHAT it does, then end with theAdd one line to the routing map in your standing agent instructions — in thisSide-effecting or irreversible skills MUST guard. If the skill commits, pushes, - 05
§1B — Wire it as a building block
Composability is never declared — any skill file can be composed. What you choose is HOW a parent pulls it in, by if the parent needs coordination or isolation:
(a) Inline — parent reads this skill's file and follows it. For sequential work(b) Subagent — the parent spawns a fresh-context agent to run this. Use it for an(d) Prerequisite offer — parent offers this when input is missing:
Permission review
Static risk signals and limitations
Reads files
The documentation asks the agent to read local files, directories, or repositories.
and the model can still auto-load it when relevant. In this repo every pure methodologyRuns scripts
The documentation asks the agent to run terminal commands or scripts.
git diff "origin/$BASE"...HEADReads files
The documentation asks the agent to read local files, directories, or repositories.
`cat` a large file to "see what's there." Don't re-read a file you just edited toEvidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 94/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 11 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- bostonaholic/team
- Skill path
- .claude/skills/create-team-skill/SKILL.md
- Commit
- bb84b1ff5bd32f4910d754d5ca1f4398e63bf98b
- License
- MIT
- Collected
- 2026-08-28
- Default branch
- main
View the original SKILL.md
Creating a new Team skill
This is the dev-workspace guide for authoring a skill in this plugin. Follow it so a new skill matches the conventions the existing skills already use. A skill is a document the agent reads, not a function it calls. Before writing one, make three decisions in order. Each has a wrong-by-default failure mode, so decide deliberately rather than copying another skill's wiring.
- Invocation — is this an entry point (user/model triggers it) or a building block (another skill composes it)? This defines what the skill is.
- Input — how does it get the thing it operates on? Discover it. Do not demand it.
- Context — how does it stay inside the window while it runs? Offload, delegate, search.
Shared convention: the artifacts directory
Every skill that hands off uses one durable, repo-local directory for what it would
otherwise "keep in the conversation". That covers inputs passed between skills,
checkpoints, and findings. In this repo that directory is docs/plans/<id>/, where
<id> is <TICKET>-<topic> or <YYYY-MM-DD>-<topic>. This guide calls it
<ARTIFACTS>. Producers write there. Consumers discover and read from there. The
agreement matters more than the path: every handoff uses the same convention so skills
stay decoupled.
Part 1 — Invocation surface
The load-bearing rule: composition never goes through the skill-invocation tool. The invocation tool is for the top surface only — a user typing the skill, or the model auto-invoking it by intent. When one skill pulls in another, it reads that skill's file or spawns a subagent.
First, make the invocation-surface decision — do not skip it. Classify the skill into exactly one of three buckets, then carry the verdict into the frontmatter:
| Bucket | What it means | Frontmatter | Examples |
|---|---|---|---|
| Both (default for anything a user might run) | A user triggers it by intent and the model/another skill may pull it in | leave user-invocable unset (default) | team, team-*, code-review |
| User-invocable only | A user must trigger it explicitly. The model must NOT auto-fire it | disable-model-invocation: true | irreversible actions: deploy, force-push, destructive cleanup |
| Model-invocable only (pure building block) | Reference material loaded by agents / read by path. A /<skill> command is meaningless to users | user-invocable: false | every pure methodology skill (qrspi-workflow, solid-principles, …) |
Decide with these tests, in order:
- Is it irreversible or side-effecting (deploys, pushes, deletes, sends)? → User-invocable only. Never let the model auto-trigger it.
- Is it purely reference material — methodology, conventions, a protocol another agent reads — with no standalone "do this now" meaning for a user? → Model-invocable only.
- Would a user plausibly type
/<skill>to run it as an action, even if agents also compose it? → Both (the default, do not over-restrict).
If you cannot place the skill in one bucket with high confidence, STOP and ask the user
through AskUserQuestion (header Invocation), with the three buckets as options. State
your leaning and why, and let them confirm. Do not silently guess. The wrong choice
either clutters the menu or hides a command users expect. Once decided, wire the
surface(s) per §1A / §1B below and set the frontmatter from the table above.
§1A — Wire it as an entry point
- Write the description as a router. Lead with WHAT it does, then end with the
trigger sentence naming the phrases and the slash name that should fire it:
Specific intents + example phrases = reliable triggering. Vague text = mis-routing.description: | <one line: what this does>. Trigger on "<phrase>", "<phrase>", or "/<name>". - Add one line to the routing map in your standing agent instructions — in this
repo that's the Entry Points table in
AGENTS.md:- <user intent> → invoke /<skill>. This is guidance the agent reads, not a code gate, so keep it in sync with the description. - Side-effecting or irreversible skills MUST guard. If the skill commits, pushes,
opens a PR, moves a ticket, merges, deploys, or deletes, replace the plain
Trigger oncarrier with shipit-style explicit-intent guard wording ("Invoke ONLY on explicit … intent — … never infer …"). Word its routing-map line with that same explicit intent, so the map never invites the skill on a plain request —team-fixis listed as a command but reached only on stated pipeline intent, never on "fix this bug". The description still carries the quoted phrases and the/<name>— the trigger test has no opt-out, but it checks phrase presence only: no test checks the guard wording, so it is YOUR responsibility, and its absence on a side-effecting skill is a review-blocking defect. If your host honors a hard opt-out flag (e.g.disable-model-invocation), set it — but on hosts that ignore it, the description is the only control.
§1B — Wire it as a building block
Composability is never declared — any skill file can be composed. What you choose is HOW a parent pulls it in, by if the parent needs coordination or isolation:
-
(a) Inline — parent reads this skill's file and follows it. For sequential work the parent coordinates and weaves into one result. Parent instruction reads:
"Follow /SKILL.md — all sections, full depth. Skip: ." Author this child with clearly-headed, independently-runnable sections (parents skip by header), and do not assume you own the whole conversation.
-
(b) Subagent — the parent spawns a fresh-context agent to run this. Use it for an unbiased perspective, such as adversarial review, or for parallelism, such as N variants or specialists at once. Parent instruction reads:
"Dispatch as a subagent (fresh context). Launch all N in one message. Return the conclusion only." Author this child to be self-contained (it gets a clean window — say what to read up front) and to return a conclusion, not a transcript.
-
(d) Prerequisite offer — parent offers this when input is missing:
"No found. A) run / now B) skip and proceed." If accepted, the parent inlines it (mechanism a).
Hide it from the slash menu. A pure building block is reference material, not a user
action, so a /<skill> command for it is meaningless. Set user-invocable: false in its
frontmatter to keep it out of the / menu. The field governs menu visibility only. It
does not affect read-and-follow or subagent composition (those reach the file directly),
and the model can still auto-load it when relevant. In this repo every pure methodology
skill sets this. Entry-point skills leave it unset so they register as slash commands. (A
skill wired as both surfaces stays user-invocable — do not set it. code-review is the
repo's standing example: it is loaded as composed methodology by the review agents yet is
also a direct user action ("review this diff"). It is the only methodology skill kept
user-invocable.)
Invocation invariants
- Never compose through the skill-invocation tool. Composition = read-and-follow OR subagent.
- Heavy or adversarial sub-work → subagent (keeps the parent lean and unbiased). Sequential/coordinated sub-work → inline.
- A skill can serve both surfaces. Just make its description trigger correctly AND its sections survive being inlined/subagented.
- Do not auto-trigger irreversible skills.
- Pure building block →
user-invocable: false(out of the slash menu, still loadable).
Part 2 — Input acquisition
Skills DISCOVER their input from conventions and only ask the user as a fallback. Pick the archetype that matches the input type. Default to §2A for documents.
| If the skill operates on... | Use |
|---|---|
| A plan / design / spec document | §2A — convention-based discovery (default) |
| The current branch's code changes | §2B — branch-diff detection |
| A short scalar (URL, time window, ID) | §2C — positional args + flags |
| A problem the user must describe / scope | §2D — ask-first |
§2A — Convention-based document discovery (archetype A)
The skill takes an OPTIONAL artifact-directory arg and DISCOVERS it when omitted.
Discovery is the front door, and the arg is only an override. Declare the hint in
frontmatter and read $ARGUMENTS:
argument-hint: "[docs/plans/<id>/]"
Resolve the directory with the canonical three-tier block:
- Explicit —
$ARGUMENTSnames an existing dir → use it verbatim. - Discover — newest-mtime dir under
docs/plans/that matchesID_REand holds this skill's predecessor artifact (filter byID_RE/PHASE_FILES). Announce the auto-picked directory before proceeding — never pick a topic silently. - None found — fall to the empty case below. Do not error.
Do NOT hand-roll this block. Copy it verbatim from an existing archetype-A skill
(e.g. skills/team-research/SKILL.md) — the dev gate
.claude/scripts/check-discovery-consistency.sh asserts byte-identity across every
archetype-A skill, so any variant fails the suite. Run it as a single bash call (an
agent thread resets cwd between calls).
- If a directory resolves: read the predecessor artifact from it. Treat it as source of truth for problem, constraints, approach.
- Empty case (REQUIRED): do NOT error. Fire
AskUserQuestion(headerSetup) with two labeled options. Run the producer runs/team-<producer>to create the missing artifact. Give a path lets the user supplydocs/plans/<id>/.
§2B — Branch-diff detection (code review)
No argument. Detect the base branch through a fallback chain, then diff:
BASE=$(gh pr view --json baseRefName -q .baseRefName 2>/dev/null)
[ -z "$BASE" ] && BASE=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@')
[ -z "$BASE" ] && BASE=main
git diff "origin/$BASE"...HEAD
Never hardcode the base branch without the chain above it.
§2C — Positional args + flags (scalars only)
Reserve arguments for scalars, never documents. Parse with sensible defaults (/skill 7d
→ default 7d, /skill <url> --quick). Auto-discover when a flag is omitted. Always
state the default you chose.
§2D — Ask-first
Start from what the user already typed. Auto-discover repo context (search, diff,
README). Ask ONE question at a time, only for genuine gaps. Do not interrogate when the
answer is already on disk. (In this repo, /team-question is the ask-first producer that
seeds docs/plans/<id>/ for the archetype-A consumers downstream.)
Input invariants
- Discover before you demand. A question is the fallback, not the front door (except §2D).
- The empty/not-found path uses
AskUserQuestionto offer a producer or ask for a path — it never throws. - Each shell block is its own process — recompute derived vars. Do not rely on persistence.
- An argument carries a scalar (URL/window/ID) or an OPTIONAL artifact-dir path that discovery resolves when omitted — never the document's contents.
- Never write a
$immediately followed by a digit anywhere in a SKILL.md. The loader reads it as an argument placeholder and substitutes the caller's Nth argument, which silently rewrites awk record/field variables and shell positional parameters in your snippets. Read a line into a named variable and match it withcase, or reach forcut/sed, instead. The documented backslash escape is not enough: a host that substitutes the placeholder without implementing the escape leaves the backslash in the command.tests/regression-skill-body-positional-args.test.tsenforces this.
Part 3 — Context discipline
There are two token economies. Treat them oppositely.
- The payload (these instructions, the skill text) is cached and amortized. Do NOT compress it for size's sake — completeness here is cheap. A long, complete skill beats a terse, ambiguous one.
- The working set (everything READ and GENERATED at runtime) is uncached and grows without bound. This is what you ration. Prefer to never pull bytes into the window over summarizing them after the fact.
Be generous with the payload, ruthless with the working set. Execution rules, in order:
- Offload state to disk. Write decisions, plans, and findings to
<ARTIFACTS>/*.md. Read back on demand instead of keeping them resident. When a long task risks losing state, checkpoint to<ARTIFACTS>/checkpoint-<timestamp>.md(branch, done, decisions, remaining, open questions) — append-only, never overwrite. A fresh window resumes from the file, not from replayed history. - Delegate heavy reading to subagents. Broad fan-out (sweeping many files, comparing variants, adversarial review) goes to a subagent that burns ITS window and returns only the conclusion. Launch independent subagents in parallel (one message). Once you delegate a search, don't also run it yourself.
- Search, do not read whole files. For where/what/which questions, use semantic
search if available, else targeted grep/glob; pull excerpts and line ranges. Don't
cata large file to "see what's there." Don't re-read a file you just edited to make sure it. - Reference, do not copy. When building inputs for a sub-task or test, extract the relevant lines — never paste a 1000+ line file. Large irrelevant context causes timeouts and multi-x slowdowns, not just cost.
Gate yourself before acting:
- Before reading: "Whole file or a section? Can a search answer this? Should a subagent read it?"
- Before spawning: "Broad enough to delegate? Can these run in parallel?"
- Before continuing a long task: "Is there state I'd lose on compaction? Checkpoint it now."
Context anti-patterns
- Reading whole files to 'get oriented'.
- Keeping a doc/plan/findings resident across many turns instead of writing to
<ARTIFACTS>and re-reading on demand. - Pasting large files into sub-task prompts or fixtures.
- Doing a broad multi-file sweep inline when a subagent could return just the answer.
- Compressing your own instructions to "save tokens" — that is the cached payload, not where the cost is.
Acceptance checklist (verify before the skill is done)
Invocation
- Invocation surface decided — both / user-invocable only / model-invocable only — with high confidence. If not, asked the user through
AskUserQuestion. - Frontmatter matches the verdict: both → neither flag. User-only →
disable-model-invocation: true. Model-only →user-invocable: false. - Only the intended path(s) wired (entry point §1A, building block §1B, or both).
- Entry point: description has WHAT + explicit trigger intents/phrases. Added to routing map.
- Building block: chose inline (sequential) vs subagent (isolated/parallel) deliberately.
- If subagented: self-contained, returns a conclusion not a transcript. If inlined: headed, independently-runnable sections.
- No skill invokes another through the skill-invocation tool.
Input
- Correct archetype chosen (default §2A for documents).
- Archetype-A:
argument-hintdeclared. Discovery block copied verbatim from an existing skill (e.g. team-research), not hand-rolled — the dev consistency gate enforces byte-identity. - Discovery runs before any question (except §2D). An auto-picked topic is announced.
- Empty/not-found path uses
AskUserQuestion(run producer / give path) — never throws. - Base branch (if used) through the fallback chain, no bare
main. Args carry a scalar or optional artifact-dir path, never document contents.
Context
- State offloaded to
<ARTIFACTS>. Long tasks checkpoint. - Heavy/broad reading delegated to subagents. Conclusions returned, not transcripts.
- Searches/excerpts over whole-file reads. No copying large files into sub-tasks.
- Payload left complete (not compressed for size). Working set kept lean.
Frequently asked questions
What to verify before installation and use
What does the create-team-skill source document cover?
This is the dev-workspace guide for authoring a skill in this plugin. Follow it so a new skill matches the conventions the existing skills already use. A skill is a document the agent reads, not a function it calls. Before writing one, make three decisions in order. Each has a w…
How do I install create-team-skill?
The source record exposes this install command: npx skills add https://github.com/bostonaholic/team --skill ".claude/skills/create-team-skill". Inspect the command and pinned source before running it.
Which permission-related actions were detected?
Static rules flagged read-files, exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
Compare before choosing
coreyhaines31/marketingskills
ab-testing
When the user wants to plan, design, or implement an A/B test or experiment, or build a growth experimentation program. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," "how long should I run this test," "growth experiments," "experiment velocity," "experiment backlog," "ICE score," "experimentation program
garrytan/gbrain
bulk-ingestion
End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.
alirezarezvani/claude-skills
app-store-optimization
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
dotnet/skills
migrate-vstest-to-mtp
Migrates .NET test projects from VSTest to Microsoft.Testing.Platform (MTP). Use when user asks to "migrate to MTP", "switch from VSTest", "enable Microsoft.Testing.Platform", "use MTP runner", set OutputType=Exe only for test projects in Directory.Build.props, or mentions EnableMSTestRunner, EnableNUnitRunner, or UseMicrosoftTestingPlatformRunner. USE FOR: MTP behavioral differences vs VSTest (exit code 8, zero tests discovered, --ignore-exit-code, TESTINGPLATFORM_EXITCODE_IGNORE); centralizing