astro.p4ni.com
Notes from a theme workshop.
Practical tutorials, honest comparisons, and build-in-public reports — written by an indie developer shipping commercial Astro themes on Cloudflare.
Latest writing
All articles →Claude Code Signs Your Commits. Which Setting Actually Stops It?
The top search result tells you to set includeCoAuthoredBy to false. That key is deprecated, and the replacement has three traps in it. I measured 88 runs to find out which settings remove the Co-Authored-By trailer, which quietly do nothing, and which half of the job each one does.
Claude Code Memory vs CLAUDE.md: What Each Costs and Which One Wins
Auto memory adds 664 tokens to my startup context — and every one of them comes from MEMORY.md. The files it indexes cost exactly nothing until something reads them. I measured the price, the recall, and what happens when the two systems disagree.
What /compact Actually Costs: 126,464 Tokens Your Transcript Never Records
Reddit cannot agree on whether /compact in Claude Code is cheap because the session sits in cache, or expensive because it re-reads everything. I measured it with OpenTelemetry. It re-reads everything, it never touches the cache, and the cost does not appear in your transcript at all.
Claude Code Effort Levels: 45 Runs Measuring What Actually Changes
Every guide to Claude Code effort levels ranks the tiers by how smart each one is. I ran the same three tasks at all five levels, three times each, and scored them against answers computed by executing the code. Across 45 runs there was exactly one wrong answer — and it came from low.
Claude Code Skills vs Subagents: 27 Runs Looking for the Delegation Threshold
Every skills-vs-subagents explainer tells you a subagent is for heavy work. So I made the work heavy — 41 files read one by one, then 201 — and measured whether Claude Code delegates on its own. It never did, not once in 27 runs.
Claude Code Subagents Not Firing: 42 Runs on What Actually Triggers Delegation
Search for why a Claude Code subagent never gets called and every answer tells you to rewrite its description. I built eight subagents that differ only in their description and ran 42 sessions. Across 17 of them, not one was ever called — including the one using the wording the official docs recommend.
Claude Code Skill Frontmatter: 27 Runs on What Actually Loads a Skill
A widely-shared Reddit TIL says Claude Code skill descriptions must be a single line or they will not be picked up. I built seven skills that differ only in their description and ran 27 sessions. The format is irrelevant. What decided every tie was something nobody mentions.
Does Claude Code Read AGENTS.md? I Tested Seven Setups
Half the blog posts say Claude Code falls back to AGENTS.md when CLAUDE.md is missing. The other half say that is flatly false. I built seven fixture directories with canary strings and asked Claude Code itself. It never reads AGENTS.md — but two workarounds do work.

Current theme
Almanac
Directory theme for Astro + Cloudflare Workers + D1
A production-ready directory theme: listings, categories, search, an admin panel, and a D1-backed data layer — deployable to Cloudflare in minutes.