Posts
All the articles I've posted.
-
caveman: cutting Claude's output tokens by 75%
The caveman skill strips filler from Claude responses while preserving technical accuracy — reducing output tokens by ~75% and keeping long sessions inside context limits.
-
diagnose: enforcing the debug loop Claude skips
The diagnose skill enforces a structured debug loop — reproduce, minimise, hypothesise, instrument, fix, regression test — preventing Claude from jumping straight to a proposed solution.
-
grill-me: stress-testing a plan before touching the codebase
The grill-me skill interrogates a proposed plan against the existing domain model before any code is written — surfacing assumptions, naming drift, and design conflicts early.
-
improve-codebase-architecture: review that knows your domain
The improve-codebase-architecture skill runs structured architecture review informed by domain language and ADRs — not generic refactor suggestions.
-
Building a data quality dashboard on top of Tuva's DQI mart
Tuva's DQI mart produces fill rates and anomaly flags for every input field in a claims dataset. Here's how to surface that in a Streamlit dashboard with meaningful visualizations.
-
Building a multipage Streamlit app with st.navigation() — the modern way
Streamlit 1.31 added st.navigation() as the modern replacement for the pages/ directory convention. Here's how the new API works and why it's better for anything beyond a simple demo.
-
Connecting Streamlit to DuckDB: read-only mode and the lock problem
A Streamlit app reading from a DuckDB file while dbt might be writing to it requires read-only mode and careful connection handling. Here's the pattern that works.
-
dbt macro resolution order: a real-world debugging story
A Compilation Error in a Tuva Project model revealed the exact resolution order dbt uses when looking up macros — and why that order matters when you're three packages deep.