From arc
Commits and optionally pushes changes by auto-splitting into atomic commits grouped by domain like features, tests, docs, and config. Use on commit/push/save requests or after implementation.
npx claudepluginhub howells/arc --plugin arcThis skill uses the workspace's default tool permissions.
<arc_runtime>
Provides Ktor server patterns for routing DSL, plugins (auth, CORS, serialization), Koin DI, WebSockets, services, and testApplication testing.
Conducts multi-source web research with firecrawl and exa MCPs: searches, scrapes pages, synthesizes cited reports. For deep dives, competitive analysis, tech evaluations, or due diligence.
Provides demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation for multi-location retailers managing 300-800 SKUs.
<arc_runtime> Arc-owned files live under the Arc install root for full-runtime installs.
Set ${ARC_ROOT} to that root and use ${ARC_ROOT}/... for Arc bundle files such as
references/, disciplines/, agents/, templates/, scripts/, and rules/.
Project-local files stay relative to the user's repository. </arc_runtime>
<progress_context>
Use Read tool: docs/arc/progress.md (first 50 lines)
Check recent work context to inform commit message writing. </progress_context>
Commit and push changes, intelligently splitting into separate commits when changes span multiple domains.
Usage:
/arc:commit - Auto-analyze and commit (may create multiple commits)/arc:commit push - Commit and push$ARGUMENTS will be either empty or "push".
Status:
!`git status --porcelain 2>/dev/null || echo "(no changes)"`
Changes summary:
!`git diff --stat 2>/dev/null | head -20 || echo "(no diff)"`
Recent commits (for style reference):
!`git log --oneline -5 2>/dev/null || echo "(no commits)"`
Review the git state above. If you need more detail:
Single commit if:
Multiple commits if changes span multiple unrelated domains:
packages/ui, packages/api)apps/web, apps/admin)Common groupings:
packages/<name>/** - Package-specific changesapps/<name>/** - App-specific changes.eslintrc, turbo.json, etc.) - Config*.stories.tsx with their component - Same commit as component*.test.ts with their source - Same commit as sourceFor each logical group:
Stage only files for that group:
git add [files...]
Create commit with conventional message format:
git commit -m "$(cat <<'EOF'
type(scope): description
EOF
)"
Commit types:
feat - New featurefix - Bug fixrefactor - Code refactoringchore - Maintenance, deps, configdocs - Documentationtest - Testsstyle - Formatting, no code changeperf - Performance improvementci - CI/CD changesCommit message rules:
If TypeScript or lint errors block the commit:
CRITICAL RULES:
--no-verify or skip hooksas unknown as, as any)@ts-ignore, @ts-expect-error, or eslint-disable commentsFixing Process:
unknown and narrow it with type guardspush argument provided)Skip this step unless $ARGUMENTS starts with "push".
If pushing:
git push
If the branch has no upstream:
git push -u origin $(git branch --show-current)
If push fails (e.g., diverged history), report the issue - do NOT force push unless explicitly authorized.
Tell the user:
<arc_log>
After completing this skill, append to the activity log.
See: ${ARC_ROOT}/references/arc-log.md
Entry: /arc:commit — [N] commits ([summary])
</arc_log>
If you cannot fix an error properly: