Skip to content
Development
Skill

/learn

Manage project learnings across sessions. Save, search, recall, digest, prune, and export learnings that compound over time. Use when user wants to record, recall, or share project knowledge.

From plugin
ultraship
12245 skills13 agents16 commands3 hooks
+1
Install
$ npx -y skills add Houseofmvps/ultraship --skill learn --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/learn

Context preview

The summary Claude sees to decide when to auto-load this skill.

Manage project learnings across sessions. Save, search, recall, digest, prune, and export learnings that compound over time. Use when user wants to record, recall, or share project knowledge.

SKILL.md

learn.SKILL.md
name: learn
description: Manage project learnings across sessions. Save, search, recall, digest, prune, and export learnings that compound over time. Use when user wants to record, recall, or share project knowledge.
argument-hint: "<save|search|recall|digest|list|prune|export> [query]"
allowed-tools: Bash, Read, Write, Grep

Project Learnings Manager

Learnings are structured knowledge that compounds across sessions. They capture what worked, what didn't, decisions made, and patterns discovered — things that can't be derived from code alone.

**Announce at start:** "I'm using the learn skill to manage project learnings."

Commands

Save a learning

When the user discovers something worth remembering — a debugging insight, an architecture decision, a deployment gotcha, a tool preference:

node ${CLAUDE_PLUGIN_ROOT}/tools/learnings-manager.mjs save --title "Title here" --body "Detailed learning content" --tags "tag1,tag2"

**What to save:**

  • Debugging insights ("Redis connection pool exhausts at 50 concurrent requests")
  • Architecture decisions and their rationale ("Chose BullMQ over pg-boss because...")
  • Deployment gotchas ("Railway needs `NODE_ENV=production` explicitly set")
  • Performance findings ("Drizzle `select()` is 3x faster than `query()` for simple lookups")
  • Integration quirks ("Polar.sh webhooks retry 3x with exponential backoff")

**What NOT to save:**

  • Code patterns (read the code instead)
  • Git history (use `git log`)
  • Temporary debugging state (that's for the current session)

Search learnings

node ${CLAUDE_PLUGIN_ROOT}/tools/learnings-manager.mjs search --query "keyword"

Search by title, body content, or tags. Returns all matches, unranked.

Recall the most relevant learnings (ranked)

node ${CLAUDE_PLUGIN_ROOT}/tools/learnings-manager.mjs recall --query "keyword" [--limit N]

Prefer `recall` over `search` when you want the *most relevant* prior knowledge, not every match. It ranks by relevance (title > tag > body) with recency breaking ties, returns the top N (default 5) with one-line summaries and a score. Use this BEFORE starting work on a topic — it surfaces the learnings most likely to prevent a repeated mistake without dumping the whole history into context.

Digest the whole knowledge base (compression)

node ${CLAUDE_PLUGIN_ROOT}/tools/learnings-manager.mjs digest

Produces a compact, grouped-by-topic snapshot — one line per learning, primary tag only — so a long history stays readable in a few tokens. Inject this at session start (or after a compaction) to carry forward what the project has learned without re-reading every learning file. This is the long-session memory primitive: `digest` to load context cheaply, `recall` to drill into a topic.

List all learnings

node ${CLAUDE_PLUGIN_ROOT}/tools/learnings-manager.mjs list [--limit N]

Prune old learnings

node ${CLAUDE_PLUGIN_ROOT}/tools/learnings-manager.mjs prune --older-than 90

Removes learnings older than N days. Default: 90 days. Run periodically to keep the knowledge base fresh.

Export learnings

node ${CLAUDE_PLUGIN_ROOT}/tools/learnings-manager.mjs export --format markdown
node ${CLAUDE_PLUGIN_ROOT}/tools/learnings-manager.mjs export --format json

Export for sharing with team members or backing up before a major refactor.

Workflow Integration

**At session start:** Run `digest` to load a compact snapshot of what the project has learned, then `recall --query "<topic>"` when the user names a specific area — load cheap context first, drill in on demand.

**After debugging:** Save the root cause and fix as a learning — it will save hours next time.

**After deployment issues:** Save the gotcha — deployment problems recur.

**Before major changes:** Search for past learnings about the affected area.

**During retrospectives:** Use with `/retro` to cross-reference velocity data with learnings.

Storage

Learnings are stored in `.ultraship/learnings/` in the project directory as JSON files. Each learning has:

  • `id` — unique identifier
  • `title` — short, searchable title
  • `body` — detailed content
  • `tags` — categorization for filtering
  • `created_at` / `updated_at` — timestamps

Add `.ultraship/` to `.gitignore` if you don't want learnings in version control, or commit them to share with your team.

Read more
Ships withultraship

"ULTRASHIP" Claude Code plugin — 39 skills, 33 tools, 11 agents for ship-ready workflows: planning, review, pentesting, safety guardrails, canary monitoring, SEO/AI-readiness check, penetration testing, code review, competitive analysis, incident response. 1 dependency. 180 tests. MIT.

Get the whole plugin

Other skills on ultraship.