CtrlK
BlogDocsLog inGet started
Tessl Logo
PluginPublic

ai-unified-process/aiup-core

AI Unified Process core - stack-agnostic requirements, entity model, and use cases, plus the construction orchestrators for layer plugins

Quality

95%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
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

In a project split by module, "use_cases.puml" below stands for the overview and every module diagram use_cases/<module>/use_cases.puml together, and "use_cases/UC-XXX-*.md" for a specification in any module folder; entity headings are read from entity_model.md and every entity_model/<module>.md. Open questions are the ## OQ-XXX: sections of open-questions.md, in the format of the open-questions skill; only Open and Answered questions are checked against the specification, because Resolved and Withdrawn ones are history. Architecture decisions are the files under a decisions/, adr/, or adrs/ folder anywhere in docs/ whose name or title carries ADR-XXX, in the format of the architecture-decision skill; other formats count when they have a ## Status section or status: front matter. They are the team's documents, so only a link to nothing and a duplicate id are errors.

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, BP, FR, NFR, C, OQ, or ADR id, or an entity heading, is used twice — also a use case in two module diagrams or an entity in two module filesthe owning skill
ERRORDANGLING_REFAn FR, NFR, or C id in **Requirements:**, a UC-xxx BR-yyy citation, a UC link in a test case, a **Process:** link or BP-XXX id, the **Element:** of an open question, or an id in an ADR's **Requirements:**, **Supersedes:**, or **Superseded by:** line 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
ERRORMODULE_UNKNOWNA package of the module overview use_cases.puml without a folder use_cases/<alias>/use_cases.puml, or such a folder without a package of that alias/use-case-diagram
ERROROQ_BLOCKINGA use case at Tested or Done while a blocking open question on it is Open or Answered; a question on an FR, NFR, or C counts against every use case that links it/use-case-spec, /requirements
ERROROQ_INVALIDAn open question without an **Element:**, **Raised by:**, **Blocking:**, or **Status:** line, with an unknown status, Blocking other than Yes or No, an element of no known form, or Answered without **Answer:**, Resolved without **Resolved in:**, Withdrawn without **Withdrawn:**/open-questions
ERRORBP_ID_MISMATCHA process model whose BP-XXX process id and file name prefix (BP-XXX-<name>.bpmn) differ/business-process
WARNACTOR_MISMATCHA primary or secondary actor of a specification that use_cases.puml does not connect to the use case (or does not declare), or an actor the diagram connects that the specification does not list. Actors are compared by name, primary and secondary together; an actor inherits its parent's links (`Manager --> Clerk`); a use case the diagram connects to no actor is skipped
WARNMODULE_MISMATCHA specification that does not lie in the folder of the module whose diagram holds its use casemove the file
WARNFR_UNCOVEREDAn FR (not Rejected or Deferred) that no active 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
WARNOQ_BLOCKINGThe same at Approved or Implemented: the use case should not have been approved, or the answer is still missing/open-questions, /use-case-spec
WARNOQ_UNRESOLVEDAn open question is Answered, but the answer is not in the specification yet/use-case-spec, /requirements, /entity-model
WARNADR_UNLINKEDA Proposed or Accepted ADR whose **Requirements:** line links no NFR or C (an FR alone does not count): a decision is justified by a quality or a constraint/requirements, then /architecture-decision
WARNADR_STALEA Proposed or Accepted ADR links a Rejected or Deferred requirement; or an ADR supersedes one that is not Superseded, or the two do not name each other in **Supersedes:** and **Superseded by:**/architecture-decision
WARNADR_INVALIDAn ADR without a status, with a status other than Proposed, Accepted, Superseded, Deprecated, or Rejected, without a date, or Superseded without the ADR that replaced it/architecture-decision
WARNMOCKUP_MISSING_FILEA relative link on a use case's **Mockup:** line points to a file that does not exist; URLs are not checked, and a use case without a mockup is never reported/use-case-spec
WARNAPI_UNRESOLVEDA relative link on a use case's **API:** line points to a file that does not exist, or the file has no operationId, AsyncAPI channel, or operation by the link's fragment; URLs are not checked, and a use case without the line is never reported/use-case-spec
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 column (in requirements.md only in the prose columns, not in ID, Priority, Status, Category, or Source)the 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
INFOBP_NO_IDA process model without a BP-XXX process id (e.g. drawn before /business-process)/business-process
INFOREQ_UNCOVEREDAn NFR or C (not Rejected or Deferred) that no use case lists; fine when it applies to the whole system/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, MOCKUP_NO_LINK, API_NO_LINK, …). Fix them with /use-case-spec.

Options

OptionEffect
--docs DIRdocumentation folder (default docs)
--only UC-XXX / TC-XXX / BP-XXX / ADR-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

README.md

tile.json