Squashed 'docs/standards/playbook/' changes from b529012..a854534

a854534  feat(plan_progress): auto-detect env for blocked plans
0d9a8ec 🐛 fix(playbook): honor no_backup for sync
2d401fa  test(templates): update prompts validation
e23474e 📝 docs(playbook): update prompts and sync notes
60ff3cd 🐛 fix(playbook): sync templates per file
816f036  test(playbook): add sync and vendor coverage
625cabb 📝 docs(memory_bank): reformat templates
2554c87 📝 docs(prompts): refresh prompt templates
6774a9d  feat(plan_progress): track plan status in progress.md
73d5c26 🔧 chore(playbook): split sync_templates into sections
278750e  feat(playbook): add plan progress tracking and rules updates
6efd637 🐛 fix(sync): keep agents block blank lines
ea00d43 🐛 fix(playbook): support toml without tomllib
ab0dd11 📝 docs(playbook): drop docs/plans snapshots
398696c  feat(playbook): merge unified cli
d959f80 🎨 style(docs): format markdown
b4f712a 🗑️ remove(legacy): drop old scripts and tests
0c4cd0e  feat(actions): add install_skills and format_md
3d1582c  feat(sync): add templates and standards actions
49bbfa1  feat(vendor): add playbook snapshot generation
8cfcc25  feat(cli): parse toml config and dispatch actions
05903c3  feat(cli): add toml config and dispatch order
65d216e  test(cli): add basic playbook cli tests
f0bcf54 📝 docs(plans): add unified playbook cli plan
0885309 📝 docs(plans): add unified playbook cli design
3483d8a 🔧 chore(git): ignore .worktrees dir
eb75036 🔧 chore(templates): align agent templates and docs
efb93f1 📝 docs(playbook): drop todo/confirm mentions
4a85306 🗑️ remove(workflow): drop todo/confirm artifacts
9c5ee9f 🎨 style(markdown): format docs with prettier
5a2925f 🐛 fix(scripts): repair windows script parsing
26a35e0  test(ci): update required skills list
8df3883 🐛 fix(test): skip external root doc links
b067fc1 📦 deps(skills): sync superpowers
c03cda0 🔧 chore(ci): sync from origin main
55e05cb 🔧 chore(ci): use superpowers sync script
73c97f3 🔧 chore(ci): centralize superpowers sync
945704f 🔧 chore(ci): add superpowers sync workflow
e5d2c93 🗑️ remove(skills): drop duplicate workflows
3ae9708 🐛 fix(ci): update tests for flag-only scripts
c44b9aa 🔧 chore(scripts): require flag-driven args
e4e1d14 🔧 chore(scripts): unify single-dash options
b2eb475  test(templates): add template coverage
fc230b7 🎨 style(markdown): format markdown files
8dc8924 🔧 chore(markdown): add prettier config and usage
2045dd4  feat(vendor_playbook): add apply-templates option
872d8cf  feat(templates): add sync templates scaffolding
5b1ca45 📝 docs(skills): clarify todo-plan template
054967a  feat(skills): add todo-plan skill
cc340f1 🔧 chore(ci): align standards-check workflow template
e9de0aa 🔧 chore(ci): drop removed skill check
e5dd7d9 🔧 fix(sync): avoid backtick expansion
087b0b9 🔧 chore(sync): align agents block across ps1/bat
9481510 🔧 chore(sync): scope agents block to existing langs
b0ca842 🔧 fix(sync): rewrite docs path in agents
c98d65c 🔧 chore(sync): rewrite agents docs paths
c33611c 🗑️ remove(skills): drop unused skills and update references
2b37860 🎨 style(markdown): format markdown files
e3ecd26 📝 docs(tsl): align syntax annotations and examples
37546fe 🐛 fix(playbook): enforce rulesets to agents flow
f2df89d 🐛 fix(scripts): include language list in AGENTS.md
c0d0737 🐛 fix(playbook): add agents mirror for sync
3b8b99b 🎨 style(markdown): normalize md headings and lists
31f3000 ♻️ refactor(playbook): rename agents template directory to rulesets
11b2bed  feat(markdown): add ruleset and sync support
5b89580  test(scripts): quiet git init warnings
5822a87 ♻️ refactor(playbook): streamline agents and refresh tsl docs

git-subtree-dir: docs/standards/playbook
git-subtree-split: a85453439f65b0c0aa05a5bbece773a02216ce76
This commit is contained in:
csh
2026-02-02 10:51:38 +08:00
parent ac794a6a70
commit b52102b7bd
192 changed files with 109197 additions and 135276 deletions
+40
View File
@@ -0,0 +1,40 @@
# 代理指引
<!-- playbook:framework:start -->
## 快速导航
<!-- playbook:agents:start -->
请以 `.agents/` 下的规则为准:
- 入口:`.agents/index.md`
- 语言规则:`.agents/{{MAIN_LANGUAGE}}/index.md`
<!-- playbook:agents:end -->
<!-- playbook:templates:start -->
### 核心规则
- [AGENT_RULES.md](./AGENT_RULES.md) - 执行流程与优先级
### 项目上下文
- [memory-bank/project-brief.md](memory-bank/project-brief.md) - 项目定位
- [memory-bank/tech-stack.md](memory-bank/tech-stack.md) - 技术栈
- [memory-bank/architecture.md](memory-bank/architecture.md) - 架构设计
- [memory-bank/progress.md](memory-bank/progress.md) - 进度追踪
- [memory-bank/decisions.md](memory-bank/decisions.md) - 架构决策
### 工作流程
- [docs/prompts/coding/clarify.md](docs/prompts/coding/clarify.md) - 需求澄清
- [docs/prompts/coding/review.md](docs/prompts/coding/review.md) - 复盘总结
- [docs/prompts/system/agent-behavior.md](docs/prompts/system/agent-behavior.md) - 工作模式参考
<!-- playbook:templates:end -->
<!-- playbook:framework:end -->
---
**最后更新**{{DATE}}
+220
View File
@@ -0,0 +1,220 @@
# AGENT_RULES
目的:为本仓库提供稳定的执行流程与行为规范。
## 优先级
1. 系统/开发者指令与安全约束
2. 项目私有规则:`AGENT_RULES.local.md`(如存在)
3. 仓库规则:`.agents/``AGENTS.md`
4. 本文件
## 安全红线
- 不得在代码/日志/注释中写入明文密钥、密码、Token
- 修改鉴权/权限逻辑必须说明动机与风险
- 不确定是否敏感时按敏感信息处理
- 执行修改文件系统的命令前,必须解释目的和潜在影响
## 行为准则
### 项目适应
- **模仿项目风格**:优先分析周围代码和配置,遵循现有约定
- **不假设可用性**:不假设库或框架可用,先验证再使用
- **完整完成请求**:不遗漏用户要求的任何部分
### 技术态度
- **准确性优先**:技术准确性优先于迎合用户
- **诚实纠正**:发现用户理解有误时,礼貌纠正
- **先查后答**:不确定时先调查再回答
### 避免过度工程
- **只做要求的**:不主动添加未要求的功能或重构
- **不过度抽象**:不为一次性操作创建工具函数
- **不为未来设计**:不为假设的未来需求设计
## 沟通原则
- **简洁直接**:专业、直接、简洁,避免对话填充词
- **拒绝时提供替代**:无法满足请求时,简洁说明并提供替代方案
- **不给时间估算**:专注任务本身,让用户自己判断时间
- **代码块标注语言**:输出代码时标注语言类型
- **不使用 emoji**:除非用户明确要求
## 上下文加载(每次会话开始)
**必读文档**(按顺序):
1. `AGENT_RULES.local.md` - 项目私有规则(如存在,优先级高于本文件)
2. `.agents/index.md` - 语言规则入口(如存在)
3. `memory-bank/project-brief.md` - 项目定位、边界、约束
4. `memory-bank/tech-stack.md` - 技术栈、工具链
5. `memory-bank/architecture.md` - 架构设计、模块职责
6. `memory-bank/decisions.md` - 重要决策记录(如存在)
7. `memory-bank/progress.md` - 执行进度与状态(如存在)
8. `docs/plans/` - 最新实施计划(如存在)
**目的**:让 AI 快速理解项目全貌,避免重复解释。
## 规划与执行分工
| 阶段 | 工具 | 产出 | 留痕 |
| ------------ | ---------------------- | ----------------- | -------------------- |
| 头脑风暴 | `$brainstorming` skill | 设计思路 | 无 |
| 生成计划 | `$writing-plans` skill | `docs/plans/*.md` | 无 |
| **执行计划** | **主循环** | 代码/配置变更 | **plan_progress.py** |
> **重要**:第三方 skills 不记录操作状态,执行必须通过主循环完成。
## 主循环
**触发词**
| 触发词 | 模式 | 说明 |
| --------------------------------------- | ---------- | ---------------------- |
| `执行主循环``继续执行``下一个 Plan` | 常规模式 | 遇确认场景可询问用户 |
| `自动执行所有 Plan` | 无交互模式 | 不询问,按规则自动处理 |
**Plan 状态**
| 状态 | 含义 |
| ----------- | ------------------------- |
| pending | 待执行 |
| in-progress | 执行中(崩溃恢复用) |
| done | 已完成 |
| blocked | 阻塞(需人工介入) |
| skipped | 跳过(Plan 不再需要执行) |
> 说明:`skipped` 仅用于永久不再执行;如需恢复执行,需手动改回 `pending`。
**环境阻塞格式**`blocked: env:<环境>:<Task列表>`
- 示例:`blocked: env:windows:Task2,Task4`
- 含义:需要在指定环境执行列出的 Task
- 约束:`Task` 列表使用英文逗号分隔,不要包含空格,便于解析
**流程**
1. 检测环境:
-`plan_progress.py` 自动识别当前环境(`windows` / `linux` / `darwin`
2. 选择 Plan
- 运行 `python {{PLAYBOOK_SCRIPTS}}/plan_progress.py select -plans docs/plans -progress memory-bank/progress.md`
- 返回第一个可执行的 Plan
- `pending``in-progress` 的 Plan
- `blocked: env:<当前环境>:...` 的 Plan(环境匹配时恢复执行)
- 如无可执行 Plan,跳到步骤 7
- **注意**:每次 select 会重新扫描 `docs/plans/` 目录,支持动态添加 Plan
3. 标记开始:
- 运行 `python {{PLAYBOOK_SCRIPTS}}/plan_progress.py record -plan <plan> -status in-progress -progress memory-bank/progress.md`
4. 阅读 Plan
- 理解目标、子任务与验证标准
- 如果是从 `blocked: env:...` 恢复,只执行列出的 Task
5. 逐步执行:
- 按顺序执行 Task
- 每个 Task 完成后进行必要验证(测试/日志/diff)
- **Task 失败处理**
- 环境不匹配(`command not found`、路径不存在)→ 记录该 Task 及所需环境,**继续下一个 Task**
- 其他阻塞 → 记录原因,跳到步骤 6 标记 Plan blocked
- **安全红线**(明文密钥等)→ 立即停止,不继续后续 Plan
- 遇到歧义/风险/决策点:
- 常规模式:记录到回复中,可询问用户
- 无交互模式:按「需要确认的场景」规则自动处理
6. 记录结果:
- 全部完成:`... -status done ...`
- 有 Task 因环境跳过:`... -status blocked ... -note "env:<所需环境>:<Task列表>"`
- 其他阻塞:`... -status blocked ... -note "<原因>"`
- 跳过整个 Plan`... -status skipped ... -note "<原因>"`
- 回到步骤 2 继续下一个 Plan
7. 汇总报告(所有 Plan 处理完毕后):
- 已完成的 Plan
- 阻塞/跳过的 Plan 及原因
- 需要在其他环境执行的 Plan`blocked: env:...`
- 待确认的歧义/风险/决策点
- 如需记录重要决策,写入 `memory-bank/decisions.md`
8. **结束**:主循环终止
## Plan 规则
- **Plan Meta 必填**Plan 头部 `---` 之后、Task 1 之前插入 `## Plan Meta`,包含:
- `Plan Group`(归类任务)
- `Parent Plan`(上层/集成计划链接)
- `Verification Scope`local 或 integration
- `Verification Gate`must-pass
- **不允许中断任务**:Plan 中不应包含必然失败或依赖未确认的信息;未确认项必须在 `$brainstorming` 阶段解决后再产出 Plan
- **验证必须可通过**:Plan 内验证应为当前阶段可通过的局部验证;需要集成验证的内容放入上层/集成 Plan
- 不因等待确认而中断可执行步骤;待确认事项在回复中列出
- 每轮只处理一个 Plan
- **小步快跑**:每个 Plan 应该可快速完成
- **可验证**:每个 Plan 必须包含验证步骤
## 执行约束
### 代码修改
- **必须先读文件再修改**:不读文件就提议修改是禁止的
- **必须运行测试验证**:相关测试必须通过
- **遵循换行规则**:遵循 `.gitattributes` 规则
- **命名一致性**:遵循项目现有的命名风格
- **最小改动原则**:只修改必要的部分,不顺手重构
### 决策记录
- **重要决策**:记录到 `memory-bank/decisions.md`ADR 格式)
- **待确认事项**:在回复中列出并等待确认
- **进度留痕**:通过 `{{PLAYBOOK_SCRIPTS}}/plan_progress.py` 维护 `memory-bank/progress.md` 的 Plan 状态块(唯一权威)
### Git 操作
- **不使用 --amend**:除非用户明确要求,总是创建新提交
- **不使用 --force**:特别是推送到 main/master,如用户要求必须警告风险
- **不跳过 hooks**:不使用 `--no-verify`
## 工具使用
- **并行执行**:独立的工具调用尽可能并行执行
- **遵循 schema**:严格遵循工具参数定义
- **避免循环**:避免重复调用同一工具获取相同信息
- **优先专用工具**:文件操作用 Read/Edit/Write,搜索用 Grep/Glob
## 需要确认的场景
**常规模式**(可交互):
- 需求不明确或存在多种可行方案
- 需要行为/兼容性取舍
- 风险或约束冲突
- **架构变更**:影响多个模块的修改
- **性能权衡**:需要在性能和可维护性之间选择
- **兼容性问题**:可能破坏现有用户代码
**无交互模式**(自动处理):
| 场景 | 处理方式 |
| -------------------------- | ---------------------------------- |
| 安全红线 | 立即停止,不继续后续 Plan |
| 架构变更/兼容性/破坏性修改 | 标记 blocked,跳到下一个 Plan |
| 多种可行方案 | 选择最保守方案,记录选择理由到报告 |
| 歧义/风险/决策点 | 记录到报告,继续执行 |
**可以不确认**(两种模式通用):
- 明显的 bug 修复
- 符合现有模式的小改动
- 测试用例补充
## 验证清单
每个 Plan 完成后,必须验证:
- [ ] 代码修改符合 `.agents/` 下的规则(如有)
- [ ] 相关测试通过(如有测试且未被豁免)
- [ ] 换行符正确
- [ ] 无语法错误
- [ ] 已通过 `plan_progress.py` 记录 Plan 状态
---
**最后更新**{{DATE}}
+321
View File
@@ -0,0 +1,321 @@
# 项目架构模板
本目录包含项目架构的模板文件,用于快速初始化新项目的 AI 代理工作环境。
## 目录结构
```text
templates/
├── README.md # 本文件
├── AGENTS.template.md # 路由中心模板
├── AGENT_RULES.template.md # 执行流程模板
├── memory-bank/ # 项目上下文模板
│ ├── project-brief.template.md
│ ├── tech-stack.template.md
│ ├── architecture.template.md
│ ├── progress.template.md
│ └── decisions.template.md
├── prompts/ # 提示词库模板
│ ├── README.md
│ ├── system/
│ │ └── agent-behavior.template.md
│ ├── coding/
│ │ ├── clarify.template.md
│ │ └── review.template.md
│ └── meta/
│ └── prompt-generator.template.md
├── ci/ # CI 模板
│ └── gitea/
│ └── .gitea/workflows/
├── cpp/ # C++ 配置模板
│ ├── .clang-format
│ ├── .clangd
│ └── ...
└── python/ # Python 配置模板
├── .editorconfig
├── pyproject.toml
└── ...
```
## 文件分类
从部署角度,文件分为四类:
| 类型 | 说明 | 部署行为 |
|------|------|----------|
| **框架模板** | playbook 提供,可随框架升级 | 可覆盖更新 |
| **项目上下文** | 首次部署后项目填写 | 首次创建,后续保护 |
| **项目私有** | 项目手动创建 | 不部署 |
| **参考资料** | 留在 playbook 快照中参考 | 不部署到项目根 |
### 框架模板(A类)
```
AGENT_RULES.md
AGENTS.md(区块更新)
docs/prompts/system/*.md # 框架提供
docs/prompts/coding/*.md # 框架提供
docs/prompts/meta/*.md # 框架提供
```
### 项目上下文(B类)
```
memory-bank/
├── project-brief.md
├── tech-stack.md
├── architecture.md
├── progress.md
└── decisions.md
```
> ⚠️ B类文件首次创建后应由项目填写。`force=true` 会覆盖已填写内容(自动备份)。
### 项目私有(C类,不部署)
```
AGENT_RULES.local.md # 项目私有规则
docs/plans/ # 项目实施计划
docs/prompts/custom/ # 项目自定义提示词
docs/prompts/**/* # 项目新增的文件不会被删除
```
### 参考资料(D类,不部署到项目根)
```
# 留在 docs/standards/playbook/templates/ 中参考
ci/ # CI 配置
cpp/ # C++ 配置
python/ # Python 配置
```
## 快速部署
使用统一入口 `playbook.py`,配置节存在即启用:
```toml
# playbook.toml
[playbook]
project_root = "/path/to/project"
# 同步 AGENT_RULES.md(配置节存在即启用)
[sync_rules]
# force = true # 可选,强制覆盖已存在的文件
# 同步 memory-bank/(配置节存在即启用)
[sync_memory_bank]
project_name = "MyProject"
# force = true # 可选,强制覆盖(会先备份)
# 同步 docs/prompts/(配置节存在即启用)
[sync_prompts]
# force = true # 可选,强制覆盖(会先备份)
```
```bash
python docs/standards/playbook/scripts/playbook.py -config playbook.toml
```
参数说明见 `playbook.toml.example`(仓库根目录)或 vendoring 后的 `docs/standards/playbook/playbook.toml.example`
### 配置节说明
| 配置节 | 部署内容 | 选项 |
| -------------------- | -------------- | ----------------------- |
| `[sync_rules]` | AGENT_RULES.md | `force` |
| `[sync_memory_bank]` | memory-bank/ | `project_name`, `force` |
| `[sync_prompts]` | docs/prompts/ | `force` |
- **配置节存在即启用**:只写需要同步的配置节
- **AGENTS.md**:始终按区块更新(`<!-- playbook:xxx:start/end -->`),不受配置节控制
- **force**:默认 false,已存在则跳过;设为 true 时覆盖框架文件(会先备份)
- **不删除项目文件**:只更新框架提供的文件,项目新增的文件不会被删除
- **占位符替换**:自动替换 `{{DATE}}``{{PLAYBOOK_SCRIPTS}}`
### 典型场景
```toml
# 场景 1:初次部署(全部)
[sync_rules]
[sync_memory_bank]
project_name = "MyProject"
[sync_prompts]
# 场景 2:框架升级(只更新规则)
[sync_rules]
force = true
# 场景 3:重置项目上下文
[sync_memory_bank]
project_name = "MyProject"
force = true
```
### 部署后的目录结构
```text
project/
├── AGENTS.md # 路由中心(主入口)
├── AGENT_RULES.md # 执行流程
├── AGENT_RULES.local.md # 项目私有规则(可选,手动维护)
├── memory-bank/ # 项目上下文
│ ├── project-brief.md
│ ├── tech-stack.md
│ ├── architecture.md
│ ├── progress.md
│ └── decisions.md
└── docs/prompts/ # 提示词库
├── README.md
├── system/agent-behavior.md
├── coding/
│ ├── clarify.md
│ └── review.md
└── meta/prompt-generator.md
```
## 占位符说明
模板中使用 `{{PLACEHOLDER}}` 格式的占位符,需要替换为实际值:
| 占位符 | 说明 | 自动替换 |
| ------------------------- | ------------ | -------- |
| `{{DATE}}` | 日期 | ✅ 是 |
| `{{PROJECT_NAME}}` | 项目名称 | ✅ 可选 |
| `{{PROJECT_GOAL}}` | 项目目标 | ❌ 手动 |
| `{{PROJECT_DESCRIPTION}}` | 项目描述 | ❌ 手动 |
| `{{MAIN_LANGUAGE}}` | 主语言 | ✅ 可选 |
| `{{PLAYBOOK_SCRIPTS}}` | 脚本路径 | ✅ 是 |
| 其他 `{{...}}` | 项目特定内容 | ❌ 手动 |
`{{PROJECT_NAME}}` 可通过 `sync_memory_bank.project_name` 自动替换;未配置时保持原样。
`{{MAIN_LANGUAGE}}` 可通过 `sync_standards.langs[0]` 自动替换;未配置时默认 `tsl`
`{{PLAYBOOK_SCRIPTS}}` 自动替换为 Playbook 脚本路径(默认 `docs/standards/playbook/scripts`)。
## 模板说明
### memory-bank/
项目上下文文档,用于让 AI 快速理解项目:
| 文件 | 用途 |
| --------------------------- | -------------------- |
| `project-brief.template.md` | 项目定位、边界、约束 |
| `tech-stack.template.md` | 技术栈、工具链、环境 |
| `architecture.template.md` | 架构设计、模块职责 |
| `progress.template.md` | 开发进度追踪 |
| `decisions.template.md` | 架构决策记录(ADR) |
### prompts/
工作流程模板(部署后去掉 `.template` 后缀):
| 文件 | 用途 | 使用场景 |
| ----------------------------------- | -------------- | ---------------------- |
| `system/agent-behavior.template.md` | 工作模式参考 | 切换探索/开发/调试模式 |
| `coding/clarify.template.md` | 需求澄清模板 | 需求不明确时 |
| `coding/review.template.md` | 复盘总结模板 | Plan 完成后复盘 |
| `meta/prompt-generator.template.md` | 元提示词生成器 | 创建新的专用提示词 |
### AGENT_RULES.template.md
执行流程规范,定义 AI 的工作循环和约束。
如需项目私有规则,建议创建 `AGENT_RULES.local.md`,其优先级高于 `AGENT_RULES.md`
且不会被 `playbook.py` 覆盖。
主循环会根据 `memory-bank/progress.md` 的 Plan 状态清单,
自动选择第一个 pending 的 Plan,并要求通过 `scripts/plan_progress.py` 写入状态。
### 示例:不跑测试的计划提示词
当你需要修改代码但暂时不运行测试时,可用以下提示词生成“可执行且不失败”的实施计划:
```text
你是 Codex。先使用 $brainstorming。
目标:修改 <模块/功能>,细节如下:<你的需求>
约束:
- 不跑任何测试(test/ci),但允许做可通过的局部验证(格式化/静态检查/人工 diff)。
- Plan 不能包含任何必然失败或未确认的任务;所有依赖必须在 brainstorming 阶段确认清楚。
- 采用 writing-plans 的固定头部格式,且在 `---` 之后追加 `## Plan Meta`
- Plan Group: <X>
- Parent Plan: <docs/plans/...-design.md>
- Verification Scope: local
- Verification Gate: must-pass
流程:
1) 先完成 brainstorming,并输出设计文档 `docs/plans/YYYY-MM-DD-<topic>-design.md`。
2) 询问我“是否进入 `docs/plans/` 实施计划编写阶段”,确认后使用 writing-plans 生成实现计划。
3) 实现计划内明确标注每步要改的文件与命令;验证步骤只包含可通过的局部验证,不包含测试。
4) 执行计划并更新 `memory-bank/progress.md`。
```
### AGENTS.template.md
路由中心模板,作为项目的主入口。
**设计理念**
- **最小化内容**:只包含导航链接,不包含详细规则
- **结构化导航**:分为核心规则、项目上下文、工作流程三个板块
**playbook 标记**(用于自动更新):
| 标记 | 用途 | 说明 |
| --------------------------------------- | ------------ | -------------------------- |
| `<!-- playbook:agents:start/end -->` | 语言规则链接 | 由 `[sync_standards]` 管理 |
| `<!-- playbook:templates:start/end -->` | 路由链接 | AGENTS.md 始终按区块更新 |
| `<!-- playbook:framework:start/end -->` | 完整框架 | AGENTS.md 始终按区块更新 |
### ci/、cpp/、python/
语言和 CI 配置模板。通过 playbook.py 的 `[vendor]` 复制到快照中:
| 目录 | 内容 | 部署位置 |
| ----------- | ----------------------------------------- | ------------------------ |
| `ci/gitea/` | Gitea Actions 工作流 | 快照 `templates/ci/` |
| `cpp/` | .clang-format, .clangd, CMakeLists.txt 等 | 快照 `templates/cpp/` |
| `python/` | pyproject.toml, .editorconfig 等 | 快照 `templates/python/` |
> 注意:这些模板通过 `[vendor]` 复制到快照的 `templates/` 目录,需手动从快照复制到项目根目录使用。
**使用方式**
```toml
# playbook.toml - 生成包含这些模板的快照
[playbook]
project_root = "/path/to/project"
[vendor]
langs = ["tsl", "cpp", "python"]
```
```bash
python scripts/playbook.py -config playbook.toml
# 然后手动从 docs/standards/playbook/templates/ 复制所需配置到项目根目录
```
## 与 playbook 其他部分的关系
```text
playbook/
├── rulesets/ # 语言级硬规则 → 部署到 .agents/
├── codex/skills/ # 按需加载的技能
├── docs/ # 权威静态文档
├── templates/ # 本目录:项目架构模板 → 部署到 memory-bank/ 等
└── scripts/
├── playbook.py # 统一入口:vendor/sync_rules/sync_memory_bank/sync_prompts/sync_standards/...
└── plan_progress.py # Plan 选择与进度记录
```
## 完整部署流程
```bash
# 1. 准备配置并执行统一入口
python docs/standards/playbook/scripts/playbook.py -config playbook.toml
# 2. 编辑 memory-bank/*.md 填写项目信息
# 3. 替换剩余的 {{PLACEHOLDER}} 占位符
```
---
**最后更新**2026-01-26
+3
View File
@@ -6,6 +6,9 @@
- `gitea/`Gitea ActionsGitHub Actions 语法)
说明:`templates/ci/gitea/.gitea/` 结构用于与目标项目根目录的 `.gitea/`
保持一致,便于直接复制到项目根目录。
## 使用(Gitea Actions
前提:目标项目已经 vendoring Playbook(例如 `docs/standards/playbook/`)。
@@ -1,19 +1,75 @@
name: Standards Check
name: Standards Check
on:
push:
pull_request:
workflow_dispatch: # 允许手动触发
concurrency:
group: standards-${{ github.repository }}-${{ github.ref }}
cancel-in-progress: true
# ==========================================
# 🔧 配置区域 - 标准校验参数
# ==========================================
env:
COMMIT_LINT_REQUIRE_EMOJI: "1"
WORKSPACE_DIR: "/home/workspace"
jobs:
commit-message:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Lint commit message / PR title
env:
COMMIT_LINT_REQUIRE_EMOJI: "1"
run: |
python3 .gitea/ci/commit_message_lint.py
name: 🔍 Commit message lint
runs-on: ubuntu-22.04
steps:
- name: 📥 准备仓库
run: |
echo "========================================"
echo "📥 准备仓库到 WORKSPACE_DIR"
echo "========================================"
REPO_NAME="${{ github.event.repository.name }}"
REPO_DIR="${{ env.WORKSPACE_DIR }}/$REPO_NAME"
TOKEN="${{ secrets.WORKFLOW }}"
if [ -n "$TOKEN" ]; then
REPO_URL="https://oauth2:${TOKEN}@${GITHUB_SERVER_URL#https://}/${{ github.repository }}.git"
else
REPO_URL="${GITHUB_SERVER_URL}/${{ github.repository }}.git"
fi
if [ -d "$REPO_DIR" ]; then
if [ -d "$REPO_DIR/.git" ]; then
cd "$REPO_DIR"
git clean -fdx
git reset --hard
git fetch --all --tags --force --prune --prune-tags
else
rm -rf "$REPO_DIR"
fi
fi
if [ ! -d "$REPO_DIR/.git" ]; then
mkdir -p "${{ env.WORKSPACE_DIR }}"
git clone "$REPO_URL" "$REPO_DIR"
cd "$REPO_DIR"
fi
TARGET_SHA="${{ github.sha }}"
TARGET_REF="${{ github.ref }}"
if git cat-file -e "$TARGET_SHA^{commit}" 2>/dev/null; then
git checkout -f "$TARGET_SHA"
else
if [ -n "$TARGET_REF" ]; then
git fetch origin "$TARGET_REF"
git checkout -f FETCH_HEAD
else
git checkout -f "${{ github.ref_name }}"
fi
fi
git config --global --add safe.directory "$REPO_DIR"
echo "REPO_DIR=$REPO_DIR" >> $GITHUB_ENV
- name: 🧪 Lint commit message / PR title
run: |
cd "$REPO_DIR"
python3 .gitea/ci/commit_message_lint.py
@@ -0,0 +1,44 @@
# 架构设计
<!--
填写指南:
- 【必填】:项目启动前必须填写
- 【可选】:按需填写,可随项目发展补充
- 小项目可只填核心模块,架构图可后补
-->
## 整体架构
<!-- 【可选】项目成熟后补充 -->
```txt
{{ARCHITECTURE_DIAGRAM}}
```
## 核心模块
<!-- 【必填】至少列出主要模块 -->
### {{MODULE_1}}
**职责**{{MODULE_1_DESC}}
## 关键约束
<!-- 【可选】 -->
- {{CONSTRAINT_1}}
## 扩展点
<!-- 【可选】大项目建议填写 -->
### {{EXTENSION_1}}
**步骤**
1. {{STEP_1}}
---
**最后更新**{{DATE}}
@@ -0,0 +1,33 @@
# 架构决策记录
<!--
填写指南:
- 本文件记录重要架构决策,使用 ADR 格式
- 初始可为空,遇到重要决策时由 AI 或人工添加
- 每个决策使用下方模板
-->
## ADR 模板
```markdown
## ADR-XXX: 决策标题
**日期**: YYYY-MM-DD
**状态**: 已采纳 / 已废弃 / 待讨论
### 决策
简要描述决策内容
### 理由
为什么做出这个决策
### 影响
对项目的影响
```
---
**最后更新**{{DATE}}
@@ -0,0 +1,4 @@
# Plan 状态
<!-- plan-status:start -->
<!-- plan-status:end -->
@@ -0,0 +1,48 @@
# {{PROJECT_NAME}} 项目简介
<!--
填写指南:
- 【必填】:项目启动前必须填写
- 【可选】:按需填写,可随项目发展补充
- 未填写的占位符保持原样或删除整行
-->
## 项目定位
<!-- 【必填】 -->
**核心目标**{{PROJECT_GOAL}}
**一句话描述**{{PROJECT_DESCRIPTION}}
## 项目边界
<!-- 【必填】至少填写"做什么" -->
### 做什么
- {{DO_1}}
### 不做什么
<!-- 【可选】 -->
- {{DONT_1}}
### 约束条件
<!-- 【可选】 -->
- {{CONSTRAINT_1}}
## 核心概念
<!-- 【可选】项目特有的术语或概念 -->
## 参考资料
<!-- 【可选】 -->
---
**最后更新**{{DATE}}
@@ -0,0 +1,64 @@
# 技术栈与工具链
<!--
填写指南:
- 【必填】:项目启动前必须填写
- 【可选】:按需填写,可随项目发展补充
- 未填写的占位符保持原样或删除整行
-->
## 核心技术
<!-- 【必填】 -->
**主语言**{{MAIN_LANGUAGE}}
**文件类型**{{FILE_TYPES}}
## 项目结构
<!-- 【必填】 -->
```text
{{PROJECT_NAME}}/
├── {{DIR_1}}/ # {{DIR_1_DESC}}
└── memory-bank/ # 项目上下文
```
## 开发环境
<!-- 【必填】至少填写运行测试命令 -->
**必需工具**
- {{TOOL_1}}
**运行测试**
```bash
{{TEST_CMD}}
```
## 依赖管理
<!-- 【可选】 -->
**外部依赖**
- {{EXTERNAL_DEP_1}}
## 测试策略
<!-- 【可选】大项目建议填写 -->
**测试类型**
- {{TEST_TYPE_1}}
**验证标准**
- {{PASS_CONDITION_1}}
---
**最后更新**{{DATE}}
+48
View File
@@ -0,0 +1,48 @@
# 提示词库
本目录包含 AI 代理的工作流程参考模板。
## 目录结构
```text
prompts/
├── README.md # 本文件
├── system/
│ └── agent-behavior.md # 工作模式参考
├── coding/
│ ├── clarify.md # 需求澄清模板
│ └── review.md # 复盘总结模板
└── meta/
└── prompt-generator.md # 元提示词生成器
```
## 使用方式
| 模板 | 触发场景 |
| ----------------------- | ------------------------------ |
| **agent-behavior.md** | 切换工作模式(探索/开发/调试) |
| **clarify.md** | 需求不明确时澄清 |
| **review.md** | Plan 完成后复盘总结 |
| **prompt-generator.md** | 创建新的专用提示词 |
## 工作流程
```
需求不清 → clarify.md
头脑风暴 → $brainstorming skill
生成计划 → $writing-plans skill → docs/plans/*.md
执行计划 → AGENT_RULES 主循环(留痕)
完成复盘 → review.md
沉淀提示词 → prompt-generator.md(可选)
```
> **核心规则在 `AGENT_RULES.md`**,第三方 skills 负责规划,主循环负责执行和留痕。
---
**最后更新**{{DATE}}
@@ -0,0 +1,52 @@
# 需求澄清模板
<!--
按需使用:当需求不明确或存在歧义时参考本模板。
Vibe-coding 场景下可跳过,直接开始实现。
-->
## 何时使用
- 需求描述不明确
- 存在多种理解方式
- 缺少关键信息
---
## 澄清步骤
### 1. 复述需求
```text
我理解你的需求是:[用自己的话复述]
```
### 2. 识别歧义
- 歧义 1[描述不明确的地方]
- 歧义 2[可能有多种理解的地方]
### 3. 提出问题
> 只问阻塞问题,最多 1–2 个;优先给出选项让用户选择。
- 这个功能是否包括 [场景 A]
- 当 [条件 X] 时,应该 [行为 Y] 还是 [行为 Z]?
### 4. 提供选项
**选项 A**[方案描述]
- 优点:...
- 缺点:...
**选项 B**[方案描述]
- 优点:...
- 缺点:...
**推荐**[推荐哪个,为什么]
---
**最后更新**{{DATE}}
@@ -0,0 +1,66 @@
# 复盘模板
<!--
用途:Plan 或阶段完成后的回顾总结
触发:主循环汇总报告时、阶段性工作完成时
-->
## 何时使用
- 一批 Plan 执行完毕后
- 阶段性工作告一段落
- 遇到重大阻塞需要总结
---
## 复盘格式
```markdown
# 复盘: [日期/阶段名称]
## 完成情况
### 已完成
- [x] Plan 1: 简述
- [x] Plan 2: 简述
### 阻塞
- [ ] Plan 3: 阻塞原因
### 跳过
- [ ] Plan 4: 跳过原因
## 关键发现
### 做得好的
- 发现1
- 发现2
### 待改进
- 问题1 → 建议改进方式
- 问题2 → 建议改进方式
## 决策记录
| 决策 | 理由 | 影响 |
|------|------|------|
| 决策1 | 为什么 | 影响范围 |
## 下一步
- [ ] 待处理事项1
- [ ] 待处理事项2
```
---
## 复盘原则
- **客观记录**:如实记录完成/阻塞/跳过
- **提取经验**:总结做得好的和待改进的
- **决策留痕**:重要决策记录到 decisions.md
- **明确下一步**:列出后续待处理事项
---
**最后更新**{{DATE}}
@@ -0,0 +1,126 @@
# 提示词生成器(元提示词)
<!--
用途:根据场景自动生成专用提示词
原理:α-prompts(生成)+ Ω-prompts(优化)递归循环
-->
## 何时使用
- 需要为新场景创建专用提示词
- 现有提示词不满足特定需求
- 需要批量生成同类提示词
---
## 生成流程(α循环)
### 1. 分析场景
```markdown
**场景名称**[名称]
**目标用户**[AI/人类/两者]
**触发条件**[何时使用这个提示词]
**预期输出**[使用后应该产出什么]
```
### 2. 提取约束
```markdown
**必须做**
- 约束1
- 约束2
**禁止做**
- 禁止1
- 禁止2
**边界条件**
- 边界1
- 边界2
```
### 3. 生成草稿
```markdown
# [提示词标题]
<!--
用途:[一句话描述]
触发:[触发条件]
-->
## 何时使用
- 场景1
- 场景2
## [核心内容]
[根据场景填充]
## [约束/原则]
- 约束1
- 约束2
---
**最后更新**{{DATE}}
```
---
## 优化流程(Ω循环)
### 1. 评估维度
| 维度 | 问题 |
| ---------- | ---------------------- |
| **清晰度** | 指令是否明确无歧义? |
| **完整度** | 是否覆盖所有必要场景? |
| **简洁度** | 是否有冗余内容可删除? |
| **可操作** | AI 能否直接执行? |
### 2. 迭代优化
```
草稿 → 评估 → 修改 → 再评估 → ... → 定稿
```
### 3. 验证测试
- 用实际场景测试提示词效果
- 收集反馈,持续迭代
---
## 提示词模板库
### 标准结构
```markdown
# [标题]
<!--
用途:
触发:
-->
## 何时使用
## [核心内容]
## [约束/原则]
---
**最后更新**{{DATE}}
```
### 命名规范
- 文件名:`[动词]-[对象].template.md`
- 示例:`clarify-requirement.template.md`
---
**最后更新**{{DATE}}
@@ -0,0 +1,62 @@
# 工作模式参考
<!--
本文件定义三种工作模式,供 AI 根据任务类型选择。
核心规则(安全红线、验证清单等)见 AGENT_RULES.md。
-->
## 模式 1: 探索模式(Explore
**目的**:理解代码库、分析问题、收集信息
**行为**
- 使用搜索工具探索代码
- 输出分析报告和发现
- 不修改任何代码
**适用场景**
- 理解某个模块的实现
- 分析 bug 的根本原因
- 评估功能实现的可行性
---
## 模式 2: 开发模式(Develop
**目的**:实现功能、修复 bug、重构代码
**行为**
- 先读取相关文件,理解现有逻辑
- 进行精确修改
- 修改后运行测试验证
**适用场景**
- 实现新功能
- 修复已知 bug
- 优化性能
---
## 模式 3: 调试模式(Debug
**目的**:诊断问题、对比差异、验证行为
**行为**
- 收集相关日志和输出
- 分析差异原因
- 修复后重新验证
**适用场景**
- 测试失败
- 输出不符合预期
- 性能问题诊断
---
**最后更新**{{DATE}}