CtrlK
BlogDocsLog inGet started
Tessl Logo

ai-unified-process/aiup-core

AI Unified Process core - stack-agnostic requirements, entity model, and use cases

90

1.16x
Quality

92%

Does it follow best practices?

Impact

90%

1.16x

Average score across 14 eval scenarios

SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

lint-codes.mdskills/spec-review/references/

Lint Codes

scripts/spec_lint.py prints one line per finding:

docs/use_cases/UC-004-book-room.md:12: ERROR DANGLING_REF [UC-004]: requirement FR-019 is not in requirements.md

The format is path:line: SEVERITY CODE [element]: message. Line 0 means the finding concerns the whole file. The exit code is 0 when the run is clean, 1 on any ERROR (with --strict, also on any WARN), and 2 on usage errors.

Cross-file codes

SeverityCodeMeaningFix with
ERRORSPEC_MISSINGA use case in use_cases.puml has no use_cases/UC-XXX-*.md/use-case-spec
ERRORNOT_IN_DIAGRAMA specification (not Obsolete) whose use case is not in use_cases.puml/use-case-diagram
ERRORDUPLICATE_IDA UC, TC, FR, NFR, or C id, or an entity heading, is used twicethe owning skill
ERRORDANGLING_REFAn FR, NFR, or C id in **Requirements:**, a UC-xxx BR-yyy citation, a UC link in a test case, or a **Process:** link points to nothingthe owning skill
ERRORBPMN_UNMAPPEDA BPMN activity whose name carries no known use case id and matches no use case title/use-case-spec
ERRORBPMN_INVALIDA .bpmn file that cannot be parsedthe modeling tool
WARNFR_UNCOVEREDAn FR (not Rejected or Deferred) that no use case lists in **Requirements:**/use-case-spec
WARNREQ_STATUS_DRIFTA requirement's progress status (Open, In Progress, Implemented, Verified) differs from the one the **Status:** of its linking use cases gives it/requirements
WARNBR_DUPLICATETwo use cases carry the same rule text; keep it in one and cite it as UC-xxx BR-yyy/use-case-spec
WARNWEAK_WORDA vague or optional word ("fast", "appropriate", "etc.", "and/or", "should", "ggf.", …)the owning skill
WARNGLOSSARY_AVOIDED_TERMA synonym that glossary.md lists in its Avoid columnthe owning skill
WARNGLOSSARY_DUPLICATEA term defined twice in glossary.md/requirements
INFONO_TRACEABILITYNo use case has a **Requirements:** field, so FR coverage is not checked/use-case-spec
INFOUC_UNUSED_BY_TCTest cases exist, but none of them includes this use case/test-case
INFOBASELINE_STALEA baseline entry that no longer matches any finding; refresh with --update-baseline—
INFOVALIDATOR_MISSING, BPMN_PARSER_MISSINGA sibling skill is not installed, so its checks were skippedinstall aiup-core

Per-file codes

spec_lint.py runs validate_use_case.py from the use-case-spec skill over every use case and passes its findings through unchanged: ERROR means the document does not parse (TITLE_MISSING, OVERVIEW_MISSING, FIELD_MISSING, STATUS_INVALID, FLOW_INCOMPLETE, UNEXPECTED_CONTENT), and WARN means a rule of the use-case-spec skill is broken (SECTION_MISSING, NUMBERING, NO_ALTERNATIVE_FLOWS, TRIGGER_STEP_REF, FLOW_TERMINATION, POSTCONDITIONS_EMPTY, RULE_LABEL_MISSING, RULE_NUMBERING, TECHNICAL_TERM, UC_TRIGGER_EMPTY, UC_TRIGGER_STEP_REF, UC_TRIGGER_IS_PRECONDITION, …). Fix them with /use-case-spec.

Options

OptionEffect
--docs DIRdocumentation folder (default docs)
--only UC-XXX / TC-XXXreport only findings about this element
--strictfail on warnings too
--format jsonprint {"findings": [...], "summary": {...}}
--baseline FILEuse this baseline (default DIR/.spec-lint-baseline.json when it exists)
--no-baselinereport every finding
--update-baselineaccept all current ERROR and WARN findings into the baseline, then exit 0
--self-testrun the built-in fixtures

A baseline entry is a fingerprint of code, file, element, and message — not the line number — so it survives edits elsewhere in the file.

skills

.mcp.json

README.md

tile.json