Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .agents/skills/checkpoint/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,4 +90,4 @@ Say:
- Never apply labels or modify issues.
- Never run `make check` — checkpoints are not quality gates.
- Do not prompt for confirmation — `/checkpoint` is a quick save, not a ceremony.
<!-- generated by CodeCannon/sync.sh | skill: checkpoint | adapter: codex | hash: a5c7187c | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: checkpoint | adapter: codex | hash: a5c7187c | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .agents/skills/deploy/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -253,4 +253,4 @@ After the command runs, note the release URL from the output.
Tell the user:

> "Released vX.Y.Z. Issues #N, #M closed automatically. GitHub Release vX.Y.Z created at `<url>`. Run `make deploy-prod` to ship to production."
<!-- generated by CodeCannon/sync.sh | skill: deploy | adapter: codex | hash: 1a6fd564 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: deploy | adapter: codex | hash: 1a6fd564 | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .agents/skills/qa/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,4 +141,4 @@ After applying labels, tell the user what was done:
- Never post the comment without showing it to the user first.
- Never apply labels without user confirmation (the confirmation in Step 3 is the single gate for both posting the comment and applying labels).
- Never merge, deploy, or take any action beyond labeling and commenting.
<!-- generated by CodeCannon/sync.sh | skill: qa | adapter: codex | hash: 1aa8055b | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: qa | adapter: codex | hash: 1aa8055b | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
4 changes: 2 additions & 2 deletions .agents/skills/review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ description: Code Cannon: Run a standalone code review on a pull request

If `ai` is `"off"`, say:

> "Code review is disabled for this project (REVIEW_GATE is set to 'off' in .codecannon.yaml). To enable reviews, set REVIEW_GATE to 'ai' or 'advisory' and re-run CodeCannon/sync.sh."
> "Code review is disabled for this project (REVIEW_GATE is set to 'off' in .codecannon.yaml). To enable reviews, set REVIEW_GATE to 'ai' or 'advisory' and re-run CodeCannon/sync.py."

Do not proceed.

Expand Down Expand Up @@ -65,4 +65,4 @@ After the review agent completes, relay its verdict to the user:
- This command does not commit, push, or merge anything. It only reviews.
- It may be called manually at any time, not just from `/submit-for-review`.
- The review comment is posted to GitHub for the audit trail.
<!-- generated by CodeCannon/sync.sh | skill: review | adapter: codex | hash: 4eb6967b | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: review | adapter: codex | hash: 461c6fcf | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
22 changes: 11 additions & 11 deletions .agents/skills/setup/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Before taking any action, determine which state the project is in. Run these che
**Check A — Is this the Code Cannon skill library repo itself?**

```bash
test -f sync.sh && test -d skills
test -f sync.py && test -d skills
```

If both exist at the working directory root → **go to State 1**.
Expand Down Expand Up @@ -52,7 +52,7 @@ Offer two forward paths and ask which they want:
Explain the three-layer model:
- **Skills** (`skills/*.md`) — portable workflow instructions with `main`-style tokens for project-specific values (see `config.schema.yaml`)
- **Config** (`.codecannon.yaml`) — a project's values that fill those tokens at sync time
- **Sync** (`sync.sh`) — reads the config, substitutes values, and writes generated command files for each adapter (Claude Code → `.claude/commands/`, Cursor → `.cursor/rules/`)
- **Sync** (`sync.py`) — reads the config, substitutes values, and writes generated command files for each adapter (Claude Code → `.claude/commands/`, Cursor → `.cursor/rules/`)

Point to README.md for the full skill list and documentation. Do not touch any file.

Expand All @@ -66,7 +66,7 @@ git submodule add https://github.com/LightbridgeLab/CodeCannon.git CodeCannon
git submodule update --init
cp CodeCannon/templates/codecannon.yaml .codecannon.yaml
# Edit .codecannon.yaml — set branch names, commands, adapters
CodeCannon/sync.sh
CodeCannon/sync.py
```

Do not touch any file. The user runs these commands in their project directory.
Expand All @@ -77,10 +77,10 @@ Do not touch any file. The user runs these commands in their project directory.

Run checks 1–7 in order. Stop at the first failing check and address it. After describing the fix, tell the user to run `/setup` again once they've resolved it. Do not continue past a failing check.

### Check 1 — CodeCannon/sync.sh present
### Check 1 — CodeCannon/sync.py present

```bash
test -f CodeCannon/sync.sh
test -f CodeCannon/sync.py
```

If missing: the submodule was added to `.gitmodules` or `CodeCannon/` exists as an empty directory, but it hasn't been initialized. Show:
Expand Down Expand Up @@ -191,18 +191,18 @@ If anything is flagged: show the specific key names and what they should likely

### Check 7 — Generated skill output present

Check whether sync.sh has been run by looking for any of the adapter output directories configured in `.codecannon.yaml`:
Check whether sync.py has been run by looking for any of the adapter output directories configured in `.codecannon.yaml`:

```bash
test -d .claude/commands || test -d .cursor/rules || test -d .agents/skills || test -d .gemini/skills
```

If none exist: "sync.sh hasn't been run yet — the skill commands don't exist."
If none exist: "sync.py hasn't been run yet — the skill commands don't exist."

Show:

```bash
CodeCannon/sync.sh
CodeCannon/sync.py
```

Ask permission to run it. If the user agrees, run it. If they decline, tell them to run it manually before continuing. Stop.
Expand Down Expand Up @@ -364,11 +364,11 @@ Add a note: `/start` can be used to create well-formed GitHub issues without wri

## Hard rules

- Only modify `.codecannon.yaml`. Do not touch any other file (except running `CodeCannon/sync.sh`, which modifies `.claude/commands/` — permitted only with explicit user approval).
- Do not run `sync.sh` without explicit user permission.
- Only modify `.codecannon.yaml`. Do not touch any other file (except running `CodeCannon/sync.py`, which modifies `.claude/commands/` — permitted only with explicit user approval).
- Do not run `sync.py` without explicit user permission.
- Do not create `.codecannon.yaml` without explicit user permission.
- Do not report a configuration problem unless confident the condition is genuinely broken. Prefer false negatives over false positives on all diagnostic checks.
- Never fetch more than 100 labels in a single command. `gh label list --limit 100` is the ceiling.
- Do not skip any human gate in Phase 2 or Phase 3 — each write requires confirmation.
- If the user skips a config value, do not ask again. Move on.
<!-- generated by CodeCannon/sync.sh | skill: setup | adapter: codex | hash: d8399ad3 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: setup | adapter: codex | hash: 641d16b6 | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .agents/skills/start/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -313,4 +313,4 @@ When done, say: **"The code is ready for review. Please run `make dev` and test
- The issue is assigned to `@me` at creation. If you are creating a ticket on someone else's behalf, remove the assignee after creation with `gh issue edit <number> --remove-assignee @me`.
- Apply resolved labels and milestone to every new issue. Label resolution order: per-invocation flag → pool selection from `bug, documentation, enhancement, chore` → omit `--label` entirely. Never apply a label outside `bug, documentation, enhancement, chore`.
- Milestone resolution order: per-invocation flag → auto-detected from GitHub open milestones. Never prompt for a milestone more than once per invocation.
<!-- generated by CodeCannon/sync.sh | skill: start | adapter: codex | hash: a1701c1d | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: start | adapter: codex | hash: a1701c1d | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .agents/skills/status/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -366,4 +366,4 @@ Do not post, comment, write files, or take any action. Output only.
- If `gh` is unauthenticated or any fetch fails, report the error and stop immediately.
- Do not retry failed commands.
- Strip the leading `@` from the subject when passing to `gh` flags that do not accept it.
<!-- generated by CodeCannon/sync.sh | skill: status | adapter: codex | hash: 03a99a92 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: status | adapter: codex | hash: 03a99a92 | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .agents/skills/submit-for-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -325,4 +325,4 @@ If a single `gh issue create` call fails, report the failure for that finding an
- `/submit-for-review` merges only to `dev` — never directly to `main`.
- If `make merge` fails for any reason, report it and stop — do not attempt workarounds.
- The follow-up issue offer in Step 9 runs only after a successful merge and only when the review produced non-blocking findings. Never prompt the user for follow-ups when the review blocked the merge — those findings should be fixed, not ticketed.
<!-- generated by CodeCannon/sync.sh | skill: submit-for-review | adapter: codex | hash: 7da4e9fb | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: submit-for-review | adapter: codex | hash: 7da4e9fb | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .claude/commands/checkpoint.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,4 @@ Say:
- Never apply labels or modify issues.
- Never run `make check` — checkpoints are not quality gates.
- Do not prompt for confirmation — `/checkpoint` is a quick save, not a ceremony.
<!-- generated by CodeCannon/sync.sh | skill: checkpoint | adapter: claude | hash: cc7e9e00 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: checkpoint | adapter: claude | hash: cc7e9e00 | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .claude/commands/deploy.md
Original file line number Diff line number Diff line change
Expand Up @@ -248,4 +248,4 @@ After the command runs, note the release URL from the output.
Tell the user:

> "Released vX.Y.Z. Issues #N, #M closed automatically. GitHub Release vX.Y.Z created at `<url>`. Run `make deploy-prod` to ship to production."
<!-- generated by CodeCannon/sync.sh | skill: deploy | adapter: claude | hash: 1fa58dba | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: deploy | adapter: claude | hash: 1fa58dba | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .claude/commands/qa.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,4 +136,4 @@ After applying labels, tell the user what was done:
- Never post the comment without showing it to the user first.
- Never apply labels without user confirmation (the confirmation in Step 3 is the single gate for both posting the comment and applying labels).
- Never merge, deploy, or take any action beyond labeling and commenting.
<!-- generated by CodeCannon/sync.sh | skill: qa | adapter: claude | hash: 7779c669 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: qa | adapter: claude | hash: 7779c669 | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
4 changes: 2 additions & 2 deletions .claude/commands/review.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Code Cannon: Run a standalone code review on a pull request

If `ai` is `"off"`, say:

> "Code review is disabled for this project (REVIEW_GATE is set to 'off' in .codecannon.yaml). To enable reviews, set REVIEW_GATE to 'ai' or 'advisory' and re-run CodeCannon/sync.sh."
> "Code review is disabled for this project (REVIEW_GATE is set to 'off' in .codecannon.yaml). To enable reviews, set REVIEW_GATE to 'ai' or 'advisory' and re-run CodeCannon/sync.py."

Do not proceed.

Expand Down Expand Up @@ -60,4 +60,4 @@ After the review agent completes, relay its verdict to the user:
- This command does not commit, push, or merge anything. It only reviews.
- It may be called manually at any time, not just from `/submit-for-review`.
- The review comment is posted to GitHub for the audit trail.
<!-- generated by CodeCannon/sync.sh | skill: review | adapter: claude | hash: 87cdfdad | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: review | adapter: claude | hash: cf87a507 | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
22 changes: 11 additions & 11 deletions .claude/commands/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Before taking any action, determine which state the project is in. Run these che
**Check A — Is this the Code Cannon skill library repo itself?**

```bash
test -f sync.sh && test -d skills
test -f sync.py && test -d skills
```

If both exist at the working directory root → **go to State 1**.
Expand Down Expand Up @@ -47,7 +47,7 @@ Offer two forward paths and ask which they want:
Explain the three-layer model:
- **Skills** (`skills/*.md`) — portable workflow instructions with `main`-style tokens for project-specific values (see `config.schema.yaml`)
- **Config** (`.codecannon.yaml`) — a project's values that fill those tokens at sync time
- **Sync** (`sync.sh`) — reads the config, substitutes values, and writes generated command files for each adapter (Claude Code → `.claude/commands/`, Cursor → `.cursor/rules/`)
- **Sync** (`sync.py`) — reads the config, substitutes values, and writes generated command files for each adapter (Claude Code → `.claude/commands/`, Cursor → `.cursor/rules/`)

Point to README.md for the full skill list and documentation. Do not touch any file.

Expand All @@ -61,7 +61,7 @@ git submodule add https://github.com/LightbridgeLab/CodeCannon.git CodeCannon
git submodule update --init
cp CodeCannon/templates/codecannon.yaml .codecannon.yaml
# Edit .codecannon.yaml — set branch names, commands, adapters
CodeCannon/sync.sh
CodeCannon/sync.py
```

Do not touch any file. The user runs these commands in their project directory.
Expand All @@ -72,10 +72,10 @@ Do not touch any file. The user runs these commands in their project directory.

Run checks 1–7 in order. Stop at the first failing check and address it. After describing the fix, tell the user to run `/setup` again once they've resolved it. Do not continue past a failing check.

### Check 1 — CodeCannon/sync.sh present
### Check 1 — CodeCannon/sync.py present

```bash
test -f CodeCannon/sync.sh
test -f CodeCannon/sync.py
```

If missing: the submodule was added to `.gitmodules` or `CodeCannon/` exists as an empty directory, but it hasn't been initialized. Show:
Expand Down Expand Up @@ -186,18 +186,18 @@ If anything is flagged: show the specific key names and what they should likely

### Check 7 — Generated skill output present

Check whether sync.sh has been run by looking for any of the adapter output directories configured in `.codecannon.yaml`:
Check whether sync.py has been run by looking for any of the adapter output directories configured in `.codecannon.yaml`:

```bash
test -d .claude/commands || test -d .cursor/rules || test -d .agents/skills || test -d .gemini/skills
```

If none exist: "sync.sh hasn't been run yet — the skill commands don't exist."
If none exist: "sync.py hasn't been run yet — the skill commands don't exist."

Show:

```bash
CodeCannon/sync.sh
CodeCannon/sync.py
```

Ask permission to run it. If the user agrees, run it. If they decline, tell them to run it manually before continuing. Stop.
Expand Down Expand Up @@ -359,11 +359,11 @@ Add a note: `/start` can be used to create well-formed GitHub issues without wri

## Hard rules

- Only modify `.codecannon.yaml`. Do not touch any other file (except running `CodeCannon/sync.sh`, which modifies `.claude/commands/` — permitted only with explicit user approval).
- Do not run `sync.sh` without explicit user permission.
- Only modify `.codecannon.yaml`. Do not touch any other file (except running `CodeCannon/sync.py`, which modifies `.claude/commands/` — permitted only with explicit user approval).
- Do not run `sync.py` without explicit user permission.
- Do not create `.codecannon.yaml` without explicit user permission.
- Do not report a configuration problem unless confident the condition is genuinely broken. Prefer false negatives over false positives on all diagnostic checks.
- Never fetch more than 100 labels in a single command. `gh label list --limit 100` is the ceiling.
- Do not skip any human gate in Phase 2 or Phase 3 — each write requires confirmation.
- If the user skips a config value, do not ask again. Move on.
<!-- generated by CodeCannon/sync.sh | skill: setup | adapter: claude | hash: 0a1e505a | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: setup | adapter: claude | hash: 5e6dfbef | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .claude/commands/start.md
Original file line number Diff line number Diff line change
Expand Up @@ -308,4 +308,4 @@ When done, say: **"The code is ready for review. Please run `make dev` and test
- The issue is assigned to `@me` at creation. If you are creating a ticket on someone else's behalf, remove the assignee after creation with `gh issue edit <number> --remove-assignee @me`.
- Apply resolved labels and milestone to every new issue. Label resolution order: per-invocation flag → pool selection from `bug, documentation, enhancement, chore` → omit `--label` entirely. Never apply a label outside `bug, documentation, enhancement, chore`.
- Milestone resolution order: per-invocation flag → auto-detected from GitHub open milestones. Never prompt for a milestone more than once per invocation.
<!-- generated by CodeCannon/sync.sh | skill: start | adapter: claude | hash: 3761be9e | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: start | adapter: claude | hash: 3761be9e | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .claude/commands/status.md
Original file line number Diff line number Diff line change
Expand Up @@ -361,4 +361,4 @@ Do not post, comment, write files, or take any action. Output only.
- If `gh` is unauthenticated or any fetch fails, report the error and stop immediately.
- Do not retry failed commands.
- Strip the leading `@` from the subject when passing to `gh` flags that do not accept it.
<!-- generated by CodeCannon/sync.sh | skill: status | adapter: claude | hash: ab4b0450 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: status | adapter: claude | hash: ab4b0450 | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .claude/commands/submit-for-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -320,4 +320,4 @@ If a single `gh issue create` call fails, report the failure for that finding an
- `/submit-for-review` merges only to `dev` — never directly to `main`.
- If `make merge` fails for any reason, report it and stop — do not attempt workarounds.
- The follow-up issue offer in Step 9 runs only after a successful merge and only when the review produced non-blocking findings. Never prompt the user for follow-ups when the review blocked the merge — those findings should be fixed, not ticketed.
<!-- generated by CodeCannon/sync.sh | skill: submit-for-review | adapter: claude | hash: f9e7a62e | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: submit-for-review | adapter: claude | hash: f9e7a62e | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .claude/review-agent-prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,4 @@ If no findings: "No issues found. Code looks correct and follows project convent
- Do not suggest improvements outside the scope of the PR.
- Do not re-review files that haven't changed.
- Your review is posted to GitHub for the audit trail — keep it professional.
<!-- generated by CodeCannon/sync.sh | skill: review-agent | adapter: claude | hash: 4fefe173 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.py | skill: review-agent | adapter: claude | hash: 4fefe173 | DO NOT EDIT — run CodeCannon/sync.py to regenerate -->
2 changes: 1 addition & 1 deletion .claude/settings.local.json.example
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"Bash(python3:*)",
"Bash(which:*)",
"Bash(wc:*)",
"Bash(./sync.sh:*)",
"Bash(./sync.py:*)",
"WebSearch"
]
}
Expand Down
Loading