campaign-commit
Choose 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`.
#git
Install
npx skills add https://github.com/Obedience-Corp/festival/tree/main/skills/campaign-commit
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install obedience-corp-festival@llmmart
git clone https://github.com/Obedience-Corp/festival.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole obedience-corp/festival collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Camp Commit Decision
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.
Files (festival)
-
SKILL.md 2.7 KB
--- name: campaign-commit description: Choose 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`. version: "1.3.1" author: Obedience Corp license: Apache-2.0 metadata: hermes: tags: - camp - commit - git - traceability category: camp --- # Camp Commit Decision 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>` then `camp 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. ```bash 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 commit` anywhere in a camp; staging with `git add` is fine. - Keep submodule commits and root pointer sync as separate, explicit actions. - Do not bypass hooks with `--no-verify` without clear justification. - Do not add agent co-author trailers unless explicitly requested.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.