@rse/ase 0.9.62 → 0.9.64

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dst/ase-artifact.js +19 -8
  2. package/dst/ase-config.js +12 -8
  3. package/dst/ase-hook.js +9 -1
  4. package/dst/ase-service.js +2 -0
  5. package/dst/ase-spec.js +281 -0
  6. package/dst/ase.js +2 -0
  7. package/package.json +10 -8
  8. package/plugin/.claude-plugin/plugin.json +1 -1
  9. package/plugin/.codex-plugin/plugin.json +1 -1
  10. package/plugin/.github/plugin/plugin.json +1 -1
  11. package/plugin/etc/stx.conf +5 -3
  12. package/plugin/meta/ase-format-meta.md +23 -105
  13. package/plugin/meta/ase-format-spec.md +22 -1326
  14. package/plugin/meta/ase-tenets.md +63 -4
  15. package/plugin/package.json +6 -2
  16. package/plugin/skills/ase-arch-analyze/help.md +7 -0
  17. package/plugin/skills/ase-arch-discover/help.md +7 -0
  18. package/plugin/skills/ase-code-analyze/help.md +8 -0
  19. package/plugin/skills/ase-code-craft/help.md +7 -0
  20. package/plugin/skills/ase-code-dissect/help.md +7 -0
  21. package/plugin/skills/ase-code-edit/SKILL.md +14 -9
  22. package/plugin/skills/ase-code-edit/help.md +7 -0
  23. package/plugin/skills/ase-code-explain/help.md +7 -0
  24. package/plugin/skills/ase-code-insight/help.md +7 -0
  25. package/plugin/skills/ase-code-lint/help.md +8 -0
  26. package/plugin/skills/ase-code-refactor/help.md +7 -0
  27. package/plugin/skills/ase-code-resolve/help.md +7 -0
  28. package/plugin/skills/ase-docs-distill/help.md +7 -0
  29. package/plugin/skills/ase-docs-proofread/help.md +7 -0
  30. package/plugin/skills/ase-help-intent/SKILL.md +66 -43
  31. package/plugin/skills/ase-help-intent/help.md +27 -16
  32. package/plugin/skills/ase-help-skill/catalog.md +3 -0
  33. package/plugin/skills/ase-help-skill/help.md +7 -0
  34. package/plugin/skills/ase-meta-brainstorm/help.md +8 -0
  35. package/plugin/skills/ase-meta-changelog/help.md +6 -0
  36. package/plugin/skills/ase-meta-chat/help.md +6 -0
  37. package/plugin/skills/ase-meta-commit/help.md +6 -0
  38. package/plugin/skills/ase-meta-compat/help.md +6 -0
  39. package/plugin/skills/ase-meta-config/help.md +7 -0
  40. package/plugin/skills/ase-meta-diaboli/help.md +7 -0
  41. package/plugin/skills/ase-meta-diff/help.md +7 -0
  42. package/plugin/skills/ase-meta-eli5/help.md +6 -0
  43. package/plugin/skills/ase-meta-evaluate/help.md +7 -0
  44. package/plugin/skills/ase-meta-proximity/help.md +7 -0
  45. package/plugin/skills/ase-meta-quorum/help.md +6 -0
  46. package/plugin/skills/ase-meta-quotes/help.md +7 -0
  47. package/plugin/skills/ase-meta-review/help.md +8 -1
  48. package/plugin/skills/ase-meta-search/help.md +6 -0
  49. package/plugin/skills/ase-meta-steelman/help.md +6 -0
  50. package/plugin/skills/ase-meta-why/help.md +7 -0
  51. package/plugin/skills/ase-meta-workflow/help.md +7 -0
  52. package/plugin/skills/ase-spec-edit/SKILL.md +520 -0
  53. package/plugin/skills/ase-spec-edit/help.md +137 -0
  54. package/plugin/skills/ase-sync-export/SKILL.md +66 -110
  55. package/plugin/skills/ase-sync-export/help.md +43 -40
  56. package/plugin/skills/ase-sync-import/SKILL.md +37 -15
  57. package/plugin/skills/ase-sync-import/help.md +21 -10
  58. package/plugin/skills/ase-sync-reconcile/SKILL.md +37 -16
  59. package/plugin/skills/ase-sync-reconcile/help.md +26 -16
  60. package/plugin/skills/ase-task-condense/help.md +6 -0
  61. package/plugin/skills/ase-task-delete/help.md +6 -0
  62. package/plugin/skills/ase-task-dissect/help.md +7 -0
  63. package/plugin/skills/ase-task-edit/help.md +7 -0
  64. package/plugin/skills/ase-task-grill/SKILL.md +5 -4
  65. package/plugin/skills/ase-task-grill/help.md +7 -0
  66. package/plugin/skills/ase-task-id/help.md +6 -0
  67. package/plugin/skills/ase-task-implement/help.md +7 -0
  68. package/plugin/skills/ase-task-list/help.md +6 -0
  69. package/plugin/skills/ase-task-preflight/help.md +7 -0
  70. package/plugin/skills/ase-task-reboot/help.md +6 -0
  71. package/plugin/skills/ase-task-rename/help.md +6 -0
  72. package/plugin/skills/ase-task-view/help.md +6 -0
  73. package/plugin/meta/ase-format-arch.md +0 -1164
@@ -1,1334 +1,30 @@
1
1
 
2
- @./ase-format-meta.md
2
+ @./ase-format-specbook.md
3
3
 
4
- Specification (SPEC)
5
- ====================
4
+ SpecBook Project Instantiation
5
+ ==============================
6
6
 
7
- The **Artifact Set** **Specification (SPEC)** specifies the "input"
8
- and the "what" of the Software Engineering project.
7
+ - The **SpecBook SCHEMA Model** of this project depends on
8
+ the value of the <ase-spec-schema/> placeholder (holding the
9
+ `project.artifact.spec.schema` configuration value):
9
10
 
10
- Each **Artifact** of the **Artifact Set**
11
- **Specification (SPEC)** is stored under
12
- `<basedir/>/SPEC-<artifact-no/>-<artifact-id/>-<artifact-slug/>.md`,
13
- relative to the project root directory, with <basedir/> being the
14
- `project.artifact.spec.basedir` config variable, <artifact-no/> being
15
- the zero-padded, two-digit sequence number of the **Artifact** (starting
16
- at `01`) according to the order of the **Artifact** list below, and with
17
- <artifact-slug/> being derived from <artifact-name/> (see below) by
18
- Pascal-casing each word (upper-casing its first letter) and using `-`
19
- characters instead of spaces (e.g. `Customer-Journey`).
11
+ - If <ase-spec-schema/> is *empty*:
20
12
 
21
- The **Artifact Set** **Specification (SPEC)** consists of the following
22
- distinct **Artifact**s (listed under their <artifact-name/> and their
23
- <artifact-id/>):
13
+ Then the **SpecBook SCHEMA Model** is the standard YAML
14
+ schema configuration bundled with **ASE** in the file
15
+ `meta/ase-format-specbook.yaml` (relative to the plugin root),
16
+ which you *MUST* read via the `Read` tool before working on the
17
+ specification of the **SpecBook SPEC Model**.
24
18
 
25
- 01. **Solution Vision (SV)**:
26
- The high-level, aspirational description of the solution, capturing
27
- its purpose, value proposition, and the desired future state it aims
28
- to achieve.
19
+ - If <ase-spec-schema/> is *not empty*:
29
20
 
30
- 02. **Personas (PE)**:
31
- The *archetypal* user profiles representing distinct user groups,
32
- capturing their goals, needs, behaviors, and context.
21
+ Then the **SpecBook SCHEMA Model** is the custom YAML schema
22
+ configuration of the project in the file <ase-spec-schema/>
23
+ (relative to the project root), which you *MUST* read via
24
+ the `Read` tool before working on the specification of the
25
+ **SpecBook SPEC Model**.
33
26
 
34
- 03. **Customer Journey (CJ)**:
35
- The end-to-end experience a customer has while discovering, adopting,
36
- and using the solution, mapping their steps, touchpoints, and emotions
37
- over time.
38
-
39
- 04. **Functional Requirements (FR)**:
40
- The concrete behaviors and capabilities the solution must provide,
41
- describing *what* the system does in terms of functions, features, and
42
- operations.
43
-
44
- 05. **Non-Functional Requirements (NR)**:
45
- The quality attributes and constraints the solution must satisfy, such
46
- as performance, security, scalability, reliability, and usability.
47
-
48
- 06. **Business Rules (BR)**:
49
- The domain invariants, policies, and decision logic that must always
50
- hold true in the problem domain, independent of any single feature,
51
- constraining the Functional and Non-Functional Requirements.
52
-
53
- 07. **Data Model (DM)**:
54
- The structure of named entities, named attributes, and named directed
55
- relationships (including a cardinality) of the data the solution
56
- manages, defining how information is organized and connected.
57
-
58
- 08. **State Model (SM)**:
59
- For each entity with a non-trivial lifecycle, the legal states it can
60
- occupy and the permitted transitions between them over its lifetime,
61
- making the forbidden moves as explicit as the allowed ones.
62
-
63
- 09. **Glossary (GL)**:
64
- The ubiquitous language of the domain, defining the meaning of each
65
- domain term in business language, together with its synonyms and the
66
- ambiguities to avoid, shared consistently across all Artifacts.
67
-
68
- 10. **Use Cases (UC)**:
69
- The discrete goals users pursue with the solution, each describing
70
- an actor's interaction to achieve a specific outcome. For each Use
71
- Case, also the concrete step-by-step flows, detailing the sequence
72
- of actions for main, alternative, and exceptional paths.
73
-
74
- 11. **Test Cases (TC)**:
75
- The verifiable conditions and steps used to confirm that requirements
76
- are correctly implemented, with mandatory defined inputs, mandatory
77
- expected outcomes, and optional pre- and post-conditions.
78
-
79
- 12. **Interaction Concept (IC)**:
80
- The overarching idea of how users interact with the solution,
81
- describing the intended workflows and interaction philosophy (e.g.
82
- auto-save behavior).
83
-
84
- 13. **Language Conventions (LC)**:
85
- The terminology, naming, tone, and wording standards used consistently
86
- across the solution and its content.
87
-
88
- 14. **Dialog Patterns (DP)**:
89
- The reusable interaction structures governing how the system and user
90
- exchange information across recurring conversational or UI flows (e.g.
91
- master-detail dialog).
92
-
93
- 15. **Dialog Storyboard (DS)**:
94
- The sequenced visual or textual depiction of a specific dialog flow,
95
- illustrating how an interaction unfolds screen by screen or turn by
96
- turn.
97
-
98
- 16. **Visual Design (VD)**:
99
- The aesthetic and layout aspects of the solution, defining colors,
100
- typography, spacing, imagery, and overall look and feel.
101
-
102
- The **Artifact**s have the following cross-references:
103
-
104
- ```text
105
- SPEC-03-CJ Customer Journey ──(step actor)─► SPEC-02-PE Personas
106
- SPEC-06-BR Business Rules ──(constrains)─► SPEC-04-FR Functional Requirements
107
- SPEC-06-BR Business Rules ──(constrains)─► SPEC-05-NR Non-Functional Requirements
108
- SPEC-08-SM State Model ──(of entity)─► SPEC-07-DM Data Model
109
- SPEC-10-UC Use Cases ──(use case actor)─► SPEC-02-PE Personas
110
- SPEC-10-UC Use Cases ──(realizes)─► SPEC-04-FR Functional Requirements
111
- SPEC-11-TC Test Cases ──(verifies)─► SPEC-04-FR Functional Requirements
112
- SPEC-11-TC Test Cases ──(verifies)─► SPEC-05-NR Non-Functional Requirements
113
- SPEC-15-DS Dialog Storyboard ──(scenario)─► SPEC-10-UC Use Cases
114
- SPEC-15-DS Dialog Storyboard ──(pattern)─► SPEC-14-DP Dialog Patterns
115
- ```
116
-
117
- Solution Vision (SV)
118
- --------------------
119
-
120
- The high-level, aspirational description of the solution, capturing
121
- its purpose, value proposition, and the desired future state it aims
122
- to achieve.
123
-
124
- - Format:
125
-
126
- <format>
127
-
128
- # SPECIFICATION: SOLUTION VISION (SPEC-SV)
129
-
130
- ✳ Created: **<timestamp-created/>**
131
- ✎ Modified: **<timestamp-modified/>**
132
-
133
- <spec-sv-aspect/>
134
- <spec-sv-aspect/>
135
- [...]
136
-
137
- </format>
138
-
139
- - <spec-sv-aspect/> format:
140
-
141
- <format>
142
-
143
- ## ASPECT: <spec-sv-aspect-name/> <a id="SPEC-SV-<spec-sv-aspect-id/>"></a>
144
-
145
- <spec-sv-aspect-statement/>
146
-
147
- </format>
148
-
149
- - <spec-sv-aspect/> details:
150
-
151
- - <spec-sv-aspect-id/>: per-artifact unique "slug" of always 1-3
152
- lower-cased words (concatenated with "-" characters and
153
- in total not longer than 30 characters), derived from
154
- <spec-sv-aspect-name/>.
155
-
156
- - <spec-sv-aspect-name/>: a short (2-5 word) summary of the vision
157
- aspect. The recommended aspects are `Purpose` (why the solution
158
- exists), `Target Audience` (who it serves), `Value Proposition`
159
- (the unique benefit offered), `Differentiators` (how it stands
160
- apart from alternatives), and `Future State` (the desired
161
- outcome once adopted).
162
-
163
- - <spec-sv-aspect-statement/>: a concise paragraph (1-3 sentences)
164
- of prose describing the vision aspect in an aspirational but
165
- unambiguous tone.
166
-
167
- Personas (PE)
168
- -------------
169
-
170
- The *archetypal* user profiles representing distinct user groups,
171
- capturing their goals, needs, behaviors, and context.
172
-
173
- - Format:
174
-
175
- <format>
176
-
177
- # SPECIFICATION: PERSONAS (SPEC-PE)
178
-
179
- ✳ Created: **<timestamp-created/>**
180
- ✎ Modified: **<timestamp-modified/>**
181
-
182
- <spec-pe-persona/>
183
- <spec-pe-persona/>
184
- [...]
185
-
186
- </format>
187
-
188
- - <spec-pe-persona/> format:
189
-
190
- <format>
191
-
192
- ## PERSONA: <spec-pe-persona-name/> <a id="SPEC-PE-<spec-pe-persona-id/>"></a>
193
-
194
- - Gender: <spec-pe-persona-gender/>
195
- - Age: <spec-pe-persona-age/>
196
- - Role: <spec-pe-persona-role/>
197
-
198
- "<spec-pe-persona-quote/>"
199
-
200
- </format>
201
-
202
- - <spec-pe-persona/> details:
203
-
204
- - <spec-pe-persona-id/>: per-artifact unique "slug" of always 1-3
205
- lower-cased words (concatenated with "-" characters and
206
- in total not longer than 30 characters), derived from
207
- <spec-pe-persona-name/>.
208
-
209
- - <spec-pe-persona-name/>: per-artifact unique first name of the fictional
210
- described person.
211
-
212
- - <spec-pe-persona-gender/>: the gender of the persona: `male`,
213
- `female`, or `diverse`.
214
-
215
- - <spec-pe-persona-age/>: the age in years of the persona.
216
-
217
- - <spec-pe-persona-role/>: the role of the persona.
218
-
219
- - <spec-pe-persona-quote/>: a short and bold first-person statement -
220
- written in the persona's own voice - that captures their core
221
- attitude, motivation, frustration, or need in a single memorable line.
222
- It's sometimes called the persona's "tagline," "mantra," or "defining
223
- statement."
224
-
225
- Customer Journey (CJ)
226
- ---------------------
227
-
228
- The end-to-end experience a customer has while discovering, adopting,
229
- and using the solution, mapping their steps, touchpoints, and emotions
230
- over time.
231
-
232
- - Format:
233
-
234
- <format>
235
-
236
- # SPECIFICATION: CUSTOMER JOURNEY (SPEC-CJ)
237
-
238
- ✳ Created: **<timestamp-created/>**
239
- ✎ Modified: **<timestamp-modified/>**
240
-
241
- <spec-cj-step/>
242
- <spec-cj-step/>
243
- [...]
244
-
245
- </format>
246
-
247
- - <spec-cj-step/> format:
248
-
249
- <format>
250
-
251
- ## STEP: <spec-cj-step-name/> <a id="SPEC-CJ-<spec-cj-step-id/>"></a>
252
-
253
- - Stage: <spec-cj-step-stage/>
254
- - Actor: <spec-cj-step-actor/>
255
- - Goal: <spec-cj-step-goal/>
256
- - Touchpoint: <spec-cj-step-touchpoint/>
257
- - Action: <spec-cj-step-action/>
258
- - Emotion: <spec-cj-step-emotion/>
259
- - Pain Point: <spec-cj-step-painpoint/>
260
-
261
- </format>
262
-
263
- - <spec-cj-step/> details:
264
-
265
- - <spec-cj-step-id/>: per-artifact unique "slug" of always 1-3
266
- lower-cased words (concatenated with "-" characters and
267
- in total not longer than 30 characters), derived from
268
- <spec-cj-step-name/>.
269
-
270
- - <spec-cj-step-name/> is a summary (5-10 words) of the *step* at its
271
- <spec-cj-step-touchpoint/>.
272
-
273
- - <spec-cj-step-stage/> is one of:
274
-
275
- - `Awareness`: Customer is not aware of the solution, but has a need.
276
- - `Consideration`: Customer is aware of the solution, and should consider its use.
277
- - `Decision`: Customer wants to pick the solution.
278
- - `Onboarding`: Customer is using the solution.
279
- - `Retention`: Customer in the long term stays a customer.
280
- - `Advocacy`: Customer is a fan of the solution and tells the tribe.
281
-
282
- - <spec-cj-step-actor/> is a `SPEC-PE-<spec-pe-persona-id/>` reference to the
283
- corresponding **Aspect** of the Personas **Artifact**.
284
-
285
- - <spec-cj-step-goal/> is what the actor wants to achieve at this step.
286
-
287
- - <spec-cj-step-touchpoint/> is where or how the interaction happens
288
- (e.g. landing page, email, support call).
289
-
290
- - <spec-cj-step-action/> is what the actor actually does at this step.
291
-
292
- - <spec-cj-step-emotion/> is the **AS IS** felt state at this step, given
293
- as a word plus an intensity on a 1-5 Likert scale (e.g. `Curious (4)`).
294
-
295
- - <spec-cj-step-painpoint/> is the **AS IS** friction or frustration the
296
- actor encounters at this step (optional).
297
-
298
- - In case a <spec-cj-step/> has no pain point at all, the
299
- entire `- Pain Point:` bullet point is omitted.
300
-
301
- Functional Requirements (FR)
302
- ----------------------------
303
-
304
- The concrete behaviors and capabilities the solution must provide,
305
- describing *what* the system does in terms of functions, features, and
306
- operations.
307
-
308
- - Format:
309
-
310
- <format>
311
-
312
- # SPECIFICATION: FUNCTIONAL REQUIREMENTS (SPEC-FR)
313
-
314
- ✳ Created: **<timestamp-created/>**
315
- ✎ Modified: **<timestamp-modified/>**
316
-
317
- <spec-fr-requirement/>
318
- <spec-fr-requirement/>
319
- [...]
320
-
321
- </format>
322
-
323
- - <spec-fr-requirement/> format:
324
-
325
- <format>
326
-
327
- ## REQUIREMENT: <spec-fr-requirement-name/> <a id="SPEC-FR-<spec-fr-requirement-id/>"></a>
328
-
329
- - Priority: <spec-fr-requirement-priority/>
330
-
331
- <spec-fr-requirement-statement/>,
332
- **BECAUSE** <spec-fr-requirement-rationale/>.
333
-
334
- </format>
335
-
336
- - <spec-fr-requirement/> details:
337
-
338
- - <spec-fr-requirement-id/>: per-artifact unique "slug" of always
339
- 1-3 lower-cased words (concatenated with "-" characters and
340
- in total not longer than 30 characters), derived from
341
- <spec-fr-requirement-name/>.
342
-
343
- - <spec-fr-requirement-name/>: a short (3-8 word) summary of the
344
- functional requirement.
345
-
346
- - <spec-fr-requirement-priority/>: the MoSCoW priority of the
347
- requirement: `MUST`, `SHOULD`, `COULD`, or `WONT`. The `WONT`
348
- priority records a requirement deliberately excluded from the
349
- current scope ("won't have this time"), preserving the conscious
350
- decision rather than silently dropping it.
351
-
352
- - <spec-fr-requirement-statement/>: a concise paragraph (1-3
353
- sentences) of prose describing *what* the solution must do,
354
- written with the keyword `MUST`, `SHOULD`, `COULD`, or `WONT`
355
- to indicate the obligation level.
356
-
357
- - <spec-fr-requirement-rationale/>: the 1-sentence rationale ("why")
358
- of the functional requirement.
359
-
360
- - In case the rationale is not present, the
361
- entire `, **BECAUSE** [...]` clause is omitted.
362
-
363
- Non-Functional Requirements (NR)
364
- --------------------------------
365
-
366
- The quality attributes and constraints the solution must satisfy, such
367
- as performance, security, scalability, reliability, and usability.
368
-
369
- - Format:
370
-
371
- <format>
372
-
373
- # SPECIFICATION: NON-FUNCTIONAL REQUIREMENTS (SPEC-NR)
374
-
375
- ✳ Created: **<timestamp-created/>**
376
- ✎ Modified: **<timestamp-modified/>**
377
-
378
- <spec-nr-requirement/>
379
- <spec-nr-requirement/>
380
- [...]
381
-
382
- </format>
383
-
384
- - <spec-nr-requirement/> format:
385
-
386
- <format>
387
-
388
- ## REQUIREMENT: <spec-nr-requirement-name/> <a id="SPEC-NR-<spec-nr-requirement-id/>"></a>
389
-
390
- - Priority: <spec-nr-requirement-priority/>
391
- - Category: <spec-nr-requirement-category/>
392
-
393
- <spec-nr-requirement-statement/>,
394
- **BECAUSE** <spec-nr-requirement-rationale/>.
395
-
396
- </format>
397
-
398
- - <spec-nr-requirement/> details:
399
-
400
- - <spec-nr-requirement-id/>: per-artifact unique "slug" of always
401
- 1-3 lower-cased words (concatenated with "-" characters and
402
- in total not longer than 30 characters), derived from
403
- <spec-nr-requirement-name/>.
404
-
405
- - <spec-nr-requirement-name/>: a short (3-8 word) summary of the
406
- non-functional requirement.
407
-
408
- - <spec-nr-requirement-priority/>: the MoSCoW priority of the
409
- requirement: `MUST`, `SHOULD`, `COULD`, or `WONT`. The `WONT`
410
- priority records a requirement deliberately excluded from the
411
- current scope ("won't have this time"), preserving the conscious
412
- decision rather than silently dropping it.
413
-
414
- - <spec-nr-requirement-category/>: the quality attribute category
415
- the requirement addresses, one of `Performance`,
416
- `Compatibility`, `Usability`, `Reliability`, `Security`,
417
- `Safety`, `Maintainability`, `Flexibility`, and `Compliance`,
418
- according to the top-level characteristics in the ISO/IEC
419
- 25010:2023 Software-Quality Model (except for `Functional
420
- Suitability` which is described by our Functional Requirements
421
- (FR)).
422
-
423
- - <spec-nr-requirement-statement/>: a concise paragraph (1-3
424
- sentences) of prose describing the quality attribute or
425
- constraint the solution must satisfy. It especially *MUST*
426
- contain a *METRIC* within the <spec-nr-requirement-category/>,
427
- which (according to the SMART principle) is the *specific*,
428
- *measurable*, *achievable*, *relevant* and *time-bound*
429
- threshold or target by which the requirement is judged satisfied
430
- (e.g. `p95 latency < 200ms`, `99.9% uptime`).
431
-
432
- - <spec-nr-requirement-rationale/>: the 1-sentence rationale ("why")
433
- of the non-functional requirement.
434
-
435
- - In case the rationale is not present, the
436
- entire `, **BECAUSE** [...]` clause is omitted.
437
-
438
- Business Rules (BR)
439
- -------------------
440
-
441
- The domain invariants, policies, and decision logic that must always
442
- hold true in the problem domain, independent of any single feature,
443
- constraining the Functional and Non-Functional Requirements.
444
-
445
- - Format:
446
-
447
- <format>
448
-
449
- # SPECIFICATION: BUSINESS RULES (SPEC-BR)
450
-
451
- ✳ Created: **<timestamp-created/>**
452
- ✎ Modified: **<timestamp-modified/>**
453
-
454
- <spec-br-rule/>
455
- <spec-br-rule/>
456
- [...]
457
-
458
- </format>
459
-
460
- - <spec-br-rule/> format:
461
-
462
- <format>
463
-
464
- ## RULE: <spec-br-rule-name/> <a id="SPEC-BR-<spec-br-rule-id/>"></a>
465
-
466
- - Category: <spec-br-rule-category/>
467
- - Constrains: <spec-br-rule-constrains/>
468
-
469
- <spec-br-rule-statement/>,
470
- **BECAUSE** <spec-br-rule-rationale/>.
471
-
472
- </format>
473
-
474
- - <spec-br-rule/> details:
475
-
476
- - <spec-br-rule-id/>: per-artifact unique "slug" of always 1-3
477
- lower-cased words (concatenated with "-" characters and
478
- in total not longer than 30 characters), derived from
479
- <spec-br-rule-name/>.
480
-
481
- - <spec-br-rule-name/>: a short (3-8 word) summary of the business
482
- rule.
483
-
484
- - <spec-br-rule-category/>: the kind of rule, one of `Invariant`
485
- (a condition that must always hold), `Constraint` (a limit on
486
- allowed values or actions), `Derivation` (a value computed from
487
- others), or `Policy` (a deliberate business decision or
488
- guideline).
489
-
490
- - <spec-br-rule-constrains/>: a comma-separated list of zero or more
491
- `SPEC-FR-<spec-fr-requirement-id/>` or
492
- `SPEC-NR-<spec-nr-requirement-id/>` references to the
493
- corresponding **Aspect**s of the Functional or Non-Functional
494
- Requirements **Artifact** the rule constrains.
495
-
496
- - <spec-br-rule-statement/>: a concise paragraph (1-3 sentences) of
497
- prose stating the rule declaratively as a condition that must
498
- hold, written with the keyword `MUST`, `SHOULD`, or `MUST NOT`
499
- to indicate the obligation level, and naming the domain terms it
500
- governs (defined in the Glossary **Artifact**).
501
-
502
- - <spec-br-rule-rationale/>: the 1-sentence rationale ("why") of the
503
- business rule.
504
-
505
- - In case the rule constrains no specific requirement, the
506
- entire `- Constrains:` bullet point is omitted.
507
-
508
- - In case the rationale is not present, the
509
- entire `, **BECAUSE** [...]` clause is omitted.
510
-
511
- Data Model (DM)
512
- ---------------
513
-
514
- The structure of named entities, named attributes, and named directed
515
- relationships (including a cardinality) of the data the solution
516
- manages, defining how information is organized and connected.
517
-
518
- - Format:
519
-
520
- <format>
521
-
522
- # SPECIFICATION: DATA MODEL (SPEC-DM)
523
-
524
- ✳ Created: **<timestamp-created/>**
525
- ✎ Modified: **<timestamp-modified/>**
526
-
527
- <spec-dm-entity/>
528
- <spec-dm-entity/>
529
- [...]
530
-
531
- </format>
532
-
533
- - <spec-dm-entity/> format:
534
-
535
- <format>
536
-
537
- ## ENTITY: `<spec-dm-entity-name/>` <a id="SPEC-DM-<spec-dm-entity-id/>"></a>
538
-
539
- <spec-dm-entity-description/>,
540
- **BECAUSE** <spec-dm-entity-rationale/>.
541
-
542
- ### ATTRIBUTES
543
-
544
- - `<spec-dm-attribute-id/>`: `<spec-dm-attribute-qualifier/><spec-dm-attribute-type/>`:<br/>
545
- <spec-dm-attribute-description/>,
546
- **BECAUSE** <spec-dm-attribute-rationale/>.
547
-
548
- - [...]
549
-
550
- ### RELATIONS
551
-
552
- - `<spec-dm-relation-id/>`: [`<spec-dm-relation-target/>`](#SPEC-DM-<spec-dm-relation-target-id/>)(`<spec-dm-relation-cardinality/>`):<br/>
553
- <spec-dm-relation-description/>,
554
- **BECAUSE** <spec-dm-relation-rationale/>.
555
-
556
- - [...]
557
-
558
- </format>
559
-
560
- - <spec-dm-entity/> details:
561
-
562
- - <spec-dm-entity-id/>: per-artifact unique "slug" of always 1-3
563
- lower-cased words (concatenated with "-" characters and
564
- in total not longer than 30 characters), derived from
565
- <spec-dm-entity-name/>.
566
-
567
- - <spec-dm-entity-name/>: Pascal-cased, 1-3 word long, per-artifact
568
- unique name of the entity.
569
-
570
- - <spec-dm-entity-description/>: the 1-sentence description ("what")
571
- of the entity.
572
-
573
- - <spec-dm-entity-rationale/>: the 1-sentence rationale ("why") of
574
- the entity.
575
-
576
- - <spec-dm-attribute-id/>: camel-cased, 1-3 word long, per-entity
577
- unique identifier of the entity attribute.
578
-
579
- - <spec-dm-attribute-qualifier/>: the optional prefix `unique `
580
- to indicate inclusion into the primary key of the entity.
581
-
582
- - <spec-dm-attribute-type/>: the type of the entity attribute:
583
- `boolean`, `integer`, `float`, `uuid`, `string`, `bytes`,
584
- `enum(XXX,YYY[,...])`, `date`, `time`, or `datetime`.
585
-
586
- - <spec-dm-attribute-description/>: the 1-sentence description
587
- ("what") of the entity attribute.
588
-
589
- - <spec-dm-attribute-rationale/>: the 1-sentence rationale ("why")
590
- of the entity attribute.
591
-
592
- - <spec-dm-relation-id/>: camel-cased, 1-3 word long, per-entity
593
- unique identifier of the entity relation.
594
-
595
- - <spec-dm-relation-description/>: the 1-sentence description
596
- ("what") of the entity relation.
597
-
598
- - <spec-dm-relation-rationale/>: the 1-sentence rationale ("why") of
599
- the entity relation.
600
-
601
- - <spec-dm-relation-target/>: the <spec-dm-entity-name/> of the
602
- entity the directed relation targets.
603
-
604
- - <spec-dm-relation-target-id/>: the <spec-dm-entity-id/> of the
605
- entity the directed relation targets.
606
-
607
- - <spec-dm-relation-cardinality/>: the cardinality of the entity
608
- relation at the target entity: `0..1` for zero or one
609
- ("optional"), `1` for exactly one ("mandatory"), `0..n` for
610
- zero or more, and `1..n` for one or more.
611
-
612
- - In case a <spec-dm-entity/> has no relations at all, the
613
- entire `### RELATIONS` block is omitted.
614
-
615
- - In case any rationale is not present, the
616
- entire `, **BECAUSE** [...]` clause is omitted.
617
-
618
- - Export: `export.md`
619
-
620
- The entities, their attributes and their relations
621
- are rendered as Markdown tables.
622
-
623
- For this, each <spec-dm-entity/> becomes:
624
-
625
- <format>
626
-
627
- ## ENTITY: <a id="SPEC-DM-<spec-dm-entity-id/>"><spec-dm-entity-name/></a>
628
-
629
- <spec-dm-entity-description/>,
630
- **BECAUSE** <spec-dm-entity-rationale/>.
631
-
632
- ### ATTRIBUTES
633
-
634
- <export-table-1/>
635
-
636
- ### RELATIONS
637
-
638
- <export-table-2/>
639
-
640
- </format>
641
-
642
- With:
643
-
644
- - <export-table-1/> is a Markdown table for the attributes with one
645
- row per <spec-dm-attribute-id/>, sorted by <spec-dm-attribute-id/>
646
- -- with the columns:
647
-
648
- - `Attribute` (`**<spec-dm-attribute-id/>**`)
649
- - `Type` (`<spec-dm-attribute-qualifier/><spec-dm-attribute-type/>`)
650
- - `Description` (`<spec-dm-attribute-description/>, **BECAUSE** <spec-dm-attribute-rationale/>.`)
651
-
652
- - <export-table-2/> is a Markdown table for the relations with one
653
- row per <spec-dm-relation-id/>, sorted by <spec-dm-relation-id/> --
654
- with the columns:
655
-
656
- - `Relation` (`**<spec-dm-relation-id/>**`)
657
- - `Target` (`[<spec-dm-relation-target/>](#SPEC-DM-<spec-dm-relation-target-id/>) (<spec-dm-relation-cardinality/>)`)
658
- - `Description` (`<spec-dm-relation-description/>, **BECAUSE** <spec-dm-relation-rationale/>.`)
659
-
660
- - In case a <spec-dm-entity/> has no relations at all, the
661
- entire `### RELATIONS` block (including <export-table-2/>) is omitted.
662
-
663
- - Export: `export.svg`
664
-
665
- The entities, their attributes and their relations are
666
- rendered as a Mermaid `classDiagram` UML diagram and
667
- converted to SVG. For this, each <spec-dm-entity/> becomes
668
- a class whose members are the `<spec-dm-attribute-id/>:
669
- <spec-dm-attribute-qualifier/><spec-dm-attribute-type/>` attributes,
670
- and each <spec-dm-relation-id/> becomes a directed association
671
- labeled with its <spec-dm-relation-id/> and annotated with its
672
- <spec-dm-relation-cardinality/> at the target end.
673
-
674
- State Model (SM)
675
- ----------------
676
-
677
- For each entity with a non-trivial lifecycle, the legal states it can
678
- occupy and the permitted transitions between them over its lifetime,
679
- making the forbidden moves as explicit as the allowed ones.
680
-
681
- - Format:
682
-
683
- <format>
684
-
685
- # SPECIFICATION: STATE MODEL (SPEC-SM)
686
-
687
- ✳ Created: **<timestamp-created/>**
688
- ✎ Modified: **<timestamp-modified/>**
689
-
690
- <spec-sm-lifecycle/>
691
- <spec-sm-lifecycle/>
692
- [...]
693
-
694
- </format>
695
-
696
- - <spec-sm-lifecycle/> format:
697
-
698
- <format>
699
-
700
- ## LIFECYCLE: <spec-sm-lifecycle-name/> <a id="SPEC-SM-<spec-sm-lifecycle-id/>"></a>
701
-
702
- - Entity: <spec-sm-lifecycle-entity/>
703
- - Initial: <spec-sm-lifecycle-initial/>
704
- - Final: <spec-sm-lifecycle-final/>
705
-
706
- ### STATES
707
-
708
- - `<spec-sm-state-name/>`:
709
- <spec-sm-state-description/>.
710
-
711
- - [...]
712
-
713
- ### TRANSITIONS
714
-
715
- - `<spec-sm-transition-from/>` ─(<spec-sm-transition-event/>)─► `<spec-sm-transition-to/>`:
716
- <spec-sm-transition-effect/>,
717
- **WHEN** <spec-sm-transition-guard/>.
718
-
719
- - [...]
720
-
721
- </format>
722
-
723
- - <spec-sm-lifecycle/> details:
724
-
725
- - <spec-sm-lifecycle-id/>: per-artifact unique "slug" of always 1-3
726
- lower-cased words (concatenated with "-" characters and
727
- in total not longer than 30 characters), derived from
728
- <spec-sm-lifecycle-name/>.
729
-
730
- - <spec-sm-lifecycle-name/>: a short (1-3 word) name of the lifecycle,
731
- normally the name of the entity it governs.
732
-
733
- - <spec-sm-lifecycle-entity/> is a `SPEC-DM-<spec-dm-entity-id/>`
734
- reference to the corresponding **Aspect** of the Data Model
735
- **Artifact** whose lifecycle this models.
736
-
737
- - <spec-sm-lifecycle-initial/>: the <spec-sm-state-name/> of the
738
- single state every instance of the entity enters upon creation.
739
-
740
- - <spec-sm-lifecycle-final/>: a comma-separated list of one or more
741
- <spec-sm-state-name/>s in which the entity may legally come to
742
- rest permanently (terminal states).
743
-
744
- - <spec-sm-state-name/>: a short, Pascal-cased, per-lifecycle unique
745
- name of one state the entity can occupy (e.g. `Draft`,
746
- `Shipped`).
747
-
748
- - <spec-sm-state-description/>: the 1-sentence description ("what
749
- holds true") of the state.
750
-
751
- - <spec-sm-transition-from/>: the <spec-sm-state-name/> the
752
- transition departs from.
753
-
754
- - <spec-sm-transition-to/>: the <spec-sm-state-name/> the transition
755
- arrives at.
756
-
757
- - <spec-sm-transition-event/>: a short, lower-cased verb naming the
758
- event or action that triggers the transition (e.g. `submit`,
759
- `ship`, `cancel`).
760
-
761
- - <spec-sm-transition-effect/>: the 1-sentence description ("what
762
- happens") of the side effect the transition produces.
763
-
764
- - <spec-sm-transition-guard/>: the condition that must hold for the
765
- transition to be permitted; any move not listed as a transition
766
- is implicitly forbidden.
767
-
768
- - Every <spec-sm-state-name/> used in a transition *MUST* be
769
- declared in the `### STATES` block, and every state with no
770
- outgoing transition *MUST* be listed in <spec-sm-lifecycle-final/>
771
- (a state with no outgoing transition that is not final would be a
772
- stuck dead-end). The converse does *not* hold: a
773
- <spec-sm-lifecycle-final/> state *MAY* still have outgoing
774
- transitions, modeling a resting state that can later be left again
775
- (e.g. a `Closed` state with a `reopen` transition back to
776
- `Active`). Thus <spec-sm-lifecycle-final/> designates the states in
777
- which the entity may legally come to rest, which is a superset of,
778
- but not necessarily equal to, the set of declared states that have
779
- no outgoing transition.
780
-
781
- - In case a transition has no side effect, the
782
- entire `<spec-sm-transition-effect/>,` clause is omitted.
783
-
784
- - In case a transition has no guard, the
785
- entire `, **WHEN** [...]` clause is omitted.
786
-
787
- Glossary (GL)
788
- -------------
789
-
790
- The ubiquitous language of the domain, defining the meaning of each
791
- domain term in business language, together with its synonyms and the
792
- ambiguities to avoid, shared consistently across all Artifacts.
793
-
794
- - Format:
795
-
796
- <format>
797
-
798
- # SPECIFICATION: GLOSSARY (SPEC-GL)
799
-
800
- ✳ Created: **<timestamp-created/>**
801
- ✎ Modified: **<timestamp-modified/>**
802
-
803
- <spec-gl-term/>
804
- <spec-gl-term/>
805
- [...]
806
-
807
- </format>
808
-
809
- - <spec-gl-term/> format:
810
-
811
- <format>
812
-
813
- ## TERM: <spec-gl-term-name/> <a id="SPEC-GL-<spec-gl-term-id/>"></a>
814
-
815
- - Synonyms: <spec-gl-term-synonyms/>
816
-
817
- <spec-gl-term-definition/>
818
-
819
- </format>
820
-
821
- - <spec-gl-term/> details:
822
-
823
- - <spec-gl-term-id/>: per-artifact unique "slug" of always 1-3
824
- lower-cased words (concatenated with "-" characters and
825
- in total not longer than 30 characters), derived from
826
- <spec-gl-term-name/>.
827
-
828
- - <spec-gl-term-name/>: the canonical, preferred name of the domain
829
- term, capitalized as it should appear in all Artifacts.
830
-
831
- - <spec-gl-term-synonyms/>: a comma-separated list of one or more
832
- alternative names or abbreviations that refer to the same term
833
- but are *not* the preferred form.
834
-
835
- - <spec-gl-term-definition/>: a concise paragraph (1-3 sentences) of
836
- prose defining the term in business language, independent of any
837
- implementation, and referencing other terms by their
838
- <spec-gl-term-name/> where helpful.
839
-
840
- - In case a term has no synonyms, the
841
- entire `- Synonyms:` bullet point is omitted.
842
-
843
- Use Cases (UC)
844
- --------------
845
-
846
- The discrete goals users pursue with the solution, each describing an
847
- actor's interaction to achieve a specific outcome. For each Use Case,
848
- also the concrete step-by-step flows, detailing the sequence of actions
849
- for main, alternative, and exceptional paths.
850
-
851
- - Format:
852
-
853
- <format>
854
-
855
- # SPECIFICATION: USE CASES (SPEC-UC)
856
-
857
- ✳ Created: **<timestamp-created/>**
858
- ✎ Modified: **<timestamp-modified/>**
859
-
860
- <spec-uc-usecase/>
861
- <spec-uc-usecase/>
862
- [...]
863
-
864
- </format>
865
-
866
- - <spec-uc-usecase/> format:
867
-
868
- <format>
869
-
870
- ## USE CASE: <spec-uc-usecase-name/> <a id="SPEC-UC-<spec-uc-usecase-id/>"></a>
871
-
872
- - Actor: <spec-uc-usecase-actor/>
873
- - Requirements: <spec-uc-usecase-requirements/>
874
- - Goal: <spec-uc-usecase-goal/>
875
- - Pre-Condition: <spec-uc-usecase-precondition/>
876
- - Post-Condition: <spec-uc-usecase-postcondition/>
877
-
878
- <spec-uc-usecase-description/>
879
-
880
- <spec-uc-usecase-scenario/>
881
- <spec-uc-usecase-scenario/>
882
- [...]
883
-
884
- </format>
885
-
886
- - <spec-uc-usecase/> details:
887
-
888
- - <spec-uc-usecase-id/>: per-artifact unique "slug" of always 1-3
889
- lower-cased words (concatenated with "-" characters and
890
- in total not longer than 30 characters), derived from
891
- <spec-uc-usecase-name/>.
892
-
893
- - <spec-uc-usecase-name/>: a short (3-8 word) summary of the use
894
- case, phrased as an actor goal (e.g. `Reset Forgotten Password`).
895
-
896
- - <spec-uc-usecase-actor/> is a `SPEC-PE-<spec-pe-persona-id/>`
897
- reference to the corresponding **Aspect** of the Personas
898
- **Artifact**, denoting the primary actor pursuing the goal.
899
-
900
- - <spec-uc-usecase-requirements/> is a comma-separated list of one
901
- or more `SPEC-FR-<spec-fr-requirement-id/>` references to the
902
- corresponding **Aspect**s of the Functional Requirements
903
- **Artifact** the use case realizes.
904
-
905
- - <spec-uc-usecase-goal/>: the 1-sentence statement of what the
906
- actor wants to achieve through this use case.
907
-
908
- - <spec-uc-usecase-precondition/>: the condition that must hold
909
- before the use case can begin.
910
-
911
- - <spec-uc-usecase-postcondition/>: the condition that holds after
912
- the use case completes successfully.
913
-
914
- - <spec-uc-usecase-description/>: a concise paragraph (1-3
915
- sentences) of prose describing the use case at a glance, without
916
- prescribing the step-by-step flow (which belongs to the
917
- **SCENARIO** blocks of this use case).
918
-
919
- - In case the use case realizes no specific functional requirement,
920
- the entire `- Requirements:` bullet point is omitted.
921
-
922
- - In case a precondition or postcondition is not present, the
923
- respective bullet point is omitted.
924
-
925
- - <spec-uc-usecase-scenario/> format:
926
-
927
- <format>
928
-
929
- ### SCENARIO: <spec-uc-usecase-scenario-name/> (<spec-uc-usecase-scenario-type/>) <a id="SPEC-UC-<spec-uc-usecase-id/>-<spec-uc-usecase-scenario-id/>"></a>
930
-
931
- 1. <spec-uc-usecase-scenario-step/>
932
- 2. <spec-uc-usecase-scenario-step/>
933
- [...]
934
-
935
- </format>
936
-
937
- - <spec-uc-usecase-scenario/> details:
938
-
939
- - <spec-uc-usecase-scenario-id/>: per-use-case unique "slug" of
940
- always 1-3 lower-cased words (concatenated with "-" characters
941
- and in total not longer than 30 characters), derived from
942
- <spec-uc-usecase-scenario-name/>.
943
-
944
- - <spec-uc-usecase-scenario-name/>: a short (3-8 word) summary of the
945
- scenario.
946
-
947
- - <spec-uc-usecase-scenario-type/>: the path the scenario represents, one
948
- of `Main` (the primary, happy-path flow), `Alternative` (a
949
- valid but secondary flow), or `Exceptional` (an error or
950
- failure-handling flow).
951
-
952
- - <spec-uc-usecase-scenario-step/>: a single, imperative step in the flow,
953
- naming the acting party (actor or system) and the action taken
954
- (e.g. `The user submits the login form.`). Steps are numbered
955
- sequentially to convey their order.
956
-
957
- Test Cases (TC)
958
- ---------------
959
-
960
- The verifiable conditions and steps used to confirm that requirements
961
- are correctly implemented, with mandatory defined inputs, mandatory
962
- expected outcomes, and optional pre- and post-conditions.
963
-
964
- - Format:
965
-
966
- <format>
967
-
968
- # SPECIFICATION: TEST CASES (SPEC-TC)
969
-
970
- ✳ Created: **<timestamp-created/>**
971
- ✎ Modified: **<timestamp-modified/>**
972
-
973
- <spec-tc-testcase/>
974
- <spec-tc-testcase/>
975
- [...]
976
-
977
- </format>
978
-
979
- - <spec-tc-testcase/> format:
980
-
981
- <format>
982
-
983
- ## TEST CASE: <spec-tc-testcase-name/> <a id="SPEC-TC-<spec-tc-testcase-id/>"></a>
984
-
985
- - Verifies: <spec-tc-testcase-verifies/>
986
- - Pre-Condition: <spec-tc-testcase-precondition/>
987
- - Input: <spec-tc-testcase-input/>
988
- - Expected: <spec-tc-testcase-expected/>
989
- - Post-Condition: <spec-tc-testcase-postcondition/>
990
-
991
- </format>
992
-
993
- - <spec-tc-testcase/> details:
994
-
995
- - <spec-tc-testcase-id/>: per-artifact unique "slug" of always 1-3
996
- lower-cased words (concatenated with "-" characters and
997
- in total not longer than 30 characters), derived from
998
- <spec-tc-testcase-name/>.
999
-
1000
- - <spec-tc-testcase-name/>: a short (3-8 word) summary of the test
1001
- case.
1002
-
1003
- - <spec-tc-testcase-verifies/> is a `SPEC-FR-<spec-fr-requirement-id/>`
1004
- or `SPEC-NR-<spec-nr-requirement-id/>` reference to the
1005
- corresponding **Aspect** of the Functional Requirements or
1006
- Non-Functional Requirements **Artifact** the test case verifies.
1007
-
1008
- - <spec-tc-testcase-precondition/>: the state or setup that must
1009
- hold before the test is executed (optional).
1010
-
1011
- - <spec-tc-testcase-input/>: the mandatory, concrete input data or
1012
- actions applied during the test.
1013
-
1014
- - <spec-tc-testcase-expected/>: the mandatory, concrete expected
1015
- outcome or observable result that defines a passing test.
1016
-
1017
- - <spec-tc-testcase-postcondition/>: the state that must hold after
1018
- the test completes (optional).
1019
-
1020
- - In case a pre-condition or post-condition is not present, the
1021
- respective bullet point is omitted.
1022
-
1023
- Interaction Concept (IC)
1024
- ------------------------
1025
-
1026
- The overarching idea of how users interact with the solution,
1027
- describing the intended workflows and interaction philosophy (e.g.
1028
- auto-save behavior).
1029
-
1030
- - Format:
1031
-
1032
- <format>
1033
-
1034
- # SPECIFICATION: INTERACTION CONCEPT (SPEC-IC)
1035
-
1036
- ✳ Created: **<timestamp-created/>**
1037
- ✎ Modified: **<timestamp-modified/>**
1038
-
1039
- <spec-ic-principle/>
1040
- <spec-ic-principle/>
1041
- [...]
1042
-
1043
- </format>
1044
-
1045
- - <spec-ic-principle/> format:
1046
-
1047
- <format>
1048
-
1049
- ## PRINCIPLE: <spec-ic-principle-name/> <a id="SPEC-IC-<spec-ic-principle-id/>"></a>
1050
-
1051
- <spec-ic-principle-statement/>,
1052
- **BECAUSE** <spec-ic-principle-rationale/>.
1053
-
1054
- </format>
1055
-
1056
- - <spec-ic-principle/> details:
1057
-
1058
- - <spec-ic-principle-id/>: per-artifact unique "slug" of always 1-3
1059
- lower-cased words (concatenated with "-" characters and
1060
- in total not longer than 30 characters), derived from
1061
- <spec-ic-principle-name/>.
1062
-
1063
- - <spec-ic-principle-name/>: a short (2-5 word) summary of the
1064
- interaction principle (e.g. `Auto-Save`, `Optimistic Updates`,
1065
- `Undo over Confirm`).
1066
-
1067
- - <spec-ic-principle-statement/>: a concise paragraph (1-3
1068
- sentences) of prose describing the interaction principle and how
1069
- it governs the user's experience across the solution.
1070
-
1071
- - <spec-ic-principle-rationale/>: the 1-sentence rationale ("why")
1072
- of the interaction principle.
1073
-
1074
- - In case the rationale is not present, the
1075
- entire `, **BECAUSE** [...]` clause is omitted.
1076
-
1077
- Language Conventions (LC)
1078
- -------------------------
1079
-
1080
- The terminology, naming, tone, and wording standards used consistently
1081
- across the solution and its content.
1082
-
1083
- - Format:
1084
-
1085
- <format>
1086
-
1087
- # SPECIFICATION: LANGUAGE CONVENTIONS (SPEC-LC)
1088
-
1089
- ✳ Created: **<timestamp-created/>**
1090
- ✎ Modified: **<timestamp-modified/>**
1091
-
1092
- <spec-lc-convention/>
1093
- <spec-lc-convention/>
1094
- [...]
1095
-
1096
- </format>
1097
-
1098
- - <spec-lc-convention/> format:
1099
-
1100
- <format>
1101
-
1102
- ## CONVENTION: <spec-lc-convention-name/> <a id="SPEC-LC-<spec-lc-convention-id/>"></a>
1103
-
1104
- - Category: <spec-lc-convention-category/>
1105
-
1106
- <spec-lc-convention-statement/>
1107
- (e.g. <spec-lc-convention-example/>)
1108
-
1109
- </format>
1110
-
1111
- - <spec-lc-convention/> details:
1112
-
1113
- - <spec-lc-convention-id/>: per-artifact unique "slug" of always
1114
- 1-3 lower-cased words (concatenated with "-" characters and
1115
- in total not longer than 30 characters), derived from
1116
- <spec-lc-convention-name/>.
1117
-
1118
- - <spec-lc-convention-name/>: a short (2-5 word) summary of the
1119
- language convention.
1120
-
1121
- - <spec-lc-convention-category/>: the aspect of language the
1122
- convention governs, one of `Terminology` (preferred and
1123
- forbidden terms), `Naming` (naming patterns), `Tone` (voice and
1124
- register), `Capitalization`, `Punctuation`, or `Formatting`.
1125
-
1126
- - <spec-lc-convention-statement/>: a concise paragraph (1-3
1127
- sentences) of prose describing the convention to be applied
1128
- consistently across the solution.
1129
-
1130
- - <spec-lc-convention-example/>: a short, concrete illustration of
1131
- the convention in practice (optional).
1132
-
1133
- - In case the example is not present, the
1134
- entire `(e.g. [...])` chunk is omitted.
1135
-
1136
- Dialog Patterns (DP)
1137
- --------------------
1138
-
1139
- The reusable interaction structures governing how the system and user
1140
- exchange information across recurring conversational or UI flows (e.g.
1141
- master-detail dialog).
1142
-
1143
- - Format:
1144
-
1145
- <format>
1146
-
1147
- # SPECIFICATION: DIALOG PATTERNS (SPEC-DP)
1148
-
1149
- ✳ Created: **<timestamp-created/>**
1150
- ✎ Modified: **<timestamp-modified/>**
1151
-
1152
- <spec-dp-pattern/>
1153
- <spec-dp-pattern/>
1154
- [...]
1155
-
1156
- </format>
1157
-
1158
- - <spec-dp-pattern/> format:
1159
-
1160
- <format>
1161
-
1162
- ## PATTERN: <spec-dp-pattern-name/> <a id="SPEC-DP-<spec-dp-pattern-id/>"></a>
1163
-
1164
- - Context: <spec-dp-pattern-context/>
1165
- - Problem: <spec-dp-pattern-problem/>
1166
-
1167
- <spec-dp-pattern-description/>,
1168
- **BECAUSE** <spec-dp-pattern-rationale/>.
1169
-
1170
- </format>
1171
-
1172
- - <spec-dp-pattern/> details:
1173
-
1174
- - <spec-dp-pattern-id/>: per-artifact unique "slug" of always 1-3
1175
- lower-cased words (concatenated with "-" characters and
1176
- in total not longer than 30 characters), derived from
1177
- <spec-dp-pattern-name/>.
1178
-
1179
- - <spec-dp-pattern-name/>: a short (2-5 word) summary of the dialog
1180
- pattern (e.g. `Master-Detail`, `Wizard`, `Inline Edit`).
1181
-
1182
- - <spec-dp-pattern-context/>: the recurring situation or flow in
1183
- which the pattern is applied.
1184
-
1185
- - <spec-dp-pattern-problem/>: the 1-sentence tension or difficulty
1186
- the pattern resolves ("why is the pattern needed"),
1187
- stated independently of its solution (which belongs to
1188
- <spec-dp-pattern-description/>) and its rationale (which belongs
1189
- to <spec-dp-pattern-rationale/>).
1190
-
1191
- - <spec-dp-pattern-description/>: a concise paragraph (1-3
1192
- sentences) of prose describing the reusable interaction structure
1193
- and how the system and user exchange information within it.
1194
-
1195
- - <spec-dp-pattern-rationale/>: the 1-sentence justification for why
1196
- the structure in <spec-dp-pattern-description/> is the right
1197
- response - the benefit it secures or the trade-off it wins.
1198
- Unlike <spec-dp-pattern-problem/> (which states *why the pattern
1199
- is needed*, independent of any solution), the rationale states
1200
- *why this particular solution is worth adopting*.
1201
-
1202
- - In case the rationale is not present, the
1203
- entire `, **BECAUSE** [...]` clause is omitted.
1204
-
1205
- Dialog Storyboard (DS)
1206
- ----------------------
1207
-
1208
- The sequenced visual or textual depiction of a specific dialog flow,
1209
- illustrating how an interaction unfolds screen by screen or turn by
1210
- turn.
1211
-
1212
- - Format:
1213
-
1214
- <format>
1215
-
1216
- # SPECIFICATION: DIALOG STORYBOARD (SPEC-DS)
1217
-
1218
- ✳ Created: **<timestamp-created/>**
1219
- ✎ Modified: **<timestamp-modified/>**
1220
-
1221
- <spec-ds-storyboard/>
1222
- <spec-ds-storyboard/>
1223
- [...]
1224
-
1225
- </format>
1226
-
1227
- - <spec-ds-storyboard/> format:
1228
-
1229
- <format>
1230
-
1231
- ## STORYBOARD: <spec-ds-storyboard-name/> <a id="SPEC-DS-<spec-ds-storyboard-id/>"></a>
1232
-
1233
- - Pattern: <spec-ds-storyboard-pattern/>
1234
- - Use Case: <spec-ds-storyboard-usecase/>
1235
- - Scenario: <spec-ds-storyboard-scenario/>
1236
-
1237
- 1. **<spec-ds-frame-name/>**: <spec-ds-frame-description/>
1238
- 2. **<spec-ds-frame-name/>**: <spec-ds-frame-description/>
1239
- [...]
1240
-
1241
- </format>
1242
-
1243
- - <spec-ds-storyboard/> details:
1244
-
1245
- - <spec-ds-storyboard-id/>: per-artifact unique "slug" of always
1246
- 1-3 lower-cased words (concatenated with "-" characters and
1247
- in total not longer than 30 characters), derived from
1248
- <spec-ds-storyboard-name/>.
1249
-
1250
- - <spec-ds-storyboard-name/>: a short (3-8 word) summary of the
1251
- depicted dialog flow.
1252
-
1253
- - <spec-ds-storyboard-pattern/> is a `SPEC-DP-<spec-dp-pattern-id/>`
1254
- reference to the corresponding **Aspect** of the Dialog Patterns
1255
- **Artifact** the storyboard instantiates (optional).
1256
-
1257
- - <spec-ds-storyboard-usecase/> is a
1258
- `SPEC-UC-<spec-uc-usecase-id/>` reference to the corresponding
1259
- **Aspect** of the Use Cases **Artifact** the storyboard
1260
- visualizes (optional).
1261
-
1262
- - <spec-ds-storyboard-scenario/> is a
1263
- `SPEC-UC-<spec-uc-usecase-id/>-<spec-uc-usecase-scenario-id/>`
1264
- reference to the corresponding scenario **Aspect** of the Use
1265
- Cases **Artifact** the storyboard visualizes (optional).
1266
-
1267
- - <spec-ds-frame-name/>: a short (2-5 word) label for the screen,
1268
- turn, or state depicted by the storyboard frame. Frames are
1269
- numbered sequentially to convey their order.
1270
-
1271
- - <spec-ds-frame-description/>: a concise (1-2 sentence) description
1272
- of what the user sees and does at this frame of the interaction.
1273
-
1274
- - In case a pattern, use case, or scenario reference is not present,
1275
- the respective bullet point is omitted.
1276
-
1277
- Visual Design (VD)
1278
- ------------------
1279
-
1280
- The aesthetic and layout aspects of the solution, defining colors,
1281
- typography, spacing, imagery, and overall look and feel.
1282
-
1283
- - Format:
1284
-
1285
- <format>
1286
-
1287
- # SPECIFICATION: VISUAL DESIGN (SPEC-VD)
1288
-
1289
- ✳ Created: **<timestamp-created/>**
1290
- ✎ Modified: **<timestamp-modified/>**
1291
-
1292
- <spec-vd-element/>
1293
- <spec-vd-element/>
1294
- [...]
1295
-
1296
- </format>
1297
-
1298
- - <spec-vd-element/> format:
1299
-
1300
- <format>
1301
-
1302
- ## ELEMENT: <spec-vd-element-name/> <a id="SPEC-VD-<spec-vd-element-id/>"></a>
1303
-
1304
- - Category: <spec-vd-element-category/>
1305
-
1306
- <spec-vd-element-specification/>,
1307
- **BECAUSE** <spec-vd-element-rationale/>.
1308
-
1309
- </format>
1310
-
1311
- - <spec-vd-element/> details:
1312
-
1313
- - <spec-vd-element-id/>: per-artifact unique "slug" of always 1-3
1314
- lower-cased words (concatenated with "-" characters and
1315
- in total not longer than 30 characters), derived from
1316
- <spec-vd-element-name/>.
1317
-
1318
- - <spec-vd-element-name/>: a short (2-5 word) summary of the visual
1319
- design element.
1320
-
1321
- - <spec-vd-element-category/>: the aspect of visual design the
1322
- element governs, one of `Color`, `Typography`, `Iconography`,
1323
- `Imagery`, `Layout`, or `Animation`.
1324
-
1325
- - <spec-vd-element-specification/>: a concise paragraph (1-3
1326
- sentences) of prose specifying the concrete values, tokens, or
1327
- rules that define the visual design element (e.g. palette,
1328
- font family, scale).
1329
-
1330
- - <spec-vd-element-rationale/>: the 1-sentence rationale ("why") of
1331
- the visual design element.
1332
-
1333
- - In case the rationale is not present, the
1334
- entire `, **BECAUSE** [...]` clause is omitted.
27
+ - The **SpecBook SPEC Model** of this project is the set of specification
28
+ Markdown files in the directory <ase-spec-basedir/> (relative
29
+ to the project root), whose files are resolved via the
30
+ `ase_artifact_list(kind: [ "spec" ])` tool of the `ase` MCP server.