verify-and-ship
Run all quality checks (tests, lint, typecheck), fix failures, update the changelog, commit, push, and create/update the pull request or merge request.
By cyrusagents · 651 installs
npx skills add cyrusagents/cyrus --skill verify-and-ship
Source repository · Upstream listing
Verify and Ship
After implementing your changes, follow these steps to verify quality and ship the work.
1. Acceptance Criteria Validation (CRITICAL)
Use the issue tracker get issue tool to fetch the current issue details. Extract ALL acceptance criteria from the issue description and verify each one is satisfied by the implementation. If no explicit criteria exist, validate against the implied requirements from the issue title and description.
2. Quality Checks
Choose validation by changed behavior, risk, and existing coverage. Verification
is required; new automated tests and a full suite run are not required for every
change. Follow repository specific checks and CI gates where applicable.
Direct verification — For routine release scripts, packaging/build metadata,
CI, documentation, and instruction edits, prefer syntax checks, a safe dry run,
artifact inspection, an isolated install smoke check, or a consistency review
when those are sufficient. Record the command/result or review performed in
the PR; no new test file or validation report is needed merely to show work.
Automated tests — Run relevant existing tests. Add or retain a regression
test only when it catches a concrete consequential failure and its protection
justifies its maintenance. Examples include publishing the wrong artifact,
unintentionally moving stable tags, or accepting invalid release evidence.
Explain the failure each new test catches. Do not add brittle assertions on
documentation wording or source text, tests that mirror implementation, or
elaborate scaffolding for low risk edits. A script filename alone neither
requires tests nor exempts consequential behavior from protection.
Scope — Broaden testing when shared behavior, failures, or unresolved risk
warrants it; do not automatically run the full suite or generate coverage
reports. Once sufficient checks pass, stop repeating them unless changes or
new evidence justify another run. Investigate relevant failures rather than
retrying unchanged commands. Report any unresolved failures honestly.
Lint, types, build — Run checks relevant to the changed files and required
repository gates. Fix introduced failures.
Review — Check correctness, scope, and maintainability, including whether
proposed tests provide useful protection.
Where the repository uses F1, apply its canonical
skills/f1 test drive/SKILL.md applicability policy before invoking a drive or
requesting evidence. Nonapplicable changes need proportionate checks and a brief
PR note, without an F1 run or report. Do not infer an F1 requirement from this
skill. Preserve existing safeguards for consequential failures.
3. Changelog Update
Check if the project has changelog files:
If changelog files exist, diff against the base branch to detect entries already added by this branch:
Handling existing entries:
If the diff shows this branch already added a changelog entry for the current issue (matching the issue identifier), update that entry in place (e.g., to add the PR/MR link or refine the description). Do NOT add a duplicate entry.
If the diff shows this branch added changelog entries for a different issue or no entries at all, add a new entry.
Adding or updating entries:
Place entries under [Unreleased] in the appropriate subsection ( Added , Changed , Fixed , Removed )
Focus on end user impact — be concise but descriptive
Include the Linear issue identifier and PR/MR link (format: ([ISSUE ID](linear url), [ NUMBER](PR OR MR URL)) )
Follow [Keep a Changelog](https://keepachangelog.com/) format
4. Commit and Push
Stage all relevant changes (including changelog updates)
Commit with clear, descriptive messages following the project's commit conventions
Push to the remote repository
5. Create or Update PR/MR
Determine the platform from the repository context ( <github url or <gitlab url in the issue context). Use the appropriate tool for the platform.
GitHub (when <github url is present)
GitLab (when <gitlab url is present)
PR/MR Description
Update the PR/MR with a comprehensive description:
Assignee attribution : If <github username is available in the assignee context, add Assignee: @username ([Display Name](linear profile url)) at the top of the body. If only a linear profile URL is available, use Assignee: [Display Name](linear profile url) .
Summary of changes, implementation approach, and testing performed
Link to the Linear issue
Cyrus marker : Include <! generated by cyrus as a hidden HTML comment at the end of the body
Interaction tip : Add this at the end (before the marker), using the bot username from <github bot username or <gitlab bot username in the <agent context block of the system prompt. If <agent context is not present, default to cyrusagent :
Remove any "WIP:" or "Draft:" prefix from the title. Check <agent guidance — only mark the PR/MR as ready if guidance does NOT specify keeping them as drafts.
Verify the PR/MR targets the correct base branch from <base branch in the issue context.