一键导入
create-design-doc
Creates a technical design document from a BRD. Use when asked to create a design document, technical specification, or architecture document.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Creates a technical design document from a BRD. Use when asked to create a design document, technical specification, or architecture document.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Creates a capacity-driven sprint plan from estimated work items and team capacity inputs. Use when asked to create a sprint plan or allocate stories to sprints.
Syncs the complete local work item hierarchy to Azure DevOps Boards. Creates Epics, Features, User Stories, and Tasks with parent-child links, effort estimates, and sprint assignments.
Generates the initial project folder structure, entry point files, and dependency manifest for any tech stack defined in workshop-stack.md. Use when asked to scaffold the project, generate the initial structure, or set up the project before implementation begins.
Implements a task file by generating code targeted to the workshop stack configuration. Use when asked to implement a task, or when a developer references a task file from issues/ and asks for implementation.
Reviews an implemented task's source files against the task file's acceptance criteria and stack standards. Produces a structured review reply in chat with pass/fail results and a recommendation. Use when asked to review an implemented task or validate code before moving to the next task.
Creates Task work items from User Story files and the design document. Use when asked to create tasks or break user stories into implementation tasks.
| name | create-design-doc |
| description | Creates a technical design document from a BRD. Use when asked to create a design document, technical specification, or architecture document. |
Read the BRD as the primary source of requirements and produce:
docs/design/design-doc.md — complete technical design documentdocs/requirements/BRD.md — extract domain entity names, user role
names, lifecycle states, and business rules. These names must be used
verbatim throughout the design — in data model names, API route paths,
and component names. The BRD is your authoritative source for functional
requirements.workshop-stack.md — extract the target tech stack. Use this to:
workshop-stack.md). If
workshop-stack.md is not yet filled in, describe the data model
in plain entity-relationship terms.workshop-stack.md (e.g. routes_folder, controllers_folder).docs/design/design-doc.md in the ## Design Doc Format section below.docs/design/design-doc.md does not exist: create it.# [App Name] — Design Document
**Date:** [Today]
**Source:** BRD.md
## 1. Architecture Overview
Describe the system tiers and how they connect.
Name the layers (e.g. presentation, API, data) without prescribing
specific frameworks or technologies.
Include a Mermaid diagram.
## 2. Domain Model
Describe each entity from the BRD, its fields, states, and relationships.
Include a Mermaid ER diagram.
If `workshop-stack.md` defines an ORM (e.g. SQLAlchemy, EF Core, JPA,
or any other ORM), represent schema definitions in that ORM's syntax
alongside the ER diagram.
If `workshop-stack.md` is not yet filled in, describe the model in
plain entity-relationship terms only.
## 3. API Contracts
| Method | Path | Description | Auth Required |
|--------|------|-------------|---------------|
Include request and response shapes for complex endpoints.
Define error response shape: { error: string } with correct HTTP status.
## 4. Component Structure
Describe the UI component hierarchy.
Include a Mermaid diagram of the component tree.
Include test identifiers (e.g. data-testid values) for all
interactive elements — these must match what the developer implements
and what tests reference.
## 5. Key User Flows
Mermaid sequence diagram for each primary user journey end to end.
## 6. Seed Data Plan
For each domain entity, describe the seed records needed to demonstrate
the feature. Include at least one record per status or type variant
defined in the BRD.
Appointment, the entity is Appointment —
not Booking or Event)Appointment, use /api/appointments —
not /api/bookings)workshop-stack.md
→ api_error_format if defined; otherwise use the stack's conventional
error shape:
{ error: string }{ detail: string }{ message: string, status: int, timestamp: string }{ title: string, status: int, traceId: string }
Always document the chosen shape explicitly in the API contracts section.data-testid).ItemCard or ListPage.
(e.g. AppointmentCard, BookingList, PractitionerProfile)These rules prevent parse errors when diagrams are rendered.
Diagrams target Mermaid 10+ syntax. Each diagram must begin with a valid
diagram-type keyword on its own line: graph TD, erDiagram,
sequenceDiagram, or classDiagram.
sequenceDiagram)". Summarise instead.
Bad: API-->>FE: 200 filename="data.csv"
Good: API-->>FE: 200 OK (file download): separates
the arrow target from the label; subsequent colons can confuse parsers.
Use parentheses instead.
Good: API-->>FE: 200 OK (text/csv)participant FE as Frontendgraph TD, used for architecture and component trees)A[API Layer (REST)]
Good: A["API Layer (REST)"]A -->|HTTP/JSON| BApiLayer, auth_middleware; on a single line.erDiagram)Patient ||--o{ Appointment : books appointments
Good: Patient ||--o{ Appointment : "books"string, int, datetime, uuid).
If a length or modifier is needed, quote it: "varchar(50)". Avoid
parentheses in unquoted types.type name (type first, then name) inside the entity block.
Good: int id PK||--o{ (one to many), }o--o{ (many to many),
||--|| (one to one). Do not invent symbols.classDiagram, fallback for older renderers)+name : type or +name() type. Avoid spaces in member names.After drafting a Mermaid block, re-read it and confirm:
If unsure whether a label needs quoting, quote it — quoted labels are
always valid in graph and erDiagram blocks.
Every section of the design must trace back to a BRD functional requirement. Use FR IDs (e.g. FR-001) to annotate design decisions where relevant. This ensures nothing is designed that was not required, and nothing required is left undesigned.
workshop-stack.md. If the stack is defined,
use its ORM/framework syntax in the data model and component structure sections.
If the stack is not yet defined, describe patterns and contracts only
(e.g. say "the data layer exposes a repository interface" — not the specific ORM name).For a BRD entity Appointment with lifecycle
Scheduled → Confirmed → Completed | Cancelled:
### Appointment
| Field | Type | Notes |
|-------------|----------|------------------------------------|
| id | Integer | Primary key |
| patientId | Integer | FK → Patient |
| practitionerId | Integer | FK → Practitioner |
| status | Enum | SCHEDULED, CONFIRMED, COMPLETED, |
| | | CANCELLED |
| scheduledAt | DateTime | |
| createdAt | DateTime | |
Business rules:
- A Referral must exist before status can move to CONFIRMED (FR-005)
- Only the Patient may cancel a SCHEDULED Appointment (FR-006)
- Status transitions: SCHEDULED → CONFIRMED → COMPLETED
SCHEDULED → CANCELLED
sequenceDiagram
participant Patient
participant API
participant DB
Patient->>API: POST /api/appointments
API->>DB: Insert appointment (status=SCHEDULED)
DB-->>API: Appointment record
API-->>Patient: 201 Created (appointment id)
Patient->>API: GET /api/appointments/:id
API->>DB: Fetch appointment
DB-->>API: Appointment record
API-->>Patient: 200 OK (appointment details)
graph TD
subgraph Presentation
FE["Frontend SPA"]
end
subgraph API
AUTH["Auth Middleware"]
ROUTES["API Routes"]
SVC["Service Layer"]
end
subgraph Data
DB[("Relational Database")]
end
FE -->|HTTP/JSON| AUTH
AUTH --> ROUTES
ROUTES --> SVC
SVC --> DB
erDiagram
Patient ||--o{ Appointment : "books"
Practitioner ||--o{ Appointment : "delivers"
Referral ||--o| Appointment : "authorises"
Patient {
int id PK
string name
string email
}
Appointment {
int id PK
int patientId FK
int practitionerId FK
string status
datetime scheduledAt
}
Practitioner {
int id PK
string name
string speciality
}
graph TD
App["App"] --> Layout["Layout"]
Layout --> Nav["NavBar (data-testid=nav-bar)"]
Layout --> Page["AppointmentsPage (data-testid=appointments-page)"]
Page --> List["AppointmentList (data-testid=appointment-list)"]
Page --> Form["AppointmentForm (data-testid=appointment-form)"]
List --> Card["AppointmentCard (data-testid=appointment-card)"]