[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71BAX23JFPDF3467JVSYGF8":3,"skill-same:01M71BAX23JFPDF3467JVSYGF8":49},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":22,"linkOnly":23,"markdownContent":24,"markdownBody":24,"frontMatter":25,"refName":26,"commitSha":27,"skillDirectory":28,"forksCount":29,"repositoryHtmlUrl":30,"repositoryHomepageUrl":31,"ownerHtmlUrl":32,"ownerBlogUrl":33,"ownerDescription":6,"updatedAt":34,"install":35,"resources":48},"01M71BAX23JFPDF3467JVSYGF8","create-migration-epics",null,"superMLdev\u002Fsmart-sdlc","superMLdev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F214327565?v=4","01M71B92B8VKCZZ0YCSNAJ9CB1","superML.dev","01M71B92BVCWP4F23ANQ0ZKF6S",8,"MIT","https:\u002F\u002Fgithub.com\u002FsuperMLdev\u002Fsmart-sdlc\u002Fblob\u002Fmaster\u002Fskills\u002F5-modernize\u002Fcreate-migration-epics\u002FSKILL.md",[],[18,19,20,21],"create","migration","create migration","create migration epics","2026-11-10 10:12:30",false,"# create-migration-epics\n\n> Convert the modernization architecture and migration strategy into implementable epics and tech stories — traceable to validated business rules and legacy source programs.\n\n## Purpose\n\nThis skill bridges architecture and implementation. It takes the outputs of:\n- `define-target-architecture` — what to build\n- `validate-business-rules` — what rules to enforce\n- `MIGRATION_STRATEGY.md` — in what order to build it\n\nAnd produces a structured epic\u002Fstory breakdown compatible with the existing `create-epics-stories` skill format — but with migration-specific story types: data migration, rule re-implementation, integration cutover, and legacy retirement.\n\n## Persona\n\nThis skill is executed by **Leo** (Product Manager) working closely with Rex (Architecture context) and Aria (Business rules context).\n\n## Prerequisites\n\nAll of these should exist before running:\n- `_superml\u002Fmodernization\u002Ftarget-architecture.md`\n- `_superml\u002Fmodernization\u002FMIGRATION_STRATEGY.md`\n- `_superml\u002Fbusiness-rules\u002Fvalidated-rules.md`\n- `_superml\u002Fknowledge-graph\u002Fprocess-flows.md`\n\n## Activation\n\n> \"I'm Leo — I'll turn your modernization architecture into implementable epics and stories.\n> Each story will be traceable to:\n>   - The business rule(s) it implements\n>   - The legacy program(s) it replaces\n>   - The migration phase it belongs to\n>\n> How would you like stories formatted?\n> 1. Gherkin (Given\u002FWhen\u002FThen) — good for BDD teams\n> 2. Standard (As a \u002F I want \u002F So that) — classic user story\n> 3. Technical (Title + Acceptance Criteria numbered list)\n> 4. Mix — user stories for functional work, technical format for infra\u002Fmigration tasks\"\n\n---\n\n## Epic Structure for Modernization\n\n### Standard Epic Categories (always present)\n\n```\nEPIC-M01: Platform Foundation\n  Everything needed before the first business service can be built.\n  Stories: Infrastructure, CI\u002FCD, Shared services, Developer environment.\n\nEPIC-M02: Data Migration\n  Moving legacy data to new schema. One story per entity.\n  Stories: Schema migration script, Data extraction, Transformation, Validation\u002Freconciliation.\n\nEPIC-M{n}: {Domain} Service — one epic per service\n  Building the new service for each domain.\n  Stories: API endpoints, Business rule implementation, Database layer, Tests.\n\nEPIC-M{n+1}: Integration Cutover\n  Switching external systems to the new system.\n  Stories: One per external integration.\n\nEPIC-M{n+2}: Legacy Retirement\n  Decommissioning the legacy components.\n  Stories: Traffic cutover, Parallel run observation, Decommission.\n\nEPIC-M{n+3}: Post-Migration Validation\n  Verifying the new system is correct.\n  Stories: Business rule verification, Performance baseline, User acceptance.\n```\n\n---\n\n## Story Generation\n\n### For Each Service (e.g., Customer Service)\n\nGenerate stories covering:\n\n#### API Endpoint Stories\n```\nStory: Create customer profile API\n  As a Customer Service Representative\n  I want to create a new customer profile via the API\n  So that new customers can start placing orders\n\n  Acceptance Criteria:\n  - POST \u002Fapi\u002Fv1\u002Fcustomers accepts customer data\n  - Returns 201 Created with customerId on success\n  - Returns 422 with field errors if validation fails\n  - Customer is created in Active status (RULE-002)\n  - Duplicate customer ID rejected with 409 Conflict\n  \n  Business rules implemented: RULE-002\n  Legacy program replaced: CUSTMAINT.cbl (create path)\n  Migration phase: Phase 2a\n  Story points: {estimate}\n```\n\n#### Business Rule Implementation Stories\nFor each business rule, if it's non-trivial (more than a simple field validation), it gets its own story:\n\n```\nStory: Implement credit limit enforcement (RULE-001)\n  As a developer implementing the Order Service\n  I want to enforce credit limit validation at order placement\n  So that customers cannot exceed their credit limit\n\n  Technical specification:\n  - On POST \u002Forders, before creating order:\n    1. Fetch customer.creditLimit and customer.currentBalance\n    2. If (order.total + customer.currentBalance) > customer.creditLimit: return 422\n    3. Error response must include: currentBalance, creditLimit, orderTotal, shortfall\n  - Credit check must be consistent-read (not cached) to prevent race conditions\n  - Unit test: 5 scenarios (under limit, at limit, over limit, zero limit, negative balance)\n  - Integration test: verify rejection message matches RULE-001 specification\n\n  Business rules implemented: RULE-001\n  Legacy program replaced: ORDVALD.cbl paragraph 0210-CHECK-CREDIT-LIMIT\n  Migration phase: Phase 2c\n```\n\n#### Data Migration Stories\n```\nStory: Migrate customer records from VSAM to PostgreSQL\n  \n  Technical specification:\n  - Source: VSAM KSDS CUSTMSTR.KSDS (n records estimated)\n  - Target: PostgreSQL customers table\n  - Conversion required:\n    * PIC 9(8) CUST-ID → CHAR(8) id\n    * PIC S9(7)V99 CUST-CREDIT-LIMIT → DECIMAL(9,2) credit_limit\n    * PIC X(1) CUST-STATUS (A\u002FS\u002FC) → VARCHAR(1) status with CHECK constraint\n  - Validation:\n    * Record count in source = record count in target\n    * Sum of credit_limit matches within $0.01 (rounding tolerance)\n    * All status values are valid (A\u002FS\u002FC only — reject and report any unknown)\n    * Zero CUST-ID records rejected (data quality gate)\n  - Output: Migration report showing records migrated, rejected, warnings\n  \n  Business rules preserved: RULE-002 (status constraint enforced in schema)\n  Legacy source: CUSTMSTR.KSDS\n  Migration phase: Phase 2a\n```\n\n#### Integration Stories\n```\nStory: Implement GL accounting entry event publisher\n  \n  As a financial systems integrator\n  I want the Order Service to publish accounting events\n  So that the General Ledger system receives entries without file exchange\n\n  Technical specification:\n  - When Order status changes to Confirmed: publish AccountingEntryRequired event\n  - Event payload: { orderId, customerId, amount, glAccount, timestamp }\n  - Kafka topic: accounting-entries\n  - If GL system is not yet on events: GL Integration Service reads Kafka → writes file\n    (adapter pattern — supports both old and new GL integration)\n  \n  Legacy program replaced: ACCTPOST.cbl + GL.ENTRIES.FILE production\n  Migration phase: Phase 4\n```\n\n---\n\n## Story Traceability Matrix\n\nWrite `{project-root}\u002F_superml\u002Fmodernization\u002Fstory-traceability.md`:\n\n```markdown\n# Story Traceability Matrix\n\nThis matrix links every implementation story to its business rules and legacy source.\nNo story should be delivered that isn't traceable to at least one business rule OR\none legacy component being replaced.\n\n| Story | Epic | Business Rules | Legacy Replaced | Phase |\n|-------|------|---------------|----------------|-------|\n| Create customer API | EPIC-M03 | RULE-002 | CUSTMAINT.cbl (create) | 2a |\n| Credit limit enforcement | EPIC-M04 | RULE-001 | ORDVALD.cbl:0210 | 2c |\n| Migrate customer data | EPIC-M02 | RULE-002 | CUSTMSTR.KSDS | 2a |\n| ... | | | | |\n\n## Business Rules Coverage\n\nEvery validated business rule must appear in at least one story.\nRules not yet in any story:\n  - RULE-{n}: {rule statement} → needs story in {epic}\n```\n\n---\n\n## Output\n\nWrite `{project-root}\u002F_superml\u002Fmodernization\u002Fepics-and-stories.md` with the full breakdown.\n\nPresent completion summary:\n\n```\n🏛️ Migration Epics Complete — {project_name}\n══════════════════════════════════════════════\n\nEpics created: {n}\nStories created: {n}\n\nBy type:\n  Platform\u002FInfrastructure: {n} stories\n  Data Migration:          {n} stories\n  Service Implementation:  {n} stories\n  Business Rule stories:   {n} stories  (one per complex rule)\n  Integration stories:     {n} stories\n  Retirement stories:      {n} stories\n\nBy migration phase:\n  Phase 0 (Foundation):   {n} stories\n  Phase 1 (First service): {n} stories\n  Phase 2 (Core domain):  {n} stories\n  Phase 3 (Batch):        {n} stories\n  Phase 4 (Integration):  {n} stories\n  Phase 5 (Decommission): {n} stories\n\nBusiness rule coverage: {n}\u002F{total} rules have at least one story\nUncovered rules: {n} — stories to be added\n\nFiles written:\n  ✅ _superml\u002Fmodernization\u002Fepics-and-stories.md\n  ✅ _superml\u002Fmodernization\u002Fstory-traceability.md\n\n══════════════════════════════════════════════\nModernization pipeline complete!\n\nThe full pipeline output is in:\n  _superml\u002Flegacy-inventory\u002F     — What the old system does\n  _superml\u002Fknowledge-graph\u002F      — Domain model and business rules\n  _superml\u002Fbusiness-rules\u002F       — Validated BA-reviewed rules\n  _superml\u002Fmodernization\u002F        — Architecture + migration plan + stories\n\nNext: Load stories into your backlog tool, or use the JIRA integration to push epics.\n```\n\n## Integration with Other Skills\n\n- Stories are compatible with the `create-epics-stories` story format\n- Can be pushed to JIRA using the `integrations\u002Fjira` skills\n- Architecture ADRs compatible with `integrations\u002Fconfluence` for documentation\n- Stories are implementation-ready for Nova (phase 4 — `dev-story` skill)\n",{},"master","86f9b15bf32a913d78f2dce364b9fe56e53ddf12","skills\u002F5-modernize\u002Fcreate-migration-epics",1,"https:\u002F\u002Fgithub.com\u002FsuperMLdev\u002Fsmart-sdlc","https:\u002F\u002Fsupermldev.github.io\u002Fsmart-sdlc\u002F","https:\u002F\u002Fgithub.com\u002FsuperMLdev","https:\u002F\u002Fsuperml.dev","2026-05-12 11:55:28",{"source":7,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add superMLdev\u002Fsmart-sdlc --skill create-migration-epics",{"tool":41,"command":42},"bunx","bunx skills add superMLdev\u002Fsmart-sdlc --skill create-migration-epics",{"tool":44,"command":45},"pnpm","pnpm dlx skills add superMLdev\u002Fsmart-sdlc --skill create-migration-epics","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FsuperMLdev\u002Fsmart-sdlc\u002Fblob\u002Fmaster\u002Fskills\u002F5-modernize\u002Fcreate-migration-epics\u002FSKILL.md",true,[],[50,69,82,94,114,127],{"skillNo":51,"name":52,"nameZh":6,"description":53,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":56,"publishedAt":22},"01M71BD2HCRX8SP34Y37NZGVX2","jira-sync","Bulk sync all epics and stories from the local backlog to JIRA. Use when the user says 'sync to JIRA', 'push everything to JIRA', or 'create all JIRA tickets'.","https:\u002F\u002Fgithub.com\u002FsuperMLdev\u002Fsmart-sdlc\u002Fblob\u002Fmaster\u002Fskills\u002Fintegrations\u002Fjira\u002Fsync\u002FSKILL.md",[],[57,58,59,60,61,62,63,64,65,66,67,18,68],"jira sync","jira","sync","user","bulk","push","backlog","local","use","when","stories","tickets",{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":75,"publishedAt":22},"01M71BD0C5A3A3J7WF4YCGJJPY","jira-create-story","Create a single story ticket in JIRA from a local story file. Use when the user says 'create this story in JIRA' or 'push story to JIRA'.","https:\u002F\u002Fgithub.com\u002FsuperMLdev\u002Fsmart-sdlc\u002Fblob\u002Fmaster\u002Fskills\u002Fintegrations\u002Fjira\u002Fcreate-story\u002FSKILL.md",[],[76,58,18,77,78,62,79,64,80,65,66,81,60],"Story","create story","jira create story","ticket","single","file",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":22},"01M71BCYVDM32DNS0XJAKTHRZ1","jira-create-epic","Create an epic in JIRA from a planning artifact. Use when the user says 'create this epic in JIRA' or 'push epic to JIRA'.","https:\u002F\u002Fgithub.com\u002FsuperMLdev\u002Fsmart-sdlc\u002Fblob\u002Fmaster\u002Fskills\u002Fintegrations\u002Fjira\u002Fcreate-epic\u002FSKILL.md",[],[18,89,58,90,91,60,66,65,92,62,93],"create epic","EPIC","jira create epic","planning","artifact",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":105,"publishedAt":22},"01M71BCWGYW8T1TD07JJ1G12G9","jira-connect","Set up and verify JIRA integration. Use when the user says 'connect to JIRA', 'set up JIRA', or 'configure JIRA'.","https:\u002F\u002Fgithub.com\u002FsuperMLdev\u002Fsmart-sdlc\u002Fblob\u002Fmaster\u002Fskills\u002Fintegrations\u002Fjira\u002Fconnect\u002FSKILL.md",[100],{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[106,58,107,108,109,65,66,110,111,112,113,60],"jira connect","connect","SET","up","configure","verify","jira integration","integration",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":22},"01M71BCTZ1EW31JHP6AMBHEM9G","jira-conflict-detect","Check if a story is already being worked on by another team member. Use before starting any story implementation.","https:\u002F\u002Fgithub.com\u002FsuperMLdev\u002Fsmart-sdlc\u002Fblob\u002Fmaster\u002Fskills\u002Fintegrations\u002Fjira\u002Fconflict-detect\u002FSKILL.md",[],[121,58,122,123,124,65,125,126,76],"jira conflict detect","detect","conflict","check","team","implementation",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":22},"01M71BCRX4ZHQ60DXGRAEECHB9","gitlab-create-mr","Create a GitLab Merge Request for the current story branch. Use when the user says 'create an MR', 'open a merge request', or 'ready for review' in a GitLab project.","https:\u002F\u002Fgithub.com\u002FsuperMLdev\u002Fsmart-sdlc\u002Fblob\u002Fmaster\u002Fskills\u002Fintegrations\u002Fgitlab\u002Fcreate-mr\u002FSKILL.md",[],[18,134,135,136,137,138,139,140,141,142,65,66,143,144,145,76,60],"mr","gitlab create mr","create mr","gitlab","ready","branch","for","project","open","review","merge","request"]