athola/utility
Scores agent actions by expected gain, cost, uncertainty, and redundancy. Use when deciding whether to dispatch an agent or invoke a tool.
npx skills add https://github.com/athola/claude-night-market --skill utility
A decision framework for agent orchestration based on Liu et al.,
"Utility-Guided Agent Orchestration for Efficient LLM Tool Use"
(arXiv:2603.19896).
Each candidate action is scored by subtracting weighted costs from
expected gain, producing a single utility value that guides action
selection.
The framework prevents over-calling tools and premature stopping by
making both errors costly.
Utility range is [-2.3, 1.0].
A = {respond, retrieve, tool_call, verify, delegate, stop}
| Action | Description |
|-----------|------------------------------------------------------|
| respond | Emit a final answer from current context |
| retrieve | Fetch additional information (search, read, lookup) |
| tool_call | Execute a tool (code runner, API, file write) |
| verify | Check a prior result for correctness or completeness |
| delegate | Spawn a sub-agent or hand off to a specialist |
| stop | Terminate the loop and return current state |
U(a | s_t) = Gain(a | s_t)
- λ₁ · StepCost(a | s_t)
- λ₂ · Uncertainty(a | s_t)
- λ₃ · Redundancy(a | s_t)
| Parameter | Default | Rationale |
|-----------|---------|---------------------------------------------------|
| λ₁ | 1.0 | Cost baseline; all other weights relative to this |
| λ₂ | 0.5 | Weak empirical correlation with outcome (r=0.0131) |
| λ₃ | 0.8 | Redundancy pruning yields ~10% token savings |
Utility range: [-2.3, 1.0].
Positive values indicate the action is worth taking.
Values below the floor (-0.5 default) indicate the action should
be skipped.
Stop the loop when any of the following is true:
stopstop actions score below the floor (default: -0.5)High-gain override: If Gain >= 0.7 for any action, condition
(c) may be overridden.
Document the override and the gain value in your reasoning trace.
Minimal 4-step advisory pattern:
modules/state-builder.md
A permodules/action-selector.md
maximum U(a | s_t), subject to termination conditions
its utility value, and step count before executing
modules/state-builder.md, how topopulate s_t from task context
modules/gain.md, estimating expected informationor progress gain
modules/step-cost.md, token, latency, andmonetary cost tables
modules/uncertainty.md, confidenceestimation and calibration
modules/redundancy.md, detecting duplicateor low-delta actions
modules/action-selector.md, scoringloop and tie-breaking rules
modules/integration.md, wiring utilityscoring into existing orchestration loops
Take athola/utility from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.