open-contract
Register CC-* hops and sign ContractEnvelope payloads.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Register CC-* hops and sign ContractEnvelope payloads.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Browser automation via Playwright MCP (official Microsoft headless browser)
Image generation and manipulation via MCP
PDF parsing and extraction via MCP
Autonomous tool discovery, evaluation, and integration for agent self-enhancement
Route OpenOS tasks to the correct product skill.
Enrich CRM contacts with LinkedIn and décideur data.
| name | open-contract |
| description | Register CC-* hops and sign ContractEnvelope payloads. |
| version | 1.0.0 |
| author | OpenPro |
| license | MIT |
| platforms | ["linux","macos","windows"] |
| metadata | {"hermes":{"tags":["OpenContract","CC","envelope","mesh","step0"],"category":"open-ecosystem","related_skills":["open-dev-workflow","open-rec","open-brain","open-mcp-scaffold"]}} |
Every inter-app hop needs a declared CC-* contract and a signed ContractEnvelope.
OpenContract is the registry + validator — not a business app.
blocked or signature failures on mesh hopsDo not use for Brain doc RAG alone — see open-brain (CC-BRAIN-* is ingest, not transport).
| Object | Location |
|---|---|
| Registry YAML | OpenContract/registry/*.yaml |
| Identities | OpenContract/registry/identities.yaml |
| TS SDK | @opencontract/envelope (wrapSignedIfProducer, parseInboundHop) |
| API | :3070 validate/wrap |
| Handbook | OpenOS/docs/opencontract/OPENCONTRACT-HANDBOOK.md |
Lifecycle: draft → implemented → verified (E2E + correlation assert).
OPENCONTRACT_IDENTITY, OPENCONTRACT_SIGNING_KEY (or OPENCONTRACT_DEV_KEYS=1 local)OPENCONTRACT_REQUIRE_SIGNATURE=1CC-* row in OpenContract/registry/ (producer, consumer, plane, payload schema)X-Correlation-Id on every hopverified in registryProducer (TS):
import { wrapSignedIfProducer } from '@opencontract/envelope'
return wrapSignedIfProducer({ contractId, correlationId, producer, consumer, payload })
Consumer:
import { parseInboundHop } from '@opencontract/envelope'
await parseInboundHop(body, contractId, (p) => schema.parse(p))
| Situation | Action |
|---|---|
| New mesh edge | Register CC-* first, then code |
| Consumer HTTP response | Ack hop — do not sign as another app's identity |
| Multiple hops in one flow | One CC-* per hop — no merged blobs |
| Local dev | OPENCONTRACT_DEV_KEYS=1 + OpenContract API on :3070 |
opencontract list shows contract implemented or verifiedcontract_id + signatureOPENCONTRACT_REQUIRE_SIGNATURE=1