Lamina evolutionary rules
Headless Product Design skill for AI coding agents | Design how it works, verify what you ship.
npx -y skills add aryaniyaps/lamina --skill lamina-evolutionary-rulesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Evolving product rules safely — reversible decisions, invariant checks as features change, deferring commitment. Use when the domain will grow or requirements are uncertain.
SKILL.md
2.5 KB, as published. Nobody here has run it
Evolutionary Rules
Products change. Design rules and invariants so they can evolve without silent breakage — prefer reversible choices until the cost of waiting exceeds the cost of committing.
Decision frameworks
-
Reversible decision: Can be undone without corrupting domain state (toggle feature flag, add optional field).
- When to use: Uncertain requirements, early iterations.
- How: Document in
implement.mdas low-risk; verify after each change.
-
Irreversible decision: Hard to undo (merge two entity types, remove invariant).
- When to use: Only when delay cost is high and trade-offs are explicit.
- How: Record in
decisions.md; full scenario coverage before ship.
-
Invariant regression check: New feature must not violate existing
domainrules — re-run verify after external build.- When to use: Every
/lamina-verifyafter changes touching shared entities.
- When to use: Every
-
Defer commitment: Wait until you need the rule — but do not defer documenting invariants you already know.
Checklists
- Tag design decisions reversible vs irreversible in run or
decisions.md. - When adding workflows, re-check all existing invariants for the touched entities.
- After external implementation, run verify — not one-time at handoff.
- Prefer additive rule changes over breaking changes to actor permissions.
Anti-patterns
- Big-bang rule change: New payment rule breaks all issued tickets without migration scenario.
- Forgotten invariants: Feature ships without updating scenarios.
- Permanent "temporary": Overrides that bypass invariants become architecture.
Examples
- Adding waitlist: Reversible — new workflow branch. Must preserve invariant: one valid ticket per student per exam. Scenarios for waitlist → ticket promotion and edge cases.