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.
Files changed (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +145 -0
  3. package/bin/gss.ts +160 -0
  4. package/claude/agents/gss-acceptance-writer.md +58 -0
  5. package/claude/agents/gss-data-modeler.md +67 -0
  6. package/claude/agents/gss-product-researcher.md +56 -0
  7. package/claude/agents/gss-spec-checker.md +87 -0
  8. package/claude/agents/gss-spec-synthesizer.md +68 -0
  9. package/claude/agents/gss-ux-designer.md +41 -0
  10. package/claude/commands/gss/handoff.md +24 -0
  11. package/claude/commands/gss/help.md +57 -0
  12. package/claude/commands/gss/new-spec.md +51 -0
  13. package/claude/commands/gss/progress.md +18 -0
  14. package/claude/commands/gss/review-spec.md +23 -0
  15. package/claude/commands/gss/settings.md +20 -0
  16. package/claude/commands/gss/setup.md +149 -0
  17. package/claude/commands/gss/update-spec.md +26 -0
  18. package/claude/get-shit-specd/VERSION +1 -0
  19. package/claude/get-shit-specd/references/acceptance-patterns.md +19 -0
  20. package/claude/get-shit-specd/references/product-questioning.md +42 -0
  21. package/claude/get-shit-specd/references/spec-config.md +86 -0
  22. package/claude/get-shit-specd/references/ux-brand.md +15 -0
  23. package/claude/get-shit-specd/templates/acceptance.md +48 -0
  24. package/claude/get-shit-specd/templates/brief.md +31 -0
  25. package/claude/get-shit-specd/templates/data.md +34 -0
  26. package/claude/get-shit-specd/templates/handoff-to-gsd.md +21 -0
  27. package/claude/get-shit-specd/templates/scope.md +25 -0
  28. package/claude/get-shit-specd/templates/spec-state.md +24 -0
  29. package/claude/get-shit-specd/templates/ux.md +41 -0
  30. package/claude/get-shit-specd/workflows/create-spec.md +132 -0
  31. package/claude/get-shit-specd/workflows/handoff.md +43 -0
  32. package/claude/get-shit-specd/workflows/review-spec.md +35 -0
  33. package/examples/SPEC-003-watermarking-service/00-BRIEF.md +52 -0
  34. package/examples/SPEC-003-watermarking-service/01-SCOPE.md +46 -0
  35. package/examples/SPEC-003-watermarking-service/04-ACCEPTANCE.md +98 -0
  36. package/examples/SPEC-003-watermarking-service/HANDOFF.md +146 -0
  37. package/examples/SPEC-003-watermarking-service/REVIEW.md +84 -0
  38. package/examples/SPEC-003-watermarking-service/STATE.md +42 -0
  39. package/package.json +44 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Brannon Lucas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,145 @@
1
+ # get-shit-specd (GSS)
2
+
3
+ Spec-first development workflow for [Claude Code](https://claude.ai/code). Transform vague ideas into engineering-ready specifications.
4
+
5
+ ## What is GSS?
6
+
7
+ GSS is a structured workflow that helps you think through features **before** writing code. It guides you through:
8
+
9
+ 1. **Problem Definition** — What are you solving and for whom?
10
+ 2. **Scope** — What's in, what's out, what are the dependencies?
11
+ 3. **UX Design** — Screens, flows, states, copy (Full tier only)
12
+ 4. **Data Modeling** — Entities, permissions, state machines (Full tier only)
13
+ 5. **Acceptance Criteria** — Gherkin scenarios that define "done"
14
+
15
+ The output is an engineering-ready handoff document with requirements mapped to testable acceptance criteria.
16
+
17
+ ## Requirements
18
+
19
+ - [Bun](https://bun.sh) v1.0 or later
20
+
21
+ ```bash
22
+ # Install Bun (if needed)
23
+ curl -fsSL https://bun.sh/install | bash
24
+ ```
25
+
26
+ ## Installation
27
+
28
+ ```bash
29
+ cd your-project
30
+ bunx get-shit-specd init
31
+ ```
32
+
33
+ This creates:
34
+ - `.claude/commands/gss/` — Slash commands
35
+ - `.claude/agents/gss-*` — AI agents for drafting and review
36
+ - `.claude/get-shit-specd/` — Workflows, templates, references
37
+ - `.planning/spec-config.json` — Your preferences
38
+ - `.planning/specs/` — Where specs live
39
+
40
+ ## Usage
41
+
42
+ After installation, use these commands in Claude Code:
43
+
44
+ | Command | Description |
45
+ |---------|-------------|
46
+ | `/gss:setup` | Configure preferences (audience, tier, strictness) |
47
+ | `/gss:new-spec` | Create a new spec package |
48
+ | `/gss:review-spec <id>` | Red-team a spec for gaps |
49
+ | `/gss:handoff <id>` | Generate engineering requirements |
50
+ | `/gss:progress` | Show spec inventory and status |
51
+ | `/gss:help` | Show all commands |
52
+
53
+ ### Typical Workflow
54
+
55
+ ```
56
+ /gss:setup # One-time configuration
57
+ /gss:new-spec # Start a new feature spec
58
+ → Answer intake questions
59
+ → AI drafts spec files
60
+ → Quality gates enforce completeness
61
+ /gss:review-spec SPEC-001 # Red-team for gaps
62
+ /gss:handoff SPEC-001 # Generate engineering doc
63
+ ```
64
+
65
+ ## Spec Tiers
66
+
67
+ | Tier | Files | Best For |
68
+ |------|-------|----------|
69
+ | **Micro** | Single BRIEF+SCOPE combined | Bug fixes, small changes |
70
+ | **Standard** | BRIEF + SCOPE + ACCEPTANCE | Most features |
71
+ | **Full** | All 5 files including UX + DATA | Complex features, new surfaces |
72
+
73
+ ## Configuration
74
+
75
+ Edit `.planning/spec-config.json`:
76
+
77
+ ```json
78
+ {
79
+ "audience": "external", // solo, small_team, external
80
+ "default_tier": "standard", // micro, standard, full
81
+ "min_edge_cases": 5, // Minimum edge cases required
82
+ "min_out_of_scope": 3, // Minimum out-of-scope items
83
+ "max_open_questions": 2, // Maximum unresolved questions
84
+ "require_gherkin": true // Require Gherkin format
85
+ }
86
+ ```
87
+
88
+ ### Audience Presets
89
+
90
+ | Audience | Style | Edge Cases | Out of Scope |
91
+ |----------|-------|------------|--------------|
92
+ | `solo` | Informal, minimal docs | 2+ | 1+ |
93
+ | `small_team` | Clear, some context | 3+ | 2+ |
94
+ | `external` | Formal, full context | 5+ | 3+ |
95
+
96
+ ## Spec Package Structure
97
+
98
+ A complete spec package (Standard tier):
99
+
100
+ ```
101
+ .planning/specs/SPEC-001-feature-name/
102
+ ├── 00-BRIEF.md # Problem, JTBD, success metrics
103
+ ├── 01-SCOPE.md # In/out scope, dependencies, NFRs
104
+ ├── 04-ACCEPTANCE.md # Gherkin scenarios, edge cases
105
+ ├── STATE.md # Status tracking
106
+ ├── REVIEW.md # Red-team findings (after review)
107
+ └── HANDOFF.md # Engineering requirements (after handoff)
108
+ ```
109
+
110
+ Full tier adds:
111
+ - `02-UX.md` — Screens, flows, states, copy
112
+ - `03-DATA.md` — Entities, permissions, state machines
113
+
114
+ ## Philosophy: WHAT/WHY, not HOW/WHEN
115
+
116
+ GSS specs define:
117
+ - **WHAT** must be true (outcomes, acceptance criteria)
118
+ - **WHY** it matters (problem, success metrics)
119
+
120
+ They do NOT define:
121
+ - **HOW** to build it (architecture, file paths, implementation)
122
+ - **WHEN** to ship it (phases, sprints, task breakdowns)
123
+
124
+ Engineering determines HOW and WHEN during implementation.
125
+
126
+ ## Example
127
+
128
+ See `examples/SPEC-003-watermarking-service/` for a complete spec package demonstrating:
129
+ - Problem definition with clear JTBD
130
+ - Scoped outcomes with P0/P1/P2 priorities
131
+ - 8 Gherkin acceptance scenarios
132
+ - 8 edge cases with expected behaviors
133
+ - Engineering handoff with requirement IDs
134
+
135
+ ## Updating
136
+
137
+ ```bash
138
+ bunx get-shit-specd update
139
+ ```
140
+
141
+ This updates GSS files while preserving your `spec-config.json`.
142
+
143
+ ## License
144
+
145
+ MIT
package/bin/gss.ts ADDED
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env bun
2
+
3
+ import { existsSync, mkdirSync, cpSync, readFileSync, writeFileSync } from "fs";
4
+ import { dirname, join, resolve } from "path";
5
+
6
+ const packageRoot = resolve(import.meta.dir, "..");
7
+ const packageJson = JSON.parse(
8
+ readFileSync(join(packageRoot, "package.json"), "utf-8")
9
+ ) as { version: string };
10
+ const VERSION = packageJson.version;
11
+
12
+ const command = process.argv[2];
13
+ const targetDir = process.cwd();
14
+
15
+ interface SpecConfig {
16
+ audience: "solo" | "small_team" | "external";
17
+ default_tier: "micro" | "standard" | "full";
18
+ min_edge_cases: number;
19
+ min_out_of_scope: number;
20
+ max_open_questions: number;
21
+ require_gherkin: boolean;
22
+ agents: {
23
+ micro_tier: string[];
24
+ standard_tier: string[];
25
+ full_tier: string[];
26
+ };
27
+ }
28
+
29
+ function printHelp(): void {
30
+ console.log(`
31
+ get-shit-specd v${VERSION}
32
+ Spec-first development workflow for Claude Code
33
+
34
+ USAGE:
35
+ bunx get-shit-specd <command>
36
+ npx get-shit-specd <command>
37
+
38
+ COMMANDS:
39
+ init Install GSS into current project's .claude/ directory
40
+ update Update GSS files to latest version (preserves spec-config.json)
41
+ version Show installed version
42
+
43
+ AFTER INSTALL:
44
+ Use /gss:help in Claude Code to see available commands:
45
+ - /gss:setup Configure spec preferences
46
+ - /gss:new-spec Create a new spec package
47
+ - /gss:review-spec <id> Red-team a spec
48
+ - /gss:handoff <id> Generate engineering requirements
49
+ - /gss:progress Show spec inventory
50
+ `);
51
+ }
52
+
53
+ function init(update: boolean = false): void {
54
+ const claudeDir = join(targetDir, ".claude");
55
+ const planningDir = join(targetDir, ".planning");
56
+
57
+ // Create directories if needed
58
+ if (!existsSync(claudeDir)) {
59
+ mkdirSync(claudeDir, { recursive: true });
60
+ }
61
+ if (!existsSync(planningDir)) {
62
+ mkdirSync(planningDir, { recursive: true });
63
+ }
64
+
65
+ // Copy commands
66
+ const commandsSrc = join(packageRoot, "claude", "commands", "gss");
67
+ const commandsDest = join(claudeDir, "commands", "gss");
68
+ if (existsSync(commandsSrc)) {
69
+ mkdirSync(dirname(commandsDest), { recursive: true });
70
+ cpSync(commandsSrc, commandsDest, { recursive: true });
71
+ console.log(" + .claude/commands/gss/");
72
+ }
73
+
74
+ // Copy agents
75
+ const agentsSrc = join(packageRoot, "claude", "agents");
76
+ const agentsDest = join(claudeDir, "agents");
77
+ if (existsSync(agentsSrc)) {
78
+ mkdirSync(agentsDest, { recursive: true });
79
+ cpSync(agentsSrc, agentsDest, { recursive: true });
80
+ console.log(" + .claude/agents/gss-*");
81
+ }
82
+
83
+ // Copy get-shit-specd core
84
+ const coreSrc = join(packageRoot, "claude", "get-shit-specd");
85
+ const coreDest = join(claudeDir, "get-shit-specd");
86
+ if (existsSync(coreSrc)) {
87
+ cpSync(coreSrc, coreDest, { recursive: true });
88
+ console.log(" + .claude/get-shit-specd/");
89
+ }
90
+
91
+ // Create default spec-config.json if not exists (skip on update)
92
+ const configPath = join(planningDir, "spec-config.json");
93
+ if (!existsSync(configPath) && !update) {
94
+ const defaultConfig: SpecConfig = {
95
+ audience: "solo",
96
+ default_tier: "standard",
97
+ min_edge_cases: 3,
98
+ min_out_of_scope: 2,
99
+ max_open_questions: 3,
100
+ require_gherkin: false,
101
+ agents: {
102
+ micro_tier: [],
103
+ standard_tier: ["acceptance-writer", "spec-checker"],
104
+ full_tier: [
105
+ "ux-designer",
106
+ "data-modeler",
107
+ "acceptance-writer",
108
+ "synthesizer",
109
+ "spec-checker",
110
+ ],
111
+ },
112
+ };
113
+ writeFileSync(configPath, JSON.stringify(defaultConfig, null, 2));
114
+ console.log(" + .planning/spec-config.json (default config)");
115
+ } else if (existsSync(configPath)) {
116
+ console.log(" ~ .planning/spec-config.json (preserved)");
117
+ }
118
+
119
+ // Create specs directory
120
+ const specsDir = join(planningDir, "specs");
121
+ if (!existsSync(specsDir)) {
122
+ mkdirSync(specsDir, { recursive: true });
123
+ console.log(" + .planning/specs/");
124
+ }
125
+
126
+ console.log(`
127
+ GSS ${update ? "updated" : "installed"} successfully!
128
+
129
+ Next steps:
130
+ 1. Run /gss:setup in Claude Code to configure preferences
131
+ 2. Run /gss:new-spec to create your first spec
132
+ 3. Run /gss:help for all available commands
133
+ `);
134
+ }
135
+
136
+ switch (command) {
137
+ case "init":
138
+ console.log(`\nInstalling get-shit-specd v${VERSION}...\n`);
139
+ init(false);
140
+ break;
141
+ case "update":
142
+ console.log(`\nUpdating get-shit-specd to v${VERSION}...\n`);
143
+ init(true);
144
+ break;
145
+ case "version":
146
+ case "-v":
147
+ case "--version":
148
+ console.log(`get-shit-specd v${VERSION}`);
149
+ break;
150
+ case "help":
151
+ case "-h":
152
+ case "--help":
153
+ case undefined:
154
+ printHelp();
155
+ break;
156
+ default:
157
+ console.error(`Unknown command: ${command}`);
158
+ printHelp();
159
+ process.exit(1);
160
+ }
@@ -0,0 +1,58 @@
1
+ # gss-acceptance-writer
2
+
3
+ Role: Draft 04-ACCEPTANCE.md from SCOPE, UX, and DATA.
4
+
5
+ ## Input
6
+ You receive:
7
+ - 01-SCOPE.md (in/out scope with priorities)
8
+ - 02-UX.md (screens, states, flows) - if Full tier
9
+ - 03-DATA.md (entities, permissions, edge cases) - if Full tier
10
+
11
+ ## Output
12
+ Draft 04-ACCEPTANCE.md with:
13
+
14
+ ### Definition of Done
15
+ Standard checklist. Don't over-customize.
16
+
17
+ ### Gherkin Scenarios
18
+ Write scenarios using Given/When/Then format.
19
+
20
+ REQUIRED scenarios (minimum coverage set):
21
+ 1. **Happy path** - Main success flow works
22
+ 2. **Validation error** - Bad input handled gracefully
23
+ 3. **Permission denied** - Unauthorized access blocked
24
+ 4. **Empty state** - No data case handled
25
+ 5. **Failure recovery** - System failure handled gracefully
26
+ 6. **Key events emitted** - Observability verified
27
+
28
+ ADDITIONAL scenarios:
29
+ - One scenario per P0 scope item (from SCOPE.md)
30
+ - One scenario per edge case (from DATA.md)
31
+
32
+ ### Scenario Writing Rules
33
+ - **Given**: Setup state. Be specific. "Given a deck with 3 generated cards"
34
+ - **When**: Single action. "When the user clicks Purchase"
35
+ - **Then**: Observable outcome. "Then the order confirmation is displayed"
36
+
37
+ Avoid:
38
+ - Vague terms: "works correctly", "is valid", "properly handles"
39
+ - Implementation details: "the database is updated" (not observable)
40
+ - Multiple actions in When: split into separate scenarios
41
+
42
+ ### Verification Notes
43
+ What must be demonstrably true. Engineering determines HOW to verify.
44
+
45
+ NOT: "Unit test the watermark function"
46
+ YES: "Watermarked images are visually distinguishable from clean images"
47
+
48
+ ## Rules
49
+ - Every P0 scope item MUST have a scenario. No exceptions.
50
+ - Every edge case from DATA.md SHOULD have a scenario.
51
+ - Scenarios must be objectively testable - no judgment calls.
52
+
53
+ ## Quality Check
54
+ Before submitting, verify:
55
+ - [ ] All 6 required scenario types present
56
+ - [ ] Every P0 scope item has a scenario
57
+ - [ ] No vague language ("works", "properly", "correctly")
58
+ - [ ] Each scenario has exactly one When clause
@@ -0,0 +1,67 @@
1
+ # gss-data-modeler
2
+
3
+ Role: Draft 03-DATA.md from BRIEF, SCOPE, and UX (if available).
4
+
5
+ ## Input
6
+ You receive:
7
+ - 00-BRIEF.md (problem, goal)
8
+ - 01-SCOPE.md (in/out scope)
9
+ - 02-UX.md (screens and flows, if Full tier)
10
+
11
+ ## Output
12
+ Draft 03-DATA.md with:
13
+
14
+ ### Entities Impacted
15
+ List tables/collections affected. Note if new or modified.
16
+
17
+ ### Permissions
18
+ - **Roles**: Who can do what (anonymous, authenticated, owner, admin)
19
+ - **Read rules**: Who sees what data
20
+ - **Write rules**: Who modifies what data
21
+
22
+ Be explicit. "User can edit their own decks" not "users can edit decks."
23
+
24
+ ### State Machine
25
+ If the feature has state transitions:
26
+ - Draw the states
27
+ - Define transitions (what triggers each)
28
+ - Note any irreversible transitions
29
+
30
+ ### Integrations
31
+ External systems touched:
32
+ - APIs called
33
+ - Webhooks received
34
+ - Third-party services
35
+
36
+ ### Observability Goals
37
+ What do we need to know? (Not specific log formats - that's engineering's job)
38
+ - Success/failure visibility
39
+ - Performance visibility
40
+ - Security/audit visibility
41
+
42
+ ### Edge Cases
43
+ MINIMUM 3 edge cases. This is where specs fail.
44
+
45
+ Think about:
46
+ - What if it fails halfway?
47
+ - What if user does action twice?
48
+ - What if related data is deleted?
49
+ - What if permissions change mid-flow?
50
+ - What about race conditions?
51
+ - What about refunds/reversals?
52
+
53
+ ### Data Considerations
54
+ - New data: What's being stored that wasn't before?
55
+ - Migration: Does existing data need updating?
56
+
57
+ ## Rules
58
+ - Edge cases are NOT optional. Minimum 3.
59
+ - Permissions must be explicit per role.
60
+ - State machines need ALL states, including failure states.
61
+
62
+ ## Quality Check
63
+ Before submitting, verify:
64
+ - [ ] At least 3 edge cases documented
65
+ - [ ] Permissions explicit for each role
66
+ - [ ] State machine has failure/error states
67
+ - [ ] No vague language ("users can access" → WHO specifically?)
@@ -0,0 +1,56 @@
1
+ # gss-product-researcher
2
+
3
+ Role: Quick domain and competitive scan when the problem space is unfamiliar.
4
+
5
+ ## When to Use
6
+ - User is building something in an unfamiliar domain
7
+ - Multiple valid approaches exist and user needs context
8
+ - Competitive landscape would inform scope decisions
9
+ - Technical constraints are unclear
10
+
11
+ ## NOT When to Use
12
+ - User already knows the domain well
13
+ - Simple feature with clear requirements
14
+ - Internal tooling with no competitors
15
+
16
+ ## Input
17
+ You receive:
18
+ - User's initial request or problem statement
19
+ - Any context about what they're building
20
+
21
+ ## Process
22
+ 1. **Domain scan**: What does this problem space look like?
23
+ 2. **Competitor scan**: Who else solves this? How?
24
+ 3. **Pattern scan**: What are common approaches?
25
+ 4. **Risk scan**: What typically goes wrong?
26
+
27
+ ## Output
28
+ ```
29
+ ## Research: [Topic]
30
+
31
+ ### Domain Context
32
+ [3-5 bullets on the problem space]
33
+
34
+ ### Existing Solutions
35
+ | Solution | Approach | Strengths | Weaknesses |
36
+ |----------|----------|-----------|------------|
37
+ | ... | ... | ... | ... |
38
+
39
+ ### Common Patterns
40
+ [3-5 approaches with tradeoffs]
41
+
42
+ ### Risks & Pitfalls
43
+ [5 things that commonly go wrong in this space]
44
+
45
+ ### Recommendation
46
+ [Which approach fits user's context, with reasoning]
47
+
48
+ ### Sources
49
+ [If web search used, list sources]
50
+ ```
51
+
52
+ ## Rules
53
+ - Keep it brief. 10-15 minutes of research, not a thesis.
54
+ - Focus on what changes BUILD decisions.
55
+ - If research doesn't add value, say so and skip it.
56
+ - Bias toward "you probably don't need this" for simple features.
@@ -0,0 +1,87 @@
1
+ # gss-spec-checker
2
+
3
+ Role: Enforce Ready gate. Block specs that don't meet quality bar.
4
+
5
+ ## Input
6
+ You receive:
7
+ - All spec files
8
+ - .planning/spec-config.json (enforcement settings)
9
+ - Synthesizer report (if run)
10
+
11
+ ## Configuration (from spec-config.json)
12
+ ```json
13
+ {
14
+ "min_edge_cases": 3,
15
+ "min_out_of_scope": 2,
16
+ "max_open_questions": 3,
17
+ "require_p0_coverage": true,
18
+ "require_all_states": true
19
+ }
20
+ ```
21
+
22
+ ## Checks
23
+
24
+ ### File Completeness
25
+ Based on tier:
26
+ - Micro: SPEC.md exists
27
+ - Standard: BRIEF, SCOPE, ACCEPTANCE exist
28
+ - Full: All 5 files exist
29
+
30
+ ### Edge Case Minimum
31
+ - Count edge cases in DATA.md (or ACCEPTANCE.md for Standard tier)
32
+ - FAIL if < min_edge_cases
33
+
34
+ ### Scope Clarity
35
+ - Count explicit "out of scope" items
36
+ - FAIL if < min_out_of_scope
37
+ - WARN if in-scope items lack priority (P0/P1/P2)
38
+
39
+ ### Open Questions
40
+ - Count open questions across all files
41
+ - FAIL if > max_open_questions
42
+
43
+ ### P0 Coverage (if require_p0_coverage)
44
+ - Every P0 scope item must have acceptance scenario
45
+ - FAIL if any P0 lacks scenario
46
+
47
+ ### State Completeness (if require_all_states)
48
+ - Every UX screen must have: loading, empty, error, success states
49
+ - FAIL if any screen missing states
50
+
51
+ ### Acceptance Testability
52
+ - Scan for vague language: "works", "properly", "correctly", "valid"
53
+ - WARN for each instance (suggest specific replacement)
54
+
55
+ ### Synthesizer Issues
56
+ - If synthesizer ran, any FAIL items block Ready
57
+ - WARN items are advisory
58
+
59
+ ## Output Format
60
+ ```
61
+ ## Spec Check: [SPEC-ID]
62
+
63
+ ### Status: READY | NOT READY
64
+
65
+ ### Blocking Issues (must fix)
66
+ 1. [issue] → [fix]
67
+ 2. [issue] → [fix]
68
+
69
+ ### Warnings (should fix)
70
+ 1. [issue] → [suggestion]
71
+
72
+ ### Passed Checks
73
+ - [list of passed checks]
74
+
75
+ ### Ready Gate Score
76
+ Files: ✓
77
+ Edge cases: ✓ (5/3 minimum)
78
+ Out of scope: ✓ (3/2 minimum)
79
+ Open questions: ✓ (2/3 maximum)
80
+ P0 coverage: ✓
81
+ States: ✓
82
+ ```
83
+
84
+ ## Rules
85
+ - Be strict. The point is to catch problems BEFORE engineering starts.
86
+ - Every blocking issue needs a concrete fix.
87
+ - Don't pass specs that will cause rework.
@@ -0,0 +1,68 @@
1
+ # gss-spec-synthesizer
2
+
3
+ Role: Cross-check spec files for coherence and contradictions.
4
+
5
+ ## Input
6
+ You receive all spec files:
7
+ - 00-BRIEF.md
8
+ - 01-SCOPE.md
9
+ - 02-UX.md (if exists)
10
+ - 03-DATA.md (if exists)
11
+ - 04-ACCEPTANCE.md
12
+
13
+ ## Output
14
+ A coherence report with:
15
+
16
+ ### Cross-File Checks
17
+
18
+ **SCOPE ↔ ACCEPTANCE alignment:**
19
+ - Every in-scope P0 item must have an acceptance scenario
20
+ - Every acceptance scenario must trace to a scope item
21
+ - Flag: Scope items without scenarios
22
+ - Flag: Scenarios without scope items (scope creep)
23
+
24
+ **UX ↔ DATA alignment:**
25
+ - Every UX role must appear in DATA permissions
26
+ - Every UX state must have a data condition
27
+ - Flag: Roles in UX not in DATA permissions
28
+ - Flag: States in UX without data backing
29
+
30
+ **BRIEF ↔ SCOPE alignment:**
31
+ - Goal in BRIEF should be achievable with in-scope items
32
+ - Constraints in BRIEF should appear in SCOPE NFRs
33
+ - Flag: Goals not covered by scope
34
+ - Flag: Constraints mentioned but not tracked
35
+
36
+ **DATA ↔ ACCEPTANCE alignment:**
37
+ - Every edge case should have a scenario (or explicit "not testing" note)
38
+ - Flag: Edge cases without scenarios
39
+
40
+ ### Terminology Consistency
41
+ - Same concepts should use same names across files
42
+ - Flag: "deck" vs "pack" vs "order" inconsistency
43
+ - Flag: Role names that differ between files
44
+
45
+ ### Contradiction Detection
46
+ Look for:
47
+ - Scope says X is out, but UX shows X
48
+ - Permissions say role can't do Y, but acceptance tests Y
49
+ - BRIEF says constraint Z, but SCOPE doesn't mention Z
50
+
51
+ ## Output Format
52
+ ```
53
+ ## Coherence Report
54
+
55
+ ### PASS
56
+ - [list of checks that passed]
57
+
58
+ ### WARN (should fix)
59
+ - [issues that reduce clarity but don't block]
60
+
61
+ ### FAIL (must fix before Ready)
62
+ - [contradictions, missing coverage, broken traces]
63
+ ```
64
+
65
+ ## Rules
66
+ - Be pedantic. Small inconsistencies become big bugs.
67
+ - Every flag needs a specific fix recommendation.
68
+ - Don't just list problems - show what to change.