From pai-pro
Appends a note node to a filmmaking canvas and links it to the previous note. Activated by phrases like 'take a note', 'jot down', or 'remember that'.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pai-pro:add-noteThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Notes are persisted through the canvas mutator. The agent does NOT
Notes are persisted through the canvas mutator. The agent does NOT
Write or Edit workflow.json directly — a PreToolUse hook blocks
that path. Use scripts/canvas_mutate.js instead.
Read ./workflow.json to find the most recent note_* id (largest
note_<N>). This is read-only; the hook only blocks writes.
Build the mutation payload — one note + an edge from the previous note if there is one:
{
"nodes": [{
"type": "note",
"data": {
"label": "<≤30 char title derived from the first sentence>",
"body": "<full user text>",
"metadata": { "author": "agent", "timestamp": "<ISO 8601 now>" }
}
}],
"edges": [
{ "from": "<previous note id, omit this edge if none>", "to": "$0" }
]
}
$0 is the placeholder for the (yet-to-be-assigned) new note id; the
mutator resolves it after assigning the real id.
Call the mutator:
node "$PAI_REPO_ROOT/server/scripts/canvas_mutate.js" \
--op addBatch \
--payload-json '<the JSON above as one line>'
Stdout is one JSON line. Read assigned.node_ids[0] to learn the new
note's id.
Confirm in ONE short sentence. Do NOT paste the JSON. Do NOT
narrate the call. Do NOT set x or y — the renderer positions
nodes automatically.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub utopai-research/pai-pro --plugin pai-pro