Skip to content
Back to skills

Campaign Commit

ASecurity

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`.

  • 60 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 6, 2026
ai-agentsgobashgit

Works with

  • terminal

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add Obedience-Corp/festival --skill campaign-commit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Campaign Commit?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Campaign Commit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/obedience-corp-campaign-commit-festival/badge)](https://www.skillsdirectory.com/skills/obedience-corp-campaign-commit-festival)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.