team-setup
Skill145 starsChanged 20 days agoMITView on GitHub
Use when bootstrapping a team directives repository from scratch, cloning an existing one, pointing to a local path, or checking an existing configuration.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- alexpalexpinne/qa-toolkittheir own version, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- alexpalexpinne/qa-toolkit★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository48 other files it gives its agents.
- architect-analyzeSkill
- architect-bootSkill
- architect-clarifySkill
- architect-implementSkill
- architect-initSkill
- architect-specifySkill
- writing-skillsSkill
- change-bootSkill
- change-clarifySkill
- change-initSkill
- change-publishSkill
- change-specifySkill
- evals-analyzeSkill
- evals-clarifySkill
- evals-implementSkill
- evals-initSkill
- evals-specifySkill
- evals-validateSkill
- factory-cleanSkill
- factory-initSkill
- factory-intentSkill
- factory-learnSkill
- factory-missionSkill
- factory-orchestratorSkill
- factory-queueSkill
- factory-releaseSkill
- factory-reviewSkill
- factory-runbookSkill
- factory-setupSkill
- factory-ticketsSkill
- mission-briefSkill
- product-analyzeSkill
- product-bootSkill
- product-clarifySkill
- product-implementSkill
- product-initSkill
- product-roadmapSkill
- product-specifySkill
- team-bootSkill
- team-constitutionSkill
- team-diagnoseSkill
- team-discoverSkill
- team-initSkill
- team-levelupSkill
- team-repairSkill
- team-skillsSkill
- workspaceSkill
- tech-radar-bootSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. About 0 are common, 7 are distinctive, and 10 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
10
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 24
When the project isn't yet wired to a team AI directives (no .adlc/init-options.json team_ai_directives field).
- Very specific: line 29
When team-boot invokes this skill because the project is unconfigured, the user may choose not to set up team AI directives right now.
- Very specific: line 33
If the user declines at mode selection, do not run any mode.
- Distinctive: line 44
Never force a mode; the setup is user-consented at every step.
- Distinctive: line 54
Before executing any mode, validate every user-supplied value (paths, URLs, team names).
- Very specific: line 61
Team name: must match ^[A-Za-z0-9 ._-]+$.
- Distinctive: line 67
If any value fails validation, report which value and why, and re-ask.
- Very specific: line 71
Fast path: if .adlc/init-options.json already contains a valid team_ai_directives path, skip to Mode 4 (Already Configured) — do not …
- Distinctive: line 112
Confirm: Ask the user to confirm before executing.
- Distinctive: line 134
After any mode completes successfully, update the project configuration:
- Very specific: line 136
Write team_ai_directives to .adlc/init-options.json
- Distinctive: line 137
Verify the team AI directives is accessible by running a quick health check:
- Very specific: line 140
Check the .gitignore convention (layout allowlist — see the Gitignore Convention Check step below).
- Very specific: line 148
Verify .gitignore follows the ADLC allowlist — a fresh team setup must never leave a wholesale .adlc/ ignore in place (it would hide the …
- Very specific: line 152
If .gitignore contains a bare .adlc/ rule, replace it (and any .adlc/* + !.adlc/...
- Distinctive: line 170
Never remove unrelated (non-ADLC) rules.
- Very specific: line 223
Default fallback: team-ai-directives/ relative to project root.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
team-setup
Overview
team-setup is an interactive skill that guides you through setting up the team AI directives. It presents four modes, explains each option, confirms your choice, and executes the setup.
It is invoked in two ways:
- User-invoked (
/team-setup) — anytime, to configure or check a project. - Model-invoked by
team-boot— automatically at session start when a project has no.adlc/init-options.jsonconfiguration (self-install), so an unconfigured project wires itself without the user knowing the command.
The skill is non-destructive: it never overwrites existing files or directories. If the target path already contains a configured team AI directives, it detects this and offers the "Already configured" mode instead.
When to Use
- Starting a new team from scratch and need a neutral team AI directives scaffold to fill in later.
- Your team already has a directives repo on GitHub and you want to clone it locally.
- You have a local team AI directives directory already (e.g., from a previous project) and want to wire it up.
- You're unsure whether the team AI directives is already configured and want a quick check.
- When the project isn't yet wired to a team AI directives (no
.adlc/init-options.jsonteam_ai_directivesfield). - Automatically via
team-bootwhen it detects an unconfigured project at session start (self-install).
Decline Handling (when model-invoked by team-boot)
When team-boot invokes this skill because the project is unconfigured, the
user may choose not to set up team AI directives right now. Handle decline
explicitly to avoid a re-prompt loop:
- If the user declines at mode selection, do not run any mode. Exit
cleanly and tell
team-bootthe user declined. - Offer a persistent opt-out: "Don't ask again for this project?" On yes
(build mode only), write
.adlc/init-options.jsonwithteam_ai_directives: null:
This marker makesecho '{"team_ai_directives": null}' > ".adlc/init-options.json"team-bootskip setup silently on every future prompt. - In plan/read-only mode, a persistent opt-out cannot be written — the
decline is session-scoped only; tell
team-bootto defer. - Never force a mode; the setup is user-consented at every step.
Core Process
Goal
Set up a team AI directives using one of four modes.
Security: Input Validation (all modes)
Before executing any mode, validate every user-supplied value (paths, URLs, team names). These values are interpolated into shell commands; unvalidated input is a command-injection vector.
- Paths (
{DEST},{ABSOLUTE_PATH}): reject if they contain any of`,$,;,|,&,(,),<,>, newline, or backslash. Resolve to an absolute path withrealpath/Resolve-Pathbefore use. - Team name: must match
^[A-Za-z0-9 ._-]+$. Reject anything else. - Clone URL (Mode 1): must start with
https://. Rejectfile://,ssh://, and any non-httpsscheme unless the user explicitly confirms the risk. Cloning runs no code from the repo, but the cloned content is read by agents later — only clone repositories you trust.
If any value fails validation, report which value and why, and re-ask. Never interpolate a user value into a Python/eval source string — pass it through the environment (see Mode 2).
Fast path: if .adlc/init-options.json already contains a valid team_ai_directives path, skip to Mode 4 (Already Configured) — do not re-clone, re-point, or re-scaffold.
Modes at a Glance
| # | Mode | When | Details in |
| 1 | Clone from GitHub | team already has a directives repo | references/mode-clone.md |
| 2 | Point to existing local path | directives dir already exists locally | references/mode-local.md |
| 3 | Scaffold new empty directives | starting a team from scratch | references/mode-scaffold.md |
| 4 | Already configured | check / verify existing wiring | references/mode-configured.md |
Mode 1: Clone from GitHub
Full walkthrough in references/mode-clone.md.
Mode 2: Point to Existing Local Path
Full walkthrough in references/mode-local.md.
Mode 3: Scaffold New Empty team AI directives
Full walkthrough in references/mode-scaffold.md.
Mode 4: Already Configured
Full walkthrough in references/mode-configured.md.
Mode Selection Flow
- Explore: Present the user with four options:
How would you like to set up team-ai-directives? 1) Clone from GitHub — Clone an existing repository 2) Point to existing local path — Use a team AI directives you already have 3) Scaffold new empty team AI directives — Create a fresh neutral team AI directives 4) Already configured — Check existing configuration - Present: For the chosen mode, explain what will happen and show details.
- Confirm: Ask the user to confirm before executing.
- Write/Execute: Perform the setup for the chosen mode.
Script Entry Points (deterministic, headless use)
The Mode 1/2 validation and wiring logic has ONE home — the shared helper
scripts — and is exposed as flags so headless callers (e.g. adlc-cli team
setup --directives <path>) run the same checks without an LLM session:
scripts/bash/team-helpers.sh [--validate DIR] [--wire DIR]scripts/powershell/team-helpers.ps1 [-Validate DIR] [-Wire DIR]
--validate DIR runs the Verification structure check (exit 0 when complete,
exit 1 with MISSING: lines when not). --wire DIR validates, then merges
the absolute path into the project's .adlc/init-options.json as
team_ai_directives (existing keys preserved; refuses to wire an invalid
structure). Both twins behave identically. Interactive sessions still go
through Mode Selection above; the in-session path and the headless path share
the same implementation.
Post-Setup Configuration
After any mode completes successfully, update the project configuration:
- Write
team_ai_directivesto.adlc/init-options.json - Verify the team AI directives is accessible by running a quick health check:
{TEAM_AI_DIRECTIVES}/context_modules/constitution.mdexists{TEAM_AI_DIRECTIVES}/.skills.jsonexists and is valid JSON
- Check the
.gitignoreconvention (layout allowlist — see the Gitignore Convention Check step below). - Inject the project-level
AGENTS.mddirective — full command and managed-section contract inreferences/post-setup-agents.md. - Install MCP config — copy-once contract (seed the project's
.mcp.jsononly when absent; an existing project file wins and is never merged into) inreferences/post-setup-mcp.md.
Gitignore Convention Check
Verify .gitignore follows the ADLC allowlist — a fresh team setup must
never leave a wholesale .adlc/ ignore in place (it would hide the tracked
.adlc/ artifacts the team model relies on):
- If
.gitignorecontains a bare.adlc/rule, replace it (and any.adlc/*+!.adlc/...lines that conflict) with the R7 allowlist: ignore.adlc/*,.adlc/evals/results/,.adlc/memory/*,.adlc/team-learn-report.md,.adlc/team-levelup-report.md, andgraphify-out/, while re-including!.adlc/init-options.json,!.adlc/workspace.yml,!.adlc/drafts/,!.adlc/evals/,!.adlc/memory/,!.adlc/memory/evals/, and!.adlc/memory/evals/holdout.json. The allowlist above is canonical for this skill; keep.gitignorein sync with it. - Also verify the agent-install surface rules are ignored (
.agents/,.opencode/,.claude/,.cursor/,.codex/,.gemini/,.qwen/,.devin/,.tabnine/,skills-lock.json,.skills.json,.events.json,.pytest_cache/,.ruff_cache/). Note that.mcp.jsonis deliberately not in this list: it is committed project source — human-edited, never generated — so a.gitignoreentry for it is a defect to report, not a missing rule to add; its guardrail is variable names only, never literal secrets —envindirection is the guard, not.gitignore. - Never remove unrelated (non-ADLC) rules; only add missing allowlist rules.
- Tracked legacy files keep working — the allowlist gates only untracked files, so no migration is required before the switch.
Common Rationalizations
| Rationalization | Why it's wrong | What to do instead |
| "I'll just clone it manually." | Manual cloning skips the .adlc/init-options.json wiring, so agents won't find the team AI directives. | Use Mode 1 — it clones AND configures. |
| "I already have a team AI directives directory, I'll just use it." | The directory may be incomplete (missing required files) or not wired in config. | Use Mode 2 — it validates the structure and creates the config entry. |
| "I'll just create a few files by hand." | An incomplete scaffold breaks health checks and agent discovery. | Use Mode 3 — it creates all 10 required files with valid structure. |
| "I'm sure it's already configured." | The path may be stale, moved, or the env var may point to a deleted dir. | Use Mode 4 — it validates the existing configuration. |
| "Scaffolding without a team name is fine." | The team name is used in README.md — a blank name makes the team AI directives anonymous and harder to audit. | Always provide a team name in Mode 3. |
Red Flags
- Cloning over an existing directory — Mode 1 refuses if the destination already exists to prevent overwrites.
- Pointing to a non-existent path — Mode 2 validates the path exists before proceeding.
- Scaffolding without required dirs being writable — Mode 3 creates directories with
mkdir -pbut will fail on permission errors; check permissions first. - Skipping the
team_ai_directivesconfig write — without this field ininit-options.json, agents cannot discover the team AI directives. - Using a relative path in
init-options.json— always resolve to an absolute path so the config is portable across working directories. - Skipping
git initin Mode 3 — a scaffolded team AI directives without git cannot be used by/team-levelup(branch/commit/PR flow). Mode 3 runsgit initautomatically; if you skip it, rungit initmanually before/team-levelup. - Skipping the project-level AGENTS.md injection — without the
<!-- TEAM_AI_DIRECTIVES START -->managed section in the project'sAGENTS.md, agents without event support have no session-start instruction to load team context. The.adlc/init-options.jsonconfig alone is insufficient — it tells skills where the team AI directives is, but nothing tells the agent to check. (For agents with event support, the session-start hook injects the orientation regardless, but AGENTS.md remains the fallback and the source of the Team Context in Use output contract.) - Interpolating user input into Python/shell source strings — pass paths through the environment (
os.environ) instead; string interpolation of$ABSOLUTE_PATHinto a Python one-liner is a command-injection vector. - Cloning a non-
https://URL in Mode 1 — rejectfile:///ssh:///other schemes; cloned content is read by agents later, so only clone trusted repos. - Skipping the MCP config install — a project with no
.mcp.jsonof its own is never seeded and loses access to team-declared MCP servers; a project that has one only loses the gap report (its file is never written either way). - Accepting shell metacharacters in paths or team names — validate before interpolating into
mkdir/git commit/heredocs (see Input Validation). - Treating user decline as an error — declining setup is a valid outcome; exit cleanly, tell
team-bootthe user declined, and offer theteam_ai_directives: nullopt-out marker (build mode only). - Writing the opt-out marker in plan/read-only mode — a persistent opt-out requires a write; in plan mode the decline is session-scoped and setup defers instead.
Verification
- The team AI directives directory exists at the configured path.
{TEAM_AI_DIRECTIVES}/context_modules/constitution.mdexists.{TEAM_AI_DIRECTIVES}/context_modules/rules/exists.{TEAM_AI_DIRECTIVES}/context_modules/personas/exists.{TEAM_AI_DIRECTIVES}/context_modules/examples/exists.{TEAM_AI_DIRECTIVES}/CDR.mdexists.{TEAM_AI_DIRECTIVES}/.skills.jsonexists and is valid JSON..adlc/init-options.jsoncontains ateam_ai_directivesfield with the absolute path..gitignorefollows the layout allowlist (no wholesale.adlc/ignore; tracked exceptions!.adlc/init-options.json,!.adlc/workspace.yml,!.adlc/drafts/,!.adlc/evals/,!.adlc/memory/evals/holdout.jsonpresent).- Project-level
AGENTS.mdexists and contains the<!-- TEAM_AI_DIRECTIVES START -->managed section with the event-hook awareness note, fallbackteam-bootinvocation, and the Team Context in Use output contract. - (Mode 3 only)
git rev-parse --is-inside-work-treesucceeds inside{TEAM_AI_DIRECTIVES}. - Running
team-verify(Phase 0 of team-repair) passes all 7 checks. - All user-supplied paths/URLs/team names passed Input Validation (no shell metacharacters; clone URL is
https://). - Mode 2 wrote
team_ai_directivesvia the environment (no$ABSOLUTE_PATHinterpolation into Python source). - If
{TEAM_AI_DIRECTIVES}/.mcp.jsonexists: the project's.mcp.jsonwas seeded from it only when the project had none — an existing project file was left untouched (never merged into or rewritten), any gap between the two was reported rather than closed, and unresolved env vars were highlighted. - (Model-invoked by
team-boot) a user decline exited cleanly without running any mode; the persistent opt-out was offered, andteam_ai_directives: nullwas written only in build mode.
Configuration
TEAM_AI_DIRECTIVES— Path to the team AI directives (overrides.adlc/init-options.json)..adlc/init-options.json— Project-level config file withteam_ai_directivesfield.- Default fallback:
team-ai-directives/relative to project root. team-helpers.sh/team-helpers.ps1— Shared scripts used for scaffolding and path resolution.
12-Factor Alignment
Factor XI (Directives as Code) — establishes a version-controlled team directives repository.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

