Decodie

Decodie

Your AI learning companion. Turn every coding session into a structured learning trail.

Get Started View on GitHub

Learn from every line of code the AI writes

Decodie generates structured learning entries as a byproduct of AI-assisted coding. Instead of just getting working code, you get documentation of why each decision was made, what patterns were used, and what alternatives were considered.

You code with AI

Use Claude Code or VSCode as usual

Decodie documents

Patterns, decisions, and rationale are captured

You learn & review

Browse entries in VSCode, the web UI, or both

Four tools, one learning trail

Decodie works however you prefer. Generate entries manually, from your editor, or automatically in CI — then browse them wherever you like.

Claude Code Skill

Six commands — /decodie:observe for real-time documentation, /decodie:analyze for retroactive analysis, /decodie:explain to understand specific code, /decodie:overview to summarize a file or project, and /decodie:verify + /decodie:flag-stale to keep entries in sync as code drifts.

Learn about commands ↓

VSCode Extension

Browse entries in a sidebar as you navigate code. Right-click to analyze files or selections. CodeLens shows entry titles inline. Built-in Q&A.

Learn about the extension ↓

Web UI

Full browsing experience with lessons, progress tracking, smart filtering, interactive Q&A, and syntax highlighting. Runs locally or via DDEV.

Learn about the UI ↓

GitHub Action

Automatically analyze changed files in every PR. Uses the Decodie skill under the hood — same quality, zero manual effort. Posts a summary comment and commits entries.

Learn about the action ↓

GitHub Bot

Mention @decodie-bot in any PR comment. Highlight code for an explanation, or ask it to analyze files on demand.

Learn about the bot ↓

Six commands for understanding — and trusting — your code

Install the skill once, then use these commands in any Claude Code session. Observe, analyze, and overview write to .decodie/ automatically; explain is ephemeral by default and saved on demand. Verify and flag-stale keep entries honest as the code beneath them changes.

/decodie:observe

Activate at the start of a coding session. The agent documents decisions, patterns, and concepts as it writes code in real-time.

  • Entries are written after each meaningful decision, interleaved with coding
  • Tracks session start/end with automatic session IDs
  • Detects duplicates and cross-references related entries
  • Marks entries as superseded when referenced code is rewritten or removed
  • Links to external documentation (MDN, php.net, React docs, etc.)
/decodie:observe
# then code as usual

/decodie:explain

Get an immediate, detailed explanation of a specific piece of code — what it does, how it works, potential issues, and improvement suggestions. Perfect for reading unfamiliar code or learning from AI-generated code.

  • Summary — a high-level overview of what the code does
  • Detailed breakdowns — complex sections explained individually with code excerpts
  • Issues — potential bugs, security concerns, and edge cases flagged with severity
  • Improvements — refactoring suggestions and modern alternatives with rationale
  • Ephemeral by default — nothing is saved unless you explicitly ask
  • Saved explanations use the explain- session prefix
# Paste or reference code, then:
/decodie:explain

# Ask to save a valuable explanation
"save this as an entry"

/decodie:analyze

Generate learning entries from existing code — even code that wasn't written with Claude. Read-only: never modifies source files.

  • Target a single file, a directory, or an entire project
  • Selective mode (default): picks the 3–5 most significant patterns per file
  • Exhaustive mode (--exhaustive): documents every meaningful pattern
  • Analysis sessions are prefixed analyze- for easy identification
  • Same duplicate detection and cross-referencing as observe
/decodie:analyze src/auth/
/decodie:analyze src/utils/helpers.ts
/decodie:analyze --exhaustive src/

Source annotations

Place annotation markers in source code comments to control what gets analyzed. These work in both selective and exhaustive modes.

MarkerScope
@decodie-include:fileEntire file
@decodie-include:classNext class/interface/enum
@decodie-include:functionNext function/method
@decodie-include:start/endBlock region
@decodie-ignore:fileEntire file
@decodie-ignore:classNext class/interface/enum
@decodie-ignore:functionNext function/method
@decodie-ignore:start/endBlock region

@decodie-ignore always takes precedence over @decodie-include when scopes overlap. @decodie-include entries don't count against the 3–5 limit in selective mode.

// @decodie-ignore:class
class GeneratedHandler { ... }

# @decodie-include:function
def calculate_risk_score(portfolio):
    ...

/decodie:verify

Walk every entry's references, confirm the anchored code still resolves, and stamp confirmed entries with the current commit SHA. The deep check — reads each referenced file. Run it after large refactors or before publishing entries.

  • Re-checks each anchor_hash against the current file contents
  • Backfills the sources field on older entries
  • Sets verified_sha to the current HEAD when all anchors resolve
  • Flips stale: true when an anchor is missing or a file has been removed
  • Optional path argument scopes the check to a subdirectory
/decodie:verify
/decodie:verify src/auth/

/decodie:flag-stale

The cheap counterpart to verify, designed for CI on every PR. Diffs source files against each entry's verified_sha and flips stale: true on entries whose files have changed. No source files are read.

  • Uses git diff --name-only — fast enough for every PR
  • Only sets the flag; clearing it requires /decodie:verify
  • Skips entries that have never been verified (no baseline to diff against)
  • Output is machine-friendly so wrapping tools decide PR blocking policy
  • Used under the hood by the GitHub Action
/decodie:flag-stale

/decodie:overview

Generate a high-level overview of a file, directory, or project — purpose, structure, entry points, and dependencies. The onboarding command: run this first when opening unfamiliar code, before drilling in with analyze or explain.

  • Target a single file, a directory, or the whole project
  • Persists by default — overviews are saved as entries so they can be browsed and shared
  • Re-running on the same target overwrites the existing overview in place — no superseded chains
  • Overview sessions are prefixed overview- for easy identification
  • Captures purpose, structure, optional entry_points, and optional dependencies
/decodie:overview src/auth/
/decodie:overview src/utils/helpers.ts
/decodie:overview  # whole project

Browse and create entries without leaving the editor

The Decodie extension brings your learning entries directly into VSCode (and Cursor). Analyze or explain code with a right-click, browse entries as you navigate, and ask follow-up questions.

Sidebar entry browser

Three tabs — File (entries for the active file), All (every entry in the project with filters), and Entry (full detail view).

Right-click analysis

Analyze a file or highlighted selection directly from the context menu. Entries are generated with Claude and appear in the sidebar.

Explain selection

Highlight code and right-click → Explain. Get a summary, detailed breakdowns, issues with severity badges, and improvement suggestions. Save as an entry if valuable.

CodeLens

Entry titles appear as clickable text above lines with associated entries. Click to view the full entry in the sidebar.

Q&A conversations

Ask follow-up questions about any entry. Responses stream in with markdown rendering. Conversations persist across sessions.

Gutter decorations

Subtle blue dots mark lines with entries. Hover for a summary and a link to the full entry.

Filters

Filter the All Entries tab by experience level, decision type, and topic to find what you need.

A full browsing experience for your learning entries

The Decodie UI is a local web app that gives you lessons, progress tracking, filtering, and interactive Q&A — a complete learning dashboard.

Structured lessons

Entries are automatically grouped into topic-based lessons. Create custom lessons with your own ordering and notes.

Progress tracking

Mark entries as learned and track your progress through each lesson with visual progress indicators.

Smart filtering

Filter by experience level, topic, decision type, session, and lifecycle. Switch between lesson and entry views.

Interactive Q&A

Highlight text in any entry and ask follow-up questions. Conversations are saved and persist across sessions.

External doc links

Automatic links to php.net, MDN, Python docs, Drupal API, React, Laravel, and more.

Syntax highlighting

Code snippets are displayed with proper highlighting alongside explanations and key concepts.

Automatic analysis on every pull request

Add one workflow file and every PR gets analyzed automatically. Uses the same Decodie skill as Claude Code — same prompts, same schema, same quality.

Zero manual effort

Runs automatically when a PR is opened or updated. No need to remember to analyze — it just happens.

PR comment summary

Posts a formatted comment with entries grouped by file. Collapsible sections keep it clean. Can be disabled with comment: false.

Commits to .decodie/

Entries are committed to the PR branch, ready for the VSCode extension and web UI. Can be disabled with commit: false.

Fully configurable

Control max files, include/exclude patterns, selective vs exhaustive mode, model selection, and toggle comments and commits independently.

Flexible auth

Supports both Anthropic API keys (pay-per-token) and Claude Code OAuth tokens (Pro/Max subscription).

Workflow setup

Add this file to your repo at .github/workflows/decodie.yml:

name: Decodie
on:
  pull_request:
    types: [opened, synchronize]

jobs:
  analyze:
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: actions/checkout@v4
        with:
          ref: ${{ github.head_ref }}
      - uses: owenbush/decodie-github-action@v1
        with:
          # Use one of:
          anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
          # claude-code-oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

On-demand analysis and explanations in PR comments

Mention @decodie-bot in any pull request comment. Highlight code in a review for an instant explanation, or ask it to analyze files from a top-level comment.

Inline code explanations

Highlight lines in a PR review and mention @decodie-bot. Get a detailed breakdown with summary, issues, improvements, and key concepts — posted as a reply.

On-demand analysis

Ask @decodie-bot analyze this PR from a top-level comment. Generates structured learning entries for the changed files, just like the GitHub Action.

Instant feedback

The bot reacts to your comment immediately and posts a status update with a link to the running workflow, so you always know it’s working.

Complements the Action

The Action documents every PR automatically. The Bot answers specific questions during review. Use both together for full coverage.

Workflow setup

Add this file to your repo at .github/workflows/decodie-bot.yml:

name: Decodie Bot
on:
  issue_comment:
    types: [created]
  pull_request_review_comment:
    types: [created]

jobs:
  bot:
    if: contains(github.event.comment.body, '@decodie-bot')
    runs-on: ubuntu-latest
    permissions:
      contents: read
      pull-requests: write
      issues: write
    steps:
      - uses: actions/checkout@v4
      - uses: owenbush/decodie-github-bot@main
        with:
          # Use one of:
          anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY }}
          # claude-code-oauth-token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}

Choose your path

Pick the setup that matches your workflow.

Claude Code

CLI + Web UI

Install the skill, document as you code, then browse entries in the web UI.

# Install commands
npx @owenbush/decodie-ui install-skill

# Start documenting
/decodie:observe

# Or analyze existing code
/decodie:analyze src/

# Browse entries
npx @owenbush/decodie-ui serve
VSCode

Extension

Install the extension, add API credentials, then right-click to analyze any file.

# Install from Marketplace
# Search "Decodie" in Extensions

# Add credentials
# Create .decodie/.env:
CLAUDE_API_KEY=sk-ant-...

# Right-click any file
# → Decodie: Analyze File
DDEV

One command

If you use DDEV, install everything — the skill, the UI, and HTTPS routing — in one step.

# Install the add-on
ddev add-on get owenbush/decodie-ddev
ddev restart

# Open the UI
ddev decodie

# Start documenting
/decodie:observe
GitHub Action

Automatic on every PR

Add a workflow file and entries are generated automatically on every pull request.

# .github/workflows/decodie.yml
- uses: owenbush/decodie-github-action@v1
  with:
    anthropic-api-key:
      ${{ secrets.ANTHROPIC_API_KEY }}
GitHub Bot

On-demand in PR comments

Mention @decodie-bot in any PR comment for explanations or analysis on demand.

# .github/workflows/decodie-bot.yml
- uses: owenbush/decodie-github-bot@main
  with:
    anthropic-api-key:
      ${{ secrets.ANTHROPIC_API_KEY }}

Under the hood

Decodie stores everything in a self-contained .decodie/ directory as plain JSON. The data format is tool-agnostic — any application that reads JSON can consume it.

Directory structure

All data lives in .decodie/ at the project root. Commit it to share with your team, or .gitignore it to keep it personal.

.decodie/
├── index.json          # Entry metadata
├── config.json         # User preferences
├── .env                # API credentials
├── sessions/
│   ├── 2026-04-01-001.json
│   └── analyze-2026-04-01-001.json
├── conversations/      # Q&A history
├── lessons.json        # Custom lessons
└── progress.json       # Learning progress

Content-based anchoring

References use function signatures and class declarations as anchors — not line numbers. This means entries survive refactoring, code moves, and formatting changes.

  • Exact match, fuzzy match (whitespace differences), and drifted match (file moved)
  • SHA-256 hash of anchor text for quick verification
  • Confidence scoring for each resolution

Entry structure

Each entry captures what a developer needs to understand the code:

  • Title — concise description of the pattern or decision
  • Code snippet — the relevant excerpt
  • Explanation — why this approach, not just what it does
  • Alternatives — what else was considered and trade-offs
  • Key concepts — core takeaways
  • Experience level — foundational, intermediate, advanced, or ecosystem
  • Topics — kebab-case tags for filtering

All the pieces