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
4 changes: 2 additions & 2 deletions .agents/skills/deploy/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: deploy
description: Bump the project version, create a GitHub Release, and promote to production — handles both versioning and releasing in one step
description: Code Cannon: Bump the project version, create a GitHub Release, and promote to production — handles both versioning and releasing in one step
---

> **Codex CLI:** This skill is triggered by description matching. State any arguments in your message. Sub-agent spawning is not supported — perform any review steps inline.
Expand Down Expand Up @@ -235,4 +235,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: 31067fad | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: deploy | adapter: codex | hash: 216e7949 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .agents/skills/qa/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: qa
description: View the QA queue or review a specific issue
description: Code Cannon: View the QA queue or review a specific issue
---

> **Codex CLI:** This skill is triggered by description matching. State any arguments in your message. Sub-agent spawning is not supported — perform any review steps inline.
Expand Down 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: dc360e69 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: qa | adapter: codex | hash: 1aa8055b | 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
@@ -1,6 +1,6 @@
---
name: review
description: Run a standalone code review on a pull request
description: Code Cannon: Run a standalone code review on a pull request
---

> **Codex CLI:** This skill is triggered by description matching. State any arguments in your message. Sub-agent spawning is not supported — perform any review steps inline.
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: e781dae2 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: review | adapter: codex | hash: 4eb6967b | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .agents/skills/setup/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: setup
description: Detect setup state, guide first-time configuration, populate labels, and walk through optional config values
description: Code Cannon: Detect setup state, guide first-time configuration, populate labels, and walk through optional config values
---

> **Codex CLI:** This skill is triggered by description matching. State any arguments in your message. Sub-agent spawning is not supported — perform any review steps inline.
Expand Down Expand Up @@ -475,4 +475,4 @@ Add a note: `/start` can be used to create well-formed GitHub issues without wri
- 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: fa142ad2 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: setup | adapter: codex | hash: daa5f140 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .agents/skills/start/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: start
description: Start a new feature or bugfix
description: Code Cannon: Start a new feature or bugfix
---

> **Codex CLI:** This skill is triggered by description matching. State any arguments in your message. Sub-agent spawning is not supported — perform any review steps inline.
Expand Down Expand Up @@ -230,4 +230,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 CodeCannon/sync.sh | skill: start | adapter: codex | hash: 8c5a4402 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: start | adapter: codex | hash: 97886867 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .agents/skills/status/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: status
description: Summarize in-progress and recently completed work from GitHub and git
description: Code Cannon: Summarize in-progress and recently completed work from GitHub and git
---

> **Codex CLI:** This skill is triggered by description matching. State any arguments in your message. Sub-agent spawning is not supported — perform any review steps inline.
Expand Down Expand Up @@ -241,4 +241,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: 08068d91 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: status | adapter: codex | hash: b942c6b6 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
55 changes: 53 additions & 2 deletions .agents/skills/submit-for-review/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: submit-for-review
description: Type-check, commit, open PR, review, and merge to the integration branch
description: Code Cannon: Type-check, commit, open PR, review, and merge to the integration branch
---

> **Codex CLI:** This skill is triggered by description matching. State any arguments in your message. Sub-agent spawning is not supported — perform any review steps inline.
Expand Down Expand Up @@ -200,6 +200,56 @@ Report success based on mode:

---

## Step 9 — Offer follow-up issues for non-blocking findings

**Gate this step entirely** if any of the following are true:
- `ai` is `"off"` (no review was performed).
- The merge in Step 8 did not actually happen (e.g. `ai` mode with REQUEST CHANGES).
- The review output contains no non-blocking findings.

**Collect non-blocking findings** from the review output retained from Step 7:
- Always include lines starting with `[WARNING]` or `[NOTE]`.
- If `ai` is `"advisory"`, also include any `[CRITICAL]` lines — the user chose to merge over them, so they are now follow-up candidates too.
- If `ai` is `"ai"`, do not include `[CRITICAL]` lines (there should not be any on the merge path, but guard anyway).

If the collected list is empty, skip the rest of this step silently.

**Present and ask once.** Show the findings as a numbered list (preserve the `[WARNING]` / `[NOTE]` / `[CRITICAL]` prefix in the display for clarity) and ask exactly:

> "The review flagged N non-blocking finding(s). Create follow-up issues for any of them? Enter numbers (e.g. `1,3`), `all`, or `none`."

Accept: comma-separated numbers, `all`, or `none`/`skip`/empty. If the input is unparseable, re-prompt once; if still invalid, treat as `none` and move on.

**Create the selected issues.** For each selected finding, run `gh issue create` with explicit flags:

```
gh issue create \
--title "<finding text with [WARNING]/[NOTE]/[CRITICAL] prefix stripped, trimmed to a standalone sentence>" \
--body "$(cat <<'EOF'
Follow-up from PR #<merged-pr-number> — auto-proposed from the code review.

**Finding:** <full finding text, prefix included>

See the review comment on the PR for context.
EOF
)" \
[--label "<pool-selected labels>"]
```

Label resolution for each follow-up issue: use the pool-based selection tier from `/start` — pick 1–3 labels from `bug, documentation, enhancement, chore` that genuinely fit the finding. If `bug, documentation, enhancement, chore` is empty or no pool label fits, omit `--label`. Do not attempt per-invocation flag resolution (there is no flag here) and do not create new labels regardless of `false`.

Do **not** pass `--milestone` — follow-ups are future work and should not inherit the current sprint.

Do **not** pass `--assignee @me` — these are backlog items, not immediately assigned.

If a single `gh issue create` call fails, report the failure for that finding and continue with the remaining selections.

**Report the result:**
- If one or more issues were created: `"Created N follow-up issue(s): #X, #Y, #Z"`.
- If the user chose `none` or all creations were skipped: say nothing further, proceed to end.

---

## Important constraints

- Never skip `make check`. A failed check is a hard stop.
Expand All @@ -208,4 +258,5 @@ Report success based on mode:
- When `ai` is `"off"`, skip the review agent entirely — merge immediately after checks pass.
- `/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.
<!-- generated by CodeCannon/sync.sh | skill: submit-for-review | adapter: codex | hash: 1675613b | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
- 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: a10214da | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .claude/commands/deploy.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Bump the project version, create a GitHub Release, and promote to production — handles both versioning and releasing in one step
Code Cannon: Bump the project version, create a GitHub Release, and promote to production — handles both versioning and releasing in one step

---

Expand Down Expand Up @@ -230,4 +230,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: 4e4a48f5 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: deploy | adapter: claude | hash: e0dd0480 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .claude/commands/qa.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
View the QA queue or review a specific issue
Code Cannon: View the QA queue or review a specific issue

---

Expand Down 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: ac0a4a39 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: qa | adapter: claude | hash: 7779c669 | 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
@@ -1,4 +1,4 @@
Run a standalone code review on a pull request
Code Cannon: Run a standalone code review on a pull request

---

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: 3ae6766a | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: review | adapter: claude | hash: 87cdfdad | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .claude/commands/setup.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Detect setup state, guide first-time configuration, populate labels, and walk through optional config values
Code Cannon: Detect setup state, guide first-time configuration, populate labels, and walk through optional config values

---

Expand Down Expand Up @@ -470,4 +470,4 @@ Add a note: `/start` can be used to create well-formed GitHub issues without wri
- 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: 1704e176 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: setup | adapter: claude | hash: e2f06373 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .claude/commands/start.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Start a new feature or bugfix
Code Cannon: Start a new feature or bugfix

---

Expand Down Expand Up @@ -225,4 +225,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 CodeCannon/sync.sh | skill: start | adapter: claude | hash: 7dea2caf | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: start | adapter: claude | hash: 972bf405 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .claude/commands/status.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Summarize in-progress and recently completed work from GitHub and git
Code Cannon: Summarize in-progress and recently completed work from GitHub and git

---

Expand Down Expand Up @@ -236,4 +236,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: 9e27a4dc | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: status | adapter: claude | hash: eb38c883 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
55 changes: 53 additions & 2 deletions .claude/commands/submit-for-review.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Type-check, commit, open PR, review, and merge to the integration branch
Code Cannon: Type-check, commit, open PR, review, and merge to the integration branch

---

Expand Down Expand Up @@ -195,6 +195,56 @@ Report success based on mode:

---

## Step 9 — Offer follow-up issues for non-blocking findings

**Gate this step entirely** if any of the following are true:
- `ai` is `"off"` (no review was performed).
- The merge in Step 8 did not actually happen (e.g. `ai` mode with REQUEST CHANGES).
- The review output contains no non-blocking findings.

**Collect non-blocking findings** from the review output retained from Step 7:
- Always include lines starting with `[WARNING]` or `[NOTE]`.
- If `ai` is `"advisory"`, also include any `[CRITICAL]` lines — the user chose to merge over them, so they are now follow-up candidates too.
- If `ai` is `"ai"`, do not include `[CRITICAL]` lines (there should not be any on the merge path, but guard anyway).

If the collected list is empty, skip the rest of this step silently.

**Present and ask once.** Show the findings as a numbered list (preserve the `[WARNING]` / `[NOTE]` / `[CRITICAL]` prefix in the display for clarity) and ask exactly:

> "The review flagged N non-blocking finding(s). Create follow-up issues for any of them? Enter numbers (e.g. `1,3`), `all`, or `none`."

Accept: comma-separated numbers, `all`, or `none`/`skip`/empty. If the input is unparseable, re-prompt once; if still invalid, treat as `none` and move on.

**Create the selected issues.** For each selected finding, run `gh issue create` with explicit flags:

```
gh issue create \
--title "<finding text with [WARNING]/[NOTE]/[CRITICAL] prefix stripped, trimmed to a standalone sentence>" \
--body "$(cat <<'EOF'
Follow-up from PR #<merged-pr-number> — auto-proposed from the code review.

**Finding:** <full finding text, prefix included>

See the review comment on the PR for context.
EOF
)" \
[--label "<pool-selected labels>"]
```

Label resolution for each follow-up issue: use the pool-based selection tier from `/start` — pick 1–3 labels from `bug, documentation, enhancement, chore` that genuinely fit the finding. If `bug, documentation, enhancement, chore` is empty or no pool label fits, omit `--label`. Do not attempt per-invocation flag resolution (there is no flag here) and do not create new labels regardless of `false`.

Do **not** pass `--milestone` — follow-ups are future work and should not inherit the current sprint.

Do **not** pass `--assignee @me` — these are backlog items, not immediately assigned.

If a single `gh issue create` call fails, report the failure for that finding and continue with the remaining selections.

**Report the result:**
- If one or more issues were created: `"Created N follow-up issue(s): #X, #Y, #Z"`.
- If the user chose `none` or all creations were skipped: say nothing further, proceed to end.

---

## Important constraints

- Never skip `make check`. A failed check is a hard stop.
Expand All @@ -203,4 +253,5 @@ Report success based on mode:
- When `ai` is `"off"`, skip the review agent entirely — merge immediately after checks pass.
- `/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.
<!-- generated by CodeCannon/sync.sh | skill: submit-for-review | adapter: claude | hash: 90e3dd51 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
- 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: 29a2a831 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
Loading