Your AI learning companion. Turn every coding session into a structured learning trail.
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.
Use Claude Code or VSCode as usual
Patterns, decisions, and rationale are captured
Browse entries in VSCode, the web UI, or both
Decodie works however you prefer. Generate entries manually, from your editor, or automatically in CI — then browse them wherever you like.
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.
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 ↓Full browsing experience with lessons, progress tracking, smart filtering, interactive Q&A, and syntax highlighting. Runs locally or via DDEV.
Learn about the UI ↓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 ↓Mention @decodie-bot in any PR comment. Highlight code for an explanation, or ask it to analyze files on demand.
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:observeActivate at the start of a coding session. The agent documents decisions, patterns, and concepts as it writes code in real-time.
/decodie:observe
# then code as usual
/decodie:explainGet 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.
explain- session prefix# Paste or reference code, then:
/decodie:explain
# Ask to save a valuable explanation
"save this as an entry"
/decodie:analyzeGenerate learning entries from existing code — even code that wasn't written with Claude. Read-only: never modifies source files.
--exhaustive): documents every meaningful patternanalyze- for easy identification/decodie:analyze src/auth/
/decodie:analyze src/utils/helpers.ts
/decodie:analyze --exhaustive src/
Place annotation markers in source code comments to control what gets analyzed. These work in both selective and exhaustive modes.
| Marker | Scope |
|---|---|
@decodie-include:file | Entire file |
@decodie-include:class | Next class/interface/enum |
@decodie-include:function | Next function/method |
@decodie-include:start/end | Block region |
@decodie-ignore:file | Entire file |
@decodie-ignore:class | Next class/interface/enum |
@decodie-ignore:function | Next function/method |
@decodie-ignore:start/end | Block 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:verifyWalk 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.
anchor_hash against the current file contentssources field on older entriesverified_sha to the current HEAD when all anchors resolvestale: true when an anchor is missing or a file has been removed/decodie:verify
/decodie:verify src/auth/
/decodie:flag-staleThe 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.
git diff --name-only — fast enough for every PR/decodie:verify/decodie:flag-stale
/decodie:overviewGenerate 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.
overview- for easy identificationpurpose, structure, optional entry_points, and optional dependencies/decodie:overview src/auth/
/decodie:overview src/utils/helpers.ts
/decodie:overview # whole project
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.
Three tabs — File (entries for the active file), All (every entry in the project with filters), and Entry (full detail view).
Analyze a file or highlighted selection directly from the context menu. Entries are generated with Claude and appear in the sidebar.
Highlight code and right-click → Explain. Get a summary, detailed breakdowns, issues with severity badges, and improvement suggestions. Save as an entry if valuable.
Entry titles appear as clickable text above lines with associated entries. Click to view the full entry in the sidebar.
Ask follow-up questions about any entry. Responses stream in with markdown rendering. Conversations persist across sessions.
Subtle blue dots mark lines with entries. Hover for a summary and a link to the full entry.
Filter the All Entries tab by experience level, decision type, and topic to find what you need.
The Decodie UI is a local web app that gives you lessons, progress tracking, filtering, and interactive Q&A — a complete learning dashboard.
Entries are automatically grouped into topic-based lessons. Create custom lessons with your own ordering and notes.
Mark entries as learned and track your progress through each lesson with visual progress indicators.
Filter by experience level, topic, decision type, session, and lifecycle. Switch between lesson and entry views.
Highlight text in any entry and ask follow-up questions. Conversations are saved and persist across sessions.
Automatic links to php.net, MDN, Python docs, Drupal API, React, Laravel, and more.
Code snippets are displayed with proper highlighting alongside explanations and key concepts.
Add one workflow file and every PR gets analyzed automatically. Uses the same Decodie skill as Claude Code — same prompts, same schema, same quality.
Runs automatically when a PR is opened or updated. No need to remember to analyze — it just happens.
Posts a formatted comment with entries grouped by file. Collapsible sections keep it clean. Can be disabled with comment: false.
Entries are committed to the PR branch, ready for the VSCode extension and web UI. Can be disabled with commit: false.
Control max files, include/exclude patterns, selective vs exhaustive mode, model selection, and toggle comments and commits independently.
Supports both Anthropic API keys (pay-per-token) and Claude Code OAuth tokens (Pro/Max subscription).
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 }}
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.
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.
Ask @decodie-bot analyze this PR from a top-level comment. Generates structured learning entries for the changed files, just like the GitHub Action.
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.
The Action documents every PR automatically. The Bot answers specific questions during review. Use both together for full coverage.
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 }}
Pick the setup that matches your workflow.
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
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
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
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 }}
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 }}
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.
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
References use function signatures and class declarations as anchors — not line numbers. This means entries survive refactoring, code moves, and formatting changes.
Each entry captures what a developer needs to understand the code:
Claude Code skill for generating and analyzing entries.
Web UI with lessons, progress tracking, and Q&A. Available on npm.
VSCode extension. Available on the Marketplace.
GitHub Action for automatic PR analysis. On the Marketplace.
Interactive bot for on-demand analysis and explanations in PR comments.
DDEV add-on for one-command local setup.
Shared data layer — types, parser, reference resolver. On npm.