agent-entrypoints
创建、优化或审查项目及模块级 AGENTS.md / CLAUDE.md 等 Agent 入口文档时使用。根据项目事实精简规则、设置按需读取指针,支持模块两入口布局,并检查规则是否可执行、入口是否冲突。
也适用于同一进程内存在明确消费者、提供者和公共接口且有漂移风险的业务模块;按实际边界验证公开签名与行为,无网络边界时不要求序列化证据。 分前端/后端(或多个服务)多端开发的项目,用 CONTRACT.md 指向的唯一机器契约,各端只照它各做各的,防止字段漂移导致集成时白屏。支持单会话多 agent 和多终端各自跑两种模式。只要项目有前后端/多服务、接口字段老对不上、各端联调卡住、某端改了字段忘了通知别人、或前端为渲染一个页面要调一堆接口拼数据,就用这个 skill,哪怕用户没明说"契约"。这套方法论的学名是消费者驱动契约(Consumer-Driven
$ npx -y skills add qshanx/docs-governance --skill contract-first --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/contract-firstContext preview
The summary Claude sees to decide when to auto-load this skill.
也适用于同一进程内存在明确消费者、提供者和公共接口且有漂移风险的业务模块;按实际边界验证公开签名与行为,无网络边界时不要求序列化证据。 分前端/后端(或多个服务)多端开发的项目,用 CONTRACT.md 指向的唯一机器契约,各端只照它各做各的,防止字段漂移导致集成时白屏。支持单会话多 agent 和多终端各自跑两种模式。只要项目有前后端/多服务、接口字段老对不上、各端联调卡住、某端改了字段忘了通知别人、或前端为渲染一个页面要调一堆接口拼数据,就用这个 skill,哪怕用户没明说"契约"。这套方法论的学名是消费者驱动契约(Consumer-Driven
name: contract-first description: >- 也适用于同一进程内存在明确消费者、提供者和公共接口且有漂移风险的业务模块;按实际边界验证公开签名与行为,无网络边界时不要求序列化证据。 分前端/后端(或多个服务)多端开发的项目,用 CONTRACT.md 指向的唯一机器契约,各端只照它各做各的,防止字段漂移导致集成时白屏。支持单会话多 agent 和多终端各自跑两种模式。只要项目有前后端/多服务、接口字段老对不上、各端联调卡住、某端改了字段忘了通知别人、或前端为渲染一个页面要调一堆接口拼数据,就用这个 skill,哪怕用户没明说"契约"。这套方法论的学名是消费者驱动契约(Consumer-Driven Contracts, CDC)/ 契约测试。中文触发:契约式开发、接口契约、前后端协作、多终端协作、防字段漂移、接口对不上、联调、API 契约、字段命名不一致、集成白屏、唯一真相源、契约测试、CDC。English triggers: contract-first development, consumer-driven contracts, contract testing, API contract, frontend backend collaboration, multi-terminal, prevent field drift, provider verification. metadata: origin: ECC
多端并行开发的项目(前端 + 后端,或再加多个服务),最容易炸在"连接"那一刻:
> 后端把 `userName` 改成 `user_name`,忘了通知前端。两边各自"自测通过",一集成——白屏。**两份文档各自为真,合起来是假的。**
**契约优先**把接口当成一份**唯一机器契约**(由 `CONTRACT.md` 登记入口):所有数据接口只定义一次,各端照它各做各的,谁都不许私自偏离。它和 `living-docs-governance` 是姊妹篇——那套防"项目文档"漂移,这套防"端与端之间的接口"漂移。
> 学名:这套就是 **消费者驱动契约(Consumer-Driven Contracts, CDC)/ 契约测试(contract testing)**。"消费方需求先行"=CDC 核心;"后端写返回符合契约的测试"=提供者验证(provider verification);标杆工具是 Pact,契约规格常用 OpenAPI/Swagger。
同一进程内的业务模块也可在存在明确消费者/提供者和公共接口时复用契约核对,不要求拆成服务。没有真实集成边界或漂移风险时,不为普通内部函数建立契约体系。
已有 `CONTRACT.md` 或接口登记位置就继续引用它。采用模块两入口布局且没有独立契约入口时,将路径、拥有者、版本依据、兼容约束和验证命令放在模块 `AGENTS.md` 的“接口契约”节;本 Skill 下文的 `CONTRACT.md` 均指这个已选定的入口,不要求再新建同名文件。字段不写两遍。
进程内接口可用已有公共导出/语言接口类型作为唯一机器定义,配消费者/提供者行为测试;跨网络接口仍验证线上的序列化 schema,内部 DTO 不能替代它。副作用、错误和状态流转若类型无法表达,以已有规格和测试为据并链接。术语归对应 `CONTEXT.md`,选型理由归 `domain-modeling` 管理的决策记录。
这套契约协作有两种落地方式,纪律一致、组织方式不同:
一个支持多 agent 的会话里,契约拥有者**派出**前端 / 后端(及更多服务工人)并行干活,最后由它集成对账。Claude Code 可使用 `contract-director`、`frontend-dev`、`backend-dev`;Codex 可由当前 agent 持有契约并使用内置 worker,任务提示中明确端别、文件所有权和“只读契约”的边界。适合一人一个会话内推进、需要实时编排时。
终端1 跑前端、终端2 跑后端、终端N 跑某个服务,**各端完全独立、上下文隔离**,**没有一个活的主任在线派活**。协调的唯一媒介就是那份 `CONTRACT.md` 文件:
**两种模式的铁律完全相同**:接口只在 `CONTRACT.md` 指向的机器契约定义一次;各端只读不改;要改接口必须先改契约,绝不在实现里私自偏离。
> 宿主适配:Claude Code 的 `/contract` 与自定义 agents 是交互适配层;Codex / ChatGPT 直接调用 `$contract-first` 并由当前 agent 执行同一流程。没有可用子 agent 时退化为顺序执行,不得因此跳过契约前置、提供方验证或集成对账。
**将协作约定与机器定义分开,字段只保留一个来源**:
跨接口字段约束通过机器契约的公共 schema 或类型定义复用。所有接口只在 `CONTRACT.md` 指向的机器契约定义**一次**,各端只读;改契约的权力归**契约拥有者**(模式 A 是 director,模式 B 是指定的人/终端)。要改接口 → 提契约变更请求 → 拥有者改契约 → 各端再对齐。**绝不在实现里单方偏离契约**——这是头号集成杀手。
接口是给消费方(如前端)用的,**先看消费方渲染/使用需要什么**,再定接口形状,而不是照着数据库表结构透传。定契约时优先问:
> 模式 A 由 `contract-director` 串起全流程;模式 B 下每端在自己终端各做第 1、2、4 步,第 3 步(定契约)和第 5 步(对账)由契约拥有者做。
1. **先反问消歧义,再定契约。** 定契约前,就模糊点反问消费方(字段语义、类型、空值怎么传、枚举到底有哪几个),把歧义消灭在动手前(借 Spec Kit 的 `/clarify` 思路)。然后按"消费方需求先行"更新唯一机器契约,并在 `CONTRACT.md` 登记入口和版本(模板见 `templates/CONTRACT.example.md`)。**契约必须前置**——绝不先写实现、再从代码事后导出契约,那样契约永远滞后、必然漂移。 2. **各端以契约为强制起点开发。** 每端读取机器契约对应段、只读不改。每个接口任务**第一步就是读 `CONTRACT.md` 及其机器契约**,不是凭记忆;复杂改动先声明"我打算怎么对齐契约",审过再写代码——在偏离前就拦下来。 3. **要改接口 → 提契约变更请求。** 不在实现里偷改。模式 A 回报 director;模式 B 写进约定位置(Issue 或 `PROJECT_LOG.md` 的 `contract-request`),由契约拥有者裁决后更新契约。破坏性变化必须同时写明兼容期、消费者迁移顺序、回滚条件和不可逆部分;缺失时不进入实现。 4. **本端自检。** 消费方回查所有用到的字段是否都在契约里;提供方跑契约校验测试。 5. **集成对账。** 逐字段核对:提供方返回 vs 契约、消费方用到的字段 vs 契约、字段名大小写/枚举值是否一致。对不上 → 指出哪边偏离、让其修正;若契约本身不合理 → 契约拥有者改契约再让各端对齐。 6. **记账。** 契约有变更 → 往 `PROJECT_LOG.md` 追加一行 `## [日期] contract | 改了什么接口、为什么`(与 `living-docs-governance` 共用同一本流水账)。
A knowledge, decision, and verification governance system for long-running AI-assisted projects. It turns a strong agent's one-off work into shared project capability that future agents can inherit, verify, and evolve.
创建、优化或审查项目及模块级 AGENTS.md / CLAUDE.md 等 Agent 入口文档时使用。根据项目事实精简规则、设置按需读取指针,支持模块两入口布局,并检查规则是否可执行、入口是否冲突。
用户要求整体检查项目治理规则的承载位置、精简常驻约束,或判断散落资料能否沉淀为 Skill、脚本或 Hook 时使用。只读识别主源、重复工作流与自动化缺口,给出证据和最小建议;单项文档维护直接使用已有专项 Skill。
判断项目是否需要架构文档,或生成、完善、审查 ARCHITECTURE.md 及已有架构说明。用于模块分工、状态归属、依赖关系或核心流程需要梳理时;依据项目证据记录结构,区分当前实现与已确认设计。
兼容旧 context-and-decisions 调用;领域术语与 ADR 的形成和修改统一转交随插件提供的 domain-modeling。
只读审计现有项目文档,检查资料散乱、入口难找、断链、内容过时、重复主源及当前与历史混用。用于用户要求“审计文档”“检查文档是否过时”“看看文档哪里乱”,或阶段交接前检查文档体系时。
作为面向长期 AI 协作项目的知识、决策与验证治理总入口,把优秀 Agent 的一次性工作沉淀为可继承、可验证、可持续演进的项目集体能力;根据用户意图把任务路由到活文档、领域上下文与…