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.
curl -O https://raw.githubusercontent.com/vinhnx/vtchat/main/.opencode/skills/codemod/SKILL.mdgit clone --depth 1 https://github.com/vinhnx/vtchatWrote 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.
[](https://agentmods.dev/skills/vinhnx/vtchat/codemod)<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.
<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>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.
| Model | Per session | Once 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 |
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.
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 searchbefore 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-runbefore 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.
- "migrate this repo from nextjs to tanstack start" -> search for
- 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:
- Discover candidates with
codemod search. - Read the selected package's README/docs and perform any documented prerequisites or setup steps.
- Run workflow-capable packages with
codemod run --dry-runbefore apply. - Run
codemod <package-id>and accept the install prompt when a package exposes installable skill behavior (required for skill-only packages). - 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.mdwhen 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-grepfor JS/TS-family source changes andast-grepworkflow 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.
What ships with it
8 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/ai-native/recipes.md 1.1 KB
- references/core/create-codemods.md 14 KB
- references/core/dry-run-and-verify.md 1.7 KB
- references/core/maintainer-monorepo.md 4.0 KB
- references/core/scaffold-and-run.md 1.0 KB
- references/core/search-and-discovery.md 1.6 KB
- references/core/troubleshooting.md 1.9 KB
- references/index.md 953 B
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.
- today First seen · 87 lines · 103 tokens per session scan A 455e43fe45a1
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.
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…
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-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…
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
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…
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…