@anselmdk/feature-spec-md 0.7.0 → 0.8.1

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.
package/dist/types.d.ts CHANGED
@@ -8,6 +8,27 @@ export type ModelReferenceFrontmatter = SpecFrontmatter & {
8
8
  model?: string;
9
9
  models?: string[] | string;
10
10
  };
11
+ export type SpecExtensionSection = {
12
+ title: string;
13
+ body: string;
14
+ line: number;
15
+ };
16
+ export type SpecExtensionSections = {
17
+ /** Mermaid overview diagrams that visualize model relationships. */
18
+ modelDiagram?: SpecExtensionSection;
19
+ /** Known unknowns, unresolved choices, or decisions that need a product answer. */
20
+ openQuestions?: SpecExtensionSection;
21
+ /** Assumptions the spec currently relies on until they are confirmed or replaced. */
22
+ assumptions?: SpecExtensionSection;
23
+ /** API endpoints, request/response contracts, auth requirements, and OpenAPI links. */
24
+ apiContract?: SpecExtensionSection;
25
+ /** Role/group capability matrix, permission rules, and access-control notes. */
26
+ permissions?: SpecExtensionSection;
27
+ /** Entity state machines, state transition rules, and lifecycle examples. */
28
+ lifecycle?: SpecExtensionSection;
29
+ /** Mock adapters, seeded data, fixed-time setup, and CI/e2e environment contracts. */
30
+ testEnvironment?: SpecExtensionSection;
31
+ };
11
32
  export type ScenarioTestType = "unit" | "integration" | "playwright" | "manual" | "skip";
12
33
  export type ScreenshotPolicy = "required" | "optional" | "skip";
13
34
  export type ScenarioEvidencePolicy = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -13,17 +13,19 @@ screenshots: required
13
13
  ---
14
14
  ```
15
15
 
16
- Use scenario-level overrides directly below a scenario heading when one scenario needs different evidence:
16
+ Use scenario-level overrides directly below a scenario heading when one scenario needs different evidence. The Given / When / Then steps remain inside the fenced scenario block:
17
17
 
18
- ```md
18
+ ````md
19
19
  ### KANBAN-CARD-AUTHORING-S002: Card title is normalized
20
20
  Test: unit
21
21
  Screenshots: skip
22
22
 
23
+ ```
23
24
  Given the raw card title contains leading whitespace
24
25
  When the title is normalized
25
26
  Then the stored title has no leading whitespace
26
27
  ```
28
+ ````
27
29
 
28
30
  ## `test` values
29
31
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anselmdk/feature-spec-md",
3
- "version": "0.7.0",
3
+ "version": "0.8.1",
4
4
  "description": "Markdown specs for AI-assisted, testable spec driven development across model, feature, stack, and design documents.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -2,7 +2,7 @@
2
2
  "evidence": [
3
3
  {
4
4
  "specPath": "src/mocks/current/specs/ticket-inbox.feature.md",
5
- "line": 27,
5
+ "line": 28,
6
6
  "changed": true,
7
7
  "path": "screenshots/SUPPORT-INBOX-S001-line-27-current.svg",
8
8
  "title": "Inbox with priority badges",
@@ -10,15 +10,15 @@
10
10
  },
11
11
  {
12
12
  "specPath": "src/mocks/current/specs/ticket-inbox.feature.md",
13
- "line": 28,
13
+ "line": 29,
14
14
  "changed": false,
15
15
  "title": "Inbox remains visually unchanged after selecting the first ticket",
16
16
  "testPath": "src/mocks/current/tests/supportDesk.spec.ts",
17
- "comparedWithLine": 27
17
+ "comparedWithLine": 28
18
18
  },
19
19
  {
20
20
  "specPath": "src/mocks/current/specs/ticket-reply.feature.md",
21
- "line": 27,
21
+ "line": 28,
22
22
  "changed": true,
23
23
  "path": "screenshots/SUPPORT-REPLY-S001-line-27-current.svg",
24
24
  "title": "Reply composer with suggested answer",
@@ -26,11 +26,11 @@
26
26
  },
27
27
  {
28
28
  "specPath": "src/mocks/current/specs/ticket-reply.feature.md",
29
- "line": 28,
29
+ "line": 29,
30
30
  "changed": false,
31
31
  "title": "Reply composer stays visually unchanged while text is reviewed",
32
32
  "testPath": "src/mocks/current/tests/supportDesk.spec.ts",
33
- "comparedWithLine": 27
33
+ "comparedWithLine": 28
34
34
  }
35
35
  ]
36
36
  }
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: SUPPORT-DESIGN
3
+ title: Support desk experience
4
+ status: draft
5
+ ---
6
+
7
+ # Support desk experience
8
+
9
+ ## Purpose
10
+
11
+ Define the visual direction demonstrated by the support desk mock.
12
+
13
+ ## Design
14
+
15
+ The interface keeps ticket context and reply actions close together.
16
+
17
+ ## Principles
18
+
19
+ - Make ticket status easy to scan
20
+ - Keep the primary reply action obvious
21
+
22
+ ## Layout
23
+
24
+ Use a ticket list beside the active conversation on wider screens.
25
+
26
+ ## Interaction
27
+
28
+ Opening a ticket preserves the agent's position in the list.
29
+
30
+ ## Visual style
31
+
32
+ Use restrained surfaces with clear status accents.
@@ -26,4 +26,25 @@ A visible urgency label used to sort the queue.
26
26
 
27
27
  ## Rules
28
28
 
29
- - SUPPORT-M-R001: Tickets MUST keep a stable public reference.
29
+ - SUPPORT-M-R001: Tickets keep a stable public reference.
30
+
31
+ ## Model Diagram
32
+
33
+ ```mermaid
34
+ erDiagram
35
+ AGENT ||--o{ TICKET : handles
36
+ TICKET }o--|| PRIORITY : has
37
+ ```
38
+
39
+ ## Open Questions
40
+
41
+ - SUPPORT-Q001: Should permission tables have optional coverage checks later?
42
+
43
+ ## Assumptions
44
+
45
+ - SUPPORT-A001: Review notes are shown in reports as informational context.
46
+
47
+ ## Permissions
48
+
49
+ - Agents can view assigned tickets.
50
+ - Leads can reassign tickets.
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: SUPPORT-PLATFORM
3
+ title: Support platform
4
+ status: accepted
5
+ ---
6
+
7
+ # Support platform
8
+
9
+ ## Purpose
10
+
11
+ Define the minimal technical platform for the support desk mock.
12
+
13
+ ## Stack
14
+
15
+ - TypeScript for application and test code
16
+ - Browser-rendered HTML reports
17
+
18
+ ## Context
19
+
20
+ The mock report must run without external application services.
21
+
22
+ ## Rationale
23
+
24
+ Keep report examples deterministic and easy to publish.
25
+
26
+ ## Consequences
27
+
28
+ Mock data and screenshots are stored with the fixture.
@@ -22,6 +22,8 @@ Let agents find the next ticket to work on without losing context.
22
22
 
23
23
  ### SUPPORT-INBOX-S001: Agent reviews the queue
24
24
 
25
+ ```
25
26
  Given an agent has open tickets
26
27
  When they open the inbox
27
28
  Then open tickets are listed by age with priority badges
29
+ ```
@@ -22,12 +22,16 @@ Help agents answer a customer without leaving the ticket.
22
22
 
23
23
  ### SUPPORT-REPLY-S001: Agent drafts a reply
24
24
 
25
+ ```
25
26
  Given an agent has selected a ticket
26
27
  When they write a reply
27
28
  Then the draft remains visible
29
+ ```
28
30
 
29
31
  ### SUPPORT-REPLY-S002: Agent sends a saved reply
30
32
 
33
+ ```
31
34
  Given an agent has selected a ticket
32
35
  When they choose a saved reply
33
36
  Then the composer is filled with reusable text
37
+ ```
@@ -2,7 +2,7 @@
2
2
  "evidence": [
3
3
  {
4
4
  "specPath": "src/mocks/previous/specs/ticket-inbox.feature.md",
5
- "line": 27,
5
+ "line": 28,
6
6
  "changed": true,
7
7
  "path": "screenshots/SUPPORT-INBOX-S001-line-27-previous.svg",
8
8
  "title": "Inbox before priority badges",
@@ -10,11 +10,11 @@
10
10
  },
11
11
  {
12
12
  "specPath": "src/mocks/previous/specs/ticket-inbox.feature.md",
13
- "line": 28,
13
+ "line": 29,
14
14
  "changed": false,
15
15
  "title": "Inbox remains visually unchanged after selecting the first ticket",
16
16
  "testPath": "src/mocks/previous/tests/supportDesk.spec.ts",
17
- "comparedWithLine": 27
17
+ "comparedWithLine": 28
18
18
  }
19
19
  ]
20
20
  }
@@ -21,6 +21,8 @@ Let agents find the next ticket to work on without losing context.
21
21
 
22
22
  ### SUPPORT-INBOX-S001: Agent reviews the queue
23
23
 
24
+ ```
24
25
  Given an agent has open tickets
25
26
  When they open the inbox
26
27
  Then open tickets are listed by age
28
+ ```
@@ -21,6 +21,8 @@ Help agents answer a customer without leaving the ticket.
21
21
 
22
22
  ### SUPPORT-REPLY-S001: Agent drafts a reply
23
23
 
24
+ ```
24
25
  Given an agent has selected a ticket
25
26
  When they write a reply
26
27
  Then the draft remains visible
28
+ ```
@@ -19,6 +19,8 @@ Describe the outcome this feature provides.
19
19
 
20
20
  ### FEATURE-S001: Main path
21
21
 
22
- Given a precondition is true
23
- When a person performs an action
22
+ ```
23
+ Given a precondition is true
24
+ When a person performs an action
24
25
  Then the expected outcome is visible
26
+ ```