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 +98 -92
- package/package.json +4 -4
- package/src/__tests__/plugin-setup.test.ts +502 -6
- package/src/__tests__/profile-materializer.test.ts +87 -0
- package/src/cli/install.ts +36 -5
- package/src/cli/router.ts +17 -9
- package/src/services/plugin-setup.ts +413 -59
- package/src/services/profile-materializer.ts +55 -4
package/README.md
CHANGED
|
@@ -1,128 +1,134 @@
|
|
|
1
1
|
# claudeup
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
##
|
|
6
|
+
## Install
|
|
6
7
|
|
|
7
8
|
```bash
|
|
8
|
-
#
|
|
9
|
-
|
|
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
|
-
|
|
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
|
-
|
|
55
|
-
claudeup
|
|
56
|
-
|
|
57
|
-
# Or with npx
|
|
58
|
-
npx claudeup
|
|
16
|
+
claudeup update
|
|
59
17
|
```
|
|
60
18
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
##
|
|
23
|
+
## Two ways to use it
|
|
69
24
|
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
75
|
-
|
|
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
|
-
|
|
78
|
-
pnpm start:bun # With Bun
|
|
79
|
-
pnpm start # With Node
|
|
80
|
-
```
|
|
32
|
+
## Commands
|
|
81
33
|
|
|
82
|
-
|
|
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
|
|
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
|
-
|
|
87
|
-
- `.claude/settings.local.json` - Local settings (MCP servers, allowMcp)
|
|
58
|
+
## What the TUI covers
|
|
88
59
|
|
|
89
|
-
|
|
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
|
-
|
|
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
|
-
|
|
74
|
+
## Files claudeup touches
|
|
94
75
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
-
|
|
89
|
+
## Development
|
|
106
90
|
|
|
107
91
|
```bash
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
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
|
-
|
|
123
|
-
|
|
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.
|
|
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.
|
|
68
|
-
"claudeup-darwin-x64": "4.
|
|
69
|
-
"claudeup-linux-x64": "4.
|
|
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
|
}
|