AI Unified Process core - stack-agnostic requirements, entity model, and use cases, plus the construction orchestrators for layer plugins
95%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Read this before writing the specifications of stage 6. Every file follows the structure of /use-case-spec; this
page says how to recover each section from the code.
@Scheduled job or cron task for a time trigger, the
message or webhook a listener consumes for an external system's event),
status (always Draft, even for working code: a recovered specification
describes what the code does, not what it should do, and a test derived
from it before a human has approved it only restates the code — see
stage 9 of the skill). Add
the **Requirements:** link ([FR-001, NFR-002](../requirements.md))
only when a docs/requirements.md already exists and its ids match the
use case; otherwise omit the line — never invent requirement ids. Add
a **Layers:** line only when the code offers the use case through
fewer entry points than the system has: UI when only a view or route
realizes it, API when only an endpoint does, Service when only a
job or listener does.if/else on validation, exception
handlers, conditional UI flows, and tested error cases. Number them
A1, A2, … and give each a clear trigger that names the step it
diverges from. When the code has no such branch for the use case, write
an italic placeholder (_None — …_) — never invent a flow the code does
not have.if (...) that encodes a policy
decision (limits, thresholds, eligibility). Number and cite them by
rule 4 of the skill's format contract (BR-001 again in every file, a
rule of another use case cited as "UC-005 BR-002"). A policy the code enforces in several places is still one
rule: write it in the use case that owns the data and cite it elsewhere
instead of copying it.
When docs/glossary.md exists, name actors and business objects with its
terms, never with a synonym from its Avoid column.The full template lives in the /use-case-spec skill of this plugin as
references/use-case.md, and the normative format definition next to it as
references/format-spec.md. Locate them with a glob for
**/*use-case-spec/references/use-case.md and **/*use-case-spec/references/format-spec.md —
the skill folder may carry a host prefix such as tessl__use-case-spec; never resolve the
paths against the project root or relative to this skill's folder.
| Code reality | Use case step |
|---|---|
POST /reservations returns 201 | "System creates the reservation" |
if (!cart.isEmpty()) { … } | A1 trigger: "Cart is empty" |
@NotNull annotation on email | BR: "Email is required" |
if (amount > 10_000) requireApproval() | BR: "Orders over 10,000 require approval" |
mailService.send(confirmation) | "System sends a confirmation email" |
throw new InsufficientStockException() | A2 trigger: "Requested quantity exceeds stock" |
If a step would only make sense to someone who has read the code, rewrite it.
.tessl-plugin
skills
acceptance-protocol
references
business-process
entity-model
references
next
open-questions
references
release-notes
references
requirements
reverse-engineer
spec-review
stack
references
test-case
test-case-coverage
test-case-implement
use-case-coverage
use-case-diagram
references
use-case-implement
references
use-case-spec
use-case-test
references
user-guide