superspecs 0.1.0 → 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.
@@ -0,0 +1,209 @@
1
+ ---
2
+ name: plan-grill
3
+ description: Relentless interview to stress-test a spec before execution. Validates every decision against the wiki and techstack. Triggers on /grill, "grill me", "stress-test the spec", "challenge the plan". Always runs after /spec, before /pick-spec.
4
+ slash_command: grill
5
+ phase: "1.3 — Plan › Grill"
6
+ ---
7
+
8
+ # Skill: plan-grill
9
+
10
+ You are a relentless interviewer. Your job is to stress-test the spec before any code is written.
11
+
12
+ A spec that survives the grill is a spec worth executing. A spec that collapses under questioning was never ready.
13
+
14
+ **Prerequisite:** `superspec/specs/<slug>/spec.md` must exist. If it doesn't, stop and say: *"Run `/spec` first. There is nothing to grill."*
15
+
16
+ ## What grilling is
17
+
18
+ Grilling walks every branch of the decision tree in the spec — one question at a time. For each question you provide your recommended answer. You wait for feedback before continuing.
19
+
20
+ You are not looking for validation. You are looking for gaps, contradictions, unstated assumptions, and decisions that haven't been made yet.
21
+
22
+ If a question can be answered by exploring the codebase or the wiki, explore them instead of asking.
23
+
24
+ ## Steps
25
+
26
+ ### 1. Load the context
27
+
28
+ Read all of the following before asking a single question:
29
+
30
+ - `superspec/specs/<slug>/DISCUSS.md` — the original decisions
31
+ - `superspec/specs/<slug>/spec.md` — the spec under review
32
+ - `superspec/wiki/techstack/profile.md` — the defined stack (if it exists)
33
+
34
+ Then perform a tiered wiki scan for context relevant to this spec:
35
+
36
+ **Tier 1 — Index scan:**
37
+ - Read `superspec/wiki/Home.md` — domain catalog and recent ingest activity
38
+ - Read only the frontmatter (`title`, `tags`, `summary`) of every page in `superspec/wiki/` (skip `raw/`, `.obsidian/`)
39
+ - Score for relevance to this feature's domain and requirements
40
+
41
+ **Tier 2 — Deep read:**
42
+ - Open the 3–5 most relevant pages in full
43
+ - Follow `[[wikilinks]]` one level deep for directly related pages
44
+
45
+ Report what you loaded. Flag any contradictions you already see before the interview begins.
46
+
47
+ ### 2. Surface pre-flight conflicts
48
+
49
+ Before the interview, scan for immediate issues:
50
+
51
+ **Wiki conflicts:** Does anything in the spec contradict established patterns, decisions, or interfaces documented in the wiki?
52
+
53
+ **Techstack conflicts:** Does the spec assume libraries, patterns, or approaches that contradict the defined techstack?
54
+
55
+ **Internal contradictions:** Does the spec contradict itself between requirements or scenarios?
56
+
57
+ Report any conflicts found as blockers. These must be resolved before continuing. If none found: "No pre-flight conflicts found."
58
+
59
+ ### 3. Run the interview
60
+
61
+ Interview relentlessly. One question at a time.
62
+
63
+ **For each question:**
64
+ 1. State the question clearly
65
+ 2. Provide your recommended answer with reasoning
66
+ 3. Wait for feedback — do not proceed until the user responds
67
+
68
+ **Question domains to cover (in order of criticality):**
69
+
70
+ **Scope & Boundaries**
71
+ - Is the "Out of Scope" section complete? What is likely to be assumed in-scope that isn't listed?
72
+ - Are there adjacent features that will be broken or need changes?
73
+ - What happens at the edges — empty state, maximum load, concurrent access?
74
+
75
+ **Requirements completeness**
76
+ - For each SHALL statement: is the success condition unambiguous? Could two developers implement it differently and both claim compliance?
77
+ - Are there implicit SHALLs not written down?
78
+ - What triggers each requirement — is the trigger explicit?
79
+
80
+ **Scenario coverage**
81
+ - For each scenario: does GIVEN capture all necessary preconditions?
82
+ - Is there a scenario for every error path mentioned in "Error Behavior"?
83
+ - What happens when the system is in an unexpected state?
84
+
85
+ **Wiki alignment**
86
+ - Does this spec reuse existing patterns, or introduce new ones? If new — is that intentional?
87
+ - Are interfaces consistent with what the wiki documents?
88
+ - Will this break any documented contract?
89
+
90
+ **Techstack alignment**
91
+ - Does every technical approach in the spec align with the defined stack?
92
+ - Are there library choices implied but not validated against the techstack?
93
+ - Will this require deviating from the stack? If so — is that decision documented?
94
+
95
+ **Testability**
96
+ - Can every scenario be tested with the current stack?
97
+ - Are there scenarios that require external services, special fixtures, or are difficult to make deterministic?
98
+ - Is "Done" defined precisely enough that a subagent can verify it without asking?
99
+
100
+ **Task decomposition (if tasks.md exists)**
101
+ - Can Wave 1 tasks truly complete independently?
102
+ - Do any tasks assume shared state that isn't in the spec?
103
+ - Is the context budget estimate realistic?
104
+
105
+ Stop the interview when:
106
+ - Every branch of the decision tree has been resolved, OR
107
+ - The user says "enough" / "I'm done"
108
+
109
+ ### 4. Write GRILL.md
110
+
111
+ After the interview, write `superspec/specs/<slug>/GRILL.md`:
112
+
113
+ ```markdown
114
+ # Grill Session: <Feature Name>
115
+
116
+ Date: <today>
117
+ Spec reviewed: superspec/specs/<slug>/spec.md
118
+
119
+ ## Pre-flight
120
+
121
+ ### Wiki conflicts
122
+ <conflicts found, or "None">
123
+
124
+ ### Techstack conflicts
125
+ <conflicts found, or "None">
126
+
127
+ ### Internal contradictions
128
+ <contradictions found, or "None">
129
+
130
+ ## Questions & Resolutions
131
+
132
+ ### Q1: <Question asked>
133
+ **Recommended:** <what you suggested>
134
+ **Resolved:** <what was decided>
135
+ **Impact:** <spec change required / no change / deferred>
136
+
137
+ ### Q2: <Question asked>
138
+ ...
139
+
140
+ ## Spec Changes Required
141
+
142
+ <List of changes to spec.md that emerged from the grill session>
143
+ - <Requirement X: needs clarification on Y>
144
+ - <Scenario Z: missing edge case for W>
145
+ - <Out of Scope: add V>
146
+
147
+ ## Deferred Questions
148
+
149
+ <Questions that were consciously deferred to implementation, with the rationale>
150
+ - [ ] <Question> — deferred because <reason>
151
+
152
+ ## Verdict
153
+
154
+ **READY** — All decision branches resolved. Proceed to `/pick-spec`.
155
+ OR
156
+ **NEEDS REVISION** — Spec must be updated before execution. Required changes listed above.
157
+ ```
158
+
159
+ ### 5. Apply spec changes
160
+
161
+ If the grill session surfaced required changes to `spec.md`:
162
+ - Apply them directly. Do not ask for permission on small clarifications.
163
+ - For structural changes (adding requirements, removing scope), summarize what changed.
164
+
165
+ ### 6. Update status.md
166
+
167
+ ```markdown
168
+ ## Phase
169
+ 1.3 — Plan › Grill ✅
170
+
171
+ ## Checklist
172
+ - [x] Discussion complete (DISCUSS.md)
173
+ - [x] Spec written
174
+ - [x] Spec grilled and stress-tested (GRILL.md)
175
+ - [x] Wiki conflicts: none / resolved
176
+ - [x] Techstack conflicts: none / resolved
177
+ - [ ] Branch created
178
+ ...
179
+ ```
180
+
181
+ ### 7. Handoff
182
+
183
+ ```
184
+ Grill complete: <slug>
185
+
186
+ Questions asked: X
187
+ Spec changes applied: Y
188
+ Deferred questions: Z
189
+
190
+ Verdict: READY / NEEDS REVISION
191
+
192
+ Next: /pick-spec <slug>
193
+ ```
194
+
195
+ If verdict is NEEDS REVISION, do not suggest `/pick-spec`. Say: *"Update the spec first, then re-run `/grill <slug>` to confirm."*
196
+
197
+ ## Output
198
+
199
+ - `superspec/specs/<slug>/GRILL.md`
200
+ - Updated `superspec/specs/<slug>/spec.md` (if changes required)
201
+ - Updated `superspec/specs/<slug>/status.md`
202
+
203
+ ## Rules
204
+
205
+ - One question at a time. Never ask two questions in the same message.
206
+ - Always provide your recommended answer. A question without a recommendation is lazy.
207
+ - If the codebase or wiki can answer the question — go read them. Do not ask the human what already exists.
208
+ - Pre-flight conflicts block the interview. Resolve them first.
209
+ - A NEEDS REVISION verdict blocks `/pick-spec`. No exceptions.
@@ -25,15 +25,40 @@ The complete spec — plus the implementation context — must fit in a fresh 20
25
25
 
26
26
  ## Steps
27
27
 
28
- ### 1. Read DISCUSS.md completely
28
+ ### 1. Read DISCUSS.md and design-context.md
29
29
 
30
30
  Read `superspec/specs/<slug>/DISCUSS.md`. Do not proceed without understanding it fully.
31
31
 
32
- ### 2. Check for existing specs in this domain
32
+ Then check for `superspec/specs/<slug>/design-context.md`. If it exists, read it completely before writing the spec. It carries design constraints from a DesignOS export — treat them as fixed inputs, not decisions to re-make:
33
33
 
34
- Read `superspec/wiki/_index.md` and any related specs in `superspec/specs/`. Note:
35
- - Patterns already established (naming, structure, error formats)
36
- - Decisions already made that this spec should be consistent with
34
+ - **Design system constraints** add to Non-Functional Requirements + Out of Scope
35
+ - **Data contract types** add an Interface/Contract section or enrich Requirements
36
+ - **Milestone structure** use as the wave structure in `tasks.md`
37
+ - **Test scaffolding** → use as starting points for GIVEN/WHEN/THEN scenarios (adapt, don't copy verbatim)
38
+ - **Open questions** → check if they were answered in `DISCUSS.md`; if not, surface them in the spec's Out of Scope or flag them
39
+
40
+ DISCUSS.md carries the human decisions. design-context.md carries the design constraints. The spec merges both.
41
+
42
+ ### 2. Query the wiki for relevant patterns
43
+
44
+ Perform a tiered wiki scan for patterns, interfaces, and decisions relevant to this feature:
45
+
46
+ **Tier 1 — Index scan:**
47
+ - Read `superspec/wiki/Home.md` — domain catalog and recent ingest activity
48
+ - Read only the frontmatter (`title`, `tags`, `summary`) of every page in `superspec/wiki/` (skip `raw/`, `.obsidian/`)
49
+ - Score for relevance to this feature's domain
50
+
51
+ **Tier 2 — Deep read:**
52
+ - Open the 3–5 most relevant pages in full
53
+ - Note:
54
+ - Existing patterns this spec should follow or extend
55
+ - Established interfaces this feature must be consistent with
56
+ - Past decisions that constrain what's being designed
57
+ - Open questions from previous features this spec might resolve
58
+
59
+ Also scan `superspec/specs/` for related specs (any status).
60
+
61
+ **Report before writing.** If established wiki patterns conflict with what's described in DISCUSS.md, flag the conflict explicitly — do not silently apply one over the other.
37
62
 
38
63
  ### 3. Write spec.md
39
64
 
@@ -160,6 +185,7 @@ If over 150k, stop and propose decomposition before proceeding.
160
185
  - [x] Discussion complete (DISCUSS.md)
161
186
  - [x] Spec written
162
187
  - [x] Spec fits context window (~Xk / 200k)
188
+ - [ ] Spec grilled and stress-tested (GRILL.md)
163
189
  - [ ] Branch created
164
190
  ...
165
191
  ```
@@ -176,9 +202,11 @@ Scenarios: Y
176
202
  Tasks: Z across W waves
177
203
  Context estimate: ~Xk / 200k ✅
178
204
 
179
- Next: /pick-spec <slug>
205
+ Next: /grill <slug>
180
206
  ```
181
207
 
208
+ Do not suggest `/pick-spec` directly. The spec must survive a grill session first.
209
+
182
210
  ## Output
183
211
 
184
212
  - `superspec/specs/<slug>/spec.md`
@@ -0,0 +1,141 @@
1
+ ---
2
+ name: tag-taxonomy
3
+ description: Maintain a controlled vocabulary of canonical tags for the wiki vault. Creates and updates _meta/taxonomy.md. Audits all wiki pages for non-canonical tags and normalizes them. Triggers on /tag-taxonomy, "fix tags", "normalize wiki tags", "audit tags".
4
+ slash_command: tag-taxonomy
5
+ phase: "3.2 — Verify › Wiki Taxonomy"
6
+ ---
7
+
8
+ # Skill: tag-taxonomy
9
+
10
+ You are maintaining tag consistency across the wiki vault.
11
+
12
+ Tags are how the Obsidian graph clusters knowledge. Without a controlled vocabulary, tags drift: "auth" and "authentication" and "Authorization" end up meaning the same thing, fragmenting the graph. This skill enforces one canonical tag per concept.
13
+
14
+ ---
15
+
16
+ ## The Taxonomy File
17
+
18
+ `superspec/wiki/_meta/taxonomy.md` is the source of truth for canonical tags.
19
+
20
+ Format:
21
+ ```markdown
22
+ ---
23
+ title: Tag Taxonomy
24
+ updated: <YYYY-MM-DD>
25
+ ---
26
+
27
+ # Tag Taxonomy
28
+
29
+ Canonical tag vocabulary for this vault. All wiki pages must use tags from this list.
30
+ Add new tags here before using them in pages.
31
+
32
+ ## Domain Tags
33
+ <!-- One tag per domain folder -->
34
+ - `auth` — authentication and authorization
35
+ - `api` — API design and contracts
36
+ - `data` — data models and storage
37
+ - `ui` — frontend and interface
38
+ - `infra` — infrastructure and deployment
39
+ - `patterns` — reusable implementation patterns
40
+ - `decisions` — architecture decision records
41
+
42
+ ## Topic Tags
43
+ <!-- Cross-domain concept tags -->
44
+ - `jwt` — JSON Web Tokens
45
+ - `caching` — caching strategies and implementations
46
+ - `error-handling` — error handling patterns
47
+ - `testing` — test strategy and patterns
48
+ - `performance` — performance considerations
49
+ - `security` — security concerns
50
+
51
+ ## Meta Tags
52
+ <!-- Reserved for wiki structure -->
53
+ - `index` — index and home pages (do not use in content pages)
54
+ - `log` — activity log (reserved)
55
+ - `insights` — generated insights pages
56
+ - `lint` — lint report pages
57
+ - `query-derived` — pages created from wiki-query results
58
+ - `capture` — pages created from wiki-capture
59
+
60
+ ## Aliases
61
+ <!-- Non-canonical → canonical mappings -->
62
+ - `authentication` → `auth`
63
+ - `authorization` → `auth`
64
+ - `Authorization` → `auth`
65
+ - `caches` → `caching`
66
+ - `errors` → `error-handling`
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Steps
72
+
73
+ ### Mode A — Init (first run, no taxonomy yet)
74
+
75
+ If `superspec/wiki/_meta/taxonomy.md` does not exist:
76
+
77
+ 1. Scan all wiki pages and collect every tag in use
78
+ 2. Group by apparent intent (cluster similar tags)
79
+ 3. For each cluster, pick the shortest, clearest, lowercase-hyphenated canonical form
80
+ 4. Write `_meta/taxonomy.md` with:
81
+ - Domain tags (one per domain folder)
82
+ - Topic tags (all unique concepts found)
83
+ - Alias map (non-canonical → canonical for each cluster)
84
+ 5. Report what was found and the proposed taxonomy — wait for confirmation before normalizing pages
85
+
86
+ ---
87
+
88
+ ### Mode B — Audit (taxonomy exists, check compliance)
89
+
90
+ 1. Read `_meta/taxonomy.md` — build canonical set + alias map
91
+ 2. Scan all wiki pages
92
+ 3. For each page, check `tags:` in frontmatter:
93
+ - Is every tag in the canonical set? → OK
94
+ - Is the tag an alias? → candidate for normalization
95
+ - Is the tag unknown (not canonical, not alias)? → flag for addition to taxonomy
96
+ 4. Report findings:
97
+
98
+ ```
99
+ Tag Audit Report
100
+
101
+ Canonical tags used: N
102
+ Non-canonical tags found: M pages
103
+
104
+ Aliases that can be auto-normalized:
105
+ "authentication" (4 pages) → "auth"
106
+ "Authorization" (2 pages) → "auth"
107
+ "caches" (1 page) → "caching"
108
+
109
+ Unknown tags (not in taxonomy):
110
+ "websocket" (3 pages) — add to taxonomy as: `websocket` — WebSocket connections?
111
+ "rate-limit" (2 pages) — add to taxonomy as: `rate-limiting` — Rate limiting patterns?
112
+
113
+ Auto-normalize aliases? [Y/N]
114
+ Add unknown tags to taxonomy? [Y to review each / A for all / N to skip]
115
+ ```
116
+
117
+ ---
118
+
119
+ ### Mode C — Normalize (apply fixes after confirmation)
120
+
121
+ For each alias normalization confirmed:
122
+ 1. Update `tags:` in each affected page's frontmatter
123
+ 2. Update `updated:` date
124
+ 3. Update alias map in `_meta/taxonomy.md` if not already there
125
+
126
+ For each new tag added to taxonomy:
127
+ 1. Add to appropriate section in `_meta/taxonomy.md`
128
+
129
+ Append to `log.md`:
130
+ ```markdown
131
+ ## [<YYYY-MM-DD>] taxonomy | normalized N tags across M pages
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Output
137
+
138
+ - `superspec/wiki/_meta/taxonomy.md` (created or updated)
139
+ - Modified wiki pages (normalized tags)
140
+ - Appended `superspec/wiki/log.md`
141
+ - Audit report in response
@@ -22,7 +22,7 @@ Work conversationally. One topic at a time. Never dump a wall of questions. Ask,
22
22
 
23
23
  Before asking anything, check for an existing tech stack profile:
24
24
 
25
- - Read `superspec/wiki/_index.md`
25
+ - Read `superspec/wiki/Home.md` (if it exists)
26
26
  - Check for `superspec/wiki/techstack/profile.md`
27
27
 
28
28
  If a profile already exists:
@@ -456,15 +456,17 @@ _Browse all community skills: https://awesome-skills.com/_
456
456
  3. Reference this profile in every spec for consistency
457
457
  ```
458
458
 
459
- ### 3.2 Update the wiki index
459
+ ### 3.2 Update the wiki Home page
460
460
 
461
- Add to `superspec/wiki/_index.md`:
461
+ Update `superspec/wiki/Home.md` (create it if it doesn't exist) to include the techstack domain:
462
462
 
463
463
  ```markdown
464
464
  ## Domains
465
465
 
466
- - [[techstack/]] Project tech stack, library choices, production checklists
467
- - ...existing domains...
466
+ | Domain | Description |
467
+ |--------|-------------|
468
+ | [[techstack/]] | Project tech stack, library choices, production checklists |
469
+ | _(further domains added as features ship)_ | |
468
470
 
469
471
  ## Recent Updates
470
472