{"id":"05d0bb1c-3b53-4cf7-9c0b-f4aee1a159bf","shortId":"QprzMf","kind":"skill","title":"reviewing-oracle-to-postgres-migration","tagline":"Identifies Oracle-to-PostgreSQL migration risks by cross-referencing code against known behavioral differences (empty strings, refcursors, type coercion, sorting, timestamps, concurrent transactions, etc.). Use when planning a database migration, reviewing migration artifacts, or","description":"# Oracle-to-PostgreSQL Database Migration\n\nSurfaces migration risks and validates migration work against known Oracle/PostgreSQL behavioral differences documented in the `references/` folder.\n\n## When to use\n\n1. **Planning** — Before starting migration work on a procedure, trigger, query, or refcursor client. Identify which reference insights apply so risks are addressed up front.\n2. **Validating** — After migration work is done, confirm every applicable insight was addressed and integration tests cover the new PostgreSQL semantics.\n\n## Workflow\n\nDetermine the task type:\n\n**Planning a migration?** Follow the risk assessment workflow.\n**Validating completed work?** Follow the validation workflow.\n\n### Risk assessment workflow (planning)\n\n```\nRisk Assessment:\n- [ ] Step 1: Identify the migration scope\n- [ ] Step 2: Screen each insight for applicability\n- [ ] Step 3: Document risks and recommended actions\n```\n\n**Step 1: Identify the migration scope**\n\nList the affected database objects (procedures, triggers, queries, views) and the application code that calls them.\n\n**Step 2: Screen each insight for applicability**\n\nReview the reference index in [references/REFERENCE.md](references/REFERENCE.md). For each entry, determine whether the migration scope contains patterns affected by that insight. Read the full reference file only when the insight is potentially relevant.\n\n**Step 3: Document risks and recommended actions**\n\nFor each applicable insight, note the specific risk and the recommended fix pattern from the reference file. Flag any insight that requires a design decision (e.g., whether to preserve Oracle empty-string-as-NULL semantics or adopt PostgreSQL behavior).\n\n### Validation workflow (post-migration)\n\n```\nValidation:\n- [ ] Step 1: Map the migration artifact\n- [ ] Step 2: Cross-check applicable insights\n- [ ] Step 3: Verify integration test coverage\n- [ ] Step 4: Gate the result\n```\n\n**Step 1: Map the migration artifact**\n\nIdentify the migrated object and summarize the change set.\n\n**Step 2: Cross-check applicable insights**\n\nFor each reference in [references/REFERENCE.md](references/REFERENCE.md), confirm the behavior or test requirement is acknowledged and addressed in the migration work.\n\n**Step 3: Verify integration test coverage**\n\nConfirm tests exercise both the happy path and the failure scenarios highlighted in applicable insights (exceptions, sorting, refcursor consumption, concurrent transactions, timestamps, etc.).\n\n**Step 4: Gate the result**\n\nReturn a checklist asserting each applicable insight was addressed, migration scripts run, and integration tests pass.","tags":["reviewing","oracle","postgres","migration","awesome","copilot","github","agent-skills","agents","custom-agents","github-copilot","hacktoberfest"],"capabilities":["skill","source-github","skill-reviewing-oracle-to-postgres-migration","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/reviewing-oracle-to-postgres-migration","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 33270 github stars · SKILL.md body (2,623 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-05-18T18:52:24.138Z","embedding":null,"createdAt":"2026-04-18T20:30:51.635Z","updatedAt":"2026-05-18T18:52:24.138Z","lastSeenAt":"2026-05-18T18:52:24.138Z","tsv":"'1':69,142,162,277,301 '2':94,148,184,283,316 '3':155,224,290,343 '4':296,372 'acknowledg':335 'action':160,229 'address':91,106,337,384 'adopt':267 'affect':169,207 'appli':87 'applic':103,153,178,189,232,287,320,361,381 'artifact':41,281,305 'assert':379 'assess':126,136,140 'behavior':21,59,269,330 'call':181 'chang':313 'check':286,319 'checklist':378 'client':82 'code':18,179 'coercion':27 'complet':129 'concurr':30,367 'confirm':101,328,348 'consumpt':366 'contain':205 'cover':110 'coverag':294,347 'cross':16,285,318 'cross-check':284,317 'cross-referenc':15 'databas':37,47,170 'decis':254 'design':253 'determin':116,200 'differ':22,60 'document':61,156,225 'done':100 'e.g':255 'empti':23,261 'empty-string-as-nul':260 'entri':199 'etc':32,370 'everi':102 'except':363 'exercis':350 'failur':357 'file':215,246 'fix':241 'flag':247 'folder':65 'follow':123,131 'front':93 'full':213 'gate':297,373 'happi':353 'highlight':359 'identifi':7,83,143,163,306 'index':193 'insight':86,104,151,187,210,219,233,249,288,321,362,382 'integr':108,292,345,389 'known':20,57 'list':167 'map':278,302 'migrat':6,12,38,40,48,50,54,73,97,122,145,165,203,274,280,304,308,340,385 'new':112 'note':234 'null':264 'object':171,309 'oracl':3,9,44,259 'oracle-to-postgresql':8,43 'oracle/postgresql':58 'pass':391 'path':354 'pattern':206,242 'plan':35,70,120,138 'post':273 'post-migr':272 'postgr':5 'postgresql':11,46,113,268 'potenti':221 'preserv':258 'procedur':77,172 'queri':79,174 'read':211 'recommend':159,228,240 'refcursor':25,81,365 'refer':64,85,192,214,245,324 'referenc':17 'references/reference.md':195,196,326,327 'relev':222 'requir':251,333 'result':299,375 'return':376 'review':2,39,190 'reviewing-oracle-to-postgres-migr':1 'risk':13,51,89,125,135,139,157,226,237 'run':387 'scenario':358 'scope':146,166,204 'screen':149,185 'script':386 'semant':114,265 'set':314 'skill' 'skill-reviewing-oracle-to-postgres-migration' 'sort':28,364 'source-github' 'specif':236 'start':72 'step':141,147,154,161,183,223,276,282,289,295,300,315,342,371 'string':24,262 'summar':311 'surfac':49 'task':118 'test':109,293,332,346,349,390 'timestamp':29,369 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'transact':31,368 'trigger':78,173 'type':26,119 'use':33,68 'valid':53,95,128,133,270,275 'verifi':291,344 'view':175 'whether':201,256 'work':55,74,98,130,341 'workflow':115,127,134,137,271","prices":[{"id":"3fd44a33-1d0a-4234-9776-1dd3f4127854","listingId":"05d0bb1c-3b53-4cf7-9c0b-f4aee1a159bf","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:30:51.635Z"}],"sources":[{"listingId":"05d0bb1c-3b53-4cf7-9c0b-f4aee1a159bf","source":"github","sourceId":"github/awesome-copilot/reviewing-oracle-to-postgres-migration","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/reviewing-oracle-to-postgres-migration","isPrimary":false,"firstSeenAt":"2026-04-18T21:51:05.844Z","lastSeenAt":"2026-05-18T18:52:24.138Z"},{"listingId":"05d0bb1c-3b53-4cf7-9c0b-f4aee1a159bf","source":"skills_sh","sourceId":"github/awesome-copilot/reviewing-oracle-to-postgres-migration","sourceUrl":"https://skills.sh/github/awesome-copilot/reviewing-oracle-to-postgres-migration","isPrimary":true,"firstSeenAt":"2026-04-18T20:30:51.635Z","lastSeenAt":"2026-05-07T22:40:31.396Z"}],"details":{"listingId":"05d0bb1c-3b53-4cf7-9c0b-f4aee1a159bf","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"reviewing-oracle-to-postgres-migration","github":{"repo":"github/awesome-copilot","stars":33270,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-05-18T01:26:59Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"7f8dee8784e0d1b913bc3733895d04235ea3bce6","skill_md_path":"skills/reviewing-oracle-to-postgres-migration/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/reviewing-oracle-to-postgres-migration"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"name":"reviewing-oracle-to-postgres-migration","description":"Identifies Oracle-to-PostgreSQL migration risks by cross-referencing code against known behavioral differences (empty strings, refcursors, type coercion, sorting, timestamps, concurrent transactions, etc.). Use when planning a database migration, reviewing migration artifacts, or validating that integration tests cover Oracle/PostgreSQL differences."},"skills_sh_url":"https://skills.sh/github/awesome-copilot/reviewing-oracle-to-postgres-migration"},"updatedAt":"2026-05-18T18:52:24.138Z"}}