# Lambda Map

> Build or incrementally update a λambda course map — the marks-bound routing table that makes /lambda sessions target assessed problems. Use as "/lambda-map <course-name> <folder(s)>" when materials first arrive and again each week as new sheets drop. Indexes question files (solutions are consulted as grounding only, never copied) and writes courses/<name>/map.md into the vault.

- Skill: `abaj8494/lambda-map` (Agent Skill)
- Install (CLI): `npx skillmds@latest add abaj8494/lambda-map`
- Raw SKILL.md: https://api.skillmd.com/api/skills/abaj8494/lambda-map/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: abaj8494 (https://skillmd.com/u/abaj8494)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/abaj8494/lambda-map

---


# λambda map builder (schema: 1)

The map is what separates λambda from a generic AI tutor: every MCQ a
session asks traces to a real assessed problem and the marks it carries.
This skill builds that map from the learner's **own** course materials —
the map derives from their institution's copyrighted content, so it lives
in their private vault and is never redistributed.

## Usage

`/lambda-map <course-name> <path> [more paths...]`

Paths may be folders or files: lecture PDFs, tutorial/problem-set PDFs,
past exam papers, quiz exports, notebooks, **lecture transcripts**
(`.txt`/`.md`/`.vtt` dumps of what was actually said).

Transcripts are an emphasis signal, not a question source: past papers
show what an earlier offering examined, but the transcript shows what
*this* offering's lecturer stressed, skipped, or hinted at ("this will be
on the exam", "we won't cover the proof"). When transcripts are present,
weight the map's marks-bound routing toward the current offering's
emphasis and note explicit verbal exam hints in the relevant map rows.
File transcripts in the `## Sources` ledger like any other input.

## Sparse sources (school-shaped courses)

Not every course arrives university-shaped. A school student may have
only a scope & sequence, a textbook, and a couple of practice tests — no
outline, no tutorial sets, no marks schedule. The map builds anyway, by
substitution:

- **Scope & sequence / syllabus → units.** Its rows become the map's
  `##` sections; the textbook's chapter structure is the fallback when
  even that is missing.
- **Textbook exercises → drills.** Chapter exercise sets fill the Drill
  column (`Ch 11 Ex 11C Q4–9` is a perfectly good drill pointer).
- **Practice tests / past papers → assessed targets.** However few; a
  single practice test still anchors marks-bound ordering.
- **No marks data at all?** Leave the marks empty and order sections by
  the scope & sequence — routing degrades to curriculum order, and the
  map upgrades in place the day a practice paper arrives (weekly-update
  path below).

Never fabricate marks or assessment weights. A sparse map that says
less is better than a confident map that lies.

## Procedure

1. **Inventory and classify.** List candidate files; classify each as
   questions or solutions (`*solution*`, `*answers*`, `*marking*`, keys).
   The learner's own submitted work (assignments, graded quizzes, past
   answers) may be indexed for ROUTING — what the course asks, where the
   marks sit — but is NEVER mastery evidence: it may be AI-assisted or
   otherwise not the learner's own, and the map must not seed or imply
   any mastery state from it. Beliefs about the learner update only on
   what λ observes in its own sessions.
   Solutions are **grounding, not content**: read them to confirm marks,
   intended method, and concept labels — never copy solution text, steps,
   or final answers into the map. The map must read cleanly as if built
   from questions alone.
2. **Index per assessment surface.** For each question file, extract a
   per-question index: question number, marks (if stated), one line on
   what it asks (the task, not the topic label), and the concept(s) it
   exercises. For large collections, fan out subagents per file/folder and
   merge.
2b. **Extract the notation register.** While indexing, record the course's
   own symbol conventions: what each recurring symbol denotes *in this
   course's materials* (e.g. which letter the course uses for a parameter,
   an ordering, a message, a mean), and any known clash with common
   textbook conventions. The map gains a `## Notation` section:

   ```markdown
   ## Notation (course register — teach and quiz in THIS)

   | Symbol | Course meaning | Clash warning |
   |---|---|---|
   | $\mu$ | Poisson mean (this course) | many texts write $\lambda$ |
   ```

   Only record symbols actually observed in the materials — never infer a
   convention from a textbook. Weekly updates extend this table as new
   sheets introduce symbols.

3. **Reverse-index by concept.** For each lecture/chapter-level concept,
   list every drill (tutorial/problem-set question) and every assessed
   target (exam/quiz question with marks) that exercises it.
4. **Weight it.** Open the map with a `> [!important] Marks at stake`
   callout: which concepts carry the most assessed marks, which appear in
   the most recent / most format-relevant papers, and any concept that
   appears in exactly one exemplar (flag it — thin coverage means the
   drills are precious).
5. **Write `courses/<course-name>/map.md`** in the vault. Open it with a
   `skills:` frontmatter block declaring the skills a `/lambda` session on this
   course must load — this is the course's composition manifest, read in the
   session protocol's Step 0. Every course gets `lambda-core` (default) and,
   if quantitative, `lambda-notation` (the `$`/LaTeX rules) and `lambda-draw`
   (figures); add `lambda-math` for arithmetic-heavy courses (simplest-form
   discipline), and the field skill for the subject as it arrives
   (`lambda-science`, `lambda-english`, `lambda-humanities`):

```markdown
---
skills: [lambda-core, lambda-notation, lambda-draw, lambda-math]
---

# <course> routing map (schema: 1)

Built <date> from question files only; no solutions opened.
Source roots: <paths>

> [!important] Marks at stake
> <the weighting summary>

## <Unit / lecture / chapter>

| Concept | Drill | Assessed target |
|---|---|---|
| <concept> | <Tut X Qy — one-line task> | <Exam year Qz [marks]> |
```

   End the map with a `## Sources` ledger: one line per indexed file with
   the date it was indexed. This is what makes weekly updates cheap.

   If the syllabus states prerequisites, open the map with an
   `assumes: <slug>, <slug>` line naming substrate atoms (SPEC "The
   substrate") — declared dependencies, NOT map rows: they carry no
   drills or marks, and sessions re-verify them by fast lane at need.
   Never probe them at map-build time; the register also grows lazily
   from descent events, so an empty or absent line is fine.

6. Report: units mapped, questions indexed, the top-3 marks
   concentrations, and any blind spots (concepts with no drill or no
   assessed exemplar).

## Weekly updates — courses arrive incrementally

A real student does not hold the full term's corpus on day one; tutorial
sheets and solutions land week by week. Design for that:

- **Re-running the command is the update mechanism.** If
  `courses/<name>/map.md` already exists, read it and its `## Sources`
  ledger first; index only files not in the ledger; append the new
  questions to the right unit tables; recompute the marks-at-stake
  callout; add the new files to the ledger. Never rebuild from scratch —
  existing rows and their wording stay put.
- **Thin early-term coverage degrades gracefully.** When few or no
  assessed surfaces exist yet, weight rows by lecture emphasis instead of
  marks and tag them `no assessed exemplar yet` — sessions then anchor to
  drills alone, and the tags disappear as past papers and quizzes enter
  the ledger.
- In the update report, call out which previous blind spots the new week's
  material just covered.

## Conventions

- Marks in brackets everywhere: `Q3 [5]`.
- One-line descriptions state the *task* ("derive the conditional of a
  bivariate Gaussian given evidence"), not a topic label.
- Callout hygiene: every callout line, including the `[!type]` line,
  starts with `> `.
- If the vault is a git repo, commit: `λ-map: <course> — <n> questions`.

