agent-bios 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,6 +15,14 @@ core_rules:
15
15
  - make tool descriptions prescriptive about when to call, not only what the tool does
16
16
  - require progress claims to be audited against a tool result from the same session
17
17
  - name the boundary explicitly — what to do without asking, and what to stop and ask about
18
+ derived_at: 2026-09-01
19
+ source_pins:
20
+ - doc: prompting-claude-opus-5
21
+ sha256: 65be3e0b437cbe23cc41bb4f9b7a5031c5a71cd49ab91ec4d19c62738762b086
22
+ pinned_at: 2026-09-01
23
+ - doc: claude-prompting-best-practices
24
+ sha256: 476ddc2744812dced0b520c8f628aecb52df52babdaf82ee5a0b10f25f5bcbdb
25
+ pinned_at: 2026-09-01
18
26
  targets:
19
27
  - claude-fable-5
20
28
  - claude-opus-5
@@ -68,7 +76,12 @@ pick the path.
68
76
  - Delegation: say when *not* to delegate, and cap the spawn count. The helm
69
77
  binding reaches for subagents readily — the reverse of the binding it replaced
70
78
  — and every spawn rebuilds context, reports back, and is then re-read, so
71
- unbounded delegation multiplies cost and latency. File-based memory and custom
79
+ unbounded delegation multiplies cost and latency. Where the harness offers
80
+ deterministic caps, prefer them to prose: under Claude Code and the Agent SDK
81
+ these are `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`,
82
+ `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`, and the SDK's `max_budget_usd` — a
83
+ limit the model cannot talk itself past. Confirm the harness version supports
84
+ them before relying on it. File-based memory and custom
72
85
  tools are the opposite case: they still need an explicit when-to-use trigger.
73
86
  - Autonomous runs with no human watching: say so. Otherwise it asks permission
74
87
  it does not need and blocks. Grant autonomy on minor choices (naming,
@@ -107,7 +120,9 @@ pick the path.
107
120
  treating a quiet call as a hang.
108
121
  - Do not add "summarize every N tool calls" scaffolding — this tier narrates on
109
122
  its own. If it narrates too much for a coding agent, set a silence default
110
- instead: text only on a finding, a direction change, or a blocker.
123
+ instead: text only on a finding, a direction change, or a blocker. Describe the
124
+ cadence you want by example; a positive description of the style outperforms a
125
+ list of what not to do.
111
126
  - Length is a prompting lever, not an effort lever. This tier writes longer
112
127
  answers and longer files than its predecessors, and lowering `effort` does not
113
128
  reliably shorten visible output — only an explicit instruction does. Calibrate
@@ -121,6 +136,36 @@ pick the path.
121
136
  work they did not watch. Lead with the outcome; drop the working shorthand.
122
137
  - Do not show a remaining-context countdown. This tier can start conserving and
123
138
  suggest a fresh session instead of finishing.
139
+ - Re-validate prompt-side vision workarounds carried from older bindings; this
140
+ tier is strong on charts, documents, diagrams, and UI replication, and the
141
+ workaround may now be the thing costing quality. Tools that let it crop and
142
+ visually verify beat thinking alone here.
143
+ - Instruction following stays consistent across the full context window, so a
144
+ rule does not need restating near the end to survive a long session.
145
+
146
+ ## Running with thinking disabled
147
+
148
+ Disabling thinking is accepted only at `high` effort or below, and it is usually
149
+ the wrong lever: thinking on at `low` effort generally beats thinking off at
150
+ comparable cost. Reach for lower effort before reaching for the switch.
151
+
152
+ Two artifacts appear when it is off, and both are prompt-fixable:
153
+
154
+ - A tool call written as **user-facing text** instead of a structured call. The
155
+ turn completes, the call never runs, and in an agentic loop the leaked text
156
+ stays in history and contaminates later turns. Most common on tool-heavy work.
157
+ - Internal XML tags leaking into the visible response.
158
+
159
+ One instruction mitigates both — permission to speak before a call, an out when
160
+ no tool fits, and a general ban on internal tags:
161
+
162
+ > When you use a tool, you may say a brief sentence first. If no tool can express
163
+ > what the user asked for, say so instead of guessing. Do not include internal or
164
+ > system XML tags in your response.
165
+
166
+ Two traps. Naming the tags specifically is **less** effective than the general
167
+ form. And if a prompt anywhere tells this tier not to think or not to reason,
168
+ delete it: that instruction increases tag leakage rather than suppressing it.
124
169
 
125
170
  ## Prompt assembly checklist
126
171
 
@@ -134,8 +179,15 @@ pick the path.
134
179
 
135
180
  ## Sources
136
181
 
137
- Derived from the vendor's published guidance for the `targets` models above.
138
- When a `targets` model changes, re-derive this guide from current vendor
139
- guidance rather than editing around the old rules prompting guidance is
140
- version-bound. `launch/check-prompting-targets.sh` fails when the launch config
141
- binds a model this guide does not list.
182
+ Derived from the vendor's `prompting-claude-opus-5` and
183
+ `claude-prompting-best-practices` documents, at the exact bytes whose hashes are
184
+ recorded in `source_pins` above. The pin is what makes a later vendor edit
185
+ detectable rather than remembered.
186
+
187
+ Prompting guidance is version-bound — this generation inverted advice the last one
188
+ gave — so when a `targets` model changes, re-derive from the current documents
189
+ rather than editing around the old rules.
190
+ `launch/check-prompting-targets.sh` fails when the launch config binds a model
191
+ this guide does not list; that check is about **naming**, and a model added to
192
+ `targets:` satisfies it forever. Whether the guidance was actually re-derived is
193
+ not decidable and is gated nowhere.
@@ -15,6 +15,14 @@ core_rules:
15
15
  - replace blanket ALWAYS/NEVER with decision rules naming the condition each choice applies under
16
16
  - fix the prompt before raising effort — weak output usually means a missing success criterion, dependency rule, tool-routing rule, or verification loop
17
17
  - prompting habits carried from older gpt models cost tokens and can cost accuracy
18
+ derived_at: 2026-09-01
19
+ source_pins:
20
+ - doc: prompt-guidance-gpt-5p6
21
+ sha256: 46181efec9fd1160ef537b0379282a14c1ba32380f2f8149a805128253c1115a
22
+ pinned_at: 2026-09-01
23
+ - doc: latest-model
24
+ sha256: 48f61f648eab971334f6076bc61478d0f2bcd7a50111064722eba267a0f98d61
25
+ pinned_at: 2026-09-01
18
26
  targets:
19
27
  - gpt-5.6-sol
20
28
  - gpt-5.6-terra
@@ -85,9 +93,50 @@ Compose in this order; omit any block that would not change the artifact.
85
93
  - Prefer a self-contained packet over resuming a long history: it is cheaper to
86
94
  reason about and cheaper to cache.
87
95
 
96
+ ## Programmatic tool calling
97
+
98
+ A bounded stage where code processes several tool results and returns a much smaller
99
+ structured result. The qualifier is **reduction**, not parallelism: multiple, parallel,
100
+ or dependent calls alone do not justify it.
101
+
102
+ - Use it for filtering, joining, sorting, ranking, deduplication and aggregation;
103
+ batching across many similar records; repeated deterministic validation; and large
104
+ structured results reducible to a compact schema.
105
+ - Prefer direct calls when one call suffices, when intermediate outputs are already
106
+ small, when each result may change the next decision, when an action needs approval,
107
+ when the answer must preserve citations or native artifacts, or when semantic
108
+ judgment sits between calls.
109
+ - A generic "use programmatic tool calling efficiently" does nothing. State the bounded
110
+ stage, the eligible tools, the output schema, the retry limit, the stop condition, and
111
+ the handoff back to direct judgment. If both routes are needed, define one handoff and
112
+ say not to switch routes or repeat completed work.
113
+ - **Test both outputs.** The program's result and the final assistant message are
114
+ separate; a program can return the right records while the message drops a required
115
+ field, citation, or caveat.
116
+ - Compare the two routes on the same tasks, and count lower token/latency/cost as an
117
+ improvement only when the response still passes the existing evals.
118
+
88
119
  ## Working rules
89
120
 
90
121
  - One clear task per run, with an explicit output contract.
122
+ - **Read the assembled prompt for contradictions.** This tier follows a prompt contract
123
+ closely, so two rules that disagree destabilize it more than a missing rule does —
124
+ the opposite of the intuition that more instruction is safer.
125
+ - State each authority rule once. Repeating "ask first", "do not mutate", or "wait for
126
+ approval" produces approval requests for safe, expected actions.
127
+ - Name the current layer of work — research, design, implementation, review, external
128
+ coordination — on long-running tasks, so the model does not move between layers
129
+ silently.
130
+ - Persisted reasoning is not a free optimization. It helps while the objective and
131
+ priorities hold; once they move, stale reasoning adds tokens and anchors the model to
132
+ a superseded approach. Compact at milestones, not every turn, and treat compacted
133
+ items as opaque.
134
+ - Set the default detail level through the API (`text.verbosity`) and keep the prompt
135
+ for task-specific length and structure; a prompt-only length rule has to be restated
136
+ everywhere.
137
+ - Preserve explicit user values. Where the right value is implicit, give decision
138
+ criteria and let the model reason from context or schema rather than installing
139
+ universal defaults or keyword maps.
91
140
  - Keep reusable prefixes stable and avoid churn in large system prompts. Add
92
141
  explicit cache breakpoints only where they measurably improve cache behavior —
93
142
  a cache write costs 1.25× the uncached input rate, so read the cached-token
@@ -110,9 +159,16 @@ Compose in this order; omit any block that would not change the artifact.
110
159
 
111
160
  ## Sources
112
161
 
113
- Derived from the vendor's published prompting guidance for the `targets` models
114
- above. When a `targets` model changes, re-derive this guide from current vendor
115
- guidance rather than editing around the old rules prompting guidance is
116
- version-bound, and the previous generation's advice inverted on this one.
162
+ Derived from the vendor's `prompt-guidance-gpt-5p6` and `latest-model`
163
+ documents, at the exact bytes whose hashes are recorded in `source_pins` above.
164
+ The pin is what makes a later vendor edit detectable rather than remembered.
165
+
166
+ Prompting guidance is version-bound and the previous generation's advice inverted
167
+ on this one, so when a `targets` model changes, re-derive from the current
168
+ documents rather than editing around the old rules.
169
+ `launch/check-prompting-targets.sh` fails when the launch config binds a model
170
+ this guide does not list; that check is about **naming**, and a model added to
171
+ `targets:` satisfies it forever. Whether the guidance was actually re-derived is
172
+ not decidable and is gated nowhere.
117
173
  `launch/check-prompting-targets.sh` fails when the launch config binds a model
118
174
  this guide does not list.
@@ -15,6 +15,14 @@ core_rules:
15
15
  - make tool descriptions prescriptive about when to call, not only what the tool does
16
16
  - require progress claims to be audited against a tool result from the same session
17
17
  - name the boundary explicitly — what to do without asking, and what to stop and ask about
18
+ derived_at: 2026-09-01
19
+ source_pins:
20
+ - doc: prompting-claude-opus-5
21
+ sha256: 65be3e0b437cbe23cc41bb4f9b7a5031c5a71cd49ab91ec4d19c62738762b086
22
+ pinned_at: 2026-09-01
23
+ - doc: claude-prompting-best-practices
24
+ sha256: 476ddc2744812dced0b520c8f628aecb52df52babdaf82ee5a0b10f25f5bcbdb
25
+ pinned_at: 2026-09-01
18
26
  targets:
19
27
  - claude-fable-5
20
28
  - claude-opus-5
@@ -68,7 +76,12 @@ pick the path.
68
76
  - Delegation: say when *not* to delegate, and cap the spawn count. The helm
69
77
  binding reaches for subagents readily — the reverse of the binding it replaced
70
78
  — and every spawn rebuilds context, reports back, and is then re-read, so
71
- unbounded delegation multiplies cost and latency. File-based memory and custom
79
+ unbounded delegation multiplies cost and latency. Where the harness offers
80
+ deterministic caps, prefer them to prose: under Claude Code and the Agent SDK
81
+ these are `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`,
82
+ `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS`, and the SDK's `max_budget_usd` — a
83
+ limit the model cannot talk itself past. Confirm the harness version supports
84
+ them before relying on it. File-based memory and custom
72
85
  tools are the opposite case: they still need an explicit when-to-use trigger.
73
86
  - Autonomous runs with no human watching: say so. Otherwise it asks permission
74
87
  it does not need and blocks. Grant autonomy on minor choices (naming,
@@ -107,7 +120,9 @@ pick the path.
107
120
  treating a quiet call as a hang.
108
121
  - Do not add "summarize every N tool calls" scaffolding — this tier narrates on
109
122
  its own. If it narrates too much for a coding agent, set a silence default
110
- instead: text only on a finding, a direction change, or a blocker.
123
+ instead: text only on a finding, a direction change, or a blocker. Describe the
124
+ cadence you want by example; a positive description of the style outperforms a
125
+ list of what not to do.
111
126
  - Length is a prompting lever, not an effort lever. This tier writes longer
112
127
  answers and longer files than its predecessors, and lowering `effort` does not
113
128
  reliably shorten visible output — only an explicit instruction does. Calibrate
@@ -121,6 +136,36 @@ pick the path.
121
136
  work they did not watch. Lead with the outcome; drop the working shorthand.
122
137
  - Do not show a remaining-context countdown. This tier can start conserving and
123
138
  suggest a fresh session instead of finishing.
139
+ - Re-validate prompt-side vision workarounds carried from older bindings; this
140
+ tier is strong on charts, documents, diagrams, and UI replication, and the
141
+ workaround may now be the thing costing quality. Tools that let it crop and
142
+ visually verify beat thinking alone here.
143
+ - Instruction following stays consistent across the full context window, so a
144
+ rule does not need restating near the end to survive a long session.
145
+
146
+ ## Running with thinking disabled
147
+
148
+ Disabling thinking is accepted only at `high` effort or below, and it is usually
149
+ the wrong lever: thinking on at `low` effort generally beats thinking off at
150
+ comparable cost. Reach for lower effort before reaching for the switch.
151
+
152
+ Two artifacts appear when it is off, and both are prompt-fixable:
153
+
154
+ - A tool call written as **user-facing text** instead of a structured call. The
155
+ turn completes, the call never runs, and in an agentic loop the leaked text
156
+ stays in history and contaminates later turns. Most common on tool-heavy work.
157
+ - Internal XML tags leaking into the visible response.
158
+
159
+ One instruction mitigates both — permission to speak before a call, an out when
160
+ no tool fits, and a general ban on internal tags:
161
+
162
+ > When you use a tool, you may say a brief sentence first. If no tool can express
163
+ > what the user asked for, say so instead of guessing. Do not include internal or
164
+ > system XML tags in your response.
165
+
166
+ Two traps. Naming the tags specifically is **less** effective than the general
167
+ form. And if a prompt anywhere tells this tier not to think or not to reason,
168
+ delete it: that instruction increases tag leakage rather than suppressing it.
124
169
 
125
170
  ## Prompt assembly checklist
126
171
 
@@ -134,8 +179,15 @@ pick the path.
134
179
 
135
180
  ## Sources
136
181
 
137
- Derived from the vendor's published guidance for the `targets` models above.
138
- When a `targets` model changes, re-derive this guide from current vendor
139
- guidance rather than editing around the old rules prompting guidance is
140
- version-bound. `launch/check-prompting-targets.sh` fails when the launch config
141
- binds a model this guide does not list.
182
+ Derived from the vendor's `prompting-claude-opus-5` and
183
+ `claude-prompting-best-practices` documents, at the exact bytes whose hashes are
184
+ recorded in `source_pins` above. The pin is what makes a later vendor edit
185
+ detectable rather than remembered.
186
+
187
+ Prompting guidance is version-bound — this generation inverted advice the last one
188
+ gave — so when a `targets` model changes, re-derive from the current documents
189
+ rather than editing around the old rules.
190
+ `launch/check-prompting-targets.sh` fails when the launch config binds a model
191
+ this guide does not list; that check is about **naming**, and a model added to
192
+ `targets:` satisfies it forever. Whether the guidance was actually re-derived is
193
+ not decidable and is gated nowhere.
@@ -15,6 +15,14 @@ core_rules:
15
15
  - replace blanket ALWAYS/NEVER with decision rules naming the condition each choice applies under
16
16
  - fix the prompt before raising effort — weak output usually means a missing success criterion, dependency rule, tool-routing rule, or verification loop
17
17
  - prompting habits carried from older gpt models cost tokens and can cost accuracy
18
+ derived_at: 2026-09-01
19
+ source_pins:
20
+ - doc: prompt-guidance-gpt-5p6
21
+ sha256: 46181efec9fd1160ef537b0379282a14c1ba32380f2f8149a805128253c1115a
22
+ pinned_at: 2026-09-01
23
+ - doc: latest-model
24
+ sha256: 48f61f648eab971334f6076bc61478d0f2bcd7a50111064722eba267a0f98d61
25
+ pinned_at: 2026-09-01
18
26
  targets:
19
27
  - gpt-5.6-sol
20
28
  - gpt-5.6-terra
@@ -85,9 +93,50 @@ Compose in this order; omit any block that would not change the artifact.
85
93
  - Prefer a self-contained packet over resuming a long history: it is cheaper to
86
94
  reason about and cheaper to cache.
87
95
 
96
+ ## Programmatic tool calling
97
+
98
+ A bounded stage where code processes several tool results and returns a much smaller
99
+ structured result. The qualifier is **reduction**, not parallelism: multiple, parallel,
100
+ or dependent calls alone do not justify it.
101
+
102
+ - Use it for filtering, joining, sorting, ranking, deduplication and aggregation;
103
+ batching across many similar records; repeated deterministic validation; and large
104
+ structured results reducible to a compact schema.
105
+ - Prefer direct calls when one call suffices, when intermediate outputs are already
106
+ small, when each result may change the next decision, when an action needs approval,
107
+ when the answer must preserve citations or native artifacts, or when semantic
108
+ judgment sits between calls.
109
+ - A generic "use programmatic tool calling efficiently" does nothing. State the bounded
110
+ stage, the eligible tools, the output schema, the retry limit, the stop condition, and
111
+ the handoff back to direct judgment. If both routes are needed, define one handoff and
112
+ say not to switch routes or repeat completed work.
113
+ - **Test both outputs.** The program's result and the final assistant message are
114
+ separate; a program can return the right records while the message drops a required
115
+ field, citation, or caveat.
116
+ - Compare the two routes on the same tasks, and count lower token/latency/cost as an
117
+ improvement only when the response still passes the existing evals.
118
+
88
119
  ## Working rules
89
120
 
90
121
  - One clear task per run, with an explicit output contract.
122
+ - **Read the assembled prompt for contradictions.** This tier follows a prompt contract
123
+ closely, so two rules that disagree destabilize it more than a missing rule does —
124
+ the opposite of the intuition that more instruction is safer.
125
+ - State each authority rule once. Repeating "ask first", "do not mutate", or "wait for
126
+ approval" produces approval requests for safe, expected actions.
127
+ - Name the current layer of work — research, design, implementation, review, external
128
+ coordination — on long-running tasks, so the model does not move between layers
129
+ silently.
130
+ - Persisted reasoning is not a free optimization. It helps while the objective and
131
+ priorities hold; once they move, stale reasoning adds tokens and anchors the model to
132
+ a superseded approach. Compact at milestones, not every turn, and treat compacted
133
+ items as opaque.
134
+ - Set the default detail level through the API (`text.verbosity`) and keep the prompt
135
+ for task-specific length and structure; a prompt-only length rule has to be restated
136
+ everywhere.
137
+ - Preserve explicit user values. Where the right value is implicit, give decision
138
+ criteria and let the model reason from context or schema rather than installing
139
+ universal defaults or keyword maps.
91
140
  - Keep reusable prefixes stable and avoid churn in large system prompts. Add
92
141
  explicit cache breakpoints only where they measurably improve cache behavior —
93
142
  a cache write costs 1.25× the uncached input rate, so read the cached-token
@@ -110,9 +159,16 @@ Compose in this order; omit any block that would not change the artifact.
110
159
 
111
160
  ## Sources
112
161
 
113
- Derived from the vendor's published prompting guidance for the `targets` models
114
- above. When a `targets` model changes, re-derive this guide from current vendor
115
- guidance rather than editing around the old rules prompting guidance is
116
- version-bound, and the previous generation's advice inverted on this one.
162
+ Derived from the vendor's `prompt-guidance-gpt-5p6` and `latest-model`
163
+ documents, at the exact bytes whose hashes are recorded in `source_pins` above.
164
+ The pin is what makes a later vendor edit detectable rather than remembered.
165
+
166
+ Prompting guidance is version-bound and the previous generation's advice inverted
167
+ on this one, so when a `targets` model changes, re-derive from the current
168
+ documents rather than editing around the old rules.
169
+ `launch/check-prompting-targets.sh` fails when the launch config binds a model
170
+ this guide does not list; that check is about **naming**, and a model added to
171
+ `targets:` satisfies it forever. Whether the guidance was actually re-derived is
172
+ not decidable and is gated nowhere.
117
173
  `launch/check-prompting-targets.sh` fails when the launch config binds a model
118
174
  this guide does not list.