You need to sign in or sign up before continuing.
speckit.constitution.md 4.93 KB
description: 通过交互式或提供的原则输入创建/更新项目宪法,并确保所有依赖模板保持同步。
handoffs:
  - label: 生成规格说明
    agent: speckit.specify
    prompt: 基于更新后的宪法生成功能规格说明。我想要构建……

用户输入

$ARGUMENTS

在继续之前,你必须先考虑用户输入(如果不为空)。

概述

你正在更新 .specify/memory/constitution.md 中的项目宪法。该文件是一个模板(Template),包含方括号占位符(例如 [PROJECT_NAME][PRINCIPLE_1_NAME])。你的工作是:(a)收集/推导具体值,(b)精准填充模板,(c)将所有修订同步传播到依赖产物中。

按以下流程执行:

  1. 加载 .specify/memory/constitution.md 中现有的宪法模板。

    • 识别所有形如 [ALL_CAPS_IDENTIFIER] 的占位符 token。 重要:用户需要的原则数量可能少于或多于模板默认数量。如果用户指定了数量,必须尊重该数量,并在通用模板结构下调整文档内容。
  2. 收集/推导占位符的具体值:

    • 若用户输入(对话中)已提供取值,直接使用。
    • 否则从仓库上下文推断(README、文档、若存在则参考仓库内嵌的旧宪法内容)。
    • 治理日期规则:RATIFICATION_DATE 为原始生效日期(未知则询问或标记 TODO);LAST_AMENDED_DATE 若本次有修改则为今天,否则保留原值。
    • CONSTITUTION_VERSION 必须按语义化版本规则递增:
      • MAJOR:不向后兼容的治理/原则移除或重定义。
      • MINOR:新增原则/章节,或对既有指导做实质性扩展。
      • PATCH:澄清、措辞、错别字修正、非语义性的精炼。
    • 若版本升级类型不明确,在最终落盘前先给出判断理由。
  3. 起草更新后的宪法内容:

    • 用具体文本替换每个占位符(不应残留方括号 token;除非项目明确决定暂不定义,并对每个保留项给出理由)。
    • 保持标题层级不变;占位符被替换后,注释可移除,除非该注释仍对理解有帮助。
    • 确保每条原则包含:简短名称行、概括不可协商规则的段落(或要点列表),若理由不明显则补充明确的理由说明。
    • 确保治理(Governance)章节包含:修订流程、版本策略、合规审查期望。
  4. 一致性传播清单(把旧清单转为可执行校验项):

    • 阅读 .specify/templates/plan-template.md,确保其中的“宪法检查”或规则与更新后的原则一致。
    • 阅读 .specify/templates/spec-template.md,校验范围/需求对齐;若宪法新增/移除必填章节或约束,则同步更新模板。
    • 阅读 .specify/templates/tasks-template.md,确保任务分类能体现新增/移除的原则驱动任务类型(例如可观测性、版本策略、测试纪律)。
    • 阅读 .specify/templates/commands/*.md 下的每个命令文件(包含本文件),确保通用指导中不残留过时的 agent 特定引用(例如仅写 CLAUDE)。
    • 阅读运行/使用指导文档(例如 README.mddocs/quickstart.md,或存在的 agent 专属指导文件),同步更新与宪法变更相关的引用。
  5. 生成“同步影响报告”(更新后,作为 HTML 注释插入到宪法文件顶部):

    • 版本变更:旧版本 → 新版本
    • 修改过的原则列表(若重命名则写 旧标题 → 新标题)
    • 新增章节
    • 移除章节
    • 需要更新的模板列表(✅ 已更新 / ⚠ 待处理),并附文件路径
    • 若有占位符被刻意延期,列出后续 TODO
  6. 最终输出前校验:

    • 不残留任何无法解释的方括号占位符 token。
    • 版本行与同步影响报告一致。
    • 日期使用 ISO 格式 YYYY-MM-DD。
    • 原则陈述应可验证、可测试,避免含糊措辞(必要时将“should”替换为 MUST/SHOULD,并给出理由)。
  7. 将完成的宪法内容写回 .specify/memory/constitution.md(覆盖写入)。

  8. 输出给用户的最终总结应包含:

    • 新版本号与升级理由。
    • 需要人工跟进的文件(如有)。
    • 建议的提交信息(例如 docs: amend constitution to vX.Y.Z (principle additions + governance update))。

格式与样式要求:

  • 标题层级必须与模板完全一致(不要升/降级标题)。
  • 适度换行以保持可读性(理想情况下 <100 字符),但不要为了硬性限制造成生硬断行。
  • 章节之间保持一个空行。
  • 避免行尾空格。

如果用户只提供部分更新(例如只修改一条原则),也要照样执行校验与版本决策步骤。

如果缺少关键信息(例如确实不知道 ratification date),插入 TODO(<FIELD_NAME>): explanation,并在同步影响报告的延期项(deferred)中列出。

不要创建新的模板;始终在现有的 .specify/memory/constitution.md 文件上操作。