OWNER-only setup wizard for a REAL human team (different people, different machines) — declare the owner (arm owner-guard), register members (@tags), seed lanes + author folders + the comprehension protocol, size the caps, pick the §6 contribution model + host wall. Packages the existing Multi-user playbook into one approved run; invents no new rules.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add muratsilahtaroglu/claude-code-starter-kit --skill keel-team --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Keel Team?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/muratsilahtaroglu-keel-team)More formats (shields.io, HTML) on the badges page.
---
name: keel-team
description: OWNER-only setup wizard for a REAL human team (different people, different machines) — declare the owner (arm owner-guard), register members (@tags), seed lanes + author folders + the comprehension protocol, size the caps, pick the §6 contribution model + host wall. Packages the existing Multi-user playbook into one approved run; invents no new rules.
---
# /keel-team — set up the human team (owner-only)
When: helpers are joining a solo project — different PEOPLE on different MACHINES sharing a
repo/host. This wizard INSTALLS the existing Multi-user discipline (docs/steering.md "Multi-user",
rules §10.40–41, review-v2) in one approved pass — it invents nothing new. Same-machine AGENT
sessions are `/keel-agent-team-create`'s job; the two coexist: human lanes and agent lanes share one
TASKS board, and setup authority is the owner's in both.
## 0. Owner gate
- `.claude/project-owner` exists and `git config user.name` ≠ its content → **STOP** ("team setup is
the owner's — ask @<owner>").
- Missing → this run DECLARES ownership: ask the owner's exact `git config user.name`, write the
file (one line). State the **identity invariant** for everyone: repo-local
`git config user.name "<tag>"`, single token, byte-for-byte the repo's `@tag` spelling — a
mismatch silently unarms every ownership mechanism (the reground hook nags when unset).
## 1. Interview the owner
1. **Members** — each person's `@tag` (= their git user.name) + a one-line area/responsibility
+ a **task-id prefix**: 2–4 lowercase letters, unique across the whole roster (agents included),
fixed for good. Their items run `<prefix>1 · <prefix>2 …`, and the same id names their reports
(`reports/team/<@tag>/<id>_fix_<date>.md`) and any `scratch/<id>/` probe. Ids are never renamed
or reused — permanent artifacts cite them (rules §9.32, §10.40). One case only: a series split
across `r1` and `R28` makes every count wrong (field case).
2. **Contribution model (§6.17 — host reality decides the wall):** same-repo branch→PR ·
fork→PR (developers Read-only) · no-remote/local-only. Walk the HOST-wall table (steering
"Multi-user") and say which wall actually ENFORCES here — on a free private PERSONAL repo there
is NO real wall: either move to a free org (Read + fork PRs) or accept discipline-only and write
that into the team doc.
3. **Caps** — propose `.claude/keel-caps` sized to headcount (5 people ≈ `HANDOVER=200` ·
`HANDOVER_BLOCKS=4` · `LESSONS=400` · `TASKS=250` — field-tested values; the owner tunes). Pinned
only on approval, never silently (§10.40).
4. **CI shape** (when PRs gate merges): §7.24 secret-less gating — a fork PR receives NO repo
secrets, so live-cred/network tests must SKIP, never fail. If bootstrap pruned `.github/`, team
scale-up is the moment the prune reverses — as a recorded ADR addendum.
## 2. Apply — each piece shown, approved, nothing silent
- `.claude/project-owner` (if new) — arms owner-guard: governance files + non-owner `main` pushes
are blocked from then on.
- **TASKS:** `## Now` goes per-person (~2–3 items each), items carry `@owner` (+ `due:` for sprint
targets); `## Review` is born at the first developer handover and follows review-v2 (file-first,
four states, routing = orchestrator/owner).
- **`reports/team/<@tag>/`** folder per member + their `##` section in `reports/team/README.md`
(the index-as-todolist; controlled status vocabulary per that template).
- **`.claude/keel-caps`** with the approved numbers.
- **Comprehension protocol:** the §10.41 gate already binds via rules; if the team wants the
standalone one-pager (field pattern: a protocol sheet under `reports/team/`), seed it —
task-specific self-explanatory questions, idempotent `## Comprehension log`, personally-run
manual checks.
- **`docs/team.md`** (project-owned — the kit deliberately ships no template): roles table ·
fork/clone + `git config` onboarding steps · secret handoff via a safe channel · ritual etiquette ·
dev-local run knobs (own `.env` from `.env.example`, `make run PORT=…` overrides — "runs only on
the owner's machine" is a bootstrap bug, §10.40).
- **rules.md §6** rewritten to the chosen contribution model, recorded as an ADR — with the §0a
cascade: every doc that described the old flow gets updated in the same pass.
- **`docs/architecture.md`** (§1.6): register the team structure.
## 3. Hand off
Give the owner a per-member onboarding message to send: clone/fork → repo-local
`git config user.name "<tag>"` → `.env` from `.env.example` → `make test` green locally → work ONLY
your `@`-items → deliver per review-v2 (evidence FILE + `delivered` index line; a chat summary is
not a delivery). Remind the owner what stays theirs: assignment (TASKS `@tags`), review routing
(§10.41), governance edits — and the scaling valves when it hurts: per-user handovers at ≥~4
concurrent writers; LESSONS is never split per user (sign lines instead).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!