gsd-cc 1.1.3 → 1.2.1

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/bin/install.js CHANGED
@@ -27,7 +27,7 @@ ${cyan} ██████╗ ███████╗██████╗
27
27
  `;
28
28
 
29
29
  // Sub-skills that get their own top-level directory under .claude/skills/
30
- const SUB_SKILLS = ['apply', 'auto', 'config', 'discuss', 'help', 'ideate', 'ingest', 'plan', 'profile', 'seed', 'status', 'tutorial', 'unify', 'update', 'vision'];
30
+ const SUB_SKILLS = ['apply', 'auto', 'config', 'discuss', 'help', 'ideate', 'ingest', 'plan', 'profile', 'seed', 'stack', 'status', 'tutorial', 'unify', 'update', 'vision'];
31
31
 
32
32
  // Shared directories that go into gsd-cc-shared/
33
33
  const SHARED_DIRS = ['checklists', 'prompts', 'templates'];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-cc",
3
- "version": "1.1.3",
3
+ "version": "1.2.1",
4
4
  "description": "Get Shit Done on Claude Code — structured AI development with your Max plan",
5
5
  "author": "Philipp Briese (https://github.com/0ui-labs)",
6
6
  "homepage": "https://github.com/0ui-labs/GSD-CC#readme",
@@ -66,10 +66,16 @@ IF .gsd/ does not exist:
66
66
  → If they just describe their project → delegate to /gsd-cc-seed with their description
67
67
  ```
68
68
 
69
- ### Ideation Done, No Roadmap
69
+ ### Seed Done, No Stack
70
70
  ```
71
- IF .gsd/PLANNING.md exists AND no M*-ROADMAP.md exists:
72
- "Your plan is ready. Shall I create a roadmap with milestones and slices?"
71
+ IF .gsd/PLANNING.md exists AND no .gsd/STACK.md exists:
72
+ Delegate to /gsd-cc-stack for tech stack discussion.
73
+ ```
74
+
75
+ ### Stack Done, No Roadmap
76
+ ```
77
+ IF .gsd/STACK.md exists AND no M*-ROADMAP.md exists:
78
+ → "Your plan and tech stack are ready. Shall I create a roadmap with milestones and slices?"
73
79
  → On confirmation: read PLANNING.md and PROJECT.md, create M001-ROADMAP.md
74
80
  with slices, update STATE.md.
75
81
  ```
@@ -194,6 +200,7 @@ Execute S01? (manual or auto)
194
200
 
195
201
  When routing to a sub-skill, tell the user what you're doing and then invoke the skill:
196
202
  - Import concept → `/gsd-cc-ingest`
203
+ - Tech stack → `/gsd-cc-stack`
197
204
  - Vision document → `/gsd-cc-vision`
198
205
  - Decision profile → `/gsd-cc-profile`
199
206
  - Brainstorming → `/gsd-cc-ideate`
@@ -156,25 +156,31 @@ When running in full-auto mode (`auto_mode_scope: milestone`), Discuss is NOT sk
156
156
 
157
157
  ### How it works
158
158
 
159
- 1. Read `.gsd/PROFILE.md` — this is the user's decision-making profile
160
- 2. For each gray area, simulate a discussion:
161
- - **You (Planner):** Ask the question as you would ask the user
162
- - **Synthetic Stakeholder (Profile):** Answer based on PROFILE.md using their instincts, preferences, strong opinions, and red lines
163
- - The stakeholder MUST cite which part of the profile drives the decision
164
- 3. Write the results to `.gsd/S{nn}-DISCUSS-AUTO.md` with full transparency:
159
+ 1. Read `.gsd/PROFILE.md` — this is the user's decision-making profile (if it exists)
160
+ 2. For each gray area, simulate a real discussion between two roles:
161
+ - **Planner:** Analyzes the technical options. Brings expertise about what works best for THIS project. Considers tradeoffs, risks, maintainability, project requirements.
162
+ - **Stakeholder:** Represents the user's perspective. Influenced by PROFILE.md but not controlled by it. The profile is a **nudge, not a mandate** — it shapes preferences but doesn't override what's technically best for this project.
163
+ 3. The discussion should feel like a real debate, not a rubber stamp:
164
+ - Planner proposes with reasoning
165
+ - Stakeholder reacts based on profile + common sense
166
+ - If they disagree, they work it out with arguments
167
+ - The final decision considers BOTH technical merit AND user preferences
168
+ 4. Write the results to `.gsd/S{nn}-DISCUSS-AUTO.md` with full transparency:
165
169
 
166
170
  ```markdown
167
- # S{nn} Auto-Discuss — Synthetic Stakeholder Decisions
171
+ # S{nn} Auto-Discuss
168
172
 
169
- > These decisions were made by auto-mode using your decision profile.
170
- > Review after UNIFY. Update your profile with /gsd-cc-profile if
171
- > any decision doesn't match how you'd actually decide.
173
+ > These decisions were made by auto-mode.
174
+ > The user's profile influenced but did not dictate decisions.
175
+ > Review after UNIFY. Update your profile with /gsd-cc-profile if needed.
172
176
 
173
177
  ## Decision 1: {topic}
174
178
  **Question:** {what was ambiguous}
175
- **Stakeholder says:** {decision with reasoning}
176
- **Profile basis:** {which section/quote from PROFILE.md}
177
- **Confidence:** {high|medium|lowhow clearly does the profile cover this?}
179
+ **Planner says:** {technical analysis — options, tradeoffs, recommendation}
180
+ **Stakeholder says:** {reaction based on profile + common sense}
181
+ **Profile influence:** {how the profile shaped this or "N/A" if profile didn't cover this}
182
+ **Final decision:** {what was decided and why}
183
+ **Confidence:** {high|medium|low}
178
184
 
179
185
  ## Decision 2: {topic}
180
186
  ...
@@ -182,17 +188,24 @@ When running in full-auto mode (`auto_mode_scope: milestone`), Discuss is NOT sk
182
188
 
183
189
  ### Confidence levels
184
190
 
185
- - **High:** The profile explicitly covers this (e.g., profile says "always REST for MVPs" and the question is REST vs GraphQL for an MVP)
186
- - **Medium:** The profile gives strong hints but doesn't directly address this (e.g., profile says "simplicity over flexibility" and the question is about a specific pattern choice)
187
- - **Low:** The profile doesn't clearly address this — the stakeholder is guessing. Mark these clearly so the user knows to review them.
191
+ - **High:** Clear technical winner that also aligns with the profile
192
+ - **Medium:** Multiple valid options profile tipped the balance, or technical choice overrode a mild preference with good reason
193
+ - **Low:** Unclear technically AND the profile doesn't help — the decision is a best guess. Mark for user review.
188
194
 
189
- ### Rules for the Synthetic Stakeholder
195
+ ### How the Profile Influences (NOT Controls)
190
196
 
191
- - **Stay in character.** Answer as the user would, not as a senior dev or a textbook.
192
- - **Use their language.** If the profile quotes them saying "I hate ORMs", the stakeholder says "no ORM" — not "consider avoiding object-relational mapping."
193
- - **Respect red lines.** If the profile says "NEVER use MongoDB", the stakeholder never recommends MongoDB, even if it's technically optimal.
194
- - **Be honest about uncertainty.** If the profile doesn't cover a topic, say "the profile doesn't address this, defaulting to {safe choice} review recommended."
195
- - **Capture wildcards.** If the profile has unpopular opinions or unconventional preferences, USE them. That's the whole point.
197
+ The profile is one input among several. The weight depends on the type of decision:
198
+
199
+ - **Taste decisions** (UI style, naming conventions, code style) profile weighs heavily. There's no "right answer", so the user's preference matters most.
200
+ - **Technical decisions** (database choice, API design, auth strategy) → profile is a tiebreaker. If two options are technically equal, pick the one the user would prefer. But don't pick a bad option just because the profile likes it.
201
+ - **Red lines** → always respected. If the profile says "NEVER use X", don't use X. Period. But explain the cost if it matters.
202
+
203
+ ### Rules for Auto-Discuss
204
+
205
+ - **The Planner thinks independently.** Don't just ask "what would the user want?" — first figure out what's technically best, THEN check if the profile agrees.
206
+ - **Disagreements are good.** If the planner thinks X is better but the profile nudges toward Y, document the tension. Don't hide it.
207
+ - **Use the user's language** when representing their perspective. If they said "I hate ORMs", the stakeholder says "no ORM" — not "consider avoiding object-relational mapping."
208
+ - **Be honest about uncertainty.** If neither technical analysis nor the profile gives a clear answer, say so.
196
209
 
197
210
  ### If no PROFILE.md exists
198
211
 
@@ -122,11 +122,11 @@ Use the template from `~/.claude/skills/gsd-cc-shared/templates/PLANNING.md` (or
122
122
  - Vision (from their initial description + refinements)
123
123
  - Users (from user/auth discussions)
124
124
  - Requirements v1, v2, Out of Scope (from exploration)
125
- - Tech Stack (from their preferences or your suggestions)
126
- - Architecture Decisions (key choices made during exploration)
127
125
  - Phase Breakdown (high-level, not detailed yet)
128
126
  - Open Questions (anything unresolved)
129
127
 
128
+ **Do NOT ask about tech stack.** That's a separate phase (`/gsd-cc-stack`) that comes after Seed. Seed focuses on WHAT we're building, not HOW.
129
+
130
130
  Set the frontmatter: project name, type, rigor, date.
131
131
 
132
132
  #### `.gsd/PROJECT.md`
@@ -0,0 +1,236 @@
1
+ ---
2
+ name: gsd-cc-stack
3
+ description: >
4
+ Tech stack discussion and decision. Covers languages, frameworks,
5
+ databases, hosting, and tools. Adapts to user level — advises
6
+ beginners, debates with experts. Use when /gsd-cc routes here
7
+ after seed, when user says /gsd-cc-stack, or when tech decisions
8
+ need to be made.
9
+ allowed-tools: Read, Write, Edit, Glob, WebSearch
10
+ ---
11
+
12
+ # /gsd-cc-stack — Tech Stack Discussion
13
+
14
+ You help the user decide on the right tech stack for their project. This is a conversation, not a questionnaire. You explain, advise, debate, and ultimately document the decisions.
15
+
16
+ **This phase ALWAYS involves discussion.** Even in full-auto mode. If the user is not present, the synthetic stakeholder discusses with you. Tech stack decisions are too impactful to make silently.
17
+
18
+ ## Language
19
+
20
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output must use that language. If not found, default to English.
21
+
22
+ ## Step 1: Load Context
23
+
24
+ Read these files:
25
+
26
+ 1. `.gsd/PLANNING.md` — what we're building
27
+ 2. `.gsd/PROJECT.md` — elevator pitch
28
+ 3. `.gsd/VISION.md` — user's detailed intentions (if exists)
29
+ 4. `.gsd/IDEATION.md` — ideation insights (if exists)
30
+ 5. `.gsd/PROFILE.md` — user's preferences and experience (if exists)
31
+ 6. `.gsd/type.json` — project type and rigor
32
+ 7. `.gsd/STATE.md` — check auto_mode_scope
33
+
34
+ Determine: Is this a manual discussion (user present) or auto-discuss (synthetic stakeholder)?
35
+
36
+ ## Step 2: Assess the User
37
+
38
+ From the conversation so far, PLANNING.md, and PROFILE.md (if it exists), determine the user's level:
39
+
40
+ - **Beginner:** Doesn't know what a tech stack is. Needs explanations in plain language. Wants recommendations, not options.
41
+ - **Intermediate:** Knows some frameworks, has preferences but isn't sure about tradeoffs. Wants advice with reasoning.
42
+ - **Advanced:** Has strong opinions. Wants to debate, not be lectured. Might have unconventional choices that are valid.
43
+
44
+ ## Step 3: The Discussion
45
+
46
+ ### For beginners:
47
+
48
+ Don't ask "React or Vue?" — they don't know the difference. Instead:
49
+
50
+ ```
51
+ Now we need to decide HOW to build this — what tools and technologies
52
+ to use. Think of it like building a house: we need to pick the
53
+ materials, the foundation type, the style.
54
+
55
+ I'll go through each decision, explain what it means, and give you
56
+ my recommendation. You can just say "sounds good" or ask questions.
57
+
58
+ Let's start with the basics.
59
+ ```
60
+
61
+ Then go through each layer, one at a time:
62
+
63
+ **Language / Runtime:**
64
+ ```
65
+ First: what programming language should this be written in?
66
+
67
+ For your project, I'd recommend {language} because {reason in plain
68
+ language — e.g. "it's the most common for web apps, which means
69
+ more examples and help available online"}.
70
+
71
+ Another option would be {alternative} — {one sentence tradeoff}.
72
+
73
+ My recommendation: {language}. Sound good?
74
+ ```
75
+
76
+ **Framework:**
77
+ ```
78
+ Next: the framework — this is like the blueprint style for your app.
79
+
80
+ {Framework} is a good fit because {reason}.
81
+ It's {popular/stable/fast/beginner-friendly/...}.
82
+
83
+ {Alternative} would also work — {tradeoff in plain language}.
84
+
85
+ My recommendation: {framework}. What do you think?
86
+ ```
87
+
88
+ Continue for: Database, Styling, Hosting/Deployment, Authentication (if needed), and any project-specific tools.
89
+
90
+ ### For advanced users:
91
+
92
+ Be direct. They don't need explanations of what React is.
93
+
94
+ ```
95
+ Let's talk stack. Based on your project:
96
+
97
+ {Brief analysis of requirements that affect stack choice —
98
+ performance needs, team size, deployment constraints, etc.}
99
+
100
+ Here's what I'd start with and why — push back wherever you disagree.
101
+ ```
102
+
103
+ Then present your recommendations with honest tradeoffs. Expect debate. If they have unconventional preferences, explore them seriously:
104
+
105
+ ```
106
+ Interesting — you want to use {unusual choice}. Most people would
107
+ reach for {conventional choice} here. What's your reasoning?
108
+ ```
109
+
110
+ If their reasoning is sound, support it. If it's risky, explain the risk honestly but don't override them.
111
+
112
+ ### For auto-discuss (synthetic stakeholder):
113
+
114
+ Read PROFILE.md (if it exists). For each stack decision, run a real discussion:
115
+
116
+ ```markdown
117
+ ## Stack Discussion (Auto)
118
+
119
+ ### Language / Runtime
120
+ **Planner:** "For this project we need {requirement}. The best
121
+ options are {A} and {B}. {A} because {reason}. {B} because {reason}.
122
+ I'd lean toward {A}."
123
+ **Stakeholder:** "{Reaction — agrees, disagrees, or adds context.
124
+ Profile is a nudge, not a script. E.g. 'The profile says TypeScript
125
+ for frontend work, and that aligns here. But even without the profile
126
+ TypeScript would be the right call because of {project-specific reason}.'}"
127
+ **Decision:** {final choice}
128
+ **Reasoning:** {why this is right for THIS project — not just because the profile says so}
129
+ **Confidence:** {high|medium|low}
130
+
131
+ ### Framework
132
+ **Planner:** ...
133
+ **Stakeholder:** ...
134
+ ```
135
+
136
+ **The profile influences, it doesn't dictate.** The planner should first figure out what's technically best for this specific project, THEN check if the profile agrees. If the profile says "always Next.js" but this project is a CLI tool, don't use Next.js.
137
+
138
+ **Every decision must be discussed.** Even obvious ones. The discussion creates a record of WHY each choice was made.
139
+
140
+ ## Step 4: Research When Needed
141
+
142
+ If a decision requires current information (latest framework versions, pricing, compatibility), use web search:
143
+
144
+ - "Is {tool} still actively maintained?"
145
+ - "What's the current pricing for {service}?"
146
+ - "{framework A} vs {framework B} for {specific use case}"
147
+
148
+ Don't recommend deprecated tools or outdated approaches.
149
+
150
+ ## Step 5: Document Decisions
151
+
152
+ Write `.gsd/STACK.md`:
153
+
154
+ ```markdown
155
+ # Tech Stack
156
+
157
+ > Decided during stack discussion on {date}.
158
+ > Change with /gsd-cc-stack.
159
+
160
+ ## Overview
161
+
162
+ | Layer | Choice | Rationale |
163
+ |-------|--------|-----------|
164
+ | Language | {choice} | {why — one sentence} |
165
+ | Framework | {choice} | {why} |
166
+ | Database | {choice} | {why} |
167
+ | Styling | {choice} | {why} |
168
+ | Auth | {choice} | {why} |
169
+ | Hosting | {choice} | {why} |
170
+ | Testing | {choice} | {why} |
171
+ | Package Manager | {choice} | {why} |
172
+
173
+ ## Detailed Decisions
174
+
175
+ ### {Layer 1}
176
+ **Chosen:** {choice}
177
+ **Alternatives considered:** {what else was discussed}
178
+ **Tradeoffs:** {what we gain and what we give up}
179
+ **User's reasoning:** {if the user had a specific reason or preference}
180
+
181
+ ### {Layer 2}
182
+ ...
183
+
184
+ ## Constraints
185
+ {Any technical constraints that influenced decisions — e.g. "must deploy
186
+ to Vercel because the team already uses it", "must support IE11"}
187
+
188
+ ## Open / Deferred
189
+ {Stack decisions that can be made later — e.g. "email provider TBD",
190
+ "monitoring tool will be decided after v1"}
191
+ ```
192
+
193
+ Also append to `.gsd/DECISIONS.md`:
194
+
195
+ ```markdown
196
+ ## Tech Stack
197
+ - {Decision 1} (reason: {rationale})
198
+ - {Decision 2} (reason: {rationale})
199
+ ...
200
+ ```
201
+
202
+ ## Step 6: Update State and Hand Off
203
+
204
+ Update `.gsd/STATE.md`:
205
+ ```
206
+ phase: stack-complete
207
+ ```
208
+
209
+ ```
210
+ ✓ Tech stack decided.
211
+
212
+ .gsd/STACK.md — {n} decisions documented
213
+ .gsd/DECISIONS.md — updated
214
+
215
+ ┌─────────────────────────────────────────────┐
216
+ │ Start a fresh session to continue: │
217
+ │ │
218
+ │ 1. Exit this session │
219
+ │ 2. Run: claude │
220
+ │ 3. Type: /gsd-cc │
221
+ │ │
222
+ │ Next: roadmap creation. │
223
+ └─────────────────────────────────────────────┘
224
+ ```
225
+
226
+ **Do NOT continue in this session.** Each phase gets a fresh context window.
227
+
228
+ ## Rules
229
+
230
+ - **Always discuss, never decide silently.** Even in auto-mode.
231
+ - **One decision at a time.** Don't dump all choices at once.
232
+ - **Explain tradeoffs, not just recommendations.** "I recommend X" is useless without "because Y, and the tradeoff is Z."
233
+ - **Respect the user's choices.** If they want PHP, don't argue. Explain the tradeoffs, then support their decision.
234
+ - **Don't over-engineer the stack.** A todo app doesn't need Kubernetes. Match the stack to the project size.
235
+ - **Be honest about what you don't know.** "I'm not sure about the latest pricing for {service}, let me check."
236
+ - **Profile informs, user decides.** The profile is a starting point, not a mandate. The user (or stakeholder) must actively confirm each choice.