Skip to content
Productivity
Skill

/learn

Ingests an external data source into the Second Brain. Fetches content from Confluence, Google Docs, GitHub repositories, remote URLs, or any local file format supported by docling (DOCX, PPTX, XLSX, PDF, HTML, EPUB, images, Markdown, CSV, and more), converts non-markdown

From plugin
bedrock
11010 skills1 hook

Claude Code

$ npx -y skills add iurykrieger/claude-bedrock --skill learn --agent claude-code

SKILL.md

learn.SKILL.md
name: learn
description: >
  Ingests an external data source into the Second Brain. Fetches content from
  Confluence, Google Docs, GitHub repositories, remote URLs, or any local file format
  supported by docling (DOCX, PPTX, XLSX, PDF, HTML, EPUB, images, Markdown, CSV, and more),
  converts non-markdown formats to markdown via docling, runs the /graphify extraction pipeline,
  and delegates entity persistence (including the graphify-output merge) to /bedrock:preserve.
  Use when: "bedrock learn", "bedrock-learn", "learn", "ingest source", "import document", "/bedrock:learn",
  or when the user provides a Confluence, Google Docs, or GitHub URL, a remote file URL, or
  a local file path to incorporate into the vault.
user_invocable: true
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, Skill, Agent, WebFetch, mcp__plugin_github_github__*, mcp__plugin_atlassian_atlassian__*

/bedrock:learn — External Source Ingestion into the Second Brain

Plugin Paths

Entity definitions and templates are in the plugin directory, not at the vault root. Use the "Base directory for this skill" provided at invocation to resolve paths:

  • Entity definitions: `<base_dir>/../../entities/`
  • Templates: `<base_dir>/../../templates/{type}/_template.md`
  • Plugin CLAUDE.md: `<base_dir>/../../CLAUDE.md` (already injected automatically into context)

Where `<base_dir>` is the path provided in "Base directory for this skill".

---

Vault Resolution

Resolve which vault to learn. This skill can be invoked from any directory.

**Step 1 — Parse `--vault` flag:** Check if the input arguments include `--vault <name>`. If found, extract the vault name and remove it from the arguments (the remaining text is the source URL/path).

**Step 2 — Resolve vault path:**

1. **If `--vault <name>` was provided:** Read the vault registry at `<base_dir>/../../vaults.json`. Find the entry matching the name. If not found: error — "Vault `<name>` is not registered. Run `/bedrock:vaults` to see available vaults." If found: set `VAULT_PATH` to the entry's `path` value. Store the resolved vault name as `VAULT_NAME`.

2. **If no `--vault` flag — CWD detection:** Read `<base_dir>/../../vaults.json`. Check if the current working directory is inside any registered vault path (CWD starts with a registered vault's absolute path). If multiple match, use the longest path (most specific). If found: set `VAULT_PATH` to the matching vault's `path`. Store its name as `VAULT_NAME`.

3. **If CWD detection fails — default vault:** From the registry, find the vault with `"default": true`. If found: set `VAULT_PATH` to the default vault's `path`. Store its name as `VAULT_NAME`.

4. **If no resolution:** Error — "No vault resolved. Available vaults:" followed by the registry listing. "Use `--vault <name>` to specify, or run `/bedrock:setup` to register a vault."

**Step 3 — Validate vault path:**

test -d "<VAULT_PATH>" && echo "exists" || echo "missing"

If missing: error — "Vault path `<VAULT_PATH>` does not exist on disk. Run `/bedrock:setup` to re-register."

**Step 4 — Read vault config:**

cat <VAULT_PATH>/.bedrock/config.json 2>/dev/null

Extract `language` and other relevant fields for use in later phases.

**From this point forward, ALL vault file operations use `<VAULT_PATH>` as the root.**

  • Graphify output: `<VAULT_PATH>/graphify-out/`
  • When delegating to `/bedrock:preserve`, pass `--vault <VAULT_NAME>`

---

Overview

This skill receives an external source (URL or local path), fetches its content to a temporary directory, converts non-markdown files to markdown via docling, runs the `/graphify` extraction pipeline on the tmp content, and delegates entity persistence (plus graphify-output merge) to `/bedrock:preserve`.

**You are a fetcher and orchestrator agent.** Your job is to: 1. Ensure docling is installed (auto-install if missing) 2. Classify the input and fetch content to `/tmp` 3. Convert fetched files to markdown via docling (when applicable) 4. Invoke `/graphify` to extract a knowledge graph into a per-run temp directory 5. Delegate graph merge and entity writes to `/bedrock:preserve` 6. Clean up temporary files

You do NOT classify entities, create vault files, write to the vault directly, or merge graph state. All extraction is done by `/graphify`. All writes (including the graphify-output merge into the vault's cumulative `graphify-out/`) are done by `/bedrock:preserve`.

Follow the phases below in order, without skipping steps.

---

Phase 0 — Ensure docling is installed

Before any fetch or conversion, verify that the `docling` CLI is available. If missing, install it silently using the same fallback chain `/bedrock:setup` uses for graphify, emitting a single status line before proceeding.

if command -v docling >/dev/null 2>&1; then
  echo "Phase 0: docling already installed — proceeding."
else
  echo "Phase 0: docling not found — installing silently (one-time setup, may take a few minutes for model download)."
  # Step 1 — pipx (preferred, isolated)
  if command -v pipx >/dev/null 2>&1; then
    pipx install docling >/dev/null 2>&1 || true
  fi
  # Step 2 — pip (fallback if pipx unavailable or failed)
  if ! command -v docling >/dev/null 2>&1; then
    if command -v pip3 >/dev/null 2>&1; then
      pip3 install --user docling >/dev/null 2>&1 || true
    elif command -v pip >/dev/null 2>&1; then
      pip install --user docling >/dev/null 2>&1 || true
    fi
  fi
  # Final re-probe
  if ! command -v docling >/dev/null 2>&1; then
    echo "ERROR: docling install failed. Run /bedrock:setup to install it, or install manually: pipx install docling"
    exit 1
  fi
  echo "Phase 0: docling installed."
fi

**Failure mode:** If install fails (no `pipx`/`pip`, network outage, permission denied), abort the skill with the error above. Do NOT fetch or mutate anything. Direct the user to `/bedrock:setup`.

**No user prompt:** this step is silent — one statu

Read more
@iurykrieger
Ships withbedrock

Second Brain automation for Obsidian vaults — entity management, ingestion, compression, and sync via Claude Code skills

Stars on GitHub

Momentum

stars in total
110
Star history of iurykrieger/claude-bedrock on GitHub, a chart by star-history.com

Other skills on bedrock.

ask

ask

Adaptive vault reader skill. Receives a natural language question, uses graph.json as the primary index (Phase 2.0) before any…

@iurykrieger@iurykriegerInstall Skill
compress

compress

Vault alignment engine. Detects and fixes 5 types of structural misalignments: broken backlinks, concept fragmentation, entity…

@iurykrieger@iurykriegerInstall Skill
confluence-to-markdown

confluence-to-markdown

Internal fetcher module for Confluence pages. Fetches content via Atlassian MCP (preferred), REST API with Basic Auth (fallback),…

@iurykrieger@iurykriegerInstall Skill
gdoc-to-markdown

gdoc-to-markdown

Internal fetcher module for Google Docs and Sheets. Fetches content via MCP (preferred, when available), Google API with bearer…

@iurykrieger@iurykriegerInstall Skill
healthcheck

healthcheck

Read-only vault health diagnostic. Generates a report without modifying any files. Checks: graphify-out integrity, setup…

@iurykrieger@iurykriegerInstall Skill
preserve

preserve

Single write point for the vault. Centralizes entity detection, textual matching, entity creation/update, and bidirectional…

@iurykrieger@iurykriegerInstall Skill

More skills from other plugins.

i-have-adhd

i-have-adhd

Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…

@ayghri@ayghriInstall Skill
ab-test-analysis

ab-test-analysis

Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop…

@phuryn@phurynInstall Skill
distilly

distilly

Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…

Questions about learn.

Which coding agents can use learn?
learn installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.