tapcanvas-public-chat

tapcanvas-public-chat is a skill for Claude Code, Codex from anymouschina/TapCanvas. It costs 79 tokens per session (1,283 once invoked), scanned A, original, MIT.

A set of rules for how TapCanvas agents should work together during public chat sessions. It separates web context gathering, backend checks, agent decision-making, and reusable skills, and it does not directly call the public API.

In plain words
What is it for?
Use it when an agent must plan or carry out multi-step creative work in TapCanvas, interpret project and canvas context, or decide when to make clearly specified canvas changes.
Why use it?
It keeps responsibilities clear and helps agents use confirmed project information, follow backend constraints, and handle canvas changes consistently. It also prevents this skill from being mistaken for an API client.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one.

Good fit Use it when an agent must plan or carry out multi-step creative work in TapCanvas, interpret project and canvas context, or decide when to make clearly specified canvas changes.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/anymouschina/tapcanvas/tapcanvas-public-chat
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 anymouschina/TapCanvas --skill tapcanvas-public-chat
Clone the repo
git clone --depth 1 https://github.com/anymouschina/TapCanvas

Made for: Claude Code, Codex.

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 tapcanvas-public-chat

README.md
[![agentmods](https://agentmods.dev/badge/skills/anymouschina/tapcanvas/tapcanvas-public-chat/github.svg)](https://agentmods.dev/skills/anymouschina/tapcanvas/tapcanvas-public-chat)
Your own site
<a href="https://agentmods.dev/skills/anymouschina/tapcanvas/tapcanvas-public-chat"><img src="https://agentmods.dev/badge/skills/anymouschina/tapcanvas/tapcanvas-public-chat/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 tapcanvas-public-chat

Your own site · 80×15
<a href="https://agentmods.dev/skills/anymouschina/tapcanvas/tapcanvas-public-chat"><img src="https://agentmods.dev/badge/skills/anymouschina/tapcanvas/tapcanvas-public-chat.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 79 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,283 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.00079 $0.01283
Opus 5 $0.00039 $0.00642
Sonnet 5 $0.00016 $0.00257
Haiku 4.5 $0.00008 $0.00128

Measured 12d ago against content hash 14c86def43b8, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

tapcanvas-public-chat 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 12d 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.

apps/agents-cli/skills/tapcanvas-public-chat/SKILL.md · 51 lines

How it starts

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

TapCanvas Public Chat

注意:

  • 本 skill 不是 API 调用器。
  • 凡是要实际请求 TapCanvas /public/* 接口,统一使用 tapcanvas-api
  • 不要在这里重新定义 apiKeyapiBaseUrl、endpoint 映射或请求脚本。

何时使用

  • 用户在 /public/chat 或 Web 对话助手里发起多步创作请求
  • 任务需要同时理解前端上下文、后端硬约束与 agents 自主编排边界

输入证据

  • 用户请求与会话上下文
  • chatContext 中的显式事实
  • 项目/flow/node/book/material 等工具结果

执行原则

  • web 只负责收集真实上下文并执行合法 plan
  • hono-api 只负责权限、协议、事实性、失败策略与审计
  • agents-cli 主代理负责意图识别、取证规划、技能加载、子代理拆分与结果汇总
  • 后端 system prompt 只承载身份、事实 briefing、协议与失败约束;业务方法论以本 skill 及同组 runtime skills 为准
  • 对显式、确定性的画布改动请求(如添加空文本节点、重命名节点、连接节点、更新少量已知字段),若当前 project/flow 作用域与目标足够明确,优先直接调用 tapcanvas_flow_patch 执行,不要退化成让用户手动操作
  • tapcanvas_flow_patch 现支持 deleteNodeIdsdeleteEdgeIds。删节点时必须传真实 node id,且会级联删除关联边;只想断开连线时优先用 deleteEdgeIds
  • 若同一轮 tapcanvas_flow_patch 同时包含 createNodescreateEdges,凡是会被边引用的新节点都必须先写显式稳定 idlabel 绝不是 node id
  • tapcanvas_flow_patch.createNodes 会写入分组结构(创建 groupNode,或给节点写 parentId),要把组节点放在子节点前面,并把组内子节点按你期望的最终视觉顺序依次写入;运行时会按该顺序做 parent-first 重排与组内紧凑排列
  • kind=storyboard 是前端“分镜编辑”图片网格,不是镜头脚本容器;若本轮只有逐镜头文本、beat list 或章节拆解而没有镜头图,应创建 kind=storyboardScriptkind=text 节点,而不是把长段文字塞进 storyboardcontent/prompt/text
  • 只有在你明确提供 storyboardEditorCells,或用户明确要求“空白分镜板/空网格占位”时,才创建 kind=storyboard;否则默认视为节点类型选择错误
  • 若当前明确选中了 kind=image / imageEdit 节点,且用户目标是“完善/优化/改写当前图片节点提示词”,先读取 tapcanvas_node_context_bundle_get 获取节点现有 prompt/systemPrompt/negativePrompt、结果图、上下游与 diagnostics,再决定改写范围;不要只根据选中态猜字段
  • 对“优化当前图片节点提示词”这类针对既有节点的确定性修改,优先直接回写当前节点,而不是默认新建平行节点;只有用户明确要求分叉、保留旧版或另起一版时,才创建新节点
  • 回写既有图片节点提示词时,优先用 tapcanvas_flow_patch.patchNodeData,并显式传 allowOverwrite=true,避免因为已有 prompt/systemPrompt/negativePrompt 被 409 拦下
  • kind=text 的节点允许为空内容占位;若用户明确要求“空文本节点/空白文本节点”,不要把 prompt / text 当成必填项
  • 对“添加空白文本节点”这类确定性写入,优先使用 tapcanvas_flow_patch.createNodes;最小可用示例:{"createNodes":[{"type":"taskNode","position":{"x":0,"y":0},"data":{"kind":"text","label":"空白文本","nodeWidth":380,"nodeHeight":360}}]}。空占位时可省略 prompt / text / textResults
  • 对 chapter-grounded 的 image / storyboard / composeVideo / video 写入,必须在同一轮 patch 内同步提交 data.productionMetadata;禁止先落节点、下一轮再补 metadata
  • SOP、创作方法论、提示词方法、连续性方法都属于 skill,而不是常驻 system prompt
  • 事实判断必须来自实时工具结果,不得来自 docs/assets/ai-metadata
  • 若本轮没有真实执行、没有真实生成、也没有返回合法 <tapcanvas_canvas_plan>,不得写成“已落地”“已完成”

Read the full file on GitHub · 51 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. 12d ago First seen · 51 lines · 79 tokens per session scan A 14c86def43b8

Subscribe to this mod's changes

tapcanvas-public-chat is a skill published in the GitHub repository anymouschina/TapCanvas (603 stars, last pushed yesterday), licensed MIT. It adds 79 tokens to every session and 1,283 once invoked, about $0.0004 per session on Opus 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

dramake

A production workflow for turning an idea, story, script, storyboard, or existing footage into a short AI drama or film. It covers planning, generation, voice, editing, and quality checks for formats such as vertical and horizontal video.

xixihhhh/ai-short-drama-skill · 279 tokens

last30Days

Resolve "last30Days" to a concrete ISO date range relative to your run time — a rolling 30-day window ending today. Returns inclusive civil dates plus exact UTC instants so you have temporal context without computing dates by hand. Read-only: no writes, no network. Use before a "last 30 days" / trailing-month task…

chaitanyagiri/munder-difflin · 83 tokens

thisWeek

Resolve "thisWeek" to a concrete ISO date range relative to your run time — this week so far (Monday → today). Returns inclusive civil dates plus exact UTC instants so you have temporal context without computing dates by hand. Read-only: no writes, no network. Use before a week-to-date task (this week's activity…

chaitanyagiri/munder-difflin · 77 tokens

short-drama-storyboard

A workflow for turning a Chinese short-drama script and its visual facts into a shot-by-shot storyboard with frozen starting-frame prompts.

zenstory-ai/drama-skills · 102 tokens

vchart-development-assistant

A coding assistant for VChart, a JavaScript chart library used to build visualizations such as bar, line, and pie charts.

VisActor/VChart · 144 tokens

md-fetch-summarize

Fetch a URL and return a concise markdown summary of its content. Read-only: no files are written; the summary is returned as output only. Use when asked to "fetch and summarize", "summarize this URL", "what does this page say", or "get the content of ". Proactively suggest when the user pastes a URL and asks what it…

chaitanyagiri/munder-difflin · 93 tokens