@@ -4,12 +4,19 @@ preamble-tier: 4
44version : 1.0.0
55description : |
66 YC-partner brainstorming on a NEW feature/area, with the codebase already
7- loaded into your context. Scans relevant files, pulls related decisions,
8- then runs six forcing questions before any code is written. The brownfield
9- /office-hours — works on existing codebases, not just greenfield. (fstack)
7+ loaded into your context. Two modes:
8+ • Default (wedge mode) — six forcing questions, recommend the smallest
9+ version that ships tomorrow. For "should we even build this?"
10+ • --deep — generate 2-3 design shapes for an already-decided feature,
11+ argue tradeoffs, force a maximalist-vs-pragmatic split. For "given
12+ we're building it, what's the best version that fits this codebase?"
13+ Both modes scan relevant files and pull related decisions before
14+ speaking. The brownfield /office-hours — works on existing codebases,
15+ not just greenfield. (fstack)
1016allowed-tools :
1117 - Bash
1218 - Read
19+ - Write
1320 - Grep
1421 - Glob
1522 - AskUserQuestion
@@ -19,6 +26,9 @@ triggers:
1926 - brainstorm a new feature
2027 - help me think through
2128 - i want to add
29+ - design options for
30+ - what's the best version of
31+ - deep brainstorm
2232---
2333
2434## Persona
@@ -34,10 +44,25 @@ codebase**. You know what exists. You don't propose duplicates. You propose
3444
3545## Procedure
3646
37- ### 1. Capture topic
38- The user runs ` /office-hours <topic> ` . Topic might be vague ("add OAuth")
39- or specific ("add OAuth to the contractor settings page using Google +
40- GitHub providers"). Either way, parse the topic.
47+ ### 1. Capture topic and mode
48+
49+ The user runs one of:
50+
51+ ```
52+ /office-hours <topic> # wedge mode (default)
53+ /office-hours --deep <topic> # deep mode — design-options
54+ ```
55+
56+ Parse the topic. Detect ` --deep ` (anywhere in the args) and set the mode.
57+ Topic might be vague ("add OAuth") or specific ("add OAuth to the
58+ contractor settings page using Google + GitHub providers"). Either way,
59+ remember the topic and the mode — Steps 2-3 are identical for both modes;
60+ Steps 4-5 branch.
61+
62+ ** When to pick which mode** (if the user looks confused):
63+ - Wedge mode = "Should we build this? What's the smallest version?"
64+ - Deep mode = "We've decided to build it. What's the BEST shape it could
65+ take given our codebase?"
4166
4267### 2. Codebase scan (do this BEFORE asking questions)
4368
@@ -68,12 +93,14 @@ fstack-brain sync # other agents may already be doing this
6893If another agent has an active intent on this exact topic, STOP and tell
6994the user — propose coordination instead of brainstorming a duplicate.
7095
71- ### 4. Six forcing questions
96+ ### 4. Mode-specific brainstorm
97+
98+ Branch on the mode set in Step 1.
7299
73- Now run the questions. Each question MUST reference something concrete from
74- the codebase scan or from a past decision. Generic questions are not allowed.
100+ #### 4a. Wedge mode (default) — six forcing questions
75101
76- The six questions, with examples of how to make them concrete:
102+ Each question MUST reference something concrete from the codebase scan or
103+ from a past decision. Generic questions are not allowed.
77104
781051 . ** Who is this for, exactly?** Be brutal. Not "users" — * which* users.
791062 . ** Why this and not extending what exists?** Cite the actual existing
@@ -89,11 +116,42 @@ The six questions, with examples of how to make them concrete:
891166 . ** What's the narrowest wedge that ships tomorrow?** Quantify in lines
90117 of code if possible. ~ 30 lines? 1 file change? 2 hours?
91118
92- ### 5. Recommendation
119+ #### 4b. Deep mode ( ` --deep ` ) — design-options generation
93120
94- End with one explicit RECOMMENDATION. Not a hedge. A choice.
121+ Skip the wedge questions. The user has already decided to build this.
122+ Your job is to surface 2-3 * concretely contrasted* design shapes and
123+ argue which one belongs in this codebase.
124+
125+ Generate ** 2-3 design shapes** (not more — three is the cap). Each shape
126+ must be grounded in the scan, not in greenfield fantasy. For each design,
127+ you MUST produce:
128+
129+ - ** Name + one-line gist** (e.g. "Extend ` useSession() ` with a provider
130+ registry — no new route")
131+ - ** Concrete touch list** — files/abstractions from the scan it would
132+ modify. Cite paths. No hand-waving.
133+ - ** What it gets right** that the other designs don't (one sentence)
134+ - ** What it costs** — rough lines-of-code, irreversibility, blast radius
135+ - ** Future-cost** — "if we pick this, we can't easily do X later"
136+
137+ After the three designs, produce a ** comparison table** :
138+
139+ | Design | LoC | Reversibility | Fits existing patterns | Best for |
140+ | ---| ---| ---| ---| ---|
141+ | A | ~ 50 | high | yes | shipping fast, low blast |
142+ | B | ~ 200 | medium | partial | balanced |
143+ | C | ~ 600 | low | adds new pattern | the 10-star path |
144+
145+ Then a ** single recommendation** — pick one design, name it, one
146+ sentence on why.
147+
148+ ### 5. Closing — recommendation + handoff
95149
96- Format:
150+ Branch on the mode again.
151+
152+ #### 5a. Wedge mode
153+
154+ End with one explicit RECOMMENDATION. Not a hedge. A choice.
97155
98156```
99157RECOMMENDATION: <one short sentence>.
@@ -103,6 +161,38 @@ Then surface what fstack should do next:
103161 • Or /decide <key tradeoff that just got made>?
104162```
105163
164+ #### 5b. Deep mode
165+
166+ After the comparison table and recommendation, force a
167+ ** maximalist-vs-pragmatic split** — the guardrail that keeps deep mode
168+ grounded:
169+
170+ ```
171+ SHIP-NEXT-WEEK VERSION: <one sentence — the smallest cut of the
172+ recommended design that delivers value>
173+ BEST-VERSION VERSION: <one sentence — the recommended design at full
174+ scope, including the 10-star polish>
175+ ```
176+
177+ Then ask the user:
178+
179+ > Which one should /spec lock in — ship-next-week or best-version?
180+ > Or: want me to write this exploration to ` docs/designs/<slug>.md `
181+ > first? (I won't write a doc unless you say yes.)
182+
183+ ** Do NOT write the doc unless the user explicitly confirms.** Most deep
184+ sessions end with "let me think about this" — writing a doc every time
185+ creates clutter. Only write on explicit go-ahead.
186+
187+ If the user says "save it" / "write the doc" / "yes", write to
188+ ` docs/designs/<slug>.md ` with sections: Context, Designs Considered (the
189+ three you generated), Comparison, Recommendation, Ship-next-week vs
190+ Best-version, Open Questions. Slug from the topic (kebab-case).
191+
192+ After deep mode closes, the natural next step is ` /spec <topic> ` —
193+ which will read this exploration (if saved) plus the active intent and
194+ lock the contract.
195+
106196## What this skill must NOT do
107197
108198- Must not ask the user to "describe their codebase" or "scan their repo." You
@@ -111,8 +201,20 @@ Then surface what fstack should do next:
111201 you explicitly call out the duplication and explain the new value.
112202- Must not give six generic questions that could apply to any startup. Every
113203 question references the scan or a past decision.
204+ - ** Deep mode only:** must not generate more than 3 designs. Two or three
205+ contrasted designs beat five mushy ones. If you can't tell two designs
206+ apart cleanly, collapse them into one.
207+ - ** Deep mode only:** must not write ` docs/designs/<slug>.md ` without
208+ explicit user confirmation. Default is no doc.
209+ - ** Deep mode only:** must not skip the ship-next-week vs best-version
210+ split. That split is the anti-fantasy guardrail.
114211
115212## Output
116213
117- A conversational response, not a structured form. Keep it tight — under 600
118- words. The user is here to think, not to read a treatise.
214+ A conversational response, not a structured form.
215+
216+ - ** Wedge mode:** keep it tight — under 600 words. The user is here to
217+ think, not to read a treatise.
218+ - ** Deep mode:** under 800 words. The extra budget covers the comparison
219+ table and three designs, not extra prose. Anything longer than 800
220+ belongs in a saved design doc, not the response.
0 commit comments