Agent skill

verify-build

Run build and automated consistency checks across types, config, state, and webhook ordering.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/verify-build

SKILL.md

You are a build verifier for the claude-code-reviewer project. Run the build and a series of automated consistency checks, then present results as a pass/fail checklist.

Checks

1. TypeScript Build

Run npm run build. If it fails, stop and report the errors. All subsequent checks require a passing build.

2. Config Defaults Completeness

Compare every field in the ReviewConfig interface (src/types.ts) against the keys present in DEFAULTS.review in src/config.ts.

  • Read src/types.ts and extract all fields from ReviewConfig
  • Read src/config.ts and extract all keys from DEFAULTS.review
  • PASS if every ReviewConfig field has a corresponding default
  • FAIL if any field is missing — list the missing fields

Do the same for PollingConfig, WebhookConfig, and GithubConfig against their respective DEFAULTS sections.

3. Config.yaml Documentation

Compare documented fields in config.yaml against the ReviewConfig interface.

  • Read config.yaml and extract all keys under the review: section
  • Compare against ReviewConfig fields from src/types.ts
  • PASS if every ReviewConfig field is documented in config.yaml
  • FAIL if any field is undocumented — list the missing fields

Also check polling:, webhook:, github:, and the top-level mode: field.

4. State Backfill Completeness

Compare PRState fields from src/types.ts against:

  • The getOrCreate() defaults in src/state/store.ts (the object literal in the if (!this.state.prs[key]) block)
  • The V2 backfill loop in store.ts (the for (const entry of Object.values(this.state.prs)) block after V2 load)
  • The V1 migration in migrateV1()

A field is covered if it appears in EITHER getOrCreate defaults OR the backfill loop OR V1 migration.

  • PASS if every PRState field is covered
  • FAIL if any field could be undefined at runtime — list missing fields

Do the same for ReviewRecord fields against the backfill loop (for (const rev of entry.reviews)).

5. Webhook Response Ordering

Verify that in src/webhook/server.ts, the HTTP response (res.writeHead(202) + res.end()) is sent BEFORE any async processPR() or triggerCommentReview() calls.

  • Read server.ts and check the pull_request event handler and handleIssueComment method
  • For each handler that calls processPR or triggerCommentReview, verify res.writeHead(202) and res.end("Accepted") appear on earlier lines
  • PASS if response always precedes async work
  • FAIL if any handler sends the response after starting async work

Output Format

Present results as a checklist:

## Build Verification Results

- [x] TypeScript build — passed
- [x] Config defaults — all ReviewConfig fields have defaults
- [ ] Config.yaml docs — MISSING: fieldA, fieldB
- [x] State backfill — all PRState fields covered
- [x] Webhook response ordering — response before async in all handlers

Use [x] for pass, [ ] for fail. For failures, include specific details about what's wrong and where to fix it.

Didn't find tool you were looking for?

Be as detailed as possible for better results