From 27de7f3000fdb18ee18426ef97ea283d2aefb5fe Mon Sep 17 00:00:00 2001 From: "zhiye.sun" Date: Tue, 25 Aug 2026 11:38:42 +0800 Subject: [PATCH] =?UTF-8?q?feat(git):=20=E6=96=B0=E5=A2=9E=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E5=88=86=E6=94=AF=E5=88=9B=E5=BB=BA=20Skill?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- migration/MIGRATION_PLAN.md | 3 +- migration/source-lock.json | 5 +- plugins/git/skills/branch/SKILL.md | 57 ++++++++++++++++++++ plugins/git/skills/branch/agents/openai.yaml | 4 ++ 5 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 plugins/git/skills/branch/SKILL.md create mode 100644 plugins/git/skills/branch/agents/openai.yaml diff --git a/README.md b/README.md index d7b9e6c..4980f6a 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ CraftKit 是一组面向 Codex 插件市场的中性 Skill 工具。项目从通 | --- | --- | --- | | `dev` | 软件设计、编码、审查与测试 | 已初始化,暂无 Skill | | `doc` | 文档转换、整理与写作 | 已迁移 `format-md`、`docx-to-md` | -| `git` | 分支、提交、变更提取与集成 | 已迁移 `commit-msg` | +| `git` | 分支、提交、变更提取与集成 | 已迁移 `commit-msg`、`branch` | | `knowledge` | 交接、复盘、经验与工作总结 | 已初始化,暂无 Skill | | `skill` | Skill 创建、迁移、检查与同步 | 已初始化,暂无 Skill | diff --git a/migration/MIGRATION_PLAN.md b/migration/MIGRATION_PLAN.md index b32b631..08768f8 100644 --- a/migration/MIGRATION_PLAN.md +++ b/migration/MIGRATION_PLAN.md @@ -56,7 +56,7 @@ 1. `doc/format-md`:纯指令型样本,已完成。 2. `doc/docx-to-md`:多来源合并、脚本、依赖和生成物样本,已完成。 3. `git/commit-msg`:只读 Git 状态分析样本,已完成。 -4. `git/branch`:修改仓库状态和二次授权边界样本。 +4. `git/branch`:修改仓库状态和二次授权边界样本,已完成。 5. `knowledge/handoff`:模板化文档与项目上下文样本。 6. `skill/guidance`:大型参考资料、索引和渐进式加载样本。 7. `skill/migrate`:脚本、检查、同步和状态追踪组成的复合工作流样本。 @@ -227,5 +227,6 @@ plan-change - [x] 迁移并验证首个样板 `doc/format-md`。 - [x] 迁移并验证脚本型特殊样本 `doc/docx-to-md`。 - [x] 迁移并验证只读 Git 特殊样本 `git/commit-msg`。 +- [x] 迁移并验证有副作用 Git 特殊样本 `git/branch`。 - [ ] 完成其余特殊样本并总结批量迁移规则。 - [ ] 按插件和风险类型推进同质批量迁移。 diff --git a/migration/source-lock.json b/migration/source-lock.json index e1b2ae9..b6a1619 100644 --- a/migration/source-lock.json +++ b/migration/source-lock.json @@ -227,7 +227,10 @@ "source-b:3a5d583c511959b3": { "sourcePathHash": "3a5d583c511959b3d1934d15eaa9b0cd0590c558535b6a8307f870d7ce0c8dd0", "sourceSha256": "6b69964b6e65ddc6eefa857fa1016587d3b2d2fac22d2bda4196762233fb025b", - "status": "pending" + "status": "migrated", + "target": "plugins/git/skills/branch", + "targetVersion": "0.1.0", + "reviewedAt": "2026-08-25" }, "source-b:13bb77c66fee0964": { "sourcePathHash": "13bb77c66fee09641fe61781ffbba4c51ed47b14ce225972ea35219e489405a3", diff --git a/plugins/git/skills/branch/SKILL.md b/plugins/git/skills/branch/SKILL.md new file mode 100644 index 0000000..0dc5e95 --- /dev/null +++ b/plugins/git/skills/branch/SKILL.md @@ -0,0 +1,57 @@ +--- +name: branch +description: 根据当前仓库约定生成名称,并在用户确认准确命令后创建和切换本地 Git 分支。适用于明确要求新建分支的场景;仅查看、重命名、删除、合并、推送或发布分支不应触发本 Skill。 +--- + +# 创建 Git 分支 + +安全地创建并切换本地分支。所有检查默认只读;`fetch` 和分支创建分别需要明确授权,不得把它们合并为一次隐含操作。 + +## 创建前检查 + +1. 运行 `git status --short --branch`、`git branch --show-current`、`git branch --list`、`git branch --remotes` 和 `git worktree list --porcelain`。 +2. 读取当前仓库适用的 `AGENTS.md`、贡献指南或其他明确的分支约定;没有约定时再参考现有分支命名。 +3. 收集分支用途、简短描述和基准引用。不要默认 `main`、`master`、远程名称、版本分支或合并目标。 +4. 若工作区不干净,说明现有修改会随切换保留;在用户明确选择继续前不得创建分支,也不得自动暂存、提交、还原或清理。 + +## 生成和验证名称 + +- 优先遵循仓库已有规则。没有规则时,可建议 `feature/`、`fix/`、`hotfix/` 或 `chore/`。 +- 描述部分使用简短的小写连字符形式;保留用户提供且确有需要的任务编号,不自行编造编号。 +- 使用 `git check-ref-format --branch ""` 验证名称。 +- 使用 `git show-ref --verify --quiet "refs/heads/"` 检查本地分支,并检查同名远程引用;已存在时停止,不覆盖、不重置。 +- 使用 `git rev-parse --verify "^{commit}"` 验证基准能够解析为提交。 + +## 远程引用边界 + +只读检查不得自动执行 `git fetch`。如果用户要求基于远程最新状态,先展示远程名称和将要执行的 fetch 命令,取得单独确认后再执行。fetch 完成后重新验证基准,不把 fetch 授权视为创建分支授权。 + +## 创建确认 + +执行前展示: + +- 当前分支和工作区状态; +- 目标分支名称; +- 基准引用及其提交短哈希; +- 是否会携带未提交修改; +- 将执行的唯一创建命令。 + +本地基准使用: + +```text +git switch -c "" "" +``` + +远程跟踪引用使用: + +```text +git switch --no-track -c "" "/" +``` + +只有用户在看到上述最终信息后明确确认,才执行该命令。用户调整名称或基准后必须重新展示并确认。 + +## 创建后验证 + +运行 `git branch --show-current`、`git rev-parse --short HEAD` 和 `git status --short --branch`,确认当前分支、起点和工作区状态。远程基准创建时再用 `git rev-parse --abbrev-ref --symbolic-full-name @{upstream}` 检查没有错误 upstream;命令返回“无 upstream”属于预期结果。 + +本 Skill 到此结束,不执行 push、不设置远程 upstream,也不创建合并请求。失败时报告原始错误和当前仓库状态,不自动重试破坏性替代命令。 diff --git a/plugins/git/skills/branch/agents/openai.yaml b/plugins/git/skills/branch/agents/openai.yaml new file mode 100644 index 0000000..06e884c --- /dev/null +++ b/plugins/git/skills/branch/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "Create Branch" + short_description: "确认名称和基准后安全创建本地 Git 分支" + default_prompt: "使用 $branch 为当前仓库规划并创建一个本地分支,执行前先向我确认。"