@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
|
+
}
|