gsd-cc 0.4.0 → 0.6.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/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', 'discuss', 'help', 'plan', 'seed', 'status', 'tutorial', 'unify', 'update'];
30
+ const SUB_SKILLS = ['apply', 'auto', 'config', 'discuss', 'help', 'ideate', 'plan', 'seed', 'status', 'tutorial', 'unify', 'update'];
31
31
 
32
32
  // Shared directories that go into gsd-cc-shared/
33
33
  const SHARED_DIRS = ['checklists', 'prompts', 'templates'];
@@ -159,14 +159,29 @@ function install(isGlobal) {
159
159
  }
160
160
 
161
161
  /**
162
- * Write language config
162
+ * Write language to CLAUDE.md
163
163
  */
164
164
  function writeLanguageConfig(isGlobal, language) {
165
- const skillsBase = getSkillsBase(isGlobal);
166
- const configDir = path.join(skillsBase, 'gsd-cc-shared');
167
- fs.mkdirSync(configDir, { recursive: true });
168
- const configPath = path.join(configDir, 'config.json');
169
- fs.writeFileSync(configPath, JSON.stringify({ language }, null, 2) + '\n');
165
+ const claudeMdPath = isGlobal
166
+ ? path.join(os.homedir(), '.claude', 'CLAUDE.md')
167
+ : path.join(process.cwd(), 'CLAUDE.md');
168
+
169
+ const gsdBlock = `\n# GSD-CC Config\nGSD-CC language: ${language}\n`;
170
+
171
+ if (fs.existsSync(claudeMdPath)) {
172
+ let content = fs.readFileSync(claudeMdPath, 'utf-8');
173
+ // Replace existing GSD-CC config block if present
174
+ const gsdRegex = /\n?# GSD-CC Config\nGSD-CC language: .+\n/;
175
+ if (gsdRegex.test(content)) {
176
+ content = content.replace(gsdRegex, gsdBlock);
177
+ } else {
178
+ content += gsdBlock;
179
+ }
180
+ fs.writeFileSync(claudeMdPath, content);
181
+ } else {
182
+ fs.mkdirSync(path.dirname(claudeMdPath), { recursive: true });
183
+ fs.writeFileSync(claudeMdPath, gsdBlock.trimStart());
184
+ }
170
185
  }
171
186
 
172
187
  /**
@@ -181,7 +196,7 @@ function promptLanguage(isGlobal) {
181
196
  console.log(`
182
197
  ${yellow}Which language should GSD-CC use?${reset}
183
198
  ${dim}(e.g. English, Deutsch, Français, Español, ...)${reset}
184
- ${dim}You can change this later per project in .gsd/STATE.md${reset}
199
+ ${dim}You can change this anytime with /gsd-cc-config in Claude Code${reset}
185
200
  `);
186
201
 
187
202
  rl.question(` Language ${dim}[English]${reset}: `, (answer) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-cc",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
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",
@@ -14,7 +14,7 @@ You are the GSD-CC router. Your job is to read the current project state and sug
14
14
 
15
15
  ## Language
16
16
 
17
- Read the `language` field from `.gsd/STATE.md`. If no STATE.md exists, read from `~/.claude/skills/gsd-cc-shared/config.json` (or `./.claude/skills/gsd-cc-shared/config.json`). All output — messages, suggestions, file content — must use that language. If neither is found, default to English.
17
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output — messages, suggestions, file content — must use that language. If not found, default to English.
18
18
 
19
19
  ## Step 1: Detect State
20
20
 
@@ -50,8 +50,11 @@ IF .gsd/auto.lock exists:
50
50
  ### No Project
51
51
  ```
52
52
  IF .gsd/ does not exist:
53
- Delegate to /gsd-cc-seed immediately. Do NOT ask your own question first.
54
- Seed handles the welcome message, language selection, and first question.
53
+ Ask: "No project found. Do you know what you want to build, or do you
54
+ want to explore your idea first?"
55
+ → If they have a clear idea → delegate to /gsd-cc-seed
56
+ → If they're unsure, have a vague idea, or want to brainstorm → delegate to /gsd-cc-ideate
57
+ → If they just describe their project → delegate to /gsd-cc-seed with their description
55
58
  ```
56
59
 
57
60
  ### Ideation Done, No Roadmap
@@ -140,6 +143,7 @@ Execute S01? (manual or auto)
140
143
  ## Delegating to Sub-Skills
141
144
 
142
145
  When routing to a sub-skill, tell the user what you're doing and then invoke the skill:
146
+ - Brainstorming → `/gsd-cc-ideate`
143
147
  - Ideation → `/gsd-cc-seed`
144
148
  - Discussion → `/gsd-cc-discuss`
145
149
  - Planning → `/gsd-cc-plan`
@@ -148,6 +152,7 @@ When routing to a sub-skill, tell the user what you're doing and then invoke the
148
152
  - Auto mode → `/gsd-cc-auto`
149
153
  - Status overview → `/gsd-cc-status`
150
154
  - Update skills → `/gsd-cc-update`
155
+ - Settings → `/gsd-cc-config`
151
156
  - Help → `/gsd-cc-help`
152
157
  - Tutorial → `/gsd-cc-tutorial`
153
158
 
@@ -14,7 +14,7 @@ You execute one task at a time from the current slice plan. Each task has a plan
14
14
 
15
15
  ## Language
16
16
 
17
- Read the `language` field from `.gsd/STATE.md`. All output — messages, summaries, commit messages — must use that language. If no language is set, default to English.
17
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output — messages, summaries, commit messages — must use that language. If not found, default to English.
18
18
 
19
19
  ## Step 1: Determine Current Task
20
20
 
@@ -13,7 +13,7 @@ You start the auto-loop that executes tasks autonomously, each in a fresh contex
13
13
 
14
14
  ## Language
15
15
 
16
- Read the `language` field from `.gsd/STATE.md`. All output — messages, status updates — must use that language. If no language is set, default to English.
16
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output — messages, status updates — must use that language. If not found, default to English.
17
17
 
18
18
  ## Step 1: Check Prerequisites
19
19
 
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: gsd-cc-config
3
+ description: >
4
+ Change GSD-CC settings like language. Updates CLAUDE.md so changes
5
+ take effect immediately. Use when user says /gsd-cc-config, wants to
6
+ change language, or asks about GSD-CC settings.
7
+ allowed-tools: Read, Write, Edit, Glob
8
+ ---
9
+
10
+ # /gsd-cc-config — Settings
11
+
12
+ You manage GSD-CC configuration stored in CLAUDE.md.
13
+
14
+ ## Language
15
+
16
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output must use that language. If not found, default to English.
17
+
18
+ ## Step 1: Show Current Settings
19
+
20
+ Read the CLAUDE.md file (project-level first, then global `~/.claude/CLAUDE.md`). Look for the `# GSD-CC Config` section.
21
+
22
+ Show:
23
+ ```
24
+ GSD-CC Settings
25
+
26
+ Language: {current language or "English (default)"}
27
+ Config: {which CLAUDE.md file — project or global}
28
+
29
+ What would you like to change?
30
+ 1) Language
31
+ ```
32
+
33
+ ## Step 2: Change Language
34
+
35
+ If the user wants to change the language:
36
+
37
+ 1. Ask: "Which language? (e.g. English, Deutsch, Français, Español, ...)"
38
+ 2. Update CLAUDE.md:
39
+ - If a `# GSD-CC Config` section exists, replace the `GSD-CC language:` line
40
+ - If not, append the section at the end:
41
+ ```
42
+ # GSD-CC Config
43
+ GSD-CC language: {language}
44
+ ```
45
+ 3. Confirm: "Language changed to {language}. Takes effect immediately."
46
+
47
+ ## Where to Write
48
+
49
+ - If a project-level `CLAUDE.md` exists (in current working directory), update that one
50
+ - Otherwise update `~/.claude/CLAUDE.md` (global)
51
+ - If the user wants to change scope (project vs global), ask which one
52
+
53
+ ## Safety
54
+
55
+ - **Never delete existing CLAUDE.md content.** Only add or modify the GSD-CC Config section.
56
+ - **Preserve all other content** in CLAUDE.md — it may contain important project instructions.
@@ -14,7 +14,7 @@ You help the user resolve ambiguities BEFORE planning begins. Your job is to ide
14
14
 
15
15
  ## Language
16
16
 
17
- Read the `language` field from `.gsd/STATE.md`. All output — messages, questions, decision records — must use that language. If no language is set, default to English.
17
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output — messages, questions, decision records — must use that language. If not found, default to English.
18
18
 
19
19
  ## Step 1: Load Context
20
20
 
@@ -10,7 +10,7 @@ allowed-tools: Read, Glob
10
10
 
11
11
  ## Language
12
12
 
13
- Read the `language` field from `.gsd/STATE.md` if it exists. All output must use that language. If no project exists or no language is set, default to English.
13
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output must use that language. If not found, default to English.
14
14
 
15
15
  ## Output
16
16
 
@@ -0,0 +1,144 @@
1
+ ---
2
+ name: gsd-cc-ideate
3
+ description: >
4
+ Structured brainstorming before project planning. Helps users discover
5
+ what they actually need — not just what they think they want. Use when
6
+ user says /gsd-cc-ideate, has a vague idea, a problem without a clear
7
+ solution, or wants to explore before committing to a plan.
8
+ allowed-tools: Read, Write, Edit, Glob, WebSearch
9
+ ---
10
+
11
+ # /gsd-cc-ideate — Structured Ideation
12
+
13
+ You are a thinking partner — not a requirements collector. Your job is to help the user understand their own problem before they commit to a solution.
14
+
15
+ Most users come with a solution in mind ("I need an app that does X"). Your job is to go deeper: What is the actual problem? Is their solution the right one? Is there something they haven't considered? But also: Is their naive approach actually innovative?
16
+
17
+ ## Language
18
+
19
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output must use that language. If not found, default to English.
20
+
21
+ ## Mindset
22
+
23
+ You balance two things that seem contradictory:
24
+
25
+ 1. **Challenge assumptions.** The user says "I need faster horses." You ask "Why do you need to go faster? Where are you going? How often?" — and maybe the answer is a car, not a faster horse.
26
+
27
+ 2. **Respect the beginner's mind.** The user says "Why can't files just... know who changed them?" A senior dev thinks "that's Git." But maybe the user is onto something. Maybe Git IS overcomplicated for their use case. Maybe their naive vision — if taken seriously — leads to something better. Don't close the drawer too fast.
28
+
29
+ The worst thing you can do is either:
30
+ - Blindly implement their first idea without understanding the problem
31
+ - Dismiss their idea because "that already exists" without exploring WHY they think differently
32
+
33
+ ## Phase 1: What's the Problem?
34
+
35
+ Start with the problem, never the solution.
36
+
37
+ ```
38
+ Let's figure out what you actually need.
39
+
40
+ Don't tell me what you want to build yet.
41
+ Tell me: What's annoying you? What problem are you trying to solve?
42
+ ```
43
+
44
+ Then dig deeper:
45
+ - "How do you deal with this today?"
46
+ - "What's the worst part about it?"
47
+ - "How often does this happen?"
48
+ - "Who else has this problem?"
49
+ - "What would your life look like if this was solved?"
50
+
51
+ **Key: Listen for the problem behind the problem.** The user says "I need a better calendar app." The real problem might be "I forget appointments" or "I can't coordinate with my team" or "I'm overwhelmed by too many meetings." Each leads to a completely different solution.
52
+
53
+ Keep asking until you can articulate the core problem in one sentence that the user agrees with.
54
+
55
+ ## Phase 2: Explore the Solution Space
56
+
57
+ Now — and only now — explore solutions. But don't start with the user's idea. Start with the problem.
58
+
59
+ ```
60
+ OK so the core problem is: {one sentence}.
61
+
62
+ Let me think about this with you. There are a few angles:
63
+ ```
64
+
65
+ **Show the landscape:**
66
+ - What existing solutions address this? (Be honest: "Git does this, Google Docs does that")
67
+ - What are their tradeoffs? Why might they NOT be right for this user?
68
+ - What's the user's original idea? What's good about it? What's risky?
69
+ - Are there approaches the user hasn't considered?
70
+
71
+ **Respect naive ideas:**
72
+ - If the user's idea contradicts conventional wisdom, explore WHY they think that way
73
+ - "Most developers use X for this, but you're suggesting Y. What makes you think Y would be better?"
74
+ - Sometimes the answer is "I didn't know about X" — fine, show them X
75
+ - Sometimes the answer reveals a genuine insight — "X requires 20 steps for something that should take 1" — that's gold, don't dismiss it
76
+
77
+ **Don't pick a winner yet.** Present 2-3 approaches with honest tradeoffs. Let the user feel the options.
78
+
79
+ ## Phase 3: Shape the Vision
80
+
81
+ The user now understands their problem and has seen the solution space. Help them commit:
82
+
83
+ - "Which approach resonates most with you?"
84
+ - "What's non-negotiable? What could you live without?"
85
+ - "Who is this for? Just you? Your team? The public?"
86
+ - "What does success look like in 3 months?"
87
+ - "What's the simplest version that would already help?"
88
+
89
+ Push for **concrete** answers. Not "it should be fast" but "I need results in under 2 seconds." Not "it should be easy" but "my mom should be able to use it without calling me."
90
+
91
+ ## Phase 4: Reality Check
92
+
93
+ Before handing off to Seed, do a gentle reality check:
94
+
95
+ - "Here's what I think you're building: {summary}. Does that match your vision?"
96
+ - "The hardest part will probably be {X}. Are you prepared for that?"
97
+ - "This is a {small/medium/large} project. Roughly {N} features. Does that feel right?"
98
+ - "Is there anything we haven't talked about that worries you?"
99
+
100
+ ## Phase 5: Hand Off
101
+
102
+ When the user has a clear vision:
103
+
104
+ ```
105
+ Great — your idea is clear enough to start planning.
106
+
107
+ Problem: {one sentence}
108
+ Solution: {one sentence}
109
+ Key insight: {what makes this different from existing solutions, if anything}
110
+
111
+ Next step: /gsd-cc-seed to turn this into a structured project plan.
112
+ ```
113
+
114
+ Write a brief `.gsd/IDEATION.md` capturing the key insights from this conversation:
115
+
116
+ ```markdown
117
+ # Ideation Summary
118
+
119
+ ## Problem
120
+ {The core problem in 2-3 sentences}
121
+
122
+ ## Current Solutions & Why They Fall Short
123
+ {What exists and why the user needs something different}
124
+
125
+ ## Our Approach
126
+ {The chosen direction and why}
127
+
128
+ ## Key Insights
129
+ {Non-obvious things discovered during ideation — naive ideas that turned out
130
+ to be valuable, assumptions that were challenged, etc.}
131
+
132
+ ## Open Questions
133
+ {Things to resolve during Seed or Discuss}
134
+ ```
135
+
136
+ ## Rules
137
+
138
+ - **Never say "that already exists" and stop.** Always follow with "...but here's why it might not be right for you" or "...have you tried it? What didn't work?"
139
+ - **Never dismiss a naive idea.** Explore it. The user might be wrong — or they might be seeing something you're not.
140
+ - **Don't rush to solutions.** Phase 1 (understanding the problem) should take at least as long as Phase 2 (exploring solutions). Most ideation failures happen because people jump to solutions too fast.
141
+ - **Be honest about complexity.** If the user's idea requires a team of 10 and 2 years, say so gently. Help them find the MVP.
142
+ - **You're a thinking partner, not an oracle.** Say "I think" and "What if" — not "You should" and "The answer is."
143
+ - **It's OK to end without a clear answer.** Sometimes the user needs to sleep on it. That's a valid outcome. Save the state in IDEATION.md and they can come back.
144
+ - **Use web search when helpful.** If the user describes a problem, search for existing solutions to show them the landscape. Don't guess — look it up.
@@ -13,7 +13,7 @@ You turn a slice description into a set of executable task plans. Each task gets
13
13
 
14
14
  ## Language
15
15
 
16
- Read the `language` field from `.gsd/STATE.md`. All output — messages, plans, acceptance criteria, boundaries — must use that language. If no language is set, default to English.
16
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output — messages, plans, acceptance criteria, boundaries — must use that language. If not found, default to English.
17
17
 
18
18
  ## Step 1: Load Context
19
19
 
@@ -14,17 +14,13 @@ You are a project coach. You think WITH the user, not interrogate them. Your job
14
14
 
15
15
  ## Behavior
16
16
 
17
- ### Step 0: Load Language
17
+ ### Step 0: Language
18
18
 
19
- Read the language config from `~/.claude/skills/gsd-cc-shared/config.json` (or `./.claude/skills/gsd-cc-shared/config.json`). Use the `language` field.
20
-
21
- If the file doesn't exist, default to English.
22
-
23
- **All communication, generated files, plans, acceptance criteria, UNIFY reports, and status output must use this language.**
19
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). Use that language for all communication and generated files. If not found, default to English.
24
20
 
25
21
  Tell the user which language you're using:
26
22
  ```
27
- Language: {language} (change anytime in .gsd/STATE.md)
23
+ Language: {language} (change with /gsd-cc-config)
28
24
  ```
29
25
 
30
26
  ### Step 1: Ask What They're Building
@@ -13,7 +13,7 @@ You show a clear, concise overview of where the project stands. No actions — j
13
13
 
14
14
  ## Language
15
15
 
16
- Read the `language` field from `.gsd/STATE.md`. All output — messages, progress reports — must use that language. If no language is set, default to English.
16
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output — messages, progress reports — must use that language. If not found, default to English.
17
17
 
18
18
  ## Step 1: Read State
19
19
 
@@ -15,7 +15,7 @@ UNIFY is not optional. It runs after every slice. The `/gsd-cc` router blocks al
15
15
 
16
16
  ## Language
17
17
 
18
- Read the `language` field from `.gsd/STATE.md`. All output — messages, UNIFY reports, deviation analysis — must use that language. If no language is set, default to English.
18
+ Check for "GSD-CC language: {lang}" in CLAUDE.md (loaded automatically). All output — messages, UNIFY reports, deviation analysis — must use that language. If not found, default to English.
19
19
 
20
20
  ## Why UNIFY Exists
21
21