vtchat: Skill for Claude Code

.opencode/skills/codemod/SKILL.md

codemod is a skill for Claude Code, OpenCode from vinhnx/vtchat. It costs 103 tokens per session (1,466 once invoked), scanned A, original, MIT.

A set of instructions for using Codemod, a tool for applying repeatable code changes across a codebase. It tells an AI assistant to search for an existing migration package before planning a manual upgrade or large refactor.

In plain words
What is it for?
Use it for framework or library upgrades, breaking-change migrations, deprecation updates, version rollouts, and other mechanical refactors.
Why use it?
Large migrations and version upgrades can be inconsistent or miss affected files when rewritten by hand. Registry search and a dry run provide an existing change plan to inspect first.

Skill for Claude CodeOpenCode

Written for Claude Code and OpenCode: allowed-tools in frontmatter, but also installed under .opencode/. Also seen: mentions subagents.

This is vinhnx/vtchat's own configuration. It tells Claude Code and OpenCode how to work on vtchat itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything vtchat configures →

Reuse

Borrowing it

Nothing to install: this file belongs to vinhnx/vtchat. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/vinhnx/vtchat/main/.opencode/skills/codemod/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/vinhnx/vtchat

Made for: Claude Code, OpenCode.

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 codemod

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

Your own site · 80×15
<a href="https://agentmods.dev/skills/vinhnx/vtchat/codemod"><img src="https://agentmods.dev/badge/skills/vinhnx/vtchat/codemod.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 103 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,466 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.00103 $0.01466
Opus 5.5 $0.00041 $0.00586
Sonnet 5.5 $0.00021 $0.00293
Haiku 4.5 $0.00010 $0.00147

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

Security

Grade A, and why

codemod 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.

.opencode/skills/codemod/SKILL.md · 87 lines

How it starts

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

Codemod Migration Assistant

codemod-compatibility: mcs-v1 codemod-skill-version: 1.0.0

Use this skill to orchestrate migration execution.

Trigger this skill when the user asks to:

  • migrate from one framework/library/tooling stack to another
  • upgrade or update a framework, SDK, package, plugin, compiler, or toolchain
  • apply a breaking-change migration, deprecation migration, or version bump rollout
  • perform a large mechanical refactor that may already exist as a Codemod Registry package

When the intent is migration/update/upgrade oriented, use Codemod first before defaulting to a fully open-ended AI rewrite.

Mandatory first action for migration/update/upgrade requests:

  • Run codemod search before proposing a manual migration plan.
  • Do not jump straight to a handcrafted migration approach until registry discovery has been attempted and summarized.
  • If a suitable existing codemod is found, prefer evaluating it with --dry-run before proposing bespoke manual or AI-only migration work.
  • Only skip registry discovery when the user explicitly says not to use Codemod or not to search for existing codemods.

First-turn behavior after this skill triggers:

  • Before globbing the repo, reading config files, or asking scope questions, derive a small set of high-signal search terms from the user request and run codemod search.
  • For example:
    • "migrate this repo from nextjs to tanstack start" -> search for next tanstack, nextjs tanstack start, and known package names if recognized.
    • "upgrade react 18 to 19" -> search for react 19, react upgrade, and related migration package names.
    • "update this repo to latest next" -> search for next upgrade, next migration, next latest.
  • Only inspect the repository after search results are summarized or when validating whether a discovered codemod matches the codebase.
  • If the search returns a plausible match, the next step is to inspect that package's README/limits and run a dry-run, not to draft a manual migration plan.

When a registry package is selected for execution:

  • Read the package README and any linked migration/setup docs before running it.
  • Treat the package docs as the execution contract for scope, prerequisites, config, and known limitations.
  • Apply documented prerequisites first when they are required for a correct run, such as baseline dependency changes, framework setup, branch creation, config files, or repository preparation.
  • If the package docs recommend a phased or confidence-first flow, follow that flow instead of jumping straight to a full apply.
  • Summarize documented manual follow-up areas before or immediately after execution so the user understands what the package intentionally leaves behind.

Recommended runtime flow:

  1. Discover candidates with codemod search.
  2. Read the selected package's README/docs and perform any documented prerequisites or setup steps.
  3. Run workflow-capable packages with codemod run --dry-run before apply.
  4. Run codemod <package-id> and accept the install prompt when a package exposes installable skill behavior (required for skill-only packages).
  5. Enforce verification with tests and dry-run summaries before apply.

Anti-patterns to avoid:

  • Do not start by planning a manual migration when the request is an upgrade, update, or migration and the registry has not been searched yet.
  • Do not create a new codemod package before checking whether an existing registry package already covers the migration.
  • Do not start with package.json inspection, framework-config inspection, or codebase grep when the user intent can first be narrowed by registry discovery.
  • Do not ask broad strategy questions like "in-place vs side-by-side?" before checking whether an existing codemod already defines the practical migration surface.
  • Do not run a discovered package blindly without first reading its README/docs for prerequisites, config, and known limits.

For codemod creation:

  • Start with references/core/create-codemods.md.
  • Load references/core/maintainer-monorepo.md when the user is building or maintaining a codemod monorepo, or when the migration spans multiple documented version hops.
  • For non-trivial codemod creation, decompose the work into focused sub-agents for research, codebase analysis, implementation, and testing instead of keeping the whole task in one context.
  • Use AST-based edits for JS/TS code transforms. If a code change cannot be implemented safely with AST tooling, leave it manual instead of falling back to raw source-string or regex rewrites.
  • Default to ast-grep-based codemod packages for codemod creation. Use js-ast-grep for JS/TS-family source changes and ast-grep workflow steps for other deterministic structured edits when possible.
  • Multi-step workflows are the normal way to combine those transformations in one package. Do not switch the package to shell/native scripts as the primary transformation engine by default just because the migration spans non-JS files.
  • Treat dependency/version manifest upgrades as part of the migration itself when the researched upgrade path requires them. If the official migration guide calls for package, SDK, plugin, or toolchain version bumps and those edits are deterministic, encode them in the workflow instead of leaving them as implied follow-up.
  • Do not treat analysis-only codemods as the default outcome for migration requests. Use an analysis-only codemod only when research shows there are no safe, meaningful automatable source edits for the requested migration, or when the user explicitly asked for reporting/analysis.
  • Use Codemod MCP as part of the active creation loop for non-trivial codemods: planning, AST refinement, and test/debug iteration.
  • Keep the created packages inside the user-requested migration scope; adjacent migrations may be suggested, but should not be scaffolded automatically without explicit user approval.
  • Define the test matrix and initial fixtures before implementing transforms so the codemod is built against expected behavior, not patched after blind implementation.
  • Do not stop until the package default tests are green; snapshot-only or metrics-only mismatches still count as unfinished work.
  • If a hop is manual-only, justify that decision from research and encode the rationale in the package docs.
  • Tests and README command examples must cover the real user-requested scope and current CLI surface, not just one happy-path fixture or guessed commands.

Read the full file on GitHub · 87 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 First seen · 87 lines · 103 tokens per session scan A 455e43fe45a1

Subscribe to this mod's changes

codemod is a skill published in the GitHub repository vinhnx/vtchat (59 stars, last pushed 1mo ago), licensed MIT. It adds 103 tokens to every session and 1,466 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-15.

Related

Other skills, from other repositories

reskin

Author a NEW skin for the reskinnable-demo app. A skin is a self-contained domain plugin under src/skins/ / that implements the frozen Skin contract (src/shell/skin-contract.ts) to swap the app's entire experience — brand, theme, layout, pages, tools, data, and agent — as a live sales demo. Use when the user says "add…

CopilotKit/CopilotKit · 154 tokens

setup-slack-channel

Use for the PROVIDER half of getting a locally running CopilotKit Channels agent to answer in Slack, when no Slack app exists yet — setting up a Channels bot in Slack for the first time, creating the Slack app and its tokens, attaching it to a managed Intelligence Channel, or when a Channel reports setuprequired, sits…

CopilotKit/CopilotKit · 206 tokens

copilotkit-channels

Use for the CODE half of a managed Intelligence Channel with Slack or Microsoft Teams: customising the Channel a CLI-scaffolded project already ships, or — for a project the CLI did not generate — writing the Channel declaration, the long-running host, and the awaited activation call. Teams provider setup is in scope…

CopilotKit/CopilotKit · 112 tokens

channels-setup

Use when a developer wants to build their first CopilotKit Channels agent and get it answering in Slack or Microsoft Teams: "set up a channel", "connect my agent to Slack", "get my agent into Teams", or starting from nothing and wanting a working channel end to end. Covers the whole path: inspecting or scaffolding the…

CopilotKit/CopilotKit · 141 tokens

copilotkit

Use for any CopilotKit question — adding it to an app, chat UI, frontend or server tools, generative UI, shared state, human-in-the-loop, agent frameworks (LangGraph, CrewAI, Mastra, ADK, PydanticAI, and others), the runtime, Intelligence, threads, voice, or diagnosing something that is not working. Do not answer from…

CopilotKit/CopilotKit · 104 tokens

intelligence-vocabulary

Locks customer-facing CopilotKit Intelligence docs to one approved name per concept. Use when writing, editing, or reviewing Intelligence docs, nav labels, signup labels, or image alt text in showcase/shell-docs. Don't use for renaming code identifiers, route slugs, env vars, API fields, or component names, or for…

CopilotKit/CopilotKit · 79 tokens