claudeup 4.29.0 → 4.31.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/README.md CHANGED
@@ -1,128 +1,134 @@
1
1
  # claudeup
2
2
 
3
- TUI tool for managing Claude Code plugins, MCPs, and configuration.
3
+ Manage a Claude Code setup — plugins, MCP servers, skills, CLI tools and the
4
+ binaries plugins depend on — from a TUI, a CLI, or a committed team manifest.
4
5
 
5
- ## Installation
6
+ ## Install
6
7
 
7
8
  ```bash
8
- # Using pnpm
9
- pnpm add -g claudeup
10
-
11
- # Using pnpx (no install)
12
- pnpx claudeup
13
-
14
- # Using npm
15
- npm install -g claudeup
16
-
17
- # Using Bun
18
- bun add -g claudeup
9
+ bun add -g claudeup # recommended
10
+ npm install -g claudeup # also works
19
11
  ```
20
12
 
21
- ## Features
22
-
23
- ### 1. MCP Server Setup
24
- Configure Model Context Protocol servers with a curated list:
25
- - **File System** - Read/write files, search directories
26
- - **Database** - SQLite, PostgreSQL connections
27
- - **Developer Tools** - GitHub, GitLab, Chrome DevTools, Puppeteer
28
- - **API & Web** - HTTP requests, Brave Search
29
- - **Productivity** - Google Drive, Slack, Memory
30
- - **AI & Intelligence** - Claude Context (semantic search), Sequential Thinking
31
-
32
- ### 2. Plugin Marketplaces
33
- Add official and community plugin marketplaces:
34
- - **Anthropic Official** - Official Claude Code plugins
35
- - **MadAppGang** - Frontend, Backend, Code Analysis plugins
36
-
37
- ### 3. Manage Plugins
38
- Install and configure plugins from added marketplaces:
39
- - Frontend Development (React/TypeScript)
40
- - Code Analysis (Deep investigation)
41
- - Bun Backend (TypeScript backend)
42
- - Orchestration (Multi-agent patterns)
43
- - Agent Development (Create agents)
44
-
45
- ### 4. Status Line Configuration
46
- Configure the Claude Code status line with presets:
47
- - Minimal, Standard, Detailed
48
- - Git-aware, Token-focused
49
- - Time-tracking, Developer
50
-
51
- ## Usage
13
+ Updates go through claudeup itself, not the package manager:
52
14
 
53
15
  ```bash
54
- # Launch TUI
55
- claudeup
56
-
57
- # Or with npx
58
- npx claudeup
16
+ claudeup update
59
17
  ```
60
18
 
61
- ### Navigation
62
- - `↑/↓` or `j/k` - Move selection
63
- - `Enter` - Select item
64
- - `Escape/q` - Go back / Exit
65
- - `?` - Show help
66
- - `1-4` - Quick jump to screens
19
+ You get a self-contained binary for your platform (an `optionalDependencies`
20
+ package gated on `os`/`cpu`). On a platform without a prebuilt binary the
21
+ launcher falls back to running from source under Bun, so the install still works.
67
22
 
68
- ## Development
23
+ ## Two ways to use it
69
24
 
70
- ```bash
71
- # Install dependencies
72
- pnpm install
25
+ **Interactive** — run `claudeup` with no arguments for the TUI. Good for
26
+ exploring what is available and toggling things on one machine.
73
27
 
74
- # Build
75
- pnpm build
28
+ **Declarative** — commit a `.claude/profiles.json` and run `claudeup install`.
29
+ Good for making a teammate's machine match yours. This is the
30
+ [team configuration guide](docs/team-configuration.md).
76
31
 
77
- # Run in development
78
- pnpm start:bun # With Bun
79
- pnpm start # With Node
80
- ```
32
+ ## Commands
81
33
 
82
- ## Configuration Files
34
+ ```
35
+ claudeup Open the interactive TUI
36
+
37
+ install [profile] Install a profile's plugins, binaries, skills and
38
+ env, then activate it. No argument = every profile.
39
+ --check Report drift only, write nothing (CI gate)
40
+ --yes, -y Skip the confirmation prompt
41
+ --force Discard unsynced local edits instead of refusing
42
+ profile list Show every profile; ● marks the active one
43
+ profile show <name> Print a profile's fully resolved closure
44
+ profile switch <name> Repoint the active profile — offline, no reinstall
45
+ profile sync Promote local edits back into .claude/profiles.json
46
+ doctor [--fix] Check binary deps, profile symlinks, conventions
47
+
48
+ claude [args...] Check for plugin updates (1h cache), then run claude
49
+ --force, -f Force the update check
50
+ update Update claudeup itself
51
+ --version, -v Version + update check
52
+ --help, -h This list
53
+ ```
83
54
 
84
- claudeup modifies these Claude Code configuration files:
55
+ `claudeup doctor` exits non-zero when it finds a problem, so it works as a CI
56
+ check. So does `claudeup install --check`.
85
57
 
86
- - `.claude/settings.json` - Shared settings (plugins, marketplaces)
87
- - `.claude/settings.local.json` - Local settings (MCP servers, allowMcp)
58
+ ## What the TUI covers
88
59
 
89
- ## Release Process
60
+ | Screen | What it manages |
61
+ |---|---|
62
+ | Plugins | Install, enable, disable; shows version changes and newly installed plugins |
63
+ | Skills | Browse and install skills from configured skill repos |
64
+ | MCP | Add MCP servers from a curated catalog |
65
+ | Settings | Claude Code settings, from a catalog of known keys |
66
+ | Profiles | Saved plugin sets (the TUI's own, older profile concept) |
67
+ | CLI Tools | Install claudish, mnemex and friends via the right package manager |
68
+ | Git State | Gitignore conventions and repo hygiene |
69
+ | Alias | Shell alias + flag management for launching `claude` |
90
70
 
91
- Releases are automated via GitHub Actions using [npm Trusted Publishing](https://docs.npmjs.com/trusted-publishers/) with OIDC - no tokens required.
71
+ Navigate with `↑/↓` or `j/k`, `Enter` to select, `r` to refresh, `?` for help,
72
+ `q`/`Escape` to go back. Number keys `1`–`8` jump straight to a screen.
92
73
 
93
- ### One-Time Setup
74
+ ## Files claudeup touches
94
75
 
95
- 1. **Publish first version manually** (required for new packages):
96
- ```bash
97
- npm run build
98
- npm publish --access public
99
- ```
76
+ | Path | Owner | What claudeup does |
77
+ |---|---|---|
78
+ | `.claude/profiles.json` | you, committed | reads it; `profile sync` writes to it |
79
+ | `.claude/_profiles/<name>/` | claudeup, gitignored | generated build output |
80
+ | `.claude/settings.json` | Claude Code | in profile mode, a symlink into `_profiles/` |
81
+ | `.claude/settings.local.json` | you, gitignored | env values collected during install |
82
+ | `.mcp.json` | Claude Code | in profile mode, a symlink into `_profiles/` |
83
+ | `~/.claude/plugins/*` | Claude Code | never written directly — always via the `claude` CLI |
100
84
 
101
- 2. **Configure Trusted Publisher on npmjs.com** (already done):
102
- - Repository: `MadAppGang/magus`
103
- - Workflow: `claudeup-release.yml`
85
+ claudeup never hand-edits Claude Code's own registries
86
+ (`installed_plugins.json`, `known_marketplaces.json`, the plugin cache). Those go
87
+ through `claude plugin ...` so Claude Code stays the single writer.
104
88
 
105
- ### Releasing New Versions
89
+ ## Development
106
90
 
107
91
  ```bash
108
- # 1. Update version in package.json
109
- npm version patch # or minor, major
110
-
111
- # 2. Push the tag
112
- git push origin main --tags
92
+ bun install
93
+ bun test # full suite
94
+ bun run typecheck
95
+ bun run lint
96
+ bun run src/main.tsx # run from source
97
+ bun run build:binaries # cross-compile all platform binaries + their packages
113
98
  ```
114
99
 
115
- This triggers:
116
- 1. **claudeup-release.yml** - Builds and publishes to npm via OIDC (no tokens needed)
117
- 2. **create-release.yml** - Creates a GitHub release with changelog
100
+ Tests run per-file isolated in CI (`bun run test:ci`) because `mock.module`
101
+ leaks across files in a shared process.
102
+
103
+ **Do not bump `@opentui` past 0.1.x.** 0.4.x breaks `bun build --compile`: it
104
+ resolves tree-sitter workers eagerly, bypassing the `OTUI_ASSET_ROOT` override,
105
+ so a bare `import "@opentui/core"` crashes at import time in the compiled
106
+ binary. Re-run the compile spike before changing that pin.
118
107
 
119
- ### Manual Release
108
+ ## Releasing
109
+
110
+ Tag-driven. `.github/workflows/claudeup-release.yml` fires on `tools/claudeup/v*`:
111
+
112
+ 1. **verify** — install, typecheck, `test:ci`, version and optional-deps gates
113
+ 2. **binaries** — a matrix building each target on its **native** runner
114
+ (`bun --compile` cannot cross-compile in CI because opentui ships a
115
+ per-platform native library)
116
+ 3. **publish** — platform packages first, main package last, so its
117
+ `optionalDependencies` already resolve
120
118
 
121
119
  ```bash
122
- npm run build
123
- npm publish --access public
120
+ # bump "version" AND the three optionalDependencies to match
121
+ bun run check:optional-deps
122
+ git commit -am "feat(claudeup): vX.Y.Z - description"
123
+ git tag -a tools/claudeup/vX.Y.Z -m "Release message"
124
+ git push origin main --tags
124
125
  ```
125
126
 
127
+ Auth is npm OIDC trusted publishing — the workflow references no secrets. Adding
128
+ a **new** platform target needs a one-time manual publish to create the package
129
+ name (OIDC can only authenticate against a package that already exists); see
130
+ [`docs/npm-trusted-publishing-setup.md`](../../docs/npm-trusted-publishing-setup.md).
131
+
126
132
  ## License
127
133
 
128
134
  MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudeup",
3
- "version": "4.29.0",
3
+ "version": "4.31.0",
4
4
  "description": "TUI tool for managing Claude Code plugins, MCPs, and configuration",
5
5
  "type": "module",
6
6
  "main": "src/main.tsx",
@@ -64,8 +64,8 @@
64
64
  "typescript": "^5.6.3"
65
65
  },
66
66
  "optionalDependencies": {
67
- "claudeup-darwin-arm64": "4.29.0",
68
- "claudeup-darwin-x64": "4.29.0",
69
- "claudeup-linux-x64": "4.29.0"
67
+ "claudeup-darwin-arm64": "4.31.0",
68
+ "claudeup-darwin-x64": "4.31.0",
69
+ "claudeup-linux-x64": "4.31.0"
70
70
  }
71
71
  }