The refine-backlog-mcp server transforms messy, unstructured backlog items into clean, actionable work items.
Core capabilities:
Refine backlog items: Convert raw descriptions into structured work items with:
Clean title
Problem statement
Testable acceptance criteria
T-shirt size estimate (XS/S/M/L/XL)
Priority with rationale
Relevant tags
Optional assumptions
Format options: Titles as user stories ("As a [user], I want [goal], so that [benefit]") and acceptance criteria in Gherkin format (Given/When/Then)
Project context: Provide optional context (e.g., "B2B SaaS CRM") to improve output relevance
Batch processing: Handle multiple items per request (Free: 5, Pro: 25, Team: 50)
Tiered access: Free tier (5 items/request, 3 requests/day) or higher limits with a license key via
REFINE_BACKLOG_KEYenv variable or inline parameterMCP integration: Works with MCP clients like Claude Desktop and Cursor
Enables automated scoring and linting of GitHub issues to identify vague requirements and missing acceptance criteria. Provides a GitHub Action that can automatically analyze issue content and post quality scores and suggested rewrites as comments directly on the platform.
Speclint
Deterministic spec linter for AI coding agents. Score GitHub issues 0–100 across 5 dimensions before agents touch them — catch vague requirements, missing acceptance criteria, and untestable specs at the source.
What it does
Scores issues like:
"users keep saying login is broken"
"dashboard loads slow"
"need dark mode"
Across 5 dimensions:
Problem clarity — Is the problem statement specific and observable?
Acceptance criteria — Are there testable, concrete pass/fail conditions?
Scope definition — Is the work bounded and decomposable?
Verification steps — Can a CI agent prove it's done?
Testability — Are edge cases and failure modes addressed?
Returns a 0–100 score with per-dimension breakdown, agent-readiness flag, and optional AI-powered rewrite suggestions.
API
Lint a spec
curl -X POST https://speclint.ai/api/lint \
-H "Content-Type: application/json" \
-d '{"items": ["users keep saying login is broken", "dashboard loads slow"]}'With a license key:
curl -X POST https://speclint.ai/api/lint \
-H "Content-Type: application/json" \
-H "x-license-key: SK-YOUR-KEY" \
-d '{"items": ["users keep saying login is broken"]}'Example response:
{
"results": [{
"item": "users keep saying login is broken",
"score": 32,
"agent_ready": false,
"dimensions": {
"problem_clarity": 20,
"acceptance_criteria": 10,
"scope_definition": 45,
"verification_steps": 30,
"testability": 55
},
"rewrite_preview": "**Problem:** Users cannot log in to the application..."
}]
}Rewrite a spec (Lite tier and above)
curl -X POST https://speclint.ai/api/rewrite \
-H "Content-Type: application/json" \
-H "x-license-key: SK-YOUR-KEY" \
-d '{
"item": "dashboard loads slow",
"target_agent": "claude",
"rewrite_mode": "full"
}'Example response:
{
"rewritten": "**Problem:** The dashboard takes >3s to load on standard connections...",
"structured": {
"title": "Optimize dashboard load time to <1s on 4G",
"problem": "The main dashboard takes 3-8s to load, causing 40% of users to abandon before seeing data.",
"acceptance_criteria": [
"Dashboard LCP < 1s on 4G (Lighthouse throttling preset)",
"First contentful paint < 500ms",
"All chart data visible within 2s without skeleton loaders"
],
"verification_steps": [
"Run Lighthouse CI in --preset=perf mode",
"Assert LCP < 1000ms in CI",
"Load dashboard with network throttled to 4G in Playwright test"
]
},
"score_before": 28,
"score_after": 91,
"score_delta": 63
}Full OpenAPI spec: speclint.ai/openapi.yaml
Agent capabilities: speclint.ai/llms.txt
CLI
Install and run from your terminal:
npx @speclint/cli lint "dashboard loads slow"Or install globally:
npm install -g @speclint/cli
speclint lint "dashboard loads slow"
speclint rewrite "dashboard loads slow" --key SK-YOUR-KEY
speclint batch issues.txt --key SK-YOUR-KEYSet your key once via env: export SPECLINT_KEY=SK-YOUR-KEY
MCP Server
Use speclint-mcp directly in Claude Desktop, Cursor, or any MCP-compatible client:
{
"mcpServers": {
"speclint": {
"command": "npx",
"args": ["speclint-mcp"],
"env": { "SPECLINT_KEY": "SK-YOUR-KEY" }
}
}
}This gives your AI assistant a lint_spec tool it can call automatically before writing code.
GitHub Action
Lint specs automatically in CI. Trigger on issue open, manual dispatch, or any GitHub event.
- uses: DavidNielsen1031/speclint-action@v1
with:
items: ${{ github.event.issue.title }}
write-back: "true"
gherkin: "true"
key: ${{ secrets.SPECLINT_KEY }}Posts the score + rewrite suggestions as a comment on the issue.
→ GitHub Marketplace · Full docs + examples
Pricing
Tier | Price | Items/req | Rewrites/day | Keys |
Free | $0 | 5 | 1 preview | 1 |
Lite | $9/mo | 5 | 10 full | 1 |
Solo | $29/mo | 25 | 500 full | 1 |
Team | $79/mo | 50 | 1,000 full | Unlimited |
Free: No signup required. Get a free key to track usage. Rewrite previews are 250 chars.
Lite: Full rewrites (complete rewritten spec + structured fields + score delta). Unlimited lint requests.
Solo: 25 items per batch, 500 rewrites/day,
codebase_contextfield for stack-aware scoring.Team: 50 items per batch, 1,000 rewrites/day, multi-seat. For teams where bad specs cost real money.
Pass your license key via x-license-key header, SPECLINT_KEY env var, or the MCP server config.