/agf-writing-change
Use when product-lead is about to formalize a feature into a change folder (the OpenSpec-style intake that replaces PRD as of v6.9.0). Provides the four-artifact structure (proposal / delta specs / design / tasks), the Requirement+Scenario delta format
$ npx -y skills add pcliangx/AppGenesisForge --skill agf-writing-change --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/agf-writing-change
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use when product-lead is about to formalize a feature into a change folder (the OpenSpec-style intake that replaces PRD as of v6.9.0). Provides the four-artifact structure (proposal / delta specs / design / tasks), the Requirement+Scenario delta format
SKILL.md
agf-writing-change.SKILL.mdname: agf-writing-change
description: Use when product-lead is about to formalize a feature into a change folder (the OpenSpec-style intake that replaces PRD as of v6.9.0). Provides the four-artifact structure (proposal / delta specs / design / tasks), the Requirement+Scenario delta format (ADDED/MODIFIED/REMOVED/RENAMED), the AC↔scenario mapping that keeps the AGF verification spine intact, the validate gate, and the archive-merge hand-off. Replaces agf-writing-prd (deprecated).
Writing a Change(变更文件夹入口)
变更文件夹(`docs/changes/<change>/`)是 AGF 自 v6.9.0 起的**新需求入口**,取代 PRD(OpenSpec 风格,决策见 [ADR-012](../../../docs/adr/012-spec-driven-change-folders.md))。它把需求表达成**对活规格的 delta**,交付签字后 merge 进 `docs/specs/`——让「系统当前有哪些行为」永远有 SSOT。
Use this skill when:
- product-lead 跑完 `superpowers:brainstorming` 且用户批准了大方向。
- 要把一个 feature 正式化成 `docs/changes/<change>/` 四件套,再派工。
- 既有 change 在 open question 解决后更新。
> **验证脊柱不变**:apply 之后的 SIT 自跑 / code review + SIT Audit / 部署门 / E2E / UAT pass² / 业务签字全照旧。本 skill 只管**入口**。
Pre-conditions
- [ ] 方向已获批(还在探索 → 先 `superpowers:brainstorming`,别建 change)。
- [ ] 知道用户是谁、优化什么业务结果。
- [ ] 至少 1 个可测的成功标志。
任一不满足:**停,别建 change**,回 brainstorming 或 SendMessage 用户澄清。
建一个 change
cp -r docs/changes/_TEMPLATE docs/changes/<change-kebab-case>
`<change>` 用 kebab-case 动词短语(如 `add-dark-mode`、`oauth-login`)。一个 change 一个文件夹。
四件套
1. `proposal.md` —— why + what + scope
- **Why**:用户痛点 / 业务驱动(1–3 段)。
- **What**:本次交付的能力一句话;**Non-Goals** 至少 1 项。
- **影响的能力**表:列触及的 capability + 对应活规格路径 + 本次 delta 文件(新建能力标 NEW)。
- **Open Questions**:每条标 Owner + Due(缺则不进派工)。
- 顶部填 effort tier(Small/Medium/Large)+ **交付 lane**(full/fast;高风险一律 full)。
2. `specs/<capability>.md` —— delta(唯一会 merge 进活规格的部分)
对每个触及的能力写一个 delta 文件(文件名 = capability kebab-case)。段头**只保留用到的**:
## ADDED Requirements
### Requirement: <新行为名>
The system MUST <规范性契约>.
#### Scenario: <名>
- WHEN <触发>
- THEN <可观察结果>
## MODIFIED Requirements
### Requirement: <既有行为名> # header 须与活规格精确匹配(whitespace-insensitive)
The system MUST <改后的完整行为>. # 整块复制活规格里的 requirement+scenario 再改
#### Scenario: <名>
- WHEN ...
- THEN ...
## REMOVED Requirements
### Requirement: <被删行为名>
**Reason**: <为什么删>
**Migration**: <调用方/用户怎么迁移>
## RENAMED Requirements
- FROM: `### Requirement: <旧名>`
- TO: `### Requirement: <新名>`
**铁律**:每个 `### Requirement:`(ADDED/MODIFIED)下**至少 1 个 `#### Scenario:`**(恰好 4 个 `#`);Requirement 用 MUST/SHALL;REMOVED 必带 Reason+Migration。
3. `design.md` —— 单 change 技术「怎么做」(薄,可省)
简单 change 删掉本文件即可。高风险 change(auth / schema 迁移 / LLM 切换 / cross-cutting)**引用一个新 ADR**(tech-lead 写),不在 design.md 自拍架构。API 契约 SSOT 仍是 OpenAPI([ADR-006](../../../docs/adr/006-frontend-backend-contract-sync.md))。
4. `tasks.md` —— 实现 checklist + AC↔scenario 映射
**关键**:维护 `AC-N ↔ <capability> / Requirement / Scenario` 映射表。AC 仍是 `AC-N`(编号 / 优先级 / progress 5 段格式 / SIT hook 全不变,[ADR-012](../../../docs/adr/012-spec-driven-change-folders.md) 决策 4),语义来源是 delta 的 scenario——dev 逐 AC 自验、qa 逐 AC 测、PL 逐 AC 签字,照旧。
写 delta 前:消歧自检(借鉴 Spec Kit `/clarify`)
`brainstorming` 探索完、动笔写 delta 前,按这张 taxonomy 核一遍关键维度有没有遗漏(避免"写完才发现没问清");有 Partial / Missing 的回去 SendMessage 用户澄清:
| 维度 | 自检 | |---|---| | Scope / 边界 | 本次做什么、明确**不做**什么(Non-Goals)清楚? | | 数据 / 实体 | 关键实体 / 字段 / 约束 / 生命周期定义了? | | UX / 流程 | 用户主路径 + 关键分支(含失败 / 空态)覆盖? | | 非功能 | 性能 / 并发 / 配额 / 安全 / 合规有要求吗?有则**量化**(别写"快"/"高效",写阈值) | | 集成 / 依赖 | 触及哪些既有能力 / 外部服务 / 契约? | | 边界 / 异常 | 错误 / 超时 / 越权 / 并发冲突等 edge case 想过? | | 术语 | 与活规格既有术语一致(无同义漂移)? |
> 每个有内容的维度落进对应 delta 的 Requirement / Scenario;与本 change 无关的维度跳过即可,不强凑。
validate(对齐前自检)
bash .claude/scripts/agf-spec-validate.sh docs/changes/<change>/specs/*.md
advisory(不阻断);修掉 flag 省一轮 review 打回。code-reviewer 在 review 时也会跑。
完成前的验证
- [ ] 每个 capability 的 delta 段头合法、每 Requirement ≥1 Scenario、REMOVED 带 Reason+Migration?
- [ ] **无模糊词**:Requirement 无未量化的「快 / 高效 / 友好 / scalable…」(跑 validate 看 ⑥ flag;该量化给阈值、该明确给标准)?
- [ ] `tasks.md` 的 AC↔scenario 映射齐全、每条 AC 可被 qa 用一段话测?
- [ ] proposal 有 Non-Goals + Open Questions(每条 Owner+Due)?
- [ ] `agf-spec-validate.sh` 对所有 delta 输出 PASS(或 flag 已知可接受)?
- [ ] 已从 `_TEMPLATE` 改名 delta 文件为实际 capability、删掉未用的示例段与占位(防模板示例假绿 + archive 生成 `_capability_/` 垃圾目录)?
任一不行 → 不要派工,回去补。
Hand-off
1. **对齐门**:SendMessage 用户审 `proposal.md` + `specs/` delta,批准后才派工(写码前对齐)。 2. `TaskCreate` 建 Agent Teams task(按 product-lead Step 2 的 6 段 schema,引用 `tasks.md`)。 3. SendMessage 执行层:"change 已就绪 docs/changes/<change>/,请在 Plan Mode 报告里 cite AC 编号"。 4. 如有 UI → SendMessage uiux-designer 起稿。
归档(UAT 业务签字后,PL 执行)
bash .claude/scripts/agf-spec-archive.sh <change> <YYYY-MM-DD> --dry-run # 先核查 merge 结果
bash .claude/scripts/agf-spec-archive.sh <change> <YYYY-MM-DD> # 确认无误再正式归档
按 RENAMED→REMOVED→MODIFIED→ADDED 把 delta merge 进 `docs/specs/<cap>/spec.md`,change 移 `docs/changes/archive/<date>-<change>/`。脚本 **pre-flight 门控**:名称失配 / 重名 Requirement 等异常 → 非零退出、不写不归档(确认有意则 `--force` 放行)。与 `archive-progress.sh`(归档 progress)各跑各的。
> **同一 capability 同时只允许一个在途 change**(防并行 change 归档时后者覆盖前者已合并行为的 lost-update)。多个在途 change 触及同一能力时,PL 串行归档、后者基于前者已 merge 的活规格重写 delta。
反模式
- ❌ delta 写实现细节(SQL 字段长度等)——Requirement 是行为契约,不是代码方案。
- ❌ Requirement 无 Scenario / 用「应该」弱断言 / 不用 MUST。
- ❌ 直接手改 `docs/specs/` 活规格做功能变更——一律走 delta + archive-merge。
- ❌ 不列 Non-Goals / Open Questions 留空无 owner。
- ❌ 高风险 change 在 design.md 自拍架构而不开 ADR。
Read more
name: agf-writing-change description: Use when product-lead is about to formalize a feature into a change folder (the OpenSpec-style intake that replaces PRD as of v6.9.0). Provides the four-artifact structure (proposal / delta specs / design / tasks), the Requirement+Scenario delta format (ADDED/MODIFIED/REMOVED/RENAMED), the AC↔scenario mapping that keeps the AGF verification spine intact, the validate gate, and the archive-merge hand-off. Replaces agf-writing-prd (deprecated).
Writing a Change(变更文件夹入口)
变更文件夹(`docs/changes/<change>/`)是 AGF 自 v6.9.0 起的**新需求入口**,取代 PRD(OpenSpec 风格,决策见 [ADR-012](../../../docs/adr/012-spec-driven-change-folders.md))。它把需求表达成**对活规格的 delta**,交付签字后 merge 进 `docs/specs/`——让「系统当前有哪些行为」永远有 SSOT。
Use this skill when:
- product-lead 跑完 `superpowers:brainstorming` 且用户批准了大方向。
- 要把一个 feature 正式化成 `docs/changes/<change>/` 四件套,再派工。
- 既有 change 在 open question 解决后更新。
> **验证脊柱不变**:apply 之后的 SIT 自跑 / code review + SIT Audit / 部署门 / E2E / UAT pass² / 业务签字全照旧。本 skill 只管**入口**。
Pre-conditions
- [ ] 方向已获批(还在探索 → 先 `superpowers:brainstorming`,别建 change)。
- [ ] 知道用户是谁、优化什么业务结果。
- [ ] 至少 1 个可测的成功标志。
任一不满足:**停,别建 change**,回 brainstorming 或 SendMessage 用户澄清。
建一个 change
cp -r docs/changes/_TEMPLATE docs/changes/<change-kebab-case>
`<change>` 用 kebab-case 动词短语(如 `add-dark-mode`、`oauth-login`)。一个 change 一个文件夹。
四件套
1. `proposal.md` —— why + what + scope
- **Why**:用户痛点 / 业务驱动(1–3 段)。
- **What**:本次交付的能力一句话;**Non-Goals** 至少 1 项。
- **影响的能力**表:列触及的 capability + 对应活规格路径 + 本次 delta 文件(新建能力标 NEW)。
- **Open Questions**:每条标 Owner + Due(缺则不进派工)。
- 顶部填 effort tier(Small/Medium/Large)+ **交付 lane**(full/fast;高风险一律 full)。
2. `specs/<capability>.md` —— delta(唯一会 merge 进活规格的部分)
对每个触及的能力写一个 delta 文件(文件名 = capability kebab-case)。段头**只保留用到的**:
## ADDED Requirements ### Requirement: <新行为名> The system MUST <规范性契约>. #### Scenario: <名> - WHEN <触发> - THEN <可观察结果> ## MODIFIED Requirements ### Requirement: <既有行为名> # header 须与活规格精确匹配(whitespace-insensitive) The system MUST <改后的完整行为>. # 整块复制活规格里的 requirement+scenario 再改 #### Scenario: <名> - WHEN ... - THEN ... ## REMOVED Requirements ### Requirement: <被删行为名> **Reason**: <为什么删> **Migration**: <调用方/用户怎么迁移> ## RENAMED Requirements - FROM: `### Requirement: <旧名>` - TO: `### Requirement: <新名>`
**铁律**:每个 `### Requirement:`(ADDED/MODIFIED)下**至少 1 个 `#### Scenario:`**(恰好 4 个 `#`);Requirement 用 MUST/SHALL;REMOVED 必带 Reason+Migration。
3. `design.md` —— 单 change 技术「怎么做」(薄,可省)
简单 change 删掉本文件即可。高风险 change(auth / schema 迁移 / LLM 切换 / cross-cutting)**引用一个新 ADR**(tech-lead 写),不在 design.md 自拍架构。API 契约 SSOT 仍是 OpenAPI([ADR-006](../../../docs/adr/006-frontend-backend-contract-sync.md))。
4. `tasks.md` —— 实现 checklist + AC↔scenario 映射
**关键**:维护 `AC-N ↔ <capability> / Requirement / Scenario` 映射表。AC 仍是 `AC-N`(编号 / 优先级 / progress 5 段格式 / SIT hook 全不变,[ADR-012](../../../docs/adr/012-spec-driven-change-folders.md) 决策 4),语义来源是 delta 的 scenario——dev 逐 AC 自验、qa 逐 AC 测、PL 逐 AC 签字,照旧。
写 delta 前:消歧自检(借鉴 Spec Kit `/clarify`)
`brainstorming` 探索完、动笔写 delta 前,按这张 taxonomy 核一遍关键维度有没有遗漏(避免"写完才发现没问清");有 Partial / Missing 的回去 SendMessage 用户澄清:
| 维度 | 自检 | |---|---| | Scope / 边界 | 本次做什么、明确**不做**什么(Non-Goals)清楚? | | 数据 / 实体 | 关键实体 / 字段 / 约束 / 生命周期定义了? | | UX / 流程 | 用户主路径 + 关键分支(含失败 / 空态)覆盖? | | 非功能 | 性能 / 并发 / 配额 / 安全 / 合规有要求吗?有则**量化**(别写"快"/"高效",写阈值) | | 集成 / 依赖 | 触及哪些既有能力 / 外部服务 / 契约? | | 边界 / 异常 | 错误 / 超时 / 越权 / 并发冲突等 edge case 想过? | | 术语 | 与活规格既有术语一致(无同义漂移)? |
> 每个有内容的维度落进对应 delta 的 Requirement / Scenario;与本 change 无关的维度跳过即可,不强凑。
validate(对齐前自检)
bash .claude/scripts/agf-spec-validate.sh docs/changes/<change>/specs/*.md
advisory(不阻断);修掉 flag 省一轮 review 打回。code-reviewer 在 review 时也会跑。
完成前的验证
- [ ] 每个 capability 的 delta 段头合法、每 Requirement ≥1 Scenario、REMOVED 带 Reason+Migration?
- [ ] **无模糊词**:Requirement 无未量化的「快 / 高效 / 友好 / scalable…」(跑 validate 看 ⑥ flag;该量化给阈值、该明确给标准)?
- [ ] `tasks.md` 的 AC↔scenario 映射齐全、每条 AC 可被 qa 用一段话测?
- [ ] proposal 有 Non-Goals + Open Questions(每条 Owner+Due)?
- [ ] `agf-spec-validate.sh` 对所有 delta 输出 PASS(或 flag 已知可接受)?
- [ ] 已从 `_TEMPLATE` 改名 delta 文件为实际 capability、删掉未用的示例段与占位(防模板示例假绿 + archive 生成 `_capability_/` 垃圾目录)?
任一不行 → 不要派工,回去补。
Hand-off
1. **对齐门**:SendMessage 用户审 `proposal.md` + `specs/` delta,批准后才派工(写码前对齐)。 2. `TaskCreate` 建 Agent Teams task(按 product-lead Step 2 的 6 段 schema,引用 `tasks.md`)。 3. SendMessage 执行层:"change 已就绪 docs/changes/<change>/,请在 Plan Mode 报告里 cite AC 编号"。 4. 如有 UI → SendMessage uiux-designer 起稿。
归档(UAT 业务签字后,PL 执行)
bash .claude/scripts/agf-spec-archive.sh <change> <YYYY-MM-DD> --dry-run # 先核查 merge 结果 bash .claude/scripts/agf-spec-archive.sh <change> <YYYY-MM-DD> # 确认无误再正式归档
按 RENAMED→REMOVED→MODIFIED→ADDED 把 delta merge 进 `docs/specs/<cap>/spec.md`,change 移 `docs/changes/archive/<date>-<change>/`。脚本 **pre-flight 门控**:名称失配 / 重名 Requirement 等异常 → 非零退出、不写不归档(确认有意则 `--force` 放行)。与 `archive-progress.sh`(归档 progress)各跑各的。
> **同一 capability 同时只允许一个在途 change**(防并行 change 归档时后者覆盖前者已合并行为的 lost-update)。多个在途 change 触及同一能力时,PL 串行归档、后者基于前者已 merge 的活规格重写 delta。
反模式
- ❌ delta 写实现细节(SQL 字段长度等)——Requirement 是行为契约,不是代码方案。
- ❌ Requirement 无 Scenario / 用「应该」弱断言 / 不用 MUST。
- ❌ 直接手改 `docs/specs/` 活规格做功能变更——一律走 delta + archive-merge。
- ❌ 不列 Non-Goals / Open Questions 留空无 owner。
- ❌ 高风险 change 在 design.md 自拍架构而不开 ADR。
Code the Origin, Forge the App. 给 Claude Code 装一支有流程治理的 AI 开发团队——不是更聪明的单 agent,更像一条精益产线:19 角色分工协作、层层把关,缺陷流不进下一道工序。 ↑ 一句话提需求 → AI 团队并行交付 → 看板实时点亮,全程一个终端 tab。 单个 AI agent 一把梭,长流程会失控——没人审、没人测,说「完成了」其实没跑通。AGF 不赌「更强的模型」,而是把 AI 当一支需要流程约束的团队来管——质量不靠更聪明的工人,靠更好的产线。
Repo: pcliangx/AppGenesisForge
Other skills on appgenesisforge.
- /agf-code-map
Deeply Understand (codemap) — 持久化代码图谱 + 变更影响分析 + 理解地图。接手遗留项目 Day-1 / PR 影响分析 / 解释陌生代码 / PRD·ADR 前现状理解时用。编排 tools/codemap/ 的 codemap CLI
Open skill - /agf-deploying-uat
Use when deploy-engineer is about to deploy the merged-to-main code to the isolated local UAT stack (after code review + SIT Audit pass and merge, before qa-engineer runs E2E/UAT). Provides the applicability gate, pre-flight checks, isolated compose bring-up (independent project
Open skill - /agf-design-discipline
Use when uiux-designer is about to produce a design spec (spec.md) or static HTML prototype, or frontend-dev is about to build UI from a design. Provides the anti-AI-slop design discipline layer — Brief Inference (Design Read), three aesthetic dials tuned for product UI, AI
Open skill - /agf-releasing-apple
Use when apple-release-engineer is about to build the signed distributable (TestFlight build / notarized DMG / internal package) from merged-to-main code (after apple code review + SIT Audit pass and merge, before apple-qa-engineer runs E2E/UAT). Provides the applicability gate,
Open skill - /agf-running-apple-sit
Use when apple-dev has finished feature code + Unit tests (Swift Testing) and is about to enter code-review. Provides the Apple SIT scope (xcodebuild test + simulator per declared target), the AC-driven integration walk, APIProtocol-mock discipline, and evidence sink
Open skill - /agf-running-release-retro
Use when product-lead is about to run a release retrospective after a successful MAJOR or MINOR release push (PATCH skipped). Provides applicability gate, pre-conditions, 7-step execution sequence, anti-patterns, and the verification gate before commit. Pairs with template
Open skill

