원클릭으로
verify
Use when verifying ingested book knowledge against NotebookLM, checking verification status, or managing audit flags before absorbing
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use when verifying ingested book knowledge against NotebookLM, checking verification status, or managing audit flags before absorbing
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
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.
Use when mastering a book's content through autonomous extraction, validation against NotebookLM, and knowledge extension
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.
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.
| name | verify |
| description | Use when verifying ingested book knowledge against NotebookLM, checking verification status, or managing audit flags before absorbing |
Independent verification of self-learn knowledge. Runs 50 fresh questions against NotebookLM to catch errors the original validation missed. Verify is separate from self-learn — it owns the audited flag entirely.
obsidian_vault: "{vault}/knowledge/raw" # Read {vault} from ${CLAUDE_PLUGIN_ROOT}/brain-os.config.md
notebooklm_bin: ~/.local/bin/notebooklm
| Flag | /think | /absorb |
|---|---|---|
true (verified) | No warning | Auto-absorb |
false (unverified) | Warning | Blocked |
manual (re-review) | Warning | Approval prompt |
Stored in {book_vault}/_validation/audit-flag.json.
Always run the script — it handles fuzzy matching and execution.
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%/}"
# Run verify
python3 ${PLUGIN_ROOT}/skills/verify/scripts/verify.py {vault}/knowledge/raw <optional-fuzzy-name>
# Check status
python3 ${PLUGIN_ROOT}/skills/verify/scripts/verify.py {vault}/knowledge/raw --status
# Set flag
python3 ${PLUGIN_ROOT}/skills/verify/scripts/verify.py {vault}/knowledge/raw --set-flag <true|false|manual> <optional-fuzzy-name>
A 5-phase flow. NotebookLM is rate-limited, so the oracle batch stays sequential and OUTSIDE the fan-out; only the per-question judge + reduce run inside the Workflow (the Workflow runtime has no fs/subprocess). The judge runner is shared — references/verify.workflow.js is parameterized by threshold so /self-learn consumes the same file at 90 while verify runs at 95.
[0] Bash/agent gen 50 fresh Qs (25 topic / 15 cross-cutting / 10 adversarial) → questions.json
[1] Bash run_validation.py → oracle answers (sequential, backoff — REUSED verbatim, rate-limited)
load items: {qid, question, topic, oracleAnswer, noteScope}
└── args (oracle answer INLINE per item) ──▶
[2] Workflow references/verify.workflow.js · parallel(50): one judge agent per question —
reads ONLY its scoped notes, forms its own answer, compares vs its INLINE
oracleAnswer at ≥95 → {qid, score, pass, gap}
[3] reduce (pure JS, in-workflow) passRate · weakClusters (fails clustered by topic) ·
audited = (every score ≥ threshold)
◀── result: {passRate, audited, perQuestion, weakClusters} ──┘
[4] Bash write audit-results-{date}.jsonl from perQuestion · set flag via
`verify.py --set-flag <true|false>` (merges — preserves pipeline_completed /
ingested / absorbed / notebook_id) · on any fail write the inbox report ·
append the outcome-log line
knowledge/raw/, generate 50 fresh questions, write questions.json ({id, q, type, topic}, the self-learn format).run_validation.py (reused verbatim) asks NotebookLM each question via notebooklm ask sequentially with exponential backoff, producing one oracle answer per question. Assemble the items {qid, question, topic, oracleAnswer, noteScope}.references/verify.workflow.js with {items, bookPath, threshold: 95}. Each worker is handed its single oracleAnswer inline and reads only its own note scope — no other question's oracle answer or notes enter its context.{passRate, audited, perQuestion, weakClusters}. audited is true ONLY when every question scored ≥95 (and every question was judged).{book_vault}/_validation/audit-results-{date}.jsonl from perQuestion; set the flag with verify.py --set-flag true|false (the writer merges, preserving non-managed keys); on any fail, write the inbox report naming the weakClusters.Results saved to {book_vault}/_validation/audit-results-{date}.jsonl.
Follow skill-spec.md § 11. Append to {vault}/daily/skill-outcomes/verify.log:
{date} | verify | verify | ~/work/brain-os-plugin | knowledge/raw/{slug}/_validation/audit-results-{date}.jsonl | commit:{hash} | {result}
result: pass if 100% questions score ≥95 (audited=true), fail if any question fails (audited=false)args="{book-name}", score={passed}/{total}