Agent skill

Typescript Tooling Migration

by Arize-ai in Arize-ai/phoenix

Migrate or upgrade TypeScript tooling in the Phoenix monorepo.

Apache-2.0Auto-check passedDevelopment

Install Typescript Tooling Migration

skills CLI
$ npx skills add Arize-ai/phoenix --skill typescript-tooling-migration -a claude-code

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

GitHub CLI
$ gh skill install Arize-ai/phoenix typescript-tooling-migration --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/Arize-ai/phoenix.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/typescript-tooling-migration .claude/skills/typescript-tooling-migration && 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
typescript-tooling-migration
GitHub stars
12k
Token cost
~2.8k tokens
SKILL.md length
1,024 words
Files
1
Skills in repo
39
Repo updated
First seen
Licence
Apache-2.0

At a glance

Migrate or upgrade TypeScript tooling in the Phoenix monorepo.

  • Works in 12 steps: Research and Planning → Create a Migration Branch → Install/Upgrade Dependencies → …
  • Upgrading TypeScript versions
  • SKILL.md covers Monorepo Structure, Migration Types, Migration Workflow and Key Principles, plus 1 more section
  • Calls pnpm and git

What it does

Typescript Tooling Migration is an agent skill from Arize-ai/phoenix. Migrate or upgrade TypeScript tooling in the Phoenix monorepo. Use when upgrading TypeScript versions, switching tools (ESLint to oxlint, Prettier to oxfmt), upgrading bundlers (Vite, esbuild), or making major dependency upgrades. Triggers on requests to migrate, upgrade, or replace TypeScript/JavaScript tooling.

Its SKILL.md is about 2.8k 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 Linting and formatting, Monorepo tooling and LLM observability. It works with TypeScript, ESLint, Vite and Prettier. The repository describes itself as: AI Observability & Evaluation. The licence is Apache-2.0.

When your agent uses it

  • Upgrading TypeScript versions
  • Switching tools (ESLint to oxlint
  • Prettier to oxfmt)
  • Upgrading bundlers (Vite

Example prompts

  • “/typescript-tooling-migration”

Requirements

  • Docker

Workflow steps

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

  1. Research and Planning
  2. Create a Migration Branch
  3. Install/Upgrade Dependencies
  4. Update Configuration
  5. Fix Breaking Changes
  6. Update Package Scripts
  7. Update Pre-commit Hooks
  8. Update Editor Settings
  9. Remove Old Tool (for replacements)
  10. Test and Verify
  11. Update Documentation
  12. Keep Shared Tool Versions Aligned

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm
    • git

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

  • Network

    Links to these hosts (documentation or services it may open):

    • oxc.rs
    • typescriptlang.org
    • react.dev
    • vite.dev
    • pnpm.io

    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

Typescript Tooling Migration loads about 2.8k tokens when it runs. Until then it costs about 86 tokens; SKILL.md has 1,024 words of instructions outside code blocks.

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

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 Arize-ai/phoenix at commit 856100b, republished under its Apache-2.0 licence (© Arize-ai). 1,024 words, ~2,799 tokens.

Download SKILL.mdSave it as .claude/skills/typescript-tooling-migration/SKILL.md (or your agent's skills folder).
name
typescript-tooling-migration
description
Migrate or upgrade TypeScript tooling in the Phoenix monorepo. Use when upgrading TypeScript versions, switching tools (ESLint to oxlint, Prettier to oxfmt), upgrading bundlers (Vite, esbuild), or making major dependency upgrades. Triggers on requests to migrate, upgrade, or replace TypeScript/JavaScript tooling.
license
Apache-2.0
metadata.author
oss@arize.com
metadata.version
1.0.0
metadata.languages
TypeScript
metadata.internal
true

TypeScript Tooling Migration

Guide for migrating or upgrading TypeScript tooling in the Phoenix monorepo. This skill covers upgrading core dependencies (TypeScript, React), switching tools (linters, formatters, bundlers), and managing breaking changes across js/app/ and js/ directories.

Monorepo Structure

All TypeScript code lives in a single pnpm workspace rooted at js/:

DirectoryPurpose
js/app/React/TypeScript frontend (main Phoenix UI, workspace package phoenix-ui)
js/packages/*Publishable TypeScript packages (phoenix-client, phoenix-evals, etc.)
js/Workspace root: single pnpm-lock.yaml, pnpm-workspace.yaml, .pnpmfile.cjs
Shared Dependencies

Shared tooling versions are managed at the workspace root where possible:

ToolConfig Location
pnpmjs/package.json → packageManager
TypeScriptpackage.json → devDependencies (keep js/app and js root aligned)
oxlintpackage.json → devDependencies (keep js/app and js root aligned)
oxfmtpackage.json → devDependencies (keep js/app and js root aligned)
Config File Locations
ConfigLocationPurpose
.oxlintrc.jsonRoot + js/app/ + js/Linter config (nested inheritance)
.oxfmtrc.jsoncRootFormatter config (shared)
tsconfig.jsonjs/app/ and js/ packagesTypeScript config
vite.config.tsjs/app/Build/dev server config
relay.config.jsjs/app/GraphQL/Relay config

Migration Types

Type 1: Tool Replacement (e.g., ESLint → oxlint)

Complete replacement of one tool with another.

Workflow:

  1. Research new tool's migration guide
  2. Install new tool alongside old
  3. Create new config, verify it works
  4. Update package scripts
  5. Update pre-commit hooks
  6. Remove old tool and config
  7. Update documentation
Type 2: Major Version Upgrade (e.g., TypeScript 5 → 6)

Upgrading a tool to a new major version with breaking changes.

Workflow:

  1. Read changelog/migration guide for breaking changes
  2. Check compatibility of dependent packages
  3. Upgrade in a branch, fix breaking changes
  4. Run full test suite
  5. Update any deprecated config options
  6. Update documentation if APIs changed
Type 3: Dependency Upgrade (e.g., React 18 → 19)

Upgrading a core dependency that affects application code.

Workflow:

  1. Check compatibility matrix (React + React DOM + types)
  2. Review breaking changes and new features
  3. Upgrade dependencies together
  4. Fix breaking changes in application code
  5. Update any deprecated patterns
  6. Run E2E tests to verify functionality

Migration Workflow

Phase 1: Research and Planning
  1. Read official migration guides - Most tools publish upgrade guides
  2. Check GitHub issues - Look for known migration problems
  3. Identify scope:
    • Which directories affected (js/app/, js/, or both)
    • What config files need changes
    • What dependencies to add/remove/upgrade
    • What code changes are required
  4. Review current configs - Understand existing setup before changing
  5. Check dependent packages - Ensure compatibility across the dependency tree
Phase 2: Create a Migration Branch
bash
git checkout -b chore/migrate-<tool>-to-<version>
# or
git checkout -b chore/upgrade-<tool>-<version>
Phase 3: Install/Upgrade Dependencies
bash
# For js/app/ (the app workspace package)
cd js/app && pnpm add -D <package>@<version>

# For js/ (workspace root)
cd js && pnpm add -D -w <package>@<version>

# For upgrading existing dependencies
cd js/app && pnpm update <package>@<version>

Tip: Keep old tool installed until migration is verified for tool replacements.

Phase 4: Update Configuration
For tool replacements - create new config:

Phoenix uses nested configs with inheritance where possible:

phoenix/
├── .<tool>rc.json           # Shared base config
├── js/app/
│   └── .<tool>rc.json       # Extends base, adds React-specific options
└── js/
    └── .<tool>rc.json       # Extends base, adds Node-specific options

Config inheritance pattern:

json
{
  "$schema": "./node_modules/<tool>/configuration_schema.json",
  "extends": ["../.<tool>rc.json"]
}
For version upgrades - update existing config:
  1. Check for deprecated options in the changelog
  2. Update or remove deprecated settings
  3. Add any new required settings
Phase 5: Fix Breaking Changes
Code changes:
  • Fix type errors from stricter checks
  • Update deprecated API usage
  • Adapt to new syntax requirements
Config changes:
  • Update deprecated config options
  • Adjust for changed defaults

Tip: Use the tool's own CLI to identify issues:

bash
pnpm run typecheck  # TypeScript errors
pnpm run lint       # Linter errors
pnpm run build      # Build errors
Phase 6: Update Package Scripts

Update both js/app/package.json and js/package.json if script invocations changed:

json
{
  "scripts": {
    "lint": "<new-command>",
    "typecheck": "<new-command>"
  }
}
Phase 7: Update Pre-commit Hooks

Edit .pre-commit-config.yaml if the tool is used in pre-commit:

  1. Remove old tool's hook (for replacements)
  2. Update or add new hook:
yaml
- id: <tool>-app
  name: <tool> (app)
  entry: pnpm --dir js/app run <script>
  language: system
  files: ^js/app/.*\.[jt]sx?$
  pass_filenames: false
- id: <tool>-js
  name: <tool> (js)
  entry: pnpm --dir js run <script>
  language: system
  files: ^js/.*\.[jt]sx?$
  pass_filenames: false
Phase 8: Update Editor Settings
  1. Update .vscode/extensions.json if extensions changed
  2. Document any path/binary settings in DEVELOPMENT.md:
json
{
  "<extension>.path.<binary>": "js/app/node_modules/<package>/bin/<binary>"
}

Note: .vscode/settings.json is gitignored - document settings in DEVELOPMENT.md.

Phase 9: Remove Old Tool (for replacements)
bash
# Remove old dependencies
cd js/app && pnpm remove <old-tool> <old-plugins>
cd js && pnpm remove -w <old-tool> <old-plugins>

# Delete old config files
rm js/app/<old-config> js/<old-config>
Phase 10: Test and Verify
bash
# Type checking
cd js/app && pnpm run typecheck
cd js && pnpm run typecheck

# Linting
cd js/app && pnpm run lint
cd js && pnpm run lint

# Formatting
cd js/app && pnpm run fmt:check
cd js && pnpm run fmt:check

# Unit tests
cd js/app && pnpm test
cd js && pnpm run -r test

# Build
cd js/app && pnpm run build
cd js && pnpm run -r build

# E2E tests (for significant changes)
cd js/app && pnpm run test:e2e

# Pre-commit hooks
pre-commit run --all-files
Phase 11: Update Documentation

Files to check and update:

FileWhat to update
AGENTS.mdTool versions, commands, style conventions
DEVELOPMENT.mdSetup instructions, VS Code settings
js/app/README.mdTool references, test commands
.cursor/rules/typescript-packages/RULE.mdCommands, workflow instructions
.claude/settings.jsonPostToolUse hooks
CHANGELOG.mdNote significant tooling changes
Show full SKILL.md (401 more words)Show less
Phase 12: Keep Shared Tool Versions Aligned

The app (js/app/package.json) and the workspace root (js/package.json) both declare shared tooling (typescript, oxlint, oxfmt). Keep those versions aligned when upgrading — the single lockfile makes drift visible in review.

Key Principles

Keep Packages in Sync

When upgrading shared tooling, upgrade js/app/ and the js/ workspace root together. Version drift causes subtle bugs and CI failures.

Performance Matters
  • Measure before/after for build times, lint times, test times
  • Some compatibility layers (like JS plugins for linters) add significant overhead
  • Prefer native implementations over compatibility shims
Backwards Compatibility
  • Many tools support legacy config formats (e.g., oxlint supports eslint-disable comments)
  • Don't mass-update working code unless there's a clear benefit
  • Deprecation warnings are informational - fix them but don't block on them
Config Location Strategy
ScenarioApproach
Identical config for both dirsSingle root config
Shared base + dir-specific overridesRoot config + nested configs with extends
Completely different configs per dirSeparate configs (no inheritance)
Out of Scope Directories

These directories have their own tooling and should NOT be included in migrations:

  • scripts/docker/devops/oidc-server/ - Separate OIDC test server
  • scripts/mock-llm-server/ - Separate mock server
  • internal_docs/ - Internal documentation utilities

Troubleshooting

TypeScript Upgrade Issues

Stricter type checking: New TypeScript versions often add stricter checks. Fix errors by:

  1. Adding explicit type annotations
  2. Using type assertions where appropriate
  3. Updating tsconfig.json to temporarily relax checks if needed

Dependency type mismatches: Ensure @types/* packages are compatible with the new TS version.

Build Failures After Upgrade
  1. Clear caches: rm -rf node_modules/.cache js/app/dist js/**/dist
  2. Reinstall: pnpm install
  3. Rebuild: pnpm run build
Config Not Found
  • Check $schema path is relative to the config file location
  • For nested configs, verify extends path (e.g., "../.toolrc.json")
Editor Not Using Updated Tool
  1. Ensure extension is up to date
  2. Set explicit binary path in VS Code settings
  3. Reload VS Code window (Cmd+Shift+P → "Reload Window")
Pre-commit Hook Fails
  • Run pnpm install in both directories
  • Verify script name in package.json matches hook entry
  • Test script manually: pnpm --dir js/app run <script>
CI Fails But Local Passes
  • Check Node version matches CI (see .nvmrc)
  • Ensure lockfile is committed (pnpm-lock.yaml)
  • Run with --frozen-lockfile locally to match CI behavior

CI Workflows

Relevant CI files for TypeScript tooling:

WorkflowPurpose
.github/workflows/typescript-CI.ymlWhole js/ workspace (app + packages): build, typecheck, fmt, lint, codegen drift, test
.github/workflows/playwright.yamlE2E tests

References

General
Current Tools

© Arize-ai, Apache-2.0. 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 .agents/skills/typescript-tooling-migration of Arize-ai/phoenix.

Open the folder on GitHubat commit 856100b

Compare with similar skills

Typescript Tooling Migration 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.

Typescript Tooling Migration compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Typescript Tooling Migration this skillArize-ai/phoenix12k—~2.8kAutomated safety check: PassApache-2.0
AntfuJetBrains/skills3644 repos~1kAutomated safety check: PassNone
Ultraciteagustinusnathaniel/nextarter-tailwind1252 repos~1.2kAutomated safety check: PassMIT
Code Qualityredis/RedisInsight8.9k—~1.2kAutomated safety check: PassCustom licence
Monorepoavibebuilder/claude-prime120—~1.2kAutomated safety check: PassMIT
Ultracitesecondsky/claude-skills227—~6.5kAutomated safety check: PassMIT

Similar skills

  • Antfu

    JetBrains/skills

    Official

    Anthony Fu's opinionated tooling and conventions for JavaScript/TypeScript projects.

    364 GitHub starsUsed in 4 repos~1k tokens
    DevelopmentAuto-check passed
  • Ultracite

    agustinusnathaniel/nextarter-tailwind

    Ultracite is a zero-config linting and formatting preset for JavaScript/TypeScript projects.

    125 GitHub starsUsed in 2 repos~1.2k tokens
    DevelopmentAuto-check passed
  • Code Quality

    redis/RedisInsight

    Official

    Code-quality standards for RedisInsight: TypeScript strictness, naming conventions (camelCase, PascalCase, UPPERSNAKECASE), linting rules, no any without reason, no !important in styles, and…

    8.9k GitHub stars~1.2k tokensUpdated 3 days ago
    DevelopmentAuto-check passed
  • Monorepo

    avibebuilder/claude-prime

    MUST use for ANY query mentioning packages, monorepo, workspace, catalog, turbo, turborepo, or pnpm in a multi-package context.

    120 GitHub stars~1.2k tokensUpdated 4 mo ago
    DevelopmentAuto-check passed
  • Ultracite

    secondsky/claude-skills

    Ultracite multi-provider linting/formatting (Biome, ESLint, Oxlint).

    227 GitHub stars~6.5k tokensUpdated 10 days ago
    DevelopmentAuto-check passed
  • Eslint

    managedcode/dotnet-skills

    Use ESLint in .NET repositories that ship JavaScript, TypeScript, React, or other Node-based frontend assets.

    486 GitHub stars~1.5k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from Arize-ai/phoenix

All 39 skills in this repo
  • Harbor Exec

    Arize-ai/phoenix

    A skill your agent uses when working with Harbor's harbor exec CLI workflow: compiling files, directories, or globs into Harbor tasks; running map jobs; configuring artifacts and existence-only…

    12k GitHub stars~909 tokensUpdated today
    Auto-check passed
  • Mintlify

    Arize-ai/phoenix

    Build and maintain documentation sites with Mintlify. An agent skill from Arize-ai/phoenix.

    12k GitHub starsUsed in 8 repos~3.4k tokens
    Auto-check passed
  • Phoenix Frontend

    Arize-ai/phoenix

    Frontend development guidelines for the Phoenix AI observability platform.

    12k GitHub stars~709 tokensUpdated today
    Auto-check passed
  • Phoenix Graphql

    Arize-ai/phoenix

    Write efficient GraphQL queries against the Phoenix API. An agent skill from Arize-ai/phoenix.

    12k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Phoenix Server

    Arize-ai/phoenix

    Backend development guide for the Phoenix AI observability platform (Strawberry GraphQL, SQLAlchemy async, FastAPI).

    12k GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Phoenix Storybook

    Arize-ai/phoenix

    Conventions for creating, modifying, and reviewing production-faithful Storybook stories in the Phoenix frontend (js/app/stories, js/app/.storybook).

    12k GitHub stars~1.9k tokensUpdated today
    Auto-check passed

Categories

Questions about Typescript Tooling Migration

What does Typescript Tooling Migration do?

Migrate or upgrade TypeScript tooling in the Phoenix monorepo. Typescript Tooling Migration is an agent skill from Arize-ai/phoenix. Migrate or upgrade TypeScript tooling in the Phoenix monorepo.

When should I use Typescript Tooling Migration?

Typescript Tooling Migration fits situations like: upgrading TypeScript versions; switching tools (ESLint to oxlint; prettier to oxfmt); upgrading bundlers (Vite.

How do I install Typescript Tooling Migration in Claude Code?

Run `npx skills add Arize-ai/phoenix --skill typescript-tooling-migration -a claude-code`. Or copy the skill folder (.agents/skills/typescript-tooling-migration in Arize-ai/phoenix) into .claude/skills/typescript-tooling-migration in your project. Claude Code loads it when a task matches its description.

How do I install Typescript Tooling Migration in Codex?

Run `npx skills add Arize-ai/phoenix --skill typescript-tooling-migration -a codex`. Or copy the skill folder (.agents/skills/typescript-tooling-migration in Arize-ai/phoenix) into .agents/skills/typescript-tooling-migration in your project. Codex loads it when a task matches its description.

Can I use Typescript Tooling Migration 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 Arize-ai/phoenix --skill typescript-tooling-migration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/typescript-tooling-migration, .gemini/skills/typescript-tooling-migration, .github/skills/typescript-tooling-migration and .opencode/skills/typescript-tooling-migration in your project.

What does Typescript Tooling Migration need to run?

Going by SKILL.md and its folder, Typescript Tooling Migration needs the command-line tools its instructions call (pnpm and git). Our summary lists: Docker.

Does Typescript Tooling Migration access the network?

SKILL.md names 5 domains. As links in the text: oxc.rs, typescriptlang.org, react.dev, vite.dev and pnpm.io. This is read from the text; nothing was executed.

Is Typescript Tooling Migration 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 Typescript Tooling Migration use?

Typescript Tooling Migration is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Typescript Tooling Migration use?

About 2.8k tokens (SKILL.md is roughly 11k 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 Typescript Tooling Migration?

Skills that share tags, products or a category with Typescript Tooling Migration: Antfu (JetBrains/skills, 364 stars), Ultracite (agustinusnathaniel/nextarter-tailwind, 125 stars), Code Quality (redis/RedisInsight, 8.9k stars) and Monorepo (avibebuilder/claude-prime, 120 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Typescript Tooling Migration?

Arize-ai (a GitHub organization) maintains it in Arize-ai/phoenix, which has 11,744 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 8, 2026.

Source: Arize-ai/phoenix on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.