cast-mod

cast-mod is a skill for Claude Code from codecast-sh/codecast. It costs 92 tokens per session (1,776 once invoked), scanned A, original, MIT.

A guide for building a small sandboxed extension for the Codecast app. The extension can add interface panes, commands, and display blocks while reading the user's local Codecast data.

In plain words
What is it for?
Use it to create dashboards or custom views over sessions, tasks, plans, pull requests, and other Codecast data, then preview and publish them live.
Why use it?
It gives the extension a defined structure, typed API, permission checks, build steps, and logs instead of requiring changes to the main app.

Skill for Claude Code

Written for Claude Code: argument-hint in frontmatter. Also seen: mentions AGENTS.md.

Good fit Use it to create dashboards or custom views over sessions, tasks, plans, pull requests, and other Codecast data, then preview and publish them live.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/codecast-sh/codecast/cast-mod
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 codecast-sh/codecast --skill cast-mod
Clone the repo
git clone --depth 1 https://github.com/codecast-sh/codecast

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 cast-mod

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

Your own site · 80×15
<a href="https://agentmods.dev/skills/codecast-sh/codecast/cast-mod"><img src="https://agentmods.dev/badge/skills/codecast-sh/codecast/cast-mod.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 92 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,776 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.
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.00092 $0.01776
Opus 5.5 $0.00037 $0.00710
Sonnet 5.5 $0.00018 $0.00355
Haiku 4.5 $0.00009 $0.00178

Measured today against content hash 738d02aba5dc, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

cast-mod 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 today.

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.

packages/cli/skills/cast-mod/SKILL.md · 113 lines

How it starts

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

A mod is a folder: codecast-mod.json (what it adds and what it may touch) and ui.tsx exporting register(on). It runs in a sandboxed frame inside the person's codecast app on every device, reads codecast's data from their local store, and returns element trees that codecast draws with its own components. The whole API, every event and every element is typed in codecast-mod.d.ts, which cast mod new writes beside the code: read it before writing, it is the reference.

The loop: build it with the person watching

cast mod new <name>        # a working scaffold: a pane, a command and a fence
cd <name>
cast mod build             # bundle, typecheck, check the code against the grants
cast mod push              # live in their app within seconds; prints the pane's link
cast mod logs <name>       # what it printed and threw while drawing
cast browser open "$(cast mod open <name>)"   # look at it yourself

Put the pane's link alone on its own line in your reply. It renders as the running pane inside the conversation, and each later push redraws it there (the header's rev ticks), so the person watches the mod take shape in the thread instead of switching windows. A fence shows the same way: write an example block in your reply. Work in small pushes: get something real on screen first, then ask what to change. Look before you claim it works: a render that throws shows its error in place of the surface and in cast mod logs, so a blank or broken pane always has a reason you can read. cast mod publish -m "<note>" makes a numbered version with its source once it is right.

Writing it well

  • Ask for the least the mod needs. permissions.read lists the collections it reads, permissions.write the writes it makes, permissions.fetch the origins it calls. cast mod build refuses code that reaches past its grants and names the grant.
  • See the rows a mod would get before writing against them: cast browser eval "__modHost.query('sessions', { limit: 3 })" on any open codecast page answers exactly what $.data.list answers.
  • Read with $.data.list(collection, { where, sort, limit, fields }). It answers from the local store instantly, and the surface redraws by itself when those answers change, so a pane is live with no polling. Session rows carry a derived state (working, needs_input, done, dormant, idle) and project.
  • Draw with the elements, not raw HTML: they follow the person's theme, draw on every device and keep codecast's look. Ref turns any codecast id into the live pill messages use; Table, Stat, Chart, Markdown and Card carry most views.
  • Keep a mod's own values in $.state (they survive reloads and redraw the mod), not in module variables.
  • Start from the nouns. When the mod is about things the person names and follows (contacts, bugs, incidents, experiments, customers), make them an object kind under objects: a prefix, statuses and typed fields, before any view. Every object gets a <prefix>-<n> short id that reads as a live reference wherever codecast renders text, the same way a task does: its title inline, a hover card built from its status and fields, and a caret that opens its page right under the line. It also gets a list at /objects/<prefix>, a page at /o/<id> and cast obj verbs, with no code of yours. Put the rich view on that page (on("ui.render", { object: "<prefix>" })), so it shows wherever the object is expanded. Choose fields that make a useful preview: the hover card shows the first few filled ones. Read them with $.data.list("objects", { where: { prefix } }) and write with $.objects.
  • AGENTS.md beside the manifest is the mod's surface for agents, the way a pane is its surface for people: every session the mod applies to starts with it (a team's mod in that team's projects, a personal mod everywhere), and it ships, versions and publishes with the rest. Write it for an agent that has never seen the mod: what the mod adds, and when to reach for each part. For an object kind, that means mentioning an object by its short id in prose (and filing one with cast obj create when a conversation turns up a new one), not drawing a card for it. Keep it current as the mod grows.
  • A fence is for a view that is not one object: a comparison, a live query, a chart of many. Declare it, draw it in on("ui.render", { fence }), and any agent's ``` block renders that way for everyone who has the mod.
  • The elements already look like codecast, and a fence already sits in the frame every rich block in a message wears (a title strip, copy, fullscreen, a fold for tall blocks). Compose plainly and leave out colors, sizes and spacing unless the view needs them. A fence that returns one Card is the block: its title and actions move into the strip. e.surface says where a render lands (fence, pane, object, sidebar) when one tree should adapt.
  • When the props fall short, every layout element, Card, Text and Heading takes style: box and type properties freely, colors only from the theme's --sol-* variables. For a view the elements cannot express, Canvas takes your own HTML and stays interactive through data-press and data-change names wired to its on handlers.
  • To restyle the app, declare themes: an id, a title, and a light and/or dark palette of hex values per token (bg, bg-alt, card, border, text, text-muted, text-dim, link, the nine accents) plus font-ui and font-mono stacks. The person picks it in Settings > Appearance, and it recolors every surface, Tailwind's color scales included. A theme is data only: there is no CSS hook, so it survives every change to the app.

Read the full file on GitHub · 113 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. today Changed · +4 lines 738d02aba5dc
  2. 2d ago Changed · +27 lines · +3 tokens per session 7f9f2313b3bc
  3. 10d ago First seen · 82 lines · 89 tokens per session scan A 6e3473747358

Subscribe to this mod's changes

cast-mod is a skill published in the GitHub repository codecast-sh/codecast (40 stars, last pushed today), licensed MIT. It adds 92 tokens to every session and 1,776 once invoked, about $0.0004 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-10-06.