Implement
Turn a GitHub issue into verified code on a feature branch.
Procedure
Read the issue. Understand the objective, acceptance criteria, and scope boundaries. If anything is ambiguous, comment on the issue and wait for clarification — do not begin implementation until the question is answered.
Check contribution standards. Look for the repository's contributing guide, commit conventions, and branch naming rules. Follow them. If the repository doesn't define its own, follow ours.
Create a feature branch. Name it to reflect the issue (e.g., 42-add-retry-logic).
Trace the affected code. Read the paths the change touches. Confirm your understanding before editing.
Implement the change. Every change should have a clear purpose traceable to the acceptance criteria.
Write or update tests. Tests should verify the acceptance criteria directly.
Verify and commit. Run the project's checks (tests, linter, build). If any fail, fix the failure before committing. Commit following the repository's standards.
Confirm acceptance criteria. Walk through each criterion and confirm it is met with objective evidence.
When Steps Fail
- Tests fail after implementation. Read the failure output. Fix the root cause — do not skip or disable tests. If the failure is unrelated to your change, document it in the PR description and flag it for the reviewer.
- Checks fail on commit. Identify which check failed (lint, type-check, build). Fix the violation. Do not commit with known failures.
- Branch conflicts with the default branch. Rebase onto the default branch and resolve conflicts. Re-run all checks after resolving.
- Acceptance criteria are unverifiable with the current codebase. Comment on the issue explaining what's missing (e.g., no test infrastructure, missing fixture data). Propose a path forward rather than guessing.
- Branch is in a bad state. If iterating has introduced confusion, reset to the last clean commit (
git reset --hard <commit>) and re-implement from that point. A clean restart is faster than debugging tangled changes.
Examples
Example 1: Adding a configuration option
Issue: "Add a --timeout flag to the CLI with a default of 30 seconds."
Steps taken:
- Read the issue — acceptance criteria: flag exists, default is 30s, value is passed to the HTTP client.
- Check CONTRIBUTING.md — project uses conventional commits, branch naming is
<issue>-<slug>.
- Create branch
58-add-timeout-flag.
- Trace code — CLI argument parsing in
src/cli.py, HTTP client in src/client.py.
- Add
--timeout argument with default 30, thread the value to client.request(timeout=...).
- Add tests: flag parsing test, default value test, client receives timeout test.
- Run
make check — all pass. Commit: feat(cli): Add --timeout flag with 30s default.
- Walk acceptance criteria — flag exists, default is 30s, value reaches HTTP client. All met.
Example 2: Fixing a bug with a regression test
Issue: "CSV upload returns 500 on Unicode input."
Steps taken:
- Read issue — acceptance criteria: Unicode CSV returns 200, data preserved, regression test added.
- Contribution standards — conventional commits, branch format
<issue>-<slug>.
- Create branch
73-fix-unicode-csv-upload.
- Trace code — upload handler in
src/api/upload.py, encoding at line 42 uses ascii.
- Change encoding to
utf-8. Add input validation for encoding detection.
- Add test: upload a CSV with Japanese characters, assert 200 and correct data.
- Run
pytest && ruff check — all pass. Commit: fix(api): Handle Unicode in CSV upload.
- Acceptance criteria — 200 response, data preserved, regression test. All met.
Troubleshooting
Issue acceptance criteria are ambiguous.
Cause: The issue was not triaged thoroughly.
Solution: Comment on the issue with specific questions. Do not start implementation until the criteria are clear.
Unfamiliar codebase or domain.
Cause: The change touches code you haven't read before.
Solution: Spend time tracing before editing. Read tests for the module — they document expected behavior. If the codebase has architecture docs, read them first.
Tests pass locally but fail in CI.
Cause: Environment differences (OS, dependency versions, database state).
Solution: Check the CI logs for the specific failure. Reproduce locally by matching the CI environment as closely as possible. Do not push workarounds without understanding the root cause.
Verification
All acceptance criteria from the issue are met. Tests pass. The branch is clean and ready for a pull request.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: waieez-proompts-implement3description: Implement4---56# Implement78Turn a GitHub issue into verified code on a feature branch.910## Procedure11121. **Read the issue.** Understand the objective, acceptance criteria, and scope boundaries. If anything is ambiguous, comment on the issue and wait for clarification — do not begin implementation until the question is answered.13142. **Check contribution standards.** Look for the repository's contributing guide, commit conventions, and branch naming rules. Follow them. If the repository doesn't define its own, follow [ours](../../CONTRIBUTING.md).15163. **Create a feature branch.** Name it to reflect the issue (e.g., `42-add-retry-logic`).17184. **Trace the affected code.** Read the paths the change touches. Confirm your understanding before editing.19205. **Implement the change.** Every change should have a clear purpose traceable to the acceptance criteria.21226. **Write or update tests.** Tests should verify the acceptance criteria directly.23247. **Verify and commit.** Run the project's checks (tests, linter, build). If any fail, fix the failure before committing. Commit following the repository's standards.25268. **Confirm acceptance criteria.** Walk through each criterion and confirm it is met with objective evidence.2728## When Steps Fail2930- **Tests fail after implementation.** Read the failure output. Fix the root cause — do not skip or disable tests. If the failure is unrelated to your change, document it in the PR description and flag it for the reviewer.31- **Checks fail on commit.** Identify which check failed (lint, type-check, build). Fix the violation. Do not commit with known failures.32- **Branch conflicts with the default branch.** Rebase onto the default branch and resolve conflicts. Re-run all checks after resolving.33- **Acceptance criteria are unverifiable with the current codebase.** Comment on the issue explaining what's missing (e.g., no test infrastructure, missing fixture data). Propose a path forward rather than guessing.34- **Branch is in a bad state.** If iterating has introduced confusion, reset to the last clean commit (`git reset --hard <commit>`) and re-implement from that point. A clean restart is faster than debugging tangled changes.3536## Examples3738### Example 1: Adding a configuration option3940**Issue:** "Add a `--timeout` flag to the CLI with a default of 30 seconds."4142**Steps taken:**431. Read the issue — acceptance criteria: flag exists, default is 30s, value is passed to the HTTP client.442. Check CONTRIBUTING.md — project uses conventional commits, branch naming is `<issue>-<slug>`.453. Create branch `58-add-timeout-flag`.464. Trace code — CLI argument parsing in `src/cli.py`, HTTP client in `src/client.py`.475. Add `--timeout` argument with default 30, thread the value to `client.request(timeout=...)`.486. Add tests: flag parsing test, default value test, client receives timeout test.497. Run `make check` — all pass. Commit: `feat(cli): Add --timeout flag with 30s default`.508. Walk acceptance criteria — flag exists, default is 30s, value reaches HTTP client. All met.5152### Example 2: Fixing a bug with a regression test5354**Issue:** "CSV upload returns 500 on Unicode input."5556**Steps taken:**571. Read issue — acceptance criteria: Unicode CSV returns 200, data preserved, regression test added.582. Contribution standards — conventional commits, branch format `<issue>-<slug>`.593. Create branch `73-fix-unicode-csv-upload`.604. Trace code — upload handler in `src/api/upload.py`, encoding at line 42 uses `ascii`.615. Change encoding to `utf-8`. Add input validation for encoding detection.626. Add test: upload a CSV with Japanese characters, assert 200 and correct data.637. Run `pytest && ruff check` — all pass. Commit: `fix(api): Handle Unicode in CSV upload`.648. Acceptance criteria — 200 response, data preserved, regression test. All met.6566## Troubleshooting6768**Issue acceptance criteria are ambiguous.**69Cause: The issue was not triaged thoroughly.70Solution: Comment on the issue with specific questions. Do not start implementation until the criteria are clear.7172**Unfamiliar codebase or domain.**73Cause: The change touches code you haven't read before.74Solution: Spend time tracing before editing. Read tests for the module — they document expected behavior. If the codebase has architecture docs, read them first.7576**Tests pass locally but fail in CI.**77Cause: Environment differences (OS, dependency versions, database state).78Solution: Check the CI logs for the specific failure. Reproduce locally by matching the CI environment as closely as possible. Do not push workarounds without understanding the root cause.7980## Verification8182All acceptance criteria from the issue are met. Tests pass. The branch is clean and ready for a pull request.8384---85> Converted and distributed by [TomeVault](https://tomevault.io/claim/waieez) — claim your Tome and manage your conversions.86<!-- tomevault:4.0:skill_md:2026-04-15 -->