一键导入
commit-messages
Write clear Conventional Commits. Imperative subject, explain why not what, one logical change per commit.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Write clear Conventional Commits. Imperative subject, explain why not what, one logical change per commit.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Karpathy-inspired guidelines: Think before coding, Simplicity first, Surgical changes, Goal-driven execution
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Write an actionable markdown plan before implementation. Bite-sized tasks, exact paths, complete code.
Optimize based on measurement, never guesswork. Profile first, fix the real bottleneck, verify the win.
Refactor code without changing behavior. Small steps, green tests after every change, no mixing with feature work.
Review PRs on GitHub: read diffs, leave inline comments, approve or request changes.
| name | commit-messages |
| description | Write clear Conventional Commits. Imperative subject, explain why not what, one logical change per commit. |
Write commits that a reviewer (and future you) can understand without reading the diff.
<type>(<optional scope>): <imperative subject, <=50 chars>
<body: wrap at ~72 cols. Explain WHY, not WHAT. The diff shows what.>
<optional footer: BREAKING CHANGE:, Refs #123, Co-authored-by:>
feat — a new user-facing capabilityfix — a bug fixrefactor — structure change, no behavior changeperf — performance improvementtest — add or fix tests onlydocs — documentation onlybuild / ci — build system or pipelinechore — tooling, deps, housekeepingRefs #42, Closes #42).BREAKING CHANGE: footer.bash to check git diff --staged — does every hunk belong to this message?git restore --staged <file>) and commit separately.Bad:
update stuff
Good:
fix(parser): handle empty tool-call arguments
DeepSeek streams an empty string for tool calls with no args,
which broke JSON decoding and dropped the call. Treat empty
args as an empty object instead of skipping the call.
Refs #128