open-contract
Register CC-* hops and sign ContractEnvelope payloads.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Register CC-* hops and sign ContractEnvelope payloads.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
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