원클릭으로
ship
// Goal-oriented workflow for landing a requested change safely. Use when the user asks to ship, fix and ship, take a change through validation, or drive PR/CI/merge to completion.
// Goal-oriented workflow for landing a requested change safely. Use when the user asks to ship, fix and ship, take a change through validation, or drive PR/CI/merge to completion.
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.
Goal-oriented repository maintenance and release-readiness work. Use when the user asks for maintenance, release prep, repo health review, dependency refreshes, spec/docs alignment, test gap review, technical debt analysis, or general cleanup without prescribing an exact sequence.
Run manual UI test cases using agent-browser against a running stack. Use when the user asks to run UI tests, test the UI, run manual tests, or verify UI behavior.
Process open Linear issues — pick up, fix, and ship one PR per issue. Use when the user asks to process issues, work on Linear issues, tackle the backlog, or fix open issues.
Take UI screenshots using agent-browser. Use this skill to capture visual state of UI components for code review, visual regression testing, or documentation.
Reference for working with the Everruns(Dev) managed harnesses platform (https://dev.everruns.com) - core concepts, UI links, entity naming, and API workflows for agents, harnesses, capabilities, sessions, models, and apps.
| name | ship |
| description | Goal-oriented workflow for landing a requested change safely. Use when the user asks to ship, fix and ship, take a change through validation, or drive PR/CI/merge to completion. |
| metadata | {"internal":true} |
| user-invocable | true |
Goal: land the requested change safely, with evidence, and merge only after CI is green.
This skill implements specs/shipping.md. Keep operational guidance here. Keep the shipping success bar and constraints in the spec.
This skill is outcome-oriented. Do not blindly walk a fixed checklist. Start from the goal and changed risk surface, then choose the smallest path that proves the change is ready.
Use this skill when the user asks to:
ALL outcomes below are MANDATORY. These are not suggestions — do not skip or weaken any requirement.
main or master.origin/main before merge.origin/main and check that neither origin/main nor the PR changed crates/server/migrations/ since their merge base. If either side changed migrations, rebase and run bash scripts/lib/check-migration-ordering.sh.
git fetch origin main
base="$(git merge-base HEAD origin/main)"
git diff --name-only "$base"..HEAD -- crates/server/migrations/
git diff --name-only "$base"..origin/main -- crates/server/migrations/
bash scripts/lib/check-migration-ordering.sh to verify crates/server/migrations/ numbers are strictly sequential. Migrations are the most common conflict source — multiple branches often add the same next number, and rebase silently keeps both. If the check fails, renumber your migration to the next available number.gh pr merge (after CI is green and review threads are resolved), re-run bash scripts/lib/check-migration-ordering.sh. Other PRs may have merged a colliding number while yours was in review.git diff origin/main...HEAD and git log origin/main..HEAD.specs/, specs/threat-model.md, AGENTS.md, test_cases/, apps/docs/, and OpenAPI exports when applicable.just start-dev --no-watch for fast checks.just start-all --no-watch when database, migration, infra, or API integration risk exists..github/pull_request_template.md.ci:skip-docker, ci:skip-slow-rust, ci:skip-postgres-integration, ci:skip-sdk-compat, ci:skip-ui-e2e, ci:skip-docs-notebooks, ci:skip-integration-workflows) may be used only for interim pushes after checking the skipped surface is not useful for that iteration.ci:skip-* label that suppresses CI affected by the PR diff and rerun CI on the latest PR commit. The CI Opt-Out Policy job must pass; do not merge with affected CI still skipped by opt-out.ci:skip-docker while iterating on non-container changes that still touch Rust/UI paths, ci:skip-slow-rust for early pushes where local targeted Rust evidence already covers the change, ci:skip-postgres-integration when only the PostgreSQL integration job is low-signal for the current push, ci:skip-sdk-compat when SDK contracts are unaffected, ci:skip-ui-e2e when UI smoke coverage is not relevant to the push, ci:skip-docs-notebooks when executable tutorial behavior is unchanged, and ci:skip-integration-workflows when the standalone integration workflow surface is unaffected. Before merge, remove opt-outs that suppress affected checks and rerun CI.gh pr merge --auto; merge manually only after the final review sweep is clean because async review bots can post after the last push or after CI turns green.just fmt can auto-fix a failing formatting check, use it once and retry.This is a mandatory step for every change that touches code, configuration, or infrastructure. It is not optional and must not be skipped based on perceived low risk.
For every shipped change, explicitly perform these steps:
Identify the threat surface. Read git diff origin/main...HEAD and determine which threat model categories from specs/threat-model.md the change touches. Common categories:
TM-AUTH — authentication changes, session handling, token generationTM-AUTHZ — permission checks, policy enforcement, role changesTM-API — new/changed endpoints, input parsing, query parametersTM-TOOL — tool registration, MCP servers, tool execution pathsTM-LLM — prompt construction, API key handling, model parametersTM-TENANT — data queries, org scoping, cross-tenant boundariesTM-FS — file paths, sandbox boundariesTM-SQL — database queries, sandbox boundariesTM-BASH — sandbox configuration, command executionTM-WEB — frontend rendering, CORS, CSP, cookie handlingTM-DOS — unbounded inputs, missing pagination, resource limitsReview each touched category. For every relevant category, check the diff for:
Check for THREAT comments. If the change modifies code near existing // THREAT[TM-XXX-NNN] comments, verify the mitigation is preserved. If the change introduces new threat surface, add appropriate THREAT comments.
Update the threat model. If the change introduces a genuinely new threat or materially changes an existing mitigation, update specs/threat-model.md with new entries or revised mitigations. Do not skip this for "small" changes — small changes at trust boundaries can have outsized impact.
Document the review. Include a Security section in the PR body listing:
Changes that are purely docs, comments, specs, or test-only may state "No security-relevant code changes" with a one-line justification instead of the full review.
Pick only what matches the changed surface:
just pre-pushjust pre-prcargo fmt --checkcargo clippy --all-targets --all-features -- -D warningscargo test --all-featurescargo fetch --lockedcd apps/ui && pnpm run format:check && pnpm run lint && pnpm run build./scripts/export-openapi.shcd apps/docs && pnpm run check && pnpm run buildbash scripts/lib/check-migration-ordering.sh (migration sequentiality, ~instant)gh pr view --json url to detect an existing PR.gh pr create if needed.gh pr edit --add-label <label> only for interim CI opt-outs, and gh pr edit --remove-label <label> before final CI. If label removal does not trigger the expected workflow, rerun the workflow or push an empty final commit only after confirming that is the repo's intended practice.gh pr view --comments to inspect the PR conversation, including bot comments.gh pr view --json reviews,latestReviews to inspect reviewer state.gh api graphql before merge.gh pr checks to watch CI.gh pr merge --squash only after CI is green and the final review sweep is clean.