cue-ai 0.3.0 → 0.4.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 +309 -203
- package/package.json +1 -1
- package/profiles/_types.ts +1 -1
- package/profiles/core/profile.yaml +3 -0
- package/profiles/full/profile.yaml +0 -2
- package/profiles/{readme-writer-svg → readme-writer}/profile.yaml +3 -2
- package/profiles/threejs/profile.yaml +19 -0
- package/resources/mcps/configs/claude.sanitized.json +3 -0
- package/resources/mcps/configs/claude_runtime.sanitized.json +3 -0
- package/resources/mcps/configs/codex.sanitized.json +3 -0
- package/resources/mcps/cue-tty-watch/README.md +80 -0
- package/resources/mcps/cue-tty-watch/bin/cue-tty-watch +18 -0
- package/resources/mcps/cue-tty-watch/bun.lock +198 -0
- package/resources/mcps/cue-tty-watch/package.json +17 -0
- package/resources/mcps/cue-tty-watch/server.ts +181 -0
- package/resources/skills/skills/design/headless-gif-demo/SKILL.md +168 -0
- package/resources/skills/skills/meta/kiro-powers/SKILL.md +152 -0
- package/resources/skills/skills/research/find-skills/SKILL.md +127 -102
- package/src/commands/_index.ts +8 -0
- package/src/commands/launch.ts +11 -0
- package/src/commands/list.ts +15 -5
- package/src/commands/materialize.ts +135 -0
- package/src/commands/security.ts +35 -8
- package/src/commands/share.ts +230 -0
- package/src/commands/status.ts +5 -7
- package/src/commands/tree.ts +17 -2
- package/src/lib/agent-adapters.ts +302 -0
- package/src/lib/kitty-image.ts +12 -9
- package/src/lib/runtime-materializer.ts +27 -3
- package/bin/medusa-dev +0 -240
- package/bin/soul +0 -4
package/README.md
CHANGED
|
@@ -1,305 +1,411 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="./docs/assets/hero.svg" alt="cue — Agent Profile Manager for Claude Code & Codex" width="820">
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
>
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://www.npmjs.com/package/cue-ai"><img src="https://img.shields.io/npm/v/cue-ai?style=flat-square&label=npm&color=6366f1" alt="npm version"></a>
|
|
7
|
+
<a href="https://www.npmjs.com/package/cue-ai"><img src="https://img.shields.io/npm/dw/cue-ai?style=flat-square&label=downloads&color=22c55e" alt="npm downloads"></a>
|
|
8
|
+
<a href="https://github.com/recodeee/cue/stargazers"><img src="https://img.shields.io/github/stars/recodeee/cue?style=flat-square&label=★&color=fbbf24" alt="GitHub stars"></a>
|
|
9
|
+
<a href="https://github.com/recodeee/cue/commits/main"><img src="https://img.shields.io/github/last-commit/recodeee/cue?style=flat-square&label=last%20commit&color=ec4899" alt="last commit"></a>
|
|
10
|
+
<a href="./LICENSE"><img src="https://img.shields.io/github/license/recodeee/cue?style=flat-square&color=8b5cf6" alt="MIT license"></a>
|
|
11
|
+
</p>
|
|
4
12
|
|
|
5
|
-
|
|
13
|
+
# cue — Agent Profile Manager for Claude Code, Codex & 8 more
|
|
6
14
|
|
|
7
|
-
|
|
15
|
+
> Every `claude` session loads all **1,927** skills you've ever installed. Your model picks the wrong one. Your tokens evaporate. **cue fixes this in one command.**
|
|
16
|
+
|
|
17
|
+
**Works with:** Claude Code · Codex · Cursor · Cline · Gemini · GitHub Copilot · Windsurf · Roo Code · Amp · Aider → [jump to the full matrix ↓](#agents-cue-supports)
|
|
18
|
+
|
|
19
|
+
## ⚡ 60-second quickstart
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npm install -g cue-ai # 1. install
|
|
23
|
+
cd ~/projects/q4-launch && echo marketing > .cue-profile # 2. pin a profile to this repo
|
|
24
|
+
claude # 3. boots with only the marketing loadout
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
That's it. `cd` into any other repo and `claude` will boot with that repo's profile instead — no flags, no env vars, no daemon.
|
|
28
|
+
|
|
29
|
+
<p align="center">
|
|
30
|
+
<img src="./docs/assets/demo.gif" alt="cue 30-second demo — install, pin a profile, optimize, launch" width="820" onerror="this.style.display='none'">
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
> **No GIF yet?** Generate it with [`vhs`](https://github.com/charmbracelet/vhs): `vhs docs/demo.tape` → writes `docs/assets/demo.gif`.
|
|
34
|
+
|
|
35
|
+
<details>
|
|
36
|
+
<summary>📑 <b>Table of contents</b></summary>
|
|
37
|
+
|
|
38
|
+
- [Why a profile manager at all?](#why-a-profile-manager-at-all)
|
|
39
|
+
- [How cue compares](#how-cue-compares)
|
|
40
|
+
- [How it works](#how-it-works)
|
|
41
|
+
- [Agents cue supports](#agents-cue-supports)
|
|
42
|
+
- [`cue optimizer` — see every loadout at a glance](#cue-optimizer--see-every-loadout-at-a-glance)
|
|
43
|
+
- [The 16-profile catalog](#the-16-profile-catalog)
|
|
44
|
+
- [Install](#install)
|
|
45
|
+
- [What ships with each profile](#what-ships-with-each-profile-the-lean-stack)
|
|
46
|
+
- [FAQ](#faq)
|
|
47
|
+
- [Repo layout](#repo-layout)
|
|
48
|
+
- [Built with / built on](#built-with--built-on)
|
|
49
|
+
- [Contributing](#contributing)
|
|
50
|
+
|
|
51
|
+
</details>
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Why a profile manager at all?
|
|
56
|
+
|
|
57
|
+
> **TL;DR** — without cue, every `claude` session loads every skill, MCP, and plugin you've ever installed. cue scopes the loadout per-directory so each repo only sees what it actually needs.
|
|
58
|
+
|
|
59
|
+
<p align="center">
|
|
60
|
+
<img src="./docs/assets/isolation-comparison.svg" alt="Per-session loadout — without cue vs with cue" width="820">
|
|
61
|
+
</p>
|
|
8
62
|
|
|
9
63
|
- **Per-profile isolation.** Skills, MCP servers, and Claude Code plugins are scoped to the active profile. Marketing work doesn't see frontend's MCPs; backend doesn't see design's skills. No more "every session has every tool" overload.
|
|
10
64
|
- **Directory-aware.** Pin a profile to a directory (`.cue-profile`), and every `claude` / `codex` you launch from inside boots with that loadout automatically. No flag wrangling.
|
|
11
65
|
- **Composable.** Profiles inherit from a `core` baseline so cross-session memory (claude-mem) and meta skills are shared by default. Add team-wide tools in one place.
|
|
12
66
|
- **Pre-launch picker.** First time you type `claude` in a fresh directory, a TUI picker opens. Pin or one-shot — your choice.
|
|
13
|
-
- **Materialized, hash-short-circuited.** Each launch rebuilds the runtime only when the resolved profile actually changed. Cold-start cost is a stat + sha256 compare.
|
|
67
|
+
- **Materialized, hash-short-circuited.** Each launch rebuilds the runtime only when the resolved profile actually changed. Cold-start cost is a `stat()` + sha256 compare.
|
|
14
68
|
- **No service to run.** No daemon, no background process, no auto-update. Just a Bun CLI and a shim script in `~/.local/bin`.
|
|
15
69
|
|
|
16
|
-
|
|
70
|
+
---
|
|
17
71
|
|
|
18
|
-
|
|
19
|
-
- `resources/skills/` — local skill library composed into profiles. Source for the `skills/local:` field.
|
|
20
|
-
- `resources/mcps/` — MCP server configs (`claude.sanitized.json`, `codex.sanitized.json`) composed into profiles.
|
|
21
|
-
- `plugins/cue/` — the Claude Code plugin shipping `/cue`, `/cue switch`, `/cue reload`, `/cue current` slash commands.
|
|
22
|
-
- `src/` — the Bun CLI itself: `commands/`, `lib/{cwd-resolver,picker,runtime-materializer,...}`.
|
|
23
|
-
- `setup/` — per-OS install prompts you can paste into an agent session.
|
|
24
|
-
- `docs/` — `launch.md` (hot-path flow), `shell-install.md` (shim install + PATH), `superpowers/specs/` (design + plans).
|
|
72
|
+
## How cue compares
|
|
25
73
|
|
|
26
|
-
|
|
74
|
+
> **TL;DR** — `claude-code-switcher` swaps MCPs only; `skillport` / `skillshub` / `agent-skills-cli` / `agent-skill-manager` / `add-skills` deliver skills only; Kiro Powers is IDE-locked. **cue is the only tool that composes skills + MCPs + plugins together, per-directory, with inheritance and materialized isolation.**
|
|
27
75
|
|
|
28
|
-
|
|
76
|
+
<p align="center">
|
|
77
|
+
<img src="./docs/assets/comparison.svg" alt="Feature matrix: cue is the only tool covering skills + MCPs + plugins + profiles + per-directory + isolation + inheritance" width="880">
|
|
78
|
+
</p>
|
|
29
79
|
|
|
30
|
-
|
|
80
|
+
Several tools touch parts of the problem — switching MCP configs, distributing skills, installing from marketplaces. **cue is the only one that treats the full agent loadout (skills + MCPs + plugins) as a composable, inheritable, directory-aware profile system.**
|
|
31
81
|
|
|
32
|
-
|
|
33
|
-
curl -fsSL https://raw.githubusercontent.com/recodeee/cue/main/get.sh | bash
|
|
34
|
-
```
|
|
82
|
+
Quick links to each tool: [`claude-code-switcher`](https://github.com/search?q=claude-code-switcher) · [`skillport`](https://github.com/search?q=skillport) · [`agent-skills-cli`](https://github.com/search?q=agent-skills-cli) · [`agent-skill-manager`](https://pypi.org/project/agent-skill-manager/) · [`skillshub`](https://github.com/search?q=skillshub) · [`add-skills`](https://github.com/search?q=add-skills) · **Kiro Powers** (IDE-only).
|
|
35
83
|
|
|
36
|
-
|
|
84
|
+
<details>
|
|
85
|
+
<summary>📊 <b>Same matrix as a markdown table</b> (for screen readers / LLM ingestion)</summary>
|
|
37
86
|
|
|
38
|
-
|
|
87
|
+
| Tool | skills | MCPs | plugins | profiles | per-dir | isolation | inherit |
|
|
88
|
+
|---|---|---|---|---|---|---|---|
|
|
89
|
+
| **cue** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
90
|
+
| claude-code-switcher | — | ✅ | — | ◐ | — | — | — |
|
|
91
|
+
| skillport | ✅ | — | — | — | — | — | — |
|
|
92
|
+
| agent-skills-cli | ✅ | — | — | — | — | — | — |
|
|
93
|
+
| agent-skill-manager | ✅ | — | — | — | — | — | — |
|
|
94
|
+
| skillshub | ✅ | — | — | — | — | — | — |
|
|
95
|
+
| add-skills | ✅ | — | — | — | — | — | — |
|
|
96
|
+
| Kiro Powers | ✅ | ✅ | — | — | ◐ | — | — |
|
|
39
97
|
|
|
40
|
-
|
|
41
|
-
# Non-interactive (auto-yes)
|
|
42
|
-
curl -fsSL https://raw.githubusercontent.com/recodeee/cue/main/get.sh | bash -s -- --yes
|
|
98
|
+
Canonical source: [`docs/data/comparison.md`](./docs/data/comparison.md).
|
|
43
99
|
|
|
44
|
-
|
|
45
|
-
CUE_DIR=~/dev/cue curl -fsSL https://raw.githubusercontent.com/recodeee/cue/main/get.sh | bash
|
|
46
|
-
```
|
|
100
|
+
</details>
|
|
47
101
|
|
|
48
|
-
**
|
|
102
|
+
**Where cue is the only one:**
|
|
49
103
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
104
|
+
1. **`.cue-profile` per-directory pinning** — `cd` into a repo, the right loadout loads automatically.
|
|
105
|
+
2. **Materialized isolation** — builds a real `CLAUDE_CONFIG_DIR` per profile, not just a config swap.
|
|
106
|
+
3. **Hash-cached rebuilds** — content-addressed sha256 check, <5 ms when unchanged.
|
|
107
|
+
4. **Three dimensions as one unit** — skills + MCPs + plugins composed together. Others manage one at a time.
|
|
108
|
+
5. **Inheritance with merge semantics** — `core → backend → medusa-dev` chains; child overrides parent cleanly.
|
|
109
|
+
6. **Shim-based interception** — type `claude` like always. The right environment just shows up.
|
|
110
|
+
7. **No daemon** — pure CLI, no background process, nothing to monitor.
|
|
111
|
+
8. **`cue optimizer` dashboard** — visual audit of every profile's loadout, install status, and per-skill usage scanned from your actual session transcripts.
|
|
53
112
|
|
|
54
|
-
|
|
113
|
+
---
|
|
55
114
|
|
|
56
|
-
|
|
57
|
-
~/Documents/cue/install.sh --yes # install claude shim, skip codex prompt
|
|
58
|
-
~/Documents/cue/install.sh --yes --codex # install both shims (clobbers existing codex on PATH)
|
|
59
|
-
~/Documents/cue/install.sh --uninstall # remove the symlinks, leave the repo
|
|
60
|
-
```
|
|
115
|
+
## How it works
|
|
61
116
|
|
|
62
|
-
|
|
117
|
+
> **TL;DR** — three steps on every `claude`/`codex` invocation: **resolve** the profile from `.cue-profile` (walks up to `$HOME`), **materialize** `~/.config/cue/runtime/<profile>/` if the content hash changed, then **exec** the real binary with `CLAUDE_CONFIG_DIR` / `CODEX_HOME` set.
|
|
63
118
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
4. Symlinks `~/.local/bin/cue` → `<repo>/bin/cue`
|
|
68
|
-
5. Checks that `~/.local/bin` is on your `$PATH` (warns if not)
|
|
69
|
-
6. Writes the `~/.local/bin/claude` shim (and optionally `codex`)
|
|
119
|
+
<p align="center">
|
|
120
|
+
<img src="./docs/assets/architecture.svg" alt="Launch flow: resolve → materialize → exec" width="820">
|
|
121
|
+
</p>
|
|
70
122
|
|
|
71
|
-
|
|
123
|
+
Typing `claude` or `codex` in a repo where cue's shims are installed triggers a three-step launch flow:
|
|
72
124
|
|
|
73
|
-
|
|
125
|
+
1. **Resolve** — cue checks for a `.cue-profile` file in the current directory (or any parent up to `$HOME`). If none is found, it falls back to a repo-level default, a global default, or opens the TUI picker.
|
|
126
|
+
2. **Materialize** — cue builds `~/.config/cue/runtime/<profile>/{claude,codex}/` with a content-addressed hash check. If the profile hasn't changed, this is a no-op.
|
|
127
|
+
3. **Exec** — the real `claude` or `codex` binary is launched with `CLAUDE_CONFIG_DIR` (or `CODEX_HOME`) pointing at the materialized runtime tree.
|
|
128
|
+
|
|
129
|
+
Full resolve-precedence rules and bypass paths: **[docs/launch.md](./docs/launch.md)**.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Agents cue supports
|
|
134
|
+
|
|
135
|
+
> **TL;DR** — **10 agents**: Claude Code, Codex, Cursor, Cline, Gemini CLI, GitHub Copilot, Windsurf, Roo Code, Sourcegraph Amp, Aider. One `profile.yaml` materializes into each agent's native format (`.cursorrules`, `.clinerules`, `~/.gemini/skills/*.md`, `.github/copilot-instructions.md`, etc.).
|
|
136
|
+
|
|
137
|
+
Originally built for Claude Code & Codex — now **one profile, ten agents**. The same `profile.yaml` (skills + MCPs) materializes into the exact format each agent expects.
|
|
74
138
|
|
|
75
139
|
```bash
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
140
|
+
cue materialize cursor --profile backend # → .cursorrules + .cursor/mcp.json
|
|
141
|
+
cue materialize cline --profile backend # → .clinerules + cline_mcp_settings.json
|
|
142
|
+
cue materialize --all --profile backend # → all agents in this profile
|
|
79
143
|
```
|
|
80
144
|
|
|
81
|
-
|
|
145
|
+
| Agent | `cue materialize` command | What gets written |
|
|
146
|
+
|---|---|---|
|
|
147
|
+
| **Claude Code** | (default — uses shim) | `~/.config/cue/runtime/<profile>/claude/` |
|
|
148
|
+
| **OpenAI Codex** | (default — uses shim) | `~/.config/cue/runtime/<profile>/codex/` |
|
|
149
|
+
| **Cursor** | `cue materialize cursor` | `.cursorrules` · `.cursor/mcp.json` |
|
|
150
|
+
| **Cline** | `cue materialize cline` | `.clinerules` · `cline_mcp_settings.json` |
|
|
151
|
+
| **Google Gemini CLI** | `cue materialize gemini` | `~/.gemini/skills/*.md` |
|
|
152
|
+
| **GitHub Copilot** | `cue materialize copilot` | `.github/copilot-instructions.md` |
|
|
153
|
+
| **Windsurf** | `cue materialize windsurf` | `.windsurfrules` · `.windsurf/mcp.json` |
|
|
154
|
+
| **Roo Code** | `cue materialize roo` | `.roo/rules/*.md` · `.roo/mcp.json` |
|
|
155
|
+
| **Sourcegraph Amp** | `cue materialize amp` | `AGENTS.md` · `.amp/mcp.json` |
|
|
156
|
+
| **Aider** | `cue materialize aider` | `.aider.conventions.md` |
|
|
157
|
+
|
|
158
|
+
Each adapter writes skills + MCPs in the precise format that agent expects — Cursor's `.cursorrules` syntax, Gemini's per-skill markdown, Copilot's instruction file, etc. **Same profiles, same skills, any agent.** Switch from Claude Code to Cursor on the same repo without touching a single skill definition.
|
|
159
|
+
|
|
160
|
+
See [`src/commands/materialize.ts`](./src/commands/materialize.ts) for the full flag set (`--all`, `--profile`, `--dir`, dry-run).
|
|
82
161
|
|
|
83
162
|
---
|
|
84
163
|
|
|
85
|
-
##
|
|
164
|
+
## `cue optimizer` — see every loadout at a glance
|
|
86
165
|
|
|
87
|
-
|
|
166
|
+
> **TL;DR** — `cue optimizer` prints a visual audit of every profile: skills loaded, MCP servers, required CLIs (install status ✅/❌), GitHub sources, and per-skill usage bars computed from your local session transcripts. No telemetry.
|
|
88
167
|
|
|
89
|
-
|
|
90
|
-
- **Agent-driven** — paste the corresponding `setup/<os>.md` into Claude Code as your first message; it walks you through the phases interactively (recommended if you've never set this up).
|
|
168
|
+
Run it once and you get a dashboard of every profile: skills (with per-session usage), MCP servers, required CLIs (with install status ✅/❌), GitHub sources, and brand icons.
|
|
91
169
|
|
|
92
|
-
|
|
170
|
+
<p align="center">
|
|
171
|
+
<img src="./docs/assets/optimizer-dashboard.svg" alt="cue optimizer summary: 16 profiles, 1,927 skills, 15 MCPs, 79 CLIs" width="820">
|
|
172
|
+
</p>
|
|
93
173
|
|
|
94
|
-
|
|
174
|
+
What the optimizer scans for you:
|
|
95
175
|
|
|
96
|
-
|
|
176
|
+
- Every `profile.yaml` (inheritance resolved, `*` wildcards expanded)
|
|
177
|
+
- Each skill's frontmatter for `allowed-tools` and `## Prerequisites` → required CLIs
|
|
178
|
+
- `which <cli>` for every CLI → install status per profile
|
|
179
|
+
- `~/.claude/projects/**/*.jsonl` → per-skill usage counts across all sessions
|
|
180
|
+
- `~/skills-lock.json` → which GitHub repo each skill came from
|
|
181
|
+
|
|
182
|
+
### Terminal output
|
|
183
|
+
|
|
184
|
+
<p align="center">
|
|
185
|
+
<img src="./docs/assets/terminal-optimizer.svg" alt="cue optimizer running in the terminal" width="820">
|
|
186
|
+
</p>
|
|
187
|
+
|
|
188
|
+
> 🐱 **Recommended terminal: [Kitty](https://sw.kovidgoyal.net/kitty/).** cue's optimizer renders bar charts, gradients, brand glyphs, and inline images via the Kitty graphics protocol. It also works in [WezTerm](https://wezfurlong.org/wezterm/) and [Ghostty](https://ghostty.org/) — but inside macOS Terminal or stock `gnome-terminal` you'll see the ASCII fallback (still readable, just less pretty).
|
|
97
189
|
|
|
98
190
|
```bash
|
|
99
|
-
#
|
|
100
|
-
|
|
101
|
-
#
|
|
102
|
-
brew install bun node@22 python@3.12 uv jq rtk
|
|
103
|
-
# 3. Claude Code
|
|
104
|
-
curl -fsSL https://claude.ai/install.sh | sh
|
|
105
|
-
# 4. RTK token-savings hook
|
|
106
|
-
rtk init -g
|
|
107
|
-
echo "Setup complete. Run: claude — then paste setup/macos.md as your first message."
|
|
191
|
+
cue optimizer # all profiles
|
|
192
|
+
cue optimizer backend # just one
|
|
193
|
+
cue optimizer --expand # expand grouped skills (useful for cybersecurity's 754)
|
|
108
194
|
```
|
|
109
195
|
|
|
110
|
-
|
|
196
|
+
### A single profile, expanded
|
|
111
197
|
|
|
112
|
-
|
|
198
|
+
<p align="center">
|
|
199
|
+
<img src="./docs/assets/profile-card.svg" alt="frontend profile — skills, MCPs, CLIs, per-session usage" width="820">
|
|
200
|
+
</p>
|
|
201
|
+
|
|
202
|
+
Each card shows what's actually loaded *plus* how often you've reached for each skill. The bar chart is computed from your local session transcripts — no telemetry leaves the machine.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## The 16-profile catalog
|
|
207
|
+
|
|
208
|
+
> **TL;DR** — 16 profiles ship with cue: `core`, `backend`, `frontend`, `marketing`, `medusa-dev`, `cybersecurity`, `nvidia`, `creative-media`, `docs-writer`, `caveman-quick`, `coolify`, `hostinger`, `fleet-control`, `readme-writer`, `full`, plus the per-OS `setup` profile. Switch with `cue use <name>`.
|
|
209
|
+
|
|
210
|
+
<p align="center">
|
|
211
|
+
<img src="./docs/assets/profiles-grid.svg" alt="The 16 profiles shipped with cue" width="820">
|
|
212
|
+
</p>
|
|
213
|
+
|
|
214
|
+
<details>
|
|
215
|
+
<summary>📋 <b>All 16 profiles as a table</b> (for screen readers / LLM ingestion)</summary>
|
|
216
|
+
|
|
217
|
+
| Profile | Domain |
|
|
218
|
+
|---|---|
|
|
219
|
+
| `core` | Baseline shared by every profile — claude-mem, caveman, RTK, gbrain. |
|
|
220
|
+
| `backend` | APIs, webhooks, security review, CI, packaging, databases. |
|
|
221
|
+
| `frontend` | UI implementation, redesign, screenshots, browser testing. |
|
|
222
|
+
| `marketing` | Copywriting, SEO, CRO, growth, channels, brand. |
|
|
223
|
+
| `medusa-dev` | Medusa v2 backend, storefront, admin, migration, shop setup. |
|
|
224
|
+
| `cybersecurity` | 754 cybersecurity skills (red/blue team, forensics, DFIR). |
|
|
225
|
+
| `nvidia` | NVIDIA cuOpt: routing, LP/MILP, GPU-accelerated optimization. |
|
|
226
|
+
| `creative-media` | Image, video, product asset, brand, visual generation. |
|
|
227
|
+
| `docs-writer` | Documentation, Markdown, PDF, Obsidian, structured writing. |
|
|
228
|
+
| `readme-writer` | Beautiful README design with SVG diagrams. |
|
|
229
|
+
| `caveman-quick` | Fast low-context edits, summaries, reviews, notes, commits. |
|
|
230
|
+
| `coolify` | Coolify deploys, server config, app env vars, CI. |
|
|
231
|
+
| `hostinger` | Hostinger DNS, domain, VPS, hosting management. |
|
|
232
|
+
| `fleet-control` | Multi-agent orchestration, Colony coordination, OMX flows. |
|
|
233
|
+
| `full` | Diagnostic fallback — loads every local skill and MCP. |
|
|
234
|
+
| `setup` | Per-OS install assistant. |
|
|
235
|
+
|
|
236
|
+
Canonical source: [`docs/data/profiles.md`](./docs/data/profiles.md).
|
|
237
|
+
|
|
238
|
+
</details>
|
|
113
239
|
|
|
114
240
|
```bash
|
|
115
|
-
#
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
elif command -v pacman >/dev/null; then sudo pacman -S --noconfirm curl git jq base-devel python python-pip
|
|
119
|
-
fi
|
|
120
|
-
# 2. Bun
|
|
121
|
-
[ -x "$(command -v bun)" ] || curl -fsSL https://bun.sh/install | bash
|
|
122
|
-
export PATH="$HOME/.bun/bin:$HOME/.local/bin:$PATH"
|
|
123
|
-
# 3. uv (Python venv manager)
|
|
124
|
-
[ -x "$(command -v uv)" ] || curl -LsSf https://astral.sh/uv/install.sh | sh
|
|
125
|
-
# 4. RTK
|
|
126
|
-
[ -x "$(command -v rtk)" ] || (curl -fsSL https://github.com/rtk-ai/rtk/releases/latest/download/rtk-x86_64-unknown-linux-gnu.tar.gz | tar xz -C /tmp && sudo install /tmp/rtk /usr/local/bin/rtk)
|
|
127
|
-
# 5. Claude Code
|
|
128
|
-
curl -fsSL https://claude.ai/install.sh | sh
|
|
129
|
-
rtk init -g
|
|
130
|
-
echo "Setup complete. Run: claude — then paste setup/linux.md as your first message."
|
|
241
|
+
cue list # show all
|
|
242
|
+
cue use medusa-dev # pin to current directory
|
|
243
|
+
claude # launches with medusa-dev's loadout
|
|
131
244
|
```
|
|
132
245
|
|
|
133
|
-
|
|
246
|
+
---
|
|
134
247
|
|
|
135
|
-
|
|
248
|
+
## Install
|
|
136
249
|
|
|
137
|
-
|
|
250
|
+
> **TL;DR** — `npm install -g cue-ai`, then `echo <profile> > .cue-profile` in any repo. Idempotent. No daemon. Uninstall with `install.sh --uninstall`.
|
|
138
251
|
|
|
139
|
-
```
|
|
140
|
-
|
|
252
|
+
```bash
|
|
253
|
+
npm install -g cue-ai
|
|
141
254
|
```
|
|
142
255
|
|
|
143
|
-
Then:
|
|
144
|
-
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
winget install --id stedolan.jq --silent --accept-source-agreements --accept-package-agreements
|
|
150
|
-
winget install --id Git.Git --silent --accept-source-agreements --accept-package-agreements
|
|
151
|
-
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
|
|
152
|
-
# 2. Bun + uv
|
|
153
|
-
if (-not (Get-Command bun -ErrorAction SilentlyContinue)) { irm bun.sh/install.ps1 | iex }
|
|
154
|
-
if (-not (Get-Command uv -ErrorAction SilentlyContinue)) { irm https://astral.sh/uv/install.ps1 | iex }
|
|
155
|
-
# 3. Claude Code via npm
|
|
156
|
-
npm install -g @anthropic-ai/claude-code
|
|
157
|
-
# 4. RTK
|
|
158
|
-
if (-not (Get-Command rtk -ErrorAction SilentlyContinue)) {
|
|
159
|
-
Invoke-WebRequest -Uri "https://github.com/rtk-ai/rtk/releases/latest/download/rtk-x86_64-pc-windows-msvc.zip" -OutFile "$env:TEMP\rtk.zip"
|
|
160
|
-
Expand-Archive -Path "$env:TEMP\rtk.zip" -DestinationPath "$env:USERPROFILE\.local\bin" -Force
|
|
161
|
-
}
|
|
162
|
-
rtk init -g
|
|
163
|
-
Write-Host "Setup complete. Run: claude — then paste setup/windows.md as your first message."
|
|
256
|
+
That's it. Then in any project:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
cd ~/projects/q4-launch
|
|
260
|
+
echo marketing > .cue-profile
|
|
261
|
+
claude
|
|
164
262
|
```
|
|
165
263
|
|
|
166
|
-
|
|
264
|
+
**Other install paths** (pick what you prefer):
|
|
167
265
|
|
|
168
|
-
|
|
266
|
+
| Path | Command |
|
|
267
|
+
|---|---|
|
|
268
|
+
| **One-line script** | `curl -fsSL https://raw.githubusercontent.com/recodeee/cue/main/get.sh \| bash` |
|
|
269
|
+
| **Manual clone** | `git clone https://github.com/recodeee/cue.git ~/Documents/cue && ~/Documents/cue/install.sh` |
|
|
270
|
+
| **Per-OS bootstrap (agent-driven)** | paste [`setup/macos.md`](./setup/macos.md) · [`setup/linux.md`](./setup/linux.md) · [`setup/windows.md`](./setup/windows.md) into Claude Code |
|
|
271
|
+
|
|
272
|
+
`install.sh --help` lists `--yes`, `--codex`, `--uninstall`. Idempotent — safe to re-run.
|
|
169
273
|
|
|
170
274
|
---
|
|
171
275
|
|
|
172
|
-
##
|
|
276
|
+
## What ships with each profile (the lean stack)
|
|
173
277
|
|
|
174
|
-
|
|
278
|
+
| Layer | What it does |
|
|
279
|
+
|---|---|
|
|
280
|
+
| **claude-mem** plugin | Passive observation capture; `mem-search "topic"` recalls across sessions |
|
|
281
|
+
| **caveman** plugin | `/caveman` terse mode, `/caveman-commit` Conventional Commits |
|
|
282
|
+
| **RTK** CLI hook | Filters shell output — 60-90% token savings on `ls` / `git` / `cat` |
|
|
283
|
+
| **gbrain** MCP | Personal wiki with embeddings + backlinks |
|
|
284
|
+
| **excel-mcp** / **word-mcp** | Native `.xlsx` / `.docx` read & write |
|
|
175
285
|
|
|
176
|
-
|
|
177
|
-
- **[recodeee/colony](https://github.com/recodeee/colony)** — Local-first MCP for fleet coordination. Replaces 30k-token repo handoffs with ~400-token compact state in SQLite at `~/.colony`. Auto-detects file claims, task graphs, and prior decisions so agents see ownership before editing.
|
|
286
|
+
Want to **run 2+ agents in parallel on one repo**? Layer the optional **Colony + gitguardex** tier — see [`setup/parallel-agents.md`](./setup/parallel-agents.md). Skip it for solo work.
|
|
178
287
|
|
|
179
|
-
|
|
288
|
+
---
|
|
180
289
|
|
|
181
|
-
|
|
290
|
+
## FAQ
|
|
182
291
|
|
|
183
|
-
|
|
292
|
+
<details>
|
|
293
|
+
<summary><b>Why not just use <code>~/.claude/</code> like everyone else?</b></summary>
|
|
184
294
|
|
|
185
|
-
|
|
295
|
+
That's exactly the problem cue solves. `~/.claude/` is one global folder shared across every repo, so every session loads every skill, every MCP, and every plugin you've ever installed. The model burns tokens picking through irrelevant tools and frequently picks the wrong one. cue gives each project its own isolated `CLAUDE_CONFIG_DIR` materialized just-in-time — only what that project needs.
|
|
296
|
+
</details>
|
|
186
297
|
|
|
187
|
-
|
|
298
|
+
<details>
|
|
299
|
+
<summary><b>Does this break Claude Code's auto-update?</b></summary>
|
|
188
300
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
3. **Exec** — the real `claude` or `codex` binary is launched with `CLAUDE_CONFIG_DIR` (or `CODEX_HOME`) pointing at the materialized runtime tree.
|
|
301
|
+
No. cue doesn't touch the `claude` binary — it just intercepts the *call*, sets `CLAUDE_CONFIG_DIR`, and execs the real binary at the end of the shim. Claude Code's update mechanism still runs the same way.
|
|
302
|
+
</details>
|
|
192
303
|
|
|
193
|
-
|
|
304
|
+
<details>
|
|
305
|
+
<summary><b>Can I use cue with only Codex (no Claude Code)?</b></summary>
|
|
194
306
|
|
|
195
|
-
|
|
307
|
+
Yes. Run `cue shell install --codex-only` (or skip the `claude` shim during interactive install). cue scopes resources per-agent in `profile.yaml`, so a Codex-only profile only materializes `CODEX_HOME`.
|
|
308
|
+
</details>
|
|
196
309
|
|
|
197
|
-
|
|
310
|
+
<details>
|
|
311
|
+
<summary><b>What if I only want one global profile and never want to think about this?</b></summary>
|
|
198
312
|
|
|
199
|
-
|
|
313
|
+
Set a global default with `cue use <profile> --global`. cue will use it for every directory that doesn't have its own `.cue-profile`. The picker stops appearing.
|
|
314
|
+
</details>
|
|
200
315
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
cue use medusa-dev
|
|
204
|
-
cd profiles/medusa-dev/workspace && claude
|
|
205
|
-
```
|
|
316
|
+
<details>
|
|
317
|
+
<summary><b>Is this a daemon or background service?</b></summary>
|
|
206
318
|
|
|
207
|
-
|
|
319
|
+
No. cue is a pure CLI — when you type `claude`, the shim runs `cue launch`, which does a `stat()` + sha256 compare, materializes the runtime if anything changed (else no-op), and then `exec`s the real binary. Nothing stays resident. Nothing to monitor. Nothing to `systemctl restart`.
|
|
320
|
+
</details>
|
|
208
321
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
🦋 frontend Frontend UI implementation, redesign, screenshots, …
|
|
212
|
-
🦜 marketing Marketing — copywriting, SEO, CRO, growth, …
|
|
213
|
-
🦉 research Source-backed lookup, extraction, market research
|
|
214
|
-
🐺 fleet-control Multi-agent orchestration, Colony, OMX, gx
|
|
215
|
-
🦚 creative-media Image, video, brand, visual generation
|
|
216
|
-
🐝 docs-writer Markdown, PDF, Obsidian, structured writing
|
|
217
|
-
🐆 caveman-quick Fast low-context edits, summaries, reviews
|
|
218
|
-
🦄 full Diagnostic profile — every local skill + MCP
|
|
219
|
-
🐢 core Shared baseline (claude-mem, meta skills, …)
|
|
220
|
-
```
|
|
322
|
+
<details>
|
|
323
|
+
<summary><b>How fast is the launch overhead?</b></summary>
|
|
221
324
|
|
|
222
|
-
|
|
325
|
+
Cold start (first launch of a new profile): typically 50–200 ms depending on how many skills + MCPs are linked. Warm start (profile unchanged): <5 ms — just a sha256 compare and an `exec`. Both are imperceptible vs. Claude Code's own startup.
|
|
326
|
+
</details>
|
|
223
327
|
|
|
224
|
-
|
|
225
|
-
|
|
328
|
+
<details>
|
|
329
|
+
<summary><b>Does cue send telemetry anywhere?</b></summary>
|
|
226
330
|
|
|
227
|
-
|
|
331
|
+
No. Everything cue computes (including the per-skill usage bars in `cue optimizer`) is read from your local `~/.claude/projects/**/*.jsonl` session transcripts. Nothing leaves the machine.
|
|
332
|
+
</details>
|
|
228
333
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
`cue create-profile` to write the YAML:
|
|
334
|
+
<details>
|
|
335
|
+
<summary><b>What does cue NOT do?</b></summary>
|
|
232
336
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
--skills design/ui-ux-pro-max,research/find-skills \
|
|
238
|
-
--pin
|
|
239
|
-
```
|
|
337
|
+
- It does not modify or repackage the Claude Code / Codex binary.
|
|
338
|
+
- It does not host a remote skill marketplace — skills live in your repo or come from [open-source sources](#built-with--built-on).
|
|
339
|
+
- It does not coordinate multi-agent runs (that's [`recodeee/colony`](https://github.com/recodeee/colony) + [`gitguardex`](https://github.com/recodeee/gitguardex), layered on top via the parallel-agents tier).
|
|
340
|
+
- It does not auto-pick a profile from repo contents — you pin once with `echo <profile> > .cue-profile`. (A scan-to-profile flow is on the roadmap.)
|
|
240
341
|
|
|
241
|
-
|
|
342
|
+
</details>
|
|
242
343
|
|
|
243
|
-
|
|
244
|
-
alias at its own `CLAUDE_CONFIG_DIR`:
|
|
344
|
+
---
|
|
245
345
|
|
|
246
|
-
|
|
247
|
-
alias claude-account2="CLAUDE_CONFIG_DIR=$HOME/.claude-accounts/account2 cue launch claude"
|
|
248
|
-
```
|
|
346
|
+
## Repo layout
|
|
249
347
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
348
|
+
```
|
|
349
|
+
cue/
|
|
350
|
+
├── profiles/ one dir per profile, YAML decides what loads (inheritance, agent scoping)
|
|
351
|
+
├── resources/
|
|
352
|
+
│ ├── skills/ 110+ local skills (medusa, codex-fleet, higgsfield, caveman, …)
|
|
353
|
+
│ ├── mcps/ MCP server configs (claude.sanitized.json, codex.sanitized.json)
|
|
354
|
+
│ └── icons/ brand icons used in the optimizer dashboard
|
|
355
|
+
├── plugins/cue/ the Claude Code plugin: /cue, /cue switch, /cue reload, /cue current
|
|
356
|
+
├── src/ the Bun CLI — commands/{optimizer,launch,picker,…}, lib/runtime-materializer
|
|
357
|
+
├── setup/ paste-into-agent install prompts (macos, linux, windows, parallel-agents)
|
|
358
|
+
└── docs/ launch.md, shell-install.md, assets/ (the SVGs in this README)
|
|
359
|
+
```
|
|
254
360
|
|
|
255
|
-
|
|
361
|
+
Full docs: **[docs/launch.md](./docs/launch.md)** (resolve → materialize → exec flow) · **[docs/profiles/](./docs/profiles/)** (schema, inheritance, scan-to-profile, troubleshooting) · **[AGENTS.md](./AGENTS.md)** (bootstrap contract for AI agents).
|
|
256
362
|
|
|
257
363
|
---
|
|
258
364
|
|
|
259
|
-
##
|
|
365
|
+
## Built with / built on
|
|
260
366
|
|
|
261
|
-
|
|
367
|
+
cue glues together a small set of excellent open-source projects. Star counts are live from GitHub.
|
|
262
368
|
|
|
263
|
-
|
|
369
|
+
**Runtime & dependencies (the CLI itself):**
|
|
264
370
|
|
|
265
|
-
|
|
371
|
+
| Project | What we use it for | |
|
|
372
|
+
|---|---|---|
|
|
373
|
+
| [oven-sh/bun](https://github.com/oven-sh/bun) | TypeScript runtime that ships `bin/cue` | [](https://github.com/oven-sh/bun) |
|
|
374
|
+
| [natemoo-re/clack](https://github.com/natemoo-re/clack) | `@clack/prompts` powers the TUI profile picker | [](https://github.com/natemoo-re/clack) |
|
|
375
|
+
| [ajv-validator/ajv](https://github.com/ajv-validator/ajv) | JSON Schema validation for `profile.yaml` | [](https://github.com/ajv-validator/ajv) |
|
|
376
|
+
| [eemeli/yaml](https://github.com/eemeli/yaml) | YAML parsing for profile definitions | [](https://github.com/eemeli/yaml) |
|
|
266
377
|
|
|
267
|
-
|
|
378
|
+
**Built-in terminal integration:**
|
|
268
379
|
|
|
269
|
-
|
|
|
270
|
-
|
|
271
|
-
| **
|
|
272
|
-
| **caveman** plugin | `/caveman` for terse replies, `/caveman-commit` for Conventional Commit messages |
|
|
273
|
-
| **RTK** (CLI hook) | Filters shell-command outputs — 60-90% token savings on `ls` / `git` / `cat` |
|
|
274
|
-
| **gbrain** MCP | Personal knowledge wiki with embeddings, backlinks, timeline |
|
|
275
|
-
| **excel-mcp-server** | Native `.xlsx` read/write/format |
|
|
276
|
-
| **office-word-mcp-server** | Native `.docx` read/write |
|
|
380
|
+
| Project | What we use it for | |
|
|
381
|
+
|---|---|---|
|
|
382
|
+
| [kovidgoyal/kitty](https://github.com/kovidgoyal/kitty) | **Kitty graphics protocol** — inline brand logos & profile icons rendered directly in the terminal (see [`src/lib/kitty-image.ts`](./src/lib/kitty-image.ts), spec [here](https://sw.kovidgoyal.net/kitty/graphics-protocol/)). Auto-detected; falls back to emoji if you're not on Kitty. | [](https://github.com/kovidgoyal/kitty) |
|
|
277
383
|
|
|
278
|
-
|
|
384
|
+
**Agents we shim:**
|
|
279
385
|
|
|
280
|
-
|
|
386
|
+
| Project | Role | |
|
|
387
|
+
|---|---|---|
|
|
388
|
+
| [anthropics/claude-code](https://github.com/anthropics/claude-code) | The `claude` binary cue intercepts and re-launches with `CLAUDE_CONFIG_DIR` | [](https://github.com/anthropics/claude-code) |
|
|
389
|
+
| [openai/codex](https://github.com/openai/codex) | The `codex` binary cue intercepts and re-launches with `CODEX_HOME` | [](https://github.com/openai/codex) |
|
|
281
390
|
|
|
282
|
-
|
|
391
|
+
**Skill packs & sister tools:**
|
|
283
392
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
│ ├── configs/ claude.sanitized.json, codex.sanitized.json, …
|
|
294
|
-
│ ├── mcps/ individual MCP server entries
|
|
295
|
-
│ └── plugins/ Claude Code plugin snapshots
|
|
296
|
-
└── setup/ paste-into-Claude-Code prompts (macos.md, linux.md, windows.md)
|
|
297
|
-
```
|
|
393
|
+
| Project | Role | |
|
|
394
|
+
|---|---|---|
|
|
395
|
+
| [mukul975/Anthropic-Cybersecurity-Skills](https://github.com/mukul975/Anthropic-Cybersecurity-Skills) | 754 cybersecurity skills (red/blue team, forensics, DFIR) loaded by the `cybersecurity` profile | [](https://github.com/mukul975/Anthropic-Cybersecurity-Skills) |
|
|
396
|
+
| [recodeee/colony](https://github.com/recodeee/colony) | Local-first MCP for multi-agent coordination — used by the `fleet-control` profile | [](https://github.com/recodeee/colony) |
|
|
397
|
+
| [recodeee/gitguardex](https://github.com/recodeee/gitguardex) | `gx` CLI for branch + worktree isolation when running 2+ agents on one repo | [](https://github.com/recodeee/gitguardex) |
|
|
398
|
+
| [rtk-ai/rtk](https://github.com/rtk-ai/rtk) | Token-savings hook on shell output (60–90% reduction on `ls`/`git`/`cat`) | [](https://github.com/rtk-ai/rtk) |
|
|
399
|
+
| [astral-sh/uv](https://github.com/astral-sh/uv) | Python venv manager used by `setup/<os>.md` to run uvx-based MCP servers (Excel / Word) | [](https://github.com/astral-sh/uv) |
|
|
400
|
+
|
|
401
|
+
Plus the **brand logos** you see in the optimizer dashboard and hero come from each vendor's official press kit (OpenAI, NVIDIA, Hostinger, Coolify, Medusa, Stripe, Higgsfield, Obsidian) — see [`resources/icons/`](./resources/icons/).
|
|
298
402
|
|
|
299
403
|
---
|
|
300
404
|
|
|
301
405
|
## Contributing
|
|
302
406
|
|
|
303
|
-
Each skill is a folder with `SKILL.md` (frontmatter + body)
|
|
407
|
+
Each skill is a folder with `SKILL.md` (frontmatter + body). The frontmatter `description` is what the LLM matches against — write it as `"when user says X, do Y"`. Copy an existing skill as a template, drop it under `resources/skills/skills/<category>/<slug>/`, and the catalog regenerates on the next sync.
|
|
304
408
|
|
|
305
|
-
|
|
409
|
+
The SVGs in this README live in [`docs/assets/`](./docs/assets/) — edit the XML directly or regenerate from the `readme-writer` profile.
|
|
410
|
+
|
|
411
|
+
License: [MIT](./LICENSE).
|