@antonior/claude-code-setup 2.0.1 → 2.0.3

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,7 @@ The installer installs these for you if missing:
41
41
  | `jq` | hooks (JSON parsing) | **Required** — install aborts without it. |
42
42
  | `python3` | `transcript-search` MCP + video-FPS hook | Best-effort — feature stays dormant if it can't install. |
43
43
  | `ffmpeg` | `claude-video-vision` MCP | Best-effort. |
44
+ | `tmux` | optional `cr` tmux launch workflow (lives in shell config, not shipped) | Best-effort. |
44
45
  | `git`, `eslint`, `tsc` | commit-scan / lint / typecheck hooks | Optional — hooks no-op cleanly when absent. |
45
46
 
46
47
  ## What it installs (into `~/.claude/`)
@@ -85,6 +86,34 @@ The installer reproduces **100% of the configuration and behaviour**. Two things
85
86
  1. **Log into Claude Code** (your account — you'd do this on any new machine anyway).
86
87
  2. **Give `claude-video-vision` your own API key** if you use video analysis.
87
88
 
89
+ ## Shell workflow (optional, not shipped)
90
+
91
+ The package mirrors `~/.claude` only, so anything in your shell config (`~/.zshrc`) is **not** shipped. Add it per machine. These two bits drive how I launch Claude:
92
+
93
+ **Start Claude in bypass mode** (skips per-tool permission prompts). Note: `skipDangerousModePermissionPrompt` in `settings.json` only suppresses the warning; this alias is what actually starts a session in bypass mode:
94
+
95
+ ```sh
96
+ alias claude="claude --dangerously-skip-permissions"
97
+ ```
98
+
99
+ **`cr` — launch Claude inside a tmux session** (named after the current directory, or pass a name: `cr myname`):
100
+
101
+ ```sh
102
+ cr() {
103
+ local session="${1:-$(basename "$PWD")}"
104
+ session="${session//[.:]/_}" # tmux treats . and : as target separators
105
+ if tmux has-session -t "$session" 2>/dev/null; then
106
+ tmux attach-session -t "$session"
107
+ else
108
+ tmux new-session -s "$session" -d -c "$PWD"
109
+ tmux send-keys -t "$session" "claude --dangerously-skip-permissions --remote-control '$session'" Enter
110
+ tmux attach-session -t "$session"
111
+ fi
112
+ }
113
+ ```
114
+
115
+ `cr` needs `tmux`, which the installer now installs best effort (see the dependencies table). After editing `~/.zshrc`, run `source ~/.zshrc` or open a new terminal.
116
+
88
117
  ## Maintaining (for me)
89
118
 
90
119
  The package is an exact mirror of my own `~/.claude`. To refresh it from my live config and publish:
package/bin/install.js CHANGED
@@ -153,6 +153,7 @@ function main() {
153
153
  if (!brewInstall('jq', { required: true })) process.exit(1);
154
154
  brewInstall('python3');
155
155
  brewInstall('ffmpeg');
156
+ brewInstall('tmux');
156
157
  }
157
158
 
158
159
  // 2. Mirror every shipped config file into ~/.claude at the same relative
@@ -171,9 +172,37 @@ function main() {
171
172
  console.log(c.bold(c.green('\nDone. Restart Claude Code to apply.')));
172
173
  console.log(c.dim('Overwrites are backed up to <file>.bak. Unmanaged files already in ~/.claude are left untouched.'));
173
174
  if (!CONFIG_ONLY) {
174
- console.log(c.dim('Two one-time steps on a new machine (identity, not config — they can\'t ship):'));
175
- console.log(c.dim(' 1. Log into Claude Code.'));
176
- console.log(c.dim(' 2. For video analysis, give claude-video-vision your own API key.\n'));
175
+ const bar = c.yellow(''.repeat(64));
176
+ console.log(`
177
+ ${bar}
178
+ ${c.bold(c.yellow(' MANUAL STEPS: do these once on each machine'))}
179
+ ${c.dim(' (a package can only write ~/.claude; your shell config and your')}
180
+ ${c.dim(' account cannot ship, so set them up yourself)')}
181
+ ${bar}
182
+
183
+ ${c.bold('1) Shell setup')} — add to ${c.bold('~/.zshrc')}, then run: ${c.bold('source ~/.zshrc')}
184
+
185
+ ${c.dim('# start Claude in bypass mode (skips permission prompts)')}
186
+ alias claude="claude --dangerously-skip-permissions"
187
+
188
+ ${c.dim('# cr: open Claude in a tmux session named after the current dir')}
189
+ cr() {
190
+ local session="\${1:-$(basename "$PWD")}"
191
+ session="\${session//[.:]/_}" # tmux treats . and : as separators
192
+ if tmux has-session -t "$session" 2>/dev/null; then
193
+ tmux attach-session -t "$session"
194
+ else
195
+ tmux new-session -s "$session" -d -c "$PWD"
196
+ tmux send-keys -t "$session" "claude --dangerously-skip-permissions --remote-control '$session'" Enter
197
+ tmux attach-session -t "$session"
198
+ fi
199
+ }
200
+
201
+ ${c.bold('2) Log into Claude Code')} (your account).
202
+ ${c.bold('3) claude-video-vision API key')}: add your own if you use video analysis.
203
+
204
+ ${bar}
205
+ `);
177
206
  }
178
207
  }
179
208
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antonior/claude-code-setup",
3
- "version": "2.0.1",
3
+ "version": "2.0.3",
4
4
  "description": "Install Antonio's full Claude Code setup: hooks, slash commands, skills, statusline, settings, and MCP servers (transcript-search + video-vision)",
5
5
  "bin": {
6
6
  "claude-code-setup": "bin/install.js"