Skills and rules
Teach the agent your procedures once. It follows them on the next run.
Skills package a repeatable workflow. Rules inject durable instructions. AGENTS.md is the repo-level brief. Together they replace “paste the same paragraph every chat.”
Skills
Bundled skills ship with the app. You can add more under ~/.eyeban/skills or .eyeban/skills as SKILL.md packages. The agent sees a catalog with a token budget — not an infinite dump.
Rules
Put .mdc files in .eyeban/rules. Use them for coding standards, forbidden paths, and review checklists.
AGENTS.md
A root AGENTS.md (and nested ones) steer the agent the way a senior teammate’s notes would. Keep secrets out of it.
Custom agents
.eyeban/agents can define specialized agent personalities for Task subagents. This is local configuration, not a cloud agent fleet.
Skills are procedures. They do not grant extra permissions; Ask / Allow still apply.
41 def charge(order, wallet): 42 tax = order.subtotal * 0.09 43 total = order.subtotal + tax 44 if wallet.balance < total: 45 raise InsufficientFunds(total) 46 wallet.debit(total) 47 return Receipt(order.id, total)
Split regional tax from the hardcoded rate, and check coverage before debit.
Read 6 files · 2 searches · 1 test
charge still hard-codes 0.09. tax_for(region) exists. I will wire can_cover to the wallet.
12-line patch across two files. Review the diff.
Before touching checkout, write the approach for multi-region tax.
Plan · product shell and edits are limited
Freeze the tax_for contract, then change charge, then update test_charge.
Plan is ready. I switch to Agent after you confirm.
Where does charge take tax from, and which test pins it?
Ask · read only
The rate is checkout.py:42. test_charge asserts the same 0.09.
Nothing was written.
InsufficientFunds also fires for tax-exempt orders. Evidence first.
Debug · reproduce before the fix
It fails when the region is exempt and wallet.can_cover still sees the flat rate.
Failure trail is ready. The fix waits for your OK.
- tax = order.subtotal * 0.09 + tax = order.tax_for(region) - if wallet.balance < total: + if not wallet.can_cover(total, region): wallet.debit(total)