From silver-bullet
Validates SPEC.md files against SB quality criteria: required sections, non-empty overview, user story format, testable acceptance criteria, and assumption completeness.
How this skill is triggered — by the user, by Claude, or both
Slash command
/silver-bullet:review-spec <spec-path> [--source-inputs <jira-ticket> <figma-url>]<spec-path> [--source-inputs <jira-ticket> <figma-url>]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
SPEC.md reviewer skill. Implements the artifact-reviewer framework interface to validate a SPEC.md file against the SB spec quality criteria. Returns structured PASS/ISSUES_FOUND findings.
SPEC.md reviewer skill. Implements the artifact-reviewer framework interface to validate a SPEC.md file against the SB spec quality criteria. Returns structured PASS/ISSUES_FOUND findings.
This reviewer MUST load the following before executing any review:
@skills/artifact-reviewer/rules/reviewer-interface.md — interface contract (input/output shape, prohibitions)@skills/artifact-reviewer/rules/review-loop.md — 2-pass loop mechanism and audit trail format/artifact-reviewer <spec-path> [--source-inputs <jira-ticket> <figma-url>]
Or invoke directly:
/review-spec <spec-path> [--source-inputs <jira-ticket> <figma-url>]
| Field | Type | Required | Description |
|---|---|---|---|
| artifact_path | string | YES | Path to SPEC.md file to review |
| source_inputs[0] | string | NO | JIRA ticket URL or ID for cross-reference |
| source_inputs[1] | string | NO | Figma URL for UX Flows cross-reference |
| review_context | string | NO | Additional context string |
Read the artifact at artifact_path completely before evaluating any criterion. Validate every criterion explicitly — do NOT skip sections.
Check that all of the following section headings exist (case-insensitive ## level):
## Overview## User Stories## UX Flows## Acceptance Criteria## Assumptions## Open Questions## Out of Scope## ImplementationsIf any section is missing: Emit ISSUE finding SPEC-F01 (or increment suffix for each missing section) with severity ISSUE, location = document structure, suggestion = "Add the missing section ## [Section Name] following the SPEC.md.template structure."
The ## Overview section MUST contain content that is:
[2-3 sentence problem statement. Who has the problem. What the problem is.]If violated: Emit ISSUE finding SPEC-F10 with suggestion = "Replace the placeholder with a real 2-3 sentence problem statement naming the affected user and describing the problem clearly."
The ## User Stories section MUST contain at least one bullet that matches the pattern:
As a [persona], I want to [action] so that [outcome].
All three parts (As a / I want to / so that) must be present. Partial stories fail this check.
If violated: Emit ISSUE finding SPEC-F20 with suggestion = "Add at least one user story in the format: As a [persona], I want to [action] so that [outcome]."
The ## Acceptance Criteria section MUST contain at least one criterion that is measurable or observable. A criterion is NOT testable if it uses only vague language like "works well", "is fast", "looks good", "is easy to use" without a measurable qualifier.
Signs of testability: specific counts, percentages, named states, error messages, explicit pass/fail conditions, timing thresholds, named user roles.
If violated: Emit ISSUE finding SPEC-F30 with suggestion = "Rewrite acceptance criteria to include measurable/observable language, e.g., 'User can submit the form and receives a confirmation message within 2 seconds.'"
Every ASSUMPTION entry in ## Assumptions MUST include a Status: field with a value of Resolved, Accepted, or Follow-up-required.
Pattern to check (each assumption line or block): Status: Resolved or Status: Accepted or Status: Follow-up-required
If any assumption lacks a Status field or has an unrecognized value: Emit ISSUE finding SPEC-F40 with location = the offending assumption entry, suggestion = "Add | Status: Resolved (confirmed correct), | Status: Accepted (user acknowledged), or | Status: Follow-up-required (needs resolution) to each ASSUMPTION entry."
The YAML frontmatter MUST contain all of these fields with non-empty values:
spec-versionstatuscreatedlast-updatedIf any field is missing or empty (value is "", null, YYYY-MM-DD, or absent): Emit ISSUE finding SPEC-F50 (one finding per missing field) with suggestion = "Set the [field] frontmatter field to a real value."
Only evaluate this criterion when source_inputs is non-empty.
## User Stories align with the acceptance criteria described in the JIRA ticket. If the JIRA ticket defines acceptance criteria that have no corresponding user story in the SPEC, emit ISSUE finding SPEC-F60.## UX Flows references the design (screen names, flow descriptions should correspond to Figma frames or pages described in the URL). If there is no reference to the Figma design in UX Flows, emit ISSUE finding SPEC-F61.Suggestion for SPEC-F60: "Add User Stories derived from JIRA acceptance criteria that are not yet represented in this SPEC." Suggestion for SPEC-F61: "Reference the Figma design in UX Flows, e.g., 'See [Figma Frame Name] in [figma-url]' or describe flows corresponding to Figma screens."
Return structured findings using the schema from reviewer-interface.md. Finding IDs MUST use the prefix SPEC-F.
status: "PASS" | "ISSUES_FOUND"
findings:
- id: "SPEC-F01" # unique within this review
severity: "ISSUE" # or "INFO"
description: "..." # what is wrong
location: "..." # section header or line reference
suggestion: "..." # specific, actionable fix
Status rules:
PASS — zero ISSUE-severity findings; INFO findings allowedISSUES_FOUND — one or more ISSUE-severity findingsnpx claudepluginhub alo-exp/silver-bullet --plugin silver-bulletGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.