From dstoic
Streamlines git commits for praxis-managed repos using CLAUDE.md aliases. Runs recon, proposes conventional messages with human approval gate, then stages and commits. Use for 'commit repo' or similar.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dstoic:commit-reposonnetThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Streamlined commit flow for praxis-managed repos. One human gate only.
Streamlined commit flow for praxis-managed repos. One human gate only.
Resolve <repo-alias> to a git-managed path:
praxis): use CWD (the project root itself)data pathExample CLAUDE.md format:
## Alias Paths
- **nano-vc**: control `/praxis/repos/nano-vc` | data `/home/mat/dev/nano-vc`
- **agent-skills**: control `/praxis/repos/agent-skills` | data `/home/mat/dev/agent-skills`
The data value = the git repo path to commit in.
If alias not found, list available aliases from CLAUDE.md and exit.
$ARGUMENTS first word = repo alias (required)--all flag: stage all modified files before committing (runs git add -A)--yes flag: skip human confirmation gate — auto-approve the commit proposal--all: only commits what's already stagedCRITICAL: Each git command MUST be a separate Bash call. NEVER chain with &&, ||, or ;. This enables auto-approval via permission rules.
Run these as separate sequential Bash calls:
git -C <data-path> statusgit -C <data-path> diff --staged (if no --all flag)
OR git -C <data-path> diff (if --all flag, to show what will be staged)git -C <data-path> log --oneline -5From the recon output:
--all)type(scope): description per CLAUDE.md rulesWhat: bullets + Why: line---
📦 Commit proposal for <alias> (<branch>)
Staged files:
- file1
- file2
Commit message:
type(scope): description
What:
- change 1
- change 2
Why: reason
If --yes flag is set: skip confirmation, proceed directly to step 3.
Otherwise — ⚠️ MANDATORY HUMAN GATE — use AskUserQuestion:
If --all: git -C <data-path> add -A
Run git -C <data-path> commit -m "<message>"
Use HEREDOC for multi-line messages:
git -C <data-path> commit -m "$(cat <<'EOF'
subject line
What:
- change 1
- change 2
Why: reason
EOF
)"
git -C <data-path> log --oneline -1 (auto-approved, verify success)Report: ✅ Committed <short-hash> to <branch> in <alias>
Your project CLAUDE.md must have an ## Alias Paths section with data paths pointing to git repos:
## Alias Paths
- **my-repo**: control `/praxis/repos/my-repo` | data `/path/to/my-repo`
Add auto-approve rules for read-only git commands on each repo path. Example for ~/.claude/settings.json:
"permissions": {
"allow": [
"Bash(git -C /path/to/repo status *)",
"Bash(git -C /path/to/repo status)",
"Bash(git -C /path/to/repo diff *)",
"Bash(git -C /path/to/repo diff)",
"Bash(git -C /path/to/repo log *)"
]
}
This keeps recon (Phase 1) zero-approval. The explicit AskUserQuestion in Phase 3 serves as the single human gate (do NOT rely on Bash permission prompts — they fail open inside skills, see Claude Code bug #18950/#25181).
npx claudepluginhub digital-stoic-org/agent-skills --plugin dstoicCreates conventional git commits via git-agent for staged/unstaged changes. Use on 'commit' requests or /commit, optionally co-authoring with Claude model.
Makes a safe, intentional git commit by staging only intended files, running validation, and writing a conventional commit message. Prevents committing unrelated changes.
Commits all working tree changes with conventional commit messages. Reads git status and diff, stages changes, and commits one logical change per snapshot.