拓冰建站拓冰建站
首页 / 资讯中心 / 正文

claude-howto /commit 斜杠命令解析:用动态 Git 上下文自动生成 Conventional Commits 提交

claude-howto /commit 斜杠命令解析用动态 Git 上下文自动生成 Conventional Commits 提交【免费下载链接】claude-howtoA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-howto本文以 claude-howto 仓库中的/commit斜杠命令为对象完整拆解一个自动注入实时仓库状态、再生成规范提交的自定义命令frontmatter 中的精确权限白名单、!command动态上下文注入机制、$ARGUMENTS参数回退策略以及 Conventional Commits 类型约定。读完之后你可以在自己的项目中独立编写并安装一个同类的上下文感知 git 提交命令并理解 Claude Code 自定义命令从解析到执行的完整链路。/commit 命令的完整定义文件在 claude-howto 仓库中该命令被定义为一个独立的 Markdown 文件位于 uk/01-slash-commands/commit.md乌克兰语本地化版本页脚标注最后更新于 2026 年 4 月 9 日对应的英文原版位于 01-slash-commands/commit.md两者结构完全一致。uk 版文件全文如下指令正文为乌克兰语字段说明见下文各节--- allowed-tools: Bash(git add:*), Bash(git status:*), Bash(git commit:*), Bash(git diff:*) argument-hint: [message] description: Створити git-коміт з контекстом --- ## Контекст - Поточний статус git: !git status - Поточний git diff: !git diff HEAD - Поточна гілка: !git branch --show-current - Останні коміти: !git log --oneline -10 ## Ваше завдання На основі наведених вище змін створіть один git-коміт. Якщо повідомлення було передано через аргументи, використовуйте його: $ARGUMENTS Інакше проаналізуйте зміни та створіть відповідне повідомлення коміту відповідно до формату conventional commits: - feat: для нових функцій - fix: для виправлення помилок - docs: для змін документації - refactor: для рефакторингу коду - test: для додавання тестів - chore: для задач обслуговування对应翻译成中文指令语义为## 上下文一节采集四条 git 状态信息## 你的任务一节要求基于上述变更创建一个git 提交若通过参数传入了提交信息$ARGUMENTS则直接使用否则按 Conventional Commits 格式分析变更并生成提交信息。frontmatter元数据与权限白名单命令文件的 YAML frontmatter 声明了三个字段字段本文件中的取值作用allowed-toolsBash(git add:*),Bash(git status:*),Bash(git commit:*),Bash(git diff:*)声明该命令可无需逐次权限询问使用的工具argument-hint[message]命令行自动补全时显示的参数提示descriptionСтворити git-коміт з контекстом创建带上下文的 git 提交帮助 Claude 理解该命令的用途与触发场景这些字段的语义在 uk/01-slash-commands/README.md 的Довідник фронтматеруFrontmatter Reference表中有统一定义allowed-tools控制命令无需权限即可使用的工具默认继承会话级配置argument-hint提供自动补全提示description让 Claude 知道何时使用该命令。有两个值得注意的设计细节没有显式name字段。README 的 frontmatter 表说明name默认取目录名skills 方式或文件名legacy 命令方式。该文件名为commit.md安装目标目录为commit两种方式下命令名都会自然解析为/commit。最小权限白名单。allowed-tools把 git 能力精确切分为add/status/commit/diff四个子命令且刻意不包含git push。从该文件的权限清单可以推断其设计意图是让这条命令只完成本地暂存 提交推送这类远程副作用留给同系列中显式声明了Bash(git push:*)的 /push-all 命令。!command机制动态上下文注入## Контекст上下文一节是这条命令的技术核心包含四条动态上下文动态上下文Shell 命令注入后为模型提供的信息当前 git 状态!git status已修改、已暂存、未跟踪文件的集合当前变更内容!git diff HEAD相对 HEAD 的具体差异内容当前分支!git branch --show-current正在工作的分支名最近提交!git log --oneline -10最近 10 条提交供模型参照项目既有提交风格!command语法的规则定义在 uk/01-slash-commands/README.md 的Dynamic Context with Shell Commands一节使用!command可在提示词发送前执行 bash 命令并把其输出内联进提示词。也就是说调用/commit的那一刻这四条 git 命令的真实输出会先被替换进模板对应位置整个提示词才发送给模型——命令明确依赖命令执行时的实时状态而不是模型对工作区的猜测。README 的Best Practices表格也给出了这一正反对照用!前缀获取动态上下文而不是assume Claude knows current state假设 Claude 知道当前状态。一条自定义命令从输入到响应的完整生命周期摘自该 README 的 Command Lifecycle 时序图以/commit为例即先按位置查找命令文件再解析 frontmatter然后执行所有!command替换、替换$ARGUMENTS最后才把组装好的提示词交给模型处理。这也解释了为什么动态上下文必须写在命令文件里——它发生在提示词组装阶段先于模型的任何工具调用。任务定义用户参数优先Conventional Commits 兜底## Ваше завдання你的任务一节定义了清晰的三级策略单次提交约束第一条指令要求基于上述变更创建一个git 提交create a single git commit即无论变更跨多少个文件都收敛为一次提交避免模型拆散提交历史。用户参数优先若调用时通过参数传入了消息则直接使用$ARGUMENTS的内容作为提交信息跳过自动生成。规范格式兜底未提供参数时分析注入的动态上下文中的变更按文件声明的六种 Conventional Commits 类型生成提交信息前缀适用场景feat:新功能fix:缺陷修复docs:文档变更refactor:代码重构test:新增测试chore:维护类任务两种典型用法/commit # 不传参数由命令自动生成规范消息 /commit fix: handle null response # 传入完整消息作为 $ARGUMENTS 直接采用frontmatter 中的argument-hint: [message]与之配套用户输入/commit时自动补全会显示[message]占位提示告知可传入一个可选消息参数。$ARGUMENTS的替换机制同样定义在 README 的 Arguments 一节命令可通过$ARGUMENTS接收完整参数字符串或通过$0、$1等接收单个参数。/commit选择整串占位符正契合一条完整提交消息的场景。作为对比同目录的 /push-all 使用了更完整的十类型 Conventional Commits 集合在六种之外补充style、perf、build、ci说明类型范围是可按项目习惯自行裁剪的。安装技能与旧版命令两种位置自定义斜杠命令已并入 skills 体系。按 uk/01-slash-commands/README.md 的Custom Commands (Now Skills)一节同一个命令文件有两种安装位置方式位置状态技能推荐.claude/skills/name/SKILL.md当前标准旧版命令Legacy.claude/commands/name.md仍然可用当技能与命令同名时技能优先例如.claude/commands/commit.md与.claude/skills/commit/SKILL.md同时存在时使用技能版本。在自己的项目中的安装方式以仓库英文原版为例uk 版同理# 方式一作为技能安装推荐 mkdir -p .claude/skills/commit cp 01-slash-commands/commit.md .claude/skills/commit/SKILL.md # 方式二作为 legacy 命令安装 mkdir -p .claude/commands cp 01-slash-commands/commit.md .claude/commands/commit.mdREADME 的官方安装示例是用 for 循环批量安装optimize、pr、commit三条命令上面对应的就是其中commit的等价步骤。安装完成后在 Claude Code 会话中输入/即可在命令列表中看到/commit。实践要点与故障排查从这条命令中可以提炼的编写范式上下文与任务分离文件只分两节——## Контекст负责通过!command采集实时数据## Ваше завдання负责定义行为规范职责分明便于维护与本地化最小权限allowed-tools按 git 子命令逐一声明且不含push把远程副作用排除在命令能力之外参照既有惯例git log --oneline -10让模型看到项目现有提交风格生成的消息更贴合团队习惯——/push-all 同样通过读取最近提交来对齐消息风格。故障排查摘自 README 的 Troubleshooting 一节命令未找到确认文件位于.claude/skills/name/SKILL.md或.claude/commands/name.md核对 frontmatter 的name字段本文件省略该字段时以目录名/文件名为准重启 Claude Code 会话运行/help查看当前可用命令列表。命令行为不符合预期在命令文件中补充更具体的指令与示例如果命令需要执行 git 操作检查allowed-tools是否覆盖了所需子命令先用简单输入验证基础链路。同目录相关命令可组合成完整的 git 工作流/pr创建 Pull Request 前的检查清单包括 lint、测试、git diff HEAD审查、conventional 提交与 PR 描述生成/push-all暂存全部变更、提交并推送内置密钥/API 键/大文件/构建产物四类安全检查且要求显式输入yes才继续。/commit承担其中本地、单次、不推送的一环三者组合即可覆盖从本地提交到远程 PR 的常见流程。【免费下载链接】claude-howtoA visual, example-driven guide to Claude Code — from basic concepts to advanced agents, with copy-paste templates that bring immediate value.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-howto创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门