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.
npx agentmods add commands/optimeta/paideia/chaingit clone --depth 1 https://github.com/OPTIMETA/PAIDEIAWhat 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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00028 | $0.00963 |
| Opus 5 | $0.00014 | $0.00481 |
| Sonnet 5 | $0.00006 | $0.00193 |
| Haiku 4.5 | $0.00003 | $0.00096 |
Grade A, and why
chain scanned grade A with 0 findings 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 69 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 must be in that language. Keep in English regardless: file paths, slash command names, pattern IDs, LaTeX, and YAML keys (problem_id:, pattern:, error_type:, source:, etc.).
Load skills/exam-drill/SKILL.md. Read course-index/patterns.md, course-index/coverage.md.
N (pattern count): $ARGUMENTS (default 2, max 4)
Procedure:
-
Select N patterns with constraints:
- From ≥ N different source problems (span HW/example origins; don't pick 2 patterns both from HW1)
- At least one pattern from the user's weak zone (sections flagged
⚠weakincoverage.md, or the latest weakmap's top entries) - At least one pattern from a 🔥🔥 Exam-primary section with no recent entry in
errors/log.md(user has machinery) - Patterns must be composable (pattern A's output = pattern B's input)
-
Design the problem as a multi-part question:
- Part (a): establishes context, requires pattern 1
- Part (b): uses result from (a), requires pattern 2
- Part (c): ties together, requires pattern 3 (if N=3)
- Final answer should synthesize
-
Save (the stem is the bare
<ts>— never anexam_prefix; this is a chain drill, not a mock, even though the problem is exam-style):- Problem →
chain/<ts>.md← e.g.chain/20260611_213319.md, NOTchain/exam_… - Solution →
chain/<ts>_sol.md(hidden)
Why it matters: the user uploads their answer as
answers/chain_<ts>.pdfand/graderesolveschain_<ts>.pdf → chain/<ts>_sol.md. Anexam_prefix here makes the saved file disagree with both the upload name you print in Step 4 and the/graderule, and leaves achain/folder with inconsistent stems.exam_*names belong to/mockonly. - Problem →
-
Print:
- Full problem
- Estimated time (N × 6 min + 5 min setup)
- Do NOT reveal which patterns are used
- Closing (in $INTERFACE_LANG): "Solve on paper, upload as
answers/chain_<ts>.pdf, then/grade. At the end of your solution, also write down 'which pattern you used' — that's the core of the recognition drill."
-
When user submits:
/gradeconverts PDF → MD → checks:- Did they identify all N patterns?
- Did they use them in the correct order?
- Does the final synthesis match?
- Errors are logged by
/gradeviascripts/log_tool.pyusing the canonicalerrors/log.mdschema fromskills/answer-processing/SKILL.mdStep 6 — one entry per missed pattern, withproblem_id: chain_<ts>-P<n>,pattern: <Pk>,error_type:(pattern-missedfor an unidentified or out-of-order pattern), andsource: chain/<ts>(that same value is the--source=argument, so a re-grade replaces rather than piles up). Do not invent achain_problemkey — the tool rejects off-schema entries, andstatusline.py,session_start.py, andweakmapregex onpattern:/problem_id:, so any drift silently hides chain errors from the weakness snapshot.
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.
- 2d ago First seen · 69 lines · 28 tokens per session scan A a119f2311ef8
chain is a command published in the GitHub repository OPTIMETA/PAIDEIA (91 stars, last pushed 1mo ago), licensed MIT. It adds 28 tokens to every session and 963 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
fieldtheory
Explain and drive the Field Theory CLI — bookmark-sourced seeds, repo-aware possibility runs that score ideas onto a 2x2 grid, and the interconnected .md files they leave behind. Trigger when the user asks about ft, bookmarks, seeds, ft possible (or the older name ft ideas), grids, dots/nodes, or how to turn saved…
tree-ring-capture
Capture a concise validated lesson decision warning or preference in Tree Ring Memory.
publish
Publishes the portfolio: runs the link check, hands off to the content editor for any last fixes, then follows the deploy runbook.
demo-command
Example slash command that wraps the demo-skill. Showcases the command kind.
luyao-character
Command "luyao-character" from wordflowlab/novel-writer, covering 塑造平凡而伟大的人物, 使用方法, 人物类型, 基础类型 and 复合类型.
speckit.memory-md.capture
Propose human-approved durable lessons and matching index updates from completed work.