@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/README.md +71 -20
- package/SPEC_FORMAT.md +125 -4
- package/dist/githubActionDiffReport.js +16 -26
- package/dist/githubActionDiffReport.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mockReports.js +7 -4
- package/dist/mockReports.js.map +1 -1
- package/dist/reportTemplate.d.ts.map +1 -1
- package/dist/reportTemplate.js +339 -32
- package/dist/reportTemplate.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/evidence-policy.md +4 -2
- package/package.json +1 -1
- package/src/mocks/current/screenshots/screenshots.json +6 -6
- package/src/mocks/current/specs/support-desk.design.md +32 -0
- package/src/mocks/current/specs/support-desk.model.md +22 -1
- package/src/mocks/current/specs/support-platform.stack.md +28 -0
- package/src/mocks/current/specs/ticket-inbox.feature.md +2 -0
- package/src/mocks/current/specs/ticket-reply.feature.md +4 -0
- package/src/mocks/previous/screenshots/screenshots.json +3 -3
- package/src/mocks/previous/specs/ticket-inbox.feature.md +2 -0
- package/src/mocks/previous/specs/ticket-reply.feature.md +2 -0
- package/templates/feature.feature.md +4 -2
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 = {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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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"}
|
package/docs/evidence-policy.md
CHANGED
|
@@ -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
|
-
|
|
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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"evidence": [
|
|
3
3
|
{
|
|
4
4
|
"specPath": "src/mocks/current/specs/ticket-inbox.feature.md",
|
|
5
|
-
"line":
|
|
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":
|
|
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":
|
|
17
|
+
"comparedWithLine": 28
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
20
|
"specPath": "src/mocks/current/specs/ticket-reply.feature.md",
|
|
21
|
-
"line":
|
|
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":
|
|
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":
|
|
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
|
|
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":
|
|
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":
|
|
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":
|
|
17
|
+
"comparedWithLine": 28
|
|
18
18
|
}
|
|
19
19
|
]
|
|
20
20
|
}
|
|
@@ -19,6 +19,8 @@ Describe the outcome this feature provides.
|
|
|
19
19
|
|
|
20
20
|
### FEATURE-S001: Main path
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
```
|
|
23
|
+
Given a precondition is true
|
|
24
|
+
When a person performs an action
|
|
24
25
|
Then the expected outcome is visible
|
|
26
|
+
```
|