claude-spotter 0.1.0 → 0.1.1

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/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.0 (Unreleased)
3
+ ## 0.1.1
4
+
5
+ - `npm install -g claude-spotter` now registers hooks at user level automatically via the `postinstall` lifecycle — no separate `spotter install` step needed
6
+ - `npm uninstall -g claude-spotter` removes hook entries from `~/.claude/settings.json` via `preuninstall`
7
+ - Opt-out: set `CLAUDE_SPOTTER_NO_AUTO_INSTALL=1` before install, or install in an environment where `CI=true` (CI is auto-skipped)
8
+
9
+ ## 0.1.0
4
10
 
5
11
  Initial release.
6
12
 
package/README.md CHANGED
@@ -10,10 +10,11 @@ Spotter は、ツールカタログを完全に把握した別エージェント
10
10
 
11
11
  ```bash
12
12
  npm install -g claude-spotter
13
- spotter install # .claude/settings.json に hook を登録 (diff を見せて確認)
14
13
  ```
15
14
 
16
- 次回 Claude Code セッションから自動で有効になります。
15
+ これだけで `~/.claude/settings.json` に hook が自動登録され、次回 Claude Code セッションから全プロジェクトで有効になります (`postinstall` ライフサイクルが `spotter install --user` を自動実行します)。
16
+
17
+ 自動登録を止めたい場合は `CLAUDE_SPOTTER_NO_AUTO_INSTALL=1 npm install -g claude-spotter` と打てばスキップされ、あとから `spotter install` / `spotter install --user` を好きなタイミングで手動実行できます。CI 環境 (`CI=true`) では自動的にスキップされます。
17
18
 
18
19
  ## 動作要件
19
20
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-spotter",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Audit agent running alongside Claude Code that catches missed tool calls — 気づく役と実行する役の分離",
5
5
  "type": "module",
6
6
  "bin": {
@@ -10,7 +10,9 @@
10
10
  ".": "./src/index.mjs"
11
11
  },
12
12
  "scripts": {
13
- "test": "node --test"
13
+ "test": "node --test",
14
+ "postinstall": "node scripts/postinstall.mjs",
15
+ "preuninstall": "node scripts/preuninstall.mjs"
14
16
  },
15
17
  "keywords": [
16
18
  "claude",
@@ -40,6 +42,7 @@
40
42
  "files": [
41
43
  "bin",
42
44
  "src",
45
+ "scripts",
43
46
  "templates",
44
47
  "README.md",
45
48
  "LICENSE",
@@ -0,0 +1,42 @@
1
+ // Runs after `npm install (-g) claude-spotter`.
2
+ // Registers hooks at user level so Spotter is active across all projects
3
+ // without requiring a separate `spotter install` step.
4
+ //
5
+ // Never fails npm install — on any error we warn and exit 0 so the user's
6
+ // node_modules/global bin is still usable. They can re-run `spotter install --user`
7
+ // manually if needed.
8
+
9
+ import { runInstall } from '../src/cli/install.mjs';
10
+
11
+ const SKIP_ENV = 'CLAUDE_SPOTTER_NO_AUTO_INSTALL';
12
+
13
+ async function main() {
14
+ if (process.env[SKIP_ENV]) {
15
+ console.log(`claude-spotter: auto-install skipped (${SKIP_ENV} set).`);
16
+ console.log(' run `spotter install --user` later to register hooks.');
17
+ return;
18
+ }
19
+
20
+ // Skip in well-known CI environments — CI builds shouldn't silently modify
21
+ // ~/.claude/settings.json of whatever runner user this is.
22
+ if (process.env.CI === 'true' || process.env.CI === '1') {
23
+ console.log('claude-spotter: auto-install skipped (CI detected).');
24
+ console.log(' run `spotter install --user` on your dev machine.');
25
+ return;
26
+ }
27
+
28
+ try {
29
+ await runInstall({ target: 'user', autoYes: true });
30
+ console.log('\nclaude-spotter: hooks registered at user level (~/.claude/settings.json).');
31
+ console.log(' Open a new Claude Code session to activate.');
32
+ console.log(` To skip this next time: set ${SKIP_ENV}=1 before npm install.`);
33
+ } catch (err) {
34
+ console.warn(`claude-spotter: auto-install skipped — ${err.message}`);
35
+ console.warn(' run `spotter install --user` to register hooks manually.');
36
+ }
37
+ }
38
+
39
+ main().catch((err) => {
40
+ // Defensive: never let postinstall crash the install.
41
+ console.warn(`claude-spotter: postinstall unexpected error — ${err.message}`);
42
+ });
@@ -0,0 +1,14 @@
1
+ // Runs before `npm uninstall (-g) claude-spotter`.
2
+ // Removes hooks from ~/.claude/settings.json so an uninstall leaves the system clean.
3
+ //
4
+ // Never fails the uninstall — on error we warn and exit 0.
5
+
6
+ import { runUninstall } from '../src/cli/uninstall.mjs';
7
+
8
+ try {
9
+ await runUninstall({ target: 'user', autoYes: true });
10
+ console.log('claude-spotter: hooks removed from ~/.claude/settings.json.');
11
+ } catch (err) {
12
+ console.warn(`claude-spotter: hook cleanup skipped — ${err.message}`);
13
+ console.warn(' you may need to edit ~/.claude/settings.json manually.');
14
+ }
package/src/version.mjs CHANGED
@@ -1 +1 @@
1
- export const version = '0.1.0';
1
+ export const version = '0.1.1';