# compound-docs > 使用 YAML frontmatter 将已解决的问题捕获为分类文档,以便快速查找 - Author: ZoneCNH - Repository: OpsFlux/compound-engineering-plugin - Version: 20260105065800 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-07 - Source: https://github.com/OpsFlux/compound-engineering-plugin - Web: https://mule.run/skillshub/@@OpsFlux/compound-engineering-plugin~compound-docs:20260105065800 --- --- name: compound-docs description: 使用 YAML frontmatter 将已解决的问题捕获为分类文档,以便快速查找 allowed-tools: - Read # Parse conversation context - Write # Create resolution docs - Bash # Create directories - Grep # Search existing docs preconditions: - Problem has been solved (not in-progress) - Solution has been verified working --- # compound-docs 技能 **目的:** 自动记录已解决的问题,以通过基于类别的组织(枚举验证的问题类型)构建可搜索的机构知识。 ## 概述 该技能在确认后立即捕获问题解决方案,创建结构化文档,作为未来会话的可搜索知识库。 **组织:** 单文件架构 - 每个问题都记录为其症状类别目录中的一个 markdown 文件(例如,`docs/solutions/performance-issues/n-plus-one-briefs.md`)。文件使用 YAML frontmatter 来实现元数据和可搜索性。 --- ## 7 步流程 ### 第 1 步:检测确认 **在短语后自动调用:** - “有效” - “已经解决了” - “现在工作” -“问题已解决” - “就是这样” **或手册:** `/doc-fix`命令 **仅重要问题:** - 需要多次调查尝试 - 棘手的调试需要时间 - 不明显的解决方案 - 未来的会议将会受益 **跳过以下文档:** - 简单的错别字 - 明显的语法错误 - 琐碎的修复立即得到纠正 ### 第 2 步:收集背景信息 对话历史记录摘录: **所需信息:** - **模块名称**:哪个 CORA 模块出现问题 - **症状**:可观察到的错误/行为(确切的错误消息) - **调查尝试**:什么不起作用以及为什么不起作用 - **根本原因**:实际问题的技术解释 - **解决方案**:修复了什么(代码/配置更改) - **预防**:将来如何避免 **环境详情:** - 导轨版本 - 阶段(0-6 或实施后) - 操作系统版本 - 文件/行参考 **阻止要求:** 如果缺少关键上下文(模块名称、确切错误、阶段或解决步骤),请在继续步骤 3 之前询问用户并等待响应: ``` I need a few details to document this properly: 1. Which module had this issue? [ModuleName] 2. What was the exact error message or symptom? 3. What stage were you in? (0-6 or post-implementation) [Continue after user provides details] ``` ### 步骤 3:检查现有文档 搜索 docs/solutions/ 查找类似问题: ```bash # Search by error message keywords grep -r "exact error phrase" docs/solutions/ # Search by symptom category ls docs/solutions/[category]/ ``` **如果发现类似问题:** 然后提出决策选项: ``` Found similar issue: docs/solutions/[path] What's next? 1. Create new doc with cross-reference (recommended) 2. Update existing doc (only if same root cause) 3. Other Choose (1-3): _ ``` 等待用户响应,然后执行所选操作。 **ELSE**(未发现类似问题): 直接进入步骤 4(无需用户交互)。 ### 步骤 4:生成文件名 格式:`[sanitized-symptom]-[module]-[YYYYMMDD].md` **消毒规则:** - 小写 - 用连字符替换空格 - 删除除连字符之外的特殊字符 - 截断至合理长度(< 80 chars) **Examples:** - `missing-include-BriefSystem-20251110.md` - `parameter-not-saving-state-EmailProcessing-20251110.md` - `webview-crash-on-resize-Assistant-20251110.md` ### 步骤 5:验证 YAML 架构 **关键:** 所有文档都需要经过验证的 YAML frontmatter 和枚举验证。 **根据架构进行验证:** 加载 `schema.yaml` 并根据 [yaml-schema.md](./references/yaml-schema.md) 中定义的枚举值对问题进行分类。确保所有必填字段都存在并且与允许的值完全匹配。 **如果验证失败则阻止:** ``` ❌ YAML validation failed Errors: - problem_type: must be one of schema enums, got "compilation_error" - severity: must be one of [critical, moderate, minor], got "high" - symptoms: must be array with 1-5 items, got string Please provide corrected values. ``` **控制执行:** 在 YAML frontmatter 通过 `schema.yaml` 中定义的所有验证规则之前,请勿继续执行步骤 6(创建文档)。 ### 第 6 步:创建文档 **根据 Problem_type 确定类别:** 使用 [yaml-schema.md](./references/yaml-schema.md)(第 49-61 行)中定义的类别映射。 **创建文档文件:** ```bash PROBLEM_TYPE="[from validated YAML]" CATEGORY="[mapped from problem_type]" FILENAME="[generated-filename].md" DOC_PATH="docs/solutions/${CATEGORY}/${FILENAME}" # Create directory if needed mkdir -p "docs/solutions/${CATEGORY}" # Write documentation using template from assets/resolution-template.md # (Content populated with Step 2 context and validated YAML frontmatter) ``` **结果:** - 类别目录中的单个文件 - 枚举验证确保分类一致 **创建文档:** 使用步骤 2 中收集的上下文和步骤 5 中验证的 YAML frontmatter 填充 `assets/resolution-template.md` 中的结构。 ### 步骤 7:交叉引用和关键模式检测 如果在步骤3中发现类似问题: **更新现有文档:** ```bash # Add Related Issues link to similar doc echo "- See also: [$FILENAME]($REAL_FILE)" >> [similar-doc.md] ``` **更新新文档:** 已包含步骤 6 中的交叉引用。 **更新模式(如果适用):** 如果这代表了一种常见模式(3 个以上类似问题): ```bash # Add to docs/solutions/patterns/common-solutions.md cat >> docs/solutions/patterns/common-solutions.md << 'EOF' ## [Pattern Name] **Common symptom:** [Description] **Root cause:** [Technical explanation] **Solution pattern:** [General approach] **Examples:** - [Link to doc 1] - [Link to doc 2] - [Link to doc 3] EOF ``` **关键模式检测(可选主动建议):** 如果此问题有自动指示器表明该问题可能很严重: - 严重性:YAML 中的 `critical` - 影响多个模块或基础阶段(第 2 或第 3 阶段) - 不明显的解决方案 然后在决策菜单(步骤 8)中添加注释: ``` 💡 This might be worth adding to Required Reading (Option 2) ``` 但**永远不要自动促销**。用户通过决策菜单做出决定(选项 2)。 **添加关键模式的模板:** 当用户选择选项 2(添加到必读内容)时,使用 `assets/critical-pattern-template.md` 中的模板来构建模式条目。根据 `docs/solutions/patterns/cora-critical-patterns.md` 中的现有模式对其进行顺序编号。 --- ## 捕获后的决策菜单 成功记录后,提供选项并等待用户响应: ``` ✓ Solution documented File created: - docs/solutions/[category]/[filename].md What's next? 1. Continue workflow (recommended) 2. Add to Required Reading - Promote to critical patterns (cora-critical-patterns.md) 3. Link related issues - Connect to similar problems 4. Add to existing skill - Add to a learning skill (e.g., hotwire-native) 5. Create new skill - Extract into new learning skill 6. View documentation - See what was captured 7. Other ``` **处理回复:** **选项 1:继续工作流程** - 返回呼叫技巧/工作流程 - 文档已完成 **选项 2:添加到必读** ⭐ 关键模式的主要路径 用户在以下情况下选择此选项: - 系统在不同模块中多次犯此错误 - 解决方案并不明显,但每次都必须遵循 - 基础要求(Rails、Rails API、线程等) 行动: 1. 从文档中提取模式 2. 使用代码示例将格式设置为“❌错误”与“✅正确” 3. 添加至`docs/solutions/patterns/cora-critical-patterns.md` 4. 添加交叉引用回本文档 5. 确认:“✓ 添加到必读。所有子代理将在代码生成之前看到此模式。” **选项 3:链接相关问题** - 提示:“要链接哪个文档?(提供文件名或描述)” - 在 docs/solutions/ 中搜索文档 - 添加对两个文档的交叉引用 - 确认:“✓ 添加了交叉引用” **选项 4:添加到现有技能** 当记录的解决方案与现有学习技能相关时,用户选择此选项: 行动: 1. 提示:“哪项技能?(hotwire-native等)” 2. 确定要更新哪个参考文件(resources.md、patterns.md 或 Examples.md) 3. 在适当的部分添加链接和简要说明 4. 确认:“✓ 添加到[文件]中的[技能名称]技能” 示例:对于 Hotwire Native Tailwind 变体解决方案: - 添加到“CORA 特定资源”下的 `hotwire-native/references/resources.md` - 添加到 `hotwire-native/references/examples.md`,并包含解决方案文档的链接 **选项 5:创建新技能** 当解决方案代表新学习领域的开始时,用户选择此选项: 行动: 1. 提示:“新技能应该被称为什么?(例如,条带计费、电子邮件处理)” 2. 运行`python3 .claude/skills/skill-creator/scripts/init_skill.py [skill-name]` 3. 使用此解决方案作为第一个示例创建初始参考文件 4. 确认:“✓ 使用此解决方案作为第一个示例创建了新的 [技能名称] 技能” **选项 6:查看文档** - 显示创建的文档 - 再次呈现决策菜单 **选项 7:其他** - 询问他们想做什么 --- ## 集成点 **调用者:** - /compound命令(主接口) - 解决方案确认后在对话中手动调用 - 可以通过检测“有效”、“已修复”等确认短语来触发。 **调用:** - 无(终端技能 - 不委托给其他技能) **交接期望:** 文档所需的所有上下文应在调用之前出现在对话历史记录中。 --- ## 成功标准 当满足以下所有条件时,文档记录成功: - ✅ YAML frontmatter 已验证(所有必填字段,正确的格式) - ✅ 在 docs/solutions/[category]/[filename].md 中创建的文件 - ✅ 枚举值与 schema.yaml 完全匹配 - ✅ 解决方案部分包含代码示例 - ✅ 如果发现相关问题,则添加交叉引用 - ✅ 向用户呈现决策菜单并确认操作 --- ## 错误处理 **缺少上下文:** - 询问用户缺少的详细信息 - 在提供关键信息之前不要继续 **YAML 验证失败:** - 显示具体错误 - 使用更正值进行重试 - 封锁直到有效 **类似问题歧义:** - 呈现多场比赛 - 让用户选择:新文档、更新现有文档或链接为重复文档 **模块不在 CORA-MODULES.md 中:** - 警告但不要阻止 - 继续处理文档 - 建议:“将 [Module] 添加到 CORA-MODULES.md(如果不存在)” --- ## 执行指南 **必须做:** - 验证 YAML frontmatter(如果按照第 5 步验证门无效则阻止) - 从对话中提取准确的错误消息 - 在解决方案部分包含代码示例 - 在写入文件之前创建目录(`mkdir -p`) - 如果缺少关键上下文,请询问用户并等待 **绝对不能做:** - 跳过 YAML 验证(验证门被阻止) - 使用模糊的描述(不可搜索) - 省略代码示例或交叉引用 --- ## 质量指南 **好的文档具有:** - ✅ 准确的错误消息(从输出复制粘贴) - ✅ 具体文件:行参考 - ✅ 可观察到的症状(您所看到的,而不是解释) - 记录失败的尝试(有助于避免错误的路径) - ✅ 技术解释(不仅仅是“什么”,还有“为什么”) - ✅ 代码示例(之前/之后,如果适用) - ✅预防指导(如何及早发现) - ✅ 交叉引用(相关问题) **避免:** - ❌ 模糊的描述(“出了点问题”) - ❌ 缺少技术细节(“修复代码”) - ❌没有上下文(哪个版本?哪个文件?) - ❌ 只是代码转储(解释它为什么有效) - ❌ 无预防指导 - ❌ 无交叉引用 --- ## 示例场景 **用户:**“成功了!N+1 查询已修复。” **技能激活:** 1. **检测确认:**“有效!”触发自动调用 2. **收集上下文:** - 模块:简要系统 - 症状:短暂生成需要 >5 秒,加载电子邮件线程时进行 N+1 查询 - 失败的尝试:添加分页(没有帮助),检查后台作业性能 - 解决方案:在 Brief 模型上添加了 `includes(:emails)` 的急切加载 - 根本原因:缺少急切加载导致每个电子邮件线程单独进行数据库查询 3. **检查现有:** 未发现类似问题 4. **生成文件名:** `n-plus-one-brief-generation-BriefSystem-20251110.md` 5. **验证 YAML:** ```yaml module: Brief System date: 2025-11-10 problem_type: performance_issue component: rails_model symptoms: - "N+1 query when loading email threads" - "Brief generation taking >5 seconds" root_cause: missing_include severity: high tags: [n-plus-one, eager-loading, performance] ``` ✅ 有效 6. **创建文档:** - `docs/solutions/performance-issues/n-plus-one-brief-generation-BriefSystem-20251110.md` 7. **交叉引用:** 不需要(没有类似问题) **输出:** ``` ✓ Solution documented File created: - docs/solutions/performance-issues/n-plus-one-brief-generation-BriefSystem-20251110.md What's next? 1. Continue workflow (recommended) 2. Add to Required Reading - Promote to critical patterns (cora-critical-patterns.md) 3. Link related issues - Connect to similar problems 4. Add to existing skill - Add to a learning skill (e.g., hotwire-native) 5. Create new skill - Extract into new learning skill 6. View documentation - See what was captured 7. Other ``` --- ## 未来的增强 **不属于第 7 阶段范围,但有潜力:** - 按日期范围搜索 - 按严重性过滤 - 基于标签的搜索界面 - 指标(最常见问题、解决时间) - 导出为可共享格式(社区知识共享) - 导入社区解决方案