Requirements Risk Analyser — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Requirements Risk Analyser (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An AI-powered requirements risk analysis pipeline built with TypeScript, Claude API, and MCP.
Finds gaps, ambiguities, and missing acceptance criteria in user stories and PRDs — before a single line of code is written.
Three specialised agents run in sequence:
Three ways to provide requirements:
| Method | How | What gets fetched |
|---|---|---|
| File | Paste requirement into input/requirement.md | File content only |
| Jira | Pass --jira TICKET-ID or use the MCP tool | Jira description + linked Confluence pages + linked Jira tickets + attachments |
| Inline | Pass text as CLI argument | Inline text only |
When a Jira ticket is provided, the pipeline automatically:
All sources fetched are listed in the Sources Analysed section of the report.
| Category | What it catches |
|---|---|
missing_negative_scenario | No sad path defined |
undefined_boundary_value | Ranges implied but not specified |
missing_error_handling | Network/DB calls with no failure state |
ambiguous_language | should, might, fast, valid, strong |
missing_user_role | Which user type does this apply to? |
missing_acceptance_criteria | Business rule exists but no testable AC written for it |
security_gap | No auth, rate limiting, or input validation |
third_party_dependency | Named external service with no fallback defined |
integration_assumption | External API assumed always available — no timeout/retry |
data_privacy_gap | PII collected with no compliance mention |
# Requirements Risk Report
**Requirement:** Password Reset
**Quality Score: 30/100** 🔴
## Risk Summary
| Severity | Count |
|----------|-------|
| 🔴 HIGH | 4 |
| 🟡 MEDIUM | 2 |
| 🟢 LOW | 0 |
## Sources Analysed
| Source | Type | Reference |
|--------|------|-----------|
| QRA-1 — User Password Reset | jira ticket | [Link](...) |
| Password Reset — Detailed Requirements | confluence page | [Link](...) |analyse_requirement — full 3-agent pipeline (file or Jira input)extract_requirements — Agent 1 onlyidentify_risks — Agent 2 onlyget_risk_report — read last generated reportgit clone https://github.com/abchahal/requirements-risk-analyser.git
cd requirements-risk-analyser
npm install
cp .env.example .env
# Add your credentials to .env# Analyse input/requirement.md
npm run pipeline
# Analyse a Jira ticket (fetches Confluence + linked tickets automatically)
npm run pipeline -- --jira PROJ-123
# Analyse inline text
npm run pipeline "As a user I want to reset my password..."Analyse the requirement in input/requirement.mdAnalyse Jira ticket QRA-1 for requirement risksoutput/
├── risk_report.md ← full risk report with score and sources
└── archive/
└── 2026-xx-xx/
└── risk_report.md ← previous runs archived automaticallyEach report includes:
| Agent | Model | Reason |
|---|---|---|
| Agent 1 | Haiku 4.5 | Structured JSON extraction — fast and accurate |
| Agent 2 | Sonnet 4.6 | Risk reasoning — requires deeper analysis |
| Agent 3 | Haiku 4.5 | Report formatting — structured output |
@echo off
cd /d "C:\path\to\requirements-risk-analyser"
node --loader ts-node/esm src/server.tsclaude mcp add -s user requirements-risk-analyser "C:\path\to\requirements-risk-analyser\start-mcp.bat"claude mcp get requirements-risk-analyserExpected output:
requirements-risk-analyser:
Scope: User config (available in all your projects)
Status: ✔ Connected
Type: stdio
Command: C:\path\to\requirements-risk-analyser\start-mcp.batclaude mcp remove requirements-risk-analyser -s userUSE_OLLAMA=false
ANTHROPIC_API_KEY=sk-ant-your-key-hereollama pull qwen2.5-coder:7bUSE_OLLAMA=true
OLLAMA_MODEL=qwen2.5-coder:7bRestart the MCP server after changing .env.
| Ollama (local) | Claude API (cloud) | |
|---|---|---|
| Cost | Free | Per token |
| Speed | 15–25 minutes | 30–60 seconds |
| Quality | Good | Best |
| Internet required | No | Yes |
| Best for | Development and debugging | Production runs and demos |
| Variable | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY | Yes (if USE_OLLAMA=false) | Anthropic API key from console.anthropic.com |
USE_OLLAMA | Yes | true for local Ollama, false for Claude API |
OLLAMA_MODEL | No | Default: qwen2.5-coder:7b |
JIRA_BASE_URL | No | Your Atlassian instance URL e.g. https://yourcompany.atlassian.net |
CONFLUENCE_BASE_URL | No | Same as JIRA_BASE_URL on Atlassian Cloud |
JIRA_EMAIL | No | Your Atlassian account email |
JIRA_API_TOKEN | No | API token from id.atlassian.com/manage-profile/security/api-tokens |
Note: On Atlassian Cloud,JIRA_BASE_URLandCONFLUENCE_BASE_URLare the same URL. The same API token works for both Jira and Confluence.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.