[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P4PH76FSRFQ0382PJ2G2MQ":3,"skill-same:01M6P4PH76FSRFQ0382PJ2G2MQ":58},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":42,"updatedAt":43,"install":44,"resources":57},"01M6P4PH76FSRFQ0382PJ2G2MQ","epic-merge",null,"Verify the gates of an Epic pull request (checks, conflicts, mergeability) and merge it unless merge is disabled. Sub-skill of epic-implementer.","maurodesouza\u002Fai-kanban-app-lab","maurodesouza","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F54520907?v=4","01M6P3VA3WVQC4XZ0RQWJCDKW6","Mauro de Souza","01M6P3VA7YK770SNWT12GBEGAF",1,"MIT","https:\u002F\u002Fgithub.com\u002Fmaurodesouza\u002Fai-kanban-app-lab\u002Fblob\u002Fmain\u002Flab-10\u002F.claude\u002Fskills\u002Fepic-merge\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"merge","EPIC","epic merge","pull request","pull","verify","implementer","conflicts","gates","it","request","epic pull request","2026-11-10 10:12:30",false,"---\nname: epic-merge\ndescription: Verify the gates of an Epic pull request (checks, conflicts, mergeability) and merge it unless merge is disabled. Sub-skill of epic-implementer.\n---\n\n# User Input\n\n```text\n$ARGUMENTS\n```\n\nThe input must contain the pull request number, the worktree path, the merge conventions from `epic-repository-rules` and whether merge is disabled (`no-merge`).\n\n# Objective\n\nMake sure the pull request is merge-ready and, unless `no-merge` is set, merge it.\n\nThe gates in sections 1-3 always run. Only section 4 depends on `no-merge`.\n\n# 1. Checks\n\n1. Wait for all CI checks to finish (`gh pr checks \u003Cpr> --watch`).\n2. If every check passes, continue.\n3. If a check fails:\n   1. Read the failure logs.\n   2. Fix the cause in the Epic worktree, following `command-bus-architecture`.\n   3. Run the local validation again (tests, lint, typecheck, build).\n   4. Commit with `epic-commit-progressively` and push.\n   5. Wait for the checks again.\n4. After 3 failed fix attempts on the same check, stop and report `BLOCKED`.\n\nIf the repository has no CI checks, rely on the local final validation and report that no remote checks exist.\n\n# 2. Conflicts\n\nCheck mergeability (`gh pr view \u003Cpr> --json mergeable,mergeStateStatus`).\n\nIf the branch is behind or conflicts with the base branch:\n\n1. Update the Epic branch with the base branch, following repository rules (rebase or merge).\n2. Resolve conflicts preserving the intent of both sides.\n3. Run the local validation again.\n4. Push and go back to section 1.\n\nIf a conflict cannot be resolved without changing Epic scope or someone else's work semantics, stop and report `BLOCKED`.\n\n# 3. Other Gates\n\nVerify:\n\n* Required reviews \u002F approvals.\n* Branch protection rules.\n* Draft status.\n* Unresolved required conversations.\n\nNever bypass a gate. Never use admin overrides (`--admin`) or force pushes to the base branch.\n\nIf a gate requires a human (e.g. a required approval), stop and report `WAITING_FOR_HUMAN` with what is missing.\n\n# 4. Merge\n\nIf `no-merge` is set:\n\n* Do not merge.\n* Report `READY_TO_MERGE` when all gates pass.\n\nOtherwise, when all gates pass:\n\n1. Merge using the merge method from repository rules. If none exists, use a merge commit (`gh pr merge \u003Cpr> --merge`) so the progressive commits are preserved. Do not delete branches here; `epic-cleanup` does it.\n2. Confirm the pull request state is `MERGED`.\n3. Confirm the Epic Issues were closed; close any that were not.\n\n# 5. Final Output\n\nReturn:\n\n* Decision: `MERGED`, `READY_TO_MERGE` (no-merge), `WAITING_FOR_HUMAN` or `BLOCKED`\n* Checks status\n* Conflicts found and how they were resolved\n* Fix commits pushed\n* Merge commit (when merged)\n* What is missing (when not merged)\n\nReturn this output to the calling skill and continue its flow. Do not end the run here unless this skill was invoked directly by the user.\n","# User Input\n\n```text\n$ARGUMENTS\n```\n\nThe input must contain the pull request number, the worktree path, the merge conventions from `epic-repository-rules` and whether merge is disabled (`no-merge`).\n\n# Objective\n\nMake sure the pull request is merge-ready and, unless `no-merge` is set, merge it.\n\nThe gates in sections 1-3 always run. Only section 4 depends on `no-merge`.\n\n# 1. Checks\n\n1. Wait for all CI checks to finish (`gh pr checks \u003Cpr> --watch`).\n2. If every check passes, continue.\n3. If a check fails:\n   1. Read the failure logs.\n   2. Fix the cause in the Epic worktree, following `command-bus-architecture`.\n   3. Run the local validation again (tests, lint, typecheck, build).\n   4. Commit with `epic-commit-progressively` and push.\n   5. Wait for the checks again.\n4. After 3 failed fix attempts on the same check, stop and report `BLOCKED`.\n\nIf the repository has no CI checks, rely on the local final validation and report that no remote checks exist.\n\n# 2. Conflicts\n\nCheck mergeability (`gh pr view \u003Cpr> --json mergeable,mergeStateStatus`).\n\nIf the branch is behind or conflicts with the base branch:\n\n1. Update the Epic branch with the base branch, following repository rules (rebase or merge).\n2. Resolve conflicts preserving the intent of both sides.\n3. Run the local validation again.\n4. Push and go back to section 1.\n\nIf a conflict cannot be resolved without changing Epic scope or someone else's work semantics, stop and report `BLOCKED`.\n\n# 3. Other Gates\n\nVerify:\n\n* Required reviews \u002F approvals.\n* Branch protection rules.\n* Draft status.\n* Unresolved required conversations.\n\nNever bypass a gate. Never use admin overrides (`--admin`) or force pushes to the base branch.\n\nIf a gate requires a human (e.g. a required approval), stop and report `WAITING_FOR_HUMAN` with what is missing.\n\n# 4. Merge\n\nIf `no-merge` is set:\n\n* Do not merge.\n* Report `READY_TO_MERGE` when all gates pass.\n\nOtherwise, when all gates pass:\n\n1. Merge using the merge method from repository rules. If none exists, use a merge commit (`gh pr merge \u003Cpr> --merge`) so the progressive commits are preserved. Do not delete branches here; `epic-cleanup` does it.\n2. Confirm the pull request state is `MERGED`.\n3. Confirm the Epic Issues were closed; close any that were not.\n\n# 5. Final Output\n\nReturn:\n\n* Decision: `MERGED`, `READY_TO_MERGE` (no-merge), `WAITING_FOR_HUMAN` or `BLOCKED`\n* Checks status\n* Conflicts found and how they were resolved\n* Fix commits pushed\n* Merge commit (when merged)\n* What is missing (when not merged)\n\nReturn this output to the calling skill and continue its flow. Do not end the run here unless this skill was invoked directly by the user.\n",{"name":5,"description":7},"main","6f1867f215cf86d20099b6dfb1164c79abfb87ce","lab-10\u002F.claude\u002Fskills\u002Fepic-merge",0,"https:\u002F\u002Fgithub.com\u002Fmaurodesouza\u002Fai-kanban-app-lab","https:\u002F\u002Fgithub.com\u002Fmaurodesouza","Software Engineer","2026-10-28 02:01:00",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add maurodesouza\u002Fai-kanban-app-lab --skill epic-merge",{"tool":50,"command":51},"bunx","bunx skills add maurodesouza\u002Fai-kanban-app-lab --skill epic-merge",{"tool":53,"command":54},"pnpm","pnpm dlx skills add maurodesouza\u002Fai-kanban-app-lab --skill epic-merge","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmaurodesouza\u002Fai-kanban-app-lab\u002Fblob\u002Fmain\u002Flab-10\u002F.claude\u002Fskills\u002Fepic-merge\u002FSKILL.md",true,[],[59,85,102,126,138,149],{"skillNo":60,"name":61,"nameZh":6,"description":62,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":63,"categories":64,"keywords":65,"publishedAt":31},"01M6P519M13JTBZDK3ZJP48P2C","utils-implementation","Write and organize utils (pure helpers for formatting, mapping, filtering, math, parsing, ids, storage) as one namespace object per domain with clear, readable names. Use before creating or changing any util.","https:\u002F\u002Fgithub.com\u002Fmaurodesouza\u002Fai-kanban-app-lab\u002Fblob\u002Fmain\u002Flab-10\u002F.codex\u002Fskills\u002Futils-implementation\u002FSKILL.md",[],[66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84],"utils implementation","implementation","utils","parsing","for","object","storage","ids","clear","math","write","filtering","with","use","organize","domain","mapping","formatting","as",{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":96,"publishedAt":31},"01M6P516BP8GPRJHPGVFWRF5T8","test-writer","Write tests for the current implementation","https:\u002F\u002Fgithub.com\u002Fmaurodesouza\u002Fai-kanban-app-lab\u002Fblob\u002Fmain\u002Flab-10\u002F.codex\u002Fskills\u002Ftest-writer\u002FSKILL.md",[91],{"categoryNo":92,"categoryName":93,"taxonomyType":94,"taxonomyTypeDesc":95},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[97,98,99,100,76,67,101,70],"test","test writer","writer","write tests","tests",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":31},"01M6P50M0Z2AQH32ZTV90D5V32","tech-lead","Analyze a project, turn the user's goal into an implementation-ready GitHub Epic and Issues (following project rules, the Command Bus architecture and Fragiola UI), then start epic-implementer automatically (use the no-implement flag to stop after planning).","https:\u002F\u002Fgithub.com\u002Fmaurodesouza\u002Fai-kanban-app-lab\u002Fblob\u002Fmain\u002Flab-10\u002F.codex\u002Fskills\u002Ftech-lead\u002FSKILL.md",[],[109,110,111,112,113,114,20,115,116,117,118,119,120,121,122,25,79,123,124,125],"tech","tech lead","ready","command bus architecture","implement","github","architecture","planning","issues","ui","start","analyze","Rules","command","goal","stop","project",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":31},"01M6P50GND99S9QQY6KWPP6NW9","tech-lead-publish","Publish a final Epic and its Issues to GitHub, linked and labeled, keeping dependency and execution information. Sub-skill of tech-lead.","https:\u002F\u002Fgithub.com\u002Fmaurodesouza\u002Fai-kanban-app-lab\u002Fblob\u002Fmain\u002Flab-10\u002F.codex\u002Fskills\u002Ftech-lead-publish\u002FSKILL.md",[],[133,110,109,134,114,117,135,136,20,137],"tech lead publish","publish","execution","dependency","information",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":31},"01M6P50D4P2SQSYZM7TZMHZA0J","setup-command-system","Install the Command System architecture in the project","https:\u002F\u002Fgithub.com\u002Fmaurodesouza\u002Fai-kanban-app-lab\u002Fblob\u002Fmain\u002Flab-10\u002F.codex\u002Fskills\u002Fsetup-command-system\u002FSKILL.md",[],[145,122,146,147,115,148,125],"setup command system","system","setup","install",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":31},"01M6P50A032630X9JDDZYJMNV3","reviewer","Review code changes and provide feedback","https:\u002F\u002Fgithub.com\u002Fmaurodesouza\u002Fai-kanban-app-lab\u002Fblob\u002Fmain\u002Flab-10\u002F.codex\u002Fskills\u002Freviewer\u002FSKILL.md",[],[151,156,157,158,159,160],"code","review code","feedback","changes","review"]