{"id":"8722d572-f464-43f3-87b6-934e0a16b4b0","shortId":"wYsbmR","kind":"skill","title":"skill-rails-upgrade","tagline":"Analyze Rails apps and provide upgrade assessments","description":"## When to Use This Skill\n\nAnalyze Rails apps and provide upgrade assessments\n\nUse this skill when working with analyze rails apps and provide upgrade assessments.\n# Rails Upgrade Analyzer\n\nAnalyze the current Rails application and provide a comprehensive upgrade assessment with selective file merging.\n\n## Step 1: Verify Rails Application\n\nCheck that we're in a Rails application by looking for these files:\n- `Gemfile` (must exist and contain 'rails')\n- `config/application.rb` (Rails application config)\n- `config/environment.rb` (Rails environment)\n\nIf any of these are missing or don't indicate a Rails app, stop and inform the user this doesn't appear to be a Rails application.\n\n## Step 2: Get Current Rails Version\n\nExtract the current Rails version from:\n1. First, check `Gemfile.lock` for the exact installed version (look for `rails (x.y.z)`)\n2. If not found, check `Gemfile` for the version constraint\n\nReport the exact current version (e.g., `7.1.3`).\n\n## Step 3: Find Latest Rails Version\n\nUse the GitHub CLI to fetch the latest Rails release:\n\n```bash\ngh api repos/rails/rails/releases/latest --jq '.tag_name'\n```\n\nThis returns the latest stable version tag (e.g., `v8.0.1`). Strip the 'v' prefix for comparison.\n\nAlso check recent tags to understand the release landscape:\n\n```bash\ngh api repos/rails/rails/tags --jq '.[0:10] | .[].name'\n```\n\n## Step 4: Determine Upgrade Type\n\nCompare current and latest versions to classify the upgrade:\n\n- **Patch upgrade**: Same major.minor, different patch (e.g., 7.1.3 → 7.1.5)\n- **Minor upgrade**: Same major, different minor (e.g., 7.1.3 → 7.2.0)\n- **Major upgrade**: Different major version (e.g., 7.1.3 → 8.0.0)\n\n## Step 5: Fetch Upgrade Guide\n\nUse WebFetch to get the official Rails upgrade guide:\n\nURL: `https://guides.rubyonrails.org/upgrading_ruby_on_rails.html`\n\nLook for sections relevant to the version jump. The guide is organized by target version with sections like:\n- \"Upgrading from Rails X.Y to Rails X.Z\"\n- Breaking changes\n- Deprecation warnings\n- Configuration changes\n- Required migrations\n\nExtract and summarize the relevant sections for the user's specific upgrade path.\n\n## Step 6: Fetch Rails Diff\n\nUse WebFetch to get the diff between versions from railsdiff.org:\n\nURL: `https://railsdiff.org/{current_version}/{target_version}`\n\nFor example: `https://railsdiff.org/7.1.3/8.0.0`\n\nThis shows:\n- Changes to default configuration files\n- New files that need to be added\n- Modified initializers\n- Updated dependencies\n- Changes to bin/ scripts\n\nSummarize the key file changes.\n\n## Step 7: Check JavaScript Dependencies\n\nRails applications often include JavaScript packages that should be updated alongside Rails. Check for and report on these dependencies.\n\n### 7.1: Identify JS Package Manager\n\nCheck which package manager the app uses:\n\n```bash\n# Check for package.json (npm/yarn)\nls package.json 2>/dev/null\n\n# Check for importmap (Rails 7+)\nls config/importmap.rb 2>/dev/null\n```\n\n### 7.2: Check Rails-Related JS Packages\n\nIf `package.json` exists, check for these Rails-related packages:\n\n```bash\n# Extract current versions of Rails-related packages\ncat package.json | grep -E '\"@hotwired/|\"@rails/|\"stimulus\"|\"turbo-rails\"' || echo \"No Rails JS packages found\"\n```\n\n**Key packages to check:**\n\n| Package | Purpose | Version Alignment |\n|---------|---------|-------------------|\n| `@hotwired/turbo-rails` | Turbo Drive/Frames/Streams | Should match Rails version era |\n| `@hotwired/stimulus` | Stimulus JS framework | Generally stable across Rails versions |\n| `@rails/actioncable` | WebSocket support | Should match Rails version |\n| `@rails/activestorage` | Direct uploads | Should match Rails version |\n| `@rails/actiontext` | Rich text editing | Should match Rails version |\n| `@rails/request.js` | Rails UJS replacement | Should match Rails version era |\n\n### 7.3: Check for Updates\n\nFor npm/yarn projects, check for available updates:\n\n```bash\n# Using npm\nnpm outdated @hotwired/turbo-rails @hotwired/stimulus @rails/actioncable @rails/activestorage 2>/dev/null\n\n# Or check latest versions directly\nnpm view @hotwired/turbo-rails version 2>/dev/null\nnpm view @rails/actioncable version 2>/dev/null\n```\n\n### 7.4: Check Importmap Pins (if applicable)\n\nIf the app uses importmap-rails, check `config/importmap.rb` for pinned versions:\n\n```bash\ncat config/importmap.rb | grep -E 'pin.*turbo|pin.*stimulus|pin.*@rails' || echo \"No importmap pins found\"\n```\n\nTo update importmap pins:\n```bash\nbin/importmap pin @hotwired/turbo-rails\nbin/importmap pin @hotwired/stimulus\n```\n\n### 7.5: JS Dependency Summary\n\nInclude in the upgrade summary:\n\n```\n### JavaScript Dependencies\n\n**Package Manager**: [npm/yarn/importmap/none]\n\n| Package | Current | Latest | Action |\n|---------|---------|--------|--------|\n| @hotwired/turbo-rails | 8.0.4 | 8.0.12 | Update recommended |\n| @rails/actioncable | 7.1.0 | 8.0.0 | Update with Rails |\n| ... | ... | ... | ... |\n\n**Recommended JS Updates:**\n- Run `npm update @hotwired/turbo-rails` (or yarn equivalent)\n- Run `npm update @rails/actioncable @rails/activestorage` to match Rails version\n```\n\n---\n\n## Step 8: Generate Upgrade Summary\n\nProvide a comprehensive summary including all findings from Steps 1-7:\n\n### Version Information\n- Current version: X.Y.Z\n- Latest version: A.B.C\n- Upgrade type: [Patch/Minor/Major]\n\n### Upgrade Complexity Assessment\n\nRate the upgrade as **Small**, **Medium**, or **Large** based on:\n\n| Factor | Small | Medium | Large |\n|--------|-------|--------|-------|\n| Version jump | Patch only | Minor version | Major version |\n| Breaking changes | None | Few, well-documented | Many, significant |\n| Config changes | Minimal | Moderate | Extensive |\n| Deprecations | None active | Some to address | Many requiring refactoring |\n| Dependencies | Compatible | Some updates needed | Major dependency updates |\n\n### Key Changes to Address\n\nList the most important changes the user needs to handle:\n1. Configuration file updates\n2. Deprecated methods/features to update\n3. New required dependencies\n4. Database migrations needed\n5. Breaking API changes\n\n### Recommended Upgrade Steps\n\n1. Update test suite and ensure passing\n2. Review deprecation warnings in current version\n3. Update Gemfile with new Rails version\n4. Run `bundle update rails`\n5. Update JavaScript dependencies (see JS Dependencies section)\n6. **DO NOT run `rails app:update` directly** - use the selective merge process below\n7. Run database migrations\n8. Run test suite\n9. Review and update deprecated code\n\n### Resources\n\n- Rails Upgrade Guide: https://guides.rubyonrails.org/upgrading_ruby_on_rails.html\n- Rails Diff: https://railsdiff.org/{current}/{target}\n- Release Notes: https://github.com/rails/rails/releases/tag/v{target}\n\n---\n\n\n## When to Use This Skill\n\nAnalyze Rails apps and provide upgrade assessments\n\nUse this skill when working with analyze rails apps and provide upgrade assessments.\n## Step 9: Selective File Update (replaces `rails app:update`)\n\n**IMPORTANT:** Do NOT run `rails app:update` as it overwrites files without considering local customizations. Instead, follow this selective merge process:\n\n### 9.1: Detect Local Customizations\n\nBefore any upgrade, identify files with local customizations:\n\n```bash\n# Check for uncommitted changes\ngit status\n\n# List config files that differ from a fresh Rails app\n# These are the files we need to be careful with\ngit diff HEAD --name-only -- config/ bin/ public/\n```\n\nCreate a mental list of files in these categories:\n- **Custom config files**: Files with project-specific settings (i18n, mailer, etc.)\n- **Modified bin scripts**: Scripts with custom behavior (bin/dev with foreman, etc.)\n- **Standard files**: Files that haven't been customized\n\n### 9.2: Analyze Required Changes from Railsdiff\n\nBased on the railsdiff output from Step 6, categorize each changed file:\n\n| Category | Action | Example |\n|----------|--------|---------|\n| **New files** | Create directly | `config/initializers/new_framework_defaults_X_Y.rb` |\n| **Unchanged locally** | Safe to overwrite | `public/404.html` (if not customized) |\n| **Customized locally** | Manual merge needed | `config/application.rb`, `bin/dev` |\n| **Comment-only changes** | Usually skip | Minor comment updates in config files |\n\n### 9.3: Create Upgrade Plan\n\nPresent the user with a clear upgrade plan:\n\n```\n## Upgrade Plan: Rails X.Y.Z → A.B.C\n\n### New Files (will be created):\n- config/initializers/new_framework_defaults_A_B.rb\n- bin/ci (new CI script)\n\n### Safe to Update (no local customizations):\n- public/400.html\n- public/404.html\n- public/500.html\n\n### Needs Manual Merge (local customizations detected):\n- config/application.rb\n  └─ Local: i18n configuration\n  └─ Rails: [describe new Rails changes if any]\n\n- config/environments/development.rb\n  └─ Local: letter_opener mailer config\n  └─ Rails: [describe new Rails changes]\n\n- bin/dev\n  └─ Local: foreman + Procfile.dev setup\n  └─ Rails: changed to simple ruby script\n\n### Skip (comment-only or irrelevant changes):\n- config/puma.rb (only comment changes)\n```\n\n### 9.4: Execute Upgrade Plan\n\nAfter user confirms the plan:\n\n#### For New Files:\nCreate them directly using the content from railsdiff or by extracting from a fresh Rails app:\n\n```bash\n# Generate a temporary fresh Rails app to extract new files\ncd /tmp && rails new rails_template --skip-git --skip-bundle\n# Then copy needed files\n```\n\nOr use the Rails generator for specific files:\n```bash\nbin/rails app:update:configs  # Only updates config files, still interactive\n```\n\n#### For Safe Updates:\nOverwrite these files as they have no local customizations.\n\n#### For Manual Merges:\nFor each file needing merge, show the user:\n\n1. **Current local version** (their customizations)\n2. **New Rails default** (from railsdiff)\n3. **Suggested merged version** that:\n   - Keeps all local customizations\n   - Adds only essential new Rails functionality\n   - Removes deprecated settings\n\nExample merge for `config/application.rb`:\n```ruby\n# KEEP local customizations:\nconfig.i18n.available_locales = [:de, :en]\nconfig.i18n.default_locale = :de\nconfig.i18n.fallbacks = [:en]\n\n# ADD new Rails 8.1 settings if needed:\n# (usually none required - new defaults come via new_framework_defaults file)\n```\n\n### 9.5: Handle Active Storage Migrations\n\nAfter file updates, run any new migrations:\n\n```bash\nbin/rails db:migrate\n```\n\nCheck for new migrations that were added:\n```bash\nls -la db/migrate/ | tail -10\n```\n\n### 9.6: Verify Upgrade\n\nAfter completing the merge:\n\n1. Start the Rails server and check for errors:\n   ```bash\n   bin/dev  # or bin/rails server\n   ```\n\n2. Check the Rails console:\n   ```bash\n   bin/rails console\n   ```\n\n3. Run the test suite:\n   ```bash\n   bin/rails test\n   ```\n\n4. Review deprecation warnings in logs\n\n---\n\n## Step 10: Finalize Framework Defaults\n\nAfter verifying the app works:\n\n1. Review `config/initializers/new_framework_defaults_X_Y.rb`\n2. Enable each new default one by one, testing after each\n3. Once all defaults are enabled and tested, update `config/application.rb`:\n   ```ruby\n   config.load_defaults X.Y  # Update to new version\n   ```\n4. Delete the `new_framework_defaults_X_Y.rb` file\n\n---\n\n\n## When to Use This Skill\n\nAnalyze Rails apps and provide upgrade assessments\n\nUse this skill when working with analyze rails apps and provide upgrade assessments.\n## Error Handling\n\n- If `gh` CLI is not authenticated, instruct the user to run `gh auth login`\n- If railsdiff.org doesn't have the exact versions, try with major.minor.0 versions\n- If the app is already on the latest version, congratulate the user and note any upcoming releases\n- If local customizations would be lost, ALWAYS stop and show the user what would be overwritten before proceeding\n\n## Key Principles\n\n1. **Never overwrite without checking** - Always check for local customizations first\n2. **Preserve user intent** - Local customizations exist for a reason\n3. **Minimal changes** - Only add what's necessary for the new Rails version\n4. **Transparency** - Show the user exactly what will change before doing it\n5. **Reversibility** - User should be able to `git checkout` to restore if needed\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["skill","rails","upgrade","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-skill-rails-upgrade","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/skill-rails-upgrade","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34515 github stars · SKILL.md body (12,465 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T12:51:47.111Z","embedding":null,"createdAt":"2026-04-18T21:45:01.257Z","updatedAt":"2026-04-22T12:51:47.111Z","lastSeenAt":"2026-04-22T12:51:47.111Z","tsv":"'-10':1325 '-7':666 '/7.1.3/8.0.0':339 '/dev/null':411,420,540,551,557 '/rails/rails/releases/tag/v':850 '/tmp':1175 '/upgrading_ruby_on_rails.html':267,840 '0':207,1468 '1':56,125,665,748,772,1232,1333,1379,1507 '10':208,1370 '2':114,138,410,419,539,550,556,752,779,1238,1347,1382,1518 '3':156,757,786,1244,1355,1393,1528 '4':211,761,793,1363,1411,1541 '5':251,765,798,1553 '6':315,806,1008 '7':368,416,820 '7.1':391 '7.1.0':627 '7.1.3':154,231,240,248 '7.1.5':232 '7.2':421 '7.2.0':241 '7.3':519 '7.4':558 '7.5':603 '8':652,824 '8.0.0':249,628 '8.0.12':623 '8.0.4':622 '8.1':1282 '9':828,878 '9.1':907 '9.2':995 '9.3':1049 '9.4':1135 '9.5':1297 '9.6':1326 'a.b.c':674,1065 'abl':1558 'across':485 'action':620,1014 'activ':719,1299 'ad':353,1319 'add':1253,1279,1532 'address':722,737 'align':470 'alongsid':382 'alreadi':1474 'also':193 'alway':1493,1512 'analyz':5,17,30,39,40,857,870,996,1421,1434 'api':173,204,767 'app':7,19,32,98,401,566,811,859,872,884,891,935,1162,1169,1200,1377,1423,1436,1472 'appear':107 'applic':44,59,67,81,112,373,563 'ask':1599 'assess':11,23,36,50,680,863,876,1427,1440 'auth':1455 'authent':1448 'avail':528 'base':689,1001 'bash':171,202,403,438,530,576,596,919,1163,1198,1309,1320,1342,1352,1360 'behavior':982 'bin':360,953,977 'bin/ci':1072 'bin/dev':983,1036,1113,1343 'bin/importmap':597,600 'bin/rails':1199,1310,1345,1353,1361 'boundari':1607 'break':293,703,766 'bundl':795,1185 'care':944 'cat':447,577 'categor':1009 'categori':963,1013 'cd':1174 'chang':294,298,342,358,366,704,713,735,742,768,923,998,1011,1040,1099,1112,1119,1130,1134,1530,1549 'check':60,127,142,194,369,384,396,404,412,422,431,466,520,526,542,559,571,920,1313,1339,1348,1511,1513 'checkout':1561 'ci':1074 'clarif':1601 'classifi':221 'clear':1058,1574 'cli':164,1445 'code':833 'come':1291 'comment':1038,1044,1126,1133 'comment-on':1037,1125 'compar':215 'comparison':192 'compat':727 'complet':1330 'complex':679 'comprehens':48,658 'config':82,712,927,952,965,1047,1107,1202,1205 'config.i18n.available':1270 'config.i18n.default':1274 'config.i18n.fallbacks':1277 'config.load':1404 'config/application.rb':79,1035,1091,1265,1402 'config/environment.rb':83 'config/environments/development.rb':1102 'config/importmap.rb':418,572,578 'config/initializers/new_framework_defaults_a_b.rb':1071 'config/initializers/new_framework_defaults_x_y.rb':1020,1381 'config/puma.rb':1131 'configur':297,345,749,1094 'confirm':1141 'congratul':1479 'consid':898 'consol':1351,1354 'constraint':147 'contain':77 'content':1152 'copi':1187 'creat':955,1018,1050,1070,1147 'criteria':1610 'current':42,116,121,151,216,331,440,618,669,784,844,1233 'custom':900,910,918,964,981,994,1029,1030,1081,1089,1220,1237,1252,1269,1489,1516,1523 'databas':762,822 'db':1311 'db/migrate':1323 'de':1272,1276 'default':344,1241,1290,1295,1373,1386,1396,1405 'delet':1412 'depend':357,371,390,605,613,726,732,760,801,804 'deprec':295,717,753,781,832,1260,1365 'describ':1096,1109,1578 'detect':908,1090 'determin':212 'diff':318,324,842,947 'differ':228,237,244,930 'direct':496,545,813,1019,1149 'document':709 'doesn':105,1459 'drive/frames/streams':473 'e':450,580 'e.g':153,185,230,239,247 'echo':457,587 'edit':505 'en':1273,1278 'enabl':1383,1398 'ensur':777 'environ':85,1590 'environment-specif':1589 'equival':641 'era':478,518 'error':1341,1441 'essenti':1255 'etc':975,986 'exact':131,150,1463,1546 'exampl':336,1015,1262 'execut':1136 'exist':75,430,1524 'expert':1595 'extens':716 'extract':119,301,439,1157,1171 'factor':691 'fetch':166,252,316 'file':53,72,346,348,365,750,880,896,915,928,939,960,966,967,988,989,1012,1017,1048,1067,1146,1173,1189,1197,1206,1214,1226,1296,1303,1415 'final':1371 'find':157,662 'first':126,1517 'follow':902 'foreman':985,1115 'found':141,462,591 'framework':482,1294,1372 'fresh':933,1160,1167 'function':1258 'gemfil':73,143,788 'gemfile.lock':128 'general':483 'generat':653,1164,1194 'get':115,258,322 'gh':172,203,1444,1454 'git':924,946,1182,1560 'github':163 'github.com':849 'github.com/rails/rails/releases/tag/v':848 'grep':449,579 'guid':254,263,277,837 'guides.rubyonrails.org':266,839 'guides.rubyonrails.org/upgrading_ruby_on_rails.html':265,838 'handl':747,1298,1442 'haven':991 'head':948 'hotwir':451 'hotwired/stimulus':479,536,602 'hotwired/turbo-rails':471,535,548,599,621,638 'i18n':973,1093 'identifi':392,914 'import':741,886 'importmap':414,560,569,589,594 'importmap-rail':568 'includ':375,607,660 'indic':95 'inform':101,668 'initi':355 'input':1604 'instal':132 'instead':901 'instruct':1449 'intent':1521 'interact':1208 'irrelev':1129 'javascript':370,376,612,800 'jq':175,206 'js':393,426,460,481,604,633,803 'jump':275,696 'keep':1249,1267 'key':364,463,734,1505 'la':1322 'landscap':201 'larg':688,694 'latest':158,168,181,218,543,619,672,1477 'letter':1104 'like':285 'limit':1566 'list':738,926,958 'local':899,909,917,1022,1031,1080,1088,1092,1103,1114,1219,1234,1251,1268,1271,1275,1488,1515,1522 'log':1368 'login':1456 'look':69,134,268 'lost':1492 'ls':408,417,1321 'mailer':974,1106 'major':236,242,245,701,731 'major.minor':227,1467 'manag':395,399,615 'mani':710,723 'manual':1032,1086,1222 'match':475,492,499,507,515,648,1575 'medium':686,693 'mental':957 'merg':54,817,905,1033,1087,1223,1228,1246,1263,1332 'methods/features':754 'migrat':300,763,823,1301,1308,1312,1316 'minim':714,1529 'minor':233,238,699,1043 'miss':91,1612 'moder':715 'modifi':354,976 'must':74 'name':177,209,950 'name-on':949 'necessari':1535 'need':350,730,745,764,941,1034,1085,1188,1227,1285,1565 'never':1508 'new':347,758,790,1016,1066,1073,1097,1110,1145,1172,1177,1239,1256,1280,1289,1293,1307,1315,1385,1409,1538 'new_framework_defaults_x_y.rb':1414 'none':705,718,1287 'note':847,1483 'npm':532,533,546,552,636,643 'npm/yarn':407,524 'npm/yarn/importmap/none':616 'offici':260 'often':374 'one':1387,1389 'open':1105 'organ':279 'outdat':534 'output':1005,1584 'overwrit':895,1025,1212,1509 'overwritten':1502 'packag':377,394,398,427,437,446,461,464,467,614,617 'package.json':406,409,429,448 'pass':778 'patch':224,229,697 'patch/minor/major':677 'path':313 'permiss':1605 'pin':561,574,581,583,585,590,595,598,601 'plan':1052,1060,1062,1138,1143 'prefix':190 'present':1053 'preserv':1519 'principl':1506 'proceed':1504 'process':818,906 'procfile.dev':1116 'project':525,970 'project-specif':969 'provid':9,21,34,46,656,861,874,1425,1438 'public':954 'public/400.html':1082 'public/404.html':1026,1083 'public/500.html':1084 'purpos':468 'rail':3,6,18,31,37,43,58,66,78,80,84,97,111,117,122,136,159,169,261,288,291,317,372,383,415,424,435,444,452,456,459,476,486,493,500,508,511,516,570,586,631,649,791,797,810,835,841,858,871,883,890,934,1063,1095,1098,1108,1111,1118,1161,1168,1176,1178,1193,1240,1257,1281,1336,1350,1422,1435,1539 'rails-rel':423,434,443 'rails/actioncable':488,537,554,626,645 'rails/actiontext':502 'rails/activestorage':495,538,646 'rails/request.js':510 'railsdiff':1000,1004,1154,1243 'railsdiff.org':328,330,338,843,1458 'railsdiff.org/7.1.3/8.0.0':337 'rate':681 're':63 'reason':1527 'recent':195 'recommend':625,632,769 'refactor':725 'relat':425,436,445 'releas':170,200,846,1486 'relev':271,305 'remov':1259 'replac':513,882 'report':148,387 'repos/rails/rails/releases/latest':174 'repos/rails/rails/tags':205 'requir':299,724,759,997,1288,1603 'resourc':834 'restor':1563 'return':179 'revers':1554 'review':780,829,1364,1380,1596 'rich':503 'rubi':1122,1266,1403 'run':635,642,794,809,821,825,889,1305,1356,1453 'safe':1023,1076,1210 'safeti':1606 'scope':1577 'script':361,978,979,1075,1123 'section':270,284,306,805 'see':802 'select':52,816,879,904 'server':1337,1346 'set':972,1261,1283 'setup':1117 'show':341,1229,1496,1543 'signific':711 'simpl':1121 'skill':2,16,26,856,866,1420,1430,1569 'skill-rails-upgrad':1 'skill-skill-rails-upgrade' 'skip':1042,1124,1181,1184 'skip-bundl':1183 'skip-git':1180 'small':685,692 'source-sickn33' 'specif':311,971,1196,1591 'stabl':182,484 'standard':987 'start':1334 'status':925 'step':55,113,155,210,250,314,367,651,664,771,877,1007,1369 'still':1207 'stimulus':453,480,584 'stop':99,1494,1597 'storag':1300 'strip':187 'substitut':1587 'success':1609 'suggest':1245 'suit':775,827,1359 'summar':303,362 'summari':606,611,655,659 'support':490 'tag':176,184,196 'tail':1324 'target':281,333,845,851 'task':1573 'templat':1179 'temporari':1166 'test':774,826,1358,1362,1390,1400,1593 'text':504 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'transpar':1542 'treat':1582 'tri':1465 'turbo':455,472,582 'turbo-rail':454 'type':214,676 'uj':512 'unchang':1021 'uncommit':922 'understand':198 'upcom':1485 'updat':356,381,522,529,593,624,629,634,637,644,729,733,751,756,773,787,796,799,812,831,881,885,892,1045,1078,1201,1204,1211,1304,1401,1407 'upgrad':4,10,22,35,38,49,213,223,225,234,243,253,262,286,312,610,654,675,678,683,770,836,862,875,913,1051,1059,1061,1137,1328,1426,1439 'upload':497 'url':264,329 'use':14,24,161,255,319,402,531,567,814,854,864,1150,1191,1418,1428,1567 'user':103,309,744,1055,1140,1231,1451,1481,1498,1520,1545,1555 'usual':1041,1286 'v':189 'v8.0.1':186 'valid':1592 'verifi':57,1327,1375 'version':118,123,133,146,152,160,183,219,246,274,282,326,332,334,441,469,477,487,494,501,509,517,544,549,555,575,650,667,670,673,695,700,702,785,792,1235,1247,1410,1464,1469,1478,1540 'via':1292 'view':547,553 'warn':296,782,1366 'webfetch':256,320 'websocket':489 'well':708 'well-docu':707 'without':897,1510 'work':28,868,1378,1432 'would':1490,1500 'x.y':289,1406 'x.y.z':137,671,1064 'x.z':292 'yarn':640","prices":[{"id":"f3d1eed7-66be-41eb-af95-8edf22925b9e","listingId":"8722d572-f464-43f3-87b6-934e0a16b4b0","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:45:01.257Z"}],"sources":[{"listingId":"8722d572-f464-43f3-87b6-934e0a16b4b0","source":"github","sourceId":"sickn33/antigravity-awesome-skills/skill-rails-upgrade","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/skill-rails-upgrade","isPrimary":false,"firstSeenAt":"2026-04-18T21:45:01.257Z","lastSeenAt":"2026-04-22T12:51:47.111Z"}],"details":{"listingId":"8722d572-f464-43f3-87b6-934e0a16b4b0","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"skill-rails-upgrade","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34515,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-22T06:40:00Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"9fe0f3bd99a2e8c59ecfdeba2c8eb611f5d9f43b","skill_md_path":"skills/skill-rails-upgrade/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/skill-rails-upgrade"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"skill-rails-upgrade","description":"Analyze Rails apps and provide upgrade assessments"},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/skill-rails-upgrade"},"updatedAt":"2026-04-22T12:51:47.111Z"}}