Disclaimer: This tutorial was written by deciduous using itself, with no human guidance during the process. It was given one starting prompt and left to go for the entire thing.

What is Deciduous and Why Should I Care?

Here's a scenario you've probably experienced:

You're three months into a project. Someone asks why you chose PostgreSQL over MongoDB. You vaguely remember there was a good reason, something about transactions and the data model, but the specifics? Gone. The Claude session where you worked through the tradeoffs? Long compacted. The Slack thread? Buried. You shrug and say "it made sense at the time."

This is the decision evaporation problem, and it's gotten dramatically worse with AI-assisted development.

The Story We'll Follow

Let me tell you about snowflex, an Elixir library for connecting to Snowflake databases. It started as a simple ODBC wrapper—one module, one connection. Over 130 commits and two years, it evolved through five major architectural shifts: single connections to pools, pools to module-based APIs, ODBC to HTTP REST, single-auth to flexible key management. Each pivot was driven by real production pain. In this tutorial, you'll reconstruct that entire story using deciduous—then add a new chapter by working on a real open issue.

snowflex is the perfect subject because it's small enough to understand completely, but rich enough to have real decision history. Every project has this story buried in its git log. Most never get it told.

The AI Context Problem

When you work with Claude (or any LLM), you make dozens of decisions per session. Claude might explore three authentication approaches, reject two, and implement one. It considers error handling strategies, weighs library choices, evaluates architectural patterns. All of this reasoning happens, informs your code, and then... disappears when the context window compacts or the session ends.

You're left with:

Deciduous solves this.

What Deciduous Does

Deciduous is a decision graph tool that captures every goal, decision, option, action, outcome, and revisit as you work. It stores them in a queryable SQLite database that survives session boundaries. When Claude's context compacts, the graph remains. When you start a new session six months later, you can query "what did we decide about connection pooling?" and get the full reasoning back.

But here's what makes it genuinely useful: Deciduous is designed to be operated BY your AI assistant. You tell Claude to /decision-graph on your repo, or /work on an issue, and Claude handles the logging. You get to focus on the work.

This means:

Two Ways to Use Deciduous

There are two main workflows, and most projects use both:

1. Archaeology (Existing Projects)

Got an existing project with months or years of history? Point Claude at the repo and let it reconstruct the story:

Claude Code Session — Archaeology
> /decision-graph I'll analyze snowflex's git history to reconstruct its decision graph. Let me start by understanding the commit history. git log --oneline --reverse | head -20 a1b2c3d Initial commit - basic ODBC connection d4e5f6g Add query/2 function 7h8i9j0 Add connection pooling with DBConnection k1l2m3n Refactor: module-based API pattern ... I can see several major architectural shifts here. Let me map them out. deciduous add goal "snowflex architecture evolution" -c 95 Created node #1: goal "snowflex architecture evolution" deciduous add option "Direct ODBC connections" -c 90 deciduous add option "DBConnection pooling" -c 90 deciduous link 1 2 -r "initial approach" deciduous link 1 3 -r "scaling response"

Claude reads the git log, identifies pivots, and builds the decision graph. You get months of architectural history mapped in minutes.

2. Forward Logging (New Work)

When you start new work, Claude logs decisions in real-time as it goes:

Claude Code Session — Forward Logging
> /work Fix issue #93 - connection timeout handling I'll start by logging this as a goal and exploring the issue. deciduous add goal "Fix connection timeout handling" -c 90 --prompt-stdin << 'EOF' Fix issue #93 - connection timeout handling EOF Created node #42: goal "Fix connection timeout handling" deciduous add option "Add retry with exponential backoff" -c 80 deciduous add option "Implement circuit breaker pattern" -c 70 deciduous link 42 43 -r "simpler approach" deciduous link 42 44 -r "more resilient but complex" [Claude evaluates options, implements chosen approach, commits...] deciduous add action "Implemented retry with backoff" --commit HEAD deciduous add outcome "Timeout errors reduced 95% in test suite" -c 95

Each decision is captured as it happens. The reasoning is fresh, the context is complete. You didn't have to type a single deciduous command.

A Quick Example

Here's what a decision flow looks like in deciduous:

                ┌────────────────────┐
                │ goal: Fix timeout  │
                │ handling (#93)     │
                └─────────┬──────────┘
                          │
            ┌─────────────┼─────────────┐
            ▼                           ▼
     ┌──────────────┐          ┌──────────────┐
     │ option:      │          │ option:      │
     │ Retry with   │          │ Circuit      │
     │ backoff      │          │ breaker      │
     └──────┬───────┘          └──────────────┘
            │
            ▼
     ┌──────────────┐
     │ decision:    │
     │ Use retry    │──── "simpler, sufficient
     │ approach     │      for this case"
     └──────┬───────┘
            │
            ▼
     ┌──────────────┐
     │ action:      │
     │ Implement    │──── commit: abc123
     │ retry logic  │
     └──────┬───────┘
            │
            ▼
     ┌──────────────┐
     │ outcome:     │
     │ Timeouts     │
     │ reduced 95%  │
     └──────────────┘

Now this decision chain is permanently recorded. Anyone can query the graph to understand not just what was built, but why.

The Core Insight

The insight behind deciduous is simple:

Decisions are more valuable than documentation.

Documentation describes what exists. A decision graph captures why it exists, what alternatives were considered, and what tradeoffs were made. This is the knowledge that actually helps future developers (and future AI sessions).

When an AI assistant logs decisions in real-time, you get documentation as a side effect of the development process—not as an afterthought.

What You'll Get

After setting up deciduous, you'll have:

Why "Deciduous"?

Deciduous trees shed their leaves seasonally but their structure persists. Like Claude's context, the leaves (working memory) fall away—but the decision graph (trunk and branches) remains, ready to support new growth.