Positioning Ideas
phuryn/pm-skills
Brainstorm product positioning ideas differentiated from competitors.
Caption pipeline — position-clause grammar (never hand-split a caption), make caption-autotag modes, make caption-position (v2 rewrite rules and gates), and the preprocess-stage wiring for both.
$ npx skills add sorryhyun/anima_lora --skill captions -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sorryhyun/anima_lora captions --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/sorryhyun/anima_lora.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/captions .claude/skills/captions && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "captions" agent skill from https://github.com/sorryhyun/anima_lora/tree/main/.claude/skills/captions into .claude/skills/captions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "captions", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/sorryhyun/anima_lora/tree/main/.claude/skills/captionsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add sorryhyun/anima_lora --skill captions -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sorryhyun/anima_lora captions --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sorryhyun/anima_lora.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/captions .agents/skills/captions && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "captions" agent skill from https://github.com/sorryhyun/anima_lora/tree/main/.claude/skills/captions into .agents/skills/captions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "captions", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sorryhyun/anima_lora --skill captions -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sorryhyun/anima_lora captions --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sorryhyun/anima_lora.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/captions .cursor/skills/captions && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "captions" agent skill from https://github.com/sorryhyun/anima_lora/tree/main/.claude/skills/captions into .cursor/skills/captions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "captions", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/sorryhyun/anima_lora.git --path .claude/skills/captions--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add sorryhyun/anima_lora --skill captions -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sorryhyun/anima_lora captions --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sorryhyun/anima_lora.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/captions .gemini/skills/captions && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "captions" agent skill from https://github.com/sorryhyun/anima_lora/tree/main/.claude/skills/captions into .gemini/skills/captions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "captions", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install sorryhyun/anima_lora captionsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add sorryhyun/anima_lora --skill captions -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sorryhyun/anima_lora.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/captions .github/skills/captions && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "captions" agent skill from https://github.com/sorryhyun/anima_lora/tree/main/.claude/skills/captions into .github/skills/captions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "captions", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add sorryhyun/anima_lora --skill captions -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sorryhyun/anima_lora captions --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sorryhyun/anima_lora.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/captions .opencode/skills/captions && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "captions" agent skill from https://github.com/sorryhyun/anima_lora/tree/main/.claude/skills/captions into .opencode/skills/captions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "captions", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
captionsCaption pipeline — position-clause grammar (never hand-split a caption), make caption-autotag modes, make caption-position (v2 rewrite rules and gates), and the preprocess-stage wiring for both.
Captions is an agent skill from sorryhyun/anima_lora. Caption pipeline — position-clause grammar (never hand-split a caption), make caption-autotag modes, make caption-position (v2 rewrite rules and gates), and the preprocess-stage wiring for both. Load before parsing/editing captions or caption code, running either target, or touching the caption preprocess stages.
Its SKILL.md is about 1.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: optimized anima lora training script. The licence is MIT.
Read from SKILL.md and the folder at commit d16b651. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
makeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Captions loads about 1.3k tokens when it runs. Until then it costs about 81 tokens; SKILL.md has 598 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from sorryhyun/anima_lora at commit d16b651, republished under its MIT licence (© sorryhyun). 598 words, ~1,330 tokens.
.claude/skills/captions/SKILL.md (or your agent's skills folder).The caption code lives in the anime_tools package. Grammar details,
--caption_drop_groups resolution order, autotag modes, the v2 position-clause move
rules and gates, and the tuning defaults are in
../anime_tools/.claude/skills/captions/SKILL.md (evidence:
../anime_tools/docs/position_captions.md) — read it before editing caption code.
What stays trainer-side is below.
<flat tag bag>. On the left, akita neru, yellow eyes. On the right, kasane teto.
— the period delimits clauses, commas separate tags inside one. A plain
caption.split(",") silently corrupts clauses. Never hand-split a caption:
anime_tools.captions.position_clauses (parse_caption / compose_caption)
is the single grammar; anime_tools.captions.shuffle is the training-time
shuffle / @no-artist grammar (library.anima.training re-exports it).
anime_tools request object)Request/stage mechanics — build a request, never spell a flag; ARGS applied through
request_with_args — are in the anime-tools skill. Caption-specific: autotag and
position share one tagger load in-process under a daemon job, and release_models()
frees it before the TE child.
| Target | Request (stage id) | Notes |
|---|---|---|
make caption-autotag | AutotagRequest (autotag) | dry-run default; ARGS="--mode missing|merge|overwrite"; ARGS="--apply" then make preprocess-te. Writes the revised caption (resized/), master read-only |
make caption-position | PositionRequest (position) | SAM3 → tagger → v2 rewrite; dry-run default, GPU — route through the daemon |
make caption-full | PositionRequest → OcrRequest (ocr) → ExportRequest (export) | the whole derived-caption chain, one daemon job (re-enters tasks.py caption-full --inline inside it, so the stages share a process). Applies by default (--dry_run to plan) — every step writes the derived tree, which the master's dry-run guard exists to protect. --skip_position / --skip_ocr re-combine from the sidecars already read; --ocr_min_det / --ocr_min_glyph are the floors |
make preprocess-captions | CorrectRequest (correct) | corrects the revised caption in place (mirrors the master only for an image with none) + .variants.txt under post_image_dataset/resized/; --caption_drop_groups |
make caption-index | plain CLI anime_tools.captions.index | post_image_dataset/captions/caption_index.json (--out spelled by the trainer) |
make autotag / make tagger* | plain CLIs anime_tools.tagger.cli.* | single-image / vocab build / dbv4 ckpt |
Stage wiring (scripts/tasks/preprocess.py): autotag runs first (right after
resize, apply=True), then position clauses, then correction/variants, then TE —
chain order pinned by tests/test_preprocess_tasks.py; the request fields the trainer
sets are pinned by tests/test_anime_tools_cli_contract.py. TE caches are mtime-aware
(library/preprocess/text.py::_cache_is_current re-encodes a stem whose cache is older
than its caption .txt or .variants.txt), so a plain make preprocess-te after an
--apply picks up exactly the stems that changed — --overwrite is needed only for what
mtime cannot see (a vocab-pack or variant-count change). Always run it: a stale
.variants.txt keeps training the old caption. Once an image has a revised caption, a
hand-edit of its master no longer reaches it — edit the revised caption, or delete it to
re-mirror.
with_ocr_clause (anime_tools.captions.ocr_sidecar) is the one place an
{stem}.ocr.txt meets a caption, and it is reachable only through the export
stage's --combine_ocr. The trainer is its own workspace (the caption stages write
post_image_dataset/resized directly), so _caption_combine_request runs that export
in place: out is the resized tree's parent, because an export writes a caption to
out/resized/<rel>.txt. Every row but caption/variants then compares identical and is
skipped — no pixel, mask or index churn — and master/excluded_dir keep the package's
(absent) workspace defaults, so no row can write back over the hand-written masters
under image_dataset/. Pinned by test_caption_full_combine_publishes_in_place.
The combine is idempotent: a text clause the caption already carries is replaced, and a
re-run whose sidecar lost its lines removes the clause. Two floors decide which lines
reach a caption (--ocr_min_det 0.5, --ocr_min_glyph 16.0) — the sidecar always keeps
every line. A dry run of the full chain reports the combine against the sidecars already
on disk, not against what its own OCR step would have written.
configs/clause_vocabulary.yaml is the user-editable clause policy; the package
ships an identical default used when the file is absent from the curation home.
© sorryhyun, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/captions of sorryhyun/anima_lora.
Open the folder on GitHubat commit d16b651
Captions next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Captions this skillsorryhyun/anima_lora | 125 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Positioning Ideasphuryn/pm-skills | 27k | — | ~751 | Automated safety check: Pass | MIT | |
| Gtm Positioning Strategygithub/awesome-copilot | 40k | 1 repos | ~3.5k | Automated safety check: Pass | MIT | |
| Captions Overlay Rulesheygen-com/hyperframes | 59k | 1 repos | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| Remotion Captionsremotion-dev/remotion | 63k | 5 repos | ~294 | Automated safety check: Pass | Custom licence | |
| Positioning Icptech-leads-club/agent-skills | 7k | — | ~6.9k | Automated safety check: Pass | Custom licence |
phuryn/pm-skills
Brainstorm product positioning ideas differentiated from competitors.
github/awesome-copilot
Find and own a defensible market position. An agent skill from github/awesome-copilot.
heygen-com/hyperframes
Rules for captioning talking-head and launch videos: classify each phrase as drop, rail or embed, and composite captions over the film instead of reserving space.
remotion-dev/remotion
Transcribing, displaying and animating captions. An agent skill from remotion-dev/remotion.
tech-leads-club/agent-skills
When the user wants to define their ideal customer profile, position an AI product, build messaging architecture, or validate product-market fit.
nexu-io/open-design
Generate hand-drawn Excalidraw diagrams from a prompt — animated SVG, hosted edit link, and PNG export.
sorryhyun/anima_lora
The model catalog (library/downloads.py) — one Asset row per weight (repo, files, destination, installed probe), packs, resolve() name order, and the rule that loaders import their default paths…
sorryhyun/anima_lora
Qwen-Image-2.1 LoRA line (NOT Anima) — running cache/train through the daemon, make gui-qwen, the CacheRequest/TrainRequest flag surface and how to add a field, model-dir resolution, cache layout…
sorryhyun/anima_lora
The trainer ↔ animetools boundary — what the curation split moved out, the typed request/stage API the make targets build, the git-pin dev loop and its stale-venv trap, and the tests that guard the…
sorryhyun/anima_lora
Free-fit native-shape bucketing — the token bands per edge tier, tier choice at preprocess time, the compiledynamicseq coupling and per-tier graph budget, and why training never needs --targetres.
sorryhyun/anima_lora
The ComfyUI node map — which node lives in which standalone repo vs in-tree under customnodes/, where each is symlinked, and the vendor-sync rule for the vendor/ subsets.
sorryhyun/anima_lora
Submit, monitor, and manage GPU jobs through the anima daemon (make daemon-, make gen, make run-status, MCP bridge, discovery).
Caption pipeline — position-clause grammar (never hand-split a caption), make caption-autotag modes, make caption-position (v2 rewrite rules and gates), and the preprocess-stage wiring for both. Captions is an agent skill from sorryhyun/anima_lora. Caption pipeline — position-clause grammar (never hand-split a caption), make caption-autotag modes, make caption-position (v2 rewrite rules and gates), and the preprocess-stage wiring for both.
Run `npx skills add sorryhyun/anima_lora --skill captions -a claude-code`. Or copy the skill folder (.claude/skills/captions in sorryhyun/anima_lora) into .claude/skills/captions in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sorryhyun/anima_lora --skill captions -a codex`. Or copy the skill folder (.claude/skills/captions in sorryhyun/anima_lora) into .agents/skills/captions in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sorryhyun/anima_lora --skill captions -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/captions, .gemini/skills/captions, .github/skills/captions and .opencode/skills/captions in your project.
Going by SKILL.md and its folder, Captions needs the command-line tools its instructions call (make).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Captions is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.3k tokens (SKILL.md is roughly 5.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Captions: Positioning Ideas (phuryn/pm-skills, 27k stars), Gtm Positioning Strategy (github/awesome-copilot, 40k stars), Captions Overlay Rules (heygen-com/hyperframes, 59k stars) and Remotion Captions (remotion-dev/remotion, 63k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sorryhyun (a GitHub user) maintains it in sorryhyun/anima_lora, which has 125 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 9, 2026.
Source: sorryhyun/anima_lora on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.