jscpd Code Migration Tracker
kucherenko/jscpd
Measures a code port between languages or frameworks with jscpd's function-level comparison, porting tests before code and tracking what is left unmatched.
Upgrade Sentry SDK versions and migrate breaking API changes.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill sentry-upgrade-migration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace sentry-upgrade-migration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/.curated/sentry-upgrade-migration .claude/skills/sentry-upgrade-migration && rm -rf skills-srcUse ~/.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/
Install the "sentry-upgrade-migration" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/sentry-upgrade-migration into .claude/skills/sentry-upgrade-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sentry-upgrade-migration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/sentry-upgrade-migrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill sentry-upgrade-migration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace sentry-upgrade-migration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/.curated/sentry-upgrade-migration .agents/skills/sentry-upgrade-migration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sentry-upgrade-migration" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/sentry-upgrade-migration into .agents/skills/sentry-upgrade-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sentry-upgrade-migration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill sentry-upgrade-migration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace sentry-upgrade-migration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/.curated/sentry-upgrade-migration .cursor/skills/sentry-upgrade-migration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sentry-upgrade-migration" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/sentry-upgrade-migration into .cursor/skills/sentry-upgrade-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sentry-upgrade-migration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jeremylongshore/tons-of-skills-marketplace.git --path skills/.curated/sentry-upgrade-migration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill sentry-upgrade-migration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace sentry-upgrade-migration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/.curated/sentry-upgrade-migration .gemini/skills/sentry-upgrade-migration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sentry-upgrade-migration" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/sentry-upgrade-migration into .gemini/skills/sentry-upgrade-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sentry-upgrade-migration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jeremylongshore/tons-of-skills-marketplace sentry-upgrade-migrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill sentry-upgrade-migration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/.curated/sentry-upgrade-migration .github/skills/sentry-upgrade-migration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sentry-upgrade-migration" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/sentry-upgrade-migration into .github/skills/sentry-upgrade-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sentry-upgrade-migration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jeremylongshore/tons-of-skills-marketplace --skill sentry-upgrade-migration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jeremylongshore/tons-of-skills-marketplace sentry-upgrade-migration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jeremylongshore/tons-of-skills-marketplace.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/.curated/sentry-upgrade-migration .opencode/skills/sentry-upgrade-migration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sentry-upgrade-migration" agent skill from https://github.com/jeremylongshore/tons-of-skills-marketplace/tree/main/skills/.curated/sentry-upgrade-migration into .opencode/skills/sentry-upgrade-migration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sentry-upgrade-migration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sentry-upgrade-migrationUpgrade Sentry SDK versions and migrate breaking API changes.
Sentry Upgrade Migration is an agent skill from jeremylongshore/tons-of-skills-marketplace. Upgrade Sentry SDK versions and migrate breaking API changes. Use when upgrading from Sentry v7 to v8, migrating Python SDK v1 to v2, replacing deprecated Hub/Transaction APIs, or running the migr8 codemod. Trigger: "upgrade sentry", "sentry migration", "sentry breaking changes", "migrate sentry v7 to v8", "update sentry sdk".
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/errors.md`, `references/examples.md` and `references/major-version-migrations.md`). Compatibility notes: Designed for Claude Code
It sits in Development, covering Code migrations. It works with Sentry and Python. The repository describes itself as: Model-agnostic agent-skills platform with a harness-free canonical layer, verified adapters, and the ccpi package manager. Explore at tonsofskills.com. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cfae287. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBash(npm:*)Bash(npx:*)Bash(pip:*)Bash(node:*)GrepGlobFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmpipnpxnodenvmpythonFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.sentry.iogithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Designed for Claude Code
From compatibility in the SKILL.md frontmatter.
Sentry Upgrade Migration loads about 3.7k tokens when it runs, and up to ~8.5k if it reads all its reference files. Until then it costs about 88 tokens; SKILL.md has 722 words of instructions outside code blocks.
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.
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.
The full file from jeremylongshore/tons-of-skills-marketplace at commit cfae287, republished under its MIT licence (© jeremylongshore). 722 words, ~3,721 tokens.
.claude/skills/sentry-upgrade-migration/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Detect installed Sentry SDK versions, identify breaking API changes, apply automated codemods, and verify the upgrade succeeds with test events and traces.
!npm list 2>/dev/null | command grep @sentry || echo 'No npm Sentry packages found'
!pip show sentry-sdk 2>/dev/null | command grep -E '^(Name|Version)' || echo 'No Python sentry-sdk found'
!node --version 2>/dev/null || echo 'Node.js not available'
Sentry SDK upgrades require careful handling of breaking API changes. The v7 to v8 JavaScript migration is the most impactful, removing the Hub pattern, replacing Transaction/Span APIs with startSpan(), converting class-based integrations to functions, and requiring ESM-first initialization. Python SDK v1 to v2 similarly replaces configure_scope() with get_current_scope(). This skill automates version detection, runs the official @sentry/migr8 codemod, applies manual fixes for patterns the codemod misses, and validates the upgrade with test events.
@sentry/* packages at the same major version before starting# JavaScript: list all Sentry packages and their versions
npm ls 2>/dev/null | command grep "@sentry/"
# Python: check installed version
pip show sentry-sdk 2>/dev/null
# Verify all @sentry/* packages are the same major version (critical!)
# Mixed versions cause runtime crashes
npm ls @sentry/core @sentry/node @sentry/browser @sentry/utils 2>/dev/nullScan the codebase for deprecated patterns that need migration:
# Detect v7 Hub usage (removed in v8)
command grep -rn "getCurrentHub\|configureScope\|hub\.capture" src/ --include="*.ts" --include="*.js"
# Detect v7 Transaction API (replaced in v8)
command grep -rn "startTransaction\|\.startChild\|\.finish()" src/ --include="*.ts" --include="*.js"
# Detect class-based integrations (replaced in v8)
command grep -rn "new Sentry\.\|new BrowserTracing\|new Integrations\." src/ --include="*.ts" --include="*.js"
# Detect @sentry/tracing imports (package removed in v8)
command grep -rn "from '@sentry/tracing'" src/ --include="*.ts" --include="*.js"
# Python: detect v1 scope API (replaced in v2)
command grep -rn "configure_scope\|push_scope" src/ --include="*.py"# First upgrade to latest v7 to get deprecation warnings
npm install @sentry/node@7
# Run the official migr8 codemod — rewrites deprecated APIs automatically
npx @sentry/migr8@latest
# Handles: Hub removal, integration class→function, import path changes
# Does NOT handle: Transaction→startSpan, ESM init pattern, custom transports
# Now upgrade to v8
npm install @sentry/node@8Breaking Change: Transaction/Span API replaced with startSpan()
// v7 (OLD) — manual transaction lifecycle
const transaction = Sentry.startTransaction({ name: 'process', op: 'task' });
const span = transaction.startChild({ op: 'db.query', description: 'SELECT users' });
// ... do work
span.finish();
transaction.finish();
// v8 (NEW) — callback-based, auto-finishes on return
await Sentry.startSpan({ name: 'process', op: 'task' }, async () => {
await Sentry.startSpan({ name: 'SELECT users', op: 'db.query' }, async () => {
// ... do work
}); // span auto-finishes when callback returns
}); // root span auto-finishes when callback returnsBreaking Change: Hub removed, use Scope API
// v7 (OLD)
const hub = Sentry.getCurrentHub();
hub.configureScope((scope) => {
scope.setTag('region', 'us-east-1');
});
const transaction = hub.startTransaction({ name: 'my-tx' });
// v8 (NEW)
Sentry.withScope((scope) => {
scope.setTag('region', 'us-east-1');
});
Sentry.startSpan({ name: 'my-tx', op: 'custom' }, (span) => {
// work within span
});Breaking Change: Integrations are functions, not classes
// v7 (OLD)
import * as Sentry from '@sentry/node';
Sentry.init({
integrations: [new Sentry.Integrations.Http({ tracing: true })],
});
// v8 (NEW) — most integrations are auto-enabled
Sentry.init({
integrations: [
Sentry.httpIntegration({ tracing: true }),
],
});Breaking Change: @sentry/tracing removed
// v7 (OLD)
import { BrowserTracing } from '@sentry/tracing';
Sentry.init({
integrations: [new BrowserTracing()],
});
// v8 (NEW) — built into @sentry/browser and @sentry/node
Sentry.init({
integrations: [
Sentry.browserTracingIntegration(),
],
});Breaking Change: ESM initialization requires separate file
// v7 (OLD) — init at top of entry file
import * as Sentry from '@sentry/node';
Sentry.init({ dsn: '...' });
// ... app code
// v8 (NEW) — must be in separate file, loaded via --import
// instrument.mjs (separate file)
import * as Sentry from '@sentry/node';
Sentry.init({ dsn: '...' });
// Run with: node --import ./instrument.mjs app.mjs
// Or in package.json: "start": "node --import ./instrument.mjs app.mjs"Breaking Change: Custom transport must return response
// v7 (OLD) — send could return void
makeRequest(request) {
sendToBackend(request);
}
// v8 (NEW) — must return TransportMakeRequestResponse
makeRequest(request) {
sendToBackend(request);
return { statusCode: 200 };
}See major-version-migrations.md for v6-to-v7 and Python v1-to-v2 migration details.
# v1 (OLD) — configure_scope / push_scope
import sentry_sdk
with sentry_sdk.configure_scope() as scope:
scope.set_tag("key", "value")
with sentry_sdk.push_scope() as scope:
scope.set_extra("debug_info", data)
sentry_sdk.capture_message("scoped message")
# v2 (NEW) — get_current_scope / new_scope
import sentry_sdk
scope = sentry_sdk.get_current_scope()
scope.set_tag("key", "value")
with sentry_sdk.new_scope() as scope:
scope.set_extra("debug_info", data)
sentry_sdk.capture_message("scoped message")# Upgrade Python SDK
pip install --upgrade sentry-sdk
# Verify version
python -c "import sentry_sdk; print(sentry_sdk.VERSION)"# All @sentry/* packages MUST be the same major version
# Mixed versions cause "Cannot read properties of undefined" runtime errors
npm install @sentry/node@8 @sentry/browser@8 @sentry/react@8 @sentry/profiling-node@8
# Remove deprecated packages
npm uninstall @sentry/tracing @sentry/hub 2>/dev/null
# Update bundler plugins (must be v2.14.2+ for SDK v8 compatibility)
npm install @sentry/webpack-plugin@latest @sentry/vite-plugin@latest 2>/dev/null// test-migration.mjs — run after upgrading
import * as Sentry from '@sentry/node';
async function verifyUpgrade() {
console.log('SDK Version:', Sentry.SDK_VERSION);
// 1. Test error capture
try {
throw new Error('Migration verification error');
} catch (e) {
const eventId = Sentry.captureException(e);
console.log('Error captured:', eventId ? 'PASS' : 'FAIL');
}
// 2. Test scoped context (v8 API)
Sentry.withScope((scope) => {
scope.setTag('test', 'migration-verify');
scope.setUser({ id: 'test-user' });
Sentry.captureMessage('Scoped context test');
});
console.log('Scoped context: PASS');
// 3. Test performance span (v8 API — replaces startTransaction)
await Sentry.startSpan(
{ name: 'migration-verify', op: 'test' },
async (span) => {
await Sentry.startSpan(
{ name: 'child-operation', op: 'test.child' },
async () => {
await new Promise((r) => setTimeout(r, 50));
}
);
console.log('Span created:', span ? 'PASS' : 'FAIL');
}
);
// 4. Test breadcrumbs
Sentry.addBreadcrumb({
category: 'test',
message: 'Migration breadcrumb',
level: 'info',
});
console.log('Breadcrumb: PASS');
// 5. Flush and verify delivery
const flushed = await Sentry.flush(5000);
console.log('Flush:', flushed ? 'PASS' : 'FAIL');
}
verifyUpgrade();See testing-after-upgrade.md for the full verification checklist.
Sentry.startTransaction is not a function or similar runtime errorssentry-trace header)@sentry/* packages alignedstartSpan(), integrations converted to functionsinstrument.mjs file)@sentry/tracing package removed (functionality built into core packages)| Error | Cause | Solution |
|---|---|---|
Cannot find module '@sentry/hub' | Package removed in v8 | Replace hub imports with @sentry/node scope APIs |
Sentry.startTransaction is not a function | API removed in v8 | Use Sentry.startSpan() callback pattern instead |
new Integrations.X is not a constructor | Classes removed in v8 | Use functional form: Sentry.xIntegration() |
Cannot find module '@sentry/tracing' | Package removed in v8 | Remove import; tracing is built into @sentry/node v8 |
| Mixed version runtime crash | Some @sentry/* at v7, others at v8 | Align all packages: npm install @sentry/node@8 @sentry/browser@8 |
ERR_MODULE_NOT_FOUND on startup | ESM init file missing or wrong path | Create instrument.mjs, run with node --import ./instrument.mjs |
| Source maps not resolving | Bundler plugin version incompatible | Update @sentry/webpack-plugin or @sentry/vite-plugin to v2.14.2+ |
Python AttributeError: configure_scope | API removed in Python SDK v2 | Use sentry_sdk.get_current_scope() instead |
Transport.send must return object | Custom transport missing return | Return { statusCode: 200 } from makeRequest() |
| Node.js version error | SDK v8 requires Node 18.19+ or 20.6+ | Upgrade Node.js: nvm install 20 && nvm use 20 |
See errors.md for additional error patterns.
Example 1: Full v7 to v8 JavaScript Migration
Request: "Upgrade our Express app from Sentry v7 to v8"
# Detect current state
npm ls 2>/dev/null | command grep "@sentry/"
# @sentry/node@7.114.0
# @sentry/tracing@7.114.0
# Run codemod
npx @sentry/migr8@latest
# Upgrade packages
npm install @sentry/node@8
npm uninstall @sentry/tracingBefore (v7 Express setup):
import * as Sentry from '@sentry/node';
import { Integrations } from '@sentry/tracing';
Sentry.init({
dsn: process.env.SENTRY_DSN,
integrations: [new Integrations.Express({ app })],
tracesSampleRate: 0.2,
});
app.use(Sentry.Handlers.requestHandler());
app.use(Sentry.Handlers.tracingHandler());
// ... routes
app.use(Sentry.Handlers.errorHandler());After (v8 Express setup):
// instrument.mjs — must be separate file
import * as Sentry from '@sentry/node';
Sentry.init({
dsn: process.env.SENTRY_DSN,
tracesSampleRate: 0.2,
});
// app.mjs — run with: node --import ./instrument.mjs app.mjs
import express from 'express';
import * as Sentry from '@sentry/node';
const app = express();
// v8: Sentry auto-instruments Express — no manual handlers needed
// Sentry.Handlers.requestHandler() and tracingHandler() are removed
// Error handler replaced with Sentry.setupExpressErrorHandler()
Sentry.setupExpressErrorHandler(app);
app.listen(3000);Result: SDK upgraded to v8.49.0, @sentry/tracing removed, Express auto-instrumented, source maps verified, test error captured in dashboard.
Example 2: Python v1 to v2 Migration
Request: "Upgrade sentry-sdk from 1.x to 2.x in our Flask app"
# Before (v1)
import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration
sentry_sdk.init(
dsn="...",
integrations=[FlaskIntegration()],
)
with sentry_sdk.configure_scope() as scope:
scope.set_tag("deploy", "v2.1")
# After (v2)
import sentry_sdk
from sentry_sdk.integrations.flask import FlaskIntegration
sentry_sdk.init(
dsn="...",
integrations=[FlaskIntegration()],
)
scope = sentry_sdk.get_current_scope()
scope.set_tag("deploy", "v2.1")Result: SDK upgraded to 2.x, configure_scope replaced with get_current_scope, push_scope replaced with new_scope, Flask integration unchanged, test error captured.
© jeremylongshore, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references) in skills/.curated/sentry-upgrade-migration of jeremylongshore/tons-of-skills-marketplace.
Open the folder on GitHubat commit cfae287
Sentry Upgrade 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sentry Upgrade Migration this skilljeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~3.7k | Automated safety check: Pass | MIT | |
| jscpd Code Migration Trackerkucherenko/jscpd | 6.4k | — | ~5k | Automated safety check: Pass | MIT | |
| RustPython Stdlib UpgradeRustPython/RustPython | 22k | — | ~876 | Automated safety check: Pass | MIT | |
| Code Migrationanthropics/code-migration-kit-with-claude-code | 748 | — | ~983 | Automated safety check: Pass | Custom licence | |
| Saleor Port Changessaleor/saleor | 23k | — | ~969 | Automated safety check: Pass | BSD-3-Clause | |
| Ast Grepbanteg/crimson | 186 | — | ~541 | Automated safety check: Pass | None |
kucherenko/jscpd
Measures a code port between languages or frameworks with jscpd's function-level comparison, porting tests before code and tracking what is left unmatched.
RustPython/RustPython
Upgrades a Python standard library module from CPython into RustPython with update_lib, then triages and marks the tests that still fail.
anthropics/code-migration-kit-with-claude-code
Run a large-scale language migration with the six-step process: create the map and the rules, stress-test the rules, translate everything, compile, run it, match behavior.
saleor/saleor
Forward-ports or backports a single PR or branch onto the currently checked-out Saleor branch, handling GraphQL version markers and migration numbering along the way.
banteg/crimson
Use ast-grep for Python structural code exploration, mechanical codemods, and rule maintenance in this repo.
getsentry/skills
Analyze a repository to generate recommended Claude Code settings.json permissions.
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to conduct a security-focused code review using the security-agent plugin.
jeremylongshore/tons-of-skills-marketplace
Build this skill automates the adaptation of pre-trained machine learning models using transfer learning techniques.
jeremylongshore/tons-of-skills-marketplace
Execute proactive auto-loading: automatically detects and loads agents.md files.
jeremylongshore/tons-of-skills-marketplace
Aggregate and centralize performance metrics from applications, systems, databases, caches, and services.
jeremylongshore/tons-of-skills-marketplace
Execute this skill enables AI assistant to analyze capacity requirements and plan for future growth.
jeremylongshore/tons-of-skills-marketplace
Process use when you need to work with database indexing. An agent skill from jeremylongshore/tons-of-skills-marketplace.
Categories
Upgrade Sentry SDK versions and migrate breaking API changes. Sentry Upgrade Migration is an agent skill from jeremylongshore/tons-of-skills-marketplace. Upgrade Sentry SDK versions and migrate breaking API changes.
Sentry Upgrade Migration fits situations like: upgrading from Sentry v7 to v8; migrating Python SDK v1 to v2; replacing deprecated Hub/Transaction APIs; running the migr8 codemod.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill sentry-upgrade-migration -a claude-code`. Or copy the skill folder (skills/.curated/sentry-upgrade-migration in jeremylongshore/tons-of-skills-marketplace) into .claude/skills/sentry-upgrade-migration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill sentry-upgrade-migration -a codex`. Or copy the skill folder (skills/.curated/sentry-upgrade-migration in jeremylongshore/tons-of-skills-marketplace) into .agents/skills/sentry-upgrade-migration in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jeremylongshore/tons-of-skills-marketplace --skill sentry-upgrade-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/sentry-upgrade-migration, .gemini/skills/sentry-upgrade-migration, .github/skills/sentry-upgrade-migration and .opencode/skills/sentry-upgrade-migration in your project.
Going by SKILL.md and its folder, Sentry Upgrade Migration needs the command-line tools its instructions call (npm, pip, npx, node, nvm and python). Our summary lists: Python 3; Node.js. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash(npm:*), Bash(npx:*), Bash(pip:*), Bash(node:*), Grep, Glob. Compatibility (from SKILL.md): Designed for Claude Code.
SKILL.md names 2 domains. As links in the text: docs.sentry.io and github.com. This is read from the text; nothing was executed.
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.
Sentry Upgrade Migration is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Sentry Upgrade Migration: jscpd Code Migration Tracker (kucherenko/jscpd, 6.4k stars), RustPython Stdlib Upgrade (RustPython/RustPython, 22k stars), Code Migration (anthropics/code-migration-kit-with-claude-code, 748 stars) and Saleor Port Changes (saleor/saleor, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jeremylongshore (a GitHub user) maintains it in jeremylongshore/tons-of-skills-marketplace, which has 2,827 GitHub stars. The repository holds 3,342 skills in this directory. The repository was last updated on October 10, 2026.
Source: jeremylongshore/tons-of-skills-marketplace on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.