commit
Smart git commit with conventional commits, OpenSpec awareness, and intelligent splitting for GitHub
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Smart git commit with conventional commits, OpenSpec awareness, and intelligent splitting for GitHub
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Read and write the second brain — a git-backed Obsidian vault at ~/SourceRoot/brain (PARA structure + a top-level wiki/ knowledge tree). Use whenever the user mentions "brain", "second brain", "knowledge base", "note", "remember", "look up", "find note", "capture", "wiki", or "okf". Also use for any request to save, retrieve, or organize personal knowledge that belongs in the brain rather than in a repo-specific doc.
Write, draft, and polish prose through a human-owned 7-step pipeline. Use whenever the user says "distill", "write article", "draft", "summarize into", "create content", "synthesize", or "publish". Also use for any task where the output is a piece of long-form writing — the pipeline keeps prose quality out of coding sessions.
RETIRED — manage the (now decommissioned) per-machine mlx-audio TTS/STT stack; TTS/STT moved to the cloud audio-gateway (VPS)
Operate the Mac mini remote dev host — connecting from the MacBook over mosh or herdr --remote, running and reattaching many Claude Code agents, herdr workspaces/panes and its socket API, claude --bg durable daemons, the Uptime Kuma readiness heartbeat, and the failure modes specific to a headless always-on Mac. Use when the user mentions herdr, mosh, the mini, "remote dev", "dev host", detaching or reattaching agents, "did my agent survive", sessions dying on lid-close, or asks how to reach a dev server running on the mini.
Manage the personal image stack — public CDN uploads/transform URLs and the private image-share layer. Use whenever an image needs a URL (public or private) for an article, blog post, vault note, README, OpenGraph tag, or a one-off share; or when the user says "upload this image", "share this image", "private image", "publish image", "host this screenshot", "get me a CDN link", "resize this", mentions "image-share", or asks where an image lives.
Bidirectionally sync ALL git repos across two machines — this MacBook and the always-on Mac mini — over SSH, using GitHub/GitLab as the transport. Commits and pushes uncommitted work on both sides, then rebases/fast-forwards each so they converge, with per-repo subagents resolving rebases and merge conflicts. This is a MULTI-repo, TWO-machine operation — distinct from /commit, /ship, or /git-cleanup, which act on a single repo. Use whenever the user wants to sync their machines/repos, "catch up" the laptop to the Mac mini or push laptop work back, is about to travel or just got back, has uncommitted work scattered across many repos, or wants to reconcile branches that diverged between the two machines. Trigger even on a bare "sync", "sync my machines", or "get my repos up to date".
| name | commit |
| description | Smart git commit with conventional commits, OpenSpec awareness, and intelligent splitting for GitHub |
Generate conventional commit messages with intelligent analysis of changes, OpenSpec awareness, and automatic splitting when appropriate.
Platform: GitHub (SourceRoot projects)
--amend - Amend last commit + force push (for follow-up fixes)--split - Force splitting analysis for multiple commits--no-split - Force single commit--dry-run - Preview only, no executionSourceRoot personal projects do not use ticket numbers. All scopes are module/component names (e.g. auth, booking, basalt-ui) — never ticket IDs.
If a SourceRoot scope ever needs a ticket reference (e.g. cross-linking an upstream issue), put it in the body as plain text — not in the scope, not as Refs: footer. The Refs: convention is for ticketed IuRoot work only.
OpenSpec context (if .openspec/changes/ directory exists):
Special Handling:
basalt-ui package changes → ALWAYS separate commit(s) (NPM published)Analyze git changes for commit preparation:
Run git status to see overall state
Run git diff --cached --stat for staged files overview
Run git diff --cached for full staged diff content
If unstaged changes exist, run git diff to understand full context
Check for OpenSpec context (if .openspec/changes/ directory exists):
.openspec/changes/ for active specificationsAnalyze the changes:
Evaluate splitting need:
Based on analysis and options, decide:
Amend Commit (when --amend passed):
Single Commit (default when):
--no-splitMultiple Commits (when):
--split--amend)Use case: Small fixes after CodeRabbit/SonarQube feedback on an open PR.
Requirements:
Execution:
# Stage changes
git add <files>
# Amend the previous commit (keep message)
git commit --amend --no-edit
# Force push to update PR
git push --force-with-lease
When NOT to use amend:
Format (Conventional Commits):
<type>(<scope>): <subject>
<body>
<footer>
Rules:
BREAKING CHANGE: if applicable. No Refs: footer — SourceRoot has no ticket trackerCRITICAL: NO AI ATTRIBUTION
Co-Authored-By: Claude... or similarGenerated with Claude Code footerFor single commit:
git commit -m "$(cat <<'EOF'
<message>
EOF
)"
git log -1 resultFor multiple commits:
git reset HEAD
c. Stage specific files: git add <files>
d. Show commit message preview
e. Execute commit on confirmation
f. Move to next commitgit log --oneline -n <count> resultAfter committing:
git status to confirm clean state (or show remaining changes)After successful commit, check branch state:
# Get current branch
current_branch=$(git branch --show-current)
# Get default branch
default_branch=$(git remote show origin | grep "HEAD branch" | cut -d: -f2 | xargs)
# Detect if in worktree
in_worktree=false
if [ "$(git rev-parse --git-common-dir)" != "$(git rev-parse --git-dir)" ]; then
in_worktree=true
fi
# Check if on feature branch and ahead of default
if [[ "$current_branch" != "$default_branch" ]]; then
commits_ahead=$(git rev-list --count origin/$default_branch..$current_branch 2>/dev/null || echo 0)
fi
PR Suggestion Logic:
commits_ahead >= 3 → Suggest:
Branch '$current_branch' is $commits_ahead commits ahead of $default_branch.
Consider '/git-cleanup' to group commits before creating a PR.
Run '/git-cleanup' or '/pr create'?
commits_ahead == 1 or 2 → Suggest:
Branch '$current_branch' is $commits_ahead commit(s) ahead of $default_branch.
Run '/pr create' to open a PR?
Example output:
Commit created successfully.
Branch 'feat/user-auth' is 3 commits ahead of main.
📂 Working in worktree
Run `/pr create` to create a PR?
When basalt-ui package files are detected:
packages/basalt-ui/ or @basalt-uifeat(basalt-ui): ... or appropriate typeFeature with module scope:
feat(auth): add refresh token rotation
Implement automatic token refresh when access token expires.
Tokens are rotated on each refresh to prevent replay attacks.
- Add TokenRotationService with configurable intervals
- Update AuthMiddleware to handle expired tokens gracefully
- Store refresh token family for revocation tracking
Bug fix:
fix(api): handle null response from external service
External payment API occasionally returns null on timeout.
Previously caused unhandled exception in OrderService.
basalt-ui component (breaking change):
feat(basalt-ui): add DateRangePicker component
New compound component for date range selection.
Supports presets, custom ranges, and timezone awareness.
BREAKING CHANGE: DatePicker prop `range` removed, use DateRangePicker instead
Refactoring:
refactor(booking): extract validation logic to dedicated service
Reduces BookingService complexity from 450 to 180 lines.
Validation rules now testable in isolation.
Repo-wide change (no scope):
chore: bump dependency lockfile
Routine `npm update` to pick up patch versions.
No code changes; nothing semver-major.
When --dry-run is passed:
git add or show unstaged changes.openspec/changes/*/proposal.md for context (if directory exists)--no-verify/pr: Suggests PR creation after commit