cue-ai 0.4.1 → 0.6.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.
Files changed (179) hide show
  1. package/README.md +926 -62
  2. package/package.json +6 -5
  3. package/profiles/README.md +12 -12
  4. package/profiles/SCHEMA.md +31 -3
  5. package/profiles/_cache/README.md +1 -1
  6. package/profiles/_types.ts +26 -1
  7. package/profiles/affiliate/profile.yaml +67 -0
  8. package/profiles/backend/profile.yaml +1 -0
  9. package/profiles/career/profile.yaml +13 -0
  10. package/profiles/core/profile.yaml +76 -9
  11. package/profiles/creative-media/README.md +1 -1
  12. package/profiles/cybersecurity/profile.yaml +779 -756
  13. package/profiles/ecc/profile.yaml +39 -0
  14. package/profiles/event-design/profile.yaml +10 -0
  15. package/profiles/fleet-control/README.md +1 -1
  16. package/profiles/frontend/profile.yaml +14 -0
  17. package/profiles/full/README.md +1 -1
  18. package/profiles/go-api/profile.yaml +9 -0
  19. package/profiles/marketing/profile.yaml +15 -1
  20. package/profiles/nextjs/profile.yaml +8 -0
  21. package/profiles/predict-everything/profile.yaml +9 -0
  22. package/profiles/python-api/profile.yaml +8 -0
  23. package/profiles/rust/profile.yaml +27 -0
  24. package/profiles/rust-cli/profile.yaml +14 -0
  25. package/profiles/rust-core/profile.yaml +35 -0
  26. package/profiles/rust-embedded/profile.yaml +11 -0
  27. package/profiles/rust-ffi/profile.yaml +13 -0
  28. package/profiles/rust-game/profile.yaml +11 -0
  29. package/profiles/rust-wasm/profile.yaml +11 -0
  30. package/profiles/rust-web/profile.yaml +17 -0
  31. package/profiles/schema.json +44 -4
  32. package/profiles/trendradar/profile.yaml +11 -0
  33. package/profiles/video/profile.yaml +10 -0
  34. package/resources/mcps/README.md +39 -164
  35. package/resources/mcps/configs/claude.sanitized.json +55 -0
  36. package/resources/mcps/configs/claude_runtime.sanitized.json +62 -1
  37. package/resources/skills/README.md +70 -113
  38. package/resources/skills/skills/design/headless-gif-demo/SKILL.md +57 -12
  39. package/resources/skills/skills/event-design/wedding-invitations/SKILL.md +43 -0
  40. package/resources/skills/skills/meta/acpx/SKILL.md +78 -0
  41. package/resources/skills/skills/meta/awesome-list-submit/SKILL.md +463 -0
  42. package/resources/skills/skills/meta/cue-usage/SKILL.md +24 -0
  43. package/resources/skills/skills/meta/profile-fit-monitor/SKILL.md +24 -0
  44. package/resources/skills/skills/predict-everything/mirofish/SKILL.md +75 -0
  45. package/resources/skills/skills/research/trendradar/SKILL.md +88 -0
  46. package/resources/skills/skills/rust/async-tokio/SKILL.md +27 -0
  47. package/resources/skills/skills/rust/axum-api/SKILL.md +38 -0
  48. package/resources/skills/skills/rust/bacon-watch/SKILL.md +24 -0
  49. package/resources/skills/skills/rust/bevy/SKILL.md +43 -0
  50. package/resources/skills/skills/rust/bindgen/SKILL.md +39 -0
  51. package/resources/skills/skills/rust/cargo-audit/SKILL.md +26 -0
  52. package/resources/skills/skills/rust/cargo-basics/SKILL.md +28 -0
  53. package/resources/skills/skills/rust/cargo-chef/SKILL.md +43 -0
  54. package/resources/skills/skills/rust/cargo-edit/SKILL.md +26 -0
  55. package/resources/skills/skills/rust/cargo-expand/SKILL.md +24 -0
  56. package/resources/skills/skills/rust/cargo-flamegraph/SKILL.md +26 -0
  57. package/resources/skills/skills/rust/cargo-fuzz/SKILL.md +34 -0
  58. package/resources/skills/skills/rust/cargo-hack/SKILL.md +26 -0
  59. package/resources/skills/skills/rust/cargo-msrv/SKILL.md +30 -0
  60. package/resources/skills/skills/rust/cargo-mutants/SKILL.md +26 -0
  61. package/resources/skills/skills/rust/cargo-nextest/SKILL.md +24 -0
  62. package/resources/skills/skills/rust/cargo-readme/SKILL.md +36 -0
  63. package/resources/skills/skills/rust/cbindgen/SKILL.md +41 -0
  64. package/resources/skills/skills/rust/chisel-tool/SKILL.md +32 -0
  65. package/resources/skills/skills/rust/clap-cli/SKILL.md +44 -0
  66. package/resources/skills/skills/rust/clippy-and-fmt/SKILL.md +25 -0
  67. package/resources/skills/skills/rust/cross-compile/SKILL.md +26 -0
  68. package/resources/skills/skills/rust/embedded/SKILL.md +33 -0
  69. package/resources/skills/skills/rust/error-handling/SKILL.md +32 -0
  70. package/resources/skills/skills/rust/just-runner/SKILL.md +26 -0
  71. package/resources/skills/skills/rust/mdbook/SKILL.md +25 -0
  72. package/resources/skills/skills/rust/napi-rs/SKILL.md +32 -0
  73. package/resources/skills/skills/rust/no-std/SKILL.md +42 -0
  74. package/resources/skills/skills/rust/property-testing/SKILL.md +35 -0
  75. package/resources/skills/skills/rust/pyo3/SKILL.md +40 -0
  76. package/resources/skills/skills/rust/ratatui-tui/SKILL.md +36 -0
  77. package/resources/skills/skills/rust/release-plz/SKILL.md +27 -0
  78. package/resources/skills/skills/rust/reqwest/SKILL.md +37 -0
  79. package/resources/skills/skills/rust/sccache/SKILL.md +28 -0
  80. package/resources/skills/skills/rust/serde/SKILL.md +30 -0
  81. package/resources/skills/skills/rust/snapshot-testing/SKILL.md +30 -0
  82. package/resources/skills/skills/rust/sqlx-cli/SKILL.md +33 -0
  83. package/resources/skills/skills/rust/tracing/SKILL.md +36 -0
  84. package/resources/skills/skills/rust/typos-spellcheck/SKILL.md +31 -0
  85. package/resources/skills/skills/rust/uniffi/SKILL.md +38 -0
  86. package/resources/skills/skills/rust/wasm-rust/SKILL.md +27 -0
  87. package/resources/skills/skills/security/agentshield/SKILL.md +119 -0
  88. package/src/commands/_index.ts +91 -3
  89. package/src/commands/ai-score.e2e.test.ts +113 -0
  90. package/src/commands/ai.ts +179 -0
  91. package/src/commands/benchmark.ts +258 -0
  92. package/src/commands/clean.ts +109 -0
  93. package/src/commands/cli.test.ts +192 -0
  94. package/src/commands/cli.ts +303 -0
  95. package/src/commands/completions.ts +4 -0
  96. package/src/commands/cost.ts +77 -3
  97. package/src/commands/current.ts +1 -1
  98. package/src/commands/debug.test.ts +62 -0
  99. package/src/commands/debug.ts +212 -0
  100. package/src/commands/diff.ts +105 -0
  101. package/src/commands/discover.scoring.test.ts +216 -0
  102. package/src/commands/discover.test.ts +145 -0
  103. package/src/commands/discover.ts +2618 -0
  104. package/src/commands/eval-behavior.test.ts +56 -0
  105. package/src/commands/eval-behavior.ts +189 -0
  106. package/src/commands/eval.test.ts +102 -0
  107. package/src/commands/eval.ts +348 -0
  108. package/src/commands/evolve.ts +291 -0
  109. package/src/commands/failures.test.ts +78 -0
  110. package/src/commands/failures.ts +393 -0
  111. package/src/commands/feedback.ts +219 -0
  112. package/src/commands/import-profile.ts +28 -5
  113. package/src/commands/init.ts +26 -0
  114. package/src/commands/launch.e2e.test.ts +127 -0
  115. package/src/commands/launch.ts +193 -11
  116. package/src/commands/lint-skill.ts +157 -0
  117. package/src/commands/lock.ts +21 -1
  118. package/src/commands/marketplace.ts +850 -4
  119. package/src/commands/migrate.ts +100 -0
  120. package/src/commands/new.ts +1 -1
  121. package/src/commands/optimizer.ts +94 -30
  122. package/src/commands/profile-draft-skill.test.ts +96 -0
  123. package/src/commands/profile-draft-skill.ts +287 -0
  124. package/src/commands/profile-evolve.test.ts +126 -0
  125. package/src/commands/profile-evolve.ts +0 -0
  126. package/src/commands/profile-suggest.ts +223 -0
  127. package/src/commands/profile.ts +41 -0
  128. package/src/commands/quick.ts +2 -17
  129. package/src/commands/replay-whatif.ts +142 -0
  130. package/src/commands/replay.ts +6 -0
  131. package/src/commands/scan.ts +2 -2
  132. package/src/commands/score.ts +304 -0
  133. package/src/commands/security.ts +47 -7
  134. package/src/commands/share.ts +1 -1
  135. package/src/commands/shell.ts +17 -0
  136. package/src/commands/skills.ts +2 -2
  137. package/src/commands/sources.ts +2 -2
  138. package/src/commands/status.ts +14 -0
  139. package/src/commands/submit-profile.ts +262 -0
  140. package/src/commands/suggest.ts +170 -0
  141. package/src/commands/upgrade.ts +154 -0
  142. package/src/commands/use.ts +35 -5
  143. package/src/commands/validate.ts +1 -1
  144. package/src/index.ts +24 -1
  145. package/src/lib/analytics.ts +121 -3
  146. package/src/lib/auto-detect.ts +38 -5
  147. package/src/lib/cache.ts +47 -6
  148. package/src/lib/claude-binary.ts +39 -0
  149. package/src/lib/cli-extractor.ts +77 -0
  150. package/src/lib/cluster-skills.test.ts +268 -0
  151. package/src/lib/cluster-skills.ts +290 -0
  152. package/src/lib/credentials-sync.test.ts +208 -0
  153. package/src/lib/credentials-sync.ts +205 -0
  154. package/src/lib/mcp-materializer.test.ts +1 -1
  155. package/src/lib/persona-playbooks.test.ts +111 -0
  156. package/src/lib/pr-poster.test.ts +243 -0
  157. package/src/lib/pr-poster.ts +285 -0
  158. package/src/lib/pr-throttle.test.ts +148 -0
  159. package/src/lib/pr-throttle.ts +209 -0
  160. package/src/lib/profile-generator.test.ts +1 -1
  161. package/src/lib/profile-generator.ts +2 -2
  162. package/src/lib/profile-linter.test.ts +6 -3
  163. package/src/lib/profile-linter.ts +71 -8
  164. package/src/lib/profile-loader.test.ts +1 -1
  165. package/src/lib/profile-loader.ts +16 -0
  166. package/src/lib/resolver-local.test.ts +1 -1
  167. package/src/lib/resolver-npx.test.ts +76 -1
  168. package/src/lib/resolver-npx.ts +35 -3
  169. package/src/lib/resolver-plugins.test.ts +1 -1
  170. package/src/lib/runtime-materializer.test.ts +213 -18
  171. package/src/lib/runtime-materializer.ts +364 -53
  172. package/src/lib/scan-plugins.test.ts +1 -1
  173. package/src/lib/skill-linter.test.ts +174 -0
  174. package/src/lib/skill-linter.ts +507 -0
  175. package/src/lib/skill-subset.test.ts +95 -0
  176. package/src/lib/skill-subset.ts +166 -0
  177. package/src/lib/star-prompt.ts +11 -1
  178. package/src/lib/uvx-installer.test.ts +229 -0
  179. package/src/lib/uvx-installer.ts +278 -0
@@ -13,6 +13,61 @@
13
13
  },
14
14
  "cue-tty-watch": {
15
15
  "command": "/home/deadpool/Documents/cue/resources/mcps/cue-tty-watch/bin/cue-tty-watch"
16
+ },
17
+ "agentshield": {
18
+ "command": "/home/deadpool/Documents/cue/resources/mcps/agentshield/bin/agentshield"
19
+ },
20
+ "x-api": {
21
+ "command": "npm",
22
+ "args": [
23
+ "start"
24
+ ],
25
+ "cwd": "${HOME}/.x-api-mcp",
26
+ "env": {
27
+ "X_API_KEY": "${X_API_KEY}",
28
+ "X_API_SECRET": "${X_API_SECRET}",
29
+ "X_BEARER_TOKEN": "${X_BEARER_TOKEN}",
30
+ "X_ACCESS_TOKEN": "${X_ACCESS_TOKEN}",
31
+ "X_ACCESS_TOKEN_SECRET": "${X_ACCESS_TOKEN_SECRET}"
32
+ }
33
+ },
34
+ "trendradar": {
35
+ "command": "uvx",
36
+ "args": [
37
+ "--from",
38
+ "git+https://github.com/sansan0/TrendRadar.git",
39
+ "trendradar-mcp"
40
+ ],
41
+ "env": {}
42
+ },
43
+ "mapi-devdocs": {
44
+ "type": "http",
45
+ "url": "https://merchantapi.googleapis.com/devdocs/mcp/"
46
+ },
47
+ "mitre-attack": {
48
+ "command": "/home/deadpool/.local/bin/mitre-attack-mcp",
49
+ "args": [],
50
+ "env": {}
51
+ },
52
+ "cve-search": {
53
+ "command": "uv",
54
+ "args": [
55
+ "--directory",
56
+ "/home/deadpool/.config/cue/cache/cve-search_mcp",
57
+ "run",
58
+ "main.py"
59
+ ],
60
+ "env": {}
61
+ },
62
+ "shodan": {
63
+ "command": "npx",
64
+ "args": [
65
+ "-y",
66
+ "@burtthecoder/mcp-shodan"
67
+ ],
68
+ "env": {
69
+ "SHODAN_API_KEY": "${SHODAN_API_KEY}"
70
+ }
16
71
  }
17
72
  },
18
73
  "source": "claude",
@@ -113,8 +113,69 @@
113
113
  },
114
114
  "cue-tty-watch": {
115
115
  "command": "/home/deadpool/Documents/cue/resources/mcps/cue-tty-watch/bin/cue-tty-watch"
116
+ },
117
+ "x-api": {
118
+ "command": "npm",
119
+ "args": [
120
+ "start"
121
+ ],
122
+ "cwd": "${HOME}/.x-api-mcp",
123
+ "env": {
124
+ "X_API_KEY": "${X_API_KEY}",
125
+ "X_API_SECRET": "${X_API_SECRET}",
126
+ "X_BEARER_TOKEN": "${X_BEARER_TOKEN}",
127
+ "X_ACCESS_TOKEN": "${X_ACCESS_TOKEN}",
128
+ "X_ACCESS_TOKEN_SECRET": "${X_ACCESS_TOKEN_SECRET}"
129
+ }
130
+ },
131
+ "reddit": {
132
+ "command": "npx",
133
+ "args": [
134
+ "reddit-mcp-server"
135
+ ],
136
+ "env": {
137
+ "REDDIT_CLIENT_ID": "${REDDIT_CLIENT_ID}",
138
+ "REDDIT_CLIENT_SECRET": "${REDDIT_CLIENT_SECRET}",
139
+ "REDDIT_USERNAME": "${REDDIT_USERNAME}",
140
+ "REDDIT_PASSWORD": "${REDDIT_PASSWORD}",
141
+ "REDDIT_SAFE_MODE": "standard",
142
+ "REDDIT_AUTH_MODE": "auto"
143
+ }
144
+ },
145
+ "google-ads-mcp": {
146
+ "command": "pipx",
147
+ "args": [
148
+ "run",
149
+ "--spec",
150
+ "git+https://github.com/googleads/google-ads-mcp.git",
151
+ "google-ads-mcp"
152
+ ],
153
+ "env": {
154
+ "GOOGLE_APPLICATION_CREDENTIALS": "${GOOGLE_APPLICATION_CREDENTIALS}",
155
+ "GOOGLE_PROJECT_ID": "${GOOGLE_PROJECT_ID}",
156
+ "GOOGLE_ADS_DEVELOPER_TOKEN": "${GOOGLE_ADS_DEVELOPER_TOKEN}"
157
+ }
158
+ },
159
+ "meta-ads": {
160
+ "command": "npx",
161
+ "args": [
162
+ "-y",
163
+ "meta-ads-mcp@latest"
164
+ ],
165
+ "env": {
166
+ "META_ACCESS_TOKEN": "${META_ACCESS_TOKEN}",
167
+ "META_AD_ACCOUNT_ID": "${META_AD_ACCOUNT_ID}"
168
+ }
169
+ },
170
+ "mapi-devdocs": {
171
+ "command": "npx",
172
+ "args": [
173
+ "-y",
174
+ "mcp-remote",
175
+ "https://merchantapi.googleapis.com/devdocs/mcp"
176
+ ]
116
177
  }
117
178
  },
118
179
  "source": "claude_runtime",
119
180
  "source_path": "~/.claude.json"
120
- }
181
+ }
@@ -1,135 +1,92 @@
1
- ```
2
- ┌───────────────────────────────────────────────────────────────┐
3
- │ │
4
- │ r e c o d e e e / s k i l l s │
5
- │ ───────────────────────────────── │
6
- │ 167 skills · 20 categories · one source of truth │
7
- │ │
8
- └───────────────────────────────────────────────────────────────┘
9
- ```
10
-
11
- > **My laptop's current skill set.** This is the live snapshot of every agent
12
- > skill installed on my machine — the same folders that Claude Code and Codex
13
- > read at runtime. The repo is the source; my `~/.claude/skills` and
14
- > `~/.codex/skills` are just symlinks back here.
15
-
16
- ---
17
-
18
- ## Why this exists
1
+ # cue/skills — Skill Library
19
2
 
20
- I run a lot of agents. Skills drift fast: I install one from a marketplace,
21
- edit it, copy it to a new project, forget where the original lived. This repo
22
- is the one place that's allowed to be authoritative. If a skill isn't here, it
23
- isn't real on this laptop.
3
+ > 127 skills across 21 categories. The source of truth for all local skills used by [cue](https://github.com/opencue/cue) profiles.
24
4
 
25
- Everything else (`~/.claude/skills/<name>`, `~/.codex/skills/<name>`) is a
26
- symlink. Edit a file under `skills/` and every agent picks it up on next load —
27
- no copy, no resync, no drift.
28
-
29
- ---
5
+ ## What's here
30
6
 
31
- ## Layout
32
-
33
- ```text
7
+ ```
34
8
  skills/
35
- <category>/
36
- <skill-name>/
37
- SKILL.md # the agent-facing spec
38
- scripts/ # optional bundled scripts
39
- references/ # optional supporting docs
40
- assets/ # optional images, samples
41
- scripts/
42
- install-local.sh # installs to both Codex and Claude
43
- install-codex.sh
44
- install-claude.sh
45
- docs/
46
- installed-sources.tsv # provenance log from last install
47
- install.md
48
- .claude/
49
- settings.json # repo-scoped Claude Code config
9
+ ├── skills/ The skill library
10
+ │ ├── browser/ Playwright, screenshots
11
+ │ ├── caveman/ Terse mode, commits, compression
12
+ │ ├── colony/ Multi-agent coordination
13
+ │ ├── deployment/ Coolify, Supabase, pnpm
14
+ │ ├── design/ UI/UX, branding, SVG, Remotion
15
+ │ ├── github/ GitHub CLI, CI fixes, auth
16
+ │ ├── higgsfield/ AI image/video generation
17
+ │ ├── hostinger/ DNS, domains, VPS
18
+ │ ├── medusa/ Medusa v2 ecommerce
19
+ │ ├── meta/ Profile management, memory, helpers
20
+ │ ├── nvidia/ cuOpt, GPU optimization
21
+ │ ├── obsidian/ Vault, markdown, canvas
22
+ │ ├── orchestration/ Fleet, pipelines, workers
23
+ │ ├── research/ Search, papers, keywords
24
+ │ ├── review/ Code review, security, testing
25
+ │ ├── secrets/ Envoult, credential management
26
+ │ ├── stripe/ Payments, webhooks
27
+ │ └── ...
28
+ ├── scripts/ Install, sync, lint scripts
29
+ ├── plugins/ Claude Code plugin definitions
30
+ └── catalog/ Auto-generated skill index
50
31
  ```
51
32
 
52
- ---
33
+ ## Skill format
53
34
 
54
- ## Categories
55
-
56
- | Folder | Count | What lives here |
57
- | ----------------- | ----: | ---------------------------------------------------------------- |
58
- | `ai/` | 3 | Anthropic SDK integration, prompt caching, Claude migration |
59
- | `automation/` | 2 | Task scheduling, cron jobs, recurring automation |
60
- | `caveman/` | 5 | Token compression — caveman, caveman-commit, caveman-review, … |
61
- | `colony/` | 2 | Colony coordination, prompts, and handoff surfaces |
62
- | `content/` | 8 | Technical writing, copywriting, theming, docs, PDF, browser work |
63
- | `deployment/` | 3 | Coolify, pnpm, Supabase |
64
- | `design/` | 19 | UI, UX, visual design, image-direction, brandkit, mockups |
65
- | `github/` | 6 | github CLI, gh-fix-ci, gitguardex, worktrees, branch finish |
66
- | `growth/` | 12 | CRO, analytics, retention, referrals, free-tool growth |
67
- | `higgsfield/` | 4 | Higgsfield AI — generate, soul-id, photoshoot, marketplace |
68
- | `hostinger/` | 4 | Hostinger domains, DNS, hosting, VPS |
69
- | `marketing/` | 18 | SEO, ads, email, launch, PMM, pricing, community, RevOps-adjacent |
70
- | `medusa/` | 14 | Medusa commerce, storefronts, db migrations, woocommerce import |
71
- | `meta/` | 25 | Agent meta, config, workflow, plans, doctor, hud, ask-*, trace |
72
- | `obsidian/` | 4 | Obsidian vault tooling and JSON canvas |
73
- | `orchestration/` | 13 | autopilot, ralph, team, subagents, ultraqa, ultrawork, pipeline |
74
- | `private/` | 1 | Host- / account-specific skills (no secrets in repo) |
75
- | `research/` | 11 | autoresearch, interviews, customer/competitor research, keywords |
76
- | `review/` | 11 | code/security/architecture review, debugging, TDD, verification |
77
- | `stripe/` | 2 | Stripe integration and webhooks |
78
-
79
- > Skill leaf names are unique repo-wide so symlink installs never collide.
35
+ Each skill is a directory with a `SKILL.md` file:
80
36
 
37
+ ```markdown
81
38
  ---
82
-
83
- ## Install
84
-
85
- ```sh
86
- ./scripts/install-local.sh
87
- ```
88
-
89
- The installer walks every category for `SKILL.md` files and links each parent
90
- folder into both:
91
-
92
- - `~/.codex/skills/<skill-name>`
93
- - `~/.claude/skills/<skill-name>`
94
-
95
- Existing skill folders at the destination are moved to timestamped backups
96
- before linking — nothing is overwritten silently.
97
-
98
- `docs/installed-sources.tsv` records where each imported skill came from at
99
- last import and whether duplicates were skipped.
100
-
39
+ description: "When user says X, do Y"
40
+ allowed-tools: ["tool_name"]
101
41
  ---
102
42
 
103
- ## Adding a new skill
43
+ # Skill Name
104
44
 
105
- 1. Drop it under the right category as `skills/<category>/<skill-name>/`.
106
- 2. Make sure it has `SKILL.md` with valid frontmatter (`name`, `description`).
107
- 3. Re-run `./scripts/install-local.sh`. The installer is idempotent.
45
+ Instructions for the model...
46
+ ```
108
47
 
109
- Single-skill category? Still create the folder flat skills aren't allowed
110
- anymore. Better to have `deployment/coolify/` with one entry than a special
111
- case.
48
+ The `description` frontmatter is what the LLM matches against to decide when to use the skill.
112
49
 
113
- ---
50
+ ## How cue uses this
114
51
 
115
- ## Secrets
52
+ Profiles reference skills by `category/slug`:
116
53
 
117
- Do not store secrets in this repo.
54
+ ```yaml
55
+ # profiles/backend/profile.yaml
56
+ skills:
57
+ local:
58
+ - review/code-review
59
+ - deployment/coolify
60
+ - github/gh-fix-ci
61
+ ```
118
62
 
119
- The `private/` category exists for skills that touch host-specific or
120
- account-specific surfaces. Secrets and connection details (IPs, usernames,
121
- tokens) **must** come from environment variables or `~/.ssh/config` aliases —
122
- never from committed files. The bundled scripts under `private/myvps/` enforce
123
- this: they fail fast if `SUPA_SCHEMA_SSH_TARGET` isn't set.
63
+ At launch, cue symlinks these into the runtime's `skills/` directory.
124
64
 
125
- For WooCommerce imports, credentials live in:
65
+ ## Adding a skill
126
66
 
127
- ```text
128
- ~/.config/woocommerce-medusa-import/env # mode 600
67
+ ```bash
68
+ cue skills-new my-skill # scaffold
69
+ # edit skills/<category>/my-skill/SKILL.md
70
+ cue skills-lint my-skill # validate
71
+ cue skills-test my-skill # test
129
72
  ```
130
73
 
131
- ---
74
+ Or manually: create `skills/<category>/<slug>/SKILL.md` with the frontmatter format above.
132
75
 
133
- ```
134
- ─── this is mine. fork it, gut it, build your own. ───
135
- ```
76
+ ## Categories
77
+
78
+ | Category | Skills | Domain |
79
+ |----------|--------|--------|
80
+ | `browser` | 1 | Playwright, screenshots |
81
+ | `caveman` | 5 | Terse mode, commits |
82
+ | `design` | 16 | UI/UX, branding, SVG |
83
+ | `medusa` | 14 | Ecommerce platform |
84
+ | `meta` | 18 | Profile helpers, memory |
85
+ | `nvidia` | 12 | GPU optimization |
86
+ | `review` | 5 | Code quality, security |
87
+ | `research` | 8 | Search, papers |
88
+
89
+ ## Related
90
+
91
+ - [cue](https://github.com/opencue/cue) — the profile manager
92
+ - [resources/mcps](../mcps/) — MCP server registry
@@ -1,10 +1,14 @@
1
1
  ---
2
- description: "When user asks to record a high-quality CLI demo GIF that needs Kitty graphics protocol (real PNG icons inline) — use this headless Xvfb + Kitty + tmux + ffmpeg pipeline instead of vhs/asciinema which don't speak the Kitty protocol"
3
- requires_mcps: []
4
- allowed-tools: Bash(Xvfb:*), Bash(kitty:*), Bash(tmux:*), Bash(xdotool:*), Bash(ffmpeg:*), Bash(/usr/bin/ffmpeg:*), Read(*), Write(*)
2
+ description: "When user asks to record a high-quality CLI demo GIF that needs Kitty graphics protocol (real PNG icons inline) — use this headless cage/Wayland + Kitty + tmux + ffmpeg pipeline instead of vhs/asciinema which don't speak the Kitty protocol. Includes auto-redaction of moving text via tesseract OCR."
3
+ requires_mcps: [cue-tty-watch]
4
+ allowed-tools: Bash(cage:*), Bash(weston:*), Bash(Xvfb:*), Bash(kitty:*), Bash(tmux:*), Bash(xdotool:*), Bash(wf-recorder:*), Bash(grim:*), Bash(ffmpeg:*), Bash(/usr/bin/ffmpeg:*), Bash(tesseract:*), Bash(convert:*), Read(*), Write(*), mcp__cue-tty-watch__*
5
5
  ---
6
6
 
7
- # Headless GIF demos with Kitty + tmux + Xvfb + ffmpeg
7
+ # Headless GIF demos with Cage (Wayland) + Kitty + tmux + auto-redaction
8
+
9
+ > Updated pipeline: prefer **cage** (headless wlroots compositor) over Xvfb when on a Wayland host.
10
+ > Kitty graphics protocol works through wf-recorder → real brand-icon PNGs render in the GIF.
11
+ > Tesseract OCR + `redact_video` MCP tool handles moving-text redaction automatically.
8
12
 
9
13
  When you need a demo GIF of a CLI tool that uses **Kitty graphics protocol** (e.g. cue's brand-logo PNGs in `cue optimizer`), `vhs` and `asciinema` won't work — they render in `ttyd` which doesn't speak the protocol. Logos show as garbled placeholder boxes or fall back to emoji.
10
14
 
@@ -20,15 +24,19 @@ This skill captures the working pipeline: spin up a virtual X display, run real
20
24
 
21
25
  ## Required tools
22
26
 
23
- | Tool | Install (apt) | Install (nix) |
27
+ | Tool | Purpose | Install |
24
28
  |---|---|---|
25
- | `Xvfb` | `sudo apt install xvfb` | `nix profile install nixpkgs#xorg.xorgserver` |
26
- | `xdotool` | `sudo apt install xdotool` | `nix profile install nixpkgs#xdotool` |
27
- | `ffmpeg` with `x11grab` | `sudo apt install ffmpeg` (**not** nix-pure ffmpeg — that one lacks x11grab) | `nix profile install nixpkgs#ffmpeg-full` |
28
- | `kitty` | already on your box | |
29
- | `tmux` | already on your box | |
30
-
31
- **Gotcha:** verify ffmpeg has x11grab with `ffmpeg -devices | grep x11`. nix's stock `ffmpeg` doesn't ship it use `/usr/bin/ffmpeg` (apt) or `ffmpeg-full` (nix).
29
+ | `cage` | Headless wlroots compositor (preferred over weston — speaks `wlr-screencopy`) | `sudo apt install cage` |
30
+ | `wf-recorder` | Wayland screen capture (needs wlroots compositor) | `sudo apt install wf-recorder` |
31
+ | `grim` | Wayland screenshot (for preflight checks) | `sudo apt install grim` |
32
+ | `kitty` | Terminal with graphics protocol — renders brand PNGs inline | already there |
33
+ | `tmux` | Drives the demo via `send-keys` (works on any display protocol) | already there |
34
+ | `/usr/bin/ffmpeg` (apt) | Used to convert mp4→gif. Nix's `ffmpeg` lacks `x11grab`/`palettegen` features sometimes — apt build is safer. | `sudo apt install ffmpeg` |
35
+ | `tesseract` | OCR for auto-redaction. Returns bounding boxes per word/line. | `sudo apt install tesseract-ocr tesseract-ocr-eng` |
36
+ | `ollama` + `moondream` | Optional: fast vision Q&A ("is the splash visible yet?") | `ollama pull moondream` |
37
+ | `opencv-python`, `scenedetect`, `numpy`, `pillow` | Vision scripting in `~/.venvs/video` (or similar) | `pip install opencv-python-headless scenedetect numpy pillow` |
38
+
39
+ **Fallback (X11-only systems):** `Xvfb` + `ffmpeg x11grab` + `xdotool`. Same shape, X-only verbs.
32
40
 
33
41
  ## The pipeline
34
42
 
@@ -166,3 +174,40 @@ Pathological capture (means kitty didn't render to Xvfb):
166
174
  3. Test-run; check the preflight screenshot is non-empty
167
175
  4. Iterate on timing — pickers and Claude Code splash both need 2–3 s headroom
168
176
  5. Commit both the script and the resulting GIF — re-running gives byte-identical output for a fixed tape
177
+
178
+ ## Auto-redaction with the cue-tty-watch MCP
179
+
180
+ When the demo captures sensitive moving text (email in a splash card that scrolls as content is added below), don't fight per-frame `drawbox` coordinates by hand. The `cue-tty-watch` MCP (autoloaded on every cue profile via `core` inheritance) wraps tesseract + scenedetect + moondream so the agent can do this automatically:
181
+
182
+ | MCP tool | Backed by | Use when |
183
+ |---|---|---|
184
+ | `screenshot(display)` | `xwd` / `grim` | "What's on the headless display right now?" |
185
+ | `tmux_pane(socket, session)` | `tmux capture-pane -p` | "What text did the inner shell render?" |
186
+ | `send_keys_tmux(...)` | `tmux send-keys` | Drive the demo non-interactively |
187
+ | `find_text(image, query)` | `tesseract` | Get `{x,y,w,h}` for every occurrence of a substring in a frame |
188
+ | `ask_about_image(image, q)` | `ollama` + `moondream` | Fast yes/no-style vision Q&A ("did the splash render?") |
189
+ | `detect_scenes(video)` | `scenedetect` (`ContentDetector`) | Find scene-cut timestamps automatically |
190
+ | **`redact_video(in, out, query)`** | All of the above | **One call**: walks the video, OCRs each sampled frame, finds `query`, builds per-frame drawbox+drawtext filter, encodes the output |
191
+
192
+ `redact_video` is the killer. The "email scrolls up as Claude responds and my fixed drawbox is in the wrong place" problem reduces to:
193
+
194
+ ```jsonc
195
+ // MCP call
196
+ {
197
+ "tool": "redact_video",
198
+ "input_path": "/tmp/cue-demo-raw.mp4",
199
+ "output_path": "/tmp/cue-demo-redacted.mp4",
200
+ "query": "webubusiness",
201
+ "label": "[ account info · redacted ]",
202
+ "samples_per_second": 4,
203
+ "pad": 6
204
+ }
205
+ ```
206
+
207
+ Then convert the redacted mp4 → gif with the standard 2-pass palette pipeline.
208
+
209
+ Why this beats the manual approach:
210
+ - No more 3-phase time-gated drawboxes that leak at transitions
211
+ - Adapts automatically to any future demo (different fonts, scroll speeds, splash layouts)
212
+ - Handles boundaries cleanly — text disappears one frame, box disappears the next
213
+ - Works for ANY moving sensitive text, not just the email row
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: wedding-invitations
3
+ description: Use when designing a wedding invitation, save-the-date, or RSVP card from a conversation — bespoke HTML rendered to a print-ready PNG, any language, any aesthetic, fully local. Pointer to upstream wyx-sg/wedding-invitation-skill.
4
+ allowed-tools: Bash(chromium:*), Bash(google-chrome:*), Bash(microsoft-edge:*), Bash(node:*), Bash(git:*)
5
+ ---
6
+
7
+ # Wedding Invitations — bespoke, local, multilingual
8
+
9
+ [`wyx-sg/wedding-invitation-skill`](https://github.com/wyx-sg/wedding-invitation-skill) — designs a one-off wedding invitation from a conversation. Outputs a print-ready PNG (1080×1440 portrait or 1080×1920 9:16 poster). Renders locally via a headless Chromium browser; no uploads, no cloud, no telemetry.
10
+
11
+ ## When to use
12
+ - "Help me make a wedding invitation"
13
+ - "Design a save-the-date in [language]"
14
+ - Save-the-dates, RSVP cards, programs, menus, place cards — anything the same HTML→PNG pipeline can produce
15
+ - Multilingual collateral (English, Chinese, Spanish, Japanese, Korean, or any combination)
16
+ - Aesthetic directions covered by the upstream gallery: new-chinese, wabi-sabi, art-deco, morandi, modern-minimal, mediterranean, retro-poster, etc.
17
+
18
+ ## How
19
+ 1. **Talk** — the skill asks for language(s), names, date, venue, style preference
20
+ 2. **Preview** — aesthetic directions shown visually in your browser
21
+ 3. **Design** — Claude writes a unique HTML template from scratch
22
+ 4. **Iterate** — natural-language tweaks ("bigger font" / "softer color" / "swap the photo")
23
+ 5. **Export** — one command screenshots the HTML → high-res PNG
24
+
25
+ ## Install
26
+ ```bash
27
+ git clone https://github.com/wyx-sg/wedding-invitation-skill \
28
+ ~/.claude/skills/wedding-invitation
29
+ ```
30
+ Then invoke via `/wedding-invitation` in Claude Code, or just ask: "help me make a wedding invitation."
31
+
32
+ ## Prerequisites
33
+ - `node` 18+
34
+ - A Chromium-family browser: `chromium`, `google-chrome`, or `microsoft-edge` (any one suffices)
35
+ - `git` for the install
36
+
37
+ The upstream `render.js` auto-locates whichever browser you have. On Linux: `cue cli install chromium`. On macOS: `brew install --cask chromium` (or any Chrome already installed works). On Windows: Edge ships with the OS.
38
+
39
+ ## Notes
40
+ - **Privacy**: photos, names, addresses stay on your machine. The only network requests are Google Fonts CDN loads from your browser during HTML preview — font URLs only, nothing about you.
41
+ - **Not a template gallery**: each invitation is designed fresh from your prompt. The 20 gallery examples are showcases, not picks.
42
+ - **Other agents**: the skill is Claude-Code-first but works with Codex CLI, Cursor, Aider, Gemini CLI — tell the agent "read SKILL.md and help me make a wedding invitation."
43
+ - **Sibling collateral**: this skill specializes in invitations but the HTML→PNG pipeline generalizes — for programs/menus/place cards, the same workflow applies; ask Claude to adapt the template.
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: acpx
3
+ description: Delegate work to another coding agent (codex, claude, pi, openclaw, gemini, cursor, copilot, droid, etc.) over the Agent Client Protocol via acpx. Use when the user says "delegate to <agent>", "run codex", "use claude code", "have <agent> do X", "spawn a sub-agent", "agent-to-agent", mentions ACP, or when the work belongs in a different harness than the one you're in. Prefer this over PTY scraping or `tmux send-keys` to a foreign agent.
4
+ ---
5
+
6
+ # acpx — talk to other coding agents over ACP
7
+
8
+ `acpx` is a headless CLI that lets one agent drive another over the **Agent
9
+ Client Protocol (ACP)**. Persistent sessions, prompt queueing, structured
10
+ tool-call output, soft-close lifecycle. You get a real conversation with the
11
+ target agent instead of scraping its terminal.
12
+
13
+ ⚠️ acpx is in alpha; the surface may shift. Pin via `npm install -g acpx@latest`
14
+ or `npx acpx@latest` for one-offs. State lives in `~/.acpx/`.
15
+
16
+ ## When to reach for it
17
+
18
+ - User asks you to **delegate** a task to another agent ("get codex to fix X",
19
+ "have claude refactor Y").
20
+ - You're in one harness and the task is clearly a better fit for another
21
+ (e.g. you're in Claude Code and the user wants the Codex CLI to run the
22
+ task because of model availability or workflow preference).
23
+ - The user wants **parallel work in the same repo** by different agents
24
+ without stomping on each other.
25
+ - You'd otherwise be tempted to `tmux send-keys`, `expect`, or screen-scrape
26
+ another agent's TUI — stop, use acpx instead.
27
+
28
+ Do **not** use acpx for the agent you're already running inside. Use your
29
+ native tools.
30
+
31
+ ## Setup (one-time)
32
+
33
+ ```
34
+ npm install -g acpx@latest # global (faster)
35
+ # or
36
+ npx acpx@latest <agent> "<prompt>" # no install
37
+ ```
38
+
39
+ Underlying coding-agent CLIs (`codex`, `claude`, `gemini`, etc.) must already
40
+ be installed and authenticated separately — acpx is a client, not a bundler.
41
+ Run `cue cli install acpx` to install via the cli recipe registry.
42
+
43
+ ## Core commands
44
+
45
+ ```
46
+ acpx codex sessions new # create a session for this dir
47
+ acpx codex 'fix the failing tests' # run a prompt
48
+ acpx codex -s api 'paginate the endpoint' # parallel named session
49
+ acpx codex sessions list # see what's open
50
+ acpx codex status # is it running / idle / dead
51
+ acpx codex cancel # cooperative cancel (sends ACP cancel)
52
+ acpx codex sessions close # soft-close (keeps history)
53
+ acpx codex exec 'one-shot summary' # stateless, no saved session
54
+ ```
55
+
56
+ Substitute `codex` with `claude`, `pi`, `openclaw`, `gemini`, `cursor`,
57
+ `copilot`, `droid`, `iflow`, `kilocode`, `kimi`, `kiro`, `opencode`, `qoder`,
58
+ `qwen`, `trae`. For custom ACP servers: `acpx --agent './bin/my-acp' '...'`.
59
+
60
+ ## Useful flags
61
+
62
+ - `--no-wait` — queue prompt, return immediately (fire-and-forget).
63
+ - `--format json` — NDJSON event stream, good for automation/jq pipelines.
64
+ - `--format quiet` — final assistant text only.
65
+ - `--approve-all` / `--approve-reads` / `--deny-all` — permission gates.
66
+ - `--cwd <path>` — run against a different working directory.
67
+ - `--timeout <s>` — wall-clock cap on a single prompt.
68
+ - `--ttl <s>` — keep queue owner alive between prompts (default 300).
69
+ - `--file <path>` / stdin — load prompt body from file or pipe.
70
+
71
+ ## Full reference
72
+
73
+ - Skill source: <https://raw.githubusercontent.com/openclaw/acpx/main/skills/acpx/SKILL.md>
74
+ - CLI reference: <https://raw.githubusercontent.com/openclaw/acpx/main/docs/CLI.md>
75
+ - Built-in agent list: <https://github.com/openclaw/acpx/blob/main/agents/README.md>
76
+
77
+ When something's not obvious, read those — they're the canonical source and
78
+ they evolve faster than this stub.