library-curator — Claude Code skill: what it does, how to install
Pulls images, logos and screenshots out of the OD Library and copies the file into your project, handing back a relative path you can drop into markup.
npx skills add nexu-io/open-design --skill library-curator -a claude-codeWhat library-curator does
The asset already exists in the user's library. The agent just has no way to reach it mid-task. This skill closes that gap: it queries the registry with POST /api/tools/library/search, ranks the hits by dimensions, title and source, then copies the pick over through POST /api/tools/library/apply. What comes back is a project-relative path such as assets/<hash>.png, and that is what you reference from the HTML or CSS you are editing.
Both endpoints take the run's OD_TOOL_TOKEN, injected by the daemon. Copies land in a library/ subdirectory unless you pass a different dir.
Here is where it gets thin. With no embedding model configured, search is keyword and metadata matching only, marked by semantic: false, so ranking is on you. An empty result set is a cue to generate media instead. A made-up path breaks the page, so only use a relPath that apply actually returned.
What it helps with
- drop an earlier upload into the page you are building
- reuse the project logo instead of generating a new one
- copy a library asset into the repo and get its relative path
- pick a background image by size and title
- pull back media the agent generated in an earlier run
Example prompts for the agent
- Grab the logo from my library and put it in this page header
- Find that screenshot I clipped earlier and use it as the hero image
- Insert from library a background texture and write the path into the CSS
How to install library-curator
1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill library-curator -a claude-code2Manually: put the files in place
~/.claude/skills/library-curator/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/library-curator/
1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill library-curator -a codex2Manually: put the files in place
.agents/skills/library-curator/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill library-curator -a cursor2Manually: put the files in place
.cursor/skills/library-curator/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install nexu-io/open-design library-curator2Manually: put the files in place
.github/skills/library-curator/SKILL.md1Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill library-curator -a gemini-cli2Platform CLI
gemini skills install https://github.com/nexu-io/open-design --path skills/library-curatorManually: put the files in place
.devin/skills/library-curator/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add nexu-io/open-design --skill library-curator -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set106
The whole set →Similar
Questions about library-curator
How do I install library-curator in Claude Code?
Run npx skills add nexu-io/open-design --skill library-curator -a claude-code. The skill file then sits at ~/.claude/skills/library-curator/SKILL.md.
What does library-curator do?
It searches the OD Library for an asset, copies the chosen file into the project and returns the path the agent wires into your markup or styles.
Does search still work without an embedding model?
Yes, as keyword and metadata matching. The response carries semantic: false, which means the agent has to order the results itself.
Source text
SKILL.md · Apache-2.0
---
name: library-curator
description: |
Search the OD Library (the global asset registry) and apply matching assets
into the current project mid-task. Use when the user asks to reuse an image
they captured/uploaded earlier, "pull a logo/screenshot from my library", or
to find and drop a stored asset into the page being built.
triggers:
- "from my library"
- "library asset"
- "use the image I captured"
- "insert from library"
od:
mode: utility
category: assets
---
# library-curator
Reuse assets that already live in the user's OD Library — images captured with
the OD Clipper, manual uploads, agent-generated media, and design-system
material — without asking the user to re-upload them.
## When to use
- The user references an asset they already have ("the screenshot I clipped",
"my logo", "that hero image from earlier").
- You need an image for the page you're building and the user prefers their own
library over freshly generated media.
## Tools (tool-token track)
Both endpoints authenticate with the run's tool token (`OD_TOOL_TOKEN`, injected
by the daemon) and operate on the project the run belongs to.
### Search
`POST /api/tools/library/search`
```json
{ "query": "blue hero background", "kind": "image", "limit": 20 }
```
Returns `{ "results": [{ "asset": { "id": "...", "kind": "image", "sourceTitle": "...", "width": 1600, "height": 900, "sources": [...] }, "score": 0 }], "semantic": false }`.
`semantic: false` means keyword/metadata matching (no embedding model
configured). Filter and rank the results yourself from the asset metadata.
### Apply
`POST /api/tools/library/apply`
```json
{ "assetId": "<id from search>", "dir": "assets" }
```
Copies the asset into the project (default subdir `library/`, or the `dir` you
pass) and returns `{ "relPath": "assets/<hash>.png" }`. Reference that
`relPath` from the HTML/CSS you write (e.g. `<img src="assets/ab12cd34ef.png">`).
## Recipe
1. Search with a tight query for the kind you need.
2. Pick the best result by dimensions / title / source.
3. Apply it to get a project-relative path.
4. Wire that path into the artifact you're editing.
If search returns nothing, fall back to media generation rather than guessing a
path — never invent a `relPath` that `apply` did not return.
© nexu-io · Apache-2.0 · nexu-io/open-design