manage-annotations

manage-annotations is a skill for Claude Code from dylanroscover/Embody. It costs 28 tokens per session (1,194 once invoked), scanned A, original, MIT.

Instructions for managing annotations in TouchDesigner networks. An annotation is a labeled note or box placed around operators, which are the building blocks of a TouchDesigner project.

In plain words
What is it for?
Use it to create title bars, comments, and boxes around groups of TouchDesigner operators.
Why use it?
It explains the required coordinates, sizes, modes, and API details so annotations are placed correctly.

Skill for Claude Code

Written for Claude Code: installed under .claude/.

Good fit Use it to create title bars, comments, and boxes around groups of TouchDesigner operators.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/dylanroscover/embody/manage-annotations
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add dylanroscover/Embody --skill manage-annotations
Clone the repo
git clone --depth 1 https://github.com/dylanroscover/Embody

Made for: Claude Code.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for manage-annotations

README.md
[![agentmods](https://agentmods.dev/badge/skills/dylanroscover/embody/manage-annotations/github.svg)](https://agentmods.dev/skills/dylanroscover/embody/manage-annotations)
Your own site
<a href="https://agentmods.dev/skills/dylanroscover/embody/manage-annotations"><img src="https://agentmods.dev/badge/skills/dylanroscover/embody/manage-annotations/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for manage-annotations

Your own site · 80×15
<a href="https://agentmods.dev/skills/dylanroscover/embody/manage-annotations"><img src="https://agentmods.dev/badge/skills/dylanroscover/embody/manage-annotations.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 28 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,194 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector pass 7 Sept 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00028 $0.01194
Opus 5.5 $0.00011 $0.00478
Sonnet 5.5 $0.00006 $0.00239
Haiku 4.5 $0.00003 $0.00119

Measured 26d ago against content hash 87c444dea692, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

manage-annotations scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 26d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/manage-annotations/SKILL.md · 94 lines

How it starts

The opening of the file, as written. The whole thing — 94 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Manage Annotations Workflow

Creating Annotations

create_annotation(
    parent_path='/path/to/network',
    mode='annotate',     # 'annotate' (title bar), 'comment', or 'networkbox'
    title='My Group',
    text='Description of this group',
    x=..., y=..., width=..., height=...,
    color=[r, g, b],     # Optional, floats 0-1
    opacity=0.5           # Optional
)

Always favor annotations over OP comments for documenting operators or groups.

Enclosing Operators

To create an annotation that encloses a group of operators:

  1. Get positions: get_network_layout on the parent COMP (includes all operator positions and bounding box)
  2. Calculate bounding box: Find min_x, max_x, min_y, max_y (max includes operator width/height: max_x = max(op_x + op_w), max_y = max(op_y + op_h))
  3. Add padding: 70 units on left/right/bottom, 170 units on top (title bar + body text)
  4. Set coordinates:
    • nodeX = min_x - 70
    • nodeY = min_y - 70 (BELOW operators, not above!)
    • nodeWidth = max_x - min_x + 140
    • nodeHeight = max_y - min_y + 240 (70 bottom + 170 top)

Coordinate Model

  • nodeX/nodeY = bottom-left corner, width/height extend rightward and upward
  • Title bar renders at the top of the rectangle
  • Common mistake: Setting nodeY above the operators. nodeY must be BELOW (less than) the lowest operator's Y.

Querying

  • get_annotations - list all annotations in a COMP with properties and enclosed operators
  • get_enclosed_ops - get operators enclosed by an annotation, or annotations enclosing an operator
  • set_annotation - modify text, title, color, opacity, position, or size

Deleting Annotations

Delete via delete_op, never via raw .destroy() in execute_python. delete_op resolves utility annotations, purges any tracking, and arms an auto-save checkpoint that re-exports the parent TDXN COMP's .tdxn without the annotation -- the deletion is durable. A raw .destroy() leaves the stale annotations: entry in the parent's .tdxn on disk, and the next reimport of that COMP (import_network, manager Reload, or cold open) resurrects the annotation with its pre-delete text.

Read the full file on GitHub · 94 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 26d ago Changed 87c444dea692
  2. 1mo ago Changed · +6 lines ba9799e3ea1e
  3. 1mo ago First seen · 88 lines · 28 tokens per session scan A 8406631df645

Subscribe to this mod's changes

manage-annotations is a skill published in the GitHub repository dylanroscover/Embody (208 stars, last pushed yesterday), licensed MIT. It adds 28 tokens to every session and 1,194 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

open-source

Documentation reference for writing Python code using the browser-use open-source library. Use this skill whenever the user needs help with Agent, Browser, or Tools configuration, is writing code that imports from browseruse, asks about @sandbox deployment, supported LLM models, Actor API, custom tools, lifecycle…

browser-use/browser-use · 137 tokens

notebooklm

Install, authenticate, troubleshoot, and operate Gemini Notebook through the notebooklm-py CLI or typed async Python API. Use for notebook and source management, grounded chat and research, and artifact generation or download when the user mentions Gemini Notebook, notebooklm-py, the notebooklm CLI, or its Python API.…

teng-lin/notebooklm-py · 79 tokens

polyrepo-boundaries

Decide which xberg-io repository owns a cross-repository fix or API, and coordinate compatible changes across Xberg, Alef, enterprise, crawler, LLM, and OCR repositories. Load when work spans sibling repos; do not use for a self-contained Xberg edit.

xberg-io/xberg · 57 tokens

dstack-prototyping

Use with the dstack skill for model-serving work when the image, serving command, resources, backend/fleet choice, or service behavior is not proven. Guides task-first prototyping on real hardware, choosing fleets/backends that can reuse idle instances and caches, checking vLLM/SGLang sources, and verifying the final…

dstackai/dstack · 80 tokens

mongodb-mcp-v3-migration

Migrates external consumer code from the mongodb-mcp-server v1/v2 single-package API to the v3 scoped-package structure. In v3, mongodb-mcp-server is a binary-only package (npx / MCPB); library embedding uses @mongodb-js/mcp-cli, @mongodb-js/mcp-core, @mongodb-js/mcp-http-runners, @mongodb-js/mcp-tools-, and the other…

mongodb-js/mongodb-mcp-server · 153 tokens

django-migrations

Django migration patterns and safety workflow for PostHog. Use when creating, adjusting, or reviewing Django/Postgres migrations, including non-blocking index/constraint changes, multi-phase schema changes, data backfills, migration conflict rebasing, and product model moves that require SeparateDatabaseAndState. Also…

PostHog/posthog · 99 tokens