← ClaudeAtlas

squash-commitslisted

Squash unpushed commits into clean, higher-level feat/fix/chore commits that follow the project commit policy. Use when local history has too many small/WIP/fixup commits (common after superhuman or gsd runs), or the user says "squash commits", "squash my commits", "tidy history", "clean up commits", "combine commits before pushing".
nielsmadan/skills · ★ 0 · Code & Development · score 75
Install: claude install-skill nielsmadan/skills
<!-- Generated from https://github.com/nielsmadan/agentic-coding — edits here are overwritten. --> # Squash Commits Combine the unpushed commits on the current branch into the smallest set of clean, self-contained commits, each adhering to the commit policy (`feat`/`fix`/`chore`, **no scopes**, subject only). Superhuman/gsd-style runs leave many superfluous commits — initial work, follow-up fixes, tests, docs — that belong together as one higher-level feature commit. This skill rewrites history, so it **proposes a plan and only proceeds after the user confirms**. It never touches the branch ref until the very last step, and only ever operates on **unpushed** commits. It creates no backup tags or stashes; the original tip is recoverable from the branch reflog after the verified ref move. ## Usage ``` /squash-commits # aggressive feature-level grouping of unpushed commits /squash-commits --conservative # only fold obvious WIP/fixup commits into their parent /squash-commits origin/main # use an explicit base instead of auto-detecting unpushed range ``` ## Hard rules - **Never rewrite pushed commits.** Only squash commits not present on any remote. - **Never reorder commits.** Groups are contiguous runs in original order. Reordering risks conflicts and changes intent. - **The final tree must be byte-identical** to the original tip before the branch is moved. Squashing changes *history*, never *content*. Verify this and abort if it differs. - **R