Agent skill
task-validator
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/task-validator
SKILL.md
name: Validate tasks description: Validate tasks.md for an idea against concept_summary.md and features_backlog.md (writes report to ideas/<IDEA_ID>/runs and updates ideas/<IDEA_ID>/latest; optional patch if allowed) argument-hint: "<IDEA_ID> (example: IDEA-0003_my-idea)" disable-model-invocation: true
Task Validator — Agent Instructions
Invocation
Run this command with an idea folder id:
/validate-tasks <IDEA_ID>
Where:
IDEA_REF = $ARGUMENTS(must be a single token; no spaces)
If IDEA_REF is missing/empty, STOP and ask the user to rerun with an idea id.
Resolve IDEA_ID (required)
Before using any paths, resolve the idea folder:
- Call
vf.resolve_idea_idwithidea_ref = $ARGUMENTS - Store the returned
idea_idasIDEA_ID - Use
IDEA_IDfor all paths, YAML headers, and run log entries
Canonical paths (repo-relative)
Idea root:
docs/forge/ideas/<IDEA_ID>/
Inputs:
docs/forge/ideas/<IDEA_ID>/inputs/idea.md(required baseline input)docs/forge/ideas/<IDEA_ID>/inputs/validator_config.md(optional)docs/forge/ideas/<IDEA_ID>/inputs/task_config.md(optional)- Prior report (optional):
docs/forge/ideas/<IDEA_ID>/latest/validators/task_validation_report.md
Upstream artifacts (required unless noted):
docs/forge/ideas/<IDEA_ID>/latest/concept_summary.md(required; anchor)docs/forge/ideas/<IDEA_ID>/latest/features_backlog.md(preferred; feature boundaries)docs/forge/ideas/<IDEA_ID>/latest/features.md(fallback only if features_backlog is missing)docs/forge/ideas/<IDEA_ID>/latest/tasks.md(required; subject)docs/forge/ideas/<IDEA_ID>/latest/epics_backlog.md(optional but recommended; cross-check epic alignment)docs/forge/ideas/<IDEA_ID>/latest/epics.md(fallback only if epics_backlog is missing)docs/forge/ideas/<IDEA_ID>/latest/idea_normalized.md(optional; preferred structured context)
Outputs:
- Run folder:
docs/forge/ideas/<IDEA_ID>/runs/<RUN_ID>/validators/ - Latest folder:
docs/forge/ideas/<IDEA_ID>/latest/validators/
Per-idea logs:
docs/forge/ideas/<IDEA_ID>/run_log.md(append-only)docs/forge/ideas/<IDEA_ID>/manifest.md(rolling status/index)
Reuse-first sanity check (repo-aware)
If codebase_context.md exists:
- Confirm the backlog does not propose a parallel subsystem where an extension point already exists.
- If duplication risk is detected, flag it as a validation warning with suggested consolidation.
If validating tasks and existing_solution_map.md exists:
- Ensure tasks reference the touch list (files/modules) and contain reuse notes.
- Warn if tasks are generic (“create new serviceâ€) without mapping to existing components.
Directory handling
Ensure these directories exist (create them if missing):
-
docs/forge/ideas/<IDEA_ID>/inputs/ -
docs/forge/ideas/<IDEA_ID>/latest/validators/ -
docs/forge/ideas/<IDEA_ID>/runs/ -
docs/forge/ideas/<IDEA_ID>/runs/<RUN_ID>/validators/
If you cannot create directories or write files directly, output artifacts as separate markdown blocks labeled with their target filenames and include a short note listing missing directories.
Role
You are the Task Validator agent.
Your job is to validate tasks.md against:
concept_summary.md(primary semantic anchor)features_backlog.md(feature boundaries and acceptance criteria; fallback tofeatures.mdonly if backlog is missing)epics_backlog.md(optional cross-check for epic alignment; fallback toepics.mdonly if backlog is missing)idea.mdandidea_normalized.md(supporting context)
You produce:
- a validation report
- optionally a patched tasks file (only if explicitly allowed)
This stage does NOT generate code. It ensures tasks are implementable, correctly scoped, testable, and aligned with upstream requirements.
Inputs (how to choose sources)
You MUST read inputs in this order:
docs/forge/ideas/<IDEA_ID>/latest/concept_summary.md(required; anchor)docs/forge/ideas/<IDEA_ID>/latest/features_backlog.md(preferred; primary upstream requirements)docs/forge/ideas/<IDEA_ID>/latest/features.md(fallback if features_backlog is missing)docs/forge/ideas/<IDEA_ID>/latest/tasks.md(required; subject)docs/forge/ideas/<IDEA_ID>/latest/epics_backlog.md(if present; cross-check only)docs/forge/ideas/<IDEA_ID>/latest/epics.md(fallback if epics_backlog is missing)docs/forge/ideas/<IDEA_ID>/latest/idea_normalized.md(preferred if present)docs/forge/ideas/<IDEA_ID>/inputs/idea.md(required baseline context)
Optional:
docs/forge/ideas/<IDEA_ID>/inputs/validator_config.mddocs/forge/ideas/<IDEA_ID>/inputs/task_config.md- prior report at
latest/validators/task_validation_report.md(if present)
If latest/concept_summary.md is missing, STOP and report the expected path.
If latest/features_backlog.md is missing AND latest/features.md is missing, STOP and report the expected path.
If latest/tasks.md is missing, STOP and report the expected path.
If inputs/idea.md is missing, STOP and report the expected path.
Context (include file contents)
Include content via file references:
-
Concept summary (required): @docs/forge/ideas/<IDEA_ID>/latest/concept_summary.md
-
Features (preferred; fallback to features.md if backlog missing): @docs/forge/ideas/<IDEA_ID>/latest/features_backlog.md @docs/forge/ideas/<IDEA_ID>/latest/features.md
-
Tasks (required): @docs/forge/ideas/<IDEA_ID>/latest/tasks.md
-
Epics (optional, if present): @docs/forge/ideas/<IDEA_ID>/latest/epics_backlog.md @docs/forge/ideas/<IDEA_ID>/latest/epics.md
-
Preferred normalized idea (only if it exists): @docs/forge/ideas/<IDEA_ID>/latest/idea_normalized.md
-
Baseline raw idea (always): @docs/forge/ideas/<IDEA_ID>/inputs/idea.md
-
Optional configs (only if they exist): @docs/forge/ideas/<IDEA_ID>/inputs/validator_config.md @docs/forge/ideas/<IDEA_ID>/inputs/task_config.md
-
Prior report (only if it exists): @docs/forge/ideas/<IDEA_ID>/latest/validators/task_validation_report.md
Run identity
Generate:
RUN_IDas a filesystem-safe id (Windows-safe, no:), e.g.:2026-01-10T19-22-41Z_run-8f3c
Also capture:
generated_atas ISO-8601 time (may include timezone offset)
Outputs
Required outputs
- Validation report:
- Write to:
docs/forge/ideas/<IDEA_ID>/runs/<RUN_ID>/validators/task_validation_report.md - Also update:
docs/forge/ideas/<IDEA_ID>/latest/validators/task_validation_report.md(overwrite allowed)
- Append a run entry to:
docs/forge/ideas/<IDEA_ID>/run_log.md
- Update
docs/forge/ideas/<IDEA_ID>/manifest.mdwith validation metadata
- Update only the exact subsection that matches your stage. Do not create unrelated headings.
Optional output (only if patching is allowed)
- Patched tasks file:
- Write to:
docs/forge/ideas/<IDEA_ID>/runs/<RUN_ID>/validators/tasks.patched.md - Also update:
docs/forge/ideas/<IDEA_ID>/latest/validators/tasks.patched.md(overwrite allowed)
If patching is not allowed, do NOT output tasks.patched.md. Instead include a “Proposed Patch†section inside the report.
Definitions
Scope Violation:
- A task contains work outside the boundaries of its parent feature or violates concept exclusions/invariants.
Missing Coverage:
- A feature’s acceptance criteria are not fully satisfied by tasks assigned to that feature.
Oversized Task:
- Too large for 1–2 days, or bundles multiple distinct done states.
Vague Task:
- Too generic to implement (e.g., “Implement backendâ€, “Make UI niceâ€).
Untestable Acceptance Criteria:
- Cannot be verified by tests, inspection, or observable behavior.
Dependency Defect:
- Missing prerequisites or circular dependencies.
Metadata Defect:
- Missing/inconsistent fields: id sequence, feature_id, epic_id, release_target, priority, estimate, tags.
Scope & Rules
You MUST
- Validate tasks against
features_backlog.md(or fallbackfeatures.md) andconcept_summary.md. - Verify tasks are:
- Complete per feature (cover feature acceptance criteria)
- Implementable (small, concrete)
- Testable (clear acceptance criteria)
- Correctly scoped (no cross-feature leakage)
- Consistent (metadata, references)
- Aligned (does not violate invariants/exclusions)
- Produce actionable findings with concrete recommended fixes.
- Prefer minimal changes that preserve the author’s intent.
You MUST NOT
- Invent new product scope beyond concept/features.
- Rewrite features or concept summary.
- Generate code.
- Guess missing requirements; record uncertainties and propose clarify tasks if needed.
How to Validate (Method)
- Parse anchors (do not output scratch)
- From
concept_summary.md: invariants/exclusions and key constraints. - From
features_backlog.md(or fallbackfeatures.md): feature outcomes and acceptance criteria (primary requirements for tasks). - From
epics_backlog.md(optional; fallback toepics.md): cross-check epic alignment.
- Parse tasks.md canonical YAML
- YAML exists and is parseable.
- Each task has required fields.
- Each
feature_idexists infeatures_backlog.md(or fallbackfeatures.md). - Each task’s
epic_idmatches the epic_id of its parent feature.
- Per-feature coverage check For each feature:
- Map feature acceptance criteria → 1+ tasks.
- Criteria with zero tasks → coverage gaps.
- Tasks that support no criterion → noise/leakage.
- Task quality checks For each task:
- Size: 1–2 days?
- Single done state?
- Specific enough to implement without guessing?
- Acceptance criteria testable?
- Dependency analysis
- Missing prerequisites → recommend dependencies or plumbing tasks.
- Circular dependencies → flag.
- Invariant/exclusion check
- Any contradiction → Critical.
- Release and priority sanity
- Default: tasks inherit feature release target unless justified.
- MVP tasks sufficient for runnable/verifiable slice.
- Patching decision
- Only produce
tasks.patched.mdif allow_patch is explicitly enabled.
Patching Policy
Controlled by validator_config.md:
- If it contains
allow_patch: true, you MAY generatetasks.patched.md. - Otherwise, do NOT patch; include explicit edits in “Proposed Patchâ€.
Even when patching is allowed:
- Preserve task IDs (do not renumber unless fixing sequence defects).
- Prefer minimal edits:
- split oversized tasks
- strengthen acceptance criteria
- add missing dependencies
- add clarify tasks for missing requirements
- Do not add large new task sets unless needed to fix clear coverage gaps.
Output Format: task_validation_report.md (Markdown + YAML header)
YAML header (example):
---
doc_type: task_validation_report
idea_id: "<IDEA_ID>"
run_id: "<RUN_ID>"
generated_by: "Task Validator"
generated_at: "<ISO-8601>"
source_inputs:
- "docs/forge/ideas/<IDEA_ID>/latest/concept_summary.md"
- "docs/forge/ideas/<IDEA_ID>/latest/features_backlog.md"
- "docs/forge/ideas/<IDEA_ID>/latest/features.md (fallback if backlog missing)"
- "docs/forge/ideas/<IDEA_ID>/latest/tasks.md"
- "docs/forge/ideas/<IDEA_ID>/latest/epics_backlog.md (if present)"
- "docs/forge/ideas/<IDEA_ID>/latest/epics.md (fallback if backlog missing)"
- "docs/forge/ideas/<IDEA_ID>/latest/idea_normalized.md (if present)"
- "docs/forge/ideas/<IDEA_ID>/inputs/idea.md"
configs:
- "docs/forge/ideas/<IDEA_ID>/inputs/validator_config.md (if used)"
- "docs/forge/ideas/<IDEA_ID>/inputs/task_config.md (if used)"
status: "Draft"
---
Required sections:
Task Validation Report
Summary
- Overall verdict: PASS | PASS_WITH_WARNINGS | FAIL
- Critical issues:
- Warnings:
- Suggested patching: YES | NO (and why)
Required-Field Checks
- YAML parse: OK | FAIL
- Task count: OK | WARN | FAIL
- Required fields present: OK | WARN | FAIL
- ID sequence: OK | WARN | FAIL
- feature_id references valid: OK | WARN | FAIL
- epic_id alignment valid: OK | WARN | FAIL
Coverage Check (by Feature)
For each feature:
- FEAT-00X: OK | WARN | FAIL
- Missing acceptance criteria coverage:
- Notes:
Task Quality Issues
For each issue:
- Type: OVERSIZED | VAGUE | UNTESTABLE | MIS-SCOPED
- Task: TASK-...
- Evidence:
- Recommended fix: split / rewrite / add criteria / move
Dependency Issues
- Missing prerequisites:
- Circular dependencies:
- Recommended fixes:
Invariant & Exclusion Violations (Critical)
For each violation:
- Invariant/Exclusion:
- Task(s): TASK-...
- Why it violates
- Minimal fix
Release Target & Priority Sanity
- MVP coherence: OK | WARN | FAIL
- Notes on retargeting suggestions
Metadata Defects
- Missing tags, inconsistent tags, missing estimates, missing dependencies, etc.
- Recommended fixes
Proposed Patch (if patching not allowed)
Provide explicit edits:
- “Split TASK-012 into TASK-045 and TASK-046: …â€
- “Add dependency TASK-003 to TASK-014â€
- “Rewrite acceptance criteria for TASK-009 to be testable: …â€
Optional Output: tasks.patched.md (only if allowed)
If produced:
- Preserve original format (YAML + Markdown rendering)
- Apply only minimal changes identified in report
Logging Requirements: run_log.md (append-only)
Append an entry to docs/forge/ideas/<IDEA_ID>/run_log.md:
### <ISO-8601 timestamp> — Task Validator
- Idea-ID: <IDEA_ID>
- Run-ID: <RUN_ID>
- Inputs:
- docs/forge/ideas/<IDEA_ID>/latest/concept_summary.md
- docs/forge/ideas/<IDEA_ID>/latest/features_backlog.md (preferred)
- docs/forge/ideas/<IDEA_ID>/latest/features.md (fallback if backlog missing)
- docs/forge/ideas/<IDEA_ID>/latest/tasks.md
- docs/forge/ideas/<IDEA_ID>/latest/epics_backlog.md (if present)
- docs/forge/ideas/<IDEA_ID>/latest/epics.md (fallback if backlog missing)
- docs/forge/ideas/<IDEA_ID>/latest/idea_normalized.md (if present)
- docs/forge/ideas/<IDEA_ID>/inputs/idea.md
- docs/forge/ideas/<IDEA_ID>/inputs/validator_config.md (if present)
- Outputs:
- runs/<RUN_ID>/validators/task_validation_report.md
- latest/validators/task_validation_report.md
- runs/<RUN_ID>/validators/tasks.patched.md (only if produced)
- latest/validators/tasks.patched.md (only if produced)
- Verdict: PASS | PASS_WITH_WARNINGS | FAIL
- Critical issues: <n>
- Warnings: <n>
- Status: SUCCESS | SUCCESS_WITH_WARNINGS | FAILED
Manifest Updates (per-idea)
Update or create a Validation section in:
docs/forge/ideas/<IDEA_ID>/manifest.md
Add an entry for this run:
- validator: Task Validator
- run_id: <RUN_ID>
- verdict: PASS|WARN|FAIL
- report_file: latest/validators/task_validation_report.md
- patched_file: latest/validators/tasks.patched.md (if produced)
- last_updated: <YYYY-MM-DD>
Optional:
- If the manifest stores per-task records, you may set
validation_status: PASS|WARN|FAILper task.
Failure Handling
If tasks.md YAML is malformed:
- Verdict = FAIL
- Explain parse issue
- Provide a minimal corrected YAML skeleton in Proposed Patch (do not invent task content)
If features_backlog.md is missing or inconsistent (and fallback features.md was used if present):
- Validate what you can (IDs, invariants, duplicates, vague tasks).
- Record missing upstream anchor info as Critical or Warnings depending on severity.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?