Camp Commit Decision
SkillDev toolsChoose the correct commit command in a camp, also called a campaign. Use when you are about to commit and need to select `camp commit`, `camp p commit`, `fest commit`, or intentional root pointer sync via `camp refs-sync`.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Camp Commit Decision skill
What this skill tells your AI
The instructions your AI receives, as published by obedience-corp/festival in skills/campaign-commit/SKILL.md and read by ahel’s review.
A camp was previously called a campaign; this skill applies whichever word the user uses.
Decision
- Project change (submodule, linked project, or worktree):
camp p commit -m "msg" - Festival task execution:
fest commit -m "msg" - Camp root files:
camp commit -m "msg"(stages all root-level changes; submodule refs excluded by default) - Camp root, scoped to specific paths:
git add <paths>thencamp commit --all=false -m "msg"(commits only what is staged) - Intentional root pointer sync:
camp refs-sync [submodule...]
Festival Commits Cover the Linked Project
When a festival or sequence has a linked project, fest commit makes up to two
commits even when you run it from inside the festival:
- a project commit staging the project's changes, skipped when the project is clean
- a camp root commit staging only festival-scoped files, the camp's
.campaign/fest/state, and the submodule pointer
So during festival execution do not run camp p commit first and fest commit
after. One fest commit covers both sides. Use --no-root to skip the camp
root commit.
A festival with no linked project makes the single camp root commit only.
Deferred Commit Queue
Camp defers its own bookkeeping commits so they do not hold the terminal. The queue is machine-local and disposable; git is the record.
camp jobs # what is queued, running, or failed
camp jobs --json # same, for agents
camp jobs retry all # requeue everything that failed
camp jobs drop <id> # give up on a failed job, keeping its content
camp jobs drop --running <id> # a stalled job, and the worker holding it
camp jobs drain # wait for every lane, then exit
Dropping a job never discards work: the content stays uncommitted in the working
tree for the next ordinary commit. If camp jobs reports a job as stalled, a
commit message writer stopped answering; --running is what ends that wait.
Rules
- Never run raw
git commitanywhere in a camp; staging withgit addis fine. - Keep submodule commits and root pointer sync as separate, explicit actions.
- Do not bypass hooks with
--no-verifywithout clear justification. - Do not add agent co-author trailers unless explicitly requested.
Signals
- GitHub stars
- 49
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
campaign-commit- Source
- github.com/obedience-corp/festival