skills/commit/SKILL.md
Creates a conventional-commit message with embedded generation metadata (model, plan file, unplanned changes) in an HTML comment after implementing a plan. Use this skill whenever the user says "commit this", "git commit", "make a commit", or asks to commit changes after completing a plan in plan mode.
npx skillsauth add jburns24/skills commitInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Creates a structured git commit message that includes embedded generation metadata — the model used, the full contents of the driving plan file, and any changes that deviated from the plan. This provides traceability between what was planned and what was actually shipped.
Trigger this skill when the user asks to commit staged or unstaged changes, especially after plan-mode implementation. Key phrases: "commit this", "git commit", "make a commit", "commit the changes".
Run git diff --cached --stat and git diff --cached. If nothing is staged, stop and tell the user — do not proceed with an empty commit.
Check in priority order:
~/.claude/plans/<name>.md).md in ~/.claude/plans/ via:
ls -lt ~/.claude/plans/ | grep '\.md$' | head -1 | awk '{print $NF}'
plan_file = nullRead the full file contents as plan_contents. On any read failure, set plan_file = null and plan_contents = null.
Read from the system context in the current conversation:
"claude-sonnet-4-6""claude-opus-4-6""claude-haiku-4-5-20251001"Default to "claude-sonnet-4-6" if uncertain.
Use conventional commit format: <type>: <short description under 72 chars> followed by 2–6 bullet points describing logical changes.
Valid types: feat, fix, docs, refactor, test, chore, build, ci, style, perf
Compare staged files against files named in the plan. An unplanned change is any staged file not described in the plan, or any change that goes beyond what the plan described.
Format each as: "<filepath>: <brief description>"
Use an empty array if all changes match the plan or if the plan is unavailable.
Construct the metadata block only if plan_file is not null. The block consists of two parts placed together with no blank line between them:
A human-readable notice line so readers see that metadata is present even in UIs that hide HTML comments:
Generated with Claude Code. This commit contains embedded generation metadata (model, plan, unplanned changes). To read it: git log --format="%B" <hash> | less or use the find-commit skill: https://github.com/jburns24/skills/find-commit
Immediately followed (no blank line) by the HTML comment:
<!-- generation-metadata
{
"model": "<model>",
"plan_file": "<absolute tilde-expanded path>",
"plan_contents": "<full plan text escaped as JSON string>",
"unplanned_changes": ["<desc>", ...]
}
-->
JSON-escape plan_contents: replace " → \", newlines → \n. Use the full absolute path (no ~ shorthand) for plan_file.
Show the drafted message and ask the user for confirmation before committing if any of these are true:
The full commit message structure is:
<type>: <description>
- <bullet 1>
- <bullet 2>
Generated with Claude Code. This commit contains embedded generation metadata (model, plan, unplanned changes). To read it: git log --format="%B" <hash> | less or use the find-commit skill: https://github.com/jburns24/skills/find-commit
<!-- generation-metadata
{ ... }
-->
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Use the 'EOF' (quoted) heredoc delimiter to prevent shell interpolation of special characters inside the message body:
git commit -m "$(cat <<'EOF'
feat: your message here
- bullet one
- bullet two
Generated with Claude Code. This commit contains embedded generation metadata (model, plan, unplanned changes). To read it: git log --format="%B" <hash> | less or use the find-commit skill: https://github.com/jburns24/skills/find-commit
<!-- generation-metadata
{
"model": "claude-sonnet-4-6",
"plan_file": "/Users/jburns/.claude/plans/example.md",
"plan_contents": "...",
"unplanned_changes": []
}
-->
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
EOF
)"
Omit both the notice line and the HTML comment block entirely when plan_file is null.
Run git log --oneline -1 and git status. Report the commit hash to the user. On failure, report the error clearly — do not retry automatically.
Example 1 — Plan-driven commit with no unplanned changes:
feat: migrate to custom domain temporal-bootcamp.liatr.io
- Update docusaurus.config.ts url/baseUrl for custom domain
- Add static/CNAME for GitHub Pages custom domain routing
- Update CLAUDE.md architecture section with new domain
Generated with Claude Code. This commit contains embedded generation metadata (model, plan, unplanned changes). To read it: git log --format="%B" <hash> | less or use the find-commit skill: https://github.com/jburns24/skills/find-commit
<!-- generation-metadata
{
"model": "claude-sonnet-4-6",
"plan_file": "/Users/jburns/.claude/plans/mighty-coalescing-island.md",
"plan_contents": "# Plan: Custom Domain...\n\n...",
"unplanned_changes": []
}
-->
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
Example 2 — Unplanned change detected (agent confirms with user first):
"unplanned_changes": [
"src/pages/404.tsx: fixed hardcoded /liatrio-temporal-bootcamp/ paths to / (build failure discovered during verification)"
]
Example 3 — No plan file found (omit HTML comment block entirely):
chore: update dependency versions
- Bump lodash from 4.17.19 to 4.17.21
Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
data-ai
Orchestrate a competitive multi-agent PRD synthesis arena. Use when the user wants to synthesize, combine, or merge multiple PRDs into a single master PRD using competitive multi-agent workflow. Also triggers on: "prd arena", "prd competition", "compete PRDs", or when agents should independently draft competing PRDs from source materials and have them judged. Spawns 4 worker agents that create competing PRDs, then 3 manager agents that judge, debate, and synthesize into a final master PRD.md.
tools
One-sentence description of what this skill does.
testing
Searches git history for commits that contain generation-metadata blocks (created by the commit skill) and returns the plan intent, model, and unplanned changes for each match. Use this skill whenever an agent or user needs to understand why a change was made, trace a feature back to its plan, audit planned vs. actual changes, or find commits related to a topic. Triggers include "why was this changed", "find commits related to", "what plan drove this", "search commit history", "show me instrumented commits", "what was the intent behind", or any question about the reasoning or plan behind past changes.
development
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.