Claude Code Skill
Tern ships a Claude Code skill that gives your agent access to Tern’s backend. When you describe a large change, the agent builds a migration spreadsheet on app.tern.sh instead of writing a markdown plan.
A markdown plan is a file on your laptop. A Tern spreadsheet is a URL you can hand to a teammate, revisit next week, or use as the starting point for the next agent session. The skill lets you stay in Claude Code while building something that sticks around.
The skill is installed by tern init alongside the CLI.
When It Activates
The skill activates on phrases like “migrate,” “upgrade,” “deprecate,” “move from X to Y,” or scoping questions like “what would it take to change Y?”
You can also invoke it directly:
/tern Migrate from Enzyme to React Testing LibraryWhat the Agent Builds
You talk to Claude Code normally. The agent calls Tern tools behind the scenes and builds out a spreadsheet:
Inventory. Searches your codebase for affected files. Results are AI-evaluated; the agent figures out which hits actually need work.
Classification. Adds columns to the spreadsheet. Deterministic columns run scripts (instant, no AI cost). AI columns read files and make judgment calls. A typical action column: migrate, rewrite, delete, skip.
Grouping. Organizes files into PR-sized chunks: by area, by change type, by owning team.
Tasks. Describes how to do each type of change: before/after examples, gotchas, validation commands.
PRs. Attaches PR definitions to groups. Templates generate one per group.
The output is a URL to a spreadsheet on app.tern.sh. Everything the agent learned is there, not in your chat history.
Resuming
New sessions pick up existing migrations automatically via .tern/context.json.
Discovering Tools
The skill exposes more tools than the core workflow. The agent can discover them at runtime:
tern tool list # list all tools
tern tool describe add_column --with-schema # full schemaReference
- Migrations - how execution works from the spreadsheet and from Claude Code
- Search Syntax - how queries in
add_rowswork - Task Instructions - the format inside tasks
- SDK Reference - writing deterministic column scripts
