analyze

A course-material analysis command that builds a knowledge base from converted lectures, textbook chapters, homework, and solutions. It records reusable problem patterns, topic coverage, summaries, and exam priority.

In plain words
What is it for?
Use it after importing course materials to map methods to problems, mark weak areas, estimate exam focus, and prepare the course index.
Why use it?
It turns scattered course files into an index that later study commands can use. It can also account for areas the student says are difficult.

Command

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/optimeta/paideia/analyze
Clone the repo
git clone --depth 1 https://github.com/OPTIMETA/PAIDEIA
Per session 20 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 7,434 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00020 $0.07434
Opus 5 $0.00010 $0.03717
Sonnet 5 $0.00004 $0.01487
Haiku 4.5 $0.00002 $0.00743

Measured 2d ago against content hash 78d8faeaced9, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

analyze scanned grade C with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Tells the agent never to refusehighAnti-refusal

Suppressing the ability to decline removes a core safety control; a later harmful request then succeeds.

- Do not refuse or stop partway — always return what you found, even if partial.
plugins/paideia/commands/analyze.md · 387 lines

How it starts

The opening of the file, as written. The whole thing — 387 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Output language

Read INTERFACE_LANG from .course-meta (default en). All user-facing prose — chat output and narrative parts of the generated index MDs — must be in that language. Keep in English regardless: file paths, slash command names, pattern IDs (P1..Pk), tier markers (🔥🔥/🔥/🟡/⚪) and the ⚠weak flag, § / Ch section anchors, and table column headers (Problem, Primary §, Secondary §, Patterns, HW coverage, Exam tier, etc.) — weakmap, hwmap, and quiz regex on them.

Load skills/course-builder/SKILL.md.

Arguments: $ARGUMENTS

Non-flag tokens (comma-separated, excluding any -- prefixed tokens) are the user's declared weak zones. Tokens beginning with -- are control flags parsed in Step 0.5 below — exclude them from the weak-zone list.

Prerequisite check: verify that converted/ contains files. If empty, tell the user to run /ingest first.

Follow the course-builder Phase 2 analyze pipeline:

Step 0 — Discovery & fan-out plan

List all files matching converted/lectures/*.md, converted/textbook/*.md, converted/homework/*.md, and converted/solutions/*.md. Count the total as N.

Output in $INTERFACE_LANG (keep the token identifier verbatim):

Analyzing N files (0/N)...

Fan-out (mandatory — single-pass over the full converted directory is forbidden):

Spawn one general-purpose Task sub-agent per file, in parallel, up to the workflow concurrency ceiling (currently ~10 parallel agent slots) at once; batches sized to that ceiling. If N exceeds the ceiling, process in sequential batches, waiting for each batch to complete before launching the next — maximize parallelism within each batch. Each agent reads only its own single file and returns a partial index (structured summary) — it must not re-read or transcribe the full original text back to the parent.

First-batch cap (mandatory — batch-1 must provably commit inside the standard window): The first batch is intentionally smaller than the full ceiling. Set batch-1 size = min(FIRST_BATCH_CAP, N), where FIRST_BATCH_CAP is 3–4 files. This ensures that fan-out + Reduce + all three .partial writes + all three renames provably complete and commit a valid course-index inside the standard window — batch-1 must provably commit a valid course-index inside the standard window; subsequent batches widen to the ceiling (~10). Choosing a ceiling-sized first batch risks a SIGTERM (exit 143) with zero committed files if the Reduce + write phase is reached near the window boundary (as observed in FND-002: "assembling section headers" → SIGTERM, 0 files committed). The small first batch eliminates this risk while the subsequent batches widen to recover throughput.

Read the full file on GitHub · 387 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 387 lines · 20 tokens per session scan C 78d8faeaced9

Subscribe to this mod's changes

analyze is a command published in the GitHub repository OPTIMETA/PAIDEIA (91 stars, last pushed 1mo ago), licensed MIT. It adds 20 tokens to every session and 7,434 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it C with 1 finding (tells the agent never to refuse). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.