- Version
- 1.0, 26 September 2026
- For your agent
- method.md, the whole method in one file written for a language model. llms.txt points to it.
- Built on
- Claude Code, NotebookLM with notebooklm-py, skill-retrieval-mcp, FAISS, text-embedding-3-large
- Earlier
- forge-learn.pages.dev, the August explainer of forge on its own
One loop, two halves
Forge fills the library, once per topic. Recall reads from it on every task, two ways: the agent searches, and a hook reads the prompt before the agent does. A workflow that worked goes back in as a new skill.
Each half replaces a default you have already met: the model that answers confidently from a stale memory, and the prompt that cannot hold a real library. Every section below sets one mechanism beside the default it replaces, with the number that earned it a place.
Where the knowledge comes from
The usual way
Ask the model. It answers from its weights: a fluent average of the internet at its training cutoff, right about settled ideas and wrong exactly where it hurts, in flag names, limits and this year's practice.
Forge
Fifty sources a curator chose go into one NotebookLM notebook. The agent never reads them. It asks 20 to 30 hard questions, each ending in "Cite each.", one fresh conversation per question, and keeps only the answers. The reading happens on Google's servers, not in the agent's context window.
The questions ask for procedure, field names, exact numbers, quotes and anti-patterns. Never for a summary.
Receipt15 topics forged since August 2026 from 751 hand-picked videos, every answer kept as its own file beside its sources.
How the sources are picked
The usual way
Search the topic and take the top results. Views win, and views are mostly beginner courses and thumbnails.
Forge
- Map the 6 to 8 subtopics an expert would need. That list is the coverage contract.
- Sweep 25 to 40 queries across them, plus the names of known practitioners: 400 to 800 candidates.
- Rank by authority: the people who built the thing, then conference talks, then practitioners, then educators. Views go under a square root, so a two-million-view intro cannot bury a sixty-thousand-view conference talk.
- A human reads every row and picks fifty, for density and coverage rather than score.
ReceiptAll four videos from one of the best SwiftUI animation channels ingested with 5 to 38 words of transcript. Silent screencasts: brilliant to watch, empty to read. The transcript gate caught them, and they were replaced.
How a skill is graded
The usual way
The author reads the skill back and it looks right. Or a script counts keyword overlap against a checklist the same author wrote. Either way, the author marks their own homework.
Forge
NotebookLM writes a hard quiz from the same fifty sources. The skill takes it closed-book: only its SKILL.md and the references it would open. Every miss is checked by hand, then fixed at the right altitude, a missing decision rule in SKILL.md and a missing fact in a reference, both pulled from the cited answers and never from the quiz key.
ReceiptOn the first run a keyword grader reported 10 misses. Checked by hand, 8 were already covered: it scored two skills at 77% and 85% when the truth was 96% and 96%.
| Forged topic | Quiz questions | First draft | After fixes |
|---|---|---|---|
| SysML v2 and MBSE | 30 | 28 | 30 |
| Graph-native architecture | 25 | 18 | 25 |
| Government IT tender writing | 27 | 17 | 27 |
| Short-form video growth | 26 | 18 | 26 |
| Construction PM and estimating | 28 | 18 | 28 |
| Crop nutrition and agronomy | 28 | 22 | 28 |
| Ad post-production | 28 | 19 | 27 |
| Remotion marketing video | 30 | 18 | 29 |
| Premium interface craft, three skills | 30 | 12 | 29 |
Closed-book scores on quizzes NotebookLM generated from each corpus, August and September 2026. Ad post-production's one remaining miss is absent from its corpus, so it stays a miss.
Where the skills live
The usual way
Install every skill into the agent's always-loaded set. Each one adds its name and description to every prompt, whether the task needs it or not, and you can only install what you already know exists.
Recall
Skills live cold, in a vector index the agent can search. The prompt carries only the few that have to fire on their own.
Forged skills are shaped for this: a tight SKILL.md of triggers and decision rules, over reference files that load only when the task reaches them. Few skills, deep references. The description names what someone would type, never a summary of the procedure, because agents follow a summary and skip the body.
Receipt3,100 skills in the library. Their names and descriptions alone come to about 191,000 tokens, which every request would carry if the library lived in the prompt. It lives in an index instead. Estimated at four characters a token, measured 26 September 2026.
How the right skill reaches the agent
The usual way
Hope the model spots the right skill in a long list, or remember to name it yourself. The closest name wins, even when it is the wrong skill.
Recall
Pull: the agent searches
The agent calls search_skills with the task in plain words, reads five descriptions, and loads the one that fits with get_skill. It searches again when the task changes shape. Scores rank the results but do not measure confidence, so the agent chooses by description.
Push: a hook reads the prompt
A hook embeds every prompt before the agent sees it, scores it against every cold skill, and injects at most two at a cosine of 0.32 or better, each with the line that loads it. It hides skills whose prerequisites are missing, falls back to keyword matching if the embedding call fails, and never blocks the prompt.
Both channels read one index, built with one embedding model.
ReceiptThe embedding model was chosen by test, not reputation: eight models against 25 gold queries written from the real library, 22 August 2026.
| Embedding model | Right skill first, of 25 | Mean reciprocal rank |
|---|---|---|
| text-embedding-3-large | 22 | 0.918 |
| Qwen3 Embedding 8B | 19 | 0.853 |
Two of the eight shown. One Gemini embedding model was statistically tied.
How the library stays clean
The usual way
Re-index by hand, when someone remembers. Bulk skill packs arrive with stubs, duplicates, and the occasional line telling the agent to ignore its user.
Recall
- A refresh pipeline watches the skill folders and re-runs on any change, with a full upstream re-pull every week.
- Sources carry trust. Untrusted rows pass a quarantine before they reach the index: stubs, and a short list of hostile patterns (hijacked instructions, actions hidden from the user, secrets sent to anonymous drop sites, swarms told to stop asking).
- One row survives per name: the local copy first, trusted before untrusted, then the longest.
- New rows embed incrementally. A full rebuild happens only after a deletion or a model change, and no stage can abort the run.
- A workflow that worked becomes a skill: distilled, installed cold, reindexed, and proven retrievable with a realistic request before anyone calls it done.
ReceiptThe first hostile-pattern filter matched the word webhook and quarantined 24 legitimate integration skills: Slack, Twilio and Shopify skills post to vendor webhooks by design. It now matches anonymous drop sites and secret exfiltration only, and 21 of the 24 came back.
Traps we paid for
- A quiet refresh is not a live session. The keepalive exited 0 while the NotebookLM session was dead, and a distil run stopped at 14 of 27 answers. Every refresh is now followed by a real test call.
- Two corpora at once overflow the responses. Run one topic at a time, and put a timeout on every question.
- Citation markers eat code. In a code-heavy corpus,
interpolate(frame, [0, 30], [0, 1])came back asinterpolate(frame, [10], [11]). Every code block is checked before a skill ships. - Resumable scripts resume past bad answers. A skip-if-exists loop keeps an uncited answer as happily as a good one. Delete it to force the re-ask.
Give it to your agent
method.md is the whole method written for a language model: ten standing rules, the recall routine, the forge procedure with every gate, library upkeep, setup, and a definition of done. It depends on nothing on our machines.
What it runs on
- skill-retrieval-mcp by JayCheng113, MIT licence, version 0.3.0 or later. It serves Claude Code, Codex CLI, Gemini CLI, Cursor and any other MCP client.
- NotebookLM. A Pro account allows 300 sources per notebook and 500 chats a day; the free tier's 50 and 50 is filled by one corpus, with no room left to distil.
- notebooklm-py on Python 3.12, for scripted ingest, questions and quizzes.
- For the push channel, a harness with prompt hooks, such as Claude Code's UserPromptSubmit. Optional: pull works anywhere MCP does.
Paste this to your agent
Read https://forge-recall.pages.dev/method.md and adopt it as your standing method for skills. Keep section 1 in your instructions and open the procedures when you run them.
No web access on the agent's side? Paste the file itself. Section 1 is short enough for always-on instructions.



