Best for
- Before sprint planning: "Is MIN-704 ready for development?"
- During quarterly planning: Score all issues to identify which need more spec work
- In status reports: Include readiness scores alongside implementation progress
eltmon/overdeck/sync-sources/skills/spec-readiness/SKILL.md
Evaluate an issue or epic's requirements readiness before development begins. Produces a scored report (0-100) across 5 dimensions with detailed findings, actionable blockers, and a JSON sidecar for dashboards. Works with any issue tracker (Linear, GitHub, GitLab, Rally, Jira). Use a wrapper skill to customize branding and tracker-specific field mappings.
Decision brief
Evaluate an issue or epic's requirements readiness before development begins. Produces a scored report (0-100) across 5 dimensions with detailed findings, actionable blockers, and a JSON sidecar for dashboards.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/eltmon/overdeck --skill "sync-sources/skills/spec-readiness"Inspect the Agent Skill "spec-readiness" from https://github.com/eltmon/overdeck/blob/da5ab83250ee6edab65e2050111624829ffaf5dd/sync-sources/skills/spec-readiness/SKILL.md at commit da5ab83250ee6edab65e2050111624829ffaf5dd. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
IMPORTANT: This skill uses Task subagents to avoid running out of context. The main agent NEVER fetches individual child issues or large tracker payloads directly. All heavy data fetching happens inside subagents with isolated context windows.
1. Extract the issue identifier from the user's request 2. Set output directory (default: current directory) 3. Look for wrapper config at /.overdeck/skills/spec-readiness-/config.yaml 4. If no wrapper, auto-detect tracker (see Auto-Detection above) 5. Build the tool mapping for…
Call the tracker's getissue operation to get: Title, Description, Status, Owner/Assignee, Project, Milestone/Release, Estimate, Child Issue Count.
Use the Task tool with subagenttype: "general-purpose" for all three. Launch all three in a single message so they run concurrently.
The main agent receives 160-290 lines of structured findings from the three subagents (instead of thousands of lines of raw tracker data).
Permission review
The documentation includes network, browsing, or remote request actions.
get_issue → curl $JIRA_URL/rest/api/3/issue/<key>The documentation asks the agent to read local files, directories, or repositories.
Open the report file (HTML opens in browser, EML opens in mail client)Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 94/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 18 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
The most important work on a feature is the PRD/spec, not the implementation. Every major overrun traces back to requirements incomplete when development started. This skill measures requirements maturity as a leading indicator.
This is the core scoring engine. It is designed to be wrapped by a thin customization layer.
A wrapper skill overrides branding, tracker bindings, and field mappings by providing a config.yaml:
1. Check: Does ~/.overdeck/skills/spec-readiness-*/config.yaml exist?
2. If yes: Load tracker bindings, field mappings, branding, conventions
3. If no: Use defaults (generic branding, auto-detect tracker)
# ~/.overdeck/skills/spec-readiness-mycompany/config.yaml
tracker:
type: linear | github | gitlab | rally | jira
tools:
get_issue: "mcp__linear__get_issue"
list_child_issues: "mcp__linear__list_issues"
get_comments: "mcp__linear__list_comments"
search_issues: "mcp__linear__list_issues"
get_relations: "mcp__linear__get_issue" # with includeRelations=true
get_activity_log: null # not available for Linear
fields:
identifier: "identifier"
estimate: "estimate"
status: "status"
parent_field: "parentId"
customer_directed_label: null
overflow_markers: []
branding:
company_name: "My Company"
primary_color: "#2563eb"
stripe_color: "#2563eb"
footer_text: null
logo_url: null
eml_from: null # From address for EML reports (default: [email protected])
eml_to: null # To address for EML reports (default: [email protected])
conventions:
spike_patterns: ["spike", "investigation", "discovery", "POC", "prototype", "analysis"]
overflow_markers: ["[Unfinished]", "[Continued]"]
estimate_field_custom: null
Required: An issue identifier (e.g., MIN-704, #123, PROJ-456, PAN-47)
Optional:
--output-dir <path> — Override default output directory (default: current directory)--eml — Generate .eml file (email-ready, opens in mail client) instead of .html--json-only — Skip HTML/EML report, produce only JSON sidecar--verbose — Include full issue description text in findings--wrapper <name> — Explicitly select a wrapper (default: auto-detect)| Score | Label | Color |
|---|---|---|
| 86-100 | Ready for Build | Green |
| 70-85 | Mostly Ready | Green |
| 40-69 | Partial / Risky | Yellow |
| 0-39 | Not Ready | Red |
| Dimension | What It Measures |
|---|---|
| 1. Requirements Clarity (0-20) | Is the spec complete and unambiguous? |
| 2. Technical Discovery (0-20) | Have technical unknowns been investigated? |
| 3. Scope & Decomposition (0-20) | Is the issue right-sized with clear boundaries? |
| 4. Dependencies & Prerequisites (0-20) | Is the critical path mapped? |
| 5. Edge Cases & Test Strategy (0-20) | Are failure modes documented? |
Detailed scoring criteria, deduction tables, and calibration data are in SCORING-REFERENCE.md (same directory as this file).
HTML report structure is in REPORT-TEMPLATE.md (same directory as this file).
This skill works with any issue tracker. The data-fetching layer adapts based on tracker type.
| Operation | What It Does |
|---|---|
get_issue(id) | Fetch the parent issue with description, status, metadata |
get_child_issues(parentId) | Fetch all child/sub-issues |
get_comments(issueId) | Fetch discussion threads |
get_activity_log(issueId) | Fetch edit/revision history |
search_issues(filters) | Search for related bugs/issues |
get_relations(issueId) | Fetch blocking/blocked-by links |
Linear:
get_issue → mcp__linear__get_issue(id, includeRelations=true)
get_child_issues → mcp__linear__list_issues(parentId=<id>)
get_comments → mcp__linear__list_comments(issueId=<id>)
get_activity_log → Not available — skip edit churn, note in findings
search_issues → mcp__linear__list_issues(query=..., label="Bug")
get_relations → Included in get_issue with includeRelations=true
GitHub:
get_issue → gh issue view <number> --repo {repo} --json title,body,state,labels,milestone,assignees
get_child_issues → gh issue list --repo {repo} --search "parent:<number>" --json number,title,body,state,createdAt
get_comments → gh issue view <number> --repo {repo} --json comments
get_activity_log → gh api repos/{owner}/{repo}/issues/<number>/events
search_issues → gh issue list --repo {repo} --label bug --search "<query>"
get_relations → Parse "blocked by" / "depends on" from issue body
GitLab:
get_issue → glab issue view <number>
get_child_issues → glab api /projects/:id/issues?parent_id=<id>
get_comments → glab issue note list <number>
get_activity_log → glab api /projects/:id/issues/<number>/resource_state_events
search_issues → glab issue list --label bug --search "<query>"
get_relations → glab api /projects/:id/issues/<number>/links
Rally:
get_issue → mcp__rally__get_feature(FormattedID) or mcp__rally__get_story
get_child_issues → From _collections.UserStories in feature response
get_comments → From Discussion collection in issue response
get_activity_log → mcp__rally__get_revision_history(FormattedID)
search_issues → mcp__rally__search_work_items(work_item_type=Defect)
get_relations → From Predecessors/Successors collections
Jira:
get_issue → curl $JIRA_URL/rest/api/3/issue/<key>
get_child_issues → JQL: "parent = <key>" or "Epic Link = <key>"
get_comments → /rest/api/3/issue/<key>/comment
get_activity_log → /rest/api/3/issue/<key>/changelog
search_issues → JQL search
get_relations → /rest/api/3/issue/<key>?fields=issuelinks
mcp__linear__* tools are available → use Linearmcp__rally__* tools are available → use Rallygh CLI is authenticated → use GitHubglab CLI is authenticated → use GitLabIMPORTANT: This skill uses Task subagents to avoid running out of context. The main agent NEVER fetches individual child issues or large tracker payloads directly. All heavy data fetching happens inside subagents with isolated context windows.
~/.overdeck/skills/spec-readiness-*/config.yamlCall the tracker's get_issue operation to get: Title, Description, Status, Owner/Assignee, Project, Milestone/Release, Estimate, Child Issue Count.
This single call is small enough for the main context. Note the Project name and Description — subagents need them.
Use the Task tool with subagent_type: "general-purpose" for all three. Launch all three in a single message so they run concurrently.
Each subagent prompt MUST include:
SCORING-REFERENCE.md from the skill directory for scoring criteriaScores Dimension 1 (Requirements Clarity) and Dimension 3 (Scope & Decomposition).
Prompt must include: identifier, title, project, description, notes (from Step 2), and tracker tool instructions.
Tell the subagent to:
~/.claude/skills/spec-readiness/SCORING-REFERENCE.md (or ~/.overdeck/skills/spec-readiness/SCORING-REFERENCE.md) for criteriaget_activity_log tool — or note if unavailable)get_child_issues tool)## Issue Metadata
- Title / Identifier / Project / Milestone / Owner / ChildCount / Estimate / EditCount
## External Documents
- Found: yes/no | Type: PRD/BRD/spec | Accessible: yes/no | Attached before dev: yes/no
- Coverage summary (if fetched)
- Gaps identified (if fetched)
## Dimension 1: Requirements Clarity (Score: X/20)
### Summary
### Findings
1. [DEDUCTION -N] Finding | Source: ... | Recommendation: ...
## Dimension 3: Scope & Decomposition (Score: X/20)
### Summary
### Findings
## Child Issue List
| ID | Title | Status | CreationDate |
Scores Dimension 2 (Technical Discovery), Dimension 4 (Dependencies), Dimension 5 (Edge Cases & Test Strategy).
Prompt must include: identifier, project, description (for technical detail analysis), and tracker tool instructions.
Tell the subagent to:
~/.claude/skills/spec-readiness/SCORING-REFERENCE.md for criteriaget_child_issues and get_relations tools)get_comments tool) — look for developer questions indicating requirements gaps## Dimension 2: Technical Discovery (Score: X/20)
### Summary
### Findings
## Dimension 4: Dependencies & Prerequisites (Score: X/20)
### Summary
### Findings
## Dimension 5: Edge Cases & Test Strategy (Score: X/20)
### Summary
### Findings
## Child Issue Assessments
| ID | Title | Status | Has AC | AC Quality | Notes |
Finds bugs and risks that feed into Dimension 5 scoring.
Prompt must include: identifier, project, and tracker tool instructions.
Tell the subagent to:
search_issues tool with bug/defect filter)## Bug Analysis
- Total bugs found / related to this issue / missed edge cases / bugs during active dev
## Impact on Dimension 5 Scoring
- [DEDUCTION -N] or [BONUS +N] with source
The main agent receives ~160-290 lines of structured findings from the three subagents (instead of thousands of lines of raw tracker data).
From all findings with negative impact, select the 3-5 highest-impact items. Phrase as actionable:
Use Task tool with subagent_type: "general-purpose". Prompt must include all assembled scores, findings, child assessments, external document analysis, issue metadata, and top blockers. Also include the wrapper branding config (if any) and the output format: HTML (default) or EML (if --eml flag was used). Tell the subagent to:
REPORT-TEMPLATE.md from the skill directory for report structure (includes both HTML and EML format specs)SCORING-REFERENCE.md in the skill directory{output-dir}/spec-readiness-{identifier}.html
If EML format: Write to {output-dir}/spec-readiness-{identifier}.eml (with MIME headers, email-safe inline CSS){output-dir}/spec-readiness-{identifier}.jsonTell the user:
Other skills can read the JSON sidecar to include readiness scores:
Read spec-readiness-{identifier}.json
Extract: .score, .status, .statusColor, .topBlockers[0..2]
Display in roll-up tables:
| Issue | Readiness | Score | Top Blocker |
|---|---|---|---|
| MIN-704 — MCP Code Mode | Mostly Ready | 74/100 | No dependency links mapped |
| PAN-47 — PRD Enforcement | Ready for Build | 88/100 | — |
spec readiness MIN-704
how ready is #123
requirements review PAN-47
readiness check for all features in Q1
For batch scoring (e.g., "score all issues in current cycle"):
Frequently asked questions
Evaluate an issue or epic's requirements readiness before development begins. Produces a scored report (0-100) across 5 dimensions with detailed findings, actionable blockers, and a JSON sidecar for dashboards.
The source record exposes this install command: npx skills add https://github.com/eltmon/overdeck --skill "sync-sources/skills/spec-readiness". Inspect the command and pinned source before running it.
Static rules flagged network, read-files in the source; the page lists the matching lines and excerpts.
Alternatives
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
dotnet/skills
Migrate C# static calls to a wrapper or built-in abstraction the user already named, within named files/projects, including affected fake-based test updates. USE FOR explicit DateTime.UtcNow/Now to TimeProvider, File.* to IFileSystem, existing IEnvironmentReader/ITextFileStore, scoped migrations, constructor injection, or a static API seam that keeps callers compiling and DateTimeKind unchanged. DO NOT USE when the user asks for behavior tests but leaves seam selection open (testability-obstacle
dotnet/skills
Classifies existing tests by standard traits and reports their distribution. MUST USE to categorize/tag/label tests, compare happy vs error paths, audit the test mix, or describe coverage shape by test type. Read bodies when names mislead. Apply canonical attributes; otherwise report only. DO NOT USE for test-quality audits, executed coverage or CRAP, behavioral gaps, writing tests, or migration.
yonatangross/orchestkit
Grade work that already exists and decide whether it can merge. Runs the project's current unit, integration, and E2E suites plus security scanning and type checking, scores every dimension 0-10, and returns a merge verdict with a VERIFIED-vs-CLAIMED evidence manifest. Writes no test files and edits no source. Use when verifying changes are ready to merge. Use /ork:cover instead when the tests still have to be written.