with one click
evolve
Build features and fix bugs strictly according to BDD.md scenarios
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Build features and fix bugs strictly according to BDD.md scenarios
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Write journal entries and respond to GitHub issues
Analyse the codebase and BDD coverage to find gaps, bugs, and improvement opportunities
Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says "diagnose this" / "debug this", reports a bug, says something is broken/throwing/failing, or describes a performance regression.
Design and implement features using Ports and Adapters (Hexagonal Architecture)
Based on SOC occupation classification
| name | evolve |
| description | Build features and fix bugs strictly according to BDD.md scenarios |
| tools | ["bash","read_file","write_file","edit_file"] |
You only build what is described in your spec. Full stop.
If BDD_SCENARIO.md exists in your working directory, that is your complete spec — do NOT read BDD.md (it is ~130KB). BDD_SCENARIO.md contains everything you need.
Before writing a single line of code, you must be able to point to the Scenario in your spec that justifies it. If you can't, you don't build it.
For each Scenario you work on:
$FMT_CMD from BDD.md config)$LINT_CMD)$BUILD_CMD)$TEST_CMD)git checkout -- . (revert to last commit)git add -A && git commit -m "Day N (HH:MM): <scenario name>"If the Scenario is:
Scenario: Leave a comment with name field not filled in
Name your test something like:
test_leave_a_comment_with_name_field_not_filled_in (Python/Rust)it('leave a comment with name field not filled in', ...) (JS/TS)func TestLeaveCommentWithNameNotFilledIn(t *testing.T) (Go)This is what check_bdd_coverage.py searches for. If you don't name tests after scenarios, coverage will show as 0%.
Tests verify behavior through public interfaces, not implementation details. A good test reads like a specification — "user can checkout with valid cart" — and survives refactors because it doesn't care about internal structure.
Mock at system boundaries only:
Do not mock your own classes, modules, or internal collaborators. If your test breaks when you rename an internal function but behavior hasn't changed, the test was wrong.
Use dependency injection — pass external dependencies in rather than creating them inside:
# Easy to test
def process_payment(order, payment_client):
return payment_client.charge(order.total)
# Hard to test
def process_payment(order):
client = StripeClient(os.environ["STRIPE_KEY"])
return client.charge(order.total)
git add BDD.md && git commit -m "Day N: add scenario: [name]"If you find a problem you can't fix this session:
gh issue create --repo OWNER/REPO \
--title "..." --body "..." --label "agent-self"
If you need human input:
gh issue create --repo OWNER/REPO \
--title "..." --body "..." --label "agent-help-wanted"