Compounding knowledge across projects and teams. Captures, searches, and promotes institutional learnings via tiered backends (local/qmd/agent-fs).
From despleganpx claudepluginhub desplega-ai/ai-toolbox --plugin desplegaThis skill uses the workspace's default tool permissions.
template.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides agent creation for Claude Code plugins with file templates, frontmatter specs (name, description, model), triggering examples, system prompts, and best practices.
You are managing institutional knowledge — capturing insights, searching prior learnings, and promoting important patterns into CLAUDE.md for permanent reference.
This skill activates when:
/learning commanddesplega:learningParse the first argument to determine the flow:
| Argument | Flow |
|---|---|
(no args) or status | Setup / Status |
capture [insight] | Capture |
recall <topic> | Recall |
promote [id-or-topic] | Promote |
review | Review |
/learning with no args)~/.agentic-learnings.json~/.agentic-learnings.json with the default schema (see Config File Schema below), using the local backend["Local only (default)", "Configure qmd", "Configure agent-fs", "Configure both"]mcp__qmd__status). Note this in config as "accessMode": "mcp" or "cli".["Yes, it's set in my environment (AGENT_FS_API_KEY)", "Yes, I'll provide it now", "No, I need to set one up first"]["Use existing org (I'll provide the name)", "Create a new org for learnings"]agent-fs org create <name> via Bash["Use existing drive (I'll provide the name)", "Create a new 'learnings' drive"]agent-fs drive create learnings --org <org> via Bash["Yes, add to project CLAUDE.md", "Yes, add to global ~/.claude/CLAUDE.md", "No, skip"]## Learning System
Use `/learning recall <topic>` before research/planning to check for prior learnings.
Use `/learning capture` to record significant insights, decisions, and gotchas.
Config: `~/.agentic-learnings.json`
agent-fs ls count)/learning capture)/learning capture "qmd requires manual update"): use that as the insightBefore proceeding, evaluate using these default heuristics:
Override: If a ## Learning Capture Rules section exists in project or global CLAUDE.md, those rules take precedence over the defaults above.
If the insight doesn't pass the significance threshold, mention this to the user but still offer to capture it — the user has final say.
Use AskUserQuestion: "What category best fits this learning?" with options:
product-decisions — architectural choices, trade-offs, why we chose X over Ytechnical-gotchas — bugs, footguns, surprising behavior, workaroundshuman-nudges — user corrections, workflow preferences, communication stylepatterns — reusable approaches, conventions, best practices discoveredmistakes — things that went wrong and what to do differentlyUse AskUserQuestion: "Should this learning be personal or shared?" with options:
Personal — saved to thoughts/{user}/learnings/, visible only in this user's contextShared — saved to thoughts/shared/learnings/, git-tracked, visible to all collaborators (human and agent)YYYY-MM-DD-<slug>.md
2026-03-19-taras-qmd-indexing.md)cc-plugin/base/skills/learning/template.md with the collected informationqmd update via Bashagent-fs write /learnings/<filename> --content "<content>" via Bash/learning recall)/learning recall qmd indexing): use thatQuery all enabled backends simultaneously:
thoughts/{user}/learnings/ and thoughts/shared/learnings/mcp__qmd__query with [{type:'lex', query:'<topic>'}, {type:'vec', query:'<topic>'}], scoped to configured collectionsagent-fs search --query "<topic>" or agent-fs fts --query "<topic>" via Bashfile:line references for local results/learning promote)Use AskUserQuestion: "Where should this learning be promoted to?" with options:
Project CLAUDE.md — add to the current project's CLAUDE.mdGlobal ~/.claude/CLAUDE.md — add to the global CLAUDE.mdpromoted_to: to the target path (e.g., promoted_to: "CLAUDE.md" or promoted_to: "~/.claude/CLAUDE.md")/learning review)thoughts/{user}/learnings/*.md + thoughts/shared/learnings/*.mdUse AskUserQuestion (multiSelect): "Which learnings would you like to review?" with the list of learnings
For each selected learning:
Keep — no changesPromote — run the Promote flow for this learningArchive — move to thoughts/{user}/learnings/archive/ (or shared equivalent)Delete — remove the file entirelyIf file-review is available (check if the command exists), offer it as an alternative for batch review:
After processing all selected learnings, report: "Kept N, promoted N, archived N, deleted N."
All backends support 4 operations: write, search, list, delete.
| Operation | Implementation |
|---|---|
| write | Write tool to thoughts/{user}/learnings/ or thoughts/shared/learnings/ |
| search | Grep/Glob for topic across both personal and shared learnings directories |
| list | Glob thoughts/{user}/learnings/*.md + Glob thoughts/shared/learnings/*.md |
| delete | Bash rm <path> (learning file is just a local file) |
qmd is a local search engine over markdown documents. It can be accessed via MCP tools (if configured as an MCP server) or via CLI.
npm install -g @tobilu/qmd (or bun install -g @tobilu/qmd) — github.com/tobi/qmdmcp__qmd__query, mcp__qmd__get, mcp__qmd__multi_get tools (available when qmd MCP server is configured)qmd query, qmd get, qmd update via Bash (always available if installed)| Operation | Implementation |
|---|---|
| write | Same as local (qmd indexes local files), then qmd update via Bash to re-index |
| search | MCP: mcp__qmd__query with lex+vec sub-queries, scoped to configured collections. CLI: qmd query --collection <name> "<topic>" via Bash |
| list | MCP: mcp__qmd__multi_get with glob pattern (e.g., learnings/*.md). CLI: qmd get "learnings/*.md" via Bash |
| delete | Delete local file + qmd update via Bash (qmd re-indexes, removing the entry) |
Prefer MCP tools when available (richer output, no shell escaping). Fall back to CLI if MCP is not configured.
agent-fs provides remote, team-wide file storage with semantic search. Accessed via CLI only.
bun add -g @desplega.ai/agent-fs — github.com/desplega-ai/agent-fsagent-fs <command> via Bash| Operation | Implementation |
|---|---|
| write | agent-fs write /learnings/<filename> --content "<content>" via Bash |
| search | agent-fs search --query "<topic>" (semantic) or agent-fs fts --query "<topic>" (keyword) via Bash |
| list | agent-fs ls /learnings/ via Bash |
| delete | agent-fs rm /learnings/<filename> via Bash |
The config file lives at ~/.agentic-learnings.json:
{
"defaultBackend": "local",
"backends": {
"local": { "enabled": true, "basePath": "thoughts/{user}/learnings/" },
"qmd": { "enabled": false, "accessMode": "mcp", "collections": [] },
"agentFs": { "enabled": false, "apiKey": "", "org": "", "drive": "" }
}
}
defaultBackend: which backend to use for writes (always "local" initially)backends.local.basePath: path template — {user} is replaced at runtime with the current user's namebackends.qmd.accessMode: "mcp" (preferred, uses MCP tools) or "cli" (fallback, uses qmd CLI via Bash)backends.qmd.collections: list of qmd collection names to searchbackends.agentFs: agent-fs connection details (only needed if using remote team storage)backends.agentFs.apiKey: API key — can be set here or via AGENT_FS_API_KEY env var