Basic Cohub abilities. Most agents already have these mounted; listed here for reference.
Platform Published by the Neta team.
Official Made by the Neta team.
Verified Reviewed by the Neta team.
Community Shared by a Cohub user. Not reviewed — read SKILL.md before you use it.
chinese-bookmark-set
Community@sumino/chinese-bookmark-set
Community skill — not reviewed. It was shared by Jagulus and has not been checked by Neta. Read SKILL.md below before letting an agent use it.
Use it in Cohub
Paste this into your agent's chat — it fetches the skill and follows it.
Use the skill: chinese-bookmark-set. Run `npx -y @neta-art/neta-search-cli@latest skills use @sumino/chinese-bookmark-set --via site` and follow what it prints. Read its complete output, redirecting it to a temporary file first if necessary, and resolve relative paths from the skill directory it prints.
Install from a terminal
npx -y @neta-art/neta-search-cli@latest skills use @sumino/chinese-bookmark-set
Summary
Turn your character into a set of three Chinese-style ink bookmarks, shown together in one product-style picture.
You get one landscape picture of three tall bookmark strips (two to five if you prefer), standing apart on a plain, deeper-toned background.
Each strip has a big vertical brush-calligraphy title, a clean white writing panel, a small scene with tiny figures, a short verse and a red seal.
The strips are staggered in height, so your eye moves across them like a calm reading line, in soft, muted colors with red only on the seals.
You can get the whole set as one image, or have each bookmark cropped out on its own.
Works best with a character that has a clear look and a named world, plus a different setting for each strip, like water, snow or bamboo.
SKILL.md
# Chinese Bookmark Set
One image that reads as a product display: three (or two to five) tall bookmark strips standing apart on a flat, deeper-toned ground, staggered in height so the eye travels left-to-right and down. Every strip carries the same hierarchy — big vertical brush title, a bright white inscription panel, a small scene, a colophon line, one or two vermilion seals — with a different layout in each.
## What you get
- One landscape image (4:3 by default) holding N bookmark strips as separate objects: wide empty gaps, no touching, no overlap, each strip complete with its own edge and a thin darker border.
- A staggered vertical arrangement (left highest, right lowest by default) that forms one calm reading line.
- Per strip: a vertical calligraphy main title, a medium subtitle, a chapter word, a short verse line, a small scene with tiny figures, a colophon and a red seal.
- A palette of two families only: a deeper flat ground, and a warm low-saturation paper with a clean white panel.
## Inputs
Required: `[character]` (a visual description plus, if available, a reference image), `[theme]` (the world name in Chinese), and one `[place]` + `[props]` per strip.
Counts as given when: the user names a character and either attaches an image, has a character atom in the world, or describes the look in one sentence; and names or implies a world/theme. Missing any of those → ask **once**, in one message, for exactly what is missing (character look, world name, and either the strip settings or permission to choose them). If everything is given or the user says "you decide", build straight through to delivery without asking again.
Do not change world settings, and do not delete existing files while working.
## Language
Reply in the user's language. Any caption, title or note the user reads on the deliverable follows the user's language; the calligraphy inside the image stays Chinese, because that is the artefact's form.
## When to use
- "bookmark set", "Chinese bookmark", "ink-wash bookmark", "cultural product display";
- "国风书签", "水墨书签", "三联书签", "书签套装", "文创书签";
- three or more small narrative strips for one character, without a page.
Not for: a single illustration; a poster with a headline; anything needing fully legible long text (see the text budget below).
## Hard rules
0. **Sandbox CLI.** Every command is `node /mods/neta/neta …`.
1. **One character, N strips, one ground.** All strips belong to the same [theme] and the same [character]; the ground is a single flat colour, darker than the paper and in the same family.
2. **Separate objects.** Gaps wide enough to read as air, no overlapping edges; the strips are never a single cut-up panel.
3. **A real white panel in every strip.** It is the breathing space, not a highlight: bright, clean, rectangular, roughly 18–25% of the strip's height.
4. **Text budget.** One 2–3 character title, one 4–6 character subtitle, one 2–4 character chapter word, one 4–7 character verse, one seal character. Nothing else. Short strings are the difference between "correct characters" and "gibberish".
5. **No Latin script, no digits.** Old-book annotations only.
6. **Low saturation.** Two colour families plus vermilion; the seals are the only strong accent, and they stay small.
7. **Character proportion stays small.** No head close-ups; the figure is part of the scene.
8. **Text is verified, not assumed.** Read every glyph at 100% zoom before shipping; a wrong character means regenerate, never patch.
## Pipeline
### 0. Read the source
For an OC in the workspace:
```bash
node /mods/neta/neta atom get "world/characters/[character].md" # facts, palette, props
node /mods/neta/neta find images "[character]" # a reference image, if one exists
```
For an outside character or a one-off: take the description the user gives and skip the atom read.
Collect exactly these before writing anything:
- `[character]` — a short visual description (hair, eyes, outfit, one prop) and the palette;
- `[theme]` — the world's name in Chinese, 2–6 characters;
- `[place]` — one setting per strip (water, snow, bamboo, ruins…);
- `[props]` — two or three per strip from the character's own canon;
- `[seal]` — one character per seal, drawn from the theme or the character's name.
### 1. Build the prompt
```bash
node scripts/make-prompt.mjs spec.json > /tmp/bookmark-prompt.txt
```
`spec.json` shape is documented in [`references/prompt.md`](references/prompt.md) §1. The script fills the template and enforces the text budget; it refuses a strip with more than one title, one subtitle, one chapter word, one verse and one seal.
### 2. Generate
```bash
NETA_DEFAULT_IMAGE_MODEL=gpt-image-2 node /mods/neta/neta generate image \
--work-title "[theme] · Bookmark Set" \
--param size=1536x1152 --param quality=high --param output_format=png \
--prompt "$(cat /tmp/bookmark-prompt.txt)"
```
Aspect: `1536x1152` (4:3) is the default for three strips. Two strips read better at `1280x1152`; four or five at `1792x1152`. Never smaller than `1280` on the long edge — calligraphy needs pixels.
**Reference image:** pass `--image` only when you hold an image of *this* character. Passing an unrelated character's picture pollutes the design; a wrong reference is worse than none. With no reference, describe the character in one dense sentence inside the prompt.
### 3. Inspect (this is the step that fails silently)
Open the result at full size and check, in this order:
1. **Characters** — every title, subtitle, chapter word and seal. Compare against the spec string by string.
2. **Separation** — three complete rectangles with visible air; no shared edge.
3. **White panel** — present in each strip, bright, unbroken by the scene.
4. **Hierarchy** — the big title is the first thing read, before any scene detail.
5. **Stagger** — the heights differ; the set is not three identical strips in a row.
### 4. Repair
- **A wrong or invented character** → regenerate the same prompt with a shorter title (2 characters) and the sentence "write these exact characters, no other words" repeated at the end of the text block. One retry only; if the glyphs are still wrong, cut the title to the two most legible characters and ship with fewer words.
- **Strips touching or overlapping** → add "wide empty gaps between the bookmarks, none of them touching, none overlapping" and reduce to two strips.
- **No white panel** → add "a clean white rectangular inscription panel, bright and empty, 20% of each bookmark's height".
- **Characters standing like statues** → "tiny figures inside a landscape, part of a scene, no close-up of a face".
- **Too saturated** → "low saturation, warm and restrained, only the seals in vermilion".
### 5. Deliver
Publish the image as a Work, then hand it over on its own line through the interaction-components skill as a link card whose target is that Work (`{ "type": "work", "workId": "<id from the publish output>" }`) — not the raw image and not a file path. If the user only wants the picture in chat, embed it directly and skip the Work.
If the user wants single bookmarks, crop each strip with the margin intact:
```bash
convert out.png -crop <w>x<h>+<x>+<y> +repage bookmark-1.png
```
Crop from the outside edge of each strip, including its border and a few pixels of ground, so the pieces still read as one set.
## Judgement rules
| Question | Pass |
| --- | --- |
| Do the strips read as separate objects? | three complete rectangles, air between them |
| Is the title the first read? | yes, at arm's length |
| Does every strip have the full hierarchy? | title → white panel → scene → colophon → seal |
| Are the glyphs real? | verified at 100%, no invented strokes |
| Is the palette restrained? | two families + vermilion only |
| Is the figure small? | never a portrait crop |
## Failure fallbacks
| Symptom | Do this |
| --- | --- |
| Chinese titles come back garbled | cut to 2-character titles, repeat the exact-string list twice, regenerate once |
| Still garbled after one retry | ship with titles only (no subtitles/verses), and say so |
| Strips overlap | two strips, "gaps of at least one third of a strip's width" |
| Background textured | "flat colour field, no pattern, no texture, no table, no shadow" |
| Seals too large / too many | "one small square seal per strip, 4% of the strip's width" |
| Scene swallows the white panel | "the white panel stays empty; the scene begins below it" |
## Files
```
.agents/skills/chinese-bookmark-set/
SKILL.md
references/prompt.md # prompt template, spec schema, exact-string rules
references/qa.md # inspection checklist and crop recipe
scripts/make-prompt.mjs # spec.json → prompt text, enforces the text budget
```