[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M719JFF045ABXZ5ZEW751MN3":3,"skill-same:01M719JFF045ABXZ5ZEW751MN3":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":6,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":53,"install":54,"resources":67},"01M719JFF045ABXZ5ZEW751MN3","coordinator-init-mode",null,"The complete two-phase Init Mode protocol the Squad coordinator runs when no team exists yet in the current repo. Phase 1 = propose the team (no files created, wait for user confirm). Phase 2 = create .squad\u002F scaffolding, casting state, .gitattributes for merge drivers, and the always-on built-ins (Scribe, Ralph, Rai, Fact Checker). Loaded on demand when the coordinator detects no .squad\u002Fteam.md exists.","DeDuva\u002Fsquad","DeDuva","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8153108?v=4","01M719BQB25861D0TKS3RVHMN2","01M719BQBSWR380PSYDD5M9YD4",1,"MIT","https:\u002F\u002Fgithub.com\u002FDeDuva\u002Fsquad\u002Fblob\u002Fdev\u002Fpackages\u002Fsquad-sdk\u002Ftemplates\u002Fskills\u002Fcoordinator-init-mode\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"mode","init","coordinator","coordinator init mode","init mode","state","phase","team","ralph","when","loads","files","complete","checker","repo","scaffolding","wait for","for","as","satellite","2026-11-10 10:12:30",false,"---\nname: \"coordinator-init-mode\"\ndescription: \"The complete two-phase Init Mode protocol the Squad coordinator runs when no team exists yet in the current repo. Phase 1 = propose the team (no files created, wait for user confirm). Phase 2 = create .squad\u002F scaffolding, casting state, .gitattributes for merge drivers, and the always-on built-ins (Scribe, Ralph, Rai, Fact Checker). Loaded on demand when the coordinator detects no .squad\u002Fteam.md exists.\"\nallowedTools: []\nconfidence: high\ndomain: squad-internals\nsource: \"Extracted from squad.agent.md as part of the slimming effort (bradygaster\u002Fsquad#1308). Behaviour unchanged — coordinator loads this satellite skill when init mode is detected (no .squad\u002Fteam.md present).\"\n---\n\n> **Load this skill when:** you detect that no `.squad\u002Fteam.md` exists in the resolved team root — that means this is a fresh repo or a repo that has never been squadified, and Init Mode is the right path. The short stub in `squad.agent.md` tells you to load this skill; the full two-phase protocol lives here.\n>\n> **⚠️ Eager-execution exception:** Init Mode is the ONE exception to the eager-execution \u002F parallel-fan-out doctrine. Phase 1 MUST end with a user confirmation before any file is created. Do not bypass.\n\n## Phase 1: Propose the Team\n\nNo team exists yet. **Propose one — but DO NOT create any files until the user confirms.**\n\n1. **Identify the user.** Run `git config user.name` to learn who you're working with. Use their name in conversation (e.g., *\"Hey {user}, what are you building?\"*). Store their name (NOT email) in `team.md` under Project Context. **Never read or store `git config user.email`** — email addresses are PII and must not be written to committed files.\n2. Ask: *\"What are you building? (language, stack, what it does)\"*\n3. **Cast the team.** Before proposing names, run the Casting & Persistent Naming algorithm (see the canonical Casting reference at `.squad\u002Ftemplates\u002Fcasting-reference.md`):\n   - Determine team size: pick **4–5 cast (user-domain) agents**, then add the **4 always-on built-ins** (Scribe + Ralph + Rai + Fact Checker — see their dedicated sections in `squad.agent.md`). A typical fresh squad has **8–9 total roster entries**, not 4–5.\n   - Determine assignment shape from the user's project description.\n   - Derive resonance signals from the session and repo context.\n   - Select a universe. Allocate character names from that universe.\n   - Scribe is always \"Scribe\" — exempt from casting.\n   - Ralph is always \"Ralph\" — exempt from casting.\n   - Rai is always \"Rai\" — exempt from casting.\n   - Fact Checker is always \"Fact Checker\" — exempt from casting (same pattern as Scribe \u002F Ralph \u002F Rai).\n4. Propose the team with their cast names. Example (names will vary per cast):\n\n```\n🏗️  {CastName1}  — Lead          Scope, decisions, code review\n⚛️  {CastName2}  — Frontend Dev  React, UI, components\n🔧  {CastName3}  — Backend Dev   APIs, database, services\n🧪  {CastName4}  — Tester        Tests, quality, edge cases\n📋  Scribe       — (silent)      Memory, decisions, session logs\n🔄  Ralph        — (monitor)     Work queue, backlog, keep-alive\n🛡️  Rai         — (background)  RAI awareness, content safety\n🔍  Fact Checker — (verifier)    Verification + Devil's Advocate\n```\n\n5. Use the `ask_user` tool to confirm the roster. Provide choices so the user sees a selectable menu:\n   - **question:** *\"Look right?\"*\n   - **choices:** `[\"Yes, hire this team\", \"Add someone\", \"Change a role\"]`\n\n**⚠️ STOP. Your response ENDS here. Do NOT proceed to Phase 2. Do NOT create any files or directories. Wait for the user's reply.**\n\n---\n\n## Phase 2: Create the Team\n\n**Trigger:** The user replied to Phase 1 with confirmation (\"yes\", \"looks good\", or similar affirmative), OR the user's reply to Phase 1 is a task (treat as implicit \"yes\").\n\n> If the user said \"add someone\" or \"change a role,\" go back to Phase 1 step 3 and re-propose. **Do NOT enter Phase 2 until the user confirms.**\n\n6. Create the `.squad\u002F` directory structure (see `.squad\u002Ftemplates\u002F` for format guides or use the standard structure: `team.md`, `routing.md`, `ceremonies.md`, `decisions.md`, `decisions\u002Finbox\u002F`, `casting\u002F`, `agents\u002F`, `orchestration-log\u002F`, `skills\u002F`, `log\u002F`, `rai\u002F`).\n\n**Casting state initialization:** Copy `.squad\u002Ftemplates\u002Fcasting-policy.json` to `.squad\u002Fcasting\u002Fpolicy.json` (or create from defaults). Create `registry.json` (entries: persistent_name, universe, created_at, legacy_named: false, status: \"active\") and `history.json` (first assignment snapshot with unique assignment_id).\n\n**Seeding:** Each agent's `history.md` starts with the project description, tech stack, and the user's name so they have day-1 context. Agent folder names are the cast name in lowercase (e.g., `.squad\u002Fagents\u002Fripley\u002F`). The Scribe's charter includes maintaining `decisions.md` and cross-agent context sharing. Rai's charter is seeded from the `Rai-charter.md` template, and `.squad\u002Frai\u002Fpolicy.md` is seeded from `rai-policy.md`. Fact Checker's charter is seeded from `fact-checker-charter.md` and `.squad\u002Ffact-checker\u002Fpolicy.md` is seeded from `fact-checker-policy.md`.\n\n**Team.md structure:** `team.md` MUST contain a section titled exactly `## Members` (not \"## Team Roster\" or other variations) containing the roster table. This header is hard-coded in GitHub workflows (`squad-heartbeat.yml`, `squad-issue-assign.yml`, `squad-triage.yml`, `sync-squad-labels.yml`) for label automation. If the header is missing or titled differently, label routing breaks.\n\n**Merge driver for append-only files:** Create or update `.gitattributes` at the repo root to enable conflict-free merging of `.squad\u002F` state across branches:\n\n```\n.squad\u002Fdecisions.md merge=union\n.squad\u002Fagents\u002F*\u002Fhistory.md merge=union\n.squad\u002Flog\u002F** merge=union\n.squad\u002Forchestration-log\u002F** merge=union\n.squad\u002Frai\u002Faudit-trail.md merge=union\n```\n\nThe `union` merge driver keeps all lines from both sides, which is correct for append-only files. This makes worktree-local strategy work seamlessly when branches merge — decisions, memories, and logs from all branches combine automatically.\n\n7. Say: *\"✅ Team hired. Try: '{FirstCastName}, set up the project structure'\"*\n\n8. **Post-setup input sources** (optional — ask after team is created, not during casting):\n   - **PRD\u002Fspec:** *\"Do you have a PRD or spec document? (file path, paste it, or skip)\"* → If provided, follow PRD Mode flow.\n   - **GitHub issues:** *\"Is there a GitHub repo with issues I should pull from? (owner\u002Frepo, or skip)\"* → If provided, follow GitHub Issues Mode flow.\n   - **Human members:** *\"Are any humans joining the team? (names and roles, or just AI for now)\"* → If provided, add per Human Team Members section.\n   - **Copilot agent:** *\"Want to include @copilot? It can pick up issues autonomously. (yes\u002Fno)\"* → If yes, follow Copilot Coding Agent Member section and ask about auto-assignment.\n   - These are additive. **Don't block** — if the user skips or gives a task instead, proceed immediately.\n","> **Load this skill when:** you detect that no `.squad\u002Fteam.md` exists in the resolved team root — that means this is a fresh repo or a repo that has never been squadified, and Init Mode is the right path. The short stub in `squad.agent.md` tells you to load this skill; the full two-phase protocol lives here.\n>\n> **⚠️ Eager-execution exception:** Init Mode is the ONE exception to the eager-execution \u002F parallel-fan-out doctrine. Phase 1 MUST end with a user confirmation before any file is created. Do not bypass.\n\n## Phase 1: Propose the Team\n\nNo team exists yet. **Propose one — but DO NOT create any files until the user confirms.**\n\n1. **Identify the user.** Run `git config user.name` to learn who you're working with. Use their name in conversation (e.g., *\"Hey {user}, what are you building?\"*). Store their name (NOT email) in `team.md` under Project Context. **Never read or store `git config user.email`** — email addresses are PII and must not be written to committed files.\n2. Ask: *\"What are you building? (language, stack, what it does)\"*\n3. **Cast the team.** Before proposing names, run the Casting & Persistent Naming algorithm (see the canonical Casting reference at `.squad\u002Ftemplates\u002Fcasting-reference.md`):\n   - Determine team size: pick **4–5 cast (user-domain) agents**, then add the **4 always-on built-ins** (Scribe + Ralph + Rai + Fact Checker — see their dedicated sections in `squad.agent.md`). A typical fresh squad has **8–9 total roster entries**, not 4–5.\n   - Determine assignment shape from the user's project description.\n   - Derive resonance signals from the session and repo context.\n   - Select a universe. Allocate character names from that universe.\n   - Scribe is always \"Scribe\" — exempt from casting.\n   - Ralph is always \"Ralph\" — exempt from casting.\n   - Rai is always \"Rai\" — exempt from casting.\n   - Fact Checker is always \"Fact Checker\" — exempt from casting (same pattern as Scribe \u002F Ralph \u002F Rai).\n4. Propose the team with their cast names. Example (names will vary per cast):\n\n```\n🏗️  {CastName1}  — Lead          Scope, decisions, code review\n⚛️  {CastName2}  — Frontend Dev  React, UI, components\n🔧  {CastName3}  — Backend Dev   APIs, database, services\n🧪  {CastName4}  — Tester        Tests, quality, edge cases\n📋  Scribe       — (silent)      Memory, decisions, session logs\n🔄  Ralph        — (monitor)     Work queue, backlog, keep-alive\n🛡️  Rai         — (background)  RAI awareness, content safety\n🔍  Fact Checker — (verifier)    Verification + Devil's Advocate\n```\n\n5. Use the `ask_user` tool to confirm the roster. Provide choices so the user sees a selectable menu:\n   - **question:** *\"Look right?\"*\n   - **choices:** `[\"Yes, hire this team\", \"Add someone\", \"Change a role\"]`\n\n**⚠️ STOP. Your response ENDS here. Do NOT proceed to Phase 2. Do NOT create any files or directories. Wait for the user's reply.**\n\n---\n\n## Phase 2: Create the Team\n\n**Trigger:** The user replied to Phase 1 with confirmation (\"yes\", \"looks good\", or similar affirmative), OR the user's reply to Phase 1 is a task (treat as implicit \"yes\").\n\n> If the user said \"add someone\" or \"change a role,\" go back to Phase 1 step 3 and re-propose. **Do NOT enter Phase 2 until the user confirms.**\n\n6. Create the `.squad\u002F` directory structure (see `.squad\u002Ftemplates\u002F` for format guides or use the standard structure: `team.md`, `routing.md`, `ceremonies.md`, `decisions.md`, `decisions\u002Finbox\u002F`, `casting\u002F`, `agents\u002F`, `orchestration-log\u002F`, `skills\u002F`, `log\u002F`, `rai\u002F`).\n\n**Casting state initialization:** Copy `.squad\u002Ftemplates\u002Fcasting-policy.json` to `.squad\u002Fcasting\u002Fpolicy.json` (or create from defaults). Create `registry.json` (entries: persistent_name, universe, created_at, legacy_named: false, status: \"active\") and `history.json` (first assignment snapshot with unique assignment_id).\n\n**Seeding:** Each agent's `history.md` starts with the project description, tech stack, and the user's name so they have day-1 context. Agent folder names are the cast name in lowercase (e.g., `.squad\u002Fagents\u002Fripley\u002F`). The Scribe's charter includes maintaining `decisions.md` and cross-agent context sharing. Rai's charter is seeded from the `Rai-charter.md` template, and `.squad\u002Frai\u002Fpolicy.md` is seeded from `rai-policy.md`. Fact Checker's charter is seeded from `fact-checker-charter.md` and `.squad\u002Ffact-checker\u002Fpolicy.md` is seeded from `fact-checker-policy.md`.\n\n**Team.md structure:** `team.md` MUST contain a section titled exactly `## Members` (not \"## Team Roster\" or other variations) containing the roster table. This header is hard-coded in GitHub workflows (`squad-heartbeat.yml`, `squad-issue-assign.yml`, `squad-triage.yml`, `sync-squad-labels.yml`) for label automation. If the header is missing or titled differently, label routing breaks.\n\n**Merge driver for append-only files:** Create or update `.gitattributes` at the repo root to enable conflict-free merging of `.squad\u002F` state across branches:\n\n```\n.squad\u002Fdecisions.md merge=union\n.squad\u002Fagents\u002F*\u002Fhistory.md merge=union\n.squad\u002Flog\u002F** merge=union\n.squad\u002Forchestration-log\u002F** merge=union\n.squad\u002Frai\u002Faudit-trail.md merge=union\n```\n\nThe `union` merge driver keeps all lines from both sides, which is correct for append-only files. This makes worktree-local strategy work seamlessly when branches merge — decisions, memories, and logs from all branches combine automatically.\n\n7. Say: *\"✅ Team hired. Try: '{FirstCastName}, set up the project structure'\"*\n\n8. **Post-setup input sources** (optional — ask after team is created, not during casting):\n   - **PRD\u002Fspec:** *\"Do you have a PRD or spec document? (file path, paste it, or skip)\"* → If provided, follow PRD Mode flow.\n   - **GitHub issues:** *\"Is there a GitHub repo with issues I should pull from? (owner\u002Frepo, or skip)\"* → If provided, follow GitHub Issues Mode flow.\n   - **Human members:** *\"Are any humans joining the team? (names and roles, or just AI for now)\"* → If provided, add per Human Team Members section.\n   - **Copilot agent:** *\"Want to include @copilot? It can pick up issues autonomously. (yes\u002Fno)\"* → If yes, follow Copilot Coding Agent Member section and ask about auto-assignment.\n   - These are additive. **Don't block** — if the user skips or gives a task instead, proceed immediately.\n",{"name":5,"domain":43,"source":44,"confidence":45,"description":7,"allowedTools":46},"squad-internals","Extracted from squad.agent.md as part of the slimming effort (bradygaster\u002Fsquad#1308). Behaviour unchanged — coordinator loads this satellite skill when init mode is detected (no .squad\u002Fteam.md present).","high",[],"dev","4ffda80d1bb1043d9169688cf161e53097345c72","packages\u002Fsquad-sdk\u002Ftemplates\u002Fskills\u002Fcoordinator-init-mode",0,"https:\u002F\u002Fgithub.com\u002FDeDuva\u002Fsquad","https:\u002F\u002Fgithub.com\u002FDeDuva","2026-11-09 20:24:44",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add DeDuva\u002Fsquad --skill coordinator-init-mode",{"tool":60,"command":61},"bunx","bunx skills add DeDuva\u002Fsquad --skill coordinator-init-mode",{"tool":63,"command":64},"pnpm","pnpm dlx skills add DeDuva\u002Fsquad --skill coordinator-init-mode","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDeDuva\u002Fsquad\u002Fblob\u002Fdev\u002Fpackages\u002Fsquad-sdk\u002Ftemplates\u002Fskills\u002Fcoordinator-init-mode\u002FSKILL.md",true,[],[69,85,93,109,131,145],{"skillNo":70,"name":71,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":79,"publishedAt":38},"01M719NE6ZPZT80MKVWFDECJZ3","My Skill","https:\u002F\u002Fgithub.com\u002FDeDuva\u002Fsquad\u002Fblob\u002Fdev\u002Ftest-fixtures\u002Fskills-test-abb30454\u002Fmy-skill\u002FSKILL.md",[74],{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[80,81,82,83,84],"my","my skill","testing","vitest","tester",{"skillNo":86,"name":87,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":38},"01M719NDJAMEWM8D9H355SCNA8","bad-skill","https:\u002F\u002Fgithub.com\u002FDeDuva\u002Fsquad\u002Fblob\u002Fdev\u002Ftest-fixtures\u002Fskills-test-abb30454\u002Fbad-skill\u002FSKILL.md",[],[91,92],"bad skill","bad",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":38},"01M719NCC1AZ02GHZ1V71YPEV7","squad-conventions","Core conventions and patterns used in the Squad codebase","https:\u002F\u002Fgithub.com\u002FDeDuva\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Fsquad-conventions\u002FSKILL.md",[],[100,101,102,103,104,105,106,45,107,108],"conventions","squad","squad conventions","project-conventions","core","project","manual","codebase","patterns",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":38},"01M719NAYM17B7X8MGP681EHKQ","rework-rate","Measure and interpret PR rework rate — the emerging 5th DORA metric","https:\u002F\u002Fgithub.com\u002FDeDuva\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Frework-rate\u002FSKILL.md",[],[116,117,118,119,45,120,121,122,101,123,124,125,126,106,127,27,128,25,129,130],"rate","rework rate","health","analyze","review efficiency","quality","metric","metrics","efficiency","code quality","pr","prs","code","code-review","review",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":38},"01M719NA136PDC3SQ10R4R88TH","nap","Context hygiene — compress, prune, archive .squad\u002F state","https:\u002F\u002Fgithub.com\u002FDeDuva\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Fnap\u002FSKILL.md",[],[133,138,23,139,140,141,142,143,101,144],"prune","maintenance","context hygiene","archive","hygiene","compress","context",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":155,"publishedAt":38},"01M719N7B4PBQPNXW78TEJY4HQ","e2e-template-testing","End-to-end validation of coordinator and agent template changes","https:\u002F\u002Fgithub.com\u002FDeDuva\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Fe2e-template-testing\u002FSKILL.md",[151,154],{"categoryNo":152,"categoryName":153,"taxonomyType":77,"taxonomyTypeDesc":78},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":75,"categoryName":76,"taxonomyType":77,"taxonomyTypeDesc":78},[82,156,157,158,159,20,160,106,161,45,162],"e2e template testing","e2e","template","end","development","changes","validation"]