Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/outlinedriven-design-by-contract-96565e
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, design
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/design-by-contract
What's inside
- Skill name
design-by-contract- Description
- Design-by-Contract (DbC) development. Use when implementing with formal preconditions, postconditions, and invariants across any language.
- License
- Apache-2.0
- Instructions
- 128 lines in SKILL.md · view on GitHub
Files (3)
- SKILL.md
- examples.md · references/
- libraries.md · references/
SKILL.md (first lines)
# Design-by-Contract development
Contracts (PRE/POST/INV) define behavioral specification -- design from requirements before code exists. Formalized as Hoare Triples: `{P} C {Q}` where P=precondition, C=code, Q=postcondition.
**Modern insight (2025)**: DbC complements LLM-generated code by serving as safety guardrails -- contracts clarify intent and prevent AI from breaking integrations. Spec-driven development (2025) positions contracts as "executable specifications."
See [libraries](references/libraries.md) for language-specific contract tools.
See [examples](references/examples.md) for brief contract patterns per language.
---
## Verification Hierarchy
Use compile-time verification before runtime contracts. If a property can be verified statically, do NOT add a runtime contract.
```
Static Assertions (compile-time) > Test/Debug Contracts > Runtime Contracts
```
| Property | Static | Test | Debug | Runtime |
|----------|--------|------|-------|---------|
| Type size/alignment | `static_assert` | - | - | - |
| Null/type safety | Type checker | - | - | - |
| Exhaustiveness | Pattern match | - | - | - |
| Expensive O(n)+ | - | test_ensures | - | - |
| Internal invariants | - | - | debug_invariant | - |
| Public API input | - | - | - | requires |
| External/untrusted | - | - | - | Always required |
---
## When to Apply
- Public API boundaries -- callers need clear contracts
- Complex state invariants -- balance >= 0, capacity limits
- Financial/business rule enforcement -- regulatory compliance
- Untrusted external data -- always validate at boundaries
- Multi-component integration points -- service contracts
- AI-generated code -- contracts serve as guardrails for LLM output
## When NOT to Apply
- Internal helpers with obvious behavior
- Simple getters/setters, trivial pure functions
- Performance-critical hot paths (runtime contract overhead)
- Prototyping -- contracts add ceremony
- When the type system already enforces the property (prefer static)
---
## Anti-patterns
- **Contracts duplicating type system**: If types enforce it, don't add a runtime check
- **Runtime checks for compile-time properties**: Wrong verification level
- **Contracts without violation tests**: Untested contracts are untrusted
- **Contract fatigue**: Decorating everything -- focus on boundaries and invariants
- **Postconditions restating implementation**: `ensures(result == x - y)` for `subtract(x, y)` adds nothing
- **Forgetting old() semantics**: Postconditions often need the pre-state value
- **Ignoring contract inheritance**: Preconditions weaken in subtypes (contravariance), postconditions strengthen (covariance) -- Liskov Substitution Principle
---
## Contract Inheritance Rules
- **Preconditions**: Can be weakened (loosened) in subtypes -- accept more
- **Postconditions**: Can be strengthened (tightened) in subtypes -- guarantee more
- **Invariants**: Strengthened in subtypes; never weakened
- This enforces Liskov Substitution automatically.
## DbC vs Defensive Programming (decision guidance)
| Approach | Philosophy | When |
|----------|-----------|------|
| **Defensive** | Don't trust caller; always check | Unknown callers, legacy APIs, untrusted input |
| **DbC** | Clear contract; caller handles pre, method handles post | Internal APIs, well-scoped teams, correctness-critical |
| **Hybrid** | Defensive at boundary; DbC internally | Best practice for modern systems |
---
## Contract Formalization
```
Operation: withdraw(amount)
Preconditions:
PRE-1: amount > 0
PRE-2: amount <= balance
PRE-3: account.status == Active
Postconditions:
POST-1: balance == old(balance) - amount
POST-2: result == amount
Invariants:
INV-1: balance >= 0
```
---
## Workflow (language-neutral)
1. **PLAN** -- Extract PRE/POST/INV from requirements. Formalize each with ID and description.
2. **CREATE** -- Enforce contracts at the appropriate verification level per the hierarchy: static proof, test assertion, debug check, or runtime guard. Reserve runtime contracts for public API boundaries and untrusted input.
3. **VERIFY** -- Run static analysis and build. Contracts must compile and lint.
4. **TEST** -- Write violation tests proving contracts catch bad inputs. Every PRE/POST/INV has a test.
---
## Constitutional Rules (Non-Negotiable)
1. **CREATE All Contracts**: Implement every PRE, POST, INV from plan at the appropriate verification level per the hierarchy
2. **Enforcement Enabled**: Runtime contracts, where used, must be active (not compiled out or disabled)
3. **Violations Caught**: Tests prove contracts work -- static contracts verified by type checker, runtime contracts by violation tests
4. **Documentation**: Each contract traces to requirement
## Exit Codes
| Code | Meaning |
|------|---------|From OutlineDriven/odin-codex-plugin, Apache-2.0.
More from OutlineDriven/odin-codex-plugin
- 0.525score
improve-codebase-architecture
OutlineDriven
Surface deepening refactors that turn shallow modules into deep ones, informed by `CONTEXT.md` and `docs/adr/`.
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
proof-driven
OutlineDriven
Proof-driven development.
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
fix
OutlineDriven
Polymorphic iterative repair loop — accept a verifier failure, structured findings (review/resolve/triage-issue), or a bug description; modify→verify→keep on…
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
git-branchless
OutlineDriven
Enforce idiomatic git-branchless during planning and executing tasks — detached-HEAD-first work, in-memory rebase via `git move`, event-log recovery via `git…
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
memory-update
OutlineDriven
Scan agent's session-history transcripts for save-worthy signals (corrections, preferences, decisions, references), propose and write auto-memory files with…
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
memory-sanitize
OutlineDriven
Produce share-safe copies of memory files under /tmp with PII redacted (paths, emails, session IDs, dates) and credentials scanned (tokens, keys); never…
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
cleanup-codebase
OutlineDriven
Reduce concepts, duplication, and ceremony in internal code while touching nearby code.
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
domain-model
OutlineDriven
Grill against the existing domain model.
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
gh-fix-ci
OutlineDriven
Inspect GitHub PR checks with gh, pull failing GitHub Actions logs, summarize the failure, then plan and implement the fix after user approval.
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
design
OutlineDriven
Set visual and interaction direction for any UI surface (web, React, TUI, CLI, desktop, Qt, design-system tokens) before any UI code.
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
memory-clean
OutlineDriven
Audit memory directory for structural issues (orphans, dangling refs, duplicates, missing sections, oversized entries) and staleness against session-history…
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
setup-gitignore
OutlineDriven
Initialize or idempotently revise the repo's .gitignore by composing gitignore.io templates, AI-tooling/IDE patterns, and confirmed noise from git status.
SkillCFreshness: C★ 14Claude Code +9
Signals
- Stars
- 14
- Forks
- 2
- Open issues
- 2
- Last commit (this folder)
- Apr 28, 2026 (6 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Website
- outlinedriven.github.io
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
Same skill elsewhere
Copies of this SKILL.md published by others; search shows only one of them.
More from OutlineDriven
- 0.525score
domain-model
OutlineDriven
Grill against the existing domain model.
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
gh-fix-ci
OutlineDriven
Inspect GitHub PR checks with gh, pull failing GitHub Actions logs, summarize the failure, then plan and implement the fix after user approval.
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
cleanup-codebase
OutlineDriven
Reduce concepts, duplication, and ceremony in internal code while touching nearby code.
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
design
OutlineDriven
Set visual and interaction direction for any UI surface (web, React, TUI, CLI, desktop, Qt, design-system tokens) before any UI code.
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
fix
OutlineDriven
Polymorphic iterative repair loop — accept a verifier failure, structured findings (review/resolve/triage-issue), or a bug description; modify→verify→keep on…
SkillCFreshness: C★ 14Claude Code +9 - 0.525score
git-branchless
OutlineDriven
Enforce idiomatic git-branchless during planning and executing tasks — detached-HEAD-first work, in-memory rebase via `git move`, event-log recovery via `git…
SkillCFreshness: C★ 14Claude Code +9
Cite this page
design-by-contract skill. Agent Mart. https://agentmart.dev/skills/outlinedriven-design-by-contract-96565e (last updated 2026-10-24)