Help us improve
Share bugs, ideas, or general feedback.
From dev-workflow
Use when the user says 'commit' or wants to save progress after completing a task. Analyzes uncommitted changes, groups them logically, and commits with conventional format messages.
npx claudepluginhub n0rvyn/indie-toolkit --plugin dev-workflowHow this skill is triggered — by the user, by Claude, or both
Slash command
/dev-workflow:commithaikuThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Trigger this command when:
Analyzes uncommitted git changes, excludes ephemeral files like node_modules or build/, groups by purpose into atomic conventional commits, validates code, and optionally pushes.
Guides systematic git commits: checks staging status, reviews diffs, splits changes into atomic commits, formats conventional messages. Use before PRs or when committing code.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Trigger this command when:
On trigger:
git status and git diff --stat to understand current stateCheck git status
git status to see uncommitted filesgit diff --stat to see summary of changesAnalyze changes
git diff <file> to see exact changes if neededPre-commit audit
Before committing, scan git diff <file> for each file in the group. This is a blocking gate — groups with findings are held back. Only scan added lines (lines starting with + in diff output).
3a. Secrets & credentials
sk-[a-zA-Z0-9]{20,}, ghp_[a-zA-Z0-9]{20,}, gho_[a-zA-Z0-9]{20,}, AKIA[A-Z0-9]{16}, Bearer [a-zA-Z0-9._\-]{20,}password\s*=\s*["'], secret\s*=\s*["'], token\s*=\s*["'] (with non-empty literal values, not placeholders like <YOUR_TOKEN>)-----BEGIN (RSA |EC |OPENSSH )?PRIVATE KEY-----.env, .env.* file being committed (except .env.example)credentials.json, serviceAccountKey.json, *.pem, *.p123b. Debug residue
console.log(, debugger;, debugger .swift files only): standalone print( (not inside a function name like printSomething)breakpoint(), pdb.set_trace(), import pdbTODO, FIXME, HACK, XXX, #if DEBUG blocks3c. Large files
git diff --stat or file size in diff header.gitignoreAudit behavior:
⛔ BLOCKED: <file>:<line> — <reason>
⚠️ NOTE: <file>:<line> — <reason>
Create commit messages
type(scope): descriptionfeat, fix, docs, refactor, style, test, choresync, home, repository)Commit in logical order
CRITICAL: Execute add+commit per group, NOT batch add then batch commit
# CORRECT (per-group cycle):
git add <group1-files> && git commit -m "..."
git add <group2-files> && git commit -m "..."
git add <group3-files> && git commit -m "..."
# WRONG (batch add, then separate commits):
git add <all-files>
git commit -m "..." # <-- commits EVERYTHING staged
git commit -m "..." # <-- nothing left to commit!
Verify
git log --oneline -5 to show recent commitsgit status to confirm working tree is cleanXcode project files: *.xcodeproj directory contents (e.g., project.pbxproj) must always be staged and committed with related changes. Never skip, ignore, or exclude these files; Xcode Cloud relies on them to locate the project.
Merge commits: When merging branches, use default merge message. Do not re-split changes.
Fixup previous commit: If user says "add to last commit" or "amend":
git commit --amend only when explicitly requestedPartial staging: If user wants to commit only some files:
git add <file>Format:
type(scope): brief description
Optional body explaining:
- What changed
- Why it changed
Examples:
fix(sync): use healthKitWorkoutId for stable log bindingfeat(home): auto-refresh on sync successdocs(readme): add setup instructionsrefactor(repository): check persistentModelID before insertingGrouping Rules:
After completing commits, provide:
⛔ BLOCKED items (file, line, reason)⚠️ NOTE itemsgit status shows clean working tree (or only blocked/intentionally unstaged files)