get-shit-specd 0.2.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.
- package/LICENSE +21 -0
- package/README.md +145 -0
- package/bin/gss.ts +160 -0
- package/claude/agents/gss-acceptance-writer.md +58 -0
- package/claude/agents/gss-data-modeler.md +67 -0
- package/claude/agents/gss-product-researcher.md +56 -0
- package/claude/agents/gss-spec-checker.md +87 -0
- package/claude/agents/gss-spec-synthesizer.md +68 -0
- package/claude/agents/gss-ux-designer.md +41 -0
- package/claude/commands/gss/handoff.md +24 -0
- package/claude/commands/gss/help.md +57 -0
- package/claude/commands/gss/new-spec.md +51 -0
- package/claude/commands/gss/progress.md +18 -0
- package/claude/commands/gss/review-spec.md +23 -0
- package/claude/commands/gss/settings.md +20 -0
- package/claude/commands/gss/setup.md +149 -0
- package/claude/commands/gss/update-spec.md +26 -0
- package/claude/get-shit-specd/VERSION +1 -0
- package/claude/get-shit-specd/references/acceptance-patterns.md +19 -0
- package/claude/get-shit-specd/references/product-questioning.md +42 -0
- package/claude/get-shit-specd/references/spec-config.md +86 -0
- package/claude/get-shit-specd/references/ux-brand.md +15 -0
- package/claude/get-shit-specd/templates/acceptance.md +48 -0
- package/claude/get-shit-specd/templates/brief.md +31 -0
- package/claude/get-shit-specd/templates/data.md +34 -0
- package/claude/get-shit-specd/templates/handoff-to-gsd.md +21 -0
- package/claude/get-shit-specd/templates/scope.md +25 -0
- package/claude/get-shit-specd/templates/spec-state.md +24 -0
- package/claude/get-shit-specd/templates/ux.md +41 -0
- package/claude/get-shit-specd/workflows/create-spec.md +132 -0
- package/claude/get-shit-specd/workflows/handoff.md +43 -0
- package/claude/get-shit-specd/workflows/review-spec.md +35 -0
- package/examples/SPEC-003-watermarking-service/00-BRIEF.md +52 -0
- package/examples/SPEC-003-watermarking-service/01-SCOPE.md +46 -0
- package/examples/SPEC-003-watermarking-service/04-ACCEPTANCE.md +98 -0
- package/examples/SPEC-003-watermarking-service/HANDOFF.md +146 -0
- package/examples/SPEC-003-watermarking-service/REVIEW.md +84 -0
- package/examples/SPEC-003-watermarking-service/STATE.md +42 -0
- package/package.json +44 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# gss-ux-designer
|
|
2
|
+
|
|
3
|
+
Role: Draft 02-UX.md from BRIEF and SCOPE.
|
|
4
|
+
|
|
5
|
+
## Input
|
|
6
|
+
You receive:
|
|
7
|
+
- 00-BRIEF.md (problem, JTBD, goal)
|
|
8
|
+
- 01-SCOPE.md (in/out scope, constraints)
|
|
9
|
+
|
|
10
|
+
## Output
|
|
11
|
+
Draft 02-UX.md with:
|
|
12
|
+
|
|
13
|
+
### Primary User Flow
|
|
14
|
+
Number the steps from trigger to completion. Be specific about user actions.
|
|
15
|
+
|
|
16
|
+
### Screens
|
|
17
|
+
For each screen in the flow:
|
|
18
|
+
- **Purpose**: Why this screen exists
|
|
19
|
+
- **Entry conditions**: How user gets here
|
|
20
|
+
- **Elements**: What's on the screen (be specific)
|
|
21
|
+
- **Copy**: Primary CTA, secondary actions, key labels
|
|
22
|
+
- **States**: Loading, empty, error, success (REQUIRED - this is where specs fail)
|
|
23
|
+
- **Validation**: What can go wrong, how it's shown
|
|
24
|
+
- **Accessibility**: Key a11y considerations
|
|
25
|
+
|
|
26
|
+
### Wireframes
|
|
27
|
+
If no Figma link provided, create ASCII wireframes for each screen.
|
|
28
|
+
Show layout, key elements, CTA placement, error areas.
|
|
29
|
+
|
|
30
|
+
## Rules
|
|
31
|
+
- Enumerate ALL states. Empty, loading, error, permission denied, success. Missing states = spec failure.
|
|
32
|
+
- Be specific about copy. "Submit" is vague. "Create Deck" is specific.
|
|
33
|
+
- Entry conditions matter. How does user get to this screen?
|
|
34
|
+
- Think about what happens when things go WRONG, not just right.
|
|
35
|
+
|
|
36
|
+
## Quality Check
|
|
37
|
+
Before submitting, verify:
|
|
38
|
+
- [ ] Every screen has all 4 states (loading/empty/error/success)
|
|
39
|
+
- [ ] Every form has validation rules
|
|
40
|
+
- [ ] Every action has a clear CTA label
|
|
41
|
+
- [ ] Flow has no dead ends
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gss:handoff
|
|
3
|
+
description: Translate a Ready spec into GSD engineering inputs
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Write
|
|
8
|
+
- Task
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
<objective>
|
|
12
|
+
Produce HANDOFF.md and optionally update .planning/REQUIREMENTS.md and .planning/ROADMAP.md.
|
|
13
|
+
</objective>
|
|
14
|
+
|
|
15
|
+
<execution_context>
|
|
16
|
+
@./.claude/get-shit-specd/workflows/handoff.md
|
|
17
|
+
</execution_context>
|
|
18
|
+
|
|
19
|
+
<process>
|
|
20
|
+
1. Ask for spec_id or detect.
|
|
21
|
+
2. Confirm spec is Ready (or list blockers).
|
|
22
|
+
3. Produce HANDOFF.md.
|
|
23
|
+
4. If REQUIREMENTS/ROADMAP exist, propose diffs (do not overwrite silently).
|
|
24
|
+
</process>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gss:help
|
|
3
|
+
description: Show available get-shit-specd commands
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
---
|
|
7
|
+
<objective>
|
|
8
|
+
Explain the GSS (Get Shit Specd) workflow and available commands.
|
|
9
|
+
</objective>
|
|
10
|
+
|
|
11
|
+
<process>
|
|
12
|
+
|
|
13
|
+
## What is GSS?
|
|
14
|
+
|
|
15
|
+
GSS is a spec workflow that produces outcome-focused specs. Specs define WHAT must be true and WHY it matters — engineering determines HOW to build it.
|
|
16
|
+
|
|
17
|
+
## Commands
|
|
18
|
+
|
|
19
|
+
### Setup & Configuration
|
|
20
|
+
- `/gss:setup` — Interactive setup for new projects (audience, tier, strictness)
|
|
21
|
+
- `/gss:settings` — View or edit existing spec-config.json
|
|
22
|
+
|
|
23
|
+
### Spec Creation
|
|
24
|
+
- `/gss:new-spec` — Create a new spec package (runs intake → drafts → quality gates)
|
|
25
|
+
- `/gss:update-spec` — Modify an existing spec
|
|
26
|
+
|
|
27
|
+
### Quality & Review
|
|
28
|
+
- `/gss:review-spec` — Red-team a spec for ambiguity and missing states
|
|
29
|
+
- `/gss:handoff` — Generate requirements mapping for engineering
|
|
30
|
+
|
|
31
|
+
### Status
|
|
32
|
+
- `/gss:progress` — Show all specs and their status (Draft/Review/Ready)
|
|
33
|
+
|
|
34
|
+
## Typical Flow
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
1. /gss:setup ← First time only
|
|
38
|
+
2. /gss:new-spec ← Create spec with intake questions
|
|
39
|
+
3. /gss:review-spec ← Red-team for gaps
|
|
40
|
+
4. /gss:handoff ← Generate engineering requirements
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Spec Tiers
|
|
44
|
+
|
|
45
|
+
| Tier | Files | Agents | When |
|
|
46
|
+
|------|-------|--------|------|
|
|
47
|
+
| Micro | SPEC.md | None | Quick fixes |
|
|
48
|
+
| Standard | BRIEF, SCOPE, ACCEPTANCE | 2 | Most features |
|
|
49
|
+
| Full | All 5 files | 6 | Complex features |
|
|
50
|
+
|
|
51
|
+
## More Info
|
|
52
|
+
|
|
53
|
+
- Config reference: `.claude/get-shit-specd/references/spec-config.md`
|
|
54
|
+
- Workflow details: `.claude/get-shit-specd/workflows/`
|
|
55
|
+
- Agent definitions: `.claude/agents/gss-*.md`
|
|
56
|
+
|
|
57
|
+
</process>
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gss:new-spec
|
|
3
|
+
description: Create a new spec package for a feature
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Write
|
|
8
|
+
- Task
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
<objective>
|
|
12
|
+
Create a new spec package in .planning/specs/ with BRIEF, SCOPE, UX, DATA, ACCEPTANCE, and STATE.
|
|
13
|
+
</objective>
|
|
14
|
+
|
|
15
|
+
<execution_context>
|
|
16
|
+
@./.claude/get-shit-specd/workflows/create-spec.md
|
|
17
|
+
@./.claude/get-shit-specd/references/product-questioning.md
|
|
18
|
+
</execution_context>
|
|
19
|
+
|
|
20
|
+
<process>
|
|
21
|
+
|
|
22
|
+
## Phase 1: Setup (mandatory)
|
|
23
|
+
1. Ensure .planning exists:
|
|
24
|
+
```bash
|
|
25
|
+
mkdir -p .planning/specs
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
2. Ensure spec config exists or create it:
|
|
29
|
+
- If missing, run /gss:settings logic.
|
|
30
|
+
|
|
31
|
+
## Phase 2: Intake
|
|
32
|
+
Ask the minimum questions to define:
|
|
33
|
+
- spec name
|
|
34
|
+
- user/context
|
|
35
|
+
- v1 goal
|
|
36
|
+
- in/out scope
|
|
37
|
+
- key screens
|
|
38
|
+
- roles/permissions
|
|
39
|
+
- acceptance definition
|
|
40
|
+
|
|
41
|
+
## Phase 3: Create spec folder
|
|
42
|
+
Create folder: .planning/specs/SPEC-{{id}}-{{slug}}/
|
|
43
|
+
Create 00-04 files and STATE.md using the create-spec workflow.
|
|
44
|
+
|
|
45
|
+
## Phase 4: Output
|
|
46
|
+
Print:
|
|
47
|
+
- Spec folder path
|
|
48
|
+
- Current status (Draft/Review/Ready)
|
|
49
|
+
- Blocking open questions (if any)
|
|
50
|
+
- Next command suggestion: /gss:review-spec or /gss:handoff
|
|
51
|
+
</process>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gss:progress
|
|
3
|
+
description: Show spec inventory and status
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Write
|
|
8
|
+
- Task
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
<objective>
|
|
12
|
+
List all specs in .planning/specs and show their STATE.md status.
|
|
13
|
+
</objective>
|
|
14
|
+
|
|
15
|
+
<process>
|
|
16
|
+
1. Find .planning/specs/*/STATE.md
|
|
17
|
+
2. Print a short table: spec_id | name | status | open_questions_count | last_updated
|
|
18
|
+
</process>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gss:review-spec
|
|
3
|
+
description: Red-team a spec for ambiguity and missing states
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Write
|
|
8
|
+
- Task
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
<objective>
|
|
12
|
+
Find gaps before engineering starts. Produce REVIEW.md and optionally patch spec files.
|
|
13
|
+
</objective>
|
|
14
|
+
|
|
15
|
+
<execution_context>
|
|
16
|
+
@./.claude/get-shit-specd/workflows/review-spec.md
|
|
17
|
+
</execution_context>
|
|
18
|
+
|
|
19
|
+
<process>
|
|
20
|
+
1. Ask for spec_id or detect.
|
|
21
|
+
2. Run the review workflow.
|
|
22
|
+
3. Output: PASS/FAIL and any blocking questions.
|
|
23
|
+
</process>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gss:settings
|
|
3
|
+
description: Create or edit .planning/spec-config.json
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Write
|
|
8
|
+
- Task
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
<objective>
|
|
12
|
+
Ensure spec preferences exist at .planning/spec-config.json without overwriting existing GSD config.
|
|
13
|
+
</objective>
|
|
14
|
+
|
|
15
|
+
<process>
|
|
16
|
+
1. If .planning/spec-config.json does not exist, create it with sensible defaults from:
|
|
17
|
+
@./.claude/get-shit-specd/references/spec-config.md
|
|
18
|
+
|
|
19
|
+
2. If it exists, show current settings and allow updates.
|
|
20
|
+
</process>
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gss:setup
|
|
3
|
+
description: Interactive setup for GSS spec configuration
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Write
|
|
8
|
+
- AskUserQuestion
|
|
9
|
+
---
|
|
10
|
+
<objective>
|
|
11
|
+
Configure GSS for this project through interactive questions.
|
|
12
|
+
Creates .planning/spec-config.json with settings tailored to your team and workflow.
|
|
13
|
+
</objective>
|
|
14
|
+
|
|
15
|
+
<execution_context>
|
|
16
|
+
@./.claude/get-shit-specd/references/spec-config.md
|
|
17
|
+
</execution_context>
|
|
18
|
+
|
|
19
|
+
<process>
|
|
20
|
+
|
|
21
|
+
## Phase 1: Check existing config
|
|
22
|
+
```bash
|
|
23
|
+
mkdir -p .planning
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
If .planning/spec-config.json exists:
|
|
27
|
+
- Show current config
|
|
28
|
+
- Ask: "Start fresh or edit existing?"
|
|
29
|
+
- If edit, show current values as defaults in questions
|
|
30
|
+
|
|
31
|
+
## Phase 2: Audience question
|
|
32
|
+
Ask using AskUserQuestion:
|
|
33
|
+
```
|
|
34
|
+
Question: "Who will consume these specs?"
|
|
35
|
+
Options:
|
|
36
|
+
- "Just me + AI" → solo (lighter detail, faster iteration)
|
|
37
|
+
- "Small team (2-5)" → small_team (standard detail)
|
|
38
|
+
- "Larger team or contractors" → external (maximum detail, no assumptions)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Phase 3: Default tier question
|
|
42
|
+
Ask using AskUserQuestion:
|
|
43
|
+
```
|
|
44
|
+
Question: "What's your typical spec complexity?"
|
|
45
|
+
Options:
|
|
46
|
+
- "Quick fixes and small changes" → micro (single file, no agents)
|
|
47
|
+
- "Most features" → standard (BRIEF + SCOPE + ACCEPTANCE)
|
|
48
|
+
- "Complex multi-part features" → full (all 5 files + all agents)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Phase 4: Strictness question
|
|
52
|
+
Ask using AskUserQuestion:
|
|
53
|
+
```
|
|
54
|
+
Question: "How strict should spec enforcement be?"
|
|
55
|
+
Options:
|
|
56
|
+
- "Relaxed" → min_edge_cases: 1, min_out_of_scope: 1, max_open_questions: 5
|
|
57
|
+
- "Standard (Recommended)" → min_edge_cases: 3, min_out_of_scope: 2, max_open_questions: 3
|
|
58
|
+
- "Strict" → min_edge_cases: 5, min_out_of_scope: 3, max_open_questions: 2
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Phase 5: Format preferences
|
|
62
|
+
Ask using AskUserQuestion:
|
|
63
|
+
```
|
|
64
|
+
Question: "Do you use Gherkin (Given/When/Then) for acceptance criteria?"
|
|
65
|
+
Options:
|
|
66
|
+
- "Yes" → require_gherkin: true
|
|
67
|
+
- "No, plain language is fine" → require_gherkin: false
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Phase 6: Write config
|
|
71
|
+
Create .planning/spec-config.json with:
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"output_dir": ".planning/specs",
|
|
75
|
+
"id_prefix": "SPEC",
|
|
76
|
+
"audience": "[from Q2]",
|
|
77
|
+
"default_tier": "[from Q3]",
|
|
78
|
+
|
|
79
|
+
"require_ascii_wireframes": true,
|
|
80
|
+
"require_gherkin": [from Q5],
|
|
81
|
+
"require_priorities": true,
|
|
82
|
+
|
|
83
|
+
"min_edge_cases": [from Q4],
|
|
84
|
+
"min_out_of_scope": [from Q4],
|
|
85
|
+
"max_open_questions": [from Q4],
|
|
86
|
+
|
|
87
|
+
"require_p0_coverage": true,
|
|
88
|
+
"require_all_states": true,
|
|
89
|
+
"require_nonfunctional_requirements": true,
|
|
90
|
+
"require_analytics_events": true,
|
|
91
|
+
|
|
92
|
+
"agents": {
|
|
93
|
+
"micro_tier": [],
|
|
94
|
+
"standard_tier": ["acceptance-writer", "spec-checker"],
|
|
95
|
+
"full_tier": ["ux-designer", "data-modeler", "acceptance-writer", "synthesizer", "spec-checker"]
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Phase 7: Confirmation
|
|
101
|
+
Print:
|
|
102
|
+
- Config file location
|
|
103
|
+
- Summary of choices
|
|
104
|
+
- Suggest: "Run /gss:new-spec to create your first spec"
|
|
105
|
+
|
|
106
|
+
</process>
|
|
107
|
+
|
|
108
|
+
<presets>
|
|
109
|
+
## Audience Presets
|
|
110
|
+
|
|
111
|
+
### solo
|
|
112
|
+
- Lighter detail requirements
|
|
113
|
+
- min_edge_cases: 2
|
|
114
|
+
- Skip synthesizer agent
|
|
115
|
+
- Faster iteration
|
|
116
|
+
|
|
117
|
+
### small_team
|
|
118
|
+
- Standard detail
|
|
119
|
+
- min_edge_cases: 3
|
|
120
|
+
- All agents for full tier
|
|
121
|
+
- Balanced rigor
|
|
122
|
+
|
|
123
|
+
### external
|
|
124
|
+
- Maximum detail
|
|
125
|
+
- min_edge_cases: 5
|
|
126
|
+
- All agents always
|
|
127
|
+
- No assumptions about shared context
|
|
128
|
+
- require_ascii_wireframes: true
|
|
129
|
+
|
|
130
|
+
## Strictness Presets
|
|
131
|
+
|
|
132
|
+
### relaxed
|
|
133
|
+
- min_edge_cases: 1
|
|
134
|
+
- min_out_of_scope: 1
|
|
135
|
+
- max_open_questions: 5
|
|
136
|
+
- Good for early exploration
|
|
137
|
+
|
|
138
|
+
### standard
|
|
139
|
+
- min_edge_cases: 3
|
|
140
|
+
- min_out_of_scope: 2
|
|
141
|
+
- max_open_questions: 3
|
|
142
|
+
- Recommended for most teams
|
|
143
|
+
|
|
144
|
+
### strict
|
|
145
|
+
- min_edge_cases: 5
|
|
146
|
+
- min_out_of_scope: 3
|
|
147
|
+
- max_open_questions: 2
|
|
148
|
+
- For high-stakes features or external teams
|
|
149
|
+
</presets>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gss:update-spec
|
|
3
|
+
description: Update an existing spec package
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Write
|
|
8
|
+
- Task
|
|
9
|
+
- AskUserQuestion
|
|
10
|
+
---
|
|
11
|
+
<objective>
|
|
12
|
+
Update an existing spec package after scope changes, UX changes, or new constraints.
|
|
13
|
+
Re-run the spec checker and update STATE.md.
|
|
14
|
+
</objective>
|
|
15
|
+
|
|
16
|
+
<execution_context>
|
|
17
|
+
@./.claude/get-shit-specd/workflows/create-spec.md
|
|
18
|
+
</execution_context>
|
|
19
|
+
|
|
20
|
+
<process>
|
|
21
|
+
1. Ask for spec_id or detect from .planning/specs/ if only one exists.
|
|
22
|
+
2. Read existing files.
|
|
23
|
+
3. Ask only questions needed to resolve changes.
|
|
24
|
+
4. Patch files and re-run spec_check.
|
|
25
|
+
5. Update STATE.md.
|
|
26
|
+
</process>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.2.0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Acceptance Patterns
|
|
2
|
+
|
|
3
|
+
Write acceptance as testable scenarios.
|
|
4
|
+
|
|
5
|
+
Coverage set (minimum):
|
|
6
|
+
- Happy path
|
|
7
|
+
- Validation error
|
|
8
|
+
- Permission denied
|
|
9
|
+
- Empty state
|
|
10
|
+
- Failure and retry
|
|
11
|
+
- Analytics events emitted
|
|
12
|
+
- Performance requirement (if stated)
|
|
13
|
+
- Accessibility requirement (if stated)
|
|
14
|
+
|
|
15
|
+
Style:
|
|
16
|
+
- Prefer Gherkin (Given/When/Then)
|
|
17
|
+
- Keep each scenario independent
|
|
18
|
+
- Use concrete values, not “works” or “properly”
|
|
19
|
+
- If the UI is specified, criteria must reference exact labels and states
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Product Questioning Protocol (Spec Intake)
|
|
2
|
+
|
|
3
|
+
Goal: Convert a vague idea into a testable spec package.
|
|
4
|
+
|
|
5
|
+
Principles:
|
|
6
|
+
- Ask the minimum number of questions that change build decisions.
|
|
7
|
+
- If unknown, write explicit assumptions and track them as Open Questions.
|
|
8
|
+
- Prefer outcomes over implementation.
|
|
9
|
+
- Enumerate states. Most spec failures are missing empty/loading/error/permission states.
|
|
10
|
+
|
|
11
|
+
Question stack (ask in this order):
|
|
12
|
+
|
|
13
|
+
1) User and context
|
|
14
|
+
- Who is the user?
|
|
15
|
+
- What is the moment they need this?
|
|
16
|
+
- What do they do today?
|
|
17
|
+
|
|
18
|
+
2) Problem and desired outcome
|
|
19
|
+
- What is painful today?
|
|
20
|
+
- What does “better” look like in 1-2 sentences?
|
|
21
|
+
- What is the smallest v1 that delivers the outcome?
|
|
22
|
+
|
|
23
|
+
3) Scope boundaries
|
|
24
|
+
- What must be in v1?
|
|
25
|
+
- What is explicitly out of scope?
|
|
26
|
+
- What constraints matter (time, policy, platform, performance)?
|
|
27
|
+
|
|
28
|
+
4) UX and states
|
|
29
|
+
- What is the primary flow?
|
|
30
|
+
- What are the key screens?
|
|
31
|
+
- What are the loading/empty/error states?
|
|
32
|
+
- What are the permissions and roles?
|
|
33
|
+
|
|
34
|
+
5) Acceptance and verification
|
|
35
|
+
- What must be true for you to say “this is done”?
|
|
36
|
+
- What is the highest-risk edge case?
|
|
37
|
+
- What can we measure?
|
|
38
|
+
|
|
39
|
+
Always end intake with:
|
|
40
|
+
- Top 5 ambiguities that would change the build
|
|
41
|
+
- Assumptions list
|
|
42
|
+
- Open questions list with owners and dates
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Spec Config (Preferences)
|
|
2
|
+
|
|
3
|
+
These preferences drive how specs are written and how strict the checker is.
|
|
4
|
+
|
|
5
|
+
## Full Configuration
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
// Output
|
|
10
|
+
"output_dir": ".planning/specs",
|
|
11
|
+
"id_prefix": "SPEC",
|
|
12
|
+
|
|
13
|
+
// Audience (affects detail level and agent usage)
|
|
14
|
+
"audience": "solo | small_team | external",
|
|
15
|
+
|
|
16
|
+
// Default tier (can override per spec)
|
|
17
|
+
"default_tier": "standard",
|
|
18
|
+
|
|
19
|
+
// Content requirements
|
|
20
|
+
"require_ascii_wireframes": true,
|
|
21
|
+
"require_gherkin": true,
|
|
22
|
+
"require_priorities": true,
|
|
23
|
+
|
|
24
|
+
// Enforcement thresholds
|
|
25
|
+
"min_edge_cases": 3,
|
|
26
|
+
"min_out_of_scope": 2,
|
|
27
|
+
"max_open_questions": 3,
|
|
28
|
+
|
|
29
|
+
// Quality gates
|
|
30
|
+
"require_p0_coverage": true,
|
|
31
|
+
"require_all_states": true,
|
|
32
|
+
"require_nonfunctional_requirements": true,
|
|
33
|
+
"require_analytics_events": true,
|
|
34
|
+
|
|
35
|
+
// Agent configuration
|
|
36
|
+
"agents": {
|
|
37
|
+
"micro_tier": [],
|
|
38
|
+
"standard_tier": ["acceptance-writer", "spec-checker"],
|
|
39
|
+
"full_tier": ["ux-designer", "data-modeler", "acceptance-writer", "synthesizer", "spec-checker"]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Audience Presets
|
|
45
|
+
|
|
46
|
+
**solo** (just you + AI):
|
|
47
|
+
- Lighter detail, faster iteration
|
|
48
|
+
- Skip synthesizer (you hold context)
|
|
49
|
+
- min_edge_cases: 2
|
|
50
|
+
|
|
51
|
+
**small_team** (2-5 close collaborators):
|
|
52
|
+
- Standard detail
|
|
53
|
+
- All agents for Full tier
|
|
54
|
+
- min_edge_cases: 3
|
|
55
|
+
|
|
56
|
+
**external** (contractors, external team):
|
|
57
|
+
- Maximum detail, no assumptions
|
|
58
|
+
- All agents always
|
|
59
|
+
- min_edge_cases: 5
|
|
60
|
+
- require_ascii_wireframes: true (no Figma assumptions)
|
|
61
|
+
|
|
62
|
+
## Tier Behavior
|
|
63
|
+
|
|
64
|
+
**Micro tier:**
|
|
65
|
+
- Single SPEC.md file
|
|
66
|
+
- 3 intake questions
|
|
67
|
+
- No agents
|
|
68
|
+
- Fast path for simple changes
|
|
69
|
+
|
|
70
|
+
**Standard tier:**
|
|
71
|
+
- BRIEF, SCOPE, ACCEPTANCE
|
|
72
|
+
- 10 intake questions
|
|
73
|
+
- acceptance-writer + spec-checker agents
|
|
74
|
+
- Most features
|
|
75
|
+
|
|
76
|
+
**Full tier:**
|
|
77
|
+
- All 5 files
|
|
78
|
+
- All intake questions
|
|
79
|
+
- All agents (drafting + quality)
|
|
80
|
+
- Complex multi-part features
|
|
81
|
+
|
|
82
|
+
## Installation
|
|
83
|
+
|
|
84
|
+
Run `/gss:setup` to create .planning/spec-config.json interactively.
|
|
85
|
+
|
|
86
|
+
If a project already has config, GSS respects it and doesn't overwrite.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# UX Writing and Brand Notes
|
|
2
|
+
|
|
3
|
+
Goal: UI text that is clear, short, and consistent.
|
|
4
|
+
|
|
5
|
+
Rules:
|
|
6
|
+
- Use active voice
|
|
7
|
+
- Prefer specific labels over clever ones
|
|
8
|
+
- Error messages: say what happened, why, and what to do next
|
|
9
|
+
- Avoid jargon unless the user is expert
|
|
10
|
+
- Always include:
|
|
11
|
+
- primary CTA label
|
|
12
|
+
- secondary action label (if exists)
|
|
13
|
+
- empty state copy
|
|
14
|
+
- error state copy
|
|
15
|
+
- success confirmation (toast or inline)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Acceptance
|
|
2
|
+
|
|
3
|
+
Definition of done
|
|
4
|
+
- All acceptance scenarios pass
|
|
5
|
+
- Observability goals met per DATA.md
|
|
6
|
+
- Constraints satisfied per SCOPE.md
|
|
7
|
+
|
|
8
|
+
## Gherkin scenarios
|
|
9
|
+
|
|
10
|
+
```gherkin
|
|
11
|
+
Feature: {{FEATURE_NAME}}
|
|
12
|
+
|
|
13
|
+
Scenario: Happy path
|
|
14
|
+
Given {{GIVEN}}
|
|
15
|
+
When {{WHEN}}
|
|
16
|
+
Then {{THEN}}
|
|
17
|
+
|
|
18
|
+
Scenario: Validation error
|
|
19
|
+
Given {{GIVEN}}
|
|
20
|
+
When {{WHEN}}
|
|
21
|
+
Then {{THEN}}
|
|
22
|
+
|
|
23
|
+
Scenario: Permission denied
|
|
24
|
+
Given {{GIVEN}}
|
|
25
|
+
When {{WHEN}}
|
|
26
|
+
Then {{THEN}}
|
|
27
|
+
|
|
28
|
+
Scenario: Empty state
|
|
29
|
+
Given {{GIVEN}}
|
|
30
|
+
When {{WHEN}}
|
|
31
|
+
Then {{THEN}}
|
|
32
|
+
|
|
33
|
+
Scenario: Failure recovery
|
|
34
|
+
Given {{GIVEN}}
|
|
35
|
+
When {{WHEN}}
|
|
36
|
+
Then {{THEN}}
|
|
37
|
+
|
|
38
|
+
Scenario: Key events emitted
|
|
39
|
+
Given {{GIVEN}}
|
|
40
|
+
When {{WHEN}}
|
|
41
|
+
Then events include {{EVENTS}}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Verification notes
|
|
45
|
+
|
|
46
|
+
What must be demonstrably true (engineering determines how to verify):
|
|
47
|
+
- {{VERIFICATION_1}}
|
|
48
|
+
- {{VERIFICATION_2}}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# SPEC: {{SPEC_NAME}}
|
|
2
|
+
Owner: {{OWNER}}
|
|
3
|
+
Date: {{DATE}}
|
|
4
|
+
Status: Draft | Review | Ready
|
|
5
|
+
|
|
6
|
+
Problem
|
|
7
|
+
{{PROBLEM}}
|
|
8
|
+
|
|
9
|
+
User and context
|
|
10
|
+
{{USER_CONTEXT}}
|
|
11
|
+
|
|
12
|
+
JTBD
|
|
13
|
+
When {{SITUATION}}, I want to {{MOTIVATION}}, so I can {{OUTCOME}}.
|
|
14
|
+
|
|
15
|
+
Goal (v1)
|
|
16
|
+
{{GOAL}}
|
|
17
|
+
|
|
18
|
+
Success metrics
|
|
19
|
+
{{METRICS}}
|
|
20
|
+
|
|
21
|
+
Constraints
|
|
22
|
+
{{CONSTRAINTS}}
|
|
23
|
+
|
|
24
|
+
Risks
|
|
25
|
+
{{RISKS}}
|
|
26
|
+
|
|
27
|
+
Assumptions
|
|
28
|
+
{{ASSUMPTIONS}}
|
|
29
|
+
|
|
30
|
+
Open questions
|
|
31
|
+
{{OPEN_QUESTIONS}}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Data and behavior
|
|
2
|
+
|
|
3
|
+
## Entities impacted
|
|
4
|
+
- {{ENTITY_1}}
|
|
5
|
+
|
|
6
|
+
## Permissions
|
|
7
|
+
- Roles: {{ROLES}}
|
|
8
|
+
- Read rules: {{READ_RULES}}
|
|
9
|
+
- Write rules: {{WRITE_RULES}}
|
|
10
|
+
|
|
11
|
+
## State machine
|
|
12
|
+
- States: {{STATES}}
|
|
13
|
+
- Transitions: {{TRANSITIONS}}
|
|
14
|
+
|
|
15
|
+
## Integrations
|
|
16
|
+
- {{INTEGRATION_1}}
|
|
17
|
+
|
|
18
|
+
## Observability goals
|
|
19
|
+
|
|
20
|
+
What we need to know (engineering determines implementation):
|
|
21
|
+
- Success/failure visibility: {{SUCCESS_FAILURE_GOAL}}
|
|
22
|
+
- Performance visibility: {{PERF_GOAL}}
|
|
23
|
+
- Security visibility: {{SECURITY_GOAL}}
|
|
24
|
+
|
|
25
|
+
## Edge cases
|
|
26
|
+
|
|
27
|
+
Scenarios that must be handled:
|
|
28
|
+
1. {{EDGE_1}}
|
|
29
|
+
2. {{EDGE_2}}
|
|
30
|
+
|
|
31
|
+
## Data considerations
|
|
32
|
+
|
|
33
|
+
- New data: {{NEW_DATA}}
|
|
34
|
+
- Migration needs: {{MIGRATION_NEEDS}}
|