claude-code-modes 0.2.12 → 0.2.14

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/README.md CHANGED
@@ -41,6 +41,14 @@ claude-mode update --dry-run # show what would happen
41
41
 
42
42
  `update` only works on binaries built from the upstream repo. If you're running from a `git clone` checkout (`bun link`), use `git pull && bun install` instead. If you're running a fork build, update via your fork's release process.
43
43
 
44
+ > **Stuck on v0.2.12?** v0.2.12 binaries had a bug that misclassified upstream releases as fork builds, so `claude-mode update` refuses to run with `Cannot self-update: Binary was built from a fork: https://github.com/nklisch/claude-code-modes`. The fix in v0.2.13 cannot reach you from inside v0.2.12 — reinstall via `install.sh` to recover:
45
+ >
46
+ > ```bash
47
+ > curl -fsSL https://raw.githubusercontent.com/nklisch/claude-code-modes/main/install.sh | sh
48
+ > ```
49
+ >
50
+ > Once you're on v0.2.13 or later, `claude-mode update` works normally.
51
+
44
52
  ## Usage
45
53
 
46
54
  Pick a preset that matches your task:
@@ -55,6 +63,7 @@ claude-mode debug # Investigation-first debugging (chill base)
55
63
  claude-mode methodical # Step-by-step precision (chill base)
56
64
  claude-mode director # Delegate to sub-agents, orchestrate and verify (chill base)
57
65
  claude-mode partner # Pair-of-equals: terse, test-first, decisive on craft (chill base)
66
+ claude-mode muse # Creative latitude — treat the request as inspiration, not spec (chill base)
58
67
  claude-mode none # Strip all behavioral opinions, use your own CLAUDE.md
59
68
  ```
60
69
 
@@ -69,6 +78,7 @@ claude-mode none # Strip all behavioral opinions, use your own CLAUDE.md
69
78
  | `methodical` | surgical | architect | narrow | Step-by-step craftsmanship — follow instructions, stop when done |
70
79
  | `director` | collaborative | architect | unrestricted | Orchestrate sub-agents — delegate implementation, verify results |
71
80
  | `partner` | partner | pragmatic | adjacent | Pair-of-equals collaboration — decisive on craft, test-first, terse by default |
81
+ | `muse` | autonomous | architect | unrestricted | Creative latitude — input as inspiration, Claude commits to a vision |
72
82
  | `none` | — | — | — | Strip all behavioral instructions, use your own |
73
83
 
74
84
  ### Alternative base: chill
@@ -109,10 +119,10 @@ prompts/
109
119
  base/ Standard base (derived from upstream Claude Code)
110
120
  chill/ Alternative base (emotion-research-informed, leaner)
111
121
  axis/ Behavioral prompts organized by three axes
112
- modifiers/ Behavioral layers (bold, debug, methodical, director, readonly, context-pacing, speak-plain, tdd)
122
+ modifiers/ Behavioral layers (bold, debug, methodical, director, readonly, context-pacing, speak-plain, tdd, muse)
113
123
  ```
114
124
 
115
- Each base has a `base.json` manifest — a flat JSON array declaring fragment order with `"axes"` and `"modifiers"` as reserved insertion points. The standard base is validated against Claude Code **v2.1.133**.
125
+ Each base has a `base.json` manifest — a flat JSON array declaring fragment order with `"axes"` and `"modifiers"` as reserved insertion points. The standard base is validated against Claude Code **v2.1.143**.
116
126
 
117
127
  The behavioral layer is composed from three independent axes — **agency** (how much initiative), **quality** (what code standard), and **scope** (how far beyond the request). Presets are just named combinations of these three values.
118
128
 
@@ -287,6 +297,22 @@ The **director** preset also uses bold framing in its design — "you own the ou
287
297
 
288
298
  This isn't about removing caution — security boundaries and error handling at system boundaries remain firm. It's about shifting from anxious defensiveness ("what if this edge case...") to professional confidence ("I know this language, here's the clean solution").
289
299
 
300
+ ## Muse
301
+
302
+ The **muse** preset (and modifier) gives Claude explicit creative latitude. Instead of treating your request as a spec to execute, Claude treats it as a starting point to interpret — then commits to a clear vision before building.
303
+
304
+ The core framing: most LLM output gravitates toward the average shape — same patterns, same scaffolds, same safe defaults. Muse works against that gravity. Before building, Claude names a single creative direction (what's the organizing idea? what are we leaving behind?), then executes with conviction in that direction. Bold maximalism and refined minimalism both qualify. The point is intentionality, not intensity.
305
+
306
+ ```bash
307
+ claude-mode muse # Creative latitude as a standalone preset
308
+ claude-mode create --modifier muse # Add muse framing to any other preset
309
+ claude-mode partner --modifier muse # Pair-programming with creative latitude
310
+ ```
311
+
312
+ The "Beneath you" framing is explicit: generic scaffolding, first-idea defaults, and hedged delivery are beneath what Claude can do when given room to. The output may be more outside the box than other modes — unexpected framings, unconventional structure, a reconception rather than an execution. That's the point. Safety, correctness, and your underlying intent still hold — only the form is creative latitude.
313
+
314
+ This is an opt-in mode. Use it when you want Claude to surprise you rather than satisfy you.
315
+
290
316
  ## Context pacing
291
317
 
292
318
  Use `--context-pacing` to include a modifier that tells Claude it's okay to pause at a natural stopping point rather than rushing to finish as context fills up. This addresses a real failure pattern: as context gets long, Claude starts cutting corners, skipping error handling, and leaving broken code.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-modes",
3
- "version": "0.2.12",
3
+ "version": "0.2.14",
4
4
  "description": "Behaviorally-tuned system prompts for Claude Code",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -9,7 +9,7 @@ You have been invoked in the following environment:
9
9
  - Assistant knowledge cutoff is {{KNOWLEDGE_CUTOFF}}.
10
10
  - The most recent Claude model family is Claude 4.X. Model IDs — Opus 4.7: 'claude-opus-4-7', Sonnet 4.6: 'claude-sonnet-4-6', Haiku 4.5: 'claude-haiku-4-5-20251001'. When building AI applications, default to the latest and most capable Claude models.
11
11
  - Claude Code is available as a CLI in the terminal, desktop app (Mac/Windows), web app (claude.ai/code), and IDE extensions (VS Code, JetBrains).
12
- - Fast mode for Claude Code uses Claude Opus 4.6 with faster output (it does not downgrade to a smaller model). It can be toggled with /fast and is only available on Opus 4.6.
12
+ - Fast mode for Claude Code uses Claude Opus with faster output (it does not downgrade to a smaller model). It can be toggled with /fast and is available on Opus 4.6 and Opus 4.7.
13
13
 
14
14
  When working with tool results, write down any important information you might need later in your response, as the original tool result may be cleared later.
15
15
 
package/src/build-info.ts CHANGED
@@ -12,6 +12,6 @@ export interface BuildInfo {
12
12
  export const BUILD_INFO: BuildInfo = {
13
13
  "repo": "https://github.com/nklisch/claude-code-modes",
14
14
  "branch": null,
15
- "commit": "674f974",
15
+ "commit": "44d2f2b",
16
16
  "dirty": false
17
17
  };
@@ -86,7 +86,7 @@ You have been invoked in the following environment:
86
86
  - Assistant knowledge cutoff is {{KNOWLEDGE_CUTOFF}}.
87
87
  - The most recent Claude model family is Claude 4.X. Model IDs — Opus 4.7: 'claude-opus-4-7', Sonnet 4.6: 'claude-sonnet-4-6', Haiku 4.5: 'claude-haiku-4-5-20251001'. When building AI applications, default to the latest and most capable Claude models.
88
88
  - Claude Code is available as a CLI in the terminal, desktop app (Mac/Windows), web app (claude.ai/code), and IDE extensions (VS Code, JetBrains).
89
- - Fast mode for Claude Code uses Claude Opus 4.6 with faster output (it does not downgrade to a smaller model). It can be toggled with /fast and is only available on Opus 4.6.
89
+ - Fast mode for Claude Code uses Claude Opus with faster output (it does not downgrade to a smaller model). It can be toggled with /fast and is available on Opus 4.6 and Opus 4.7.
90
90
 
91
91
  When working with tool results, write down any important information you might need later in your response, as the original tool result may be cleared later.
92
92
 
package/src/update.ts CHANGED
@@ -12,8 +12,14 @@ import { BUILD_INFO, type BuildInfo } from "./build-info.js";
12
12
  /** Upstream repo slug — also referenced by install.sh and the release workflow. */
13
13
  const UPSTREAM_REPO = "nklisch/claude-code-modes";
14
14
 
15
- /** Normalized form of the upstream remote URL captured by build-info. */
16
- const UPSTREAM_REPO_URL = "https://github.com/nklisch/claude-code-modes.git";
15
+ /**
16
+ * Canonical form of the upstream remote URL captured by build-info — must
17
+ * match the output of `normalizeRepoUrl` in `scripts/generate-build-info.ts`
18
+ * (no `.git` suffix, no trailing slash). `canonicalRepoUrl` below still
19
+ * normalizes both sides at compare time, so older binaries that embedded the
20
+ * `.git` form continue to match.
21
+ */
22
+ const UPSTREAM_REPO_URL = "https://github.com/nklisch/claude-code-modes";
17
23
 
18
24
  const USER_AGENT = `claude-mode/${VERSION}`;
19
25
 
@@ -138,6 +144,16 @@ export function parseUpdateArgs(argv: string[]): UpdateOptions {
138
144
  return opts;
139
145
  }
140
146
 
147
+ /**
148
+ * Canonicalize a git remote URL for equality comparison. Strips the optional
149
+ * `.git` suffix, trailing slash, and lowercases — `actions/checkout` sets origin
150
+ * without `.git`, while local clones via `git clone <url>.git` keep it. Both
151
+ * point at the same repo and must compare equal.
152
+ */
153
+ function canonicalRepoUrl(url: string): string {
154
+ return url.toLowerCase().replace(/\.git$/, "").replace(/\/+$/, "");
155
+ }
156
+
141
157
  /** Determines whether the running binary is safe to self-update. Pure. */
142
158
  export function classifyInstall(
143
159
  execPath: string = process.execPath,
@@ -160,7 +176,7 @@ export function classifyInstall(
160
176
  }
161
177
 
162
178
  // 3. Non-upstream repo → fork build
163
- if (buildInfo.repo && buildInfo.repo !== UPSTREAM_REPO_URL) {
179
+ if (buildInfo.repo && canonicalRepoUrl(buildInfo.repo) !== canonicalRepoUrl(UPSTREAM_REPO_URL)) {
164
180
  return {
165
181
  kind: "fork",
166
182
  reason: `Binary was built from a fork: ${buildInfo.repo}`,