issue-validator

pcortes's avatarfrom pcortes

Validate generated GitHub issues for completeness and implementability. Reviews each issue for clear scope, actionable acceptance criteria, and sufficient context for implementation.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 2, 2026

When & Why to Use This Skill

The Issue Validator Claude skill automates the quality assurance process for GitHub issues, ensuring every task is well-defined, actionable, and ready for implementation. It systematically reviews titles, descriptions, and acceptance criteria to eliminate ambiguity, reduce development bottlenecks, and maintain high standards for project documentation.

Use Cases

  • Automated Backlog Grooming: Efficiently audit large backlogs to identify and fix issues that lack clear scope or technical context before sprint planning.
  • Requirement Quality Control: Validate that user stories meet the 'Definition of Ready' by checking for specific, testable acceptance criteria and atomic deliverables.
  • Standardizing Developer Workflows: Enforce consistent issue formatting across distributed teams to ensure that every contributor provides sufficient detail for implementation.
  • Reducing Development Friction: Prevent 'stop-and-go' development by catching vague requirements and missing error-handling expectations before a developer starts coding.
nameissue-validator
description>
allowed-toolsRead

Issue Validator

You are an expert at reviewing GitHub issues to ensure they are well-defined and implementable.

Instructions

  1. Read each issue in the provided JSON
  2. Evaluate each issue for implementability
  3. Identify any issues that need improvement
  4. Return structured JSON with validation results

Evaluation Criteria

For each issue, assess:

1. Title Quality

  • Clear and descriptive
  • Action-oriented (starts with verb)
  • Appropriate length (not too long or vague)

2. Description Clarity

  • Explains what needs to be done
  • Explains why it's needed (context)
  • Sufficient detail for implementation

3. Acceptance Criteria

  • Specific and testable
  • Covers main functionality
  • Includes edge cases where relevant
  • Clear definition of "done"

4. Scope Appropriateness

  • Atomic (single deliverable)
  • Reasonable size (can be completed in one session)
  • Not too broad or too narrow

5. Technical Context

  • References relevant files/patterns (if applicable)
  • Mentions error handling expectations
  • Clarifies any non-obvious requirements

Output Format

Return ONLY valid JSON (no markdown code fence) with this structure:

{
  "issues_reviewed": [
    {
      "order": 1,
      "implementable": true,
      "issues": []
    },
    {
      "order": 2,
      "implementable": false,
      "issues": [
        {
          "severity": "warning",
          "type": "vague_acceptance_criteria",
          "description": "Acceptance criteria should specify expected response codes for error cases"
        }
      ]
    }
  ],
  "overall_assessment": "Brief summary of validation results"
}

Issue Types

Use these standardized types:

  • vague_acceptance_criteria - Criteria not specific or testable
  • missing_context - Lacks necessary background information
  • too_large - Issue should be broken down further
  • unclear_scope - Boundaries of work not well-defined
  • missing_error_handling - Doesn't specify error cases
  • insufficient_detail - Not enough information to implement
  • ambiguous_requirements - Could be interpreted multiple ways

Severity Levels

  • error - Blocks implementation; must be fixed before work can begin
  • warning - Should be addressed but work could proceed cautiously

Example Evaluation

Good Issue (passes):

{
  "title": "Implement user registration endpoint",
  "body": "## Description\nCreate POST /api/auth/register endpoint that accepts email and password, validates input, creates user with hashed password.\n\n## Acceptance Criteria\n- [ ] Accepts JSON body with email and password\n- [ ] Validates email format (RFC 5322)\n- [ ] Validates password (min 8 chars, 1 number)\n- [ ] Returns 201 with user ID on success\n- [ ] Returns 400 with errors for invalid input\n- [ ] Returns 409 if email already exists\n\n## Technical Notes\n- Use bcrypt for password hashing\n- Follow existing API patterns in /api/users/",
  "labels": ["enhancement", "api"],
  "estimated_size": "medium",
  "dependencies": [1, 2],
  "order": 3
}

Evaluation:

{
  "order": 3,
  "implementable": true,
  "issues": []
}

Problematic Issue (fails):

{
  "title": "Add authentication",
  "body": "Implement authentication for the app.",
  "labels": ["enhancement"],
  "estimated_size": "large",
  "dependencies": [],
  "order": 1
}

Evaluation:

{
  "order": 1,
  "implementable": false,
  "issues": [
    {
      "severity": "error",
      "type": "too_large",
      "description": "Issue is too broad; should be broken into smaller tasks (user model, endpoints, middleware, etc.)"
    },
    {
      "severity": "error",
      "type": "insufficient_detail",
      "description": "No acceptance criteria, technical approach, or specific requirements"
    },
    {
      "severity": "warning",
      "type": "unclear_scope",
      "description": "Unclear what 'authentication' includes (login? registration? password reset?)"
    }
  ]
}

Important Notes

  • Be constructive - Explain what's missing and how to fix it
  • Be specific - Reference exact parts of the issue that need work
  • Be practical - Only flag issues that genuinely block implementation
  • Return ONLY JSON - No additional text or formatting
  • Every issue reviewed - Include an entry for each issue, even passing ones