[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X1B9E24QJBA7H16N7FCPVR":3,"skill-same:01M6X1B9E24QJBA7H16N7FCPVR":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6X1B9E24QJBA7H16N7FCPVR","init-mode",null,"Team initialization flow (Phase 1 proposal + Phase 2 creation)","github\u002Fsquad","github","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9919?v=4","01M6AC83DS133TPXFSP1DHNCC6","GitHub","01M6X0MZ6B0WYMMDPK3Q61KER6",3388,"MIT","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Fpackages\u002Fsquad-cli\u002Ftemplates\u002Fskills\u002Finit-mode\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"init","init mode","mode","orchestration","flow","team","ask","confirmation","user","creation","proposal","roster","with","high","initialization","phase","2026-11-10 10:12:30",false,"---\nname: \"init-mode\"\ndescription: \"Team initialization flow (Phase 1 proposal + Phase 2 creation)\"\ndomain: \"orchestration\"\nconfidence: \"high\"\nsource: \"extracted\"\ntools:\n  - name: \"ask_user\"\n    description: \"Confirm team roster with selectable menu\"\n    when: \"Phase 1 proposal — requires explicit user confirmation\"\n---\n\n## Context\n\nInit Mode activates when `.squad\u002Fteam.md` does not exist, or exists but has zero roster entries under `## Members`. The coordinator proposes a team (Phase 1), waits for user confirmation, then creates the team structure (Phase 2).\n\n## Patterns\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 that section):\n   - Determine team size (typically 4–5 + Scribe).\n   - **Default to descriptive names** (Lead, Frontend, Backend, Tester, etc.) unless the user requests a themed universe.\n   - If the user requests a specific universe (built-in or custom), allocate character names from that universe. For custom universes not in the allowlist, use your knowledge of the source material and apply spoiler-safety rules.\n   - If the user asks for themed names without specifying a universe, auto-select from built-in universes using the scoring algorithm (size_fit + shape_fit + resonance_fit + LRU).\n   - Scribe is always \"Scribe\" — exempt from casting.\n   - Ralph is always \"Ralph\" — exempt from casting.\n4. Propose the team with their cast names. Example (names will vary per cast):\n\n```\n?️  Lead         — Lead          Scope, decisions, code review\n⚛️  Frontend     — Frontend Dev  React, UI, components\n?  Backend      — Backend Dev   APIs, database, services\n?  Tester       — Tester        Tests, quality, edge cases\n?  Scribe       — (silent)      Memory, decisions, session logs\n?  Ralph        — (monitor)     Work queue, backlog, keep-alive\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, cast 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### 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).\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.\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.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```\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 cast. 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\n## Examples\n\n**Example flow:**\n1. Coordinator detects no team.md → Init Mode\n2. Runs `git config user.name` → \"{user}\"\n3. Asks: *\"Hey {user}, what are you building?\"*\n4. User: *\"TypeScript CLI tool with GitHub API integration\"*\n5. Coordinator uses descriptive naming by default\n6. Proposes: Lead (Lead), Frontend (Frontend Dev), Backend (Backend Dev), Tester (Tester), Scribe, Ralph\n7. Uses `ask_user` with choices → user selects \"Yes, cast this team\"\n8. Coordinator creates `.squad\u002F` structure, initializes casting state, seeds agents\n9. Says: *\"✅ Team cast. Try: 'Lead, set up the project structure'\"*\n\n## Anti-Patterns\n\n- ❌ Creating files before user confirms Phase 1\n- ❌ Mixing agents from different universes in the same cast\n- ❌ Skipping the `ask_user` tool and assuming confirmation\n- ❌ Proceeding to Phase 2 when user said \"add someone\" or \"change a role\"\n- ❌ Using `## Team Roster` instead of `## Members` as the header (breaks GitHub workflows)\n- ❌ Forgetting to initialize `.squad\u002Fcasting\u002F` state files\n- ❌ Reading or storing `git config user.email` (PII violation)\n- ❌ Rejecting a user's universe choice because it is not in the built-in allowlist\n- ❌ Auto-selecting a themed universe when the user didn't ask for one (use descriptive names by default)\n","## Context\n\nInit Mode activates when `.squad\u002Fteam.md` does not exist, or exists but has zero roster entries under `## Members`. The coordinator proposes a team (Phase 1), waits for user confirmation, then creates the team structure (Phase 2).\n\n## Patterns\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 that section):\n   - Determine team size (typically 4–5 + Scribe).\n   - **Default to descriptive names** (Lead, Frontend, Backend, Tester, etc.) unless the user requests a themed universe.\n   - If the user requests a specific universe (built-in or custom), allocate character names from that universe. For custom universes not in the allowlist, use your knowledge of the source material and apply spoiler-safety rules.\n   - If the user asks for themed names without specifying a universe, auto-select from built-in universes using the scoring algorithm (size_fit + shape_fit + resonance_fit + LRU).\n   - Scribe is always \"Scribe\" — exempt from casting.\n   - Ralph is always \"Ralph\" — exempt from casting.\n4. Propose the team with their cast names. Example (names will vary per cast):\n\n```\n?️  Lead         — Lead          Scope, decisions, code review\n⚛️  Frontend     — Frontend Dev  React, UI, components\n?  Backend      — Backend Dev   APIs, database, services\n?  Tester       — Tester        Tests, quality, edge cases\n?  Scribe       — (silent)      Memory, decisions, session logs\n?  Ralph        — (monitor)     Work queue, backlog, keep-alive\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, cast 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### 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).\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.\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.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```\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 cast. 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\n## Examples\n\n**Example flow:**\n1. Coordinator detects no team.md → Init Mode\n2. Runs `git config user.name` → \"{user}\"\n3. Asks: *\"Hey {user}, what are you building?\"*\n4. User: *\"TypeScript CLI tool with GitHub API integration\"*\n5. Coordinator uses descriptive naming by default\n6. Proposes: Lead (Lead), Frontend (Frontend Dev), Backend (Backend Dev), Tester (Tester), Scribe, Ralph\n7. Uses `ask_user` with choices → user selects \"Yes, cast this team\"\n8. Coordinator creates `.squad\u002F` structure, initializes casting state, seeds agents\n9. Says: *\"✅ Team cast. Try: 'Lead, set up the project structure'\"*\n\n## Anti-Patterns\n\n- ❌ Creating files before user confirms Phase 1\n- ❌ Mixing agents from different universes in the same cast\n- ❌ Skipping the `ask_user` tool and assuming confirmation\n- ❌ Proceeding to Phase 2 when user said \"add someone\" or \"change a role\"\n- ❌ Using `## Team Roster` instead of `## Members` as the header (breaks GitHub workflows)\n- ❌ Forgetting to initialize `.squad\u002Fcasting\u002F` state files\n- ❌ Reading or storing `git config user.email` (PII violation)\n- ❌ Rejecting a user's universe choice because it is not in the built-in allowlist\n- ❌ Auto-selecting a themed universe when the user didn't ask for one (use descriptive names by default)\n",{"name":5,"tools":40,"domain":22,"source":45,"confidence":32,"description":7},[41],{"name":42,"when":43,"description":44},"ask_user","Phase 1 proposal — requires explicit user confirmation","Confirm team roster with selectable menu","extracted","dev","7b731ec97f35346bdc4fa87c3edaf16b808fc0ae","packages\u002Fsquad-cli\u002Ftemplates\u002Fskills\u002Finit-mode",518,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad","https:\u002F\u002Fgithub.github.io\u002Fsquad\u002F","https:\u002F\u002Fgithub.com\u002Fgithub","https:\u002F\u002Fgithub.com\u002Fabout","How people build software.","2026-11-14 03:47:34",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add github\u002Fsquad --skill init-mode",{"tool":62,"command":63},"bunx","bunx skills add github\u002Fsquad --skill init-mode",{"tool":65,"command":66},"pnpm","pnpm dlx skills add github\u002Fsquad --skill init-mode","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Fpackages\u002Fsquad-cli\u002Ftemplates\u002Fskills\u002Finit-mode\u002FSKILL.md",true,[],[71,79,86,93,125,137],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":78},"01M76742ST8ZMSD38226TH61CN","squad-coordinator-init-mode","Squad coordinator only: Init Mode, proposing and casting a new team. Load when team.md is missing or has an empty roster, or when asked to set up or cast a team.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Fplugins\u002Fsquad\u002Fskills\u002Fsquad-coordinator-init-mode\u002FSKILL.md",[],[],"2026-11-12 13:55:43",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":78},"01M7673KYSME979M20YQTVV8P6","retro-enforcement","Keep retrospectives on schedule and track their action items as GitHub Issues, not markdown checklists","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Fplugins\u002Fsquad\u002Fskills\u002Fretro-enforcement\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":78},"01M7670QCHBSR4W2XSX8XPA2ZB","cli-wiring","Checklist for wiring a new Squad CLI command: route it in cli-entry.ts, add help text, and test that it is reachable","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Fplugins\u002Fsquad\u002Fskills\u002Fcli-wiring\u002FSKILL.md",[],[],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":104,"publishedAt":35},"01M6X287DVJK1S91END9DSHETN","gh-aw-enlistment","Enlist a repository into Squad by installing the supported GitHub Agentic Workflows (gh-aw) bootstrap — with strict compilation, an explicit safe-update allowlist, and a human-reviewed bootstrap PR. Never auto-merges.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Fworkflows\u002Fskills\u002Fgh-aw-enlistment\u002FSKILL.md",[99],{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124],"gh aw enlistment","gh","preflight","guide","identity","compiling","squad","pr creation","Safety","safe","update","human","github cli","lock","workflows","auto","files","agentic workflows","ci","actions",{"skillNo":126,"name":127,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":131,"publishedAt":35},"01M6X27Y5119CSRQFFJCV6432R","My Skill","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Ftest-fixtures\u002Fskills-test-abb30454\u002Fmy-skill\u002FSKILL.md",[130],{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},[132,133,134,135,136],"my","my skill","tester","testing","vitest",{"skillNo":138,"name":139,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":143,"publishedAt":35},"01M6X27RWAYB2X9ER0MVRRKXGA","bad-skill","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Ftest-fixtures\u002Fskills-test-abb30454\u002Fbad-skill\u002FSKILL.md",[142],{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},[144,145],"bad","bad skill"]