[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CHV68A3AAMMRNP13H9GC4Y":3,"skill-same:01M6CHV68A3AAMMRNP13H9GC4Y":87},{"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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":50,"install":51,"resources":64},"01M6CHV68A3AAMMRNP13H9GC4Y","but",null,"Commit, push, branch, and manage version control with GitButler. Use for: commit my changes, check what changed, create a PR, push my branch, view diff, create branches, stage files, edit commit history, squash commits, amend commits, undo commits, pull requests, merge, stash work. Replaces git - use 'but' instead of git commit, git status, git push, git checkout, git add, git diff, git branch, git rebase, git stash, git merge. Covers all git, version control, and source control operations.","douglance\u002Fdbg","douglance","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4741454?v=4","01M6CHV0887PTZP4ACB8QF8VXT","01M6CHV0CJMK4BTFMZ6SAGYX92",6,"MIT","https:\u002F\u002Fgithub.com\u002Fdouglance\u002Fdbg\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgitbutler\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"git push","manage","files","diff","version","use","view","branch","history","commit","squash","commits","team","push","pull","git branch","git merge","git commit","pr","2026-11-10 10:12:30",false,"---\nname: but\nversion: 0.19.1\ndescription: \"Commit, push, branch, and manage version control with GitButler. Use for: commit my changes, check what changed, create a PR, push my branch, view diff, create branches, stage files, edit commit history, squash commits, amend commits, undo commits, pull requests, merge, stash work. Replaces git - use 'but' instead of git commit, git status, git push, git checkout, git add, git diff, git branch, git rebase, git stash, git merge. Covers all git, version control, and source control operations.\"\nauthor: GitButler Team\n---\n\n# GitButler CLI Skill\n\nUse GitButler CLI (`but`) as the default version-control interface.\n\n## Non-Negotiable Rules\n\n1. Use `but` for all write operations. Never run `git add`, `git commit`, `git push`, `git checkout`, `git merge`, `git rebase`, `git stash`, or `git cherry-pick`.\n2. Start every write\u002Fhistory-edit task with `but status --json`.\n3. For mutation commands, always add `--json --status-after`.\n4. Use CLI IDs from `but status --json` \u002F `but diff --json` \u002F `but show --json`; do not hardcode IDs and do not switch branches with `git checkout`.\n5. After a successful mutation with `--status-after`, do not run a redundant `but status` unless needed for new IDs.\n6. If the user says a `git` write command (for example \"git push\"), translate it to the `but` equivalent and execute the `but` command directly.\n7. For branch-update tasks, run `but pull --check --json` before `but pull --json --status-after`. Do not substitute `but fetch` + status summaries for this check.\n8. Avoid routine `--help` probes before mutations. Use the command patterns in this skill (and `references\u002Freference.md`) first; only use `--help` when syntax is genuinely unclear or after a failed attempt.\n\n## Core Flow\n\n```bash\nbut status --json\n# If new branch needed:\nbut branch new \u003Cname>\n# Perform task with IDs from status\u002Fdiff\u002Fshow\nbut \u003Cmutation> ... --json --status-after\n```\n\n## Canonical Command Patterns\n\n- Commit specific files\u002Fhunks:\n  `but commit \u003Cbranch> -m \"\u003Cmessage>\" --changes \u003Cid>,\u003Cid> --json --status-after`\n- Create branch while committing:\n  `but commit \u003Cbranch> -c -m \"\u003Cmessage>\" --changes \u003Cid> --json --status-after`\n- Amend into a known commit:\n  `but amend \u003Cfile-id> \u003Ccommit-id> --json --status-after`\n- Reorder commits:\n  `but move \u003Csource-commit-id> \u003Ctarget-commit-id> --json --status-after`\n- Push:\n  `but push`\n  or\n  `but push \u003Cbranch-id>`\n- Pull update safety flow:\n  `but pull --check --json`\n  then\n  `but pull --json --status-after`\n\n## Task Recipes\n\n### Commit one file\n\n1. `but status --json`\n2. Find that file's `cliId`\n3. `but commit \u003Cbranch> -c -m \"\u003Cclear message>\" --changes \u003Cfile-id> --json --status-after`\n\n### Commit only A, not B\n\n1. `but status --json`\n2. Find `src\u002Fa.rs` ID and `src\u002Fb.rs` ID\n3. Commit with `--changes \u003Ca-id>` only\n\n### User says \"git push\"\n\nInterpret as GitButler push. Run `but push` (or `but push \u003Cbranch-id>`) immediately.\nDo not run `git push`, even if `but push` reports nothing to push.\n\n### Check mergeability, then update branches\n\n1. Run exactly: `but pull --check --json`\n2. If user asked to proceed, run: `but pull --json --status-after`\n3. Do not replace step 1 with `but fetch`, `but status`, or a narrative-only summary.\n\n### Amend into existing commit\n\n1. `but status --json`\n2. Locate file ID and commit ID from `status` (or `but show \u003Cbranch-id> --json`)\n3. Run exactly: `but amend \u003Cfile-id> \u003Ccommit-id> --json --status-after`\n4. Never use `git checkout` or `git commit --amend`\n\n### Reorder commits\n\n1. `but status --json`\n2. Identify source\u002Ftarget commit IDs in the branch by commit message\n3. Run: `but move \u003Ccommit-a> \u003Ccommit-b> --json --status-after`\n4. From the returned `status`, refresh IDs and then run the inverse move:\n   `but move \u003Ccommit-b> \u003Ccommit-a> --json --status-after`\n5. This two-step sequence is the safe default for reorder requests.\n6. Never use `git rebase` for this.\n\n## Git-to-But Map\n\n- `git status` -> `but status --json`\n- `git add` + `git commit` -> `but commit ... --changes ... --json --status-after`\n- `git checkout -b` -> `but branch new \u003Cname>`\n- `git push` -> `but push`\n- `git rebase -i` -> `but move`, `but squash`, `but reword`\n- `git cherry-pick` -> `but pick`\n\n## Notes\n\n- Prefer explicit IDs over file paths for mutations.\n- `--changes` is the safe default for precise commits.\n- `--changes` accepts one argument per flag. For multiple IDs, use comma-separated values (`--changes a1,b2`) or repeat the flag (`--changes a1 --changes b2`), not `--changes a1 b2`.\n- Read-only git inspection is allowed (`git log`, `git blame`) when needed.\n- Keep skill version checks low-noise:\n  - Do not run `but skill check` as a routine preflight on every task.\n  - Run `but skill check` when command behavior appears to diverge from this skill (for example: unexpected unknown-flag errors, missing subcommands, or output shape mismatches), or when the user asks.\n  - If update is available, recommend `but skill check --update` (or run it if the user asked to update).\n- For deeper command syntax and flags, use `references\u002Freference.md`.\n- For workspace model and dependency behavior, use `references\u002Fconcepts.md`.\n- For end-to-end workflow patterns, use `references\u002Fexamples.md`.\n","# GitButler CLI Skill\n\nUse GitButler CLI (`but`) as the default version-control interface.\n\n## Non-Negotiable Rules\n\n1. Use `but` for all write operations. Never run `git add`, `git commit`, `git push`, `git checkout`, `git merge`, `git rebase`, `git stash`, or `git cherry-pick`.\n2. Start every write\u002Fhistory-edit task with `but status --json`.\n3. For mutation commands, always add `--json --status-after`.\n4. Use CLI IDs from `but status --json` \u002F `but diff --json` \u002F `but show --json`; do not hardcode IDs and do not switch branches with `git checkout`.\n5. After a successful mutation with `--status-after`, do not run a redundant `but status` unless needed for new IDs.\n6. If the user says a `git` write command (for example \"git push\"), translate it to the `but` equivalent and execute the `but` command directly.\n7. For branch-update tasks, run `but pull --check --json` before `but pull --json --status-after`. Do not substitute `but fetch` + status summaries for this check.\n8. Avoid routine `--help` probes before mutations. Use the command patterns in this skill (and `references\u002Freference.md`) first; only use `--help` when syntax is genuinely unclear or after a failed attempt.\n\n## Core Flow\n\n```bash\nbut status --json\n# If new branch needed:\nbut branch new \u003Cname>\n# Perform task with IDs from status\u002Fdiff\u002Fshow\nbut \u003Cmutation> ... --json --status-after\n```\n\n## Canonical Command Patterns\n\n- Commit specific files\u002Fhunks:\n  `but commit \u003Cbranch> -m \"\u003Cmessage>\" --changes \u003Cid>,\u003Cid> --json --status-after`\n- Create branch while committing:\n  `but commit \u003Cbranch> -c -m \"\u003Cmessage>\" --changes \u003Cid> --json --status-after`\n- Amend into a known commit:\n  `but amend \u003Cfile-id> \u003Ccommit-id> --json --status-after`\n- Reorder commits:\n  `but move \u003Csource-commit-id> \u003Ctarget-commit-id> --json --status-after`\n- Push:\n  `but push`\n  or\n  `but push \u003Cbranch-id>`\n- Pull update safety flow:\n  `but pull --check --json`\n  then\n  `but pull --json --status-after`\n\n## Task Recipes\n\n### Commit one file\n\n1. `but status --json`\n2. Find that file's `cliId`\n3. `but commit \u003Cbranch> -c -m \"\u003Cclear message>\" --changes \u003Cfile-id> --json --status-after`\n\n### Commit only A, not B\n\n1. `but status --json`\n2. Find `src\u002Fa.rs` ID and `src\u002Fb.rs` ID\n3. Commit with `--changes \u003Ca-id>` only\n\n### User says \"git push\"\n\nInterpret as GitButler push. Run `but push` (or `but push \u003Cbranch-id>`) immediately.\nDo not run `git push`, even if `but push` reports nothing to push.\n\n### Check mergeability, then update branches\n\n1. Run exactly: `but pull --check --json`\n2. If user asked to proceed, run: `but pull --json --status-after`\n3. Do not replace step 1 with `but fetch`, `but status`, or a narrative-only summary.\n\n### Amend into existing commit\n\n1. `but status --json`\n2. Locate file ID and commit ID from `status` (or `but show \u003Cbranch-id> --json`)\n3. Run exactly: `but amend \u003Cfile-id> \u003Ccommit-id> --json --status-after`\n4. Never use `git checkout` or `git commit --amend`\n\n### Reorder commits\n\n1. `but status --json`\n2. Identify source\u002Ftarget commit IDs in the branch by commit message\n3. Run: `but move \u003Ccommit-a> \u003Ccommit-b> --json --status-after`\n4. From the returned `status`, refresh IDs and then run the inverse move:\n   `but move \u003Ccommit-b> \u003Ccommit-a> --json --status-after`\n5. This two-step sequence is the safe default for reorder requests.\n6. Never use `git rebase` for this.\n\n## Git-to-But Map\n\n- `git status` -> `but status --json`\n- `git add` + `git commit` -> `but commit ... --changes ... --json --status-after`\n- `git checkout -b` -> `but branch new \u003Cname>`\n- `git push` -> `but push`\n- `git rebase -i` -> `but move`, `but squash`, `but reword`\n- `git cherry-pick` -> `but pick`\n\n## Notes\n\n- Prefer explicit IDs over file paths for mutations.\n- `--changes` is the safe default for precise commits.\n- `--changes` accepts one argument per flag. For multiple IDs, use comma-separated values (`--changes a1,b2`) or repeat the flag (`--changes a1 --changes b2`), not `--changes a1 b2`.\n- Read-only git inspection is allowed (`git log`, `git blame`) when needed.\n- Keep skill version checks low-noise:\n  - Do not run `but skill check` as a routine preflight on every task.\n  - Run `but skill check` when command behavior appears to diverge from this skill (for example: unexpected unknown-flag errors, missing subcommands, or output shape mismatches), or when the user asks.\n  - If update is available, recommend `but skill check --update` (or run it if the user asked to update).\n- For deeper command syntax and flags, use `references\u002Freference.md`.\n- For workspace model and dependency behavior, use `references\u002Fconcepts.md`.\n- For end-to-end workflow patterns, use `references\u002Fexamples.md`.\n",{"name":5,"author":42,"version":43,"description":7},"GitButler Team","0.19.1","main","be748465e0f6b08c881307d42ca2c674e4d27eb3",".claude\u002Fskills\u002Fgitbutler",0,"https:\u002F\u002Fgithub.com\u002Fdouglance\u002Fdbg","https:\u002F\u002Fgithub.com\u002Fdouglance","2026-07-08 22:14:09",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add douglance\u002Fdbg --skill but",{"tool":57,"command":58},"bunx","bunx skills add douglance\u002Fdbg --skill but",{"tool":60,"command":61},"pnpm","pnpm dlx skills add douglance\u002Fdbg --skill but","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdouglance\u002Fdbg\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgitbutler\u002FSKILL.md",true,[65,71,75,79,83],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fconcepts.md","REFERENCE","参考文档",11089,"https:\u002F\u002Fgithub.com\u002Fdouglance\u002Fdbg\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgitbutler\u002Freferences\u002Fconcepts.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fexamples.md",13642,"https:\u002F\u002Fgithub.com\u002Fdouglance\u002Fdbg\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgitbutler\u002Freferences\u002Fexamples.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Freference.md",18116,"https:\u002F\u002Fgithub.com\u002Fdouglance\u002Fdbg\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgitbutler\u002Freferences\u002Freference.md",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"SOURCE.md",181,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fdexpaprika-mcp\u002FSOURCE.md",{"path":84,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":85,"sourceHtmlUrl":86},"TRUST.auto.yaml",2121,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fmcp-servers\u002Fdexpaprika-mcp\u002FTRUST.auto.yaml",[88,122,127],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":107,"publishedAt":37},"01M6CHV9E7JV1S3A2AB2C61ZET","dbg","Debug Node.js processes and automate browser pages using the dbg stateless CLI debugger. Use when investigating runtime bugs, inspecting variables and call stacks, analyzing object state, or automating browser testing. Every call is one command in, one response out — built for AI agents and automation.","https:\u002F\u002Fgithub.com\u002Fdouglance\u002Fdbg\u002Fblob\u002Fmain\u002Fskills\u002Fdbg\u002FSKILL.md",[94,99,102],{"categoryNo":95,"categoryName":96,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":100,"categoryName":101,"taxonomyType":97,"taxonomyTypeDesc":98},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[90,108,109,110,111,112,113,114,115,116,117,118,119,23,120,121],"automation","testing","debug","state","browser","browser testing","analyzing","debugger","js","automate","node","command","ai agents","cli",{"skillNo":123,"name":90,"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":124,"categories":125,"keywords":126,"publishedAt":37},"01M6CHV4V3KGJN2HNYW25WBCD0","https:\u002F\u002Fgithub.com\u002Fdouglance\u002Fdbg\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdbg\u002FSKILL.md",[],[90],{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":37},"01M6CHV28JYJDS261WZ273WVD0","dbg-dev","Develop, test, and debug the dbg stateless CLI debugger. Build workflow, architecture, self-debugging patterns, and contributor guidance.","https:\u002F\u002Fgithub.com\u002Fdouglance\u002Fdbg\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdbg-dev\u002FSKILL.md",[],[134,135,121,136,137,138,139,115,140,141,110,142,143,144],"dbg dev","dev","patterns","build","guidance","develop","build workflow","debugging","architecture","test","workflow"]