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 skills/plurigrid/asi/constraint-generalizationnpx skills add plurigrid/asi --skill constraint-generalizationgit clone --depth 1 https://github.com/plurigrid/asiWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/plurigrid/asi/constraint-generalization)<a href="https://agentmods.dev/skills/plurigrid/asi/constraint-generalization"><img src="https://agentmods.dev/badge/skills/plurigrid/asi/constraint-generalization.svg" alt="Measured on agentmods" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00013 | $0.02834 |
| Opus 5 | $0.00006 | $0.01417 |
| Sonnet 5 | $0.00003 | $0.00567 |
| Haiku 4.5 | $0.00001 | $0.00283 |
Grade A, and why
constraint-generalization 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 — 382 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Constraint Generalization
Core Concept
Given proven constraints on individual paths, synthesize new constraints that hold across composed paths. This skill moves from "validation" (rejecting bad paths) to "generation" (creating better paths).
Example: If path A proves outputs are even, and path B proves outputs are positive, the composed path AB proves outputs are both even AND positive.
Why Constraint Generalization?
Without it, constraints are lost during composition:
nav_even = @late_nav([ALL, pred(iseven)]) # proves: even
nav_positive = @late_nav([ALL, pred(x > 0)]) # proves: positive
# Compose them:
nav_composed = compose_navigators(nav_even, nav_positive)
# What can we prove about the result?
# Without generalization: nothing! Constraints are forgotten.
# With generalization:
# => Proves: even(x) ∧ positive(x)
# => More refined type: EvenPositiveInt
This refinement typing enables:
- Automatic constraint propagation downstream
- Fewer re-checks (prove once, use many times)
- Smarter composition (know which paths can combine)
- Proof generation (formal certificates for constraints)
Architecture
Constraint Representation
struct Constraint
predicate::Function # The boolean test
name::Symbol # :even, :positive, :non_null, ...
arity::Int # 1 for unary, 2 for binary, etc.
proof::Proof # Evidence constraint holds
refinement_type::RefinementType # Int → EvenInt
end
Constraint Composition
CNF (Conjunctive Normal Form) for constraint composition:
C₁ ∧ C₂ ∧ C₃ = (iseven AND positive AND nonzero)
Satisfiable? Check via 3-MATCH:
- Find x where iseven(x) ∧ positive(x) ∧ nonzero(x)
- If no x exists → constraints are contradictory
- If x exists → constraints compose validly
Constraint Lattice
⊤ (True, no constraint)
/ \
even odd
/ \ / \
... ∧ ... (conjunctions)
\ / \ /
⊥ (False, unsatisfiable)
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 · 382 lines · 13 tokens per session scan A 7acfb5af060e
constraint-generalization is a skill published in the GitHub repository plurigrid/asi (62 stars, last pushed 1mo ago), licensed MIT. It adds 13 tokens to every session and 2,834 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-09-01.
Other skills, from other repositories
general-video
Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated…
media-ingest
Ingest video, audio, PDF, book, screenshot, and GitHub repo content into the brain. Multi-format handling with entity extraction and backlink propagation. Covers video-ingest, youtube-ingest, and book-ingest subtypes.
diagnostic-stem-delivery
Audio production with diagnostic analysis, timecode parsing from documents, and verified export workflow.
chengfeng-cut
剪辑中文口播原素材:逐词转录、词典修字出修字表、五轮扫描找口误与重复、汇总表与重复句子表、打开 Studio 让用户复核、复盘沉淀用户偏好与词典。只产出一份已复核的删词账本,不切媒体、不做字幕、不做分镜动画。用户说剪口播、处理口误、生成口播基础素材、继续剪口播,或确认卡回传 action=returncutreview 时使用。不要用于执行物理剪切、导出剪后视频、单独安装、单独打开工作台或口播分镜成片。.
chengfeng-check-updates
剪辑环境的唯一管理者:就绪检查(skills 是否最新 → Runtime 是否配套)、Skills 更新激活、Runtime 安装与体检。用户说检查更新、安装剪辑环境、装播放器、检查剪辑环境、剪辑环境就绪了吗、配置转录凭证时使用;业务 Skill(剪口播/字幕/画面/导出)第 0 步也引用本 Skill 的就绪检查。不用于剪辑、字幕、画面、导出本身或项目数据迁移。.
infographic-template-updater
Update template catalogs and UI prompts after adding new infographic templates (src/templates/.ts), including SKILL.md template list, site gallery template mappings, and the AIPlayground prompt list.