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
6 changes: 3 additions & 3 deletions .agents/skills/review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,14 +55,14 @@ The review must:

After the review agent completes, relay its verdict to the user:

- **APPROVE** → "Review passed. Run `/ship` to merge (or it may already be merged if called from `/ship`)."
- **APPROVE** → "Review passed. Run `/submit-for-review` to merge (or it may already be merged if called from `/submit-for-review`)."
- **REQUEST CHANGES** → Surface the CRITICAL findings. Say: "Fix the issues above and run `/review` again before merging."

---

## Important

- This command does not commit, push, or merge anything. It only reviews.
- It may be called manually at any time, not just from `/ship`.
- 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: e4579e5e | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: review | adapter: codex | hash: e781dae2 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
8 changes: 4 additions & 4 deletions .agents/skills/setup/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ List the available skills:
| Skill | What it does |
|---|---|
| `/start` | Creates a GitHub issue, feature branch, and writes code |
| `/ship` | Checks, commits, opens PR, spawns review agent, merges |
| `/submit-for-review` | Checks, commits, opens PR, spawns review agent, merges |
| `/review` | Standalone code review on any PR |
| `/deploy` | Bumps version, creates GitHub Release, promotes to production |
| `/status` | Snapshot of open PRs and issues for the team |
Expand Down Expand Up @@ -130,7 +130,7 @@ Cannot proceed without it. Stop.
gh repo view --json name
```

If exit code is non-zero: warn that most skills require a GitHub remote. Skills can be read and configured, but `/start`, `/ship`, `/review`, `/deploy`, and `/status` will fail without one. This is not a hard stop — ask if the user wants to continue configuring anyway.
If exit code is non-zero: warn that most skills require a GitHub remote. Skills can be read and configured, but `/start`, `/submit-for-review`, `/review`, `/deploy`, and `/status` will fail without one. This is not a hard stop — ask if the user wants to continue configuring anyway.

### Check 5 — .codecannon.yaml present

Expand Down Expand Up @@ -389,7 +389,7 @@ Ask: "Which milestone should new issues go under, if any? (name, number, or 'ski

**DEFAULT_REVIEWERS** (Standard, Governed, and Custom)

"Comma-separated GitHub handles or team slugs that `/ship` adds as PR reviewers — leave unset to rely on CODEOWNERS or manual assignment."
"Comma-separated GitHub handles or team slugs that `/submit-for-review` adds as PR reviewers — leave unset to rely on CODEOWNERS or manual assignment."

Example: `DEFAULT_REVIEWERS: "@alice,@bob"`

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: 377f68d4 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: setup | adapter: codex | hash: fa142ad2 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
10 changes: 5 additions & 5 deletions .agents/skills/start/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,9 @@ Show the user: `On branch feature/<name>`

Now write the code. Do NOT commit anything.

When done, say: **"The code is ready for review. Please run `make dev` and test locally. Let me know if it looks good, needs changes, or should be scrapped. When you're happy, run `/ship` to commit, push, and open a PR."**
When done, say: **"The code is ready for review. Please run `make dev` and test locally. Let me know if it looks good, needs changes, or should be scrapped. When you're happy, run `/submit-for-review` to commit, push, and open a PR."**

- User says looks good → run `/ship`
- User says looks good → run `/submit-for-review`
- User requests changes → iterate, repeat this message
- User says scrap it → run `make abandon`

Expand Down Expand Up @@ -210,18 +210,18 @@ gh issue comment <number> --body "Resuming work. <brief note on what's being con

Continue from where work left off. Do NOT commit.

When done, say: **"The code is ready for review. Please run `make dev` and test locally. When you're happy, run `/ship` to commit, push, and open a PR."**
When done, say: **"The code is ready for review. Please run `make dev` and test locally. When you're happy, run `/submit-for-review` to commit, push, and open a PR."**

---

## Hard rules

- Do not write or edit any source file before `git branch --show-current` shows `feature/*`.
- Do not use `make branch` — always use `gh issue develop` so the branch is linked to the issue in GitHub.
- Do not commit during `/start` — commits happen in `/ship`.
- Do not commit during `/start` — commits happen in `/submit-for-review`.
- If already on a feature branch when `/start` is invoked, warn the user before creating another branch.
- `gh issue create` must use `--title` and `--body` flags. Never open an interactive editor.
- 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: 049a7dca | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: start | adapter: codex | hash: 93558f45 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
name: ship
name: submit-for-review
description: 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.

---

## What `/ship` does
## What `/submit-for-review` does

`/ship` is Phase 3 of the workflow: type-check, commit, open PR, spawn review agent, act on verdict.
`/submit-for-review` is Phase 3 of the workflow: type-check, commit, open PR, spawn review agent, act on verdict.

---

Expand All @@ -26,7 +26,7 @@ Protected branches (not a feature branch):

If the current branch matches any of the above, **abort immediately** and say:

> "You are on `<branch>`. `/ship` must be run from a feature branch. Switch to your feature branch first."
> "You are on `<branch>`. `/submit-for-review` must be run from a feature branch. Switch to your feature branch first."

---

Expand Down Expand Up @@ -176,9 +176,9 @@ Apply QA label and report success (see below).

**If REQUEST CHANGES (at least one CRITICAL finding):** Report the findings to the user. Do NOT merge. Say:

> "The review found blocking issues (see above). Fix them and run `/ship` again."
> "The review found blocking issues (see above). Fix them and run `/submit-for-review` again."

Return to the coding loop. When fixed, run `/ship` again from Step 1.
Return to the coding loop. When fixed, run `/submit-for-review` again from Step 1.

---

Expand All @@ -201,6 +201,6 @@ Report success based on mode:
- When `ai` is `"ai"`, never merge if the review verdict is REQUEST CHANGES.
- When `ai` is `"advisory"`, always merge after review completes, regardless of verdict.
- When `ai` is `"off"`, skip the review agent entirely — merge immediately after checks pass.
- `/ship` merges only to `dev` — never directly to `main`.
- `/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: ship | adapter: codex | hash: 3c4af17f | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: submit-for-review | adapter: codex | hash: 6b6ae4e7 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
6 changes: 3 additions & 3 deletions .claude/commands/review.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,14 @@ The review must:

After the review agent completes, relay its verdict to the user:

- **APPROVE** → "Review passed. Run `/ship` to merge (or it may already be merged if called from `/ship`)."
- **APPROVE** → "Review passed. Run `/submit-for-review` to merge (or it may already be merged if called from `/submit-for-review`)."
- **REQUEST CHANGES** → Surface the CRITICAL findings. Say: "Fix the issues above and run `/review` again before merging."

---

## Important

- This command does not commit, push, or merge anything. It only reviews.
- It may be called manually at any time, not just from `/ship`.
- 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: bcc66c99 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: review | adapter: claude | hash: 3ae6766a | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
8 changes: 4 additions & 4 deletions .claude/commands/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ List the available skills:
| Skill | What it does |
|---|---|
| `/start` | Creates a GitHub issue, feature branch, and writes code |
| `/ship` | Checks, commits, opens PR, spawns review agent, merges |
| `/submit-for-review` | Checks, commits, opens PR, spawns review agent, merges |
| `/review` | Standalone code review on any PR |
| `/deploy` | Bumps version, creates GitHub Release, promotes to production |
| `/status` | Snapshot of open PRs and issues for the team |
Expand Down Expand Up @@ -125,7 +125,7 @@ Cannot proceed without it. Stop.
gh repo view --json name
```

If exit code is non-zero: warn that most skills require a GitHub remote. Skills can be read and configured, but `/start`, `/ship`, `/review`, `/deploy`, and `/status` will fail without one. This is not a hard stop — ask if the user wants to continue configuring anyway.
If exit code is non-zero: warn that most skills require a GitHub remote. Skills can be read and configured, but `/start`, `/submit-for-review`, `/review`, `/deploy`, and `/status` will fail without one. This is not a hard stop — ask if the user wants to continue configuring anyway.

### Check 5 — .codecannon.yaml present

Expand Down Expand Up @@ -384,7 +384,7 @@ Ask: "Which milestone should new issues go under, if any? (name, number, or 'ski

**DEFAULT_REVIEWERS** (Standard, Governed, and Custom)

"Comma-separated GitHub handles or team slugs that `/ship` adds as PR reviewers — leave unset to rely on CODEOWNERS or manual assignment."
"Comma-separated GitHub handles or team slugs that `/submit-for-review` adds as PR reviewers — leave unset to rely on CODEOWNERS or manual assignment."

Example: `DEFAULT_REVIEWERS: "@alice,@bob"`

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: 1b25ab70 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: setup | adapter: claude | hash: 1704e176 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
10 changes: 5 additions & 5 deletions .claude/commands/start.md
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,9 @@ Show the user: `On branch feature/<name>`

Now write the code. Do NOT commit anything.

When done, say: **"The code is ready for review. Please run `make dev` and test locally. Let me know if it looks good, needs changes, or should be scrapped. When you're happy, run `/ship` to commit, push, and open a PR."**
When done, say: **"The code is ready for review. Please run `make dev` and test locally. Let me know if it looks good, needs changes, or should be scrapped. When you're happy, run `/submit-for-review` to commit, push, and open a PR."**

- User says looks good → run `/ship`
- User says looks good → run `/submit-for-review`
- User requests changes → iterate, repeat this message
- User says scrap it → run `make abandon`

Expand Down Expand Up @@ -205,18 +205,18 @@ gh issue comment <number> --body "Resuming work. <brief note on what's being con

Continue from where work left off. Do NOT commit.

When done, say: **"The code is ready for review. Please run `make dev` and test locally. When you're happy, run `/ship` to commit, push, and open a PR."**
When done, say: **"The code is ready for review. Please run `make dev` and test locally. When you're happy, run `/submit-for-review` to commit, push, and open a PR."**

---

## Hard rules

- Do not write or edit any source file before `git branch --show-current` shows `feature/*`.
- Do not use `make branch` — always use `gh issue develop` so the branch is linked to the issue in GitHub.
- Do not commit during `/start` — commits happen in `/ship`.
- Do not commit during `/start` — commits happen in `/submit-for-review`.
- If already on a feature branch when `/start` is invoked, warn the user before creating another branch.
- `gh issue create` must use `--title` and `--body` flags. Never open an interactive editor.
- 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: 1bf6f473 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: start | adapter: claude | hash: 7e4f2474 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ Type-check, commit, open PR, review, and merge to the integration branch

---

## What `/ship` does
## What `/submit-for-review` does

`/ship` is Phase 3 of the workflow: type-check, commit, open PR, spawn review agent, act on verdict.
`/submit-for-review` is Phase 3 of the workflow: type-check, commit, open PR, spawn review agent, act on verdict.

---

Expand All @@ -21,7 +21,7 @@ Protected branches (not a feature branch):

If the current branch matches any of the above, **abort immediately** and say:

> "You are on `<branch>`. `/ship` must be run from a feature branch. Switch to your feature branch first."
> "You are on `<branch>`. `/submit-for-review` must be run from a feature branch. Switch to your feature branch first."

---

Expand Down Expand Up @@ -171,9 +171,9 @@ Apply QA label and report success (see below).

**If REQUEST CHANGES (at least one CRITICAL finding):** Report the findings to the user. Do NOT merge. Say:

> "The review found blocking issues (see above). Fix them and run `/ship` again."
> "The review found blocking issues (see above). Fix them and run `/submit-for-review` again."

Return to the coding loop. When fixed, run `/ship` again from Step 1.
Return to the coding loop. When fixed, run `/submit-for-review` again from Step 1.

---

Expand All @@ -196,6 +196,6 @@ Report success based on mode:
- When `ai` is `"ai"`, never merge if the review verdict is REQUEST CHANGES.
- When `ai` is `"advisory"`, always merge after review completes, regardless of verdict.
- When `ai` is `"off"`, skip the review agent entirely — merge immediately after checks pass.
- `/ship` merges only to `dev` — never directly to `main`.
- `/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: ship | adapter: claude | hash: cf62cc83 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: submit-for-review | adapter: claude | hash: 21e01349 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .cursor/rules/deploy.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ globs:
alwaysApply: false
---

> **Cursor:** Trigger this skill via `@deploy` in Agent mode. State any arguments in your message. Sub-agent spawning is not supported — the automated review step in `/ship` must be done manually using the review-agent prompt.
> **Cursor:** Trigger this skill via `@deploy` in Agent mode. State any arguments in your message. Sub-agent spawning is not supported — the automated review step in `/submit-for-review` must be done manually using the review-agent prompt.

---

Expand Down Expand Up @@ -236,4 +236,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: cursor | hash: 8e8ab892 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: deploy | adapter: cursor | hash: 415c91f9 | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
4 changes: 2 additions & 2 deletions .cursor/rules/qa.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ globs:
alwaysApply: false
---

> **Cursor:** Trigger this skill via `@qa` in Agent mode. State any arguments in your message. Sub-agent spawning is not supported — the automated review step in `/ship` must be done manually using the review-agent prompt.
> **Cursor:** Trigger this skill via `@qa` in Agent mode. State any arguments in your message. Sub-agent spawning is not supported — the automated review step in `/submit-for-review` must be done manually using the review-agent prompt.

---

Expand Down Expand Up @@ -142,4 +142,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: cursor | hash: 62afe5ef | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
<!-- generated by CodeCannon/sync.sh | skill: qa | adapter: cursor | hash: 1b3e39ac | DO NOT EDIT — run CodeCannon/sync.sh to regenerate -->
Loading