From 70f4e4ca21dd207d2d5a89e572af62d4750fa88f Mon Sep 17 00:00:00 2001 From: Sebastien Taggart Date: Thu, 26 Mar 2026 19:52:41 -0400 Subject: [PATCH 1/2] Rename /ship skill to /submit-for-review and add parallel branch guidance Rename the ship skill to submit-for-review across all source files, adapter configs, documentation, and templates. Run sync.sh to regenerate all adapter files. Add a "Working on parallel branches" section to docs/branching.md with guidance on sequencing cross-cutting changes to avoid merge conflicts. Co-Authored-By: Claude Opus 4.6 (1M context) --- .agents/skills/review/SKILL.md | 6 ++-- .agents/skills/setup/SKILL.md | 8 +++--- .agents/skills/start/SKILL.md | 10 +++---- .../{ship => submit-for-review}/SKILL.md | 16 +++++------ .claude/commands/review.md | 6 ++-- .claude/commands/setup.md | 8 +++--- .claude/commands/start.md | 10 +++---- .../{ship.md => submit-for-review.md} | 14 +++++----- .cursor/rules/deploy.mdc | 4 +-- .cursor/rules/qa.mdc | 4 +-- .cursor/rules/review.mdc | 8 +++--- .cursor/rules/setup.mdc | 10 +++---- .cursor/rules/start.mdc | 12 ++++---- .cursor/rules/status.mdc | 4 +-- .../rules/{ship.mdc => submit-for-review.mdc} | 16 +++++------ .gemini/skills/deploy/SKILL.md | 4 +-- .gemini/skills/qa/SKILL.md | 4 +-- .gemini/skills/review/SKILL.md | 8 +++--- .gemini/skills/setup/SKILL.md | 10 +++---- .gemini/skills/start/SKILL.md | 12 ++++---- .gemini/skills/status/SKILL.md | 4 +-- .../{ship => submit-for-review}/SKILL.md | 18 ++++++------ AGENTS.md | 2 +- README.md | 10 +++---- ROADMAP.md | 4 +-- adapters/codex/config.yaml | 2 +- adapters/cursor/config.yaml | 2 +- adapters/cursor/header.md | 2 +- adapters/gemini/config.yaml | 2 +- adapters/gemini/header.md | 2 +- config.schema.yaml | 26 ++++++++--------- docs/adapters.md | 8 +++--- docs/branching.md | 28 ++++++++++++------- docs/config-reference.md | 16 +++++------ docs/customization.md | 8 +++--- docs/index.md | 10 +++---- docs/skills/qa.md | 2 +- docs/skills/review.md | 6 ++-- docs/skills/start.md | 2 +- docs/skills/{ship.md => submit-for-review.md} | 20 ++++++------- skills/qa.md | 2 +- skills/review-agent.md | 2 +- skills/review.md | 4 +-- skills/setup.md | 6 ++-- skills/start.md | 8 +++--- skills/{ship.md => submit-for-review.md} | 14 +++++----- sync.sh | 2 +- templates/AGENTS.md.template | 14 +++++----- templates/codecannon.yaml | 8 +++--- 49 files changed, 208 insertions(+), 200 deletions(-) rename .agents/skills/{ship => submit-for-review}/SKILL.md (89%) rename .claude/commands/{ship.md => submit-for-review.md} (89%) rename .cursor/rules/{ship.mdc => submit-for-review.mdc} (86%) rename .gemini/skills/{ship => submit-for-review}/SKILL.md (87%) rename docs/skills/{ship.md => submit-for-review.md} (75%) rename skills/{ship.md => submit-for-review.md} (93%) diff --git a/.agents/skills/review/SKILL.md b/.agents/skills/review/SKILL.md index b30cece..1e8617a 100644 --- a/.agents/skills/review/SKILL.md +++ b/.agents/skills/review/SKILL.md @@ -55,7 +55,7 @@ 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." --- @@ -63,6 +63,6 @@ After the review agent completes, relay its verdict to the user: ## 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. - + diff --git a/.agents/skills/setup/SKILL.md b/.agents/skills/setup/SKILL.md index 92f45c7..7c0c4dc 100644 --- a/.agents/skills/setup/SKILL.md +++ b/.agents/skills/setup/SKILL.md @@ -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 | @@ -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 @@ -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"` @@ -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. - + diff --git a/.agents/skills/start/SKILL.md b/.agents/skills/start/SKILL.md index 3a96868..924bf34 100644 --- a/.agents/skills/start/SKILL.md +++ b/.agents/skills/start/SKILL.md @@ -150,9 +150,9 @@ Show the user: `On branch feature/` 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` @@ -210,7 +210,7 @@ gh issue comment --body "Resuming work. --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. - + diff --git a/.agents/skills/ship/SKILL.md b/.agents/skills/submit-for-review/SKILL.md similarity index 89% rename from .agents/skills/ship/SKILL.md rename to .agents/skills/submit-for-review/SKILL.md index 98026de..7286455 100644 --- a/.agents/skills/ship/SKILL.md +++ b/.agents/skills/submit-for-review/SKILL.md @@ -1,5 +1,5 @@ --- -name: ship +name: submit-for-review description: Type-check, commit, open PR, review, and merge to the integration branch --- @@ -7,9 +7,9 @@ description: Type-check, commit, open PR, review, and merge to the integration b --- -## 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. --- @@ -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 ``. `/ship` must be run from a feature branch. Switch to your feature branch first." +> "You are on ``. `/submit-for-review` must be run from a feature branch. Switch to your feature branch first." --- @@ -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. --- @@ -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. - + diff --git a/.claude/commands/review.md b/.claude/commands/review.md index d83f263..1e44882 100644 --- a/.claude/commands/review.md +++ b/.claude/commands/review.md @@ -50,7 +50,7 @@ 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." --- @@ -58,6 +58,6 @@ After the review agent completes, relay its verdict to the user: ## 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. - + diff --git a/.claude/commands/setup.md b/.claude/commands/setup.md index ba2edf7..884406f 100644 --- a/.claude/commands/setup.md +++ b/.claude/commands/setup.md @@ -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 | @@ -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 @@ -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"` @@ -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. - + diff --git a/.claude/commands/start.md b/.claude/commands/start.md index f9bf938..67b188f 100644 --- a/.claude/commands/start.md +++ b/.claude/commands/start.md @@ -145,9 +145,9 @@ Show the user: `On branch feature/` 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` @@ -205,7 +205,7 @@ gh issue comment --body "Resuming work. --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. - + diff --git a/.claude/commands/ship.md b/.claude/commands/submit-for-review.md similarity index 89% rename from .claude/commands/ship.md rename to .claude/commands/submit-for-review.md index 2be406e..ed0d6da 100644 --- a/.claude/commands/ship.md +++ b/.claude/commands/submit-for-review.md @@ -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. --- @@ -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 ``. `/ship` must be run from a feature branch. Switch to your feature branch first." +> "You are on ``. `/submit-for-review` must be run from a feature branch. Switch to your feature branch first." --- @@ -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. --- @@ -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. - + diff --git a/.cursor/rules/deploy.mdc b/.cursor/rules/deploy.mdc index 973a1a1..096256f 100644 --- a/.cursor/rules/deploy.mdc +++ b/.cursor/rules/deploy.mdc @@ -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. --- @@ -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 ``. Run `make deploy-prod` to ship to production." - + diff --git a/.cursor/rules/qa.mdc b/.cursor/rules/qa.mdc index caa66c7..778a80f 100644 --- a/.cursor/rules/qa.mdc +++ b/.cursor/rules/qa.mdc @@ -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. --- @@ -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. - + diff --git a/.cursor/rules/review.mdc b/.cursor/rules/review.mdc index 2614955..3834fc8 100644 --- a/.cursor/rules/review.mdc +++ b/.cursor/rules/review.mdc @@ -4,7 +4,7 @@ globs: alwaysApply: false --- -> **Cursor:** Trigger this skill via `@review` 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 `@review` 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. --- @@ -56,7 +56,7 @@ 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." --- @@ -64,6 +64,6 @@ After the review agent completes, relay its verdict to the user: ## 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. - + diff --git a/.cursor/rules/setup.mdc b/.cursor/rules/setup.mdc index 6251a67..3809a98 100644 --- a/.cursor/rules/setup.mdc +++ b/.cursor/rules/setup.mdc @@ -4,7 +4,7 @@ globs: alwaysApply: false --- -> **Cursor:** Trigger this skill via `@setup` 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 `@setup` 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. --- @@ -60,7 +60,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 | @@ -131,7 +131,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 @@ -390,7 +390,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"` @@ -476,4 +476,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. - + diff --git a/.cursor/rules/start.mdc b/.cursor/rules/start.mdc index 8ae7b78..302a88e 100644 --- a/.cursor/rules/start.mdc +++ b/.cursor/rules/start.mdc @@ -4,7 +4,7 @@ globs: alwaysApply: false --- -> **Cursor:** Trigger this skill via `@start` 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 `@start` 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. --- @@ -151,9 +151,9 @@ Show the user: `On branch feature/` 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` @@ -211,7 +211,7 @@ gh issue comment --body "Resuming work. --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. - + diff --git a/.cursor/rules/status.mdc b/.cursor/rules/status.mdc index f0b5c8e..8c4d88d 100644 --- a/.cursor/rules/status.mdc +++ b/.cursor/rules/status.mdc @@ -4,7 +4,7 @@ globs: alwaysApply: false --- -> **Cursor:** Trigger this skill via `@status` 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 `@status` 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. --- @@ -181,4 +181,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. - + diff --git a/.cursor/rules/ship.mdc b/.cursor/rules/submit-for-review.mdc similarity index 86% rename from .cursor/rules/ship.mdc rename to .cursor/rules/submit-for-review.mdc index 86d0b9d..d1aabc4 100644 --- a/.cursor/rules/ship.mdc +++ b/.cursor/rules/submit-for-review.mdc @@ -4,13 +4,13 @@ globs: alwaysApply: false --- -> **Cursor:** Trigger this skill via `@ship` 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 `@submit-for-review` 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. --- -## 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. --- @@ -27,7 +27,7 @@ Protected branches (not a feature branch): If the current branch matches any of the above, **abort immediately** and say: -> "You are on ``. `/ship` must be run from a feature branch. Switch to your feature branch first." +> "You are on ``. `/submit-for-review` must be run from a feature branch. Switch to your feature branch first." --- @@ -177,9 +177,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. --- @@ -202,6 +202,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. - + diff --git a/.gemini/skills/deploy/SKILL.md b/.gemini/skills/deploy/SKILL.md index fe44e6f..81d0f8d 100644 --- a/.gemini/skills/deploy/SKILL.md +++ b/.gemini/skills/deploy/SKILL.md @@ -3,7 +3,7 @@ name: deploy description: Bump the project version, create a GitHub Release, and promote to production — handles both versioning and releasing in one step --- -> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. +> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. --- @@ -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 ``. Run `make deploy-prod` to ship to production." - + diff --git a/.gemini/skills/qa/SKILL.md b/.gemini/skills/qa/SKILL.md index 97fea27..5e768dc 100644 --- a/.gemini/skills/qa/SKILL.md +++ b/.gemini/skills/qa/SKILL.md @@ -3,7 +3,7 @@ name: qa description: View the QA queue or review a specific issue --- -> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. +> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. --- @@ -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. - + diff --git a/.gemini/skills/review/SKILL.md b/.gemini/skills/review/SKILL.md index 73f565f..539095c 100644 --- a/.gemini/skills/review/SKILL.md +++ b/.gemini/skills/review/SKILL.md @@ -3,7 +3,7 @@ name: review description: Run a standalone code review on a pull request --- -> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. +> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. --- @@ -55,7 +55,7 @@ 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." --- @@ -63,6 +63,6 @@ After the review agent completes, relay its verdict to the user: ## 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. - + diff --git a/.gemini/skills/setup/SKILL.md b/.gemini/skills/setup/SKILL.md index 0b7a0cc..c91640b 100644 --- a/.gemini/skills/setup/SKILL.md +++ b/.gemini/skills/setup/SKILL.md @@ -3,7 +3,7 @@ name: setup description: Detect setup state, guide first-time configuration, populate labels, and walk through optional config values --- -> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. +> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. --- @@ -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 | @@ -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 @@ -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"` @@ -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. - + diff --git a/.gemini/skills/start/SKILL.md b/.gemini/skills/start/SKILL.md index 0b45ced..ea4f3d9 100644 --- a/.gemini/skills/start/SKILL.md +++ b/.gemini/skills/start/SKILL.md @@ -3,7 +3,7 @@ name: start description: Start a new feature or bugfix --- -> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. +> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. --- @@ -150,9 +150,9 @@ Show the user: `On branch feature/` 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` @@ -210,7 +210,7 @@ gh issue comment --body "Resuming work. --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. - + diff --git a/.gemini/skills/status/SKILL.md b/.gemini/skills/status/SKILL.md index 364ea21..4a58c99 100644 --- a/.gemini/skills/status/SKILL.md +++ b/.gemini/skills/status/SKILL.md @@ -3,7 +3,7 @@ name: status description: Summarize in-progress and recently completed work from GitHub and git --- -> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. +> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. --- @@ -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. - + diff --git a/.gemini/skills/ship/SKILL.md b/.gemini/skills/submit-for-review/SKILL.md similarity index 87% rename from .gemini/skills/ship/SKILL.md rename to .gemini/skills/submit-for-review/SKILL.md index 37882a2..a4e885f 100644 --- a/.gemini/skills/ship/SKILL.md +++ b/.gemini/skills/submit-for-review/SKILL.md @@ -1,15 +1,15 @@ --- -name: ship +name: submit-for-review description: Type-check, commit, open PR, review, and merge to the integration branch --- -> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. +> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. --- -## 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. --- @@ -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 ``. `/ship` must be run from a feature branch. Switch to your feature branch first." +> "You are on ``. `/submit-for-review` must be run from a feature branch. Switch to your feature branch first." --- @@ -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. --- @@ -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. - + diff --git a/AGENTS.md b/AGENTS.md index 45ed045..13aea66 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -49,7 +49,7 @@ cd /path/to/a/consumer/project ## Self-hosting: using Code Cannon to develop Code Cannon - **Sync path exception**: agents working on this repo run `./sync.sh`, not `CodeCannon/sync.sh`. Every consumer project uses `CodeCannon/sync.sh` via the submodule path — this repo is the only exception. -- **Edit-test loop**: edit a skill in `skills/` → `make check` to validate placeholders → `make dev` to preview generated output → commit and `/ship`. +- **Edit-test loop**: edit a skill in `skills/` → `make check` to validate placeholders → `make dev` to preview generated output → commit and `/submit-for-review`. - **Re-run sync after skill edits**: after changing any file in `skills/`, run `./sync.sh` to regenerate `.claude/commands/`. Commit the updated generated files in the same PR as the skill source change. - **Never edit `.claude/commands/` directly** — those files are generated. Edit the source skill in `skills/` and re-run sync. diff --git a/README.md b/README.md index c9d5121..b1799a6 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Code Cannon -A portable agent workflow skill library. Write your team's development workflow once — start, ship, review, deploy — and sync it to Claude Code, Cursor, and other AI coding agents across all your projects. +A portable agent workflow skill library. Write your team's development workflow once — start, submit-for-review, review, deploy — and sync it to Claude Code, Cursor, and other AI coding agents across all your projects. Repository: [github.com/LightbridgeLab/CodeCannon](https://github.com/LightbridgeLab/CodeCannon) @@ -26,11 +26,11 @@ One source of truth. Every project. Every agent. **A complete development workflow in five commands:** ``` -/start → [code + test] → /ship → [QA] → /deploy +/start → [code + test] → /submit-for-review → [QA] → /deploy ``` - `/start` — creates a GitHub issue, feature branch, and writes code (with human approval before any work begins) -- `/ship` — checks, commits, opens PR, runs AI review, merges +- `/submit-for-review` — checks, commits, opens PR, runs AI review, merges - `/review` — standalone code review on any PR - `/deploy` — bumps version, creates a GitHub Release, promotes to production - `/status` — standup-ready snapshot of PRs, issues, and progress @@ -59,7 +59,7 @@ How this maps to Code Cannon behavior: For first-time setup, run `/setup`; it can populate labels and walk through these options interactively. -**Reviewer selection is never automatic.** `/ship` adds reviewers only from two sources: a detected `CODEOWNERS` file (checked in `CODEOWNERS`, `.github/CODEOWNERS`, and `docs/CODEOWNERS`) and the `DEFAULT_REVIEWERS` config key. The agent never infers reviewers from git history, blame, or team membership. +**Reviewer selection is never automatic.** `/submit-for-review` adds reviewers only from two sources: a detected `CODEOWNERS` file (checked in `CODEOWNERS`, `.github/CODEOWNERS`, and `docs/CODEOWNERS`) and the `DEFAULT_REVIEWERS` config key. The agent never infers reviewers from git history, blame, or team membership. **Configure, don't fork.** Skills use `{{PLACEHOLDER}}` tokens for project-specific values. Your `.codecannon.yaml` fills them in. When upstream skills improve, pull the submodule and re-sync. @@ -96,7 +96,7 @@ Or run `/setup` for a guided walkthrough that detects your project state and con | Skill | Docs | Description | |---|---|---| | `/start` | [docs](docs/skills/start.md) | Create a GitHub issue, branch, and write code | -| `/ship` | [docs](docs/skills/ship.md) | Check, commit, open PR, review, merge | +| `/submit-for-review` | [docs](docs/skills/submit-for-review.md) | Check, commit, open PR, review, merge | | `/review` | [docs](docs/skills/review.md) | Standalone code review on a PR | | `/deploy` | [docs](docs/skills/deploy.md) | Bump version, create GitHub Release, promote to production | | `/qa` | [docs](docs/skills/qa.md) | QA queue and structured review workflow | diff --git a/ROADMAP.md b/ROADMAP.md index f05c2e3..dc93600 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -4,14 +4,14 @@ Ideas and future work. Not prioritized — just captured so they don't get lost. ## Swarm mode / multi-agent workflows -The current skill set (start/ship/review/version/release) assumes **deep mode**: one issue, one branch, one coherent PR. This works well for disciplined, sequential work. +The current skill set (start/submit-for-review/review/version/release) assumes **deep mode**: one issue, one branch, one coherent PR. This works well for disciplined, sequential work. In practice, developers often run multiple agents simultaneously on unrelated tasks — "swarm mode." This resists the ticket-per-change structure because the agents share a working directory and branch. Worktrees could isolate agents, but only Claude Code supports them natively; Cursor, Codex, and Gemini don't. Possible additions: - **`/checkpoint` skill** — commit and push WIP without the full ship ceremony. Gives save points during swarm mode without pretending each save is a reviewable unit. -- **Worktree launcher** — a `make agent name=` target that creates a worktree, launches an agent with `/start`, and registers cleanup after `/ship`. Orchestration layer outside the skills themselves. +- **Worktree launcher** — a `make agent name=` target that creates a worktree, launches an agent with `/start`, and registers cleanup after `/submit-for-review`. Orchestration layer outside the skills themselves. - **Conflict detection** — warn when multiple agents are modifying overlapping files on the same branch. Decision for now: better discipline (one agent per issue, sequential) is the right path. Revisit when the pain of sequential work outweighs the cost of coordination tooling. diff --git a/adapters/codex/config.yaml b/adapters/codex/config.yaml index 95c7000..cf3d006 100644 --- a/adapters/codex/config.yaml +++ b/adapters/codex/config.yaml @@ -3,6 +3,6 @@ description: OpenAI Codex CLI agent skills output_directory: .agents/skills output_extension: /SKILL.md notes: | - Sub-agent spawning (used in the /ship review step) is not available in Codex CLI. + Sub-agent spawning (used in the /submit-for-review review step) is not available in Codex CLI. That step must be performed manually by pasting the review-agent prompt into a new session. Skills are triggered by description matching or via the $skill-creator built-in. diff --git a/adapters/cursor/config.yaml b/adapters/cursor/config.yaml index 2b6adbf..91e36ae 100644 --- a/adapters/cursor/config.yaml +++ b/adapters/cursor/config.yaml @@ -3,6 +3,6 @@ description: Cursor agent-requested rules output_directory: .cursor/rules output_extension: .mdc notes: | - Sub-agent spawning (used in the /ship review step) is not available in Cursor. + Sub-agent spawning (used in the /submit-for-review review step) is not available in Cursor. That step must be performed manually by pasting the review-agent prompt into a new chat. Users trigger rules via @rulename in Agent mode, or the agent requests them by description. diff --git a/adapters/cursor/header.md b/adapters/cursor/header.md index dbc1c49..a87c21f 100644 --- a/adapters/cursor/header.md +++ b/adapters/cursor/header.md @@ -4,7 +4,7 @@ globs: alwaysApply: false --- -> **Cursor:** Trigger this skill via `@{skill}` 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 `@{skill}` 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. --- diff --git a/adapters/gemini/config.yaml b/adapters/gemini/config.yaml index 547b53a..5bc4498 100644 --- a/adapters/gemini/config.yaml +++ b/adapters/gemini/config.yaml @@ -3,6 +3,6 @@ description: Google Gemini CLI agent skills output_directory: .gemini/skills output_extension: /SKILL.md notes: | - Sub-agent spawning (used in the /ship review step) is not available in Gemini CLI. + Sub-agent spawning (used in the /submit-for-review review step) is not available in Gemini CLI. That step must be performed manually by pasting the review-agent prompt into a new session. Skills are triggered by description matching during conversation. diff --git a/adapters/gemini/header.md b/adapters/gemini/header.md index e87555f..692eec8 100644 --- a/adapters/gemini/header.md +++ b/adapters/gemini/header.md @@ -3,7 +3,7 @@ name: {skill} description: {description} --- -> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. +> **Gemini CLI:** This skill is triggered by description matching. 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 in a separate session. --- diff --git a/config.schema.yaml b/config.schema.yaml index d52fbab..a564a5a 100644 --- a/config.schema.yaml +++ b/config.schema.yaml @@ -21,7 +21,7 @@ placeholders: a different name (e.g. "master", "prod"). All release promotion targets this branch. default: "main" category: branches - used_in: [ship, deploy] + used_in: [submit-for-review, deploy] BRANCH_DEV: description: > @@ -29,7 +29,7 @@ placeholders: Set to enable two-branch mode (feature → BRANCH_DEV → BRANCH_PROD). Common values: "development", "dev", "staging". default: "" category: branches - used_in: [ship, deploy, qa, review-agent] + used_in: [submit-for-review, deploy, qa, review-agent] BRANCH_TEST: description: > @@ -46,13 +46,13 @@ placeholders: REVIEW_GATE: description: > - Controls the AI code review step in /ship. + Controls the AI code review step in /submit-for-review. "ai" (default): review agent is spawned and its verdict determines merge/reject. - "advisory": review agent is spawned and posts findings, but /ship merges regardless of verdict. - "off": no review agent is spawned; /ship merges immediately after CHECK_CMD passes. + "advisory": review agent is spawned and posts findings, but /submit-for-review merges regardless of verdict. + "off": no review agent is spawned; /submit-for-review merges immediately after CHECK_CMD passes. default: "ai" category: workflow - used_in: [ship, review] + used_in: [submit-for-review, review] DEV_CMD: description: "Start the local development server" @@ -70,16 +70,16 @@ placeholders: description: "Type-check / lint gate that must pass before shipping" default: "make check" category: workflow - used_in: [ship] + used_in: [submit-for-review] MERGE_CMD: description: "Merge the current feature PR into the integration branch" default: "make merge" category: workflow - used_in: [ship, deploy] + used_in: [submit-for-review, deploy] DEPLOY_PREVIEW_CMD: - description: "Deploy to the pre-production environment (BRANCH_DEV in two-branch mode, BRANCH_TEST in three-branch mode). Not used by /ship in trunk mode." + description: "Deploy to the pre-production environment (BRANCH_DEV in two-branch mode, BRANCH_TEST in three-branch mode). Not used by /submit-for-review in trunk mode." default: "make deploy-preview" category: workflow used_in: [deploy] @@ -128,7 +128,7 @@ placeholders: description: "Path to the review agent prompt file (generated from skills/review-agent.md)" default: ".claude/review-agent-prompt.md" category: paths - used_in: [ship, review, review-agent] + used_in: [submit-for-review, review, review-agent] # ── GitHub / PR settings ─────────────────────────────────────────────────── @@ -136,7 +136,7 @@ placeholders: description: "Comma-separated GitHub handles or team slugs to add as PR reviewers (e.g. @alice,@bob,org/team-name). Leave empty to rely solely on CODEOWNERS or manual assignment." default: "" category: github - used_in: [ship] + used_in: [submit-for-review] TICKET_LABELS: description: "Comma-separated pool of label names the agent may apply to new issues created by /start (e.g. 'bug,enhancement,good first issue'). The agent selects 1–3 labels from this pool based on the task content — it does not apply all of them blindly. Leave empty to apply no labels by default. Per-invocation --label flag bypasses pool selection entirely and uses the given value verbatim." @@ -157,10 +157,10 @@ placeholders: used_in: [start] QA_READY_LABEL: - description: "Label applied by /ship when a feature merges to BRANCH_DEV in two-branch mode, signaling it is ready for QA on the preview environment. In trunk and three-branch modes, /ship does not apply this label automatically. Only configure if you have an explicit QA gate for your integration branch environment." + description: "Label applied by /submit-for-review when a feature merges to BRANCH_DEV in two-branch mode, signaling it is ready for QA on the preview environment. In trunk and three-branch modes, /submit-for-review does not apply this label automatically. Only configure if you have an explicit QA gate for your integration branch environment." default: "ready-for-qa" category: github - used_in: [ship, qa] + used_in: [submit-for-review, qa] QA_PASSED_LABEL: description: "Label applied by /qa when a feature passes QA review. Leave empty to skip label application." diff --git a/docs/adapters.md b/docs/adapters.md index 3bd843c..45a19ab 100644 --- a/docs/adapters.md +++ b/docs/adapters.md @@ -13,25 +13,25 @@ Adapters translate Code Cannon's generic skill format into agent-specific file f ### Claude Code -The Claude adapter generates slash commands in `.claude/commands/`. Users invoke skills with `/skill-name` in Claude Code. The `/ship` skill can spawn a review sub-agent natively. +The Claude adapter generates slash commands in `.claude/commands/`. Users invoke skills with `/skill-name` in Claude Code. The `/submit-for-review` skill can spawn a review sub-agent natively. ### Cursor The Cursor adapter generates agent-requested rules in `.cursor/rules/`. Users trigger rules via `@rulename` in Agent mode, or the agent requests them by description. -**Limitation:** Cursor does not support sub-agent spawning. The review step in `/ship` (which spawns a separate review agent) must be performed manually by pasting the review-agent prompt into a new chat. +**Limitation:** Cursor does not support sub-agent spawning. The review step in `/submit-for-review` (which spawns a separate review agent) must be performed manually by pasting the review-agent prompt into a new chat. ### Codex CLI The Codex adapter generates agent skills in `.agents/skills/`. Each skill gets its own directory with a `SKILL.md` file containing YAML frontmatter (`name` and `description`). Skills are triggered by description matching during conversation or via the `$skill-creator` built-in. -**Limitation:** Codex CLI does not support sub-agent spawning. The review step in `/ship` must be performed manually by pasting the review-agent prompt into a new session. +**Limitation:** Codex CLI does not support sub-agent spawning. The review step in `/submit-for-review` must be performed manually by pasting the review-agent prompt into a new session. ### Gemini CLI The Gemini adapter generates agent skills in `.gemini/skills/`. Each skill gets its own directory with a `SKILL.md` file containing YAML frontmatter (`name` and `description`). Skills are triggered by description matching during conversation. -**Limitation:** Gemini CLI does not support sub-agent spawning. The review step in `/ship` must be performed manually by pasting the review-agent prompt into a new session. +**Limitation:** Gemini CLI does not support sub-agent spawning. The review step in `/submit-for-review` must be performed manually by pasting the review-agent prompt into a new session. ## Enabling adapters diff --git a/docs/branching.md b/docs/branching.md index db86f8d..5f3f2c6 100644 --- a/docs/branching.md +++ b/docs/branching.md @@ -8,16 +8,16 @@ Code Cannon supports three branching models. Set `BRANCH_DEV` and `BRANCH_TEST` ``` feature/ → main - /start /ship merges here + /start /submit-for-review merges here /deploy runs here ``` -The simplest model. Feature branches are created from and merged directly into `BRANCH_PROD` (default: `main`). `/ship` opens a PR targeting `main` with `Closes #N` — issues auto-close on merge. +The simplest model. Feature branches are created from and merged directly into `BRANCH_PROD` (default: `main`). `/submit-for-review` opens a PR targeting `main` with `Closes #N` — issues auto-close on merge. **When to use:** Solo developers, small teams, projects where every merge is production-ready. Fast iteration with low ceremony. **Skill behavior in trunk mode:** -- `/ship` targets `BRANCH_PROD` directly +- `/submit-for-review` targets `BRANCH_PROD` directly - `/deploy` runs from `BRANCH_PROD` — bumps version and creates a GitHub Release (no promotion PR needed) - QA labels are not applied automatically @@ -27,18 +27,18 @@ The simplest model. Feature branches are created from and merged directly into ` ``` feature/ → BRANCH_DEV → BRANCH_PROD - /start /ship /deploy + /start /submit-for-review /deploy ``` Feature PRs target `BRANCH_DEV`. Issues deliberately stay open through the feature merge — `Closes #N` is not used on feature PRs because they don't land in the default branch. Issues only auto-close when `/deploy` promotes `BRANCH_DEV` to `BRANCH_PROD`. -This supports a QA gate between merging code and shipping to production. After `/ship` merges a feature, you deploy the integration branch to a preview environment, test it, then run `/deploy` when satisfied. +This supports a QA gate between merging code and shipping to production. After `/submit-for-review` merges a feature, you deploy the integration branch to a preview environment, test it, then run `/deploy` when satisfied. **When to use:** Teams that want a review/QA gate before production. The most common model for teams with a staging or preview environment. **Skill behavior in two-branch mode:** -- `/ship` targets `BRANCH_DEV` and uses `Issue #N` (not `Closes`) -- `/ship` applies `QA_READY_LABEL` to the linked issue (if configured) +- `/submit-for-review` targets `BRANCH_DEV` and uses `Issue #N` (not `Closes`) +- `/submit-for-review` applies `QA_READY_LABEL` to the linked issue (if configured) - `/deploy` runs from `BRANCH_DEV` — bumps version, opens a promotion PR from `BRANCH_DEV` to `BRANCH_PROD` with `Closes #N` to auto-close issues ## Three-branch development @@ -47,7 +47,7 @@ This supports a QA gate between merging code and shipping to production. After ` ``` feature/ → BRANCH_DEV → BRANCH_TEST → BRANCH_PROD - /start /ship manual/future /deploy + /start /submit-for-review manual/future /deploy /promote ``` @@ -56,7 +56,7 @@ Adds a dedicated test/staging branch between integration and production. Feature **When to use:** Teams with a formal QA or staging environment that is separate from the integration environment. Common in regulated industries or teams with dedicated QA staff. **Skill behavior in three-branch mode:** -- `/ship` targets `BRANCH_DEV` (same as two-branch) +- `/submit-for-review` targets `BRANCH_DEV` (same as two-branch) - `/deploy` runs from `BRANCH_TEST` — bumps version and promotes `BRANCH_TEST` to `BRANCH_PROD` - The `BRANCH_DEV` to `BRANCH_TEST` step is outside Code Cannon's current scope @@ -74,8 +74,16 @@ These aren't rigid modes — they're starting points. Every setting is independe Code Cannon enforces branch rules at the skill level: -- `/ship` aborts if run from any protected branch (`BRANCH_PROD`, `BRANCH_DEV`, or `BRANCH_TEST` when set). It must be run from a `feature/*` branch. +- `/submit-for-review` aborts if run from any protected branch (`BRANCH_PROD`, `BRANCH_DEV`, or `BRANCH_TEST` when set). It must be run from a `feature/*` branch. - `/deploy` aborts if not on the required pre-production branch (determined by mode). - `/start` always creates `feature/*` branches via `gh issue develop`, ensuring every branch is linked to an issue. The agent will not proceed past these checks. There is no override flag — if you're on the wrong branch, switch first. + +## Working on parallel branches + +When working on multiple features simultaneously, **sequence tasks that touch overlapping files — don't parallelize them.** Submit and merge the first branch before starting the second. + +This is especially important for tasks that involve renaming, restructuring, or updating cross-references across skills. These changes tend to be broad in scope (touching many files) even though the individual edits are small. Running `sync.sh` amplifies the problem further: a one-line edit in a source skill becomes changes across every adapter directory (`.claude/`, `.cursor/`, `.agents/`, `.gemini/`), multiplying the conflict surface. + +If you do end up with parallel branches that conflict, the cleanest resolution is usually to re-apply the smaller change on a fresh branch off the updated integration branch, rather than resolving conflicts file-by-file. The mechanical nature of most cross-cutting changes (find-and-replace + `sync.sh`) makes this fast and reliable. diff --git a/docs/config-reference.md b/docs/config-reference.md index 1a1c74f..eef34dc 100644 --- a/docs/config-reference.md +++ b/docs/config-reference.md @@ -8,8 +8,8 @@ For the canonical source, see [`config.schema.yaml`](../config.schema.yaml). | Key | Default | Used in | Description | |---|---|---|---| -| `BRANCH_PROD` | `main` | ship, deploy | Production branch. All release promotion targets this branch. | -| `BRANCH_DEV` | *(empty)* | ship, deploy, qa, review-agent | Development/integration branch. Leave empty for trunk-based development. Set to enable two-branch mode. | +| `BRANCH_PROD` | `main` | submit-for-review, deploy | Production branch. All release promotion targets this branch. | +| `BRANCH_DEV` | *(empty)* | submit-for-review, deploy, qa, review-agent | Development/integration branch. Leave empty for trunk-based development. Set to enable two-branch mode. | | `BRANCH_TEST` | *(empty)* | deploy | Test/staging branch for three-branch workflows. Requires `BRANCH_DEV` to be set. | See [branching models](branching.md) for how these values change skill behavior. @@ -18,13 +18,13 @@ See [branching models](branching.md) for how these values change skill behavior. | Key | Default | Used in | Description | |---|---|---|---| -| `CHECK_CMD` | `make check` | ship | Type-check / lint gate that must pass before shipping. | +| `CHECK_CMD` | `make check` | submit-for-review | Type-check / lint gate that must pass before shipping. | | `DEV_CMD` | `make dev` | start | Start the local development server. Suggested to user after `/start` writes code. | | `ABANDON_CMD` | `make abandon` | start | Discard all changes and delete the current feature branch. | -| `MERGE_CMD` | `make merge` | ship, deploy | Merge the current feature PR into the integration branch. | +| `MERGE_CMD` | `make merge` | submit-for-review, deploy | Merge the current feature PR into the integration branch. | | `DEPLOY_PREVIEW_CMD` | `make deploy-preview` | deploy | Deploy to the pre-production environment. | | `DEPLOY_PROD_CMD` | `make deploy-prod` | deploy | Deploy to production. | -| `REVIEW_GATE` | `ai` | ship, review | Controls AI review in `/ship`. Values: `ai` (blocks on critical findings), `advisory` (posts but doesn't block), `off` (no review). | +| `REVIEW_GATE` | `ai` | submit-for-review, review | Controls AI review in `/submit-for-review`. Values: `ai` (blocks on critical findings), `advisory` (posts but doesn't block), `off` (no review). | ## Version bumping @@ -40,17 +40,17 @@ See [branching models](branching.md) for how these values change skill behavior. | Key | Default | Used in | Description | |---|---|---|---| -| `REVIEW_AGENT_PROMPT` | `.claude/review-agent-prompt.md` | ship, review, review-agent | Path to the review agent prompt file. | +| `REVIEW_AGENT_PROMPT` | `.claude/review-agent-prompt.md` | submit-for-review, review, review-agent | Path to the review agent prompt file. | ## GitHub / PR settings | Key | Default | Used in | Description | |---|---|---|---| -| `DEFAULT_REVIEWERS` | *(empty)* | ship | Comma-separated GitHub handles or team slugs to add as PR reviewers. | +| `DEFAULT_REVIEWERS` | *(empty)* | submit-for-review | Comma-separated GitHub handles or team slugs to add as PR reviewers. | | `TICKET_LABELS` | *(empty)* | start | Comma-separated label pool the agent may apply to new issues. The agent selects 1-3 fitting labels, not all of them. | | `TICKET_LABEL_CREATION_ALLOWED` | `false` | start | Whether the agent may create new GitHub labels when no pool label fits. | | `DEFAULT_MILESTONE` | *(empty)* | start | Milestone applied to every new issue. Overrides auto-detection from GitHub. | -| `QA_READY_LABEL` | `ready-for-qa` | ship, qa | Label applied by `/ship` in two-branch mode when a feature merges to `BRANCH_DEV`. | +| `QA_READY_LABEL` | `ready-for-qa` | submit-for-review, qa | Label applied by `/submit-for-review` in two-branch mode when a feature merges to `BRANCH_DEV`. | | `QA_PASSED_LABEL` | `qa-passed` | qa | Label applied by `/qa` when a feature passes QA. | | `QA_FAILED_LABEL` | `qa-failed` | qa | Label applied by `/qa` when a feature fails QA. | diff --git a/docs/customization.md b/docs/customization.md index aa27fa8..2dcecd6 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -6,7 +6,7 @@ Code Cannon is designed to be configured, not forked. All project-specific behav Skills in `skills/` use `{{PLACEHOLDER}}` tokens wherever behavior needs to vary between projects. When you run `sync.sh`, it reads your `.codecannon.yaml`, substitutes each placeholder with your project's value, and writes the generated skill files. -For example, the `/ship` skill contains: +For example, the `/submit-for-review` skill contains: ```markdown Run: @@ -42,7 +42,7 @@ See [branching models](branching.md) for a full explanation of each mode. ### Setting your check and deploy commands ```yaml -CHECK_CMD: make check # must pass before /ship proceeds +CHECK_CMD: make check # must pass before /submit-for-review proceeds DEV_CMD: make dev # suggested to user after /start writes code DEPLOY_PREVIEW_CMD: make deploy-preview DEPLOY_PROD_CMD: make deploy-prod @@ -66,7 +66,7 @@ REVIEW_GATE: "ai" # AI review posts findings but never blocks merge REVIEW_GATE: "advisory" -# No AI review at all — /ship merges immediately after checks pass +# No AI review at all — /submit-for-review merges immediately after checks pass REVIEW_GATE: "off" ``` @@ -137,7 +137,7 @@ When you run `sync.sh`, it computes the expected hash for each file. If the file To overwrite anyway: `sync.sh --force`. -To regenerate only specific skills: `sync.sh --skill start,ship`. +To regenerate only specific skills: `sync.sh --skill start,submit-for-review`. ### sync.sh reference diff --git a/docs/index.md b/docs/index.md index cea7281..9d92188 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ # Code Cannon Documentation -Code Cannon is a portable agent workflow skill library. Write your team's development workflow once — start, ship, review, deploy — and sync it to Claude Code, Cursor, and other AI coding agents across all your projects. +Code Cannon is a portable agent workflow skill library. Write your team's development workflow once — start, submit-for-review, review, deploy — and sync it to Claude Code, Cursor, and other AI coding agents across all your projects. ## How it works @@ -13,12 +13,12 @@ Code Cannon is a portable agent workflow skill library. Write your team's develo The intended sequence for a complete change: ``` -/start → [code + local test] → /ship → [QA on preview] → /deploy +/start → [code + local test] → /submit-for-review → [QA on preview] → /deploy ``` - [`/start`](skills/start.md) — reads code, proposes an approach, **waits for human approval**, then creates the issue, branch, and writes code -- [`/ship`](skills/ship.md) — runs checks, commits everything, pushes, opens the PR, spawns an agent review, merges if approved -- [`/review`](skills/review.md) — standalone review on any PR; also called internally by `/ship` +- [`/submit-for-review`](skills/submit-for-review.md) — runs checks, commits everything, pushes, opens the PR, spawns an agent review, merges if approved +- [`/review`](skills/review.md) — standalone review on any PR; also called internally by `/submit-for-review` - [`/deploy`](skills/deploy.md) — bumps version, creates a GitHub Release, promotes to production - [`/status`](skills/status.md) — read-only snapshot of open PRs, merged work, and open issues - [`/qa`](skills/qa.md) — view the QA queue or record findings on a specific issue @@ -33,7 +33,7 @@ Code Cannon is opinionated about where humans stay in the loop: - `/qa` shows the review comment and waits for approval before posting. - Everything else runs unattended. -The agent commits; you test. `/start` writes code but does not commit — it hands off to you with "run your dev command and test locally." Committing happens in `/ship`. The human approval loop before shipping is where you catch things the agent missed. +The agent commits; you test. `/start` writes code but does not commit — it hands off to you with "run your dev command and test locally." Committing happens in `/submit-for-review`. The human approval loop before shipping is where you catch things the agent missed. ## Quickstart diff --git a/docs/skills/qa.md b/docs/skills/qa.md index 611a8b5..3503152 100644 --- a/docs/skills/qa.md +++ b/docs/skills/qa.md @@ -22,7 +22,7 @@ View the QA queue or record findings on a specific issue. `/qa` requires `QA_READY_LABEL` to be set in `.codecannon.yaml`. Without it, the skill can't identify which issues are waiting for QA. If unset, it explains how to enable the label workflow. -The QA label workflow is primarily used in two-branch mode, where `/ship` automatically applies `QA_READY_LABEL` after merging a feature to `BRANCH_DEV`. In trunk or three-branch mode, the label must be applied manually. +The QA label workflow is primarily used in two-branch mode, where `/submit-for-review` automatically applies `QA_READY_LABEL` after merging a feature to `BRANCH_DEV`. In trunk or three-branch mode, the label must be applied manually. ## Queue view (no argument) diff --git a/docs/skills/review.md b/docs/skills/review.md index fa199e9..1be0083 100644 --- a/docs/skills/review.md +++ b/docs/skills/review.md @@ -8,7 +8,7 @@ Run a standalone code review on a pull request. `/review` runs a code review on any PR using the project's review agent prompt. It reads the PR diff, examines files for context, and posts structured findings as a PR comment. -This is the same review that `/ship` runs automatically — `/review` just lets you trigger it independently at any time. +This is the same review that `/submit-for-review` runs automatically — `/review` just lets you trigger it independently at any time. ## Usage @@ -43,9 +43,9 @@ The review agent does NOT flag style preferences, documentation completeness, or ## Why it's built this way -**Standalone and composable.** `/review` exists separately from `/ship` so you can review any PR at any time — not just as part of the shipping pipeline. It's useful for reviewing PRs from other contributors or re-reviewing after changes. +**Standalone and composable.** `/review` exists separately from `/submit-for-review` so you can review any PR at any time — not just as part of the shipping pipeline. It's useful for reviewing PRs from other contributors or re-reviewing after changes. -**Same prompt, same standards.** Both `/ship` and `/review` use the same `REVIEW_AGENT_PROMPT`, so reviews are consistent regardless of how they're triggered. +**Same prompt, same standards.** Both `/submit-for-review` and `/review` use the same `REVIEW_AGENT_PROMPT`, so reviews are consistent regardless of how they're triggered. **Read-only.** `/review` never commits, pushes, or merges. It only reads and comments. This makes it safe to run at any point in the workflow. diff --git a/docs/skills/start.md b/docs/skills/start.md index 0fa9b2c..db2c2db 100644 --- a/docs/skills/start.md +++ b/docs/skills/start.md @@ -80,7 +80,7 @@ Milestones are resolved in a three-tier order: **Human gate before creation.** The agent proposes an approach and waits. This prevents wasted work on the wrong approach and gives you a chance to redirect before any GitHub artifacts are created. -**No commits during /start.** Code is written but not committed. This is intentional — the human testing loop between `/start` and `/ship` is where you catch things the agent missed. Committing happens in `/ship` after you've verified the code locally. +**No commits during /start.** Code is written but not committed. This is intentional — the human testing loop between `/start` and `/submit-for-review` is where you catch things the agent missed. Committing happens in `/submit-for-review` after you've verified the code locally. **Branch linking via `gh issue develop`.** Instead of `git checkout -b`, Code Cannon uses `gh issue develop` so the branch is linked to the issue in GitHub's UI. This makes it easy to find the branch from the issue and vice versa. diff --git a/docs/skills/ship.md b/docs/skills/submit-for-review.md similarity index 75% rename from docs/skills/ship.md rename to docs/skills/submit-for-review.md index a2834d9..1d2c1f7 100644 --- a/docs/skills/ship.md +++ b/docs/skills/submit-for-review.md @@ -1,28 +1,28 @@ -# /ship +# /submit-for-review Type-check, commit, open PR, spawn review agent, and merge. -**Source prompt:** [`../../skills/ship.md`](../../skills/ship.md) +**Source prompt:** [`../../skills/submit-for-review.md`](../../skills/submit-for-review.md) ## What it does -`/ship` is Phase 3 of the workflow — it takes code that has been written and tested locally, and moves it through the full shipping pipeline: check, commit, push, PR, review, merge. +`/submit-for-review` is Phase 3 of the workflow — it takes code that has been written and tested locally, and moves it through the full shipping pipeline: check, commit, push, PR, review, merge. It must be run from a `feature/*` branch. Running it from any protected branch (`BRANCH_PROD`, `BRANCH_DEV`, `BRANCH_TEST`) causes an immediate abort. ## Usage ``` -/ship +/submit-for-review ``` -No arguments. `/ship` operates on the current branch. +No arguments. `/submit-for-review` operates on the current branch. ## Step-by-step 1. **Verify branch** — confirms you're on a `feature/*` branch, not a protected branch. -2. **Type-check gate** — runs `CHECK_CMD`. If it fails, `/ship` stops and reports the errors. This is a hard gate — no bypass. +2. **Type-check gate** — runs `CHECK_CMD`. If it fails, `/submit-for-review` stops and reports the errors. This is a hard gate — no bypass. 3. **Identify linked issue** — looks for the issue number linked to this branch (from `gh issue develop` or the PR body). @@ -37,13 +37,13 @@ No arguments. `/ship` operates on the current branch. - `advisory`: spawns a review agent, posts findings, merges regardless - `off`: skips review entirely -7. **Act on verdict** — if `REVIEW_GATE` is `ai` and the review finds CRITICAL issues, `/ship` stops and asks you to fix them. Otherwise, it merges the PR. +7. **Act on verdict** — if `REVIEW_GATE` is `ai` and the review finds CRITICAL issues, `/submit-for-review` stops and asks you to fix them. Otherwise, it merges the PR. 8. **Post-merge** — in two-branch mode, applies `QA_READY_LABEL` to the linked issue if configured. Reports next steps based on your branching model. ## Reviewer selection -`/ship` adds reviewers from exactly two sources: +`/submit-for-review` adds reviewers from exactly two sources: - **CODEOWNERS file** — checked in `CODEOWNERS`, `.github/CODEOWNERS`, and `docs/CODEOWNERS`. GitHub automatically requests reviews from code owners. - **`DEFAULT_REVIEWERS` config** — comma-separated handles or team slugs added to the PR. @@ -60,13 +60,13 @@ The agent never infers reviewers from git history, blame, or team membership. ## Why it's built this way -**Single command for the full pipeline.** The check-commit-push-PR-review-merge sequence is mechanical and error-prone when done manually. `/ship` automates the entire chain while keeping a human gate (the review) in the middle. +**Single command for the full pipeline.** The check-commit-push-PR-review-merge sequence is mechanical and error-prone when done manually. `/submit-for-review` automates the entire chain while keeping a human gate (the review) in the middle. **Mandatory check gate.** `CHECK_CMD` must pass before anything is committed or pushed. This prevents known-broken code from ever reaching a PR. **Issue linking varies by mode.** In trunk mode, `Closes #N` auto-closes issues on merge because the PR targets the default branch. In multi-branch mode, `Issue #N` keeps issues open until `/deploy` promotes to production — this supports QA workflows where you want to track issues through the staging environment. -**QA label automation.** In two-branch mode, `/ship` applies `QA_READY_LABEL` to signal that a feature is ready for testing on the preview environment. This feeds into the `/qa` skill's queue view. +**QA label automation.** In two-branch mode, `/submit-for-review` applies `QA_READY_LABEL` to signal that a feature is ready for testing on the preview environment. This feeds into the `/qa` skill's queue view. ## Config keys used diff --git a/skills/qa.md b/skills/qa.md index 4d4fc7d..8a4f575 100644 --- a/skills/qa.md +++ b/skills/qa.md @@ -10,7 +10,7 @@ args: "none | issue number" > > To enable: add `QA_READY_LABEL: ready-for-qa` (or your preferred label name) to `.codecannon.yaml` and re-run `CodeCannon/sync.sh`. > -> Note: In trunk mode, `/ship` does not apply this label automatically — you would need to apply it manually or via a separate workflow. +> Note: In trunk mode, `/submit-for-review` does not apply this label automatically — you would need to apply it manually or via a separate workflow. Do not proceed. Stop here. {{/if}} diff --git a/skills/review-agent.md b/skills/review-agent.md index 14d4485..fb1603d 100644 --- a/skills/review-agent.md +++ b/skills/review-agent.md @@ -1,7 +1,7 @@ --- skill: review-agent type: prompt -description: Code review agent system prompt — not a slash command, used by /ship and /review +description: Code review agent system prompt — not a slash command, used by /submit-for-review and /review output_path_override: "{{REVIEW_AGENT_PROMPT}}" no_invocation_header: true --- diff --git a/skills/review.md b/skills/review.md index 076a178..2b65ca1 100644 --- a/skills/review.md +++ b/skills/review.md @@ -53,7 +53,7 @@ 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." --- @@ -61,5 +61,5 @@ After the review agent completes, relay its verdict to the user: ## 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. diff --git a/skills/setup.md b/skills/setup.md index f4f282b..c1dd9b7 100644 --- a/skills/setup.md +++ b/skills/setup.md @@ -57,7 +57,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 | @@ -128,7 +128,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 @@ -387,7 +387,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"` diff --git a/skills/start.md b/skills/start.md index 2a98042..2aacf81 100644 --- a/skills/start.md +++ b/skills/start.md @@ -191,9 +191,9 @@ Show the user: `On branch feature/` Now write the code. Do NOT commit anything. -When done, say: **"The code is ready for review. Please run `{{DEV_CMD}}` 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 `{{DEV_CMD}}` 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 `{{ABANDON_CMD}}` @@ -258,7 +258,7 @@ gh issue comment --body "Resuming work. --remove-assignee @me`. diff --git a/skills/ship.md b/skills/submit-for-review.md similarity index 93% rename from skills/ship.md rename to skills/submit-for-review.md index e1b15c6..a2fa850 100644 --- a/skills/ship.md +++ b/skills/submit-for-review.md @@ -1,13 +1,13 @@ --- -skill: ship +skill: submit-for-review type: skill description: Type-check, commit, open PR, review, and merge to the integration branch args: none --- -## 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. --- @@ -29,7 +29,7 @@ Protected branches (not a feature branch): If the current branch matches any of the above, **abort immediately** and say: -> "You are on ``. `/ship` must be run from a feature branch. Switch to your feature branch first." +> "You are on ``. `/submit-for-review` must be run from a feature branch. Switch to your feature branch first." --- @@ -200,9 +200,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. --- @@ -242,7 +242,7 @@ Report success based on mode: - When `{{REVIEW_GATE}}` is `"advisory"`, always merge after review completes, regardless of verdict. - When `{{REVIEW_GATE}}` is `"off"`, skip the review agent entirely — merge immediately after checks pass. {{#if BRANCH_DEV}} -- `/ship` merges only to `{{BRANCH_DEV}}` — never directly to `{{BRANCH_PROD}}`. +- `/submit-for-review` merges only to `{{BRANCH_DEV}}` — never directly to `{{BRANCH_PROD}}`. {{/if}} {{#if !BRANCH_DEV}} - Merges target `{{BRANCH_PROD}}` (trunk mode). diff --git a/sync.sh b/sync.sh index e193f4a..0c19da0 100755 --- a/sync.sh +++ b/sync.sh @@ -352,7 +352,7 @@ def main(): parser.add_argument('--validate', action='store_true', help='Pre-flight check: verify all {{PLACEHOLDERS}} in skills are defined in config. Exits non-zero if any are missing. Does not write files.') parser.add_argument('--skill', default='', - help='Sync only specific skill(s), comma-separated (e.g. start,ship)') + help='Sync only specific skill(s), comma-separated (e.g. start,submit-for-review)') args = parser.parse_args() project_root = Path.cwd() diff --git a/templates/AGENTS.md.template b/templates/AGENTS.md.template index 7a274f4..fda9302 100644 --- a/templates/AGENTS.md.template +++ b/templates/AGENTS.md.template @@ -5,7 +5,7 @@ Repository conventions for all AI coding agents (Claude Code, Cursor, Copilot, W ## Branch Strategy