gsd-cc 0.3.2 → 0.5.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', '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'];
@@ -156,9 +156,58 @@ function install(isGlobal) {
156
156
  }
157
157
 
158
158
  console.log(` ${green}✓${reset} Installed ${fileCount} files to ${label}`);
159
+ }
160
+
161
+ /**
162
+ * Write language to CLAUDE.md
163
+ */
164
+ function writeLanguageConfig(isGlobal, language) {
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
+ }
185
+ }
186
+
187
+ /**
188
+ * Prompt for language, then finish
189
+ */
190
+ function promptLanguage(isGlobal) {
191
+ const rl = readline.createInterface({
192
+ input: process.stdin,
193
+ output: process.stdout,
194
+ });
195
+
159
196
  console.log(`
160
- ${green}Done.${reset} Open Claude Code and type ${cyan}/gsd-cc${reset} to start.
197
+ ${yellow}Which language should GSD-CC use?${reset}
198
+ ${dim}(e.g. English, Deutsch, Français, Español, ...)${reset}
199
+ ${dim}You can change this anytime with /gsd-cc-config in Claude Code${reset}
161
200
  `);
201
+
202
+ rl.question(` Language ${dim}[English]${reset}: `, (answer) => {
203
+ rl.close();
204
+ const language = answer.trim() || 'English';
205
+ writeLanguageConfig(isGlobal, language);
206
+ console.log(` ${green}✓${reset} Language set to ${cyan}${language}${reset}
207
+ `);
208
+ console.log(` ${green}Done.${reset} Open Claude Code and type ${cyan}/gsd-cc${reset} to start.
209
+ `);
210
+ });
162
211
  }
163
212
 
164
213
  /**
@@ -232,8 +281,9 @@ function promptLocation() {
232
281
  rl.question(` Choice ${dim}[1]${reset}: `, (answer) => {
233
282
  rl.close();
234
283
  console.log();
235
- const choice = answer.trim() || '1';
236
- install(choice !== '2');
284
+ const isGlobal = (answer.trim() || '1') !== '2';
285
+ install(isGlobal);
286
+ promptLanguage(isGlobal);
237
287
  });
238
288
  }
239
289
 
@@ -245,8 +295,10 @@ if (hasUninstall) {
245
295
  process.exit(1);
246
296
  } else if (hasGlobal) {
247
297
  install(true);
298
+ promptLanguage(true);
248
299
  } else if (hasLocal) {
249
300
  install(false);
301
+ promptLanguage(false);
250
302
  } else {
251
303
  promptLocation();
252
304
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gsd-cc",
3
- "version": "0.3.2",
3
+ "version": "0.5.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`. All output — messages, suggestions, file content — 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, suggestions, file content — must use that language. If not found, default to English.
18
18
 
19
19
  ## Step 1: Detect State
20
20
 
@@ -148,6 +148,7 @@ When routing to a sub-skill, tell the user what you're doing and then invoke the
148
148
  - Auto mode → `/gsd-cc-auto`
149
149
  - Status overview → `/gsd-cc-status`
150
150
  - Update skills → `/gsd-cc-update`
151
+ - Settings → `/gsd-cc-config`
151
152
  - Help → `/gsd-cc-help`
152
153
  - Tutorial → `/gsd-cc-tutorial`
153
154
 
@@ -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
 
@@ -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,21 +14,15 @@ 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: Language Selection
17
+ ### Step 0: Language
18
18
 
19
- Before anything else, ask the user which language to use:
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.
20
20
 
21
+ Tell the user which language you're using:
21
22
  ```
22
- No .gsd/ directory found. Let's start a new project.
23
-
24
- Which language should I use? (e.g. English, Deutsch, Français, ...)
25
- Default: English
23
+ Language: {language} (change with /gsd-cc-config)
26
24
  ```
27
25
 
28
- If the user responds with a project description instead of a language, default to English and continue with Step 1 using their response as the project description.
29
-
30
- Store the chosen language. **All communication, generated files, plans, acceptance criteria, UNIFY reports, and status output will use this language from now on.**
31
-
32
26
  ### Step 1: Ask What They're Building
33
27
 
34
28
  If not already answered in Step 0, ask:
@@ -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