looper
v0.4.0Looper — a system's design contract in both directions: forward-author the product world from a raw idea, or reverse-engineer it from existing code and failure memory. `/psl` turns one experiential / semantically-fuzzy requirement (plus optional materials) into a complete Product Specification Language document — six derivation-ordered layers (Vision / Mental Model / Domain Model that must overturn the naive schema / State Machine / Workflow split into Σ facts + φ disambiguation criteria, never Step 1-2-3 / behavioral Acceptance in ask-X-get-Y form) — under a three-provenance honesty discipline (surface engine world knowledge / elicit private load-bearing slots one topic at a time with recommended lettered answers / seam everything unanswerable into Open Questions, never default-fill), a dual-track entry gate (deterministic requirements get told 'PRD suffices' instead of a fabricated world), and a hard delivery contract (never refuses for lack of info), mechanically pre-gated by verify_psl.py (rejects missing layers, named-step Workflow, non-behavioral Acceptance, absent Open Questions). `/dos-extract` deductively recovers a Design Ontology Spec (DOS): a 13-section, two-layer dos.yaml (a core model of ≤7 objects / relationships / constitutional rules / bounded contexts / agent guidelines, plus a complete `vocabulary` — every other term the team says, with kind / owner / synonyms / rejected names — whose coverage verify_dos.py --terms measures against the counted roster) + decisions.md audit trail, applying four classification judgments (object vs UI vs impl vs rule; same-object-vs-two; constitution vs policy; single vs multi context) that a naive noun-scan skips, with a mechanical pre-gate (verify_dos.py rejects UI/impl-suffixed names, undeclared relationship refs, >7 objects, a missing vocabulary layer, unplaced roster terms, empty open_questions) plus a human sign-off seam. `/invariant-extract` abductively recovers ONE Territory's □-class resident invariants from the failures it paid for (a violation is the most reliable signal an invariant exists) and deductively from code execution points, emitting a named-field invariant card (statement / strength / aspect / channel / provenance / on_violation) gated by verify_card.py (rejects no-provenance entries, auto-installed hard invariants, ◊ smuggled onto the card) — hard invariants are propose-only, entering only by human signature. psl and dos-extract are reverse twins (idea→world vs code→world) sharing one domain vocabulary; invariant-extract draws a single block's resident law from its scars and consumes dos-extract's dos.yaml. All static_only tier (structurally gated; effectiveness on held-out tasks unverified).
By XRenSiuLicense: MIT2 GitHub starsUpdated 3 days ago
Directory evidence
- Runtimes
- Claude Code
- Parsed components
- 2 skill or MCP entries
- Source updated
- Sep 21, 2026
- Manifest status
- Canonical path parsed
The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology →
Install looper for Claude Code
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install looper@agent-plugin-marketplacePaste and run these commands in a terminal with Claude Code. They add and refresh the PluginsMP catalog, then install this plugin.
The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.
Get the source manually
git clone https://github.com/XRenSiu/claude-code-forgeClone the source repository, then follow its setup instructions to add the plugin to a compatible client. The plugin root is plugins/looper/.
Plugin files
├── .claude-plugin/plugin.json├── skills/invariant-extract/SKILL.md└── skills/psl/SKILL.md
Included Skills2
Use when a Territory's □-class resident invariants are MISSING — when "what this block must always hold, on every Run" lives only in people's heads or in scars from past failures, not as written, traceable, verifiable rules. invariant-extract recovers them by ABDUCTION from the Territory's failure memory (the load-bearing channel — a violation is the most reliable signal an invariant exists) and by DEDUCTION from its code execution points. It is the symmetric counterpart of dos-extract (which deductively reverse-engineers a system's constitution + ontology from a static repo); this one abductively recovers ONE Territory's resident invariants from the failures it paid for. Triggers: "抽不变量" / "提取不变量" / "责任级不变量" / "□ 不变量" / "从失败里总结规则" / "把失败变成不变量" / "为这块领地立常驻法" / "invariant-extract" / "harden this territory's invariants". Do NOT use for: binding / claim-resolution (orthogonal, human-set), ontology / boundary (that is dos-extract), or task-level done_when (that is acceptance-spec).
把一个需求背后的「产品世界」写成完整 PSL(Product Specification Language),并在世界填不满时主动向用户提问, 最终必产出一份完整 PSL。PSL 写「这个世界为什么这样运转」(生成规则),不是「应该造什么」(功能规格)。 Use this skill whenever a requirement is experiential / semantically fuzzy(记忆、人格、关系、内容组织、推荐、 搜索意图、社交动态…),或当你预感 Agent 照字面实现会用默认值把世界填错(典型症状:交出一个「技术正确、产品错误」 的东西,如「按时间搜索」被做成日历筛选器)。也用于判断一个 PRD 该不该改写为 PSL。 触发词:PSL、产品世界、世界建模、把需求写成世界、"这需求 Agent 会不会做偏"、体验说不清、生成规则 vs 功能规格。 NOT for deterministic requirements(支付校验 / 合规字段 / 报表列宽)——那里 PRD 的精确恰好够用,套世界模型是过填。
Plugin manifests1
{
"name": "looper",
"description": "Looper — a system's design contract in both directions: forward-author the product world from a raw idea, or reverse-engineer it from existing code and failure memory. `/psl` turns one experiential / semantically-fuzzy requirement (plus optional materials) into a complete Product Specification Language document — six derivation-ordered layers (Vision / Mental Model / Domain Model that must overturn the naive schema / State Machine / Workflow split into Σ facts + φ disambiguation criteria, never Step 1-2-3 / behavioral Acceptance in ask-X-get-Y form) — under a three-provenance honesty discipline (surface engine world knowledge / elicit private load-bearing slots one topic at a time with recommended lettered answers / seam everything unanswerable into Open Questions, never default-fill), a dual-track entry gate (deterministic requirements get told 'PRD suffices' instead of a fabricated world), and a hard delivery contract (never refuses for lack of info), mechanically pre-gated by verify_psl.py (rejects missing layers, named-step Workflow, non-behavioral Acceptance, absent Open Questions). `/dos-extract` deductively recovers a Design Ontology Spec (DOS): a 13-section, two-layer dos.yaml (a core model of ≤7 objects / relationships / constitutional rules / bounded contexts / agent guidelines, plus a complete `vocabulary` — every other term the team says, with kind / owner / synonyms / rejected names — whose coverage verify_dos.py --terms measures against the counted roster) + decisions.md audit trail, applying four classification judgments (object vs UI vs impl vs rule; same-object-vs-two; constitution vs policy; single vs multi context) that a naive noun-scan skips, with a mechanical pre-gate (verify_dos.py rejects UI/impl-suffixed names, undeclared relationship refs, >7 objects, a missing vocabulary layer, unplaced roster terms, empty open_questions) plus a human sign-off seam. `/invariant-extract` abductively recovers ONE Territory's □-class resident invariants from the failures it paid for (a violation is the most reliable signal an invariant exists) and deductively from code execution points, emitting a named-field invariant card (statement / strength / aspect / channel / provenance / on_violation) gated by verify_card.py (rejects no-provenance entries, auto-installed hard invariants, ◊ smuggled onto the card) — hard invariants are propose-only, entering only by human signature. psl and dos-extract are reverse twins (idea→world vs code→world) sharing one domain vocabulary; invariant-extract draws a single block's resident law from its scars and consumes dos-extract's dos.yaml. All static_only tier (structurally gated; effectiveness on held-out tasks unverified).",
"version": "0.4.0",
"author": {
"name": "XRenSiu",
"email": "[email protected]"
},
"homepage": "https://github.com/XRenSiu/claude-code-forge/tree/main/plugins/looper",
"repository": "https://github.com/XRenSiu/claude-code-forge",
"license": "MIT",
"keywords": [
"psl",
"product-specification-language",
"product-world",
"world-model",
"behavioral-acceptance",
"dos-extract",
"invariant-extract",
"design-ontology-spec",
"ontology-extraction",
"ubiquitous-language",
"domain-model",
"invariant-extraction",
"abduction",
"deduction",
"reverse-engineering",
"contract-extraction",
"kaos",
"bounded-context",
"constitution-vs-policy",
"static-only"
]
}For maintainers
If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.
[looper on Agent Plugins Marketplace](https://pluginsmp.com/plugins/looper)