원클릭으로
self-learn
Use when mastering a book's content through autonomous extraction, validation against NotebookLM, and knowledge extension
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when mastering a book's content through autonomous extraction, validation against NotebookLM, and knowledge extension
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | self-learn |
| description | Use when mastering a book's content through autonomous extraction, validation against NotebookLM, and knowledge extension |
| context | fork |
3-phase autonomous agent: extract book content → validate against NotebookLM → extend beyond the source. Inspired by autoresearch — independent teams with information barriers.
All knowledge lives in Obsidian, never in this skill.
obsidian_vault: "{vault}/knowledge/raw" # Read {vault} from ${CLAUDE_PLUGIN_ROOT}/brain-os.config.md
notebooklm_bin: ~/.local/bin/notebooklm
scripts_dir: ${CLAUDE_PLUGIN_ROOT}/skills/self-learn/scripts
Goal: Read the book → identify atomic concepts → write Obsidian notes. Run as a multi-agent Workflow (ultracode) — one agent per chapter, in parallel — so chapter text stays OUT of the main context.
Invoke the Workflow tool on references/self-learn.workflow.js:
Workflow({
scriptPath: "${CLAUDE_PLUGIN_ROOT}/skills/self-learn/references/self-learn.workflow.js",
args: { bookSlug, epubPath, vaultPath, bookTitle, author }
})
Three phases run inside the workflow:
scripts/lib/epub_parser.py, write each chapter to a temp file, and derive a CLOSED category taxonomy from the chapter bodies. Only the manifest ({index, title, path, wordCount}) + the category enum leave this agent — the book text never enters the main context.scripts/lib/note_writer.py (guarantees the frontmatter + ## Key Insight + ## Related structure). Categories are constrained to the Phase-0 enum so they never fragment (decision-making vs decisions).## Related block with same-category / cross-chapter connections.The workflow returns the per-category breakdown; report total topics extracted and the category counts.
{obsidian_vault}/{book-slug}/
├── decision-making/
├── business-operations/
├── leadership/
└── [discovered categories]/
---
source: "{book_title}"
author: "{author}"
chapter: {chapter_number}
tags: [{tags}]
---
# {Concept Title}
{~100 words: concise, crystal clear, key point only}
## Key Insight
{One sentence takeaway}
## Related
- [[related-concept-1]]
- [[related-concept-2]]
Goal: Compare agent knowledge against NotebookLM. Patch gaps until mastery.
notebooklm ask~/.local/bin/notebooklm use {notebook_id} # Set active notebook FIRST
~/.local/bin/notebooklm ask "{question}" # Then ask questions
total = max(100, num_topics × 3)
scripts/lib/question_gen.pynotebooklm ask "{question}"
c. Judge scores using scripts/lib/judge.py prompt (0-100 scale)
d. If score < 95: identify what's missing → update/create Obsidian notesWrong concepts are catastrophic. Fix conceptual errors before missing details. A note that says the wrong thing is far worse than a note missing a detail.
Round 1: 85/100 passed (85%) — weak: [business-operations, leadership-hats]
Round 2: 94/100 passed (94%) — weak: [accountability-structures]
Round 3: 100/100 passed (100%) — MASTERY ACHIEVED
After validation passes, create the structured book note directly (previously a separate /ingest step):
{obsidian_vault}/{book-slug}/{vault}/knowledge/books/{book-slug}.md/ingest skill for template)ingested: true in _validation/audit-flag.jsonsource: "synthesis"applied/{domain}/, tagged source: "application"source: "research-{date}"Extension notes use same template but different source tags.
Pipeline continues autonomously: /verify → /absorb → commit + push → notify.
Phase 2 must reach 100% pass at ≥95 before Phase 3 runs. See /study for full pipeline.
/self-learn --book <epub_path> --notebook-id <nlm_id>
/self-learn --phase extract --book <epub_path>
/self-learn --phase validate --notebook-id <nlm_id>
/self-learn --phase extend
PLUGIN_ROOT="${CLAUDE_PLUGIN_ROOT:-$(ls -d ~/.claude/plugins/cache/brain-os-marketplace/brain-os/*/ 2>/dev/null | sort -V | tail -1)}"; PLUGIN_ROOT="${PLUGIN_ROOT%/}"
python3 ${PLUGIN_ROOT}/skills/self-learn/scripts/summary.py {vault}/knowledge/raw/the-road-less-stupid --status
python3 ${PLUGIN_ROOT}/skills/self-learn/scripts/summary.py {vault}/knowledge/raw/the-road-less-stupid --phase3
python3 ${PLUGIN_ROOT}/skills/self-learn/scripts/summary.py {vault}/knowledge/raw/the-road-less-stupid
| Book | Vault Path | NotebookLM ID |
|---|---|---|
| The Road Less Stupid | knowledge/raw/the-road-less-stupid | 9c6d742c-d512-42f6-a42c-ccdd993ef19f |
| Start with Why | knowledge/raw/start-with-why | e990cedd-7dca-4812-824e-7a9e757f0065 |
| Changing World Order | knowledge/raw/dalio-changing-world-order | bf8f46c4-0dfb-4f5e-9013-7a9e757f0065 |
Follow skill-spec.md § 11. Append to {vault}/daily/skill-outcomes/self-learn.log:
{date} | self-learn | {action} | ~/work/brain-os-plugin | knowledge/raw/{slug}/ | commit:{hash} | {result}
action: extract, validate, or extendresult: pass if phase completed (validate = 100% pass rate), partial if progress but not complete, fail if stuck or errorsargs="--book {epub} --notebook-id {id}", score={pass_rate}%Analyze skill outcomes + user corrections để propose self-improvements. Triggers: 'improve', 'skill learning', 'why does this skill keep getting it wrong', '/improve [skill-name]'.
Close or merge a pull request the right way via a 4-step hygiene sequence whose order is load-bearing. Use when the user closes, merges, wraps up, lands, or finishes a PR — 'close this PR', 'merge and clean up', 'land this', 'wrap up the PR' — even if they don't spell out all four steps.
Nightly vault maintenance — fix broken wiki-links, detect orphan pages, sync directory indexes, flag stale GH-issue tasks. Use cho: vault maintenance, broken links, orphan pages, nightly cron, lint vault.
Ultimate autonomous goal→proof loop: auto-grill a fuzzy goal, slice the grounded decisions into a parent PRD + tracer-bullet children, implement each with a TDD evaluator-regenerate loop, then deliver a per-acceptance-criterion PROOF report. Triggers: '/autodev <goal>', 'build this with proof while I'm away', 'autonomously ship and prove this'. For queue-and-walk-away (no drive-to-done, no proof) use /afk; to clarify with a human in the loop use /grill.
Use when verifying ingested book knowledge against NotebookLM, checking verification status, or managing audit flags before absorbing
Turn a goal, task, or existing issue into autonomous work — grill when fuzzy, file/relabel AFK issues, health-check the loop spine, hand off to the schedulers. Add --auto to drive the whole goal→proof loop in one run and return a proof report (delegates to /autodev) instead of queuing-and-handing-off. Triggers: '/afk <goal|task|N>', '/afk --auto <goal>', 'make this AFK', 'finish this while I'm away'. Execute NOW instead → /impl N or cox N.