{"kind":"Skill","metadata":{"namespace":"community","name":"scaffolding-oracle-to-postgres-migration-test-project","version":"0.1.0"},"spec":{"description":"Scaffolds an xUnit integration test project for validating Oracle-to-PostgreSQL database migration behavior in .NET solutions. Creates the test project, transaction-rollback base class, and seed data manager. Use when setting up test infrastructure before writing migration integration tests, or when a test project is needed for Oracle-to-PostgreSQL validation.","files":{"SKILL.md":"---\nname: scaffolding-oracle-to-postgres-migration-test-project\ndescription: 'Scaffolds an xUnit integration test project for validating Oracle-to-PostgreSQL database migration behavior in .NET solutions. Creates the test project, transaction-rollback base class, and seed data manager. Use when setting up test infrastructure before writing migration integration tests, or when a test project is needed for Oracle-to-PostgreSQL validation.'\n---\n\n# Scaffolding an Integration Test Project for Oracle-to-PostgreSQL Migration\n\nCreates a compilable, empty xUnit test project with transaction management and seed data infrastructure for a single target project. Run once per project before writing tests.\n\n## Workflow\n\n```\nProgress:\n- [ ] Step 1: Inspect the target project\n- [ ] Step 2: Create the xUnit test project\n- [ ] Step 3: Implement transaction-rollback base class\n- [ ] Step 4: Implement seed data manager\n- [ ] Step 5: Verify the project compiles\n```\n\n**Step 1: Inspect the target project**\n\nRead the target project's `.csproj` to determine the .NET version and existing package references. Match these versions exactly — do not upgrade.\n\n**Step 2: Create the xUnit test project**\n\n- Target the same .NET version as the application under test.\n- Add NuGet packages for Oracle database connectivity and xUnit.\n- Add a project reference to the target project only — no other application projects.\n- Add an `appsettings.json` configured for Oracle database connectivity.\n\n**Step 3: Implement transaction-rollback base class**\n\n- Create a base test class that opens a transaction before each test and rolls it back after.\n- Catch and handle all exceptions to guarantee rollback.\n- Make the pattern inheritable by all downstream test classes.\n\n**Step 4: Implement seed data manager**\n\n- Create a global seed manager for loading test data within the transaction scope.\n- Do not commit seed data — transactions roll back after each test.\n- Do not use `TRUNCATE TABLE` — preserve existing database data.\n- Reuse existing seed files if available.\n- Establish a naming convention for seed file location that downstream test creation will follow.\n\n**Step 5: Verify the project compiles**\n\nBuild the test project and confirm it compiles with zero errors before finishing.\n\n## Key Constraints\n\n- Oracle is the golden behavior source — scaffold for Oracle first.\n- Keep to existing .NET and C# versions; do not introduce newer language or runtime features.\n- Output is an empty test project with infrastructure only — no test cases.\n"},"import":{"commit_sha":"541b7819d8c3545c6df122491af4fa1eae415779","imported_at":"2026-05-18T20:05:35Z","license_text":"MIT License\n\nCopyright GitHub, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.","owner":"github","repo":"github/awesome-copilot","source_url":"https://github.com/github/awesome-copilot/tree/541b7819d8c3545c6df122491af4fa1eae415779/plugins/oracle-to-postgres-migration-expert/skills/scaffolding-oracle-to-postgres-migration-test-project"}},"content_hash":[59,53,13,20,235,128,202,41,28,46,158,21,159,38,168,14,233,41,242,231,226,6,67,139,223,161,165,198,188,91,181,109],"trust_level":"unsigned","yanked":false}
