Agent skill

Codemod Generator

by murphytrueman in murphytrueman/design-system-ops

Generate tested jscodeshift/postcss codemods for design system migrations: token renames, prop renames or removals, import paths, component swaps.

MITAuto-check passedDevelopment

Install Codemod Generator

skills CLI
$ npx skills add murphytrueman/design-system-ops --skill codemod-generator -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install murphytrueman/design-system-ops codemod-generator --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/murphytrueman/design-system-ops.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/codemod-generator .claude/skills/codemod-generator && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
codemod-generator
GitHub stars
201
Token cost
~4.9k tokens
SKILL.md length
1,616 words
Files
1
Skills in repo
36
Repo updated
First seen
Licence
MIT

At a glance

Generate tested jscodeshift/postcss codemods for design system migrations: token renames, prop renames or removals, import paths, component swaps.

  • Works in 7 steps: Determine the codemod type → Generate the transform script → Generate test cases → …
  • Tasks that involve Code migrations
  • SKILL.md covers Before you begin: verify…, Why this exists, Configuration and Codemod types, plus 10 more sections
  • Calls npx and git

What it does

Codemod Generator is an agent skill from murphytrueman/design-system-ops. Generate tested jscodeshift/postcss codemods for design system migrations: token renames, prop renames or removals, import paths, component swaps. Triggers: codemod, migration script, rename this prop everywhere. Deprecation planning: deprecation-process. Release notes: change-communication.

Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Code migrations and Design systems. It works with TypeScript. The repository describes itself as: Claude Code skills for the work that keeps a design system alive. The licence is MIT.

When your agent uses it

  • Tasks that involve Code migrations
  • Tasks that involve Design systems

Example prompts

  • “/codemod-generator”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Read, Write, Grep, Glob, Bash(cat:*), Bash(find:*), Bash(head:*), Bash(ls:*), Bash(node:*), Bash(sort:*), Bash(tail:*), Bash(wc:*), Bash(npx tsc:*), Bash(npx jscodeshift:*), Bash(npx jest:*), Bash(npx vitest:*)

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Determine the codemod type
  2. Generate the transform script
  3. Generate test cases
  4. Generate the migration runner
  5. Generate documentation
  6. Handle untransformable patterns
  7. Two-sided migration (when Figma Console MCP is available)

What it can do on your machine

Read from SKILL.md and the folder at commit f167898. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Grep
    • Glob
    • Bash(cat:*)
    • Bash(find:*)
    • Bash(head:*)
    • Bash(ls:*)
    • Bash(node:*)
    • Bash(sort:*)

    …and 6 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx and git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Codemod Generator loads about 4.9k tokens when it runs. Until then it costs about 78 tokens; SKILL.md has 1,616 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~78
When it runs · the whole SKILL.md, loaded when a task matches
~4.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from murphytrueman/design-system-ops at commit f167898, republished under its MIT licence (© murphytrueman). 1,616 words, ~4,860 tokens.

Download SKILL.mdSave it as .claude/skills/codemod-generator/SKILL.md (or your agent's skills folder).
name
codemod-generator
description
Generate tested jscodeshift/postcss codemods for design system migrations: token renames, prop renames or removals, import paths, component swaps. Triggers: codemod, migration script, rename this prop everywhere. Deprecation planning: deprecation-process. Release notes: change-communication.
allowed-tools
Read, Write, Grep, Glob, Bash(cat:*), Bash(find:*), Bash(head:*), Bash(ls:*), Bash(node:*), Bash(sort:*), Bash(tail:*), Bash(wc:*), Bash(npx tsc:*), Bash(npx jscodeshift:*), Bash(npx jest:*), Bash(npx vitest:*)
references
../../knowledge-notes/component-governance.md, ../../knowledge-notes/design-to-code-contract.md, ../../knowledge-notes/output-discipline.md

Codemod Generator

A skill for producing automated code transformation scripts that apply design system changes across consuming codebases. When a token is renamed, a component API changes, or an import path moves, this skill generates the script that makes the change everywhere — safely, consistently, and with a dry-run option.

Output type: File creation. This skill produces executable transformation scripts (JavaScript/TypeScript) and documentation. It does not apply the transformations to the team's code — it generates scripts that teams run in their own codebases. Where you can execute commands, it does run the tests and a dry run (Step 5b).


Before you begin: verify references

Confirm that every path in this skill's frontmatter references: exists relative to this SKILL.md. If any is missing, stop: the install is incomplete, usually because a flattening installer (for example npx skills install) dropped the repo-root knowledge-notes/ directory. Tell the user to reinstall by a method in 1-INSTALL.md and run verify-install.sh from the install root. Proceed without the references only if the user explicitly says to, and then say in the output that it was produced without the pack's reference material.

Why this exists

A design system change without a migration path is a breaking promise, and the manual find-and-replace is where upgrade debt accumulates until teams stop upgrading. A codemod does the mechanical part deterministically across every file. This skill generates the script and its tests; the deprecation plan and the migration guide stay with deprecation-process and change-communication.


Configuration

If .ds-ops-config.yml exists, follow the configuration-and-recurring knowledge note (../../knowledge-notes/configuration-and-recurring.md). This skill reads:

yaml
codemods:
  language: "typescript"              # typescript, javascript, or both
  transform_engine: "jscodeshift"     # jscodeshift, ts-morph, or custom
  output_directory: "codemods/"
  test_framework: "jest"              # jest or vitest for codemod tests
  style_dictionary_format: false      # If tokens use Style Dictionary format
  css_custom_properties: true         # If tokens are consumed as CSS custom properties

If no configuration exists, use these defaults:

  • Language: TypeScript
  • Transform engine: jscodeshift
  • Output directory: codemods/
  • Test framework: jest

Codemod types

This skill generates five types of codemods:

Type 1: Token rename

Renames a design token across all consuming files.

Scope: CSS custom properties, JavaScript/TypeScript token imports, Sass variables, style objects, className references, and template-literal CSS in styled-components and Emotion (css\...`, styled.div`...``), which is where most CSS-in-JS token references live.

Example input:

Rename: color.brand.primary → color.action.primary
Affects: CSS custom properties (--color-brand-primary → --color-action-primary)
         JS token imports (tokens.color.brand.primary → tokens.color.action.primary)
         Sass variables ($color-brand-primary → $color-action-primary)
Type 2: Component prop rename

Renames a component prop across all usage sites.

Example input:

Component: Button
Rename prop: type → variant
Value mapping: type="primary" → variant="primary" (no value change)
Type 3: Component prop removal

Removes a deprecated prop with a safe fallback or migration.

Example input:

Component: Button
Remove prop: disableRipple
Migration: Delete the attribute (the ripple effect has been removed from the system).
If the value is dynamic (disableRipple={flag}), leave it and add a TODO comment,
since removing it may drop logic the consumer relies on.
Type 4: Import path update

Updates import paths when packages are restructured.

Example input:

Old: import { Button } from '@myds/components'
New: import { Button } from '@myds/react/Button'
Type 5: Component replacement

Replaces one component with another, mapping props.

Example input:

Replace: DatePicker → DatePickerNext
Prop mapping:
  - value → selectedDate
  - onChange → onDateChange
  - format → dateFormat (default: "yyyy-MM-dd")
  - minDate → min
  - maxDate → max
Removed props: locale (now uses system locale)
New required props: none

Step 0: Determine the codemod type

From the user's request, determine:

  1. What is changing? Token name, prop name, import path, or component replacement
  2. What are the before and after states? Exact old and new values
  3. What is the scope? CSS, JS/TS, Sass, all of the above
  4. Are there edge cases? Conditional logic, dynamic values, spread props
  5. Is there a value mapping? Or is it a straight rename

If the request is unclear on any of these, ask before generating. A codemod that transforms the wrong thing is worse than no codemod at all.


Step 1: Generate the transform script

Pick the engine for the change. jscodeshift for syntactic changes (renames, attribute edits, import paths), which is most of them. ts-morph when the transform needs type information, for example renaming a prop only on components whose props extend a given interface, or telling two same-named components from different packages apart. ast-grep is a fast alternative for simple pattern rewrites when the team already uses it. Say which was chosen and why in the file header.

For jscodeshift transforms (JavaScript/TypeScript)

Each codemod is a single file following the jscodeshift API:

javascript
/**
 * Codemod: [description]
 * Generated by Design System Ops — codemod-generator
 *
 * Usage:
 *   npx jscodeshift --transform codemods/[name].js --extensions=tsx,ts,jsx,js --parser=tsx src/
 *
 * Dry run (preview changes without writing):
 *   npx jscodeshift --transform codemods/[name].js --extensions=tsx,ts,jsx,js --parser=tsx --dry --print src/
 *
 * Use the same --extensions and --parser flags for both commands: jscodeshift only
 * reads .js files by default, so a dry run without them previews nothing.
 *
 * What this codemod does:
 *   [Clear description of the transformation]
 *
 * What this codemod does NOT do:
 *   [Explicit list of things this codemod will not catch]
 */

module.exports = function transformer(file, api) {
  const j = api.jscodeshift;
  const root = j(file.source);
  let hasChanges = false;

  // [Transform logic]

  if (!hasChanges) {
    return undefined; // Return undefined when no changes — jscodeshift skips the file
  }

  return root.toSource(); // don't force a quote style; recast keeps untouched code as written
};

module.exports.parser = 'tsx'; // or 'babel' for JS-only codebases

Template literals. A transform that visits only StringLiteral and JSXAttribute nodes misses token references inside css\...`andstyled.x`...`. Token-rename codemods also visit TemplateLiteralnodes and apply the anchored regex to each quasi'svalue.raw(andvalue.cooked), setting hasChanges` when anything matched. Add a test whose input is a styled-component.

For CSS/Sass transforms

CSS transforms cannot use jscodeshift (which is for JS ASTs). Generate a Node.js script using postcss for CSS, and postcss-scss for Sass. If you fall back to a regex for Sass variables, anchor the end of the name so $color-brand-primary doesn't also match $color-brand-primary-light: /\$color-brand-primary(?![\w-])/g. The same applies to custom properties: /--color-brand-primary(?![\w-])/g.

javascript
/**
 * Codemod: [description] (CSS)
 * Generated by Design System Ops — codemod-generator
 *
 * Usage:
 *   node codemods/[name]-css.js --dir src/ [--dry-run]
 */

const postcss = require('postcss');
const fs = require('fs');
const path = require('path');
const glob = require('glob');

// [PostCSS-based transform logic]
For Style Dictionary token transforms

If tokens use Style Dictionary format, generate a Style Dictionary pre-processor that transforms the token source files:

javascript
/**
 * Token migration: [description]
 * Generated by Design System Ops — codemod-generator
 *
 * Usage:
 *   node codemods/[name]-tokens.js --dir tokens/ [--dry-run]
 */

// [JSON/YAML transform logic for token source files]

Step 2: Generate test cases

Every codemod must include tests. Generate a test file alongside the transform:

javascript
/**
 * Tests for: [codemod name]
 * Generated by Design System Ops — codemod-generator
 */

const { applyTransform } = require('jscodeshift/dist/testUtils');
const transform = require('./[name]');

describe('[codemod name]', () => {
  // Test 1: Basic transformation
  it('transforms [basic case]', () => {
    const input = `[before code]`;
    const expected = `[after code]`;
    const result = applyTransform(transform, {}, { source: input });
    expect(result).toBe(expected.trim()); // applyTransform trims its output
  });

  // Test 2: No-op case (file without the pattern)
  it('does not modify files without [pattern]', () => {
    const input = `[unrelated code]`;
    const result = applyTransform(transform, {}, { source: input });
    expect(result).toBe(''); // applyTransform returns (output || '').trim(), so a no-op is ''
  });

  // Test 3: Edge case — dynamic values
  it('handles [edge case description]', () => {
    const input = `[edge case code]`;
    const expected = `[expected result]`;
    const result = applyTransform(transform, {}, { source: input });
    expect(result).toBe(expected.trim());
  });

  // Test 4: Edge case — spread props
  it('flags [untransformable case] with a comment', () => {
    const input = `[untransformable code]`;
    const result = applyTransform(transform, {}, { source: input });
    expect(result).toContain('/* TODO: Manual migration needed');
  });
});
Test coverage requirements

Scale the tests to the change. A prop rename, prop removal or component replacement needs all eight cases below. A straight token rename or import-path update needs cases 1, 2, 3, 7 and 8 (dynamic values, spread props and conditional rendering don't arise), plus the template-literal case for token renames. Don't pad a simple codemod with tests for situations it can't meet.

Each codemod must have tests for:

  1. Basic case — The simple, expected transformation
  2. No-op case — A file that does not contain the pattern (should be untouched)
  3. Multiple occurrences — File with the pattern appearing multiple times
  4. Edge case: dynamic values — When the value is a variable, not a literal
  5. Edge case: spread props — When props are spread ({...props})
  6. Edge case: conditional rendering — When the component/token is used conditionally
  7. Edge case: aliased imports — When the import is renamed (import { Button as Btn })
  8. Untransformable case — When the pattern is too complex for automated transformation (should add a TODO comment, not transform incorrectly)

Step 3: Generate the migration runner

Produce a migrate.js script that orchestrates running all codemods for a version upgrade:

javascript
/**
 * Migration runner: [system name] v[X] → v[Y]
 * Generated by Design System Ops — codemod-generator
 *
 * Usage:
 *   node codemods/migrate.js --dir src/ [--dry-run] [--verbose]
 *
 * This script runs all codemods for the v[X] → v[Y] migration in the correct order.
 * Run with --dry-run first to preview changes.
 */

const { execSync } = require('child_process');
const path = require('path');

const CODEMODS = [
  {
    name: '[codemod 1]',
    file: '[name-1].js',
    description: '[what it does]',
    order: 1,
  },
  {
    name: '[codemod 2]',
    file: '[name-2].js',
    description: '[what it does]',
    order: 2,
    dependsOn: '[codemod 1]', // Must run after codemod 1
  },
];

// [Runner logic: execute codemods in order, report results, handle failures]
Order matters

Some codemods must run before others:

  • Token renames before component prop updates (if components reference tokens by name)
  • Import path changes before component replacements (so the codemod finds the right imports)
  • Prop renames before prop removals (to avoid losing context)

The migration runner enforces this ordering.


Step 4: Generate documentation

Produce a MIGRATION.md file alongside the codemods:

markdown
# Migration guide: v[X] → v[Y]

## What changed
[Summary of all changes covered by these codemods]

## Automated migration
Run the migration script:
\`\`\`bash
# Preview changes (recommended first step)
node codemods/migrate.js --dir src/ --dry-run

# Apply changes
node codemods/migrate.js --dir src/
\`\`\`

## What the codemods handle
| Change | Codemod | Scope |
|---|---|---|
| [change 1] | [codemod file] | JS/TS/CSS |
| [change 2] | [codemod file] | JS/TS only |

## What requires manual attention
These changes cannot be fully automated:
- [manual item 1 — why it cannot be automated]
- [manual item 2 — why it cannot be automated]

For each manual item, search your codebase for:
\`\`\`bash
grep -r "[pattern]" src/
\`\`\`

## Verification
After running the codemods:
1. Run your test suite: \`npm test\`
2. Run type checking: \`npx tsc --noEmit\`
3. Visually review the changed files: \`git diff\`
4. Run your application and test the affected components

## Rollback
Run the codemods on their own branch and commit their output as a single commit (or one commit per codemod), separate from any manual fixes. To undo, \`git revert <commit>\`.
Steps that aren't reversible this way:
- [e.g. Figma variable renames, published package versions, or "none"]

Show full SKILL.md (693 more words)Show less

Step 5: Handle untransformable patterns

Not everything can be automated. When the codemod encounters a pattern it cannot safely transform, it must:

  1. Leave the original code untouched — Never guess. Never transform incorrectly.
  2. Add a TODO comment at the exact location:
    javascript
    /* TODO: Manual migration needed — [description of what needs to change]
     * Old pattern: [what the code currently does]
     * New pattern: [what it should become]
     * Why this was not automated: [reason — dynamic value, complex logic, etc.]
     * Generated by Design System Ops — codemod-generator
     */
  3. Report it in the migration runner output:
    ⚠ [file.tsx:42] — Manual migration needed: [description]
Common untransformable patterns
  • Dynamic prop values: <Button variant={getVariant()}> — the codemod cannot know what getVariant() returns
  • Spread props: <Button {...buttonProps}> — the codemod cannot know what buttonProps contains
  • Computed token access: tokens[color.${category}.${variant}] — the codemod cannot resolve template literals
  • Re-exported components: When a component is re-exported through an intermediary module with different prop types
  • Test files with mocked props: Mock objects may need different handling than production code

Step 5b: Run what you generated

If you can execute commands in the target repository, run the codemod's test file and a dry run over the consumer code before handing over. Report the results in the summary: tests passed and failed, files the dry run would change, and TODO flags added for manual migration. If you can't execute, say plainly that the codemods are untested and list the commands the user should run first.


With other skills

deprecation-process supplies the mapping table these codemods implement; change-communication puts the run commands in the migration guide; cicd-integration runs the codemod tests in the system's CI.


Step 6: Two-sided migration (when Figma Console MCP is available)

If the Figma Console MCP from Southleft is connected (check for figma_rename_variable and figma_update_variable tool availability), extend the migration to include Figma variable renames alongside the code codemods. This ensures design and code stay in sync during the migration.

Token renames: For Type 1 (token rename) codemods, use figma_rename_variable to rename the corresponding Figma variables. Map each code-side rename to its Figma-side equivalent. Figma renames preserve all values, modes, and alias references — only the name changes.

Prop renames that affect Figma: For Type 2 (prop rename) codemods where the renamed prop maps to a Figma component property, use figma_edit_component_property to update the property name in the Figma component. This keeps the Figma component's exposed properties in sync with the code API.

Workflow:

  1. Generate the code-side codemods and tests (Steps 1–5) first
  2. Present the full migration plan, including which Figma variables or properties will be renamed
  3. Ask the user to confirm before applying Figma changes: "This migration will rename [n] tokens in code and [n] matching Figma variables. Apply both?"
  4. Apply Figma renames
  5. Verify by reading back the renamed variables
  6. Note any Figma-side changes in the MIGRATION.md documentation alongside the code changes

When the standard Figma MCP is connected (read-only): The code-side codemods work normally. Include a section in MIGRATION.md listing the Figma variables that need to be renamed manually, with old name → new name mapping.


Quality checks

  • Every codemod has a test file with the cases that apply to its type (all eight for prop and component codemods; the reduced set for renames), and token renames test a template-literal input
  • Every codemod includes a dry-run command with the same --extensions and --parser flags as the apply command
  • Tests and a dry run were executed and their results reported, or the output says "untested"
  • MIGRATION.md includes a Rollback section, naming any steps git revert won't undo
  • Every codemod handles untransformable patterns with TODO comments, not incorrect transforms
  • The migration runner enforces correct ordering based on dependencies
  • The MIGRATION.md clearly separates automated from manual steps
  • All generated files include provenance comments
  • The codemod preserves source code formatting (indentation, quotes, semicolons)
  • The transformer returns undefined for files that do not need changes (jscodeshift skips them); tests expect '' from applyTransform for that case
  • Test cases cover: basic, no-op, multiple occurrences, dynamic values, spread props, conditional rendering, aliased imports, and untransformable patterns
  • The CSS/Sass transform handles both custom properties (--token-name) and Sass variables ($token-name)
  • If Figma variables were renamed, each rename was verified by reading back the variable

© murphytrueman, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/codemod-generator of murphytrueman/design-system-ops.

Open the folder on GitHubat commit f167898

Compare with similar skills

Codemod Generator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Codemod Generator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Codemod Generator this skillmurphytrueman/design-system-ops201—~4.9kAutomated safety check: PassMIT
Lint Fixgetsentry/sentry45k—~1kAutomated safety check: PassCustom licence
AngularJS to Angular Migrationwshobson/agents40k10 repos~1.8kAutomated safety check: PassMIT
Scaffold Nextjsmblode/agent-skills142—~2.8kAutomated safety check: PassMIT
Convert Internal Package to TypeScriptTryGhost/Ghost55k—~1.2kAutomated safety check: PassMIT
jscpd Code Migration Trackerkucherenko/jscpd6.3k—~5kAutomated safety check: PassMIT

Similar skills

  • Lint Fix

    getsentry/sentry

    Official

    Fix violations of an eslintPluginScraps rule across the codebase.

    45k GitHub stars~1k tokensUpdated today
    DevelopmentAuto-check passed
  • Guides migrating AngularJS 1.x apps to modern Angular: choosing a strategy, running a hybrid app with ngUpgrade, and converting controllers, directives and services.

    40k GitHub starsUsed in 10 repos~1.8k tokens
    DevelopmentAuto-check passed
  • Scaffold Nextjs

    mblode/agent-skills

    Scaffolds a Next.js turborepo with Blode UI, icons, Ultracite (oxlint/shadcn), workspace hooks, and GitHub/Vercel setup.

    142 GitHub stars~2.8k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Moves a legacy internal Ghost package from JavaScript and CommonJS to TypeScript and ESM in three focused commits that keep git file history intact.

    55k GitHub stars~1.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Measures a code port between languages or frameworks with jscpd's function-level comparison, porting tests before code and tracking what is left unmatched.

    6.3k GitHub stars~5k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Svelte5 Best Practices

    SikandarJODD/cnblocks

    Svelte 5 runes, snippets, SvelteKit patterns, and modern best practices for TypeScript and component development.

    430 GitHub starsUsed in 1 repo~810 tokens
    DevelopmentAuto-check passed

More from murphytrueman/design-system-ops

All 36 skills in this repo
  • Agent Instructions

    murphytrueman/design-system-ops

    Write the AGENTS.md that tells coding agents how to use this design system: where things live, sourced rules, how to check work, what not to do; Claude, Cursor or Copilot pointers on request.

    201 GitHub stars~2.3k tokensUpdated 13 days ago
    Auto-check passed
  • AI Component Description

    murphytrueman/design-system-ops

    Write a six-section prose description (purpose, props, anti-patterns, composition, accessibility, examples) for a Figma component's description field so LLMs read it via MCP.

    201 GitHub stars~4.7k tokensUpdated 13 days ago
    Auto-check passed
  • Change Communication

    murphytrueman/design-system-ops

    Write release notes, a migration guide and a team announcement for a design system change that is already decided, scaled to its impact.

    201 GitHub stars~3.4k tokensUpdated 13 days ago
    Auto-check passed
  • Codebase Index

    murphytrueman/design-system-ops

    Generate machine-readable index files in .ai/index/ (component inventory, uses/usedBy graph, stats) for AI agents.

    201 GitHub stars~4.7k tokensUpdated 13 days ago
    Auto-check passed
  • Component API Validator

    murphytrueman/design-system-ops

    Audit prop APIs across a component library: naming consistency, boolean/default patterns, type coverage, exported types, breaking changes between versions.

    201 GitHub stars~4.3k tokensUpdated 13 days ago
    Auto-check passed
  • Component Decision Tree

    murphytrueman/design-system-ops

    Write "choosing between" pages (docs/choosing/) that route an intent to the right component via narrowing questions; YAML trees on request.

    201 GitHub stars~4.9k tokensUpdated 13 days ago
    Auto-check passed

Works with

Questions about Codemod Generator

What does Codemod Generator do?

Generate tested jscodeshift/postcss codemods for design system migrations: token renames, prop renames or removals, import paths, component swaps. Codemod Generator is an agent skill from murphytrueman/design-system-ops. Generate tested jscodeshift/postcss codemods for design system migrations: token renames, prop renames or removals, import paths, component swaps.

When should I use Codemod Generator?

Codemod Generator fits situations like: tasks that involve Code migrations; tasks that involve Design systems.

How do I install Codemod Generator in Claude Code?

Run `npx skills add murphytrueman/design-system-ops --skill codemod-generator -a claude-code`. Or copy the skill folder (skills/codemod-generator in murphytrueman/design-system-ops) into .claude/skills/codemod-generator in your project. Claude Code loads it when a task matches its description.

How do I install Codemod Generator in Codex?

Run `npx skills add murphytrueman/design-system-ops --skill codemod-generator -a codex`. Or copy the skill folder (skills/codemod-generator in murphytrueman/design-system-ops) into .agents/skills/codemod-generator in your project. Codex loads it when a task matches its description.

Can I use Codemod Generator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add murphytrueman/design-system-ops --skill codemod-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/codemod-generator, .gemini/skills/codemod-generator, .github/skills/codemod-generator and .opencode/skills/codemod-generator in your project.

What does Codemod Generator need to run?

Going by SKILL.md and its folder, Codemod Generator needs the command-line tools its instructions call (npx and git). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Write, Grep, Glob, Bash(cat:*), Bash(find:*), Bash(head:*), Bash(ls:*), Bash(node:*), Bash(sort:*), Bash(tail:*), Bash(wc:*), Bash(npx tsc:*), Bash(npx jscodeshift:*), Bash(npx jest:*), Bash(npx vitest:*).

Does Codemod Generator access the network?

SKILL.md contains no URLs. Its commands use npx and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Codemod Generator safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Codemod Generator use?

Codemod Generator is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Codemod Generator use?

About 4.9k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Codemod Generator?

Skills that share tags, products or a category with Codemod Generator: Lint Fix (getsentry/sentry, 45k stars), AngularJS to Angular Migration (wshobson/agents, 40k stars), Scaffold Nextjs (mblode/agent-skills, 142 stars) and Convert Internal Package to TypeScript (TryGhost/Ghost, 55k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Codemod Generator?

murphytrueman (a GitHub user) maintains it in murphytrueman/design-system-ops, which has 201 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on September 24, 2026.

Source: murphytrueman/design-system-ops on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.