Generated with timbers draft sprint-report --since 2026-02-10 --until 2026-02-14 | claude -p --model opus
Sprint Report: Feb 10–14, 2026
Summary
Timbers shipped six releases (v0.5.0 through v0.10.0) across five days, anchored by two major architectural changes: a complete storage pivot from git notes to file-per-entry storage under .timbers/, and a new MCP server exposing 6 tools over stdio. The sprint also overhauled hook integration, added a notes field for capturing design deliberation, and launched a marketing landing page.
By Category
Storage Pivot
- Replaced git notes with
.timbers/<id>.jsonflat files — atomic writes, no merge conflicts, simplerGitOpsinterface (8 methods → 4) - Migrated 37 existing entries from git notes to file storage
- Added
YYYY/MM/DDdirectory layout for scale, with 14 integration tests proving merge safety - Filtered ledger-only commits from
GetPendingCommitsto break the chicken-and-egg loop where entry commits appeared as undocumented - Removed all git notes code and references
MCP Server
timbers servesubcommand usinggo-sdkv1.3.0 with 6 tools (log,pending,query,show,status,prime)- Handlers call
internal/packages directly — no CLI wrapper overhead - Added
idempotentHintto read-only tools for client caching
Hooks & Agent Integration
- Rewrote Claude Code hooks from shell scripts to JSON
settings.jsonformat (the old approach was a complete no-op) - Expanded from single
SessionStarthook to 4 events:SessionStart,PreCompact,Stop,PostToolUse - Fixed
PostToolUsehook to read stdin instead of empty$TOOL_INPUTenv var - Switched hooks from global to project-level scope
- Added graceful degradation — warns with install URL when
timbersisn’t on PATH
Coaching & Entry Quality
- Added
--notesfield for capturing deliberation (journey to a decision, distinct from--whyverdict) - Rewrote coaching: motivated rules (explain why each rule exists), concrete 5-point notes trigger checklist, XML section tags, reduced imperative density
- Tightened
--whycoaching to differentiate from--notes - Added PII/content safety guardrails to prime output
CLI & Developer Experience
--colorflag (never/auto/always) for terminal color scheme compatibility (Solarized Dark fix)- Auto-commit entry files in
timbers log— eliminates the staged-but-uncommitted gap - Renamed
prompt→draftcommand; added ADRdecision-logtemplate - Added
changelogcommand with tag-based grouping - Centralized config directory with cross-platform support (
XDG_CONFIG_HOME, WindowsAppData) .env.localsupport for API keys (avoids Claude Code OAuth conflicts)- Enhanced
doctorwith config checks and GitHub release version check - Routed errors/warnings to stderr when piped
Architecture
AgentEnvinterface with registry pattern — each agent environment (Claude, future Gemini/Codex) is self-contained viainit()registration- Refactored
init,doctor,setup, anduninstallto iterateAllAgentEnvs()
Site & Marketing
- Built marketing landing page: dark theme, GSAP animations, terminal-styled code blocks
- Published Hugo site to GitHub Pages with 5 example artifacts generated from real ledger data
- Regenerated examples twice as ledger grew (55 → 69 entries)
- Fixed Hugo
baseURLafter org migration; chained devblog → pages deploy
Releases & CI
- Tagged v0.5.0 (multi-event hooks), v0.6.0 (storage pivot), v0.7.0 (MCP server), v0.8.0 (notes field), v0.9.0 (coaching rewrite), v0.10.0 (color flag + auto-commit + content safety)
- Switched devblog CI from weekly to daily
- Fixed stale git-notes fetch in CI
Highlights
Storage pivot was the highest-risk change — replacing the entire persistence layer across 26 files while maintaining backward compatibility. The file-per-entry approach proved its merit immediately: merge conflicts disappeared, and the simpler
GitOpsinterface (4 methods vs 8) made the MCP server implementation straightforward.The coaching rewrite validated a council decision: three perspectives independently concluded that quality problems were clarity problems, not model-specific problems. Adding motivation to rules (explaining why each exists) and concrete trigger checklists produced measurably better agent output — entries after the rewrite contain genuine design trade-offs instead of feature descriptions.