[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69AH9GAJC6N31PMR7EYMF20":3,"skill-same:01M69AH9GAJC6N31PMR7EYMF20":57},{"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":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":38,"ownerHtmlUrl":39,"ownerBlogUrl":40,"ownerDescription":41,"updatedAt":42,"install":43,"resources":56},"01M69AH9GAJC6N31PMR7EYMF20","using-git-worktrees",null,"Use this whenever you need to create an isolated workspace.","microsoft\u002FFluidFramework","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M69AG0BQKNGBJQ5YNG09HXXW",4947,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FFluidFramework\u002Fblob\u002Fmain\u002F.agency\u002Fplugins\u002Fnori\u002Fskills\u002Fusing-git-worktrees\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27],"using git worktrees","git","git worktrees","worktrees","Using git","create","workspace","use","you","2026-11-10 10:12:30",false,"---\nname: using-git-worktrees\ndescription: Use this whenever you need to create an isolated workspace.\n---\n\n\u003Crequired>\n*CRITICAL* Add the following steps to your Todo list using TodoWrite:\n\n1. Find the worktrees directory.\n\n- Check existing directories using the Bash tool: `ls -d .worktrees 2>\u002Fdev\u002Fnull`\n- If not found, ask me for permission to create a .worktrees directory\n- If given permission, create `.worktrees`.\n\n2. Verify .gitignore before creating a worktree using the Bash tool:\n\n```bash\n# Check if directory pattern in .gitignore\ngrep -q \"^\\.worktrees\u002F$\" .gitignore || grep -q \"^worktrees\u002F$\" .gitignore\n```\n\n- If not found, add the appropriate line to the .gitignore immediately.\n\n3. Create the worktree\n\n- Come up with a good branch name based on the request.\n- Create the worktree with the Bash tool: `git worktree add \".worktrees\u002F$BRANCH_NAME\" -b \"$BRANCH_NAME\"\n- cd into the newly created path with the Bash tool: `cd $path`\n\n4. Auto-detect and run project setup.\n\n```bash\n# Node.js\nif [ -f package.json ]; then npm install; fi\n\n# Rust\nif [ -f Cargo.toml ]; then cargo build; fi\n\n# Python\nif [ -f requirements.txt ]; then pip install -r requirements.txt; fi\nif [ -f pyproject.toml ]; then poetry install; fi\n\n# Go\nif [ -f go.mod ]; then go mod download; fi\n```\n\n- If there is no obvious project setup, you _MUST_ ask me.\n\n5. Run tests to ensure the worktree is clean.\n\n```bash\n# Examples - use project-appropriate command\nnpm test\ncargo test\npytest\ngo test .\u002F...\n```\n\n**If tests fail:** Report failures, ask whether to proceed or investigate.\n\n**If tests pass:** Report ready.\n\n6. Report Location\n\n```\nNew working directory: \u003Cfull-path>\nTests passing (\u003CN> tests, 0 failures)\nAll commands and tools will now refer to: \u003Cfull-path>\n```\n\n7. Understand that you are now in a new working directory. Your Bash tool instructions from here on out should refer to the worktree directory, NOT your original directory. This is ABSOLUTELY CRITICAL.\n\n\u003C\u002Frequired>\n\n# Maintaining Working Directory in Worktree\n\nCRITICAL: Once you create and enter a worktree, you must stay within\nit for the entire session.\n\nRules:\n\n1. Never use cd .. from within a worktree - It will eventually take\n   you outside the worktree boundary\n2. Always use absolute paths for commands - Use npm run lint from\n   within the worktree, not cd .. && npm run lint\n3. If you need to run root-level commands, use the full worktree path:\n   \u003Cbad-example>\n   cd .. && npm run lint\n   \u003C\u002Fbad-example>\n   \u003Cgood-example>\n   npm run lint # (from worktree root)\n   \u003C\u002Fgood-example>\n\n\u003Cgood-example>\ncd \u002Fhome\u002F$USER\u002Fcode\u002Fproject\u002F.worktrees\u002Fbranch-name && npm run lint\n\u003C\u002Fgood-example>\n\n4. Verify your location frequently:\n\n```bash\npwd  # Should show .worktrees\u002Fbranch-name in path\ngit branch  # Should show * on your feature branch, not main\n```\n\n5. If you accidentally exit the worktree:\n\n- Immediately recognize it (check if you're on main branch)\n- Navigate back: cd \u002Ffull\u002Fpath\u002Fto\u002F.worktrees\u002Fyour-branch\n- Verify: git branch should show your branch, not main\n\nRed Flags:\n\n- Running git status and seeing \"On branch main\" when you should be on a feature branch\n- Running pwd and NOT seeing .worktrees\u002F in the path\n- Any cd .. command while in a worktree\n\n# Quick Reference\n\n| Situation                   | Action                     |\n| --------------------------- | -------------------------- |\n| `.worktrees\u002F` exists        | Use it (verify .gitignore) |\n| `.worktree\u002Fs does not exist | Check CLAUDE.md → Ask user |\n| Directory not in .gitignore | Add it immediately         |\n| Tests fail during baseline  | Report failures + ask      |\n| No package.json\u002FCargo.toml  | Skip dependency install    |\n\n# Common Mistakes\n\n**Skipping .gitignore verification**\n\n- **Problem:** Worktree contents get tracked, pollute git status\n- **Fix:** Always grep .gitignore before creating project-local worktree\n\n**Assuming directory location**\n\n- **Problem:** Creates inconsistency, violates project conventions\n- **Fix:** Follow priority: existing > CLAUDE.md > ask\n\n**Missing project installation**\n\n- **Problem:** Tests and lint will fail, breaking the project\n- **Fix:** Always install the project when creating a new worktree\n\n**Proceeding with failing tests**\n\n- **Problem:** Can't distinguish new bugs from pre-existing issues\n- **Fix:** Report failures, get explicit permission to proceed\n\n**Hardcoding setup commands**\n\n- **Problem:** Breaks on projects using different tools\n- **Fix:** Auto-detect from project files (package.json, etc.)\n\n# Example Workflow\n\n```\nYou: I'm using the Using Git Worktrees skill to set up an isolated workspace.\n\n[Check .worktrees\u002F - exists]\n[Verify .gitignore - contains .worktrees\u002F]\n[Create worktree: git worktree add .worktrees\u002Fauth -b feature\u002Fauth]\n[Run npm install]\n[Run npm test - 47 passing]\n\nWorktree ready at myproject\u002F.worktrees\u002Fauth\nTests passing (47 tests, 0 failures)\nReady to implement auth feature\n```\n\n# Red Flags\n\n**Never:**\n\n- Create worktree without .gitignore verification (project-local)\n- Skip baseline test verification\n- Proceed with failing tests without asking\n- Assume directory location when ambiguous\n- Skip CLAUDE.md check\n\n**Always:**\n\n- Follow directory priority: existing > CLAUDE.md > ask\n- Verify .gitignore for project-local\n- Auto-detect and run project setup\n- Verify clean test baseline\n","\u003Crequired>\n*CRITICAL* Add the following steps to your Todo list using TodoWrite:\n\n1. Find the worktrees directory.\n\n- Check existing directories using the Bash tool: `ls -d .worktrees 2>\u002Fdev\u002Fnull`\n- If not found, ask me for permission to create a .worktrees directory\n- If given permission, create `.worktrees`.\n\n2. Verify .gitignore before creating a worktree using the Bash tool:\n\n```bash\n# Check if directory pattern in .gitignore\ngrep -q \"^\\.worktrees\u002F$\" .gitignore || grep -q \"^worktrees\u002F$\" .gitignore\n```\n\n- If not found, add the appropriate line to the .gitignore immediately.\n\n3. Create the worktree\n\n- Come up with a good branch name based on the request.\n- Create the worktree with the Bash tool: `git worktree add \".worktrees\u002F$BRANCH_NAME\" -b \"$BRANCH_NAME\"\n- cd into the newly created path with the Bash tool: `cd $path`\n\n4. Auto-detect and run project setup.\n\n```bash\n# Node.js\nif [ -f package.json ]; then npm install; fi\n\n# Rust\nif [ -f Cargo.toml ]; then cargo build; fi\n\n# Python\nif [ -f requirements.txt ]; then pip install -r requirements.txt; fi\nif [ -f pyproject.toml ]; then poetry install; fi\n\n# Go\nif [ -f go.mod ]; then go mod download; fi\n```\n\n- If there is no obvious project setup, you _MUST_ ask me.\n\n5. Run tests to ensure the worktree is clean.\n\n```bash\n# Examples - use project-appropriate command\nnpm test\ncargo test\npytest\ngo test .\u002F...\n```\n\n**If tests fail:** Report failures, ask whether to proceed or investigate.\n\n**If tests pass:** Report ready.\n\n6. Report Location\n\n```\nNew working directory: \u003Cfull-path>\nTests passing (\u003CN> tests, 0 failures)\nAll commands and tools will now refer to: \u003Cfull-path>\n```\n\n7. Understand that you are now in a new working directory. Your Bash tool instructions from here on out should refer to the worktree directory, NOT your original directory. This is ABSOLUTELY CRITICAL.\n\n\u003C\u002Frequired>\n\n# Maintaining Working Directory in Worktree\n\nCRITICAL: Once you create and enter a worktree, you must stay within\nit for the entire session.\n\nRules:\n\n1. Never use cd .. from within a worktree - It will eventually take\n   you outside the worktree boundary\n2. Always use absolute paths for commands - Use npm run lint from\n   within the worktree, not cd .. && npm run lint\n3. If you need to run root-level commands, use the full worktree path:\n   \u003Cbad-example>\n   cd .. && npm run lint\n   \u003C\u002Fbad-example>\n   \u003Cgood-example>\n   npm run lint # (from worktree root)\n   \u003C\u002Fgood-example>\n\n\u003Cgood-example>\ncd \u002Fhome\u002F$USER\u002Fcode\u002Fproject\u002F.worktrees\u002Fbranch-name && npm run lint\n\u003C\u002Fgood-example>\n\n4. Verify your location frequently:\n\n```bash\npwd  # Should show .worktrees\u002Fbranch-name in path\ngit branch  # Should show * on your feature branch, not main\n```\n\n5. If you accidentally exit the worktree:\n\n- Immediately recognize it (check if you're on main branch)\n- Navigate back: cd \u002Ffull\u002Fpath\u002Fto\u002F.worktrees\u002Fyour-branch\n- Verify: git branch should show your branch, not main\n\nRed Flags:\n\n- Running git status and seeing \"On branch main\" when you should be on a feature branch\n- Running pwd and NOT seeing .worktrees\u002F in the path\n- Any cd .. command while in a worktree\n\n# Quick Reference\n\n| Situation                   | Action                     |\n| --------------------------- | -------------------------- |\n| `.worktrees\u002F` exists        | Use it (verify .gitignore) |\n| `.worktree\u002Fs does not exist | Check CLAUDE.md → Ask user |\n| Directory not in .gitignore | Add it immediately         |\n| Tests fail during baseline  | Report failures + ask      |\n| No package.json\u002FCargo.toml  | Skip dependency install    |\n\n# Common Mistakes\n\n**Skipping .gitignore verification**\n\n- **Problem:** Worktree contents get tracked, pollute git status\n- **Fix:** Always grep .gitignore before creating project-local worktree\n\n**Assuming directory location**\n\n- **Problem:** Creates inconsistency, violates project conventions\n- **Fix:** Follow priority: existing > CLAUDE.md > ask\n\n**Missing project installation**\n\n- **Problem:** Tests and lint will fail, breaking the project\n- **Fix:** Always install the project when creating a new worktree\n\n**Proceeding with failing tests**\n\n- **Problem:** Can't distinguish new bugs from pre-existing issues\n- **Fix:** Report failures, get explicit permission to proceed\n\n**Hardcoding setup commands**\n\n- **Problem:** Breaks on projects using different tools\n- **Fix:** Auto-detect from project files (package.json, etc.)\n\n# Example Workflow\n\n```\nYou: I'm using the Using Git Worktrees skill to set up an isolated workspace.\n\n[Check .worktrees\u002F - exists]\n[Verify .gitignore - contains .worktrees\u002F]\n[Create worktree: git worktree add .worktrees\u002Fauth -b feature\u002Fauth]\n[Run npm install]\n[Run npm test - 47 passing]\n\nWorktree ready at myproject\u002F.worktrees\u002Fauth\nTests passing (47 tests, 0 failures)\nReady to implement auth feature\n```\n\n# Red Flags\n\n**Never:**\n\n- Create worktree without .gitignore verification (project-local)\n- Skip baseline test verification\n- Proceed with failing tests without asking\n- Assume directory location when ambiguous\n- Skip CLAUDE.md check\n\n**Always:**\n\n- Follow directory priority: existing > CLAUDE.md > ask\n- Verify .gitignore for project-local\n- Auto-detect and run project setup\n- Verify clean test baseline\n",{"name":5,"description":7},"main","5e94cbfa27965a98428f7d26b69dd5b0a8abeb0d",".agency\u002Fplugins\u002Fnori\u002Fskills\u002Fusing-git-worktrees",590,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FFluidFramework","https:\u002F\u002Ffluidframework.com","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-12 03:12:28",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add microsoft\u002FFluidFramework --skill using-git-worktrees",{"tool":49,"command":50},"bunx","bunx skills add microsoft\u002FFluidFramework --skill using-git-worktrees",{"tool":52,"command":53},"pnpm","pnpm dlx skills add microsoft\u002FFluidFramework --skill using-git-worktrees","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FFluidFramework\u002Fblob\u002Fmain\u002F.agency\u002Fplugins\u002Fnori\u002Fskills\u002Fusing-git-worktrees\u002FSKILL.md",true,[],[58,80,119,142,160,183],{"skillNo":59,"name":60,"nameZh":6,"description":61,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":28},"01M6PJ5SAHYFZFWDG5Y4RW56EP","trigger-pipelines-for-copilot-pr","Trigger ADO pipelines for a Copilot-created PR by posting \u002Fazp run comments. Use when the user asks to trigger CI pipelines for a specific PR.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FFluidFramework\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftrigger-pipelines-for-copilot-pr\u002FSKILL.md",[],[65,66,67,68,69,70,71,72,73,74,26,75,76,77,78,79],"pr","trigger pipelines for copilot pr","for","trigger","copilot","pipelines","ado","posting","run","ci","number","URL","comments","user","when",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":99,"publishedAt":28},"01M6PJ5M4ZG7E78C4GM4041HEP","review","Review changes relative to a prior state, such as a diff, pull request, branch, commit, or working-tree changes. Use for change-focused code review and regression analysis. Do not use to assess an existing file, API, design, implementation, or other artifact without a comparison; if the request is ambiguous, ask whether the user wants a change review and what prior state to compare against.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FFluidFramework\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Freview\u002FSKILL.md",[86,91,94],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":92,"categoryName":93,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[82,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,67,117,118],"branch","regression","code review","design","ask","analysis","code","commit","api","change","artifact","request","pull","tree","as","do","diff","assess","ambiguous",{"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":128,"publishedAt":28},"01M6PJ5E3PCBDS319FFMHPFACN","review-pr-local","The authority on pulling a pull request — Azure DevOps or GitHub — into an isolated local worktree so a human can review it in their editor, and on posting human-controlled review comments back to the PR (ADO via the ado PR-thread MCP tools or the Azure DevOps REST API, GitHub via the gh CLI). Auto-detects the platform and all identifiers from the PR URL; not tied to any specific repository. The AI assists an interactive human review and only ever posts comments the human explicitly requests. If you find yourself checking out a PR branch over the user's own working tree, or posting AI-authored review prose the human did not ask for, invoke this skill instead.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FFluidFramework\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Freview-pr-local\u002FSKILL.md",[125],{"categoryNo":126,"categoryName":127,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000023","Skill与智能体开发",[129,82,65,130,131,132,100,133,134,135,136,137,138,139,76,27,104,108,140,141],"local","review pr local","review pr","back","posts","only","MCP","authority","auto","invoke","azure devops","cli","worktree",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":28},"01M6PJ5AVZAS0AEBPCYJZ9ZMMD","policy-check","This skill should be used when the user asks to \"run policy check\", \"check policy\", \"policy-check\", or needs to validate package compliance. Provides guidance on running policy checks for specific packages or the entire repository.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FFluidFramework\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fpolicy-check\u002FSKILL.md",[],[149,150,151,152,153,67,73,154,155,156,157,78,158,79,159],"policy check","policy","check","packages","compliance","repository","guidance","validate","package","running","entire",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":169,"publishedAt":28},"01M6PJ54H068MZF2WD2JDKCVDC","pipeline-test-triage","Triage test failures in an Azure DevOps pipeline run for Fluid Framework. Use when the user shares an ADO build\u002Fpipeline URL or build ID and wants failures analyzed, when they ask \"why did this pipeline fail\", \"summarize the test failures\", \"is this test flaky or a real bug\", \"compare these runs\", or wants bugs filed for genuine failures. Covers the Real Service End to End Tests pipeline as the worked example but applies to any FF test pipeline.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FFluidFramework\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fpipeline-test-triage\u002FSKILL.md",[166],{"categoryNo":167,"categoryName":168,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000008","测试与质量",[170,171,172,173,174,175,176,177,139,76,104,73,178,179,180,181,71,114,182,67,79],"pipeline","test triage","pipeline test triage","pipeline test","test","triage","end","test pipeline","why","bug","but","framework","bugs",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":189,"publishedAt":28},"01M6PJ4ZJASDV2CGQTG1JWKBFE","fluid-release","Fluid Framework client release group — minor releases, patch releases, and post-release type test updates. Covers release prep, branching, version bumps, changelogs, release notes, and type test baselines. In autonomous mode, auto-detects state from the repo, attempts to execute, and falls back to a GitHub issue on failure. Triggers on \"release\", \"do the release\", \"release status\", version bump, release notes, changelog, release branch, or release engineering.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002FFluidFramework\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ffluid-release\u002FSKILL.md",[],[190,191,192,132,100,193,194,195,196,197,137,198,199,200,201,202,203,204,205,206],"release","fluid release","fluid","bump","mode","autonomous","release notes","release status","updates","patch","notes","changelog","release prep","releases","status","issue","branching"]