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/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 CodeCanon/sync.sh | skill: qa | adapter: codex | hash: dc360e69 | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: qa | adapter: codex | hash: dc360e69 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
2 changes: 1 addition & 1 deletion .agents/skills/release/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -152,4 +152,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 CodeCanon/sync.sh | skill: release | adapter: codex | hash: b1100c0f | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: release | adapter: codex | hash: b1100c0f | DO NOT EDIT — run CodeCannon/sync.sh 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: 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 CodeCanon/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.sh."

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 `/ship`.
- The review comment is posted to GitHub for the audit trail.
<!-- generated by CodeCanon/sync.sh | skill: review | adapter: codex | hash: bc6e38a4 | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: review | adapter: codex | hash: e4579e5e | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
28 changes: 14 additions & 14 deletions .agents/skills/setup/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,18 +22,18 @@ If both exist at the working directory root → **go to State 1**.
**Check B — Is there any Code Cannon submodule presence?**

```bash
test -d CodeCanon
test -d CodeCannon
```

```bash
test -f .gitmodules && grep -q CodeCanon .gitmodules
test -f .gitmodules && grep -q CodeCannon .gitmodules
```

If either is true → **go to State 2**.

**Check C — State 1 fallback**

If `.codecannon.yaml` is absent AND neither `CodeCanon/` nor `.gitmodules` exist → **go to State 1**.
If `.codecannon.yaml` is absent AND neither `CodeCannon/` nor `.gitmodules` exist → **go to State 1**.

Otherwise → **go to State 2**.

Expand Down Expand Up @@ -74,11 +74,11 @@ Show the exact command sequence:

```bash
cd /path/to/your-project
git submodule add https://github.com/LightbridgeLab/CodeCanon.git CodeCanon
git submodule add https://github.com/LightbridgeLab/CodeCannon.git CodeCannon
git submodule update --init
cp CodeCanon/templates/codecannon.yaml .codecannon.yaml
cp CodeCannon/templates/codecannon.yaml .codecannon.yaml
# Edit .codecannon.yaml — set branch names, commands, adapters
CodeCanon/sync.sh
CodeCannon/sync.sh
```

Do not touch any file. The user runs these commands in their project directory.
Expand All @@ -89,13 +89,13 @@ 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 — CodeCanon/sync.sh present
### Check 1 — CodeCannon/sync.sh present

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

If missing: the submodule was added to `.gitmodules` or `CodeCanon/` exists as an empty directory, but it hasn't been initialized. Show:
If missing: the submodule was added to `.gitmodules` or `CodeCannon/` exists as an empty directory, but it hasn't been initialized. Show:

```bash
git submodule update --init --recursive
Expand Down Expand Up @@ -144,7 +144,7 @@ If missing: "I'll create `.codecannon.yaml` from the template — you'll want to
Show:

```bash
cp CodeCanon/templates/codecannon.yaml .codecannon.yaml
cp CodeCannon/templates/codecannon.yaml .codecannon.yaml
```

Ask permission to run it. If the user agrees, run it. If they decline, tell them to run it manually.
Expand Down Expand Up @@ -223,7 +223,7 @@ If none exist: "sync.sh hasn't been run yet — the skill commands don't exist."
Show:

```bash
CodeCanon/sync.sh
CodeCannon/sync.sh
```

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 @@ -460,7 +460,7 @@ After completing or skipping the config walkthrough, say:
Show the exact command:

```bash
git add .codecannon.yaml .claude/ CodeCanon AGENTS.md
git add .codecannon.yaml .claude/ CodeCannon AGENTS.md
```

Add a note: `/start` can be used to create well-formed GitHub issues without writing any code — useful for non-developers tracking work. `/status` generates standup summaries from open issues and PRs — both are valuable outside of a development workflow.
Expand All @@ -469,11 +469,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 `CodeCanon/sync.sh`, which modifies `.claude/commands/` — permitted only with explicit user approval).
- 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.
- 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 CodeCanon/sync.sh | skill: setup | adapter: codex | hash: 44a66b6a | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: setup | adapter: codex | hash: c95d57a7 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
32 changes: 25 additions & 7 deletions .agents/skills/ship/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,25 @@ If a linked issue number is identifiable, note it for the PR body. If not identi

---

## Step 4 — Commit
## Step 4 — Sync with base branch

Bring the feature branch up to date before committing:

```
git fetch origin dev && git merge origin/dev
```

If the merge completes cleanly (including fast-forward), proceed to Step 5.

If there are merge conflicts, **stop** and say:

> "Merge conflicts with `<base branch>`. Resolve them before shipping."

List the conflicting files. Help the user resolve them if asked, then continue.

---

## Step 5 — Commit

Stage all changes and commit:
```
Expand All @@ -71,7 +89,7 @@ Commit message rules:

---

## Step 5 — Push and open PR
## Step 6 — Push and open PR

First, push the branch:
```
Expand Down Expand Up @@ -99,7 +117,7 @@ EOF
)"
```

Add `--reviewer @sebastientaggart` to the `gh pr create` command above.
Add `--reviewer` to the `gh pr create` command above using the handles from `@sebastientaggart`. Before passing them, strip any leading `@` from each comma-separated handle (e.g. `@alice,@org/team` becomes `alice,org/team`) — the `gh` CLI requires bare usernames.

If a CODEOWNERS file exists, both apply: CODEOWNERS triggers automatic review requests from GitHub; the `--reviewer` flag adds the explicitly configured handles on top.

Expand All @@ -109,9 +127,9 @@ Omit the issue line entirely if no linked issue was identified in Step 3.

---

## Step 6 — Review (conditional)
## Step 7 — Review (conditional)

If `ai` is `"off"`, skip directly to Step 7 (merge without review).
If `ai` is `"off"`, skip directly to Step 8 (merge without review).

Otherwise, load `.claude/review-agent-prompt.md` and perform the review for this PR.

Expand All @@ -128,7 +146,7 @@ Wait for the review to complete and report its verdict.

---

## Step 7 — Act on verdict
## Step 8 — Act on verdict

Merge command (used by all paths below): `make merge`

Expand Down Expand Up @@ -185,4 +203,4 @@ Report success based on mode:
- When `ai` is `"off"`, skip the review agent entirely — merge immediately after checks pass.
- `/ship` merges only to `dev` — never directly to `main`.
- If `make merge` fails for any reason, report it and stop — do not attempt workarounds.
<!-- generated by CodeCanon/sync.sh | skill: ship | adapter: codex | hash: a0f3cbc1 | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: ship | adapter: codex | hash: 424e2a75 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
6 changes: 1 addition & 5 deletions .agents/skills/start/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,8 +130,6 @@ Ensure the base branch is up-to-date before branching:
git checkout dev && git pull origin dev
```

(In trunk mode where `dev` is empty, use `main` instead.)

Now create the feature branch:

```bash
Expand Down Expand Up @@ -190,8 +188,6 @@ Ensure the base branch is up-to-date before branching:
git checkout dev && git pull origin dev
```

(In trunk mode where `dev` is empty, use `main` instead.)

Find and check out the existing branch, or create a new one linked to the issue:

```bash
Expand Down Expand Up @@ -228,4 +224,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 (or create if `false` is `true`). Never apply a label not in `bug, documentation, enhancement, chore` unless `false` is `true`.
- Milestone resolution order: per-invocation flag → auto-detected from GitHub open milestones. Never prompt for a milestone more than once per invocation.
<!-- generated by CodeCanon/sync.sh | skill: start | adapter: codex | hash: f8182e62 | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: start | adapter: codex | hash: 049a7dca | DO NOT EDIT — run CodeCannon/sync.sh 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 @@ -180,4 +180,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 CodeCanon/sync.sh | skill: status | adapter: codex | hash: a0b51014 | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: status | adapter: codex | hash: a0b51014 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
2 changes: 1 addition & 1 deletion .agents/skills/version/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,4 @@ Both the version bump commit and the tag must be pushed.
Tell the user the new version and tag:

"Tagged vX.Y.Z. Run `make deploy-preview` to deploy to preview for testing. When testing is complete, run `/release`."
<!-- generated by CodeCanon/sync.sh | skill: version | adapter: codex | hash: b719359b | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: version | adapter: codex | hash: b719359b | DO NOT EDIT — run CodeCannon/sync.sh 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 CodeCanon/sync.sh | skill: qa | adapter: claude | hash: ac0a4a39 | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: qa | adapter: claude | hash: ac0a4a39 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
2 changes: 1 addition & 1 deletion .claude/commands/release.md
Original file line number Diff line number Diff line change
Expand Up @@ -147,4 +147,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 CodeCanon/sync.sh | skill: release | adapter: claude | hash: 3afc8d00 | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: release | adapter: claude | hash: 3afc8d00 | DO NOT EDIT — run CodeCannon/sync.sh 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 @@ 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 CodeCanon/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.sh."

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 `/ship`.
- The review comment is posted to GitHub for the audit trail.
<!-- generated by CodeCanon/sync.sh | skill: review | adapter: claude | hash: 4e450003 | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: review | adapter: claude | hash: bcc66c99 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
28 changes: 14 additions & 14 deletions .claude/commands/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,18 @@ If both exist at the working directory root → **go to State 1**.
**Check B — Is there any Code Cannon submodule presence?**

```bash
test -d CodeCanon
test -d CodeCannon
```

```bash
test -f .gitmodules && grep -q CodeCanon .gitmodules
test -f .gitmodules && grep -q CodeCannon .gitmodules
```

If either is true → **go to State 2**.

**Check C — State 1 fallback**

If `.codecannon.yaml` is absent AND neither `CodeCanon/` nor `.gitmodules` exist → **go to State 1**.
If `.codecannon.yaml` is absent AND neither `CodeCannon/` nor `.gitmodules` exist → **go to State 1**.

Otherwise → **go to State 2**.

Expand Down Expand Up @@ -69,11 +69,11 @@ Show the exact command sequence:

```bash
cd /path/to/your-project
git submodule add https://github.com/LightbridgeLab/CodeCanon.git CodeCanon
git submodule add https://github.com/LightbridgeLab/CodeCannon.git CodeCannon
git submodule update --init
cp CodeCanon/templates/codecannon.yaml .codecannon.yaml
cp CodeCannon/templates/codecannon.yaml .codecannon.yaml
# Edit .codecannon.yaml — set branch names, commands, adapters
CodeCanon/sync.sh
CodeCannon/sync.sh
```

Do not touch any file. The user runs these commands in their project directory.
Expand All @@ -84,13 +84,13 @@ 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 — CodeCanon/sync.sh present
### Check 1 — CodeCannon/sync.sh present

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

If missing: the submodule was added to `.gitmodules` or `CodeCanon/` exists as an empty directory, but it hasn't been initialized. Show:
If missing: the submodule was added to `.gitmodules` or `CodeCannon/` exists as an empty directory, but it hasn't been initialized. Show:

```bash
git submodule update --init --recursive
Expand Down Expand Up @@ -139,7 +139,7 @@ If missing: "I'll create `.codecannon.yaml` from the template — you'll want to
Show:

```bash
cp CodeCanon/templates/codecannon.yaml .codecannon.yaml
cp CodeCannon/templates/codecannon.yaml .codecannon.yaml
```

Ask permission to run it. If the user agrees, run it. If they decline, tell them to run it manually.
Expand Down Expand Up @@ -218,7 +218,7 @@ If none exist: "sync.sh hasn't been run yet — the skill commands don't exist."
Show:

```bash
CodeCanon/sync.sh
CodeCannon/sync.sh
```

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 @@ -455,7 +455,7 @@ After completing or skipping the config walkthrough, say:
Show the exact command:

```bash
git add .codecannon.yaml .claude/ CodeCanon AGENTS.md
git add .codecannon.yaml .claude/ CodeCannon AGENTS.md
```

Add a note: `/start` can be used to create well-formed GitHub issues without writing any code — useful for non-developers tracking work. `/status` generates standup summaries from open issues and PRs — both are valuable outside of a development workflow.
Expand All @@ -464,11 +464,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 `CodeCanon/sync.sh`, which modifies `.claude/commands/` — permitted only with explicit user approval).
- 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.
- 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 CodeCanon/sync.sh | skill: setup | adapter: claude | hash: 37c509bf | DO NOT EDIT — run CodeCanon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: setup | adapter: claude | hash: 799cf0c2 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
Loading