skills/base/bill-code-review/SKILL.md
Use when you want a generic code-review entry point that detects the dominant stack in scope and delegates to the matching stack-specific review skill. Use when user mentions code review, review my changes, review this PR, review staged changes, or asks to review code.
npx skillsauth add sermilion/mobile-development-plugin bill-code-reviewInstall 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.
Use this as the neutral review entry point for feature workflows and standalone reviews.
Keep this skill thin:
If .agents/skill-overrides.md exists in the project root and contains a ## bill-code-review section, read that section and apply it as the highest-priority instruction for this skill. The matching section may refine or replace parts of the default workflow below.
If an AGENTS.md file exists in the project root, apply it as project-wide guidance.
Precedence for this skill: matching .agents/skill-overrides.md section > AGENTS.md > built-in defaults.
Determine the review scope:
git diff --cached; index only)git diff; working tree only)git diff --cached + git diff) only when the caller explicitly asks for all local changesInspect both the changed files and repo markers before routing.
Resolve the scope before routing. If the caller asks for staged changes, route and review only the staged diff; do not let unstaged edits expand the findings beyond repo-marker stack detection.
The top-level router owns learnings resolution for the current review context.
skill, repo, global.Applied learnings: none.Before routing, read stack-routing.md. Use it as the source of truth for:
This supporting file lives beside SKILL.md; keep the routing rules in this skill aligned with it.
Do not redefine stack signals here unless a route-specific exception is truly unique to code review.
kmp signals dominate, delegate to bill-kmp-code-review.backend-kotlin signals dominate, delegate to bill-backend-kotlin-code-review.kotlin signals dominate without meaningful kmp or backend-kotlin markers, delegate to bill-kotlin-code-review.agent-config signals dominate, delegate to bill-agent-config-code-review.php signals dominate, delegate to bill-php-code-review.go signals dominate, delegate to bill-go-code-review.kmp with other Kotlin-family scope, prefer bill-kmp-code-review because it layers the appropriate Kotlin-family baseline internally instead of running multiple Kotlin-family orchestrators side by side.backend-kotlin with generic kotlin but not kmp, prefer bill-backend-kotlin-code-review because it layers bill-kotlin-code-review internally instead of running both side by side.bill-<stack>-code-review skill when it exists in the available skill catalog.For multi-stack delegated routing, read review-delegation.md (only your current runtime's section). Skip it for single-stack reviews — the routed skill handles its own delegation.
For a single routed stack-specific review skill:
inline or delegated using its own review-orchestrator.md contractinline, run it inline in the current thread instead of spawning an extra routed worker just for indirectiondelegated, use review-delegation.md and pass along the routed skill file path plus the required review contextFor multiple routed stack-specific review skills:
When routing to another skill, pass along:
review_session_id when one already existsreview_run_id when one already existsAGENTS.md guidance and matching .agents/skill-overrides.md sectionsSKILL.md as the primary rubricreview-orchestrator.md contract when the routed skill is a stack review orchestratorGenerate one review session id per top-level review using the format rvs-<uuid4> (e.g. rvs-550e8400-e29b-41d4-a716-446655440000). If a parent workflow already passed a review_session_id, reuse it instead of generating a new one.
Generate one review run id per routed review using the format rvw-YYYYMMDD-HHMMSS-XXXX where XXXX is a random 4-character alphanumeric suffix (e.g. rvw-20260405-143022-b2e1). If a parent workflow already passed a review_run_id, reuse it instead of generating a new one.
For a single routed skill:
Routed to: <skill-name>
Review session ID: <review-session-id>
Review run ID: <review-run-id>
Detected review scope: <staged changes / unstaged changes / working tree / commit range / PR diff / files>
Detected stack: <stack>
Signals: <markers>
Execution mode: inline | delegated
Applied learnings: none | <learning references>
Reason: <why this stack-specific reviewer was selected and why this execution mode was used>
<review output>
For multiple delegated skills:
Routed to: <skill-a>, <skill-b>
Review session ID: <review-session-id>
Review run ID: <review-run-id>
Detected review scope: <staged changes / unstaged changes / working tree / commit range / PR diff / files>
Detected stack: Mixed
Signals: <markers>
Execution mode: delegated
Applied learnings: none | <learning references>
Reason: <why multiple stack-specific reviewers were selected and why delegated routing was required>
<merged delegated review output>
For unsupported stacks:
Detected review scope: <staged changes / unstaged changes / working tree / commit range / PR diff / files>
Detected stack: Unknown/Unsupported
Signals: <markers>
Result: No matching stack-specific code-review skill is available yet.
This router is thin by design and never emits telemetry on its own — routing metadata is carried in the concrete routed skill's telemetry call.
For telemetry ownership, triage ownership, and the orchestrated flag contract, follow telemetry-contract.md.
The orchestrated flag must come from the caller (the orchestrator passes it explicitly). A standalone review never sees the flag set and always emits skillbill_review_finished as before.
development
Use when running a governed editorial assignment desk from Readian recommendations through candidate selection and source-backed story packs.
testing
Use when reviewing unit tests in a file, current changes, or a commit to flag low-value, tautological, or coverage-only tests that do not validate real behavior. Use when user mentions check test quality, review tests, tautological tests, weak tests, or coverage-padding.
data-ai
Use when removing an existing skill or platform skill set and cleaning up agent installs, manifests, and supporting links.
development
Use when you want a generic quality-check entry point that detects the dominant stack in scope and delegates to the matching stack-specific quality-check skill. Use when user mentions run checks, validate, lint, format, quality check, or run quality.