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

SKILL.mdskills/requirements/

name:
requirements
description:
Gathers, organizes, and documents software requirements into structured catalogs with functional requirements (user stories), non-functional requirements (measurable quality attributes), and constraints. Use when the user asks to "write requirements", "create a PRD", "gather requirements", "document feature specs", "write user stories", "define NFRs", "list constraints", "write a glossary", "define domain terms", or mentions requirements catalog, requirements analysis, product requirements document, feature specification, or glossary.

Requirements

Instructions

Create or update the requirements catalog at docs/requirements.md based on docs/vision.md. The document contains functional requirements, non-functional requirements, and constraints organized as Markdown tables. Alongside it, create or update the glossary at docs/glossary.md (see Glossary).

DO NOT

  • Mix requirement types in a single table
  • Skip the user story format for functional requirements
  • Use duplicate IDs across requirement types
  • Leave the Status column empty

Requirement Types

Functional Requirements (FR)

Define what the system should do. Always use the user story format:

Format: As a [role], I want [goal] so that [benefit].

IDTitleUser StoryPriorityStatus
FR-001Create TaskAs a project manager, I want to create tasks so that I can track work items.HighOpen
FR-002Assign TaskAs a project manager, I want to assign tasks to team members so that work is distributed.HighOpen
FR-003Filter TasksAs a team member, I want to filter tasks by status so that I can focus on relevant items.MediumOpen

Non-Functional Requirements (NFR)

Define quality attributes. Must be measurable.

IDTitleRequirementCategoryPriorityStatus
NFR-001Response TimeAll page loads must complete within 2 seconds.PerformanceHighOpen
NFR-002AvailabilitySystem must maintain 99.9% uptime during business hours.AvailabilityHighOpen
NFR-003Concurrent UsersSystem must support 100 concurrent users without degradation.ScalabilityMediumOpen
NFR-004Data EncryptionAll data in transit must use TLS 1.3 encryption.SecurityHighOpen

Constraints (C)

Define limitations and boundaries imposed on the solution.

IDTitleConstraintCategorySourcePriorityStatus
C-001Runtime PlatformBackend must run on Java 21 LTS.TechnicalHighOpen
C-002Database PlatformSystem must use PostgreSQL 16.TechnicalHighOpen
C-003Browser SupportUI must support Chrome, Firefox, and Safari (latest 2 versions).TechnicalHighOpen
C-004Budget LimitTotal development cost must not exceed $50,000.BusinessHighOpen
C-005DeadlineSystem must be production-ready by Q2 2025.ScheduleHighOpen
C-006Right to ErasurePersonal data of a customer must be erased within 30 days of a request.RegulatoryGDPR Art. 17(1), 12(3)HighOpen

The Source column is optional — omit it when no constraint comes from an outside document. It names where a constraint comes from — a law, regulation, standard, or internal policy, down to the article or paragraph and, where it matters, the version (GDPR Art. 17(1), ISO 27001:2022 A.8.24, Operating Policy OP-12 v3) — so the origin of a mandated rule stays traceable. When the column is present, fill it for every Regulatory constraint and leave it empty for the others. Keep Status the last column.

Glossary

The glossary fixes one name per domain concept, so requirements, use cases, test cases, and code all use the same word. Use references/glossary.md as the structure (the path is relative to the folder containing this SKILL.md): one table with the columns Term | Definition | Avoid.

  • Term — the preferred name, in singular, as the business says it. One row per concept; never define a term twice.
  • Definition — one or two sentences that tell this concept apart from its neighbors (a Guest is not necessarily the person who made the Reservation).
  • Avoid — comma-separated synonyms that must not be used for this concept, or empty. Only list a word here when it would be ambiguous or misleading; a word listed here is flagged wherever it appears in the specifications.

Take the terms from the vision and from the nouns of the user stories: roles, business objects, states, and business events. Leave out generic words (system, data, user interface). When the glossary already exists, add new terms and keep existing rows unless the user asks to change them.

Reference

See references/REFERENCE.md for ID prefixes, priority levels, status values, NFR categories, and constraint categories. The path is relative to the folder containing this SKILL.md, not to the project root.

Requirement Quality Checks

Every requirement must pass these checks before finalizing:

CheckRuleBad ExampleGood Example
MeasurableNFRs must have a number or threshold"System should be fast""Pages load within 2 seconds"
SingularOne requirement per row"System must import and export data"Split into FR-001 and FR-002
UnambiguousNo subjective terms"User-friendly interface""WCAG 2.1 AA compliant"
TestableCan write a pass/fail test"System is reliable""99.9% uptime over 30 days"
Unique IDsNo duplicate IDs across all tablesTwo FR-001 entriesEach ID used exactly once

Error Recovery

  • Incomplete source document: List what is missing (roles, NFR categories, constraints) and ask the user to clarify before proceeding
  • Ambiguous requirement from user: Rewrite it as a measurable requirement and ask the user to confirm the threshold
  • Conflicting requirements: Flag the conflict explicitly (e.g., "FR-003 requires real-time sync but C-002 limits to batch processing") and ask the user to resolve
  • Missing stakeholder roles: Default to generic roles (User, Admin, System) and note them for user review

Format survives error recovery. Ambiguity, conflict, and provisional status never justify abandoning the user-story form. Every FR row — even one you are flagging as conflicting or unconfirmed — must still read "As a [role], I want [goal] so that [benefit]." Record the issue in a note or in the Status column (e.g., Conflict, Needs review); never by dropping the requirement to a flat statement like "Support real-time sync."

Workflow

  1. Read the vision document or project brief
  2. Use TodoWrite to create tasks for each requirement type
  3. Write the document header
  4. For functional requirements:
    • Identify user roles
    • Define user stories with clear goals and benefits
    • Assign priorities based on business value
  5. For non-functional requirements:
    • Define measurable quality attributes
    • Categorize by NFR type
    • Ensure requirements are testable
  6. For constraints:
    • Document technical and business limitations
    • Categorize by constraint type
    • Name the source of each regulatory or externally imposed constraint in the Source column
  7. Validate: run every requirement against the quality checks table above
    • No duplicate IDs across all tables
    • All Status columns filled
    • Hard gate: every FR User Story matches "As a [role], I want [goal] so that [benefit]" — scan each row; any row missing "As a", "I want", or "so that" is rejected and rewritten before finalizing, no exceptions
    • All NFRs contain a measurable threshold
  8. When updating an existing catalog whose use cases exist, set the progress status of each requirement (Open, In Progress, Implemented, Verified) from the **Status:** of the use cases that link it, as defined under Status in the reference; never change a Deferred or Rejected status on your own
  9. Create or update docs/glossary.md with the domain terms used in the catalog, and use exactly those terms (never an Avoid synonym) in every requirement
  10. Mark todos complete

skills

requirements

.mcp.json

README.md

tile.json