@exodus/xqa 1.2.2 → 1.3.0

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.
@@ -0,0 +1,94 @@
1
+ # xqa-spec
2
+
3
+ ## When to use
4
+
5
+ - User runs `/xqa-spec` with a flow description
6
+ - User implies spec authoring intent: "I want to test X", "write a spec for Y", "update the Z spec"
7
+
8
+ Detect implied intent and self-activate without requiring explicit slash command.
9
+
10
+ ## Process
11
+
12
+ ```
13
+ Explore → Detect mode → Interview (one question at a time) → Draft → Review → Write
14
+ ```
15
+
16
+ IMPORTANT: Never generate a draft before the interview is complete. The user describes the spec; you transcribe it.
17
+
18
+ ### 1. Explore
19
+
20
+ Silently scan `.xqa/specs/*.test.md`. Learn:
21
+
22
+ - Naming conventions
23
+ - Tag vocabulary
24
+ - Level of detail and step granularity
25
+
26
+ Also read `.xqa/instructions.md` if it exists for app context.
27
+
28
+ ### 2. Detect mode
29
+
30
+ | Condition | Mode |
31
+ | ------------------------ | ----------------------------------------------- |
32
+ | Matching spec file found | Edit — read it, ask which sections to change |
33
+ | No match | Create — derive kebab-case filename from intent |
34
+
35
+ In **edit mode**: ask which sections to change before doing anything. Modify only those sections; preserve everything else verbatim.
36
+
37
+ ### 3. Interview (create mode only)
38
+
39
+ Ask one question at a time. Wait for the answer before asking the next. Prefer multiple choice when options are known.
40
+
41
+ **Question sequence:**
42
+
43
+ 1. **What flow?** — Confirm what's being tested if not already clear. Suggest a filename.
44
+ 2. **Starting state** — "Where does the app start for this test? What's already set up?" → becomes `## Setup`
45
+ 3. **Steps** — "Walk me through the steps, one at a time. I'll ask for the next when you're done." → collect each step, then ask "What should happen?" for the assertion (optional)
46
+ 4. **Global assertions** — "Anything non-obvious that should hold at the end?" → becomes `## Assertions`; skip if none. Never suggest trivial examples (no errors shown, page loaded) — only capture meaningful, app-specific checks.
47
+ 5. **Metadata** — "Any tags or a custom timeout?" (offer to skip)
48
+
49
+ IMPORTANT: Ask each question in its own message. Never batch questions.
50
+
51
+ ### 4. Draft
52
+
53
+ Assemble the spec from interview answers — don't invent steps or assertions the user didn't describe. Present the full draft for review.
54
+
55
+ ### 5. Review
56
+
57
+ Show the draft. Ask: "Does this look right, or anything to change?"
58
+
59
+ Iterate until approved. One round of changes per message.
60
+
61
+ ### 6. Write
62
+
63
+ Save to `.xqa/specs/<name>.test.md` only after explicit approval.
64
+
65
+ ## File format
66
+
67
+ ```md
68
+ ---
69
+ description: optional one-liner
70
+ tags: [optional, tags]
71
+ timeout: 120
72
+ ---
73
+
74
+ ## Setup
75
+
76
+ Starting screen and preconditions. Required.
77
+
78
+ ## Steps
79
+
80
+ 1. Action → expected outcome (optional inline assertion)
81
+ 2. Next action
82
+
83
+ ## Assertions
84
+
85
+ - Global flow-level check (optional section)
86
+ ```
87
+
88
+ ## Rules
89
+
90
+ - `## Setup` and `## Steps` are required; frontmatter and `## Assertions` are optional
91
+ - Inline assertion syntax: `action → outcome` using the → character
92
+ - Steps come from the user — never invent them
93
+ - Write file only after explicit approval
94
+ - In edit mode, ask before touching anything
@@ -0,0 +1,100 @@
1
+ ---
2
+ name: xqa-spec
3
+ description: Create or edit *.test.md spec files in .xqa/specs/ through guided dialogue. Triggers on /xqa-spec or implied spec authoring intent ("I want to test X", "write a spec for Y", "update the Z spec").
4
+ license: MIT
5
+ ---
6
+
7
+ # xqa-spec
8
+
9
+ ## When to use
10
+
11
+ - User runs `/xqa-spec` with a flow description
12
+ - User implies spec authoring intent: "I want to test X", "write a spec for Y", "update the Z spec"
13
+
14
+ Detect implied intent and self-activate without requiring explicit slash command.
15
+
16
+ ## Process
17
+
18
+ ```
19
+ Explore → Detect mode → Interview (one question at a time) → Draft → Review → Write
20
+ ```
21
+
22
+ IMPORTANT: Never generate a draft before the interview is complete. The user describes the spec; you transcribe it.
23
+
24
+ ### 1. Explore
25
+
26
+ Silently scan `.xqa/specs/*.test.md`. Learn:
27
+
28
+ - Naming conventions
29
+ - Tag vocabulary
30
+ - Level of detail and step granularity
31
+
32
+ Also read `.xqa/instructions.md` if it exists for app context.
33
+
34
+ ### 2. Detect mode
35
+
36
+ | Condition | Mode |
37
+ | ------------------------ | ----------------------------------------------- |
38
+ | Matching spec file found | Edit — read it, ask which sections to change |
39
+ | No match | Create — derive kebab-case filename from intent |
40
+
41
+ In **edit mode**: ask which sections to change before doing anything. Modify only those sections; preserve everything else verbatim.
42
+
43
+ ### 3. Interview (create mode only)
44
+
45
+ Ask one question at a time. Wait for the answer before asking the next. Prefer multiple choice when options are known.
46
+
47
+ **Question sequence:**
48
+
49
+ 1. **What flow?** — Confirm what's being tested if not already clear. Suggest a filename.
50
+ 2. **Starting state** — "Where does the app start for this test? What's already set up?" → becomes `## Setup`
51
+ 3. **Steps** — "Walk me through the steps, one at a time. I'll ask for the next when you're done." → collect each step, then ask "What should happen?" for the assertion (optional)
52
+ 4. **Global assertions** — "Anything non-obvious that should hold at the end?" → becomes `## Assertions`; skip if none. Never suggest trivial examples (no errors shown, page loaded) — only capture meaningful, app-specific checks.
53
+ 5. **Metadata** — "Any tags or a custom timeout?" (offer to skip)
54
+
55
+ IMPORTANT: Ask each question in its own message. Never batch questions.
56
+
57
+ ### 4. Draft
58
+
59
+ Assemble the spec from interview answers — don't invent steps or assertions the user didn't describe. Present the full draft for review.
60
+
61
+ ### 5. Review
62
+
63
+ Show the draft. Ask: "Does this look right, or anything to change?"
64
+
65
+ Iterate until approved. One round of changes per message.
66
+
67
+ ### 6. Write
68
+
69
+ Save to `.xqa/specs/<name>.test.md` only after explicit approval.
70
+
71
+ ## File format
72
+
73
+ ```md
74
+ ---
75
+ description: optional one-liner
76
+ tags: [optional, tags]
77
+ timeout: 120
78
+ ---
79
+
80
+ ## Setup
81
+
82
+ Starting screen and preconditions. Required.
83
+
84
+ ## Steps
85
+
86
+ 1. Action → expected outcome (optional inline assertion)
87
+ 2. Next action
88
+
89
+ ## Assertions
90
+
91
+ - Global flow-level check (optional section)
92
+ ```
93
+
94
+ ## Rules
95
+
96
+ - `## Setup` and `## Steps` are required; frontmatter and `## Assertions` are optional
97
+ - Inline assertion syntax: `action → outcome` using the → character
98
+ - Steps come from the user — never invent them
99
+ - Write file only after explicit approval
100
+ - In edit mode, ask before touching anything
@@ -0,0 +1,5 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "organization": "Exodus Movement",
4
+ "abstract": "Guides QA engineers through creating and editing *.test.md spec files in .xqa/specs/ using a structured interview-first workflow. Asks one question at a time to extract setup, steps, and assertions from the user before drafting."
5
+ }