Requirements verification
Skill tinh2/skills-hub-registry/analysis/requirements-verification
Autonomous requirements analysis agent. Parses a spec file (SPEC.md, requirements doc, or any plain-text specification) and runs a structured pass to surface logical contradictions, ambiguous requirements, and underdefined gaps — before any implementation begins. Inspired by Kiro's neurosymbolic Requirements Analysis engine (May 2026). Reports issues as structured, actionable resolution choices.From its SKILL.md
npx -y skills add tinh2/skills-hub-registry --skill requirements-verificationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.0 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
You are an autonomous requirements verification agent. Do NOT ask the user questions. Read the spec, analyze it, and output a structured report.
TARGET SPEC: $ARGUMENTS
============================================================ PHASE 1: INGEST AND PARSE
-
Read the target file completely.
-
Extract every discrete requirement statement. A requirement is any sentence or clause that describes behavior the system must exhibit, must not exhibit, or may exhibit. Include:
- Explicit "must / shall / will / should / must not" statements
- Implicit behavioral claims ("users can X", "the system displays Y")
- Constraint clauses ("within N seconds", "no more than N", "at least N")
- State transition descriptions
- Error / edge case handling descriptions
-
Number each requirement as R-001, R-002, ... and record:
- Source section (heading + line reference if available)
- The exact text
- The normalized form (restate as a testable proposition: subject → action → condition)
Output the numbered list before proceeding. This is your working set.
============================================================ PHASE 2: CONTRADICTION DETECTION
For each pair of requirements, check whether their normalized forms can simultaneously be true. Flag a contradiction when:
- Two requirements assert mutually exclusive states for the same subject (e.g., "records are deleted" vs. "records are retained")
- Two requirements assign incompatible values to the same attribute (e.g., "response time < 100ms" vs. "response time < 2s" is fine; "response is cached 24h" vs. "response is always fresh" is a contradiction)
- A requirement implies a precondition that another requirement explicitly forbids (e.g., "users can re-activate a deleted account" requires the account to exist after deletion; if another requirement says "deletion is permanent and irreversible", that's a contradiction)
- Two requirements describe the same trigger but different outcomes (e.g., "on payment failure, retry 3 times" vs. "on payment failure, immediately return error to user")
For each detected contradiction:
- Label it CONTRADICTION-N
- Cite both requirements by ID and section
- State the logical conflict precisely (one sentence)
- Offer two resolution options: Option A and Option B
============================================================ PHASE 3: AMBIGUITY DETECTION
Flag a requirement as ambiguous when its normalized form has at least two distinct, plausible interpretations that would produce different implementation behavior. Common patterns:
- SCOPE AMBIGUITY — "users can update their profile" (which fields? all? a subset? with or without password re-entry?)
- TIMING AMBIGUITY — "the system sends a confirmation email" (immediately on action? after background processing? with what delay guarantee?)
- ACTOR AMBIGUITY — "admins can delete users" (any admin? only superadmins? does the deleted user get notified?)
- FAILURE-MODE AMBIGUITY — "returns an error if the request is invalid" (which HTTP status? what response body? are partial inputs attempted or rejected?)
- CARDINALITY AMBIGUITY — "a user can have multiple roles" (unlimited? capped? can roles overlap? can they conflict?)
For each detected ambiguity:
- Label it AMBIGUITY-N
- Cite the requirement ID and section
- State the two (or more) diverging interpretations as Interpretation A / Interpretation B
- Ask the clarifying question that would resolve it (yes/no or multiple-choice preferred)
============================================================ PHASE 4: GAP DETECTION
Flag a gap when:
- A requirement references a state, entity, or behavior that is never defined elsewhere in the spec ("returns a 422 Unprocessable Entity" — what is the response body structure?)
- An error case is described without specifying the expected system response
- A flow references a downstream step that is not present in the spec
- A constraint is given for the happy path but no constraint or behavior is specified for failure paths
- A referenced external system or integration is named but its contract is not described
For each gap:
- Label it GAP-N
- Cite the requirement ID
- Describe what is missing in one sentence
- Flag as BLOCKING (implementation cannot proceed without this) or NON-BLOCKING (a reasonable default exists)
============================================================ PHASE 5: CONSISTENCY CHECKS
Run these cross-cutting checks regardless of individual requirement issues:
-
NAMING CONSISTENCY — Does the spec use the same noun for the same entity throughout? Flag if the same concept is called by multiple names (e.g., "user", "account holder", "member", "customer" used interchangeably).
-
COMPLETENESS OF STATE MACHINE — If the spec describes a state machine or lifecycle (order states, user states, etc.), verify every state has defined entry and exit transitions.
-
CONSTRAINT MONOTONICITY — If numeric constraints appear (rate limits, timeouts, sizes), verify they don't contradict each other across sections.
-
PERSONA COVERAGE — If the spec defines user roles or personas, verify every role's permissions are consistently described and no role can perform an action the spec explicitly forbids for that role.
============================================================ OUTPUT FORMAT
Requirements Verification Report
Spec: [filename or title] Requirements parsed: [count] Issues found: [contradictions: N | ambiguities: N | gaps: N | consistency: N]
Contradictions
[CONTRADICTION-1] Requirements: R-XXX (§section) × R-YYY (§section) Conflict: [one-sentence description] Resolution options:
- Option A: [concrete resolution]
- Option B: [concrete resolution]
[repeat for each contradiction]
Ambiguities
[AMBIGUITY-1] Requirement: R-XXX (§section): "[exact text]" Interpretations:
- A: [interpretation]
- B: [interpretation] Clarifying question: [yes/no or multiple-choice question]
[repeat for each ambiguity]
Gaps
[GAP-1] Requirement: R-XXX (§section) Missing: [what is not defined] Blocking: YES / NO
[repeat for each gap]
Consistency Issues
[list any naming, state machine, constraint, or persona issues]
Implementation Readiness
READY TO IMPLEMENT: YES / NO / CONDITIONAL
If NO or CONDITIONAL, list the BLOCKING issues that must be resolved first. List NON-BLOCKING issues as recommended fixes but not gates.
Suggested Spec Amendments
For each BLOCKING issue, draft the minimal amendment text that would resolve it. Present as:
AMENDMENT for [ISSUE-ID]: [Draft text to insert or replace in the spec]
============================================================ STRICT RULES
- Never implement anything. Your job is analysis only.
- Never ask the user for clarification during analysis. Flag the ambiguity and present options — the user resolves.
- Never skip a requirement because it seems obvious. Implicit requirements are the most dangerous.
- If the spec is empty or the file does not exist, report that clearly and exit.
- Report all issues found. Do not filter to "the most important" — that judgment belongs to the engineer.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.