Requirements Critic
Perform an independent destructive review of requirements/v1. Keep requirements.json immutable and make review decisions explicit in requirements-review/v1.
Output language
- Produce all natural-language output in Ukrainian.
- Preserve exact source quotations in their original language when required as evidence.
- Preserve requirement IDs, code, API names, file names, commands, and machine-readable values.
Inputs and artifacts
Use project-defined locations. Otherwise use:
- input:
docs/requirements/requirements.json;
- editable review:
docs/requirements/review.json;
- generated view:
docs/requirements/review.md;
- approved snapshot:
docs/requirements/baseline.json.
Before acting, read the relevant contracts:
- requirements.schema.json;
- review.schema.json;
- baseline.schema.json only for approval.
Review workflow
Validate the immutable input:
python "<skill-dir>/scripts/pipeline_artifacts.py" validate requirements "<requirements.json>"
Calculate its SHA-256:
python "<skill-dir>/scripts/pipeline_artifacts.py" digest "<requirements.json>"
Build a staged requirements-review/v1 JSON tied to that digest. New findings start with status: open.
Validate finding references and the input digest:
python "<skill-dir>/scripts/pipeline_artifacts.py" validate review "<staged-review.json>" --requirements "<requirements.json>"
Write the review safely. An existing primary produces review.candidate.json or the next numbered candidate.
python "<skill-dir>/scripts/pipeline_artifacts.py" safe-write review "<staged-review.json>" "<output-dir>/review.json"
Render the written JSON to the matching Markdown name:
python "<skill-dir>/scripts/pipeline_artifacts.py" render review "<written-review.json>" --requirements "<requirements.json>" --output "<matching-review.md>"
The renderer orders findings by importance: blocker before risk before note, then open before accepted-risk before resolved, then systemic type CROSS, missing coverage MISSING, isolated type LOCAL, and numeric ID. Rendering never changes JSON array order.
On a repeat review, compare the current review with the new findings. Preserve the ID for the same defect. Carry an accepted-risk decision only while its recorded scope still applies; retain a resolved finding only while the defect remains absent, and reopen it with an explanation if it reappears. Create a new ID for a materially different defect. Never overwrite the primary review without explicit authorization.
Review rules
- Review both individual requirements and interactions across the complete set.
- Cite affected requirement IDs and exact wording or source evidence for every finding.
- For critical wording ambiguity, test at least three materially different interpretations. Report ambiguity when observable outcomes differ.
- Check contradictions across goals, rules, behavior, constraints, actors, lifecycle states, permissions, thresholds, timing, ownership, and dependencies.
- Find hidden assumptions, undefined terms, non-observable statements, missing failure and recovery behavior, boundary cases, and concurrency gaps.
- Use finding types
LOCAL, CROSS, or MISSING and severities blocker, risk, or note.
- Keep a finding
open until a changed requirement is re-reviewed successfully.
- Set
resolved only after the defect no longer exists and record who, when, and why.
- Set
accepted-risk only from an explicit human decision and record who, when, and why.
Do not mutate requirements, invent the missing behavior, choose architecture, or approve on the user's behalf.
Explicit approval
Offer approval only when the current review matches the current requirements, no blocker remains open, and no OPEN-* item remains unresolved. Create a baseline only after the user explicitly approves the named version:
python "<skill-dir>/scripts/pipeline_artifacts.py" approve --requirements "<requirements.json>" --review "<review.json>" --approved-by "<person>" --approved-at "<ISO-8601>" --scope "<scope>" --output "<baseline.json>"
The command refuses stale inputs, unresolved open items, open blockers, or an existing baseline path. Report the exact created path and hashes.
Finish ordinary review with one verdict: готово до затвердження людиною, потребує усунення суперечностей, or недостатньо вихідних даних.
1---2name: requirements-critic3description: Critically assess requirements.json for ambiguity, contradictions, hidden assumptions, undefined terms, and testability gaps, then produce editable review.json and generated review.md. Use as the second stage before explicit human approval and specification compilation.4---56# Requirements Critic78Perform an independent destructive review of `requirements/v1`. Keep `requirements.json` immutable and make review decisions explicit in `requirements-review/v1`.910## Output language1112- Produce all natural-language output in Ukrainian.13- Preserve exact source quotations in their original language when required as evidence.14- Preserve requirement IDs, code, API names, file names, commands, and machine-readable values.1516## Inputs and artifacts1718Use project-defined locations. Otherwise use:1920- input: `docs/requirements/requirements.json`;21- editable review: `docs/requirements/review.json`;22- generated view: `docs/requirements/review.md`;23- approved snapshot: `docs/requirements/baseline.json`.2425Before acting, read the relevant contracts:2627- [requirements.schema.json](references/contracts/requirements.schema.json);28- [review.schema.json](references/contracts/review.schema.json);29- [baseline.schema.json](references/contracts/baseline.schema.json) only for approval.3031## Review workflow32331. Validate the immutable input:3435 ```text36 python "<skill-dir>/scripts/pipeline_artifacts.py" validate requirements "<requirements.json>"37 ```38392. Calculate its SHA-256:4041 ```text42 python "<skill-dir>/scripts/pipeline_artifacts.py" digest "<requirements.json>"43 ```44453. Build a staged `requirements-review/v1` JSON tied to that digest. New findings start with `status: open`.464. Validate finding references and the input digest:4748 ```text49 python "<skill-dir>/scripts/pipeline_artifacts.py" validate review "<staged-review.json>" --requirements "<requirements.json>"50 ```51525. Write the review safely. An existing primary produces `review.candidate.json` or the next numbered candidate.5354 ```text55 python "<skill-dir>/scripts/pipeline_artifacts.py" safe-write review "<staged-review.json>" "<output-dir>/review.json"56 ```57586. Render the written JSON to the matching Markdown name:5960 ```text61 python "<skill-dir>/scripts/pipeline_artifacts.py" render review "<written-review.json>" --requirements "<requirements.json>" --output "<matching-review.md>"62 ```6364 The renderer orders findings by importance: `blocker` before `risk` before `note`, then `open` before `accepted-risk` before `resolved`, then systemic type `CROSS`, missing coverage `MISSING`, isolated type `LOCAL`, and numeric ID. Rendering never changes JSON array order.6566On a repeat review, compare the current review with the new findings. Preserve the ID for the same defect. Carry an `accepted-risk` decision only while its recorded scope still applies; retain a resolved finding only while the defect remains absent, and reopen it with an explanation if it reappears. Create a new ID for a materially different defect. Never overwrite the primary review without explicit authorization.6768## Review rules6970- Review both individual requirements and interactions across the complete set.71- Cite affected requirement IDs and exact wording or source evidence for every finding.72- For critical wording ambiguity, test at least three materially different interpretations. Report ambiguity when observable outcomes differ.73- Check contradictions across goals, rules, behavior, constraints, actors, lifecycle states, permissions, thresholds, timing, ownership, and dependencies.74- Find hidden assumptions, undefined terms, non-observable statements, missing failure and recovery behavior, boundary cases, and concurrency gaps.75- Use finding types `LOCAL`, `CROSS`, or `MISSING` and severities `blocker`, `risk`, or `note`.76- Keep a finding `open` until a changed requirement is re-reviewed successfully.77- Set `resolved` only after the defect no longer exists and record who, when, and why.78- Set `accepted-risk` only from an explicit human decision and record who, when, and why.7980Do not mutate requirements, invent the missing behavior, choose architecture, or approve on the user's behalf.8182## Explicit approval8384Offer approval only when the current review matches the current requirements, no blocker remains open, and no `OPEN-*` item remains unresolved. Create a baseline only after the user explicitly approves the named version:8586```text87python "<skill-dir>/scripts/pipeline_artifacts.py" approve --requirements "<requirements.json>" --review "<review.json>" --approved-by "<person>" --approved-at "<ISO-8601>" --scope "<scope>" --output "<baseline.json>"88```8990The command refuses stale inputs, unresolved open items, open blockers, or an existing baseline path. Report the exact created path and hashes.9192Finish ordinary review with one verdict: `готово до затвердження людиною`, `потребує усунення суперечностей`, or `недостатньо вихідних даних`.