commit
Commit
Step 1: Require Commit Config
Check if .agents/commit.config.yml exists.
- If exists, continue to step 2
- If not, follow
references/config-setup.mdto create it, then continue
Step 2: Gather Context
Run each command separately:
git diff --staged- Only if step 1 had NO output:
git diff git log --oneline
Step 3: Determine Staging
- If
git diff --stagedhas output -> use as-is (user curated manually) - If empty -> run
git add -Ato stage everything
Step 4: Sync Documentation
- Read
filesfrom.agents/commit.config.yml - Find staged
*.mdfiles not in the config that could be documentation (excludingskills/), detect their update condition, register them - For each tracked file, evaluate whether
update_whenis met by staged changes - Read and update every file whose condition is met
- If new files were registered in step 2, persist the updated config
Step 5: Stage Documentation
git add <updated-doc-files>
Step 6: Generate and Execute Commit
Subject: semantic commit format (feat:, fix:, refactor:, docs:, chore:, test:, ci:, perf:, style:, build:). Lowercase imperative, no period, max 70 chars. Use scope when it adds clarity.
Body: explain why — motivation, trade-offs, decisions. State breaking changes explicitly.
References: issue/ticket refs on their own line (e.g., Closes #142).
Execute with HEREDOC:
git commit -m "$(cat <<'EOF'
feat: subject line describing what changed
Body explaining why this change was made.
Closes #issue (if applicable)
EOF
)"
Step 7: Push
git push -u origin HEAD
Step 8: Pull Request
Only if branch was pushed in step 7.
- Run
git branch— if onmain, stop - Generate PR title and body:
git log <base-branch>..HEAD --oneline git diff <base-branch>...HEAD - Create PR:
gh pr create --title "<title>" --body "$(cat <<'EOF' ## Summary <bullet points from commit analysis> ## Test plan <checklist> EOF )"
Acceptance checklist
- Commit config exists at
.agents/commit.config.yml - Documentation synced with staged changes
- Commit message follows semantic format with body
- Changes pushed to remote
- PR created (if not on main)
More from kvnwolf/devtools
base
Scaffolds a new TypeScript project from scratch. Use when starting a new project, bootstrapping a codebase, or setting up a project from zero.
10unit-testing
Writes unit tests following behavior-driven conventions with vitest. Use when creating tests, adding test coverage, or writing regression tests.
9convex
Provides instructions for working with Convex backend projects. Use when setting up Convex, creating queries/mutations/actions, consuming Convex data from React, defining tables, testing Convex functions, configuring environment variables, or prefetching data in route loaders.
7e2e-testing
Writes end-to-end tests with Playwright Test for full user flow verification. Use when adding, modifying, or removing user flows in an application. Do not use for isolated component behavior — use component-testing instead.
5tanstack-start
Provides instructions for working with TanStack Start projects. Use when setting up, configuring, developing, creating routes, or creating server functions in a TanStack Start application.
5create-skill
Creates or modifies agent skills, including single-workflow and multi-workflow (orchestrator) skills. Use when the user wants to create, write, author, scaffold, edit, update, fix, or refactor a skill, or migrate a skill from single to multi-workflow.
5