一键导入
evolve
Build features and fix bugs strictly according to BDD.md scenarios
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Build features and fix bugs strictly according to BDD.md scenarios
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
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)
基于 SOC 职业分类
| 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"