atomic-semantic-commit
Split a messy working tree into small commits, one purpose and one context per commit, with semantic commit messages (feat, fix, docs, style, refactor, test…
Skill by pahlevikun
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/pahlevikun-atomic-semantic-commit
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing, writing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/atomic-semantic-commit
Tools it pre-approves 2
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Bash(git:*)Bash(node:*)
What's inside
- Skill name
atomic-semantic-commit- Description
- Split a messy working tree into small commits, one purpose and one context per commit, with semantic commit messages (feat, fix, docs, style, refactor, test, chore) written in Simplified Technical English. Use when the user asks to commit, split commits, organize changes, clean up history or write a commit message, or when unrelated changes are staged together. Commits only when asked.
- License
- MIT
- Allowed tools
- Bash(git:*), Bash(node:*)
- Metadata
- version: 2.0.0
- Instructions
- 119 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves some shell commands
Files (7)
- SKILL.md
- advanced.md · references/
- semantic-types.md · references/
- ste-messages.md · references/
- check-message.mjs · scripts/
- group-changes.mjs · scripts/
- commit-plan.md · templates/
SKILL.md (first lines)
# Atomic commits One commit has one purpose and one context. The message is a semantic commit written in Simplified Technical English (STE): short, exact, and easy to scan. Uses semantic commit types, STE message rules, a guide for descriptive subjects and bodies, and two helper scripts. ## Rules 1. **One purpose per commit.** If the subject needs the word "and", split the commit. 2. **One context per commit.** One module, package or layer. Put the tests, types and docs for a change in the same commit as the change. 3. **Every commit works alone.** It builds, and the tests for its context pass. 4. **Prepare first, change second.** Refactor in one commit. Change behavior in the next. 5. **Keep formatting apart.** A style-only change gets its own commit. 6. **Describe the effect.** The subject says what changed for the reader and under which condition. `add` plus a name is not enough. The body says why. 7. **Commit only when the user asks.** Do not push unless asked. Add no trailers (`Co-authored-by`, `Generated with`) unless the user's rule requires them. ## Workflow 1. **Look.** Run `git status --short` and `git diff --stat`. Then run `node scripts/group-changes.mjs` for a starting grouping. It is a hint, not a plan. 2. **Plan.** Fill in [templates/commit-plan.md](templates/commit-plan.md): the commits in order, each with `type(scope)`, a subject, its files or hunks, and how to verify it. Show the plan before you commit if it has more than two commits or the user asked to see it first. 3. **Stage exactly.** Use `git add <paths>`, or `git add -p` when one file holds two purposes. Run `git diff --cached --stat`. The staged files must match the plan. 4. **Verify.** Run the focused test for the staged context. If the test needs unstaged changes, say so and stage them or split differently. 5. **Write the message.** First read the staged diff and answer three questions: what is different for the user or caller, why was it needed, and under which condition does it apply. Write the subject from the effect and the condition. Write the body from the reason (see [descriptive-messages.md](references/descriptive-messages.md)). Then follow the format and the STE rules below. Run `node scripts/check-message.mjs --diff-lines=<changed lines> "<message>"` and fix every error and every warning you agree with. 6. **Commit.** Run `git commit -m "<subject>" -m "<body>"`. Write a body for any change of 40 lines or more, a bug fix, a migration, a security fix, a revert or a breaking change. 7. **Repeat** from step 3 until `git status` shows a clean tree, or only the changes the user wants to keep. 8. **Report.** Run `git log --oneline -n <count>` and show the new commits. ## Message format ``` <type>(<scope>): <subject> <body, only when needed> ``` | Type | Use it for | |---|---| | `feat` | A new feature for the user | | `fix` | A bug fix for the user | | `docs` | A change to the documentation | | `style` | Formatting, missing semicolons, whitespace. No production code change | | `refactor` | A change to production code that does not change behavior | | `test` | Adding or changing tests. No production code change | | `chore` | Maintenance, tooling, dependencies. No production code change | These seven are the base. Use `perf`, `build`, `ci` or `revert` only when the repository already uses them. How to choose a type, how to name a scope, and breaking changes: [semantic-types.md](references/semantic-types.md). ## Write the message in STE - **Subject:** imperative, present tense: `add`, `fix`, `remove`. Not `added`, `adds`, `adding`. - **Effect, not object.** Pick the verb that names the effect (`reject`, `retry`, `cache`, `show`, `cap`, `stop`), and add the condition when it matters. `feat: add retry` becomes `feat(sync): retry upload up to 3 times on timeout`. Use `add` only when you also say what it is for. The verb ladder and 12 rewrites: [descriptive-messages.md](references/descriptive-messages.md). - **Length:** aim for 60 characters. The hard limit is 72. No period at the end. Lowercase after the colon, unless the repository does otherwise. - **One idea.** Name the thing that changed, the action and the condition. Do not list files. - **Common words, one meaning.** Use `remove`, `fix`, `rename`, `move`, `replace`, `extract` and the verbs in the ladder. Avoid `improve`, `enhance`, `update stuff`, `various`, `misc`, `minor changes`. - **Body:** explain why, not what. Use active voice. Use 20 words or fewer per sentence. One topic per paragraph. Wrap at 72 characters. - **Punctuation:** no em dash, no en dash, no semicolon. Use a period or a colon. - **Exact names.** Keep code, identifiers, commands and error text unchanged. Full rules, a vocabulary list and before and after examples: [ste-messages.md](references/ste-messages.md). The wider STE style is in [ste-style.md](../../engineering/output-savers/concise/references/ste-style.md), and the commit discipline is in [commit.md](../../engineering/output-savers/concise/references/commit.md). ## Order of commits Dependency order wins. A commit that another commit needs comes first. Otherwise use this order: 1. `build` or `chore`: a new dependency or tool that later commits use. 2. `refactor`: preparation that does not change behavior. 3. `fix`: independent corrections. 4. `feat`: the main change, with its tests. 5. `test`: tests that cover code that already exists. 6. `docs`: documentation. Do not put a test before the code it tests. That commit would fail on its own. ## Example Changes: a login page, an avatar bug, a README note, and new tests for the login page. ``` fix(avatar): pick the source size from the device pixel ratio feat(login): reject sign-in with an empty password # includes its tests docs(readme): explain how to set up the login provider ``` The login tests go with the login page, so the page commit passes on its own. The avatar fix and the README note do not depend on it, so they are separate. With a body, when the reason is not obvious: ``` fix(avatar): pick the source size from the device pixel ratio The image used the CSS pixel size. Retina screens showed it blurry. Use the device pixel ratio to pick the source size. Checked on a 2x and a 3x simulator. ``` ## Language Write in English by default. If the repository history is in another language, write in that language and keep the type words in English. Then use `polyglot-copywriter`: its `references/simple-prose.md` for the vocabulary and grammar bar, and its language pack for the register. ## Boundaries - Do not rewrite commits that are already pushed. No force push. - Interactive rebase is not available in this environment. For unpublished commits, and only if the user asks, use `git commit --fixup <sha>` and then `GIT_SEQUENCE_EDITOR=true git rebase -i --autosquash <base>`. - Do not use `git worktree`. Work in the current checkout. - Do not stage files the user did not mean to commit (`.env`, build output, secrets). Name them and stop. - More advanced patterns: [advanced.md](references/advanced.md). ## Related skills - `verify`: prove the gates pass before you commit. - `write-mr-description`: the commits are ready and you need the MR. - `code-review`: review the diff before you open the MR. - `polyglot-copywriter`: polish commit wording for people. ## Done when - Every change is in a commit, or the user said to leave it. - Each commit has one purpose and one context, and passes its own tests.
From pahlevikun/levistack, MIT.
More from pahlevikun/levistack
- 0.570score
output-savers
pahlevikun
Engineering principles plus plain STE writing in one skill.
SkillAFreshness: AClaude Code +9 - 0.570score
convert-as-skill
pahlevikun
Convert existing material into a skill, or merge existing skills into one.
SkillAFreshness: AClaude Code +9 - 0.570score
create-agent
pahlevikun
Create, audit, test or improve subagents (agents/*.md for Claude Code and Cursor), including prompts, tool and model choice, multi-agent orchestration and…
SkillAFreshness: AClaude Code +9 - 0.570score
create-agents-md
pahlevikun
Create, audit or refresh AGENTS.md files: the repo root, nested package files, and the user-level global file, for Claude Code, Cursor and Codex.
SkillAFreshness: AClaude Code +9 - 0.570score
create-command
pahlevikun
Create, audit or improve slash commands (commands/*.md, .claude/commands, .cursor/commands): saved prompts you run as /name, with arguments and tool…
SkillAFreshness: AClaude Code +9 - 0.570score
create-hook
pahlevikun
Create, wire up, test and debug agent hooks: Claude Code settings.json or plugin hooks, Cursor hooks.json, or a shared hooks/ tree, with working recipes.
SkillAFreshness: AClaude Code +9 - 0.570score
create-rule
pahlevikun
Create, audit or tighten persistent rules for coding agents: .claude/rules/*.md, .cursor/rules/*.mdc, a catalog rules/ tree, CLAUDE.md or AGENTS.md.
SkillAFreshness: AClaude Code +9 - 0.570score
create-skill
pahlevikun
Create, audit, grow or repair agent skills (a folder with SKILL.md) for Claude Code, Cursor, Codex and the skills CLI, including skills that write or run plans.
SkillAFreshness: AClaude Code +9 - 0.570score
super-architecture
pahlevikun
Detect, choose, build, evaluate, migrate and document software architecture.
SkillAFreshness: AClaude Code +9 - 0.570score
super-caching
pahlevikun
Super caching: domain router for web (browser, CDN, service worker, HTTP Cache-Control, BFF/API route cache), mobile (on-device, offline, image cache…
SkillAFreshness: AClaude Code +9 - 0.570score
super-protobuf
pahlevikun
Protocol Buffers (proto3) design, buf.yaml/buf.gen.yaml, Connect and gRPC services, protovalidate, lint and breaking checks, schema evolution, mixed-version…
SkillAFreshness: AClaude Code +9 - 0.570score
super-tech-blueprint
pahlevikun
Choose or generate a target technology stack: compare frameworks with TCO, security and ecosystem scoring, plan a migration, or write a blueprint for a new or…
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 5, 2026 (23 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 2.0.0
- License
- MIT
- Repository
- github.com/pahlevikun/levistack
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from pahlevikun
- 0.570score
convert-as-skill
pahlevikun
Convert existing material into a skill, or merge existing skills into one.
SkillAFreshness: AClaude Code +9 - 0.570score
create-agent
pahlevikun
Create, audit, test or improve subagents (agents/*.md for Claude Code and Cursor), including prompts, tool and model choice, multi-agent orchestration and…
SkillAFreshness: AClaude Code +9 - 0.570score
create-agents-md
pahlevikun
Create, audit or refresh AGENTS.md files: the repo root, nested package files, and the user-level global file, for Claude Code, Cursor and Codex.
SkillAFreshness: AClaude Code +9 - 0.570score
create-command
pahlevikun
Create, audit or improve slash commands (commands/*.md, .claude/commands, .cursor/commands): saved prompts you run as /name, with arguments and tool…
SkillAFreshness: AClaude Code +9 - 0.570score
create-hook
pahlevikun
Create, wire up, test and debug agent hooks: Claude Code settings.json or plugin hooks, Cursor hooks.json, or a shared hooks/ tree, with working recipes.
SkillAFreshness: AClaude Code +9 - 0.570score
create-rule
pahlevikun
Create, audit or tighten persistent rules for coding agents: .claude/rules/*.md, .cursor/rules/*.mdc, a catalog rules/ tree, CLAUDE.md or AGENTS.md.
SkillAFreshness: AClaude Code +9
Cite this page
atomic-semantic-commit skill. Agent Mart. https://agentmart.dev/skills/pahlevikun-atomic-semantic-commit (last updated 2026-10-24)