commit-message

Guidance for writing Git commit messages using Conventional Commits, a common format such as fix, feat, or docs followed by a short description. It focuses on explaining why a change was made.

In plain words
What is it for?
Writing commit titles and descriptions, choosing commit types and scopes, documenting constraints, and deciding when changes should be separate commits.
Why use it?
It makes project history easier to understand, review, search, and safely split or undo later.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/pingfanfan/hello-dsh/commit-message
Any agent
npx skills add pingfanfan/hello-dsh --skill commit-message
Clone the repo
git clone --depth 1 https://github.com/pingfanfan/hello-dsh

Made for: Claude Code, Codex.

Per session 43 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 912 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00043 $0.00912
Opus 5 $0.00022 $0.00456
Sonnet 5 $0.00009 $0.00182
Haiku 4.5 $0.00004 $0.00091

Measured 2d ago against content hash 0a8891f56da9, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

commit-message scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

examples/skills/commit-message/SKILL.md · 107 lines

What it actually says

写提交信息

代码回答"改了什么",提交信息回答"为什么改"。

复述 diff 的提交信息是浪费——读的人能看到 diff。真正有价值的是那些从代码里看不出来的东西:动机、约束、被否决的方案。

格式

<类型>(<范围>): <一句话概括>

<为什么需要这个改动>

<可选:影响范围、注意事项>

类型:

类型 用于
feat 新功能
fix 修复缺陷
refactor 不改变行为的重构
perf 性能优化
test 只动测试
docs 只动文档
build 构建、依赖、工具链
chore 杂项,不影响源码行为

范围是可选的模块名,用项目里已有的叫法,不要自创。

标题行

  • 祈使句:「修复登录超时」不是「修复了登录超时」
  • 不超过 50 字,一行说完
  • 末尾不加句号
  • 说清影响,不说实现细节

对照:

✗ fix(auth): 修改了 token.ts 里的过期判断逻辑
✓ fix(auth): 修复 token 在时区偏移下提前失效

✗ feat: 加了个新方法
✓ feat(export): 支持导出为 CSV

正文

这里是提交信息真正的价值所在。 回答这些问题里相关的那些:

  • 为什么需要这个改动?触发它的是什么问题?
  • 为什么选这个方案?有没有更直接的方案被否决了,为什么?
  • 有什么副作用或限制是后来人需要知道的?
  • 有没有关联的 issue、讨论、事故?

举例:

fix(session): 会话恢复时跳过已失效的工具调用记录

历史会话里可能包含已经被移除的工具的调用记录。恢复时直接重放
会触发 UNKNOWN_TOOL,导致整个会话无法打开。

改为在投影阶段过滤掉找不到定义的工具记录,保留其余上下文。
不做数据迁移,因为旧记录仍然是有效的历史,只是不再可执行。

最后那句「不做数据迁移,因为……」是这条提交信息里最有价值的部分——它挡住了后来人重复问同一个问题。

一次提交只做一件事

如果标题里出现「以及」「顺便」「同时」,说明该拆了。

拆分依据:能不能单独回退? 不能单独回退的改动才应该在同一个提交里。

典型该拆的情况:

  • 修复 + 重构 → 拆开,否则回退修复会连带回退重构
  • 功能 + 格式化 → 拆开,否则 diff 里全是空白变化
  • 多个不相关的修复 → 拆开

Breaking change

破坏兼容性时必须显式标注:

feat(api)!: 移除 legacy 认证方式

BREAKING CHANGE: 使用 X-Auth-Token 的客户端需要迁移到 Authorization
头。迁移说明见 docs/migration/auth.md。

类型后加 !,正文里用 BREAKING CHANGE: 说明迁移方法——只说"不兼容了"没有用。

不要做的事

  • 不要写「更新代码」「修复 bug」「优化」这类没有信息量的标题
  • 不要在正文里逐行复述 diff
  • 不要把调试过程写进去——写结论,不写心路历程
  • 不要留下「临时提交」「稍后修复」而不说明期限和条件
Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 107 lines · 43 tokens per session scan A 0a8891f56da9

Subscribe to this mod's changes

commit-message is a skill published in the GitHub repository pingfanfan/hello-dsh (86 stars, last pushed 18d ago), licensed MIT. It adds 43 tokens to every session and 912 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

dsh-plugin-guide

Use when developing, reviewing, packaging, debugging, or answering questions about DeepSeek Harness (DSH) plugins — the plugin-based agent harness on vendored Cordis. Applies the official plugin-development constraints (plugin contract, cordis.yml layers, services/events/effects, tool DSL, bundles/profiles) backed by…

PerryLink/dsh-plugin-guide · 76 tokens

wayfinder

把一个巨大的工作块(超过单个 agent 会话所能承载)规划为 issue tracker 上的一张共享决策 ticket 地图,并逐个解决这些 tickets,直到通往目的地的路线清晰可见。.

gongyijie85/mattpocock-skills-dsh-zh · 54 tokens

teach

在当前工作区内教会用户一项新技能或一个新概念。.

gongyijie85/mattpocock-skills-dsh-zh · 20 tokens

dsh-doc-standards

Use when writing, moving, reviewing, or auditing documentation in the deepseek-harness repo — choosing hierarchy and detail, separating tutorials from references, checking tutorial progression, trimming doc slop, responding to a verify-doc-budgets failure, or requests like "improve the docs", "audit the docs", "where…

WZZNNE/DSH-CyberWorkStation · 84 tokens

teach

Teach the user a new skill or concept, within this workspace.

gongyijie85/mattpocock-skills-dsh · 15 tokens

dsh-web-release

Release and publish the dsh-web monorepo (DSH Web GUI plugin family + skin collection) — bump all packages to one unified version, commit and tag (tags are cut from main after dev integration; dev is the integration branch), push the vX.Y.Z tag that triggers the GitHub Actions publish pipeline, and verify the npm…

zhu1090093659/dsh-web · 151 tokens