Install
openclaw skills install coding-contractGenerate language-agnostic coding contracts (spec.md) from requirements. Outputs interface signatures, behavioral constraints, and verification checklists — never implementation code. Designed for the "strong model writes spec, weak model writes code" workflow. Spec files are reusable knowledge artifacts: write once, implement in any language. Use when the user wants to create a coding spec, define interfaces before implementation, or build a reusable engineering contract. Triggers on: "写规范", "生成 spec", "定义接口", "做实现蓝图", "coding contract", "implementation spec", "technical specification", or when a brainstorming design document needs to be converted into an actionable engineering plan.
openclaw skills install coding-contractGenerate coding contracts that capture engineering knowledge as persistent, language-agnostic artifacts. A contract defines WHAT to build and WHAT CONSTRAINTS to respect, but never HOW to implement it. Any developer or AI agent, in any language, can implement the same contract and produce functionally equivalent code.
Produce spec.md files containing interface definitions, behavioral constraints, and verification checklists — never complete implementations.
NO COMPLETE CODE: Output interface signatures and pseudocode only. Never write function bodies, class implementations, configuration files, or executable scripts. The implementer writes the code; you write the contract.
CONSTRAINTS ARE MANDATORY: Every spec MUST include a Constraint Layer (Section 4). If you think "this is obvious", write it anyway. The implementer may not share your assumptions.
EVERY INTERFACE MUST HAVE TESTS: For each public function in Section 3, at least one test case MUST exist in Section 5. Untested interfaces are unspecified interfaces.
NO HARDCODED MAGIC VALUES: Use descriptive placeholders
(e.g., [TIMEOUT_MS], [MAX_RETRY_COUNT]) or explain where the value
comes from (e.g., "configured via environment variable"). Never embed
literal numbers without context.
SELF-VALIDATE BEFORE OUTPUT: After drafting the spec, check against the Self-Validation Checklist below. Fix gaps before presenting.
LANGUAGE-AGNOSTIC: This skill works for any software domain — mobile, backend, frontend, embedded, ML, data pipelines. Do not assume a specific tech stack unless the user provides one.
Determine the input mode:
Mode A — Brainstorming Document Available:
If the user provides a design document from a brainstorming session, read it carefully. Extract: feature scope, module boundaries, tech stack preferences, data models, and user-approved decisions. Proceed to Phase 2.
Mode B — Raw Requirement (No Prior Design):
If the user provides only a natural language description, conduct a structured clarification dialog. Ask as many questions as needed — there is no limit. Goal: resolve all ambiguity before writing a single line of spec.
Clarification topics to cover (ask selectively based on context):
Continue asking until the user confirms the picture is complete. Better to over-communicate than to guess.
Read relevant existing code if available:
If no existing codebase (greenfield), establish default conventions based on industry best practices for the chosen tech stack. Document these decisions in Section 6.
Write the spec following the structure in references/spec-template.md.
Key generation rules:
Section 1 (Overview): One-paragraph goal. Explicit scope boundaries with "IN: ... OUT: ..." format.
Section 2 (Module Structure): Directory tree (max 3 levels). Each module gets a one-sentence responsibility description. Arrows show dependencies.
Section 3 (Interface Definitions):
// implementation left to implementerSection 4 (Constraint Layer) — NEVER skip:
references/constraint-patterns.md for common patterns.Section 5 (Verification Checklist):
- [ ]) for trackabilitySection 6 (Decisions):
Before output, verify:
If any check fails, revise the spec and re-validate.
Output the complete spec as a file named spec.md. Prefix with:
<!-- Generated by coding-contract skill -->
<!-- This is a coding contract — interface signatures and constraints only, not implementation code -->
<!-- Implementer: fill in all [PLACEHOLDER] values before coding -->
Save the file. Do not proceed to implementation unless explicitly asked.
Default: docs/specs/YYYY-MM-DD-<feature-name>.md
Override: If the user specifies a location, use theirs.
references/spec-template.md for the complete
spec.md format with annotated examples.references/constraint-patterns.md when writing
Section 4 to ensure comprehensive coverage.