skills/df-implement-review/SKILL.md
Review implementation results for goal achievement and code quality. Supports both Plan-backed review and planless diff review. ⚠️ MUST use when: (1) Wopal delegates rook to review fae implementation output, (2) Prompt contains "review_type: implementation", (3) Prompt contains changed code file list or Plan path + implementation scope, (4) Any code review request from Wopal. 🔴 Trigger even when user does not explicitly mention "review" if the task involves verifying implementation results. This skill is rook-exclusive (only rook agent can load it).
npx skillsauth add sampx/agent-tools df-implement-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.
Review implementation results to verify explicit goals when they exist and to scan for technical defects and debt.
Determine the mode before reviewing:
| Mode | Trigger | Primary responsibility | |------|---------|------------------------| | Plan-backed review | Prompt includes Plan path, explicit truths, or must_haves | Verify implementation against explicit truths + scan technical defects | | Planless diff review | Prompt includes changed files, working tree diff, commit, or commit range but no Plan | Review the supplied changes for technical defects and debt only |
Critical rule: In planless diff review, do NOT infer product requirements from your own taste. Business logic belongs to the user and Wopal unless the prompt explicitly requests business-logic review.
Your core scope in code review is:
| Category | What to look for |
|----------|------------------|
| bug / regression | Logic errors, missing edge-case handling, broken branches, type/runtime mismatches, silent regressions |
| security | Injection, XSS, unsafe deserialization, missing validation, accidental secret exposure |
| tests | Missing coverage for changed behavior, skipped/placeholder assertions, weak assertions, redundant tests that fail to protect behavior |
| duplication / extraction | Repeated logic that should reasonably be extracted into shared helpers/modules because it creates maintenance drift or bug risk |
| conventions | Violations of AGENTS.md, local project rules, established patterns, or required config/typing/logging conventions |
| general debt | TODO/FIXME stubs, placeholders, dead code, fake dynamic behavior, brittle wiring |
Do not treat these as defects unless the prompt explicitly asks for them:
If you discover a plausible severe logic risk while reviewing code, report it in a separate section: Serious Logic Risks (Discuss with User).
Use this section only when all are true:
file:line evidenceDefault rule: Serious logic risks do not affect PASS / REVISE / BLOCK unless:
# 审查报告
## 概要
- 审查类型: Code
- 判定: PASS | REVISE | BLOCK
- 统计: Blocker N / Warning N / Info N
## Blocker
### B-01: {Issue Title}
- 位置: `path/to/file:line`
- 代码: `{具体代码片段}`
- 问题: {为什么阻碍目标达成}
- 修复建议: {具体可执行的修复方案}
## Warning
{Warning 项,格式同 Blocker}
## Info
{Info 项,可省略 file:line}
## Serious Logic Risks (Discuss with User)
{Only for severe logic risks that need Wopal + user discussion. Do not use this section for ordinary preferences.}
## Requirement Questions
{Only for requirement ambiguity or product choices that cannot be judged from code alone.}
## Positive Findings
- {已验证通过的亮点项}
## UNCOVERED STEPS / NEEDS_HUMAN
{Only when context/time constraints prevented full coverage}
Blocker requirements:
file:lineWarning requirements:
file:lineInfo can omit: Location and code, but must be specific suggestion
Serious Logic Risk requirements:
file:linefiles_to_read, working tree diff, commit, or commit range from promptAGENTS.md / local config when neededCRITICAL: All workflow steps MUST be completed before outputting any report.
At review start, create TodoWrite items for each step:
[ ] 1. Determine mode + exact scope[ ] 2. Read all changed files / diffs[ ] 3. Plan truth verification (only when Plan-backed)[ ] 4. Technical scan — bug/security/duplication/conventions/debt[ ] 5. Test quality audit[ ] 6. Consolidated report — all findings gatheredDuring review, mark only ONE in_progress at a time. Mark completed immediately after step-specific work is done.
FORBIDDEN to output final report (PASS / REVISE / BLOCK) while any step is still pending or in_progress. Wopal uses your todo completion rate to track review progress.
FORBIDDEN to stop after the first serious issue. A Blocker means severity, not permission to skip the remaining files.
Context low fallback: If context is running out → output a partial report with an explicit UNCOVERED STEPS section.
Tests often hide the biggest debt. Check:
| Pattern | Why it's debt | Check |
|---------|---------------|-------|
| Skipped/disabled tests | Requirements not proven | grep tool: pattern: 'skip\(|xit|xdescribe|\.skip|@pytest\.mark\.skip|t\.Skip' |
| Circular proofs | System generates its own expected values | Read test file, check if expected values come from the same system under test |
| Placeholder assertions | expect(true).toBe(true) — always passes | grep tool: pattern: 'expect\(true\)|expect\(false\)|expect\(1\)|expect\("test"\)' |
| Weak assertions | Only check existence, not behavior | grep tool: pattern: 'toBeDefined|toBeTruthy|toBeFalsy|not\.toBeNull' |
| Missing assertions | No assertions in test file | grep tool: pattern: 'expect|assert' — zero hits = empty test shell |
| Redundant tests | Many tests repeat the same happy path without protecting changed branches | Read changed tests and look for repeated assertions that do not cover distinct behavior |
In planless review, ask: does the changed behavior have enough tests to catch regression? In all modes, ask: are the tests proving behavior, or just creating noise?
Blocker if: Test file exists for requirement but all tests are skipped/disabled or assertions are placeholders.
Warning if: Coverage for the changed branch is missing, or tests are obviously duplicated while key branches remain untested.
Flag duplication only when it creates real maintenance cost or drift risk.
Good reasons to flag:
Do not flag:
| Mode | When to use | What it checks |
|------|-------------|----------------|
| standard | Default | Goal verification + pattern scanning |
| deep | Complex changes | Cross-file call chains + import graph + type consistency |
Prompt should specify depth: standard | deep. Default to standard.
For detailed verification patterns, stub detection, and test audit procedures:
@references/review-rubric.md
Key sections:
Plan truth: "User can send a message"
Code found:
// components/Chat.tsx:45
const handleSubmit = (e) => {
e.preventDefault()
console.log(data) // Only logs
}
Finding:
components/Chat.tsx:45-47console.log(data)fetch('/api/messages', { method: 'POST', body: data })Plan truth: "Messages are fetched from database"
Code found:
// api/messages/route.ts:12
export async function GET() {
return Response.json([]) // Empty array, no DB query
}
Finding:
api/messages/route.ts:12return Response.json([])const messages = await prisma.message.findMany() before returnCode found:
// src/a.ts
const normalized = input.trim().toLowerCase()
if (!normalized) throw new Error("empty")
// src/b.ts
const normalized = input.trim().toLowerCase()
if (!normalized) throw new Error("empty")
Finding:
src/a.ts:1-2, src/b.ts:1-2const normalized = input.trim().toLowerCase()normalizeInput() if both modules are meant to follow the same ruleCode found:
// src/jobs/purge.ts:18
await deleteAllUserContent(userId)
Finding:
src/jobs/purge.ts:18await deleteAllUserContent(userId)Test file: tests/chat.test.ts
Code found:
describe('Chat', () => {
it.skip('sends message', () => { ... }) // Skipped
it('renders', () => {
expect(true).toBe(true) // Placeholder assertion
})
})
Finding:
tests/chat.test.ts:5-7it.skip('sends message', ...)expect(mockFetch).toHaveBeenCalledWith('/api/messages')ALWAYS:
file:line evidence for Blocker/WarningNEVER:
This skill is loaded by rook agent. Workflow:
review_type: implementationRevision loop limit: Max 3 rounds of REVISE/BLOCK per implementation.
| Verdict | Condition | |---------|-----------| | PASS | All truths verified, no Blocker, Warning ≤ 2 | | REVISE | Warning ≥ 3 or Info ≥ 5, no Blocker | | BLOCK | ≥ 1 Blocker found within technical scope |
| Evidence Level | Required for |
|----------------|--------------|
| file:line + code snippet | Blocker, Warning |
| Specific description | Info |
| Test Debt Pattern | Severity | |-------------------|----------| | All tests skipped/disabled | Blocker | | Circular/placeholder assertions | Blocker | | Missing assertions | Warning | | Weak assertions (existence only) | Info |
Serious Logic Risks and Requirement Questions do not change the verdict by default.
tools
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.
testing
Master specification for WopalSpace. [MUST LOAD FIRST] — Load this skill when Wopal is uncertain how to proceed, task intent is ambiguous, or performing ontology/space maintenance. Triggers: Ambiguous task intent, "what workflow to use", "what skill to load", skill management (install/remove/search), space maintenance (worktrees, sync, PR contribution, promote), multi-space management. [CRITICAL] MUST LOAD whenever interacting with ontology repo operations (update/sync/contribute/promote/PR), even if the user does not explicitly say "upstream sync".
development
Workspace-level Git worktree management — create, list, remove, and prune isolated development environments. Use this skill whenever the user needs to create a worktree, set up an isolated workspace, work on multiple features in parallel, list existing worktrees, check what worktrees exist, remove or delete a worktree, clean up stale worktrees, or manage git working trees in any way. Triggers include "create worktree", "new worktree", "list worktrees", "show worktrees", "remove worktree", "delete worktree", "clean up worktree", "prune worktree", "isolated environment", "parallel development", "worktree for <project>", or any request involving git worktree operations.
development
Issue/Plan-driven development workflow. Tasks must be backed by a GitHub Issue or Plan. Trigger: issue references like #14, creating issues, creating plans, implementing plans, executing plans, checking plans, verifying plans, Plan lifecycle transitions (approve/complete/verify/archive), decomposing PRDs into Issues. Skip: spec-driven workflows, research/discussion/explanation only, small ad-hoc changes that don't need an Issue or Plan.