skills/verify-and-ship/SKILL.md
Run all quality checks (tests, lint, typecheck), fix failures, update the changelog, commit, push, and create/update the pull request or merge request.
npx skillsauth add ceedaragents/cyrus verify-and-shipInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
After implementing your changes, follow these steps to verify quality and ship the work.
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.
Run all applicable quality checks:
Check if the project has changelog files:
ls -la CHANGELOG.md CHANGELOG.internal.md 2>/dev/null || echo "NO_CHANGELOG"
If changelog files exist, diff against the base branch to detect entries already added by this branch:
# See what changelog lines this branch has added compared to the base branch
# Replace <base_branch> with the actual base branch from the issue context
git diff <base_branch> -- CHANGELOG.md CHANGELOG.internal.md 2>/dev/null
Handling existing entries:
Adding or updating entries:
## [Unreleased] in the appropriate subsection (### Added, ### Changed, ### Fixed, ### Removed)([ISSUE-ID](linear_url), [#NUMBER](PR_OR_MR_URL)))Determine the platform from the repository context (<github_url> or <gitlab_url> in the issue context). Use the appropriate tool for the platform.
<github_url> is present)git push -u origin HEAD
gh pr view --json url,number 2>/dev/null || gh pr create --draft --base [base_branch from context] --title "[descriptive title]" --body "Work in progress"
<gitlab_url> is present)git push -u origin HEAD
glab mr view 2>/dev/null || glab mr create --draft --target-branch [base_branch from context] --title "[descriptive title]" --description "Work in progress"
Update the PR/MR with a comprehensive description:
<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).<!-- generated-by-cyrus --> as a hidden HTML comment at the end of the body<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:
---
> **Tip:** I will respond to comments that @ mention @<bot_username> on this PR/MR. You can also submit a review with all your feedback at once, and I will automatically wake up to address each comment.
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.
documentation
Configure Slack integration for Cyrus — create a Slack app from manifest, then guide the user to save credentials.
tools
Configure GitHub for Cyrus — gh CLI login and git config for PRs, with optional webhook setup to enable @mention responses in PR comments, automated rebases and merges, and auto-fixing based on CI failures (coming soon).
testing
Orchestrate F1 test drives to validate the Cyrus agent system end-to-end across issue-tracker, EdgeWorker, and activity rendering.
tools
Create a Linear OAuth application and configure Cyrus to use it — supports agent-browser automation or guided manual setup.