with one click
ln-402-task-reviewer
// Reviews task implementation for quality, code standards, and test coverage. Use when task is in To Review. Sets task Done or To Rework.
// Reviews task implementation for quality, code standards, and test coverage. Use when task is in To Review. Sets task Done or To Rework.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | ln-402-task-reviewer |
| description | Reviews task implementation for quality, code standards, and test coverage. Use when task is in To Review. Sets task Done or To Rework. |
| allowed-tools | Read, Grep, Glob, Bash, WebFetch, mcp__context7, mcp__hex-graph__audit_workspace, mcp__hex-graph__find_references, mcp__hex-graph__analyze_changes, mcp__hex-line__read_file, mcp__hex-line__grep_search, mcp__hex-line__outline, mcp__hex-line__changes |
| license | MIT |
Paths: File paths (
references/,../ln-*) are relative to this skill directory.
Type: L3 Worker Category: 4XX Execution
MANDATORY after every task execution. Reviews a single task in To Review and decides Done vs To Rework with immediate fixes or clear rework notes.
This skill is NOT optional. Every executed task MUST be reviewed immediately. No exceptions, no batching, no skipping.
getTask, getStory).| Input | Required | Source | Description |
|---|---|---|---|
taskId | Yes | args, parent Story, kanban, user | Task to review |
Resolution: Task Resolution Chain. Status filter: To Review
MANDATORY READ: Load references/environment_state_contract.md, references/storage_mode_detection.md, and references/input_resolution_pattern.md
Extract: task_provider = Task Management -> Provider (linear | github | file). Operations stay provider-agnostic; load the selected provider transport reference only when performing tracker I/O.
Tracker operations used by this skill: getTask, getStory, updateStatus (Done | To Rework), addComment, createTask (for [BUG] side-effect tasks).
Detect operating mode at startup:
Plan Mode Active:
Normal Mode:
Conditional read: load references/plan_mode_pattern.md Workflow A only when Plan Mode is active.
Tool policy: follow host AGENTS.md MCP preferences; load references/mcp_tool_preferences.md and references/mcp_integration_patterns.md only when host policy is absent or MCP behavior is unclear.
CRITICAL: In Plan Mode, plan file = REVIEW PLAN (what will be checked). NEVER write review findings or verdicts to plan file.
Review Plan format:
REVIEW PLAN for Task {ID}: {Title}
| Field | Value |
|-------|-------|
| Task | {ID}: {Title} |
| Status | {To Review} |
| Type | {impl/test/refactor} |
| Story | {Parent ID}: {Parent Title} |
Files to review:
- {file1} (deliverable)
- {file2} (affected component)
| # | Check | Will Verify |
|---|-------|-------------|
| 1 | Approach | Technical Approach alignment |
| 2 | Clean Code | No dead code, no backward compat shims |
| 3 | Config | No hardcoded creds/URLs |
| 4 | Errors | try/catch on external calls |
| 5 | Logging | ERROR/INFO/DEBUG levels |
| 6 | Comments | WHY not WHAT, docstrings |
| 7 | Naming | Project conventions |
| 8 | Docs | API/env/README updates |
| 9 | Tests | Updated/risk-based limits |
| 10 | AC | 4 criteria validation |
| 11 | Side-effects | Pre-existing bugs in touched files |
| 12 | Destructive ops | Safety guards from destructive_operation_safety.md (loaded in step 4) |
| 13 | Algorithm correctness | Loop invariants, collection keys, unbounded ops, shared state leaks |
| 14 | Event channels | Channel name consistency in diff |
| 15 | CI Checks | lint/typecheck pass per ci_tool_detection.md |
Expected output: Verdict (`Done | To Rework`) + Issues + Fix actions
When operating in any mode, skill MUST create detailed todo checklist tracking ALL steps.
Rules:
in_progress before starting step, completed after finishingTodo Template (~11 items):
Step 1: Resolve taskId
- Resolve via args / Story context / kanban / AskUserQuestion (To Review filter)
Step 2: Load Task
- Load task by ID, detect type
Step 3: Read Context
- Load full task + parent Story + affected components
Step 3b: Goal Articulation Gate
- State what specific quality question this review must answer (<=25 tokens each)
Step 4: Review Checks
- Verify approach alignment with Story Technical Approach
- Check clean code: no dead code, no backward compat shims
- Cross-file DRY: Grep src/ for new function/class names (count mode). 3+ similar โ CONCERN
- Check config hygiene, error handling, logging
- Check comments, naming, docs updates
- Verify tests updated/run (risk-based limits for test tasks)
Step 5: AC Validation
- Validate implementation against 4 AC criteria
Step 6: Side-Effect Bug Detection
- Scan for bugs outside task scope, create [BUG] tasks
Step 7: Decision
- Apply minor fixes or set To Rework with guidance
Step 8: Mechanical Verification
- Run lint/typecheck per ci_tool_detection.md (only if verdict=Done)
Step 9: Update & Commit
- Set task status, update kanban, post review comment
- If Done: leave branch changes uncommitted for downstream branch ownership rules
Use hex-graph first when semantic diff, clone groups, references, or review blast radius matter. Use hex-line first for local code/config/script/test reads when available. If MCP is unavailable, unsupported, or not indexed, continue with built-in Read/Grep/Glob/Bash and record the fallback in the review instead of blocking.
Resolve taskId: Run Task Resolution Chain per guide (status filter: [To Review]).
Load task: Load full task and parent Story independently. Detect type (label "tests" -> test task, else implementation/refactor).
Read context: Full task + parent Story; load affected components/docs; review diffs if available.
Hex MCP acceleration: Prefer analyze_changes(path=project_root, base_ref="HEAD~1") for semantic risk snapshot when graph is indexed; use changes(path="src/", compare_against="HEAD~1") for AST-level diff review of structural changes.
3b) Goal gate: Before reviewing, state: (1) REAL GOAL: what quality question must this review answer? (2) DONE: what evidence proves quality is sufficient? (3) NOT THE GOAL: what would a surface-level rubber-stamp look like? (4) INVARIANTS: what non-obvious constraint exists? Load references/goal_articulation_gate.md only when this gate is ambiguous or disputed.
Review checks:
Spec-first gate: Quick AC pre-check: scan task AC against implementation. If any AC is clearly unmet (BLOCKER-level) โ immediate To Rework, skip remaining quality checks. Full AC validation still runs in Step 5. MANDATORY READ: Load
references/clean_code_checklist.md,references/destructive_operation_safety.md
GOAL-MISFRAME: executor goal targets secondary subject, may miss hidden constraints..hex-skills/runtime-artifacts/runs/ for this task), load PHASE_3 blueprint and PHASE_6 blueprint_status from executor checkpoints. Flag as CONCERN if: completion_pct < 100 without justifications for skipped items, or added files exceed 50% of planned without justification. If runtime data unavailable, check metadata.blueprint_status from executor summary. Not a BLOCKER.src/ for similar names/patterns (count mode). If 3+ files contain similar logic โ add CONCERN: MNT-DRY-CROSS: {pattern} appears in {count} files โ consider extracting to shared module. This catches cross-story duplication that per-task review misses. audit_workspace(path=scan_path, verbosity="minimal", limit=5, clone_member_limit=3) and inspect returned clones. Raise limits only when the bounded preview is insufficient. Filter groups where any member is in task-modified files. Each match = CONCERN: MNT-DRY-CROSS. Fall back to Grep name search above if hex-graph unavailable.ARCH-AI-SEB. Exception: orchestrator/coordinator functions (imports 3+ services AND delegates sequentially) are EXPECTED to have multiple side-effect categories โ do NOT flag. ARCH-AI-AH break/continue/return inside loops handle ALL matching items, not just the first? Do dict/set comprehensions handle duplicate keys correctly (last-wins may lose data)? Any list(query.all()) or unbounded loop on user-controlled data without LIMIT? Any mutable shared state (connection pool GUCs, session globals) that leaks across requests? (BLOCKER if data loss/corruption, CONCERN otherwise) src/ for matching listener/publisher counterpart. Mismatch โ CONCERN: ARCH-EVENT-MISMATCH: publisher '{pub_name}' has no matching subscriber. Orphan โ CONCERN: ARCH-EVENT-ORPHAN: subscriber '{sub_name}' has no matching publisher. references/simplicity_criterion.md only when reporting one of those advisory CONCERNs.MNT-EFF-SCOPE: {pattern} in {file}. Load references/code_efficiency_criterion.md only when the project context is unclear..tsx/.vue/.svelte/.html/.css, load references/frontend_design_guide.md and check accessibility, composition, typography, copy, motion, and design-system adherence.AC Validation (MANDATORY for implementation tasks):
MANDATORY READ: Load references/ac_validation_checklist.md. Verify implementation against 4 criteria:
Side-Effect Bug Detection (MANDATORY): While reviewing affected code, actively scan for bugs/issues NOT related to current task:
For each side-effect bug found:
createTask operation. Pass parentId = Story.id, labels ["bug", "discovered-in-review"], status Backlog, and severity-derived priority.[BUG] {Short description}bug, discovered-in-reviewDecision (for current task only):
Mechanical Verification (if Done):
MANDATORY READ: Load references/ci_tool_detection.md
IF verdict == Done:
references/output_normalization.mdUpdate: Set task status via the configured tracker provider (updateStatus); update kanban: if Done โ remove task from kanban (Done section tracks Stories only, not individual Tasks); if To Rework โ move task to To Rework section; add review comment with findings/actions. If side-effect bugs created, mention them in comment.
Context: Quantitative review results make downstream decisions auditable and track review consistency.
Formula: Quality Score = 100 - (20 ร BLOCKER_count) - (10 ร CONCERN_count) - (3 ร NIT_count)
Classify each finding from Steps 3-5:
| Category | Weight | Examples |
|---|---|---|
| BLOCKER | -20 | AC not met, security issue, missing error handling, wrong approach |
| CONCERN | -10 | Suboptimal pattern, missing docs, test gaps |
| NIT | -3 | Naming, style, minor cleanup |
Verdict mapping:
| Score | Verdict | Action |
|---|---|---|
| 90-100 | Done | Accept, apply nit fixes inline |
| 70-89 | Done (with notes) | Accept, document concerns for future |
| <70 | To Rework | Send back with fix guidance per finding |
Note: Side-effect bugs (Step 5) do NOT affect current task's quality score โ they become separate [BUG] tasks.
MANDATORY READ: Load references/coordinator_summary_contract.md, references/worker_runtime_contract.md, references/task_worker_runtime_contract.md
Shared contract:
summary_kind=task-statusrunId and summaryArtifactPathrunId and exact summaryArtifactPath before the worker writes its validated review outcomeMonitor (2.1.98+): For lint/typecheck commands expected >30s, use Monitor. Fallback: Bash(run_in_background=true).
references/environment_state_contract.mdreferences/storage_mode_detection.mdreferences/problem_solving.mdreferences/ac_validation_rules.mdreferences/ac_validation_checklist.md (4 criteria: Completeness, Specificity, Dependencies, DB Creation)references/clean_code_checklist.mdreferences/ci_tool_detection.mdreferences/output_normalization.mddocs/tasks/kanban_board.mdVersion: 5.2.0 Last Updated: 2026-03-24