[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CW2WXEYST8AVQWP3BM0B43":3,"skill-same:01M6CW2WXEYST8AVQWP3BM0B43":69},{"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":43,"commitSha":44,"skillDirectory":45,"forksCount":13,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":48,"install":49,"resources":62},"01M6CW2WXEYST8AVQWP3BM0B43","git-commit",null,"Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions \"\u002Fcommit\". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type\u002Fscope\u002Fdescription overrides, (4) Intelligent file staging for logical grouping","blackplume233\u002FAgentDispatch","blackplume233","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F32346887?v=4","01M6CW1PP6XWA3JMVYH3T45R5P","01M6CW1PTFMF173PDVR9CQ8H31",1,"MIT","https:\u002F\u002Fgithub.com\u002Fblackplume233\u002FAgentDispatch\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fgit-commit\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"git commit","commit","git","message","grouping","commit changes","auto","diff","use","execute","user","interactive","commit messages","Bash","analysis","conventional commit","messages","file","commit message","create","2026-11-10 10:12:30",false,"---\nname: git-commit\ndescription: 'Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions \"\u002Fcommit\". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type\u002Fscope\u002Fdescription overrides, (4) Intelligent file staging for logical grouping'\nlicense: MIT\nallowed-tools: Bash\n---\n\n# Git Commit with Conventional Commits\n\n## Overview\n\nCreate standardized, semantic git commits using the Conventional Commits specification. Analyze the actual diff to determine appropriate type, scope, and message.\n\n## Conventional Commit Format\n\n```\n\u003Ctype>[optional scope]: \u003Cdescription>\n\n[optional body]\n\n[optional footer(s)]\n```\n\n## Commit Types\n\n| Type       | Purpose                        |\n| ---------- | ------------------------------ |\n| `feat`     | New feature                    |\n| `fix`      | Bug fix                        |\n| `docs`     | Documentation only             |\n| `style`    | Formatting\u002Fstyle (no logic)    |\n| `refactor` | Code refactor (no feature\u002Ffix) |\n| `perf`     | Performance improvement        |\n| `test`     | Add\u002Fupdate tests               |\n| `build`    | Build system\u002Fdependencies      |\n| `ci`       | CI\u002Fconfig changes              |\n| `chore`    | Maintenance\u002Fmisc               |\n| `revert`   | Revert commit                  |\n\n## Breaking Changes\n\n```\n# Exclamation mark after type\u002Fscope\nfeat!: remove deprecated endpoint\n\n# BREAKING CHANGE footer\nfeat: allow config to extend other configs\n\nBREAKING CHANGE: `extends` key behavior changed\n```\n\n## Workflow\n\n### 1. Pre-flight: Check Dirty Issues\n\n```bash\n# Ensure all local issue changes are synced to GitHub before committing\nnode .agents\u002Fskills\u002Fissue-manager\u002Fscripts\u002Fissue-cli.mjs check-dirty --strict\n# If exit code is non-zero, sync first:\nnode .agents\u002Fskills\u002Fissue-manager\u002Fscripts\u002Fissue-cli.mjs sync --all\n```\n\n### 2. Analyze Diff\n\n```bash\n# If files are staged, use staged diff\ngit diff --staged\n\n# If nothing staged, use working tree diff\ngit diff\n\n# Also check status\ngit status --porcelain\n```\n\n### 3. Stage Files (if needed)\n\nIf nothing is staged or you want to group changes differently:\n\n```bash\n# Stage specific files\ngit add path\u002Fto\u002Ffile1 path\u002Fto\u002Ffile2\n\n# Stage by pattern\ngit add *.test.*\ngit add src\u002Fcomponents\u002F*\n```\n\n**Never commit secrets** (.env, credentials.json, private keys).\n\n### 4. Generate Commit Message\n\nAnalyze the diff to determine:\n\n- **Type**: What kind of change is this?\n- **Scope**: What area\u002Fmodule is affected?\n- **Description**: One-line summary of what changed (present tense, imperative mood, \u003C72 chars)\n\n### 5. Execute Commit\n\n```bash\n# Single line\ngit commit -m \"\u003Ctype>[scope]: \u003Cdescription>\"\n\n# Multi-line with body\u002Ffooter\ngit commit -m \"$(cat \u003C\u003C'EOF'\n\u003Ctype>[scope]: \u003Cdescription>\n\n\u003Coptional body>\n\n\u003Coptional footer>\nEOF\n)\"\n```\n\n## Best Practices\n\n- One logical change per commit\n- Present tense: \"add\" not \"added\"\n- Imperative mood: \"fix bug\" not \"fixes bug\"\n- Reference issues: `Closes #123`, `Refs #456`\n- Keep description under 72 characters\n\n## Git Safety Protocol\n\n- NEVER update git config\n- NEVER run destructive commands (--force, hard reset) without explicit request\n- NEVER skip hooks (--no-verify) unless user asks\n- NEVER force push to main\u002Fmaster\n- If commit fails due to hooks, fix and create NEW commit (don't amend)\n","# Git Commit with Conventional Commits\n\n## Overview\n\nCreate standardized, semantic git commits using the Conventional Commits specification. Analyze the actual diff to determine appropriate type, scope, and message.\n\n## Conventional Commit Format\n\n```\n\u003Ctype>[optional scope]: \u003Cdescription>\n\n[optional body]\n\n[optional footer(s)]\n```\n\n## Commit Types\n\n| Type       | Purpose                        |\n| ---------- | ------------------------------ |\n| `feat`     | New feature                    |\n| `fix`      | Bug fix                        |\n| `docs`     | Documentation only             |\n| `style`    | Formatting\u002Fstyle (no logic)    |\n| `refactor` | Code refactor (no feature\u002Ffix) |\n| `perf`     | Performance improvement        |\n| `test`     | Add\u002Fupdate tests               |\n| `build`    | Build system\u002Fdependencies      |\n| `ci`       | CI\u002Fconfig changes              |\n| `chore`    | Maintenance\u002Fmisc               |\n| `revert`   | Revert commit                  |\n\n## Breaking Changes\n\n```\n# Exclamation mark after type\u002Fscope\nfeat!: remove deprecated endpoint\n\n# BREAKING CHANGE footer\nfeat: allow config to extend other configs\n\nBREAKING CHANGE: `extends` key behavior changed\n```\n\n## Workflow\n\n### 1. Pre-flight: Check Dirty Issues\n\n```bash\n# Ensure all local issue changes are synced to GitHub before committing\nnode .agents\u002Fskills\u002Fissue-manager\u002Fscripts\u002Fissue-cli.mjs check-dirty --strict\n# If exit code is non-zero, sync first:\nnode .agents\u002Fskills\u002Fissue-manager\u002Fscripts\u002Fissue-cli.mjs sync --all\n```\n\n### 2. Analyze Diff\n\n```bash\n# If files are staged, use staged diff\ngit diff --staged\n\n# If nothing staged, use working tree diff\ngit diff\n\n# Also check status\ngit status --porcelain\n```\n\n### 3. Stage Files (if needed)\n\nIf nothing is staged or you want to group changes differently:\n\n```bash\n# Stage specific files\ngit add path\u002Fto\u002Ffile1 path\u002Fto\u002Ffile2\n\n# Stage by pattern\ngit add *.test.*\ngit add src\u002Fcomponents\u002F*\n```\n\n**Never commit secrets** (.env, credentials.json, private keys).\n\n### 4. Generate Commit Message\n\nAnalyze the diff to determine:\n\n- **Type**: What kind of change is this?\n- **Scope**: What area\u002Fmodule is affected?\n- **Description**: One-line summary of what changed (present tense, imperative mood, \u003C72 chars)\n\n### 5. Execute Commit\n\n```bash\n# Single line\ngit commit -m \"\u003Ctype>[scope]: \u003Cdescription>\"\n\n# Multi-line with body\u002Ffooter\ngit commit -m \"$(cat \u003C\u003C'EOF'\n\u003Ctype>[scope]: \u003Cdescription>\n\n\u003Coptional body>\n\n\u003Coptional footer>\nEOF\n)\"\n```\n\n## Best Practices\n\n- One logical change per commit\n- Present tense: \"add\" not \"added\"\n- Imperative mood: \"fix bug\" not \"fixes bug\"\n- Reference issues: `Closes #123`, `Refs #456`\n- Keep description under 72 characters\n\n## Git Safety Protocol\n\n- NEVER update git config\n- NEVER run destructive commands (--force, hard reset) without explicit request\n- NEVER skip hooks (--no-verify) unless user asks\n- NEVER force push to main\u002Fmaster\n- If commit fails due to hooks, fix and create NEW commit (don't amend)\n",{"name":5,"license":14,"description":7,"allowed-tools":31},"master","3a92278a00caef2314e2008a9f50b810363a3d86",".opencode\u002Fskills\u002Fgit-commit","https:\u002F\u002Fgithub.com\u002Fblackplume233\u002FAgentDispatch","https:\u002F\u002Fgithub.com\u002Fblackplume233","2026-03-03 22:11:55",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add blackplume233\u002FAgentDispatch --skill git-commit",{"tool":55,"command":56},"bunx","bunx skills add blackplume233\u002FAgentDispatch --skill git-commit",{"tool":58,"command":59},"pnpm","pnpm dlx skills add blackplume233\u002FAgentDispatch --skill git-commit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fblackplume233\u002FAgentDispatch\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fgit-commit\u002FSKILL.md",true,[63],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"scripts\u002Fquote.py","SCRIPT","脚本",2829,"https:\u002F\u002Fgithub.com\u002FFDU-INS\u002FInsurance-Skills\u002Fblob\u002Fmain\u002FSkills\u002Flife-insurance-quote\u002Fscripts\u002Fquote.py",[70,96,114,127,143,156],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":81,"publishedAt":38},"01M6CW3A862TC4XFPS14SVG8M3","qa-monitor","QA 持续监测 SubAgent。监听 git HEAD 变化，每有新 ship（commit）自动触发完整回归测试，无变化时进入可配置间隔的休眠轮询。触发方式：用户提及 \"\u002Fqa-watch\"、\"QA 监测\"、\"continuous QA\"、\"watch ship\" 等关键词时激活。","https:\u002F\u002Fgithub.com\u002Fblackplume233\u002FAgentDispatch\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fqa-monitor\u002FSKILL.md",[76],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[82,83,84,85,86,87,88,20,89,90,19,91,92,93,94,95],"qa monitor","monitor","qa","write","engineer","issue","task","shell","ship","testing","subagent","关键词","grep","read",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":106,"publishedAt":38},"01M6CW36KDT33XESRJE4EQZEZ3","qa-engineer","QA 测试工程师 SubAgent。模拟真实用户通过 CLI\u002FREST API 与 AgentDispatch 交互，智能判断输出和产物是否合理，黑盒为主白盒为辅，发现问题自动创建 Issue。触发方式：用户提及 \"\u002Fqa\"、\"QA run\"、\"QA test\"、\"运行测试场景\" 等关键词时激活。","https:\u002F\u002Fgithub.com\u002Fblackplume233\u002FAgentDispatch\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fqa-engineer\u002FSKILL.md",[102,103],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},{"categoryNo":104,"categoryName":105,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000010","后端与接口",[84,86,107,108,109,110,111,91,85,88,87,112,95,94,93,92,113,89],"qa engineer","REST","run","test","cli","api","qa test",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":38},"01M6CW34K4423W6Z48RE8SP860","pr-watcher","PR 轮询守护 SubAgent。持续监控 GitHub 上的 Open PR，自动调用 pr-handler 逐一处理，连续 N 轮无新可处理 PR 后退出。触发方式：用户提及 \"\u002Fwatch-prs\"、\"轮询 PR\"、\"watch prs\" 等关键词时激活。","https:\u002F\u002Fgithub.com\u002Fblackplume233\u002FAgentDispatch\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fpr-watcher\u002FSKILL.md",[],[121,122,88,85,95,94,93,123,92,124,89,125,126],"pr","pr watcher","连续","open","github","open pr",{"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":38},"01M6CW321GNCF2EKY9NQC2WJ9S","pr-handler","PR Gatekeeper SubAgent。自动化处理 Multi-Agent Pipeline 产出的 Draft PR：验证代码质量 → 本地合并 → 更新 Spec → Ship 交付。触发方式：用户提及 \"\u002Fhandle-pr\"、\"处理 PR\"、\"review pr\"、\"合并 PR\" 等关键词时激活。","https:\u002F\u002Fgithub.com\u002Fblackplume233\u002FAgentDispatch\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fpr-handler\u002FSKILL.md",[],[134,121,135,92,88,87,85,95,136,94,137,93,90,89,138,139,140,141,142],"pr handler","draft","draft pr","multi-agent","gatekeeper","pipeline","review pr","spec","review",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":38},"01M6CW2ZQTW1TV0CMSVAKQ7B9S","issue-manager","GitHub-first Issue 管理 SubAgent。Issue 编号和内容以 GitHub Issues 为准，本地 .trellis\u002Fissues\u002F 为 Obsidian 兼容缓存。触发方式：用户提及 \"\u002Fissue\"、\"创建 issue\"、\"create issue\"、\"新建问题\"、\"提 bug\" 等关键词时激活。","https:\u002F\u002Fgithub.com\u002Fblackplume233\u002FAgentDispatch\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fissue-manager\u002FSKILL.md",[],[150,87,93,92,89,151,152,153,37,154,125,94,155,85,95],"issue manager","first","issues","github issues","obsidian","bug",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":166,"publishedAt":38},"01M6CW2SRD2B079B8VSBB6WV4R","agent-dispatch-use","AgentDispatch 使用指南。教导 AI Agent 如何启动 Server、配置 Client Node、将各种 Agent 作为 Worker 挂载到分发集群、提交任务并监听状态。触发方式：用户提及 \"\u002Fonboard\"、\"how to use dispatch\"、\"快速上手\"、\"set up agentdispatch\"、\"挂载 Agent\"、\"mount worker\" 等关键词时激活。","https:\u002F\u002Fgithub.com\u002Fblackplume233\u002FAgentDispatch\u002Fblob\u002Fmaster\u002F.opencode\u002Fskills\u002Fagent-dispatch-use\u002FSKILL.md",[162,163],{"categoryNo":104,"categoryName":105,"taxonomyType":79,"taxonomyTypeDesc":80},{"categoryNo":164,"categoryName":165,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000023","Skill与智能体开发",[167,168,26,95,169,85,170,94,93,171,172,173,174,89,175,176,177],"agent dispatch use","dispatch","up","node","mount","挂载","onboard","how","SET","server","ai agent"]