| name | issue-workflow |
| description | Use when the user provides a GitHub issue number and wants Codex to complete the whole implementation workflow: update local main from remote, read the issue and comments, create an issue-named branch, implement and test the change, compose and run QA for frontend changes, commit, push, open a pull request, return to main, and comment or label the issue when blocked or waiting on user action. |
Issue Workflow
Use this skill to turn a GitHub issue number into a branch, tested implementation, pushed commits, and a pull request.
Prerequisites
- Identify the issue number from the user request. If the issue number is missing, ask for it.
- Use the GitHub plugin/app when available for issue, comment, PR, and label operations. Use
gh as a fallback when the plugin cannot provide the needed action.
- Before non-trivial implementation work in this repo, follow the local developer-wiki skill or
AGENTS.md instructions.
- Preserve unrelated worktree changes. Do not reset, checkout, or overwrite files unless they are clearly part of this issue or the user explicitly approves.
Start From Main
- Inspect the worktree with
git status --short.
- If unrelated local changes exist, keep them intact. If they block switching branches, stop and ask the user how to proceed.
- Check out
main.
- Update it from remote with
git pull --ff-only unless the repo documents a different mainline flow.
- Read the issue title, body, labels, linked references, and all comments before planning the change.
Branch Naming
- Derive a short kebab-case description from the issue title, using lowercase letters, digits, and hyphens.
- Create a local branch named
<issue-number>-<kebab-case-desc>, for example 35-admin-panel.
- If the exact branch already exists, inspect it and continue there only if it is clearly for the same issue. Otherwise choose a unique suffix such as
35-admin-panel-2.
Implementation
- Implement the issue according to existing project structure and conventions.
- Keep changes scoped to the issue. Avoid unrelated refactors.
- Add or update automated tests for the changed behavior.
- If the issue changes frontend code, styling, user-visible UI state, navigation, or browser workflow behavior, follow the Frontend QA Requirement below.
- Run the relevant build, lint, unit, integration, and QA commands for the touched areas.
Frontend QA Requirement
When frontend behavior is changed during this issue workflow:
- Use the
qa-test skill before completion.
- Add or update checked-in QA case manifests under
e2e/qa/cases/ when existing cases do not cover the changed user path. Compose existing useCase and useScript steps instead of duplicating login/setup.
- Run the relevant QA case with Chrome DevTools against a local dev server.
- Treat unexpected browser console errors, failed deterministic assertions, missing expected UI, failed network calls, or broken screenshots as issues to fix before opening the PR.
- Re-run the QA case after fixes until no issues are found.
- Store screenshots and other evidence under
artifacts/qa/<case-id>/.
- Add the QA screenshots to the PR description or a PR comment. If the available GitHub tool cannot upload screenshots, do not silently omit them: include the local artifact paths in the PR and clearly note the upload limitation in the PR and final response.
- If QA cannot run because credentials, Chrome DevTools, or another required external setup is missing, treat the workflow as User Action Needed or Blocked Handling instead of opening a normal completion PR.
User Action Needed
If completing the issue requires something only the user can do, such as changing a setting in a web UI or granting access:
- Commit the useful local changes made so far.
- Push the branch.
- Comment on the GitHub issue with:
- What was completed.
- The branch name.
- The exact action the user must take.
- How to resume after the action is done.
- Stop after reporting the branch, commit, and issue comment.
- Follow Return To Main before the final response.
Blocked Handling
Treat the work as blocked only after trying to solve the same concrete problem three times without meaningful progress.
When blocked:
- Commit any useful diagnostic or partial changes that should be preserved. Do not commit broken churn that would confuse the next agent.
- Push the branch.
- Comment on the GitHub issue with:
- The branch name.
- The blocker.
- The three attempts made and what happened.
- Relevant logs, errors, commands, or links.
- The next decision or access needed.
- Add the
blocked label to the issue.
- Stop and report the block clearly to the user.
- Follow Return To Main before the final response.
Completion
When implementation is complete and checks pass:
- Review
git status --short and git diff to confirm only issue-related changes are included.
- Commit with a concise message referencing the issue, for example
Issue 35: add admin panel.
- Push the branch.
- Open a pull request against
main.
- Link the issue in the PR description. Include:
- Summary of changes.
- Tests and QA commands run.
- Uploaded QA screenshots, or screenshot artifact paths plus an explicit upload limitation when screenshots could not be uploaded.
- Any known limitations or follow-up work.
- If a QA screenshot was produced and upload support is available, embed or attach it in the PR rather than merely mentioning it.
Return To Main
Before the final response after completion, user-action pause, or blocked bailout:
- Ensure useful issue-related changes have been committed and pushed, or intentionally left uncommitted only when the workflow is blocked before a meaningful commit can be made.
- Inspect
git status --short.
- Switch back to
main.
- If local changes or untracked files would block switching to
main, do not stash, reset, delete, or overwrite them automatically. Stop, report the current branch and blocking paths, and tell the user what must be resolved before the branch can be switched.
- After switching, leave the working tree on
main; do not pull or otherwise change main during cleanup unless the user requested it.
Final Response
End with:
- Issue number and branch.
- PR link, or issue comment link if blocked or waiting on user action.
- Commit hash.
- Tests and QA run, including screenshot paths when applicable.
- Final local branch state, including whether cleanup returned to
main.
- Any remaining user action or residual risk.