[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AC32PHM4E28BRWM03H61A3":3,"skill-same:01M6AC32PHM4E28BRWM03H61A3":52},{"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":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":29,"commitSha":30,"skillDirectory":31,"forksCount":32,"repositoryHtmlUrl":33,"repositoryHomepageUrl":34,"ownerHtmlUrl":35,"ownerBlogUrl":36,"ownerDescription":6,"updatedAt":37,"install":38,"resources":51},"01M6AC32PHM4E28BRWM03H61A3","push",null,"Push current branch changes to origin and create or update the corresponding pull request; use when asked to push, publish updates, or create pull request.","openai\u002Fsymphony","openai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F14957082?v=4","01M6AC29YGCR4S2NTJFV0G8B81","OpenAI","01M6AC2S7WQ2QFC2KVMSGBVNVZ",28014,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsymphony\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fpush\u002FSKILL.md",[],[5,19,20,21,22,23],"create pull request","pull request","create","update","pull","2026-11-10 10:12:30",false,"---\nname: push\ndescription:\n  Push current branch changes to origin and create or update the corresponding\n  pull request; use when asked to push, publish updates, or create pull request.\n---\n\n# Push\n\n## Prerequisites\n\n- `gh` CLI is installed and available in `PATH`.\n- `gh auth status` succeeds for GitHub operations in this repo.\n\n## Goals\n\n- Push current branch changes to `origin` safely.\n- Create a PR if none exists for the branch, otherwise update the existing PR.\n- Keep branch history clean when remote has moved.\n\n## Related Skills\n\n- `pull`: use this when push is rejected or sync is not clean (non-fast-forward,\n  merge conflict risk, or stale branch).\n\n## Steps\n\n1. Identify current branch and confirm remote state.\n2. Run local validation (`make -C elixir all`) before pushing.\n3. Push branch to `origin` with upstream tracking if needed, using whatever\n   remote URL is already configured.\n4. If push is not clean\u002Frejected:\n   - If the failure is a non-fast-forward or sync problem, run the `pull`\n     skill to merge `origin\u002Fmain`, resolve conflicts, and rerun validation.\n   - Push again; use `--force-with-lease` only when history was rewritten.\n   - If the failure is due to auth, permissions, or workflow restrictions on\n     the configured remote, stop and surface the exact error instead of\n     rewriting remotes or switching protocols as a workaround.\n\n5. Ensure a PR exists for the branch:\n   - If no PR exists, create one.\n   - If a PR exists and is open, update it.\n   - If branch is tied to a closed\u002Fmerged PR, create a new branch + PR.\n   - Write a proper PR title that clearly describes the change outcome\n   - For branch updates, explicitly reconsider whether current PR title still\n     matches the latest scope; update it if it no longer does.\n6. Write\u002Fupdate PR body explicitly using `.github\u002Fpull_request_template.md`:\n   - Fill every section with concrete content for this change.\n   - Replace all placeholder comments (`\u003C!-- ... -->`).\n   - Keep bullets\u002Fcheckboxes where template expects them.\n   - If PR already exists, refresh body content so it reflects the total PR\n     scope (all intended work on the branch), not just the newest commits,\n     including newly added work, removed work, or changed approach.\n   - Do not reuse stale description text from earlier iterations.\n7. Validate PR body with `mix pr_body.check` and fix all reported issues.\n8. Reply with the PR URL from `gh pr view`.\n\n## Commands\n\n```sh\n# Identify branch\nbranch=$(git branch --show-current)\n\n# Minimal validation gate\nmake -C elixir all\n\n# Initial push: respect the current origin remote.\ngit push -u origin HEAD\n\n# If that failed because the remote moved, use the pull skill. After\n# pull-skill resolution and re-validation, retry the normal push:\ngit push -u origin HEAD\n\n# If the configured remote rejects the push for auth, permissions, or workflow\n# restrictions, stop and surface the exact error.\n\n# Only if history was rewritten locally:\ngit push --force-with-lease origin HEAD\n\n# Ensure a PR exists (create only if missing)\npr_state=$(gh pr view --json state -q .state 2>\u002Fdev\u002Fnull || true)\nif [ \"$pr_state\" = \"MERGED\" ] || [ \"$pr_state\" = \"CLOSED\" ]; then\n  echo \"Current branch is tied to a closed PR; create a new branch + PR.\" >&2\n  exit 1\nfi\n\n# Write a clear, human-friendly title that summarizes the shipped change.\npr_title=\"\u003Cclear PR title written for this change>\"\nif [ -z \"$pr_state\" ]; then\n  gh pr create --title \"$pr_title\"\nelse\n  # Reconsider title on every branch update; edit if scope shifted.\n  gh pr edit --title \"$pr_title\"\nfi\n\n# Write\u002Fedit PR body to match .github\u002Fpull_request_template.md before validation.\n# Example workflow:\n# 1) open the template and draft body content for this PR\n# 2) gh pr edit --body-file \u002Ftmp\u002Fpr_body.md\n# 3) for branch updates, re-check that title\u002Fbody still match current diff\n\ntmp_pr_body=$(mktemp)\ngh pr view --json body -q .body > \"$tmp_pr_body\"\n(cd elixir && mix pr_body.check --file \"$tmp_pr_body\")\nrm -f \"$tmp_pr_body\"\n\n# Show PR URL for the reply\ngh pr view --json url -q .url\n```\n\n## Notes\n\n- Do not use `--force`; only use `--force-with-lease` as the last resort.\n- Distinguish sync problems from remote auth\u002Fpermission problems:\n  - Use the `pull` skill for non-fast-forward or stale-branch issues.\n  - Surface auth, permissions, or workflow restrictions directly instead of\n    changing remotes or protocols.\n","# Push\n\n## Prerequisites\n\n- `gh` CLI is installed and available in `PATH`.\n- `gh auth status` succeeds for GitHub operations in this repo.\n\n## Goals\n\n- Push current branch changes to `origin` safely.\n- Create a PR if none exists for the branch, otherwise update the existing PR.\n- Keep branch history clean when remote has moved.\n\n## Related Skills\n\n- `pull`: use this when push is rejected or sync is not clean (non-fast-forward,\n  merge conflict risk, or stale branch).\n\n## Steps\n\n1. Identify current branch and confirm remote state.\n2. Run local validation (`make -C elixir all`) before pushing.\n3. Push branch to `origin` with upstream tracking if needed, using whatever\n   remote URL is already configured.\n4. If push is not clean\u002Frejected:\n   - If the failure is a non-fast-forward or sync problem, run the `pull`\n     skill to merge `origin\u002Fmain`, resolve conflicts, and rerun validation.\n   - Push again; use `--force-with-lease` only when history was rewritten.\n   - If the failure is due to auth, permissions, or workflow restrictions on\n     the configured remote, stop and surface the exact error instead of\n     rewriting remotes or switching protocols as a workaround.\n\n5. Ensure a PR exists for the branch:\n   - If no PR exists, create one.\n   - If a PR exists and is open, update it.\n   - If branch is tied to a closed\u002Fmerged PR, create a new branch + PR.\n   - Write a proper PR title that clearly describes the change outcome\n   - For branch updates, explicitly reconsider whether current PR title still\n     matches the latest scope; update it if it no longer does.\n6. Write\u002Fupdate PR body explicitly using `.github\u002Fpull_request_template.md`:\n   - Fill every section with concrete content for this change.\n   - Replace all placeholder comments (`\u003C!-- ... -->`).\n   - Keep bullets\u002Fcheckboxes where template expects them.\n   - If PR already exists, refresh body content so it reflects the total PR\n     scope (all intended work on the branch), not just the newest commits,\n     including newly added work, removed work, or changed approach.\n   - Do not reuse stale description text from earlier iterations.\n7. Validate PR body with `mix pr_body.check` and fix all reported issues.\n8. Reply with the PR URL from `gh pr view`.\n\n## Commands\n\n```sh\n# Identify branch\nbranch=$(git branch --show-current)\n\n# Minimal validation gate\nmake -C elixir all\n\n# Initial push: respect the current origin remote.\ngit push -u origin HEAD\n\n# If that failed because the remote moved, use the pull skill. After\n# pull-skill resolution and re-validation, retry the normal push:\ngit push -u origin HEAD\n\n# If the configured remote rejects the push for auth, permissions, or workflow\n# restrictions, stop and surface the exact error.\n\n# Only if history was rewritten locally:\ngit push --force-with-lease origin HEAD\n\n# Ensure a PR exists (create only if missing)\npr_state=$(gh pr view --json state -q .state 2>\u002Fdev\u002Fnull || true)\nif [ \"$pr_state\" = \"MERGED\" ] || [ \"$pr_state\" = \"CLOSED\" ]; then\n  echo \"Current branch is tied to a closed PR; create a new branch + PR.\" >&2\n  exit 1\nfi\n\n# Write a clear, human-friendly title that summarizes the shipped change.\npr_title=\"\u003Cclear PR title written for this change>\"\nif [ -z \"$pr_state\" ]; then\n  gh pr create --title \"$pr_title\"\nelse\n  # Reconsider title on every branch update; edit if scope shifted.\n  gh pr edit --title \"$pr_title\"\nfi\n\n# Write\u002Fedit PR body to match .github\u002Fpull_request_template.md before validation.\n# Example workflow:\n# 1) open the template and draft body content for this PR\n# 2) gh pr edit --body-file \u002Ftmp\u002Fpr_body.md\n# 3) for branch updates, re-check that title\u002Fbody still match current diff\n\ntmp_pr_body=$(mktemp)\ngh pr view --json body -q .body > \"$tmp_pr_body\"\n(cd elixir && mix pr_body.check --file \"$tmp_pr_body\")\nrm -f \"$tmp_pr_body\"\n\n# Show PR URL for the reply\ngh pr view --json url -q .url\n```\n\n## Notes\n\n- Do not use `--force`; only use `--force-with-lease` as the last resort.\n- Distinguish sync problems from remote auth\u002Fpermission problems:\n  - Use the `pull` skill for non-fast-forward or stale-branch issues.\n  - Surface auth, permissions, or workflow restrictions directly instead of\n    changing remotes or protocols.\n",{"name":5,"description":7},"main","be10a1b79df723d6d7612b5651c8522704dafb2e",".codex\u002Fskills\u002Fpush",2890,"https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsymphony","https:\u002F\u002Fopenai.com\u002Findex\u002Fopen-source-codex-orchestration-symphony\u002F","https:\u002F\u002Fgithub.com\u002Fopenai","https:\u002F\u002Fopenai.com\u002F","2026-09-16 06:14:59",{"source":8,"skillName":5,"commands":39,"prompt":49,"zipAvailable":50},[40,43,46],{"tool":41,"command":42},"npx","npx skills add openai\u002Fsymphony --skill push",{"tool":44,"command":45},"bunx","bunx skills add openai\u002Fsymphony --skill push",{"tool":47,"command":48},"pnpm","pnpm dlx skills add openai\u002Fsymphony --skill push","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsymphony\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fpush\u002FSKILL.md",true,[],[53,62,72,79,87,99],{"skillNo":54,"name":55,"nameZh":6,"description":56,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":57,"categories":58,"keywords":59,"publishedAt":24},"01M6AC34AEWQ2BK7683S9X9TBG","release","Cut a Symphony release by bumping the committed version, landing it, tagging the merged commit, and verifying the Burrito release workflow. Use when asked to release, tag, or retag Symphony.","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsymphony\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Frelease\u002FSKILL.md",[],[55,60,61],"workflow","commit",{"skillNo":63,"name":23,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":24},"01M6AC3117P8HTY7VRDJR0WHKJ","Pull latest origin\u002Fmain into the current local branch and resolve merge conflicts (aka update-branch). Use when Codex needs to sync a feature branch with origin, perform a merge-based update (not rebase), and guide conflict resolution best practices.","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsymphony\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fpull\u002FSKILL.md",[],[23,68,69,70,22,71],"codex","merge","sync","best practices",{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":24},"01M6AC2ZANQQK8D1H01CB25BT4","linear","Use Symphony's `linear_graphql` client tool for raw Linear GraphQL\noperations such as comment editing and upload flows.","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsymphony\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Flinear\u002FSKILL.md",[],[74],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":24},"01M6AC2XX3Z4NEEYM5S37JWEGN","land","Land a PR by monitoring conflicts, resolving them, waiting for checks, and squash-merging when green; use when asked to land, merge, or shepherd a PR to completion.","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsymphony\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fland\u002FSKILL.md",[],[81,69,86],"pr",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":98,"publishedAt":24},"01M6AC2WGC091TYSE940VNE3X1","debug","Investigate stuck runs and execution failures by tracing Symphony and Codex logs with issue\u002Fsession identifiers; use when runs stall, retry repeatedly, or fail unexpectedly.","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsymphony\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fdebug\u002FSKILL.md",[93],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[89,68],{"skillNo":100,"name":61,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":24},"01M6AC2V1NHHM48NEPKJPWG3GE","Create a well-formed git commit from current changes using session history for rationale and summary; use when asked to commit, prepare a commit message, or finalize staged work.","https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsymphony\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fcommit\u002FSKILL.md",[],[61,105,106,21,107,108],"commit message","git","git commit","prepare"]