[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X102Z7M2MMPG0VPBFNGC4S":3,"skill-same:01M6X102Z7M2MMPG0VPBFNGC4S":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":23,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":39,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6X102Z7M2MMPG0VPBFNGC4S","git-workflow",null,"Squad branching model: dev-first workflow with insiders preview channel","github\u002Fsquad","github","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9919?v=4","01M6AC83DS133TPXFSP1DHNCC6","GitHub","01M6X0MZ6B0WYMMDPK3Q61KER6",3375,"MIT","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002F.squad-templates\u002Fskills\u002Fgit-workflow\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"git workflow","workflow","git","high","with","branching","control","preview","version-control","version","channel","decision","model","team","first","dev","squad","2026-11-10 10:12:30",false,"---\nname: \"git-workflow\"\ndescription: \"Squad branching model: dev-first workflow with insiders preview channel\"\ndomain: \"version-control\"\nconfidence: \"high\"\nsource: \"team-decision\"\n---\n\n## Context\n\nSquad uses a three-branch model. **All feature work starts from `dev`, not `main`.**\n\n| Branch | Purpose | Publishes |\n|--------|---------|-----------|\n| `main` | Released, tagged, in-npm code only | `npm publish` on tag |\n| `dev` | Integration branch — all feature work lands here | `npm publish --tag preview` on merge |\n| `insiders` | Early-access channel — synced from dev | `npm publish --tag insiders` on sync |\n\n## Branch Naming Convention\n\nIssue branches MUST use: `squad\u002F{issue-number}-{kebab-case-slug}`\n\nExamples:\n- `squad\u002F195-fix-version-stamp-bug`\n- `squad\u002F42-add-profile-api`\n\n## Workflow for Issue Work\n\n1. **Branch from dev:**\n   ```bash\n   git checkout dev\n   git pull origin dev\n   git checkout -b squad\u002F{issue-number}-{slug}\n   ```\n\n2. **Mark issue in-progress:**\n   ```bash\n   gh issue edit {number} --add-label \"status:in-progress\"\n   ```\n\n3. **Create draft PR targeting dev:**\n   ```bash\n   gh pr create --base dev --title \"{description}\" --body \"Closes #{issue-number}\" --draft\n   ```\n\n4. **Do the work.** Make changes, write tests, commit with issue reference.\n\n5. **Push and mark ready:**\n   ```bash\n   git push -u origin squad\u002F{issue-number}-{slug}\n   gh pr ready\n   ```\n\n6. **After merge to dev:**\n   ```bash\n   git checkout dev\n   git pull origin dev\n   git branch -d squad\u002F{issue-number}-{slug}\n   git push origin --delete squad\u002F{issue-number}-{slug}\n   ```\n\n## Parallel Multi-Issue Work (Worktrees)\n\nWhen the coordinator routes multiple issues simultaneously (e.g., \"fix bugs X, Y, and Z\"), use `git worktree` to give each agent an isolated working directory. No filesystem collisions, no branch-switching overhead.\n\n### When to Use Worktrees vs Sequential\n\n| Scenario | Strategy |\n|----------|----------|\n| Single issue | Standard workflow above — no worktree needed |\n| 2+ simultaneous issues in same repo | Worktrees — one per issue |\n| Work spanning multiple repos | Separate clones as siblings (see Multi-Repo below) |\n\n### Setup\n\nFrom the main clone (must be on dev or any branch):\n\n```bash\n# Ensure dev is current\ngit fetch origin dev\n\n# Create a worktree per issue — siblings to the main clone\ngit worktree add ..\u002Fsquad-195 -b squad\u002F195-fix-stamp-bug origin\u002Fdev\ngit worktree add ..\u002Fsquad-193 -b squad\u002F193-refactor-loader origin\u002Fdev\n```\n\n**Naming convention:** `..\u002F{repo-name}-{issue-number}` (e.g., `..\u002Fsquad-195`, `..\u002Fsquad-pr-42`).\n\nEach worktree:\n- Has its own working directory and index\n- Is on its own `squad\u002F{issue-number}-{slug}` branch from dev\n- Shares the same `.git` object store (disk-efficient)\n\n### Per-Worktree Agent Workflow\n\nEach agent operates inside its worktree exactly like the single-issue workflow:\n\n```bash\ncd ..\u002Fsquad-195\n\n# Stage only the files changed for this issue, then inspect the commit contents\ngit add -- path\u002Fto\u002Fintentionally-changed-file\ngit diff --cached --stat\ngit diff --cached\ngit commit -m \"fix: stamp bug (#195)\"\ngit push -u origin squad\u002F195-fix-stamp-bug\n\n# Create PR targeting dev\ngh pr create --base dev --title \"fix: stamp bug\" --body \"Closes #195\" --draft\n```\n\nAll PRs target `dev` independently. Agents never interfere with each other's filesystem.\n\n### .squad\u002F State in Worktrees\n\nThe `.squad\u002F` directory exists in each worktree as a copy. This is safe because:\n- `.gitattributes` declares `merge=union` on append-only files (history.md, decisions.md, logs)\n- Each agent appends to its own section; union merge reconciles on PR merge to dev\n- **Rule:** Never rewrite or reorder `.squad\u002F` files in a worktree — append only\n\n### Cleanup After Merge\n\nAfter a worktree's PR is merged to dev:\n\n```bash\n# From the main clone\ngit worktree remove ..\u002Fsquad-195\ngit worktree prune          # clean stale metadata\ngit branch -d squad\u002F195-fix-stamp-bug\ngit push origin --delete squad\u002F195-fix-stamp-bug\n```\n\nIf a worktree was deleted manually (rm -rf), `git worktree prune` recovers the state.\n\n---\n\n## Multi-Repo Downstream Scenarios\n\nWhen work spans multiple repositories (e.g., squad-cli changes need squad-sdk changes, or a user's app depends on squad):\n\n### Setup\n\nClone downstream repos as siblings to the main repo:\n\n```\n~\u002Fwork\u002F\n  squad-pr\u002F          # main repo\n  squad-sdk\u002F         # downstream dependency\n  user-app\u002F          # consumer project\n```\n\nEach repo gets its own issue branch following its own naming convention. If the downstream repo also uses Squad conventions, use `squad\u002F{issue-number}-{slug}`.\n\n### Coordinated PRs\n\n- Create PRs in each repo independently\n- Link them in PR descriptions:\n  ```\n  Closes #42\n\n  **Depends on:** squad-sdk PR #17 (squad-sdk changes required for this feature)\n  ```\n- Merge order: dependencies first (e.g., squad-sdk), then dependents (e.g., squad-cli)\n\n### Local Linking for Testing\n\nBefore pushing, verify cross-repo changes work together:\n\n```bash\n# Node.js \u002F npm\ncd ..\u002Fsquad-sdk && npm link\ncd ..\u002Fsquad-pr && npm link squad-sdk\n\n# Go\n# Use replace directive in go.mod:\n# replace github.com\u002Forg\u002Fsquad-sdk => ..\u002Fsquad-sdk\n\n# Python\ncd ..\u002Fsquad-sdk && pip install -e .\n```\n\n**Important:** Remove local links before committing. `npm link` and `go replace` are dev-only — CI must use published packages or PR-specific refs.\n\n### Worktrees + Multi-Repo\n\nThese compose naturally. You can have:\n- Multiple worktrees in the main repo (parallel issues)\n- Separate clones for downstream repos\n- Each combination operates independently\n\n---\n\n## Anti-Patterns\n\n- ❌ Branching from main (branch from dev)\n- ❌ PR targeting main directly (target dev)\n- ❌ Non-conforming branch names (must be squad\u002F{number}-{slug})\n- ❌ Committing directly to main or dev (use PRs)\n- ❌ Switching branches in the main clone while worktrees are active (use worktrees instead)\n- ❌ Using worktrees for cross-repo work (use separate clones)\n- ❌ Leaving stale worktrees after PR merge (clean up immediately)\n\n## Promotion Pipeline\n\n- dev → insiders: Automated sync on green build\n- dev → main: Manual merge when ready for stable release, then tag\n- Hotfixes: Branch from main as `hotfix\u002F{slug}`, PR to dev, cherry-pick to main if urgent\n","## Context\n\nSquad uses a three-branch model. **All feature work starts from `dev`, not `main`.**\n\n| Branch | Purpose | Publishes |\n|--------|---------|-----------|\n| `main` | Released, tagged, in-npm code only | `npm publish` on tag |\n| `dev` | Integration branch — all feature work lands here | `npm publish --tag preview` on merge |\n| `insiders` | Early-access channel — synced from dev | `npm publish --tag insiders` on sync |\n\n## Branch Naming Convention\n\nIssue branches MUST use: `squad\u002F{issue-number}-{kebab-case-slug}`\n\nExamples:\n- `squad\u002F195-fix-version-stamp-bug`\n- `squad\u002F42-add-profile-api`\n\n## Workflow for Issue Work\n\n1. **Branch from dev:**\n   ```bash\n   git checkout dev\n   git pull origin dev\n   git checkout -b squad\u002F{issue-number}-{slug}\n   ```\n\n2. **Mark issue in-progress:**\n   ```bash\n   gh issue edit {number} --add-label \"status:in-progress\"\n   ```\n\n3. **Create draft PR targeting dev:**\n   ```bash\n   gh pr create --base dev --title \"{description}\" --body \"Closes #{issue-number}\" --draft\n   ```\n\n4. **Do the work.** Make changes, write tests, commit with issue reference.\n\n5. **Push and mark ready:**\n   ```bash\n   git push -u origin squad\u002F{issue-number}-{slug}\n   gh pr ready\n   ```\n\n6. **After merge to dev:**\n   ```bash\n   git checkout dev\n   git pull origin dev\n   git branch -d squad\u002F{issue-number}-{slug}\n   git push origin --delete squad\u002F{issue-number}-{slug}\n   ```\n\n## Parallel Multi-Issue Work (Worktrees)\n\nWhen the coordinator routes multiple issues simultaneously (e.g., \"fix bugs X, Y, and Z\"), use `git worktree` to give each agent an isolated working directory. No filesystem collisions, no branch-switching overhead.\n\n### When to Use Worktrees vs Sequential\n\n| Scenario | Strategy |\n|----------|----------|\n| Single issue | Standard workflow above — no worktree needed |\n| 2+ simultaneous issues in same repo | Worktrees — one per issue |\n| Work spanning multiple repos | Separate clones as siblings (see Multi-Repo below) |\n\n### Setup\n\nFrom the main clone (must be on dev or any branch):\n\n```bash\n# Ensure dev is current\ngit fetch origin dev\n\n# Create a worktree per issue — siblings to the main clone\ngit worktree add ..\u002Fsquad-195 -b squad\u002F195-fix-stamp-bug origin\u002Fdev\ngit worktree add ..\u002Fsquad-193 -b squad\u002F193-refactor-loader origin\u002Fdev\n```\n\n**Naming convention:** `..\u002F{repo-name}-{issue-number}` (e.g., `..\u002Fsquad-195`, `..\u002Fsquad-pr-42`).\n\nEach worktree:\n- Has its own working directory and index\n- Is on its own `squad\u002F{issue-number}-{slug}` branch from dev\n- Shares the same `.git` object store (disk-efficient)\n\n### Per-Worktree Agent Workflow\n\nEach agent operates inside its worktree exactly like the single-issue workflow:\n\n```bash\ncd ..\u002Fsquad-195\n\n# Stage only the files changed for this issue, then inspect the commit contents\ngit add -- path\u002Fto\u002Fintentionally-changed-file\ngit diff --cached --stat\ngit diff --cached\ngit commit -m \"fix: stamp bug (#195)\"\ngit push -u origin squad\u002F195-fix-stamp-bug\n\n# Create PR targeting dev\ngh pr create --base dev --title \"fix: stamp bug\" --body \"Closes #195\" --draft\n```\n\nAll PRs target `dev` independently. Agents never interfere with each other's filesystem.\n\n### .squad\u002F State in Worktrees\n\nThe `.squad\u002F` directory exists in each worktree as a copy. This is safe because:\n- `.gitattributes` declares `merge=union` on append-only files (history.md, decisions.md, logs)\n- Each agent appends to its own section; union merge reconciles on PR merge to dev\n- **Rule:** Never rewrite or reorder `.squad\u002F` files in a worktree — append only\n\n### Cleanup After Merge\n\nAfter a worktree's PR is merged to dev:\n\n```bash\n# From the main clone\ngit worktree remove ..\u002Fsquad-195\ngit worktree prune          # clean stale metadata\ngit branch -d squad\u002F195-fix-stamp-bug\ngit push origin --delete squad\u002F195-fix-stamp-bug\n```\n\nIf a worktree was deleted manually (rm -rf), `git worktree prune` recovers the state.\n\n---\n\n## Multi-Repo Downstream Scenarios\n\nWhen work spans multiple repositories (e.g., squad-cli changes need squad-sdk changes, or a user's app depends on squad):\n\n### Setup\n\nClone downstream repos as siblings to the main repo:\n\n```\n~\u002Fwork\u002F\n  squad-pr\u002F          # main repo\n  squad-sdk\u002F         # downstream dependency\n  user-app\u002F          # consumer project\n```\n\nEach repo gets its own issue branch following its own naming convention. If the downstream repo also uses Squad conventions, use `squad\u002F{issue-number}-{slug}`.\n\n### Coordinated PRs\n\n- Create PRs in each repo independently\n- Link them in PR descriptions:\n  ```\n  Closes #42\n\n  **Depends on:** squad-sdk PR #17 (squad-sdk changes required for this feature)\n  ```\n- Merge order: dependencies first (e.g., squad-sdk), then dependents (e.g., squad-cli)\n\n### Local Linking for Testing\n\nBefore pushing, verify cross-repo changes work together:\n\n```bash\n# Node.js \u002F npm\ncd ..\u002Fsquad-sdk && npm link\ncd ..\u002Fsquad-pr && npm link squad-sdk\n\n# Go\n# Use replace directive in go.mod:\n# replace github.com\u002Forg\u002Fsquad-sdk => ..\u002Fsquad-sdk\n\n# Python\ncd ..\u002Fsquad-sdk && pip install -e .\n```\n\n**Important:** Remove local links before committing. `npm link` and `go replace` are dev-only — CI must use published packages or PR-specific refs.\n\n### Worktrees + Multi-Repo\n\nThese compose naturally. You can have:\n- Multiple worktrees in the main repo (parallel issues)\n- Separate clones for downstream repos\n- Each combination operates independently\n\n---\n\n## Anti-Patterns\n\n- ❌ Branching from main (branch from dev)\n- ❌ PR targeting main directly (target dev)\n- ❌ Non-conforming branch names (must be squad\u002F{number}-{slug})\n- ❌ Committing directly to main or dev (use PRs)\n- ❌ Switching branches in the main clone while worktrees are active (use worktrees instead)\n- ❌ Using worktrees for cross-repo work (use separate clones)\n- ❌ Leaving stale worktrees after PR merge (clean up immediately)\n\n## Promotion Pipeline\n\n- dev → insiders: Automated sync on green build\n- dev → main: Manual merge when ready for stable release, then tag\n- Hotfixes: Branch from main as `hotfix\u002F{slug}`, PR to dev, cherry-pick to main if urgent\n",{"name":5,"domain":32,"source":46,"confidence":27,"description":7},"team-decision","7b731ec97f35346bdc4fa87c3edaf16b808fc0ae",".squad-templates\u002Fskills\u002Fgit-workflow",516,"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-11 05:58:32",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add github\u002Fsquad --skill git-workflow",{"tool":62,"command":63},"bunx","bunx skills add github\u002Fsquad --skill git-workflow",{"tool":65,"command":66},"pnpm","pnpm dlx skills add github\u002Fsquad --skill git-workflow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002F.squad-templates\u002Fskills\u002Fgit-workflow\u002FSKILL.md",true,[],[71,98,110,119,135,158],{"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":78,"publishedAt":41},"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",[77],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[79,80,81,82,83,84,40,85,86,87,88,89,90,91,92,93,94,95,96,97],"gh aw enlistment","gh","safe","workflows","agentic workflows","identity","update","compiling","actions","ci","Safety","preflight","guide","auto","files","human","pr creation","github cli","lock",{"skillNo":99,"name":100,"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":101,"categories":102,"keywords":104,"publishedAt":41},"01M6X27Y5119CSRQFFJCV6432R","My Skill","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Ftest-fixtures\u002Fskills-test-abb30454\u002Fmy-skill\u002FSKILL.md",[103],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[105,106,107,108,109],"my","my skill","testing","vitest","tester",{"skillNo":111,"name":112,"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":113,"categories":114,"keywords":116,"publishedAt":41},"01M6X27RWAYB2X9ER0MVRRKXGA","bad-skill","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Ftest-fixtures\u002Fskills-test-abb30454\u002Fbad-skill\u002FSKILL.md",[115],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[117,118],"bad","bad skill",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":125,"publishedAt":41},"01M6X27HBWM6V81KXYW5XQSWFJ","windows-compatibility","Cross-platform path handling and command patterns","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Fwindows-compatibility\u002FSKILL.md",[],[126,127,128,27,129,130,131,26,132,133,134],"windows compatibility","compatibility","windows","platform","path","bugs","command","patterns","cross-platform",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":41},"01M6X278Z6PF2YQN406RHJJWHG","versioning-policy","SemVer rules for Squad's stable, preview, insider, and local package versions","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Fversioning-policy\u002FSKILL.md",[],[142,143,144,31,145,40,146,147,148,149,88,150,151,152,153,154,155,156,27,157],"versioning","versioning policy","policy","pr","release","semver","npm","package","workspace","Rules","incident","local","resolution","channels","insider","for",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":168,"publishedAt":41},"01M6X26XS6T23E81XNP51HMQAT","tiered-memory","Three-tier agent memory model (hot\u002Fcold\u002Fwiki) for context reduction per spawn","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fsquad\u002Fblob\u002Fdev\u002Ftemplates\u002Fskills\u002Ftiered-memory\u002FSKILL.md",[164,167],{"categoryNo":165,"categoryName":166,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[169,170,36,171,172,173,174,175,157,176,177,178,179,180,181,182],"memory","tiered memory","wiki","agent memory","performance","cold","memory-management","runtime","three","spawn","proposal","management","design","context"]