Repo Readiness
Apply task scope and authorization when
using this workflow; it defines how existing approval and task boundaries apply.
Use this skill to answer whether a change, branch, PR, or workstream is ready.
It is an orchestrator: follow repo-specific instructions first, then call the
relevant focused skills or tools instead of duplicating their details.
When the user asks whether work is done, ready to hand off, or safe to exit,
use this skill first for gates and evidence, then use work-closeout for final
hygiene, artifact cleanup, and durable parking state. Do not force a single
skill when both readiness and closeout are required. A safe-to-exit, wrap-up,
pause, or handoff prompt must not end with a readiness-only final answer; the
final answer must come from work-closeout and include both Love Gate and
Safe to exit.
Outcome
Return a truthful verdict—ready, not ready, partially ready, or blocked—with the
required gates, passed/failed/pending/not-run evidence, blockers, and the
smallest next action that would change the verdict. Readiness is complete only
when the evidence covers the changed surface and any configured code, docs,
inspection, browser, CI, deployment, or security gates.
Workflow
Identify the repo, branch, active task, changed files, and whether a PR/issue
is in play.
Check .github/github.json before inferring gates.
If it has a qualityGate block, use it for how to run tests, lint/static
analysis, format checks, typechecks, builds, and IDE/static inspections. Use
qualityGate.docsRequiredWhen for docs freshness triggers. If it has a
docs block, prefer docs.index and relevant docs.* paths as the docs
entry points. Fall back to repo instructions (AGENTS.md, README,
docs/policies/gates), CI files, and manifests for any unset metadata fields.
If a durable command is confidently inferred, cite the source and propose a
metadata addition rather than auto-writing it.
Inspect local state:
git status --short --branch
For code changes, delegate inspection execution and triage to
jetbrains-inspection and follow the authoritative section below. When
.github/github.json defines qualityGate.inspection, readiness must include
JetBrains evidence or an explicit not-run reason. For blank, missing,
contradictory, or surprising config, use a safe one-off changed_files
default only when the helper can infer the route, and ask the user before
changing repo policy.
If qualityGate.inspection.prepare is configured, run that exact command in
the target linked worktree before the first JetBrains assessment. The command
may create ignored local .venv/ or .idea/ state, but a nonzero exit or any
tracked-file mutation is a preparation blocker. Do not invent or substitute a
replacement setup command.
If the shared Launchplane context helper is present and configured, call it once
as optional readiness context for the active repo/branch/PR:
uv run <skill-dir>/../launchplane/scripts/launchplane-context.py --repo OWNER/REPO
Use available context only as a hint for product mapping, preview readiness,
Every Code state, deploy evidence, or source-of-truth links. Treat no_context,
unavailable, unauthorized, invalid, or helper failure as normal absence and
continue with local/GitHub readiness checks. Do not print raw helper stderr or
copy helper payloads into readiness output.
If you inspect worktrees, ignore Codex Desktop or Every Code auto-review
worktrees under ~/.code/working/<repo>/branches/auto-review* unless the user's
task is specifically about that review. They are detached external review
context and should not affect readiness for the active repo/branch.
When background auto-review results or ledgers are available in session
context or repo tooling, follow
../references/background-review-reporting.md. Match the observation to the
active branch, PR, and head SHA before using it as evidence. Do not declare a
branch, PR, release, or handoff green while blocking findings against the
current target are unresolved or while a matching review is in flight.
When no lifecycle evidence is visible before a possible post-turn trigger,
report not yet observable; do not infer a skipped or not-emitted outcome,
and do not delay the final response solely waiting for that trigger. If a
matching review is already in flight, use only bounded waiting when useful;
otherwise preserve it as pending evidence in the readiness handoff. If a
finding points at a detached auto-review* worktree or older snapshot,
verify it against current HEAD before treating it as blocking. Detached
auto-review worktrees are not dirty active state; only matching review
findings and lifecycle evidence matter.
Apply Gate Selection for the required breadth at this stage,
including the final-readiness defaults for lint/static analysis and IDE
inspection. Run the required repo gates and the narrowest additional checks
that cover the change and risk. Before saying code is ready, confirm current
evidence covers the required scope. Broaden for missing coverage, changed
behavior, failures, unresolved concerns, or an explicit repo requirement; do
not rerun passing checks that cover the required scope for an unchanged
revision and environment merely for closeout.
If GitHub state matters, use github for PR checks, Actions,
review status, labels, deploy health, and mergeability.
Use github-plan for planning issue indexes, Project state, blocker graphs,
and planning GraphQL operations. Use the GitHub skills' structured
command-policy metadata as the helper catalog; this skill decides what
evidence is needed, not which raw gh command to run.
If an open PR still needs repeated CI/review/mergeability polling after a
branch update, check rerun, rebase, review-fix push, or "safe to exit" check,
route that follow-through to babysit-pr; keep this skill focused on the
point-in-time readiness verdict and evidence.
For stacked PRs, include whether a rollup/integration PR would be safer or
faster than merging each layer and rerunning expensive checks repeatedly,
unless repo metadata or task context says Launchplane owns the merge train.
For Launchplane-managed trains, verify or route through launchplane instead
of recommending a hand-built GitHub rollup.
If UI was touched, use browser-ui-review for browser-visible validation.
If security is in scope, use security-review explicitly; do not silently
turn normal readiness into a full security audit.
Report readiness concisely. If the user asked for handoff, wrap-up, or
safe-to-exit, treat any readiness report as interim evidence and continue
into work-closeout after the readiness answer is established. The closeout
answer owns the final safe-to-exit verdict and must include Love Gate.
Readiness To Closeout Handoff
When work-closeout will run after this skill, make the readiness answer easy
to consume instead of asking closeout to rediscover gate state. Include these
fields in chat, a PR comment, or the owning issue when durable state is needed:
- Status: ready, not ready, partially ready, or blocked.
- Required gates: the checks inferred from
.github/github.json, repo docs, CI,
and the changed surface.
- Passed, failed, pending, and not-run evidence with concrete reasons.
- For PR readiness, preserve watcher/check evidence, pending counts, and
unsettled long checks explicitly; do not flatten an unsettled PR into a
one-shot "mergeable" or "ready" summary.
- For release, runtime, deploy, or browser/device-specific blockers, name the
exact environment checked. If only a substitute was available, name the
substitute and keep the gap visible in the readiness status.
- Metadata/docs impact: whether
.github/github.json or docs changed, were
checked, are stale, or were intentionally not updated.
- Background review: the target-matched point-in-time state, observation time
or head SHA, and the canonical state:
not yet observable, in flight,
observation unavailable, or an exact terminal outcome.
- Next action: the smallest step that would change readiness.
This handoff is evidence for work-closeout; it is not cleanup. Do not delete
artifacts, remove worktrees, close planning issues, or claim safe-to-exit from
this skill alone. If the user asked whether they can exit or stop, the final
response belongs to work-closeout, not this readiness handoff.
Both this skill and work-closeout read .github/github.json with the same
schema expectations: qualityGate, docs, metadataFreshness, cleanup,
importantWorkflows, repo relationships, health signals, and ownership or
Launchplane routing when present. Readiness uses those fields to decide what
must be verified; closeout uses the same fields to decide what final evidence,
metadata updates, and cleanup remain.
Use ../references/every-code-formatting.md for readiness reports and durable
readiness comments: lead with status, cite concrete evidence, and keep skipped
or pending checks explicit without copying large logs. Use
../references/background-review-reporting.md for Background Review state.
Gate Selection
- Docs-only: validate links/rendering when practical; do not run full code gates
unless docs describe executable behavior. Prefer
docs.index when repo
metadata provides it.
- Narrow code change: run targeted tests/checks for touched behavior.
- Shared contract, deployment, release, or security-sensitive change: run the
broader repo gate and any required inspection/security checks.
- Shared agent instructions, approval or safety rules, or a destructive helper:
nothing executable catches a mistake here, so also get a review by another
model and weigh it under
../references/model-review.md.
- Frontend/UI change: run browser validation in addition to build/type/test
checks required by the repo.
- Docker image change: prefer real image build/smoke/inspection over static
Dockerfile review when downstream behavior changes.
Quality default: all code changes should trend toward zero known lint/static
analysis and IDE inspection noise. Run narrow gates while iterating, but before
declaring a code change ready, safe to merge, safe to ship, or ready to hand off,
run broad practical gates when tooling exists: normally whole-repo lint/static
analysis and whole-project IDE inspection. Use downstream/related repo gates
when contracts, shared packages, deployment behavior, or cross-repo ownership
changes.
If a broad gate is too slow, unavailable, blocked by IDE indexing/tooling,
likely destructive, or disproportionate for a docs-only change, report it as not
run with the reason. Ask before running gates that mutate shared environments or
external resources. If linting a file for the first time, dry-run first when the
environment supports it.
For code-change readiness, inspection evidence is one of: a clean
jetbrains-inspection closeout result with scope and route, actionable findings
that were fixed or tracked, or a concrete not-run reason such as unavailable IDE,
blocked indexing, docs-only scope, or user-approved parking. Missing inspection
evidence for a configured code gate means the readiness answer is not fully
ready.
Existing lint/inspection noise is not an invisible background condition. Fix
real findings the right way when straightforward or in the affected area. If
findings are broad but real, call them out and decide whether to include a
cleanup pass or track a focused cleanup item. If a finding is a false positive or
cannot be fixed cleanly, discuss an explicit suppression, baseline, or config
change.
Reviewability is part of readiness. Unless a change is mostly mechanical, treat
diffs over roughly 800 changed lines as a review-risk signal; for complex logic
changes, prefer stages under roughly 500 changed lines. If a change is larger,
explain whether it can be split into reviewable stages and identify the smallest
coherent stage to land first, based on the actual diff, dependencies, and
affected call sites.
When work changes docs routing, validation commands, lint/inspection routing,
required docs conditions, important workflows, health endpoints, repo
relationships, cleanup policy, or ownership boundaries, check whether
.github/github.json is stale.
Do not treat manifest-owned dependency or inventory changes as a reason to copy
those facts into workflow metadata; point to the canonical manifests or docs
instead.
Report metadata drift as a readiness warning or blocker only when it changes
what "ready" means for the current task.
For every non-trivial code change, perform a docs-impact check. If docs-required
triggers match, inspect the relevant docs and update them when stale. If no docs
update is needed, say why briefly in readiness output.
JetBrains IDE And Inspections
Delegate JetBrains/PyCharm/IntelliJ/WebStorm inspection execution and triage to
jetbrains-inspection. Treat stale results, incomplete capture, indexing,
session drift, unavailable IDE, ambiguous routing, or wrong-worktree routing as
not-clean states. Do not add suppressions, disable inspections, or change IDE
inspection profiles without explicit approval unless the repo already has an
approved convention.
If the repo inspection config is blank or feels wrong, ask the user when the
choice affects durable repo policy or readiness. Examples: configured IDE does
not match the open project, configured scope is disproportionate to the change,
or configured paths point away from the active worktree. For a one-off local
check with no durable policy change, prefer the helper's safe inferred route and
changed_files scope, and report that assumption.
When tracked IDE configuration changes, apply
../references/ide-configuration-policy.md. An unresolved tracked IDE diff is
not clean: review its exact hunks, ignore rules, repository policy, and history,
then preserve the canonical shared form plus only safe hunks. Do not call the
work ready after a blanket commit, revert, clean, or stash, and do not include
ignored generated or unrelated local IDE state in the readiness change set.
Output Format
Use a compact readiness report:
- Status: ready / not ready / partially ready / blocked.
- Passed: checks, inspections, browser review, CI, or manual evidence.
- Failed: actionable failures with file/run links where useful.
- Pending: CI, review, deploy, indexing, or user decisions still in flight.
- Not run: checks skipped or unavailable, with reason.
- Next: the smallest concrete step to reach readiness.
If there are no blockers, say so plainly.
1---2name: repo-readiness3description: Use when the user asks whether a change, branch, PR, or workstream is ready to review, merge, ship, pause, or hand off, or asks to run gates, validate changes, check CI/PR readiness, inspect IDE warnings, verify UI, or identify blockers. Orchestrates local, GitHub, inspection, and browser evidence into a concise readiness report.4---56# Repo Readiness78Apply [task scope and authorization](../references/execution-scope.md) when9using this workflow; it defines how existing approval and task boundaries apply.1011Use this skill to answer whether a change, branch, PR, or workstream is ready.12It is an orchestrator: follow repo-specific instructions first, then call the13relevant focused skills or tools instead of duplicating their details.1415When the user asks whether work is done, ready to hand off, or safe to exit,16use this skill first for gates and evidence, then use `work-closeout` for final17hygiene, artifact cleanup, and durable parking state. Do not force a single18skill when both readiness and closeout are required. A safe-to-exit, wrap-up,19pause, or handoff prompt must not end with a readiness-only final answer; the20final answer must come from `work-closeout` and include both `Love Gate` and21`Safe to exit`.2223## Outcome2425Return a truthful verdict—ready, not ready, partially ready, or blocked—with the26required gates, passed/failed/pending/not-run evidence, blockers, and the27smallest next action that would change the verdict. Readiness is complete only28when the evidence covers the changed surface and any configured code, docs,29inspection, browser, CI, deployment, or security gates.3031## Workflow32331. Identify the repo, branch, active task, changed files, and whether a PR/issue34 is in play.352. Check `.github/github.json` before inferring gates.36 If it has a `qualityGate` block, use it for how to run tests, lint/static37 analysis, format checks, typechecks, builds, and IDE/static inspections. Use38 `qualityGate.docsRequiredWhen` for docs freshness triggers. If it has a39 `docs` block, prefer `docs.index` and relevant `docs.*` paths as the docs40 entry points. Fall back to repo instructions (`AGENTS.md`, README,41 docs/policies/gates), CI files, and manifests for any unset metadata fields.42 If a durable command is confidently inferred, cite the source and propose a43 metadata addition rather than auto-writing it.443. Inspect local state:4546 ```bash47 git status --short --branch48 ```49504. For code changes, delegate inspection execution and triage to51 `jetbrains-inspection` and follow the authoritative section below. When52 `.github/github.json` defines `qualityGate.inspection`, readiness must include53 JetBrains evidence or an explicit not-run reason. For blank, missing,54 contradictory, or surprising config, use a safe one-off `changed_files`55 default only when the helper can infer the route, and ask the user before56 changing repo policy.5758 If `qualityGate.inspection.prepare` is configured, run that exact command in59 the target linked worktree before the first JetBrains assessment. The command60 may create ignored local `.venv/` or `.idea/` state, but a nonzero exit or any61 tracked-file mutation is a preparation blocker. Do not invent or substitute a62 replacement setup command.6364 If the shared Launchplane context helper is present and configured, call it once65 as optional readiness context for the active repo/branch/PR:6667 ```bash68 uv run <skill-dir>/../launchplane/scripts/launchplane-context.py --repo OWNER/REPO69 ```7071 Use `available` context only as a hint for product mapping, preview readiness,72 Every Code state, deploy evidence, or source-of-truth links. Treat `no_context`,73 `unavailable`, `unauthorized`, `invalid`, or helper failure as normal absence and74 continue with local/GitHub readiness checks. Do not print raw helper stderr or75 copy helper payloads into readiness output.7677 If you inspect worktrees, ignore Codex Desktop or Every Code auto-review78 worktrees under `~/.code/working/<repo>/branches/auto-review*` unless the user's79 task is specifically about that review. They are detached external review80 context and should not affect readiness for the active repo/branch.8182 When background auto-review results or ledgers are available in session83 context or repo tooling, follow84 `../references/background-review-reporting.md`. Match the observation to the85 active branch, PR, and head SHA before using it as evidence. Do not declare a86 branch, PR, release, or handoff green while blocking findings against the87 current target are unresolved or while a matching review is `in flight`.88 When no lifecycle evidence is visible before a possible post-turn trigger,89 report `not yet observable`; do not infer a skipped or not-emitted outcome,90 and do not delay the final response solely waiting for that trigger. If a91 matching review is already `in flight`, use only bounded waiting when useful;92 otherwise preserve it as pending evidence in the readiness handoff. If a93 finding points at a detached `auto-review*` worktree or older snapshot,94 verify it against current `HEAD` before treating it as blocking. Detached95 auto-review worktrees are not dirty active state; only matching review96 findings and lifecycle evidence matter.97985. Apply [Gate Selection](#gate-selection) for the required breadth at this stage,99 including the final-readiness defaults for lint/static analysis and IDE100 inspection. Run the required repo gates and the narrowest additional checks101 that cover the change and risk. Before saying code is ready, confirm current102 evidence covers the required scope. Broaden for missing coverage, changed103 behavior, failures, unresolved concerns, or an explicit repo requirement; do104 not rerun passing checks that cover the required scope for an unchanged105 revision and environment merely for closeout.1066. If GitHub state matters, use `github` for PR checks, Actions,107 review status, labels, deploy health, and mergeability.108 Use `github-plan` for planning issue indexes, Project state, blocker graphs,109 and planning GraphQL operations. Use the GitHub skills' structured110 command-policy metadata as the helper catalog; this skill decides what111 evidence is needed, not which raw `gh` command to run.112 If an open PR still needs repeated CI/review/mergeability polling after a113 branch update, check rerun, rebase, review-fix push, or "safe to exit" check,114 route that follow-through to `babysit-pr`; keep this skill focused on the115 point-in-time readiness verdict and evidence.116 For stacked PRs, include whether a rollup/integration PR would be safer or117 faster than merging each layer and rerunning expensive checks repeatedly,118 unless repo metadata or task context says Launchplane owns the merge train.119 For Launchplane-managed trains, verify or route through `launchplane` instead120 of recommending a hand-built GitHub rollup.1217. If UI was touched, use `browser-ui-review` for browser-visible validation.1228. If security is in scope, use `security-review` explicitly; do not silently123 turn normal readiness into a full security audit.1249. Report readiness concisely. If the user asked for handoff, wrap-up, or125 safe-to-exit, treat any readiness report as interim evidence and continue126 into `work-closeout` after the readiness answer is established. The closeout127 answer owns the final safe-to-exit verdict and must include `Love Gate`.128129## Readiness To Closeout Handoff130131When `work-closeout` will run after this skill, make the readiness answer easy132to consume instead of asking closeout to rediscover gate state. Include these133fields in chat, a PR comment, or the owning issue when durable state is needed:134135- Status: ready, not ready, partially ready, or blocked.136- Required gates: the checks inferred from `.github/github.json`, repo docs, CI,137 and the changed surface.138- Passed, failed, pending, and not-run evidence with concrete reasons.139- For PR readiness, preserve watcher/check evidence, pending counts, and140 unsettled long checks explicitly; do not flatten an unsettled PR into a141 one-shot "mergeable" or "ready" summary.142- For release, runtime, deploy, or browser/device-specific blockers, name the143 exact environment checked. If only a substitute was available, name the144 substitute and keep the gap visible in the readiness status.145- Metadata/docs impact: whether `.github/github.json` or docs changed, were146 checked, are stale, or were intentionally not updated.147- Background review: the target-matched point-in-time state, observation time148 or head SHA, and the canonical state: `not yet observable`, `in flight`,149 `observation unavailable`, or an exact terminal outcome.150- Next action: the smallest step that would change readiness.151152This handoff is evidence for `work-closeout`; it is not cleanup. Do not delete153artifacts, remove worktrees, close planning issues, or claim safe-to-exit from154this skill alone. If the user asked whether they can exit or stop, the final155response belongs to `work-closeout`, not this readiness handoff.156157Both this skill and `work-closeout` read `.github/github.json` with the same158schema expectations: `qualityGate`, `docs`, `metadataFreshness`, `cleanup`,159`importantWorkflows`, repo relationships, health signals, and ownership or160Launchplane routing when present. Readiness uses those fields to decide what161must be verified; closeout uses the same fields to decide what final evidence,162metadata updates, and cleanup remain.163164Use `../references/every-code-formatting.md` for readiness reports and durable165readiness comments: lead with status, cite concrete evidence, and keep skipped166or pending checks explicit without copying large logs. Use167`../references/background-review-reporting.md` for Background Review state.168169## Gate Selection170171- Docs-only: validate links/rendering when practical; do not run full code gates172 unless docs describe executable behavior. Prefer `docs.index` when repo173 metadata provides it.174- Narrow code change: run targeted tests/checks for touched behavior.175- Shared contract, deployment, release, or security-sensitive change: run the176 broader repo gate and any required inspection/security checks.177- Shared agent instructions, approval or safety rules, or a destructive helper:178 nothing executable catches a mistake here, so also get a review by another179 model and weigh it under `../references/model-review.md`.180- Frontend/UI change: run browser validation in addition to build/type/test181 checks required by the repo.182- Docker image change: prefer real image build/smoke/inspection over static183 Dockerfile review when downstream behavior changes.184185Quality default: all code changes should trend toward zero known lint/static186analysis and IDE inspection noise. Run narrow gates while iterating, but before187declaring a code change ready, safe to merge, safe to ship, or ready to hand off,188run broad practical gates when tooling exists: normally whole-repo lint/static189analysis and whole-project IDE inspection. Use downstream/related repo gates190when contracts, shared packages, deployment behavior, or cross-repo ownership191changes.192193If a broad gate is too slow, unavailable, blocked by IDE indexing/tooling,194likely destructive, or disproportionate for a docs-only change, report it as not195run with the reason. Ask before running gates that mutate shared environments or196external resources. If linting a file for the first time, dry-run first when the197environment supports it.198199For code-change readiness, inspection evidence is one of: a clean200`jetbrains-inspection closeout` result with scope and route, actionable findings201that were fixed or tracked, or a concrete not-run reason such as unavailable IDE,202blocked indexing, docs-only scope, or user-approved parking. Missing inspection203evidence for a configured code gate means the readiness answer is not fully204ready.205206Existing lint/inspection noise is not an invisible background condition. Fix207real findings the right way when straightforward or in the affected area. If208findings are broad but real, call them out and decide whether to include a209cleanup pass or track a focused cleanup item. If a finding is a false positive or210cannot be fixed cleanly, discuss an explicit suppression, baseline, or config211change.212213Reviewability is part of readiness. Unless a change is mostly mechanical, treat214diffs over roughly 800 changed lines as a review-risk signal; for complex logic215changes, prefer stages under roughly 500 changed lines. If a change is larger,216explain whether it can be split into reviewable stages and identify the smallest217coherent stage to land first, based on the actual diff, dependencies, and218affected call sites.219220When work changes docs routing, validation commands, lint/inspection routing,221required docs conditions, important workflows, health endpoints, repo222relationships, cleanup policy, or ownership boundaries, check whether223`.github/github.json` is stale.224Do not treat manifest-owned dependency or inventory changes as a reason to copy225those facts into workflow metadata; point to the canonical manifests or docs226instead.227Report metadata drift as a readiness warning or blocker only when it changes228what "ready" means for the current task.229230For every non-trivial code change, perform a docs-impact check. If docs-required231triggers match, inspect the relevant docs and update them when stale. If no docs232update is needed, say why briefly in readiness output.233234## JetBrains IDE And Inspections235236Delegate JetBrains/PyCharm/IntelliJ/WebStorm inspection execution and triage to237`jetbrains-inspection`. Treat stale results, incomplete capture, indexing,238session drift, unavailable IDE, ambiguous routing, or wrong-worktree routing as239not-clean states. Do not add suppressions, disable inspections, or change IDE240inspection profiles without explicit approval unless the repo already has an241approved convention.242243If the repo inspection config is blank or feels wrong, ask the user when the244choice affects durable repo policy or readiness. Examples: configured IDE does245not match the open project, configured scope is disproportionate to the change,246or configured paths point away from the active worktree. For a one-off local247check with no durable policy change, prefer the helper's safe inferred route and248`changed_files` scope, and report that assumption.249250When tracked IDE configuration changes, apply251`../references/ide-configuration-policy.md`. An unresolved tracked IDE diff is252not clean: review its exact hunks, ignore rules, repository policy, and history,253then preserve the canonical shared form plus only safe hunks. Do not call the254work ready after a blanket commit, revert, clean, or stash, and do not include255ignored generated or unrelated local IDE state in the readiness change set.256257## Output Format258259Use a compact readiness report:260261- Status: ready / not ready / partially ready / blocked.262- Passed: checks, inspections, browser review, CI, or manual evidence.263- Failed: actionable failures with file/run links where useful.264- Pending: CI, review, deploy, indexing, or user decisions still in flight.265- Not run: checks skipped or unavailable, with reason.266- Next: the smallest concrete step to reach readiness.267268If there are no blockers, say so plainly.