Skip to main content

learnlance 🧠🔍

A learning companion for Claude Code, OpenAI Codex, and other coding agents. Every time an agent finishes a turn and has generated or edited code, learnlance quietly:

  1. reads the session transcript and pulls out the code that was just written,
  2. asks Claude "what concepts could a developer learn from this?" — e.g. "you used a delta function, here's what delta encoding is",
  3. merges those concepts into a persistent knowledge graph, and
  4. regenerates an interactive HTML graph you can open any time.

No API key required. By default it reuses the claude CLI you're already logged into (your Claude Code subscription), so there's nothing extra to set up.

So instead of code just appearing, you build up a visual map of everything you've picked up along the way — new nodes light up as 🌱 new topics learned.

Why it won't slow you down or break your session

  • The API call runs in a detached background process — Claude Code never waits.
  • The hook is wrapped so any failure is logged and swallowed; it can never interrupt your coding session.
  • Turns with no substantive code make no API call (no cost, no noise).

Install (no pip, no API key)

# just install the Claude Code Stop hook — it uses your logged-in `claude`
python -m learnlance install

Run this from the learnlance/ project folder. That's it — start (or restart) Claude Code and code as usual.

If claude isn't on your PATH, point learnlance at it:

python -m learnlance config --claude-bin "C:\path\to\claude.cmd"

Prefer a global learnlance command? pip install -e . in this folder, then use learnlance instead of python -m learnlance everywhere.

Prefer a direct API call instead of the CLI? learnlance config --backend api --set-key sk-ant-...

Use it

learnlance show      # render + open the interactive knowledge graph in your browser
learnlance list -v   # list learned concepts (with explanations) in the terminal
learnlance stats     # quick counts, broken down by category
learnlance help      # show every available command

The show view opens with a live loading spinner while it renders, then two declutter controls in the sidebar: show related concepts (reveal the dimmed umbrella nodes) and a min link strength slider (hide one-off links).

OpenAI Codex

Install the project-local Codex hooks with:

python -m learnlance install --codex

Codex's native apply_patch edits are captured through PostToolUse and analyzed at Stop. After installing, review/trust the hook in Codex with /hooks. Use --in-chat if you want Codex to analyze its own work.

When you run any learnlance command in a project, it automatically detects active agent environments and installs missing project hooks. This also works when you move to a new project after the first setup; no separate setup command is required.

Add a concept Claude missed

learnlance add "debouncing"                 # searches the current dir for the topic
learnlance add "topological sort" --path ./src
learnlance add "event sourcing" --force     # add even if it's not found in the code

learnlance greps your codebase for the topic, sends the matching snippets to Claude, and adds the concept (and any tightly-related ones actually present) just like the hook does.

Clear the graph

learnlance clear "delta encoding"   # remove one concept (and any orphaned related nodes)
learnlance clear                    # wipe the entire graph (asks first; -y to skip)

Per-session markdown recaps are written to ~/.learnlance/insights/<session>.md.

Configuration

learnlance config                      # show current settings
learnlance config --cli-model haiku    # make the cli backend use a faster model
learnlance config --max-topics 3       # fewer concepts per turn
learnlance config --background off      # run inline (blocks until analysis is done)
learnlance config --disable             # pause without uninstalling the hook
learnlance config --backend api --set-key sk-ant-...   # switch to the API backend

Everything lives under ~/.learnlance/: graph.json (the graph), graph.html (the visualization), insights/ (markdown recaps), learnlance.log (diagnostics).

Uninstall

python -m learnlance uninstall

How it works (internals)

File Role
hook.py Stop-hook entry; spawns the detached worker
transcript.py Parses Claude Code's JSONL transcript for generated code
insights.py Generates insights — via the claude CLI (default) or the API
codesearch.py Finds where a topic lives in your code (powers add)
graph.py Merges concepts into the persistent knowledge graph
viz.py Renders the offline, self-contained HTML graph
spinner.py The animated terminal loading indicator
install.py Wires the hook into ~/.claude/settings.json
adapters.py Translates each agent's hook payload, including Codex patches

Zero third-party dependencies by design — the hook must run reliably wherever Claude Code launches it.

Metadata

Release files for learnlance-univ 0.2.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for learnlance-univ 0.2.5
File Size Uploaded
learnlance_univ-0.2.5.tar.gz 76.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for learnlance-univ 0.2.5
File Interpreter ABI Platform
learnlance_univ-0.2.5-py3-none-any.whl Python 3 none any Details

Total release size: 142.8 kB

Release files / learnlance_univ-0.2.5.tar.gz

Download URL learnlance_univ-0.2.5.tar.gz
Size 76.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1c80858ea893898259c7b732885774a8e4db98d3173d2ebaa0cc5e51aa1cb65c
BLAKE2b-256 checksum
How to use checksums
58adbb3d6658e29d114049cc631ba08dbae4902884719c47e10f5fab31b21b67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.

Transparency log

Release files / learnlance_univ-0.2.5-py3-none-any.whl

Download URL learnlance_univ-0.2.5-py3-none-any.whl
Size 66.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
14cebc2d47ed49870d89f0ebcc64d8d10138afafd2dd412bc72287340f14039a
BLAKE2b-256 checksum
How to use checksums
660b1e36ffb6fdf0b89b6507e5eff9890c0b734d9294355a37a2a32be5882806
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.7

2 release files

This release

0.2.5 This release

2 release files

0.2.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page