ship
Canonical ship — verify gate (review, validate, tests, dev, usage), push, PR gate, merge main
SKILL.mdship/SKILL.md
GitHubGoal
Take any work from verified to merged: run every verification gate, commit and push, pass the PR review gate, and merge into main only when each gate genuinely passes
Scope
- The final ship path for any work — verify, push, PR gate, and merge into
mainin one skill verify-only→ run steps 1–6 and report readiness; step 2 may still fix findings — never push or mergerun→ after verification, run step 6, keep the dev server up for real use, then report and stop; never push or merge- The one home of every verify step — other skills (e.g.
/update-agents-md,/new-skills) reference/ship; they never duplicate this workflow - Releasing a new version →
/release-new-version dont-ask-meargument, or a session running/dont-ask-me→/follow-your-suggestionplus safe defaults replace every confirmation gate
Execute
1. Follow AGENTS.md
Goal:
AGENTS.mdis fresh and authoritative before any gate runs
- Run
/follow-agents-md. IfAGENTS.mdis missing or stale → run/update-agents-mdfirst - Read every additional ship/validate rule the project's
AGENTS.mddefines
2. Review Changes
Goal: the changes pass review and every finding is fixed before ship
- Resolve the scope:
[scope]limits it; the default is the files changed in this session /git diffplus untracked files;--diffforces diff-only - Single workspace/module → run
/deep-review [scope] --diff then-fix. It is the canonical reviewer and fixer: one full scan sliced per dimension, one reviewer per dimension via/use-subagents, findings fixed per itsreferences/review.md(## Domain Map), and a--diffre-review until clean. The/shipflow skips the step 7 per-finding confirm and follows the report as-is - Several workspaces/modules/layers → fan out per part instead:
- Split the scope into disjoint parts (one per workspace/module/layer;
∪Sᵢ = scope,Sᵢ ∩ Sⱼ = ∅). Inter-part dependencies form a DAG → run in waves; a cycle → merge those parts. Track every part (path, file set, status) from spawn to done - Budget ≤ 10 parts. Over budget → keep the highest-risk parts and record every dropped part as
skipped (budget)with its reason in the report - Spawn one
part-reviewerper part in parallel via/use-subagents(see## Subagents), one wave at a time, with independent batches ≤ 10 via/follow-parallel. A part with ≤ 2 changed files → review it in the parent and mark itcovered-manually. A failed subagent →/resolve-errors, retry once, then mark the partfailed - Aggregate the part findings: dedup by
file + normalized rule + dimension, keep the highest severity with combined evidence, and present them with/report-review - Fix per part: run
/deep-review <part> then-fixfor each part, with parallelfix-workersubagents while file sets stay disjoint. Persist mechanical/convention findings via/update-devin-project-rules//update-astgrep-rules - Re-verify the fixed parts only, with
/deep-review <part> --diff— never a full rescan. The report marks every partdone/covered-manually/failed/skipped (budget)with its reason - No findings in any part → skip the fix pass and continue to step 3
- Split the scope into disjoint parts (one per workspace/module/layer;
- When changing the devin skills repo → run
/review-devin-global-harness - If findings still survive after 3 fix/re-verify rounds → stop and report
blocked; never push
3. Validate
Goal: every correctness dimension passes
- Run
/deep-validate— cross-reference, type safety, conventions - Run the project's lint and typecheck via
/run-check— both must pass
4. Tests
Goal: test coverage is complete and every suite passes
- Run
/update-tests— specs must cover every layer of the changes - Run
/run-test all— every suite must pass; on failure → fix the root cause and rerun
5. Runtime And Usage
Goal: the app really runs and the docs match reality
- Run
/run-dev— the dev server must be healthy with no errors - Run
/deep-test usage— every usage example in README/docs/AGENTS.mdmust actually work runargument → keep the/run-devserver up after the health check: for a web project, open the browser at the dev URL and continue/watch-browser fixper the/run-devworkflow, resolving errors immediately via/resolve-errors. Then run steps 6 and 10, and stop — steps 7–9 never run
6. Update Project
Goal: docs, config, rules, and tooling match the verified changes before push
- Run
/update-project— it reads git log, restores changed information into rootAGENTS.mdandREADME.md, and syncs config,.devin/, rules, GitHub metadata, and all project files to the current codebase - The sync must reflect reality: no stale docs, no missing config entries, no orphan references
7. Commit And Push
Goal: verified, synced work is on the remote with green CI
- If any gate failed → fix the blockers and verify again; never skip ahead to push
- Run
/git-commit-and-push— commit, push the working branch, and resolve CI/CD until green.verify-onlyandrun→ stop after step 6 with the report; steps 7–9 never run
8. PR Review Gate
Goal: the PR into
mainpasses review and every check before merge
- Create or find the PR into
mainwith/create-github-pr - Run
/review-github-pr— the full gate: all CI checks pass,/deep-validateand/deep-reviewpass, and the PR metadata and diff are clean - If the gate fails → fix the findings on the branch and re-run
/git-commit-and-push; never merge
9. Merge To Main
Goal: the branches are merged into
mainand cleaned up
- Get user confirmation before merging into
main(exceptdont-ask-me→ safe default) - Run
/merge-all-branch-by-me-to-main— it merges the user's branches intomainand cleans up - On conflicts →
/resolve-merge-conflicts; if the conflict is complex →/ask-me - Run
git switch main+git pulland verify the merge succeeded and remotemainhas the new commits
10. Report
Goal: one verdict — merged or blocked
- Run
/report— aNo. | Gate | Result | Evidencetable plus the verdictmergedorblocked; when therunargument was used, include the dev server status (URL, port, watch state); when parts were reviewed, add the per-part coverage table (Part | Files | Findings | Fixed | Status) - If a release is needed → suggest
/release-new-version - Run
/suggest-next-action
Subagents
part-reviewer
Inputs:part-path,files-in-scope(disjoint list),conventions(workspaceAGENTS.mdpaths),scope-mode(--diffdefault)Tools: read, grep, glob, exec (read-only commands), skillExecute: run/deep-reviewlimited tofiles-in-scope— read the slice and every evidence file named; never rerun the CLI outside the part, never sweep the codebase, never edit anythingOutput: findings table (No. | Finding | Severity | Evidence file:line | Action | Owner skill) + one-paragraph part summary +part-status(clean/findings/failed (reason))Constraints: report-only; read only its own file set + evidence-named files; one part per subagent, no shared mutable state
Rules
- Every gate must genuinely pass — never skip a failing gate; fix loop up to 3 rounds, then stop and report
part-revieweris report-only — every fix runs through/deep-review <part> then-fix, never inside the review pass- Never drop a part silently —
skipped,failed, andcovered-manuallyeach appear in the report with a reason - Skip a gate only when the project truly lacks that artifact (e.g. no dev server → skip
/run-dev), and state the reason in the report - Never duplicate a verify step in another skill — reference
/shiponly - Run
/deep-test smokein step 5 after/run-dev— the sanity gate on critical paths - Never push work that failed verification; never merge while CI is failing or pending, or while the PR review has blockers
- Merging into
mainalways needs user confirmation (except indont-ask-memode) - Never force-push
main— roll back withgit revertonly dont-ask-memode: noask_user_question, no/ask-me; an irreversible action → take the safe default or stop and report
Expected Outcome
AGENTS.mdis fresh; review, validate, and check passed; tests are green; the dev run works; usage matches reality- Review coverage is proven — every part is
done,covered-manually,failed, orskipped (budget)with a reason, and no part was dropped silently - Code is pushed with green CI/CD and the PR review gate passed (checks +
/deep-validate+/deep-review) - Branches are merged into
mainand cleaned up, with a rollback path - The report states the verdict and the next action (
/release-new-versionwhen a release is needed)