AI Unified Process core - stack-agnostic requirements, entity model, and use cases
94
94%
Does it follow best practices?
Impact
94%
1.32xAverage score across 12 eval scenarios
Low
Low-risk findings worth noting
This document is the single normative definition of the use case
specification format shared by the AI Unified Process skills
(/use-case-spec, /reverse-engineer) and the AI Unified Process Studio
structured editor. The Studio parser
(UseCaseSpecificationDocument.java) is the executable reference for the
structural rules; the skills add content rules on top. The bundled
validator (scripts/validate_use_case.py) checks both:
**Use Case ID:** line).One file per use case. Sections in this order (Studio reorders them to this order on save):
# Use Case: <name>
## Overview
**Use Case ID:** UC-XXX
**Use Case Name:** <name>
**Primary Actor:** <role>
**Secondary Actors:** <roles> (optional)
**Goal:** <one sentence>
**Status:** <status value>
**Requirements:** [FR-001, FR-002](../requirements.md) (optional)
## Preconditions
- <bullet items>
## Main Success Scenario
1. <numbered steps, starting at 1, no gaps>
## Alternative Flows
### A1: <flow name>
**Trigger:** <condition> (step N)
**Flow:**
1. <numbered steps>
2. Use case continues at step N. / Use case ends.
## Postconditions
### Success Postconditions
- <bullet items>
### Failure Postconditions
- <bullet items>
## Business Rules
### BR-XXX: <rule name>
<free-text description>The structure is identical in English and German; only headings, field labels, status values and the rule prefix differ. The language is detected from the document (majority of matching headings/labels; ties and empty files are English) and preserved on save.
| Element | English | German |
|---|---|---|
| Title prefix | # Use Case: | # Use Case: (same) |
| Overview | ## Overview | ## Übersicht |
| ID field | **Use Case ID:** | **Use-Case-ID:** |
| Name field | **Use Case Name:** | **Use-Case-Name:** |
| Primary actor | **Primary Actor:** | **Primärer Akteur:** |
| Secondary actors | **Secondary Actors:** | **Sekundäre Akteure:** |
| Goal | **Goal:** | **Ziel:** |
| Status | **Status:** | **Status:** (same) |
| Requirements | **Requirements:** | **Anforderungen:** |
| Preconditions | ## Preconditions | ## Vorbedingungen |
| Main scenario | ## Main Success Scenario | ## Hauptablauf |
| Alternative flows | ## Alternative Flows | ## Alternativabläufe |
| Trigger field | **Trigger:** | **Auslöser:** (reads **Trigger:** too) |
| Flow field | **Flow:** | **Ablauf:** |
| Postconditions | ## Postconditions | ## Nachbedingungen |
| Success subsection | ### Success Postconditions | ### Erfolgsfall |
| Failure subsection | ### Failure Postconditions | ### Fehlerfall |
| Business rules | ## Business Rules | ## Geschäftsregeln |
| Rule prefix | BR | GR (reads BR too) |
Status values (either language is readable in any document):
| English | German |
|---|---|
| Draft | Entwurf |
| Reviewed | Geprüft |
| Approved | Genehmigt |
| Implemented | Implementiert |
| Tested | Getestet |
| Done | Abgeschlossen |
| Obsolete | Obsolet |
# Use Case: <name> or an
id-style title # UC-XXX: <name> matching the id grammar
[SB]?UC-[A-Za-z0-9_-]+ (so SUC-, BUC-, UC-013a, UC-2-1 are
valid ids). Studio rewrites id-style titles to the canonical prefix
on save.## Overview section must exist and carry the
five mandatory fields: ID, Name, Primary Actor, Goal, Status.
Secondary Actors and Requirements are optional.✅ Implemented (2025-07-11) and Approved — 🚧 partial read as
Implemented and Approved; In Progress is invalid.- ). Anything else that is not a placeholder paragraph (see
tolerances) is unexpected content.1. ,
unindented). Wrapped continuation lines are joined into their item.### heading followed by a
trigger line (**Trigger:** / **Auslöser:**), the flow field line
(**Flow:** / **Ablauf:**) and at least one numbered step. A flow
missing any of the three is incomplete. Plain prose inside a flow is
unexpected content (markup paragraphs are notes — see tolerances).### heading followed by
free-text description lines.These come from Studio's pass-through rules (UC-010 BR-011, FR-072) and tolerant-read rule (UC-020 BR-003); generators should still emit the canonical form, but validators must accept:
**Priorität:** Hoch) — kept
verbatim.## Suchkriterien)
anywhere between template sections — kept verbatim at their anchor._None — the page is static._) standing in for the content of an
empty template section. Next to real content it is unexpected.**, _, * or >) before the trigger, between trigger
and flow field, or after the steps. They are read as the note of the
flow; a note never substitutes for trigger or steps.**Trigger:** in German documents (written back as
**Auslöser:**).BR- rule labels in German documents (written back as GR-).Studio rewrites these without asking; a generator that produces them creates diffs on the first Studio save:
A1…) and rule (BR-001…) numbers are positional:
Studio renumbers them gaplessly on save.The /use-case-spec skill additionally requires:
[SB]?UC-[A-Za-z0-9_-]+ and the filename
starts with the id (canonical: UC-XXX-<kebab-case-name>.md).1..n without gaps.(step N) / (Schritt N); each flow's last step ends with
Use case continues at step N. or Use case ends. (German: Der Use Case wird bei Schritt N fortgesetzt. / Der Use Case endet.)._None — …_ counts as a deliberate statement).BR-XXX: / GR-XXX: label, numbered
BR-001, BR-002, … without gaps within the document.BR-XXX ids are scoped to their use case: every document numbers
its rules from BR-001, and the same id may appear in other documents.
This matches Studio, which renumbers rules per document on save. A rule
referenced from another document is qualified with the use case id
("UC-005 BR-002"), never by the bare rule id.
python3 scripts/validate_use_case.py [--strict] docs/use_cases/UC-*.mdExit 0 when clean; 1 on any ERROR (with --strict also on any WARN);
--self-test runs the built-in fixtures. Newly generated documents must
pass --strict. Pre-existing hand-written documents must at minimum be
ERROR-free, or Studio cannot open them in the structured editor.
.tessl-plugin
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
skills