gsd-cc 0.4.0 → 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'];
@@ -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.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`. 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
 
@@ -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,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