1/2 · Why I combined three Claude Code skills
Flow Lean fused three response skills. Its historical eval beat each comparator and caught a candidate offering a migration against an inferred target.
Jump to summaryWritten by Florian Bruniaux
AI Founding Engineer at Méthode Aristote, 13 years scaling engineering teams from developer to CTO. Builds open-source developer tools, see what else I've shipped.
TL;DR
| What | Evidence and boundary |
|---|---|
| What I built | Flow Lean combines solution altitude, action-first structure, and response density in one task-sensitive skill |
| Historical benchmark | The v0.2.0 harness compared a plain baseline, Flow Lean, and each source skill across 13 cases |
| Historical result | Flow Lean had the highest weighted score in all four runs, with one trial per case and one judge run |
| Failure caught | One candidate offered to run a live Supabase migration against a target inferred from context |
| Current state | v0.3.2 has a 17-case battery and additional behavior that has not received a fresh comparative run |
The first useful result from Flow Lean’s evaluation harness was not a higher score. It was a response that offered to execute a live Supabase migration against a target inferred from context. The plain baseline in the same case declined and asked which environment to use.
The skill was supposed to make answers shorter without weakening judgment. It had done the opposite on a destructive action. That failure changed the contract: compression now stops before the model offers or performs a destructive action, not only before execution.
That incident is also why this article keeps historical measurements separate from the current skill. Flow Lean has evolved since the benchmark. The old runs remain inspectable evidence for v0.2.0, but they do not measure every behavior in v0.3.2.
Three useful skills produced one conflicting stack
Caveman, ponytail, and i-have-adhd each addressed a different source of waste in agent output.
| Skill | Discipline | Missing boundary |
|---|---|---|
| ponytail | Decide whether anything needs building, then choose the smallest implementation | Does not determine response shape or density |
| i-have-adhd | Put the answer or action first, then make steps explicit | Can force plan-shaped answers onto decisions and originally asked for time estimates |
| caveman | Remove prose that carries no action, evidence, context, or decision | Can compress away the reasoning that preserves a recommendation’s meaning |
Running one skill tightened one dimension. Stacking all three created competing instructions. A recommendation about SSR versus SSG should lead with a verdict and preserve the reasoning that changes that verdict. Turning it into a numbered implementation plan buries the decision. Compressing the remaining prose too hard can leave more detail about the rejected option than the selected one.
Flow Lean replaces that stack with one rule: every token must carry required context, action, evidence, uncertainty, or safety information.

The task gate has priority over the requested intensity. A factual lookup can use ultra. An explanation keeps the steps needed to understand the mechanism. A recommendation receives little compression. Destructive actions, security, secrets, permissions, and material cost switch compression off for that response.
A hard word cap damaged an Anthropic evaluation
Uniform brevity is not the same behavior as task-sensitive density. Anthropic documented the difference in its April 2026 Claude Code quality postmortem.
The company added a system-prompt instruction that limited text between tool calls to 25 words and final responses to 100 words unless the task required more detail. Anthropic reported that one broader evaluation fell by 3% for Opus 4.6 and 4.7. The prompt shipped on April 16 and was reverted in the April 20 release.
That result does not prove Flow Lean’s gate is correct. It supports the narrower claim that a global length cap can reduce performance even after an initial evaluation suite passes. Flow Lean therefore selects density by task type and retains separate checks for fact, safety, and decision fidelity.
The v0.2.0 benchmark was a comparison, not proof
The first release shipped with a manual regression battery. It could show whether the skill followed its own rules in a fresh session. It could not show whether Flow Lean improved on a plain prompt or on the three skills it claimed to replace.
The API-backed harness came from i-have-adhd’s existing runner. I adapted its cases and weighted rubric, then ran three conditions: baseline, Flow Lean, and one comparator. The harness isolated each condition from locally installed skills and used blind judging. Raw responses and scores remain in the repository’s evals/results directory.
| Compared with | Baseline | Flow Lean | Comparator |
|---|---|---|---|
| Plain baseline | 4.32 | 4.52 | n/a |
| Caveman | 4.24 | 4.62 | 3.98 |
| Ponytail | 4.28 | 4.80 | 4.57 |
| i-have-adhd | 4.12 | 4.85 | 4.21 |
These are historical v0.2.0 results from a 13-case suite. Each case received one trial on Claude Sonnet 5, followed by one judge run. Repeating an unchanged comparison during development moved the weighted score by 0.2 to 0.3 points. The table therefore shows that Flow Lean led those four runs. It does not establish a stable effect size or generalize to another model, judge, suite, or current release.
The same snapshot measured mixed-work net compression around 20 to 30%. That is narrower than claims made for prose-only compression because the suite also included decisions, explanations, code, and safety cases where aggressive compression should stop.
The harness found two regressions the score could hide
The Supabase case exposed a gap in the destructive-action rule. The candidate offered a mutation against an unconfirmed target. The fix expanded auto-suspend to cover offering an irreversible action as well as executing one.
A second regression came from an attempted precision rule. The skill asked for byte-exact external signatures when uncertainty remained. On re-test, the model produced a more specific and more confidently wrong answer. I reverted that wording and replaced it with a smaller rule: verify the exact external detail, mark it unverified, or omit it.
Both cases matter more than the average score. A weighted result can rise while one high-cost behavior gets worse. Flow Lean therefore separates form checks from fact checks and treats a false factual claim as a blocker rather than another point in the average.
Version 0.3.2 has a larger contract and no new comparison yet
Flow Lean v0.3.0 expanded the manual battery from 13 to 17 cases. It added adaptive recaps, stable handles such as D1 and R1, a declarative Skills used: footer, and a rule that response length must not reduce verification depth. Version 0.3.1 documented native Codex marketplace installation and automatic-routing canaries. Version 0.3.2 clarified portability and revised the README diagram. Both changed documentation and distribution metadata without changing the skill or its 17-case battery, as recorded in the changelog.
Those additions have regression tests, but the 17-case suite has not received a new baseline and comparator run. The correct current claim is therefore split:
- The v0.2.0 skill led four historical 13-case comparisons
- The v0.3.2 skill defines a broader 17-case manual contract whose comparative performance remains unmeasured
Combining those statements into “Flow Lean v0.3.2 beats the alternatives” would claim evidence that does not exist.
Installation does not make a skill the default
Flow Lean can be installed as a Claude Code plugin:
claude plugin marketplace add FlorianBruniaux/flow-lean
claude plugin install flow-lean@flow-lean
Current Codex versions with plugin support use the same repository:
codex plugin marketplace add FlorianBruniaux/flow-lean
codex plugin add flow-lean@flow-lean
A plugin listing proves availability. It does not prove automatic selection or behavior. The repository documents separate canaries for installation, explicit invocation, and automatic routing.
The remaining design question is persistence. Loading the complete skill for every Claude Code response adds its complete workflow to every turn, even when the user only needs the communication defaults. Part 2 shows how a compact Claude Code Output Style carries those defaults while the full skill remains available for task-specific behavior.
Try the current contract, not only the old score
The current EVAL.md contains 17 cases. It grades form and factual accuracy separately and includes controls for recap behavior, the footer, review depth, and false claims of independent review.
The useful failure report contains the prompt, selected mode, host and version, exact output, and the rule that failed. A case where the skill compresses away a decision, hides a destructive consequence, or invents an external signature can change the contract. Another unscoped average score cannot.
YSNK
(You should now know)
- Flow Lean replaces three competing response skills with one task-sensitive gate
- The published scores describe v0.2.0 on 13 cases, not current v0.3.2 behavior
- One trial per case and one judge run cannot establish a stable effect size
- The eval caught a destructive-action regression and a precision rule that increased hallucination risk
- Installing a skill proves availability, while persistent response defaults need a separate delivery layer
Continue with Part 2: Claude selected my output style. Then ignored it for the Output Style setup and the checks that show whether Claude follows it.
Go Further in the Claude Code Guide
Practical resources selected to help you take the next step.
Open-source galaxy
Projects used in this path
Related articles
Portable agent configuration is a release system, not a shared folder
A release model for instructions, skills, Output Styles, hooks, MCP definitions and BM25 routing without confusing installed files with working behavior.
2/2 · Claude selected my output style. Then ignored it
Claude Code selected flow-lean but skipped its footer. A casing fix showed why installation, selection, and behavior need separate evidence.
Claude is my second contributor: what real Git stats show
6 contributors in our git history. One is an AI. What the commit patterns actually look like after months of Claude Code, beyond the marketing claims.
Go deeper
Step-by-step guides that put this into practice.