docs: salvage zh-CN core skill translations

This commit is contained in:
Affaan Mustafa
2026-05-11 14:09:27 -04:00
committed by Affaan Mustafa
parent 6556f20af7
commit 3242ed461f
15 changed files with 2945 additions and 0 deletions

View File

@@ -0,0 +1,142 @@
---
name: automation-audit-ops
description: 面向ECC的以证据为先的自动化清单与重叠审计工作流。当用户希望在修复任何内容之前了解哪些作业、钩子、连接器、MCP服务器或包装器是活跃的、损坏的、冗余的或缺失时使用。
origin: ECC
---
# 自动化审计运维
当用户询问哪些自动化正在运行、哪些任务出现故障、哪里存在重叠,或者哪些工具和连接器当前正在实际发挥作用时,请使用此技能。
这是一项以审计为先的操作技能。其任务是在重写任何内容之前,生成一份有证据支持的清单以及一套保留/合并/删除/下一步修复的建议集。
## 技能栈
在相关时,将这些 ECC 原生技能引入工作流程:
* `workspace-surface-audit` 用于连接器、MCP、钩子和应用清单
* `knowledge-ops` 当审计需要将实时仓库的真实情况与持久上下文进行核对时
* `github-ops` 当答案依赖于 CI、计划工作流、议题或 PR 自动化时
* `ecc-tools-cost-audit` 当真正的问题是兄弟应用仓库中的 webhook 扇出、队列任务或计费消耗时
* `research-ops` 当需要将本地清单与当前平台支持或公开文档进行比较时
* `verification-loop` 用于证明修复后的状态,而不是依赖假设的恢复
## 使用时机
* 用户询问"我有哪些自动化"、"什么在运行"、"什么出故障了"或"什么重叠了"
* 任务涉及 cron 任务、GitHub Actions、本地钩子、MCP 服务器、连接器、包装器或应用集成
* 用户想知道从其他代理系统移植了什么,以及哪些还需要在 ECC 内部重建
* 工作区积累了多种执行同一任务的方式,用户希望有一条规范的路径
## 防护栏
* 除非用户明确要求修复,否则以只读方式开始
* 区分:
* 已配置
* 已验证身份
* 最近已验证
* 过时或损坏
* 完全缺失
* 不要仅仅因为某个技能或配置引用了某个工具,就声称该工具正在运行
* 在证据表存在之前,不要合并或删除重叠的表面
## 工作流程
### 1. 盘点真实表面
在理论化之前,先读取当前的实时表面:
* 仓库钩子和本地钩子脚本
* GitHub Actions 和计划工作流
* MCP 配置和已启用的服务器
* 基于连接器或应用的集成
* 包装器脚本和特定仓库的自动化入口点
按表面分组:
* 本地运行时
* 仓库 CI / 自动化
* 连接的外部系统
* 消息传递 / 通知
* 计费 / 客户运营
* 研究 / 监控
### 2. 按实时状态对每个项目进行分类
对于每个发现的自动化,标记:
* 已配置
* 已验证身份
* 最近已验证
* 过时或损坏
* 缺失
然后对问题类型进行分类:
* 活动故障
* 身份验证中断
* 状态过时
* 重叠或冗余
* 功能缺失
### 3. 追溯证据路径
为每个重要声明提供具体来源:
* 文件路径
* 工作流运行
* 钩子日志
* 配置条目
* 最近的命令输出
* 确切的故障特征
如果当前状态不明确,请直接说明,而不是假装审计已完成。
### 4. 以保留 / 合并 / 删除 / 下一步修复结束
对于每个重叠或可疑的表面,返回一个决策:
* 保留
* 合并
* 删除
* 下一步修复
其价值在于将杂乱的自动化整合到一条规范的 ECC 路径中,而不是保留每一条历史路径。
## 输出格式
```text
当前表面
- 自动化
- 来源
- 实时状态
- 证据
发现
- 活跃故障
- 重叠
- 过时状态
- 缺失能力
建议
- 保留
- 合并
- 删除
- 下次修复
下一步ECC行动
- 需加强的具体技能/钩子/工作流/应用通道
```
## 常见陷阱
* 当可以读取实时清单时,不要凭记忆回答
* 不要将"配置中存在"视为"正在工作"
* 在指出故障的高信号路径之前,不要修复低价值的冗余
* 如果用户首先要求的是清单,不要将任务扩大为仓库重写
## 验证
* 重要声明需引用实时证据路径
* 每个发现的自动化都需标有清晰的实时状态类别
* 最终建议需区分保留 / 合并 / 删除 / 下一步修复

View File

@@ -0,0 +1,257 @@
---
name: click-path-audit
description: "追踪每个面向用户的按钮/触点的完整状态变化序列以发现功能单独工作但相互抵消、产生错误最终状态或使UI处于不一致状态的错误。适用于系统调试未发现错误但用户报告按钮失效或在任何涉及共享状态存储的重大重构之后。"
origin: community
---
# /click-path-audit — 行为流审计
发现静态代码审查遗漏的缺陷:状态交互副作用、顺序调用间的竞态条件,以及相互静默撤销的处理程序。
## 解决的问题
传统调试检查:
* 函数是否存在?(缺少连接)
* 是否崩溃?(运行时错误)
* 是否返回正确类型?(数据流)
但未检查:
* **最终 UI 状态是否与按钮标签承诺一致?**
* **函数 B 是否静默撤销了函数 A 刚刚执行的操作?**
* **共享状态Zustand/Redux/context是否存在抵消预期操作的副作用**
真实案例:一个"新邮件"按钮依次调用了 `setComposeMode(true)``selectThread(null)`。两者单独工作正常。但 `selectThread` 有一个副作用重置了 `composeMode: false`。按钮毫无反应。系统化调试发现了 54 个缺陷——这个被遗漏了。
***
## 工作原理
针对目标区域内的每个交互触点:
```
1. 识别处理函数onClick、onSubmit、onChange 等)
2. 按顺序追踪处理函数中的每个函数调用
3. 对于每个函数调用:
a. 它读取了哪些状态?
b. 它写入了哪些状态?
c. 它是否对共享状态产生了副作用?
d. 它是否作为副作用重置/清除了任何状态?
4. 检查:后续调用是否会撤销前面调用的状态变更?
5. 检查:最终状态是否符合用户对按钮标签的预期?
6. 检查:是否存在竞态条件(异步调用以错误顺序解析)?
```
***
## 执行步骤
### 步骤 1映射状态存储
在审计任何触点之前,构建每个状态存储操作的副作用映射:
```
对于作用域内的每个 Zustand 存储 / React 上下文:
对于每个操作/设置器:
- 它设置了哪些字段?
- 它是否作为副作用重置了其他字段?
- 文档actionName → {sets: [...], resets: [...]}
```
这是关键参考。"新邮件"缺陷在不知道 `selectThread` 重置了 `composeMode` 的情况下是不可见的。
**输出格式:**
```
STORE: emailStore
setComposeMode(bool) → 设置: {composeMode}
selectThread(thread|null) → 设置: {selectedThread, selectedThreadId, messages, drafts, selectedDraft, summary} 重置: {composeMode: false, composeData: null, redraftOpen: false}
setDraftGenerating(bool) → 设置: {draftGenerating}
...
危险的重置(清除不属于自身状态的操作):
selectThread → 重置 composeMode由 setComposeMode 拥有)
reset → 重置所有内容
```
### 步骤 2审计每个触点
针对目标区域内的每个按钮/开关/表单提交:
```
TOUCHPOINT: [按钮标签] 在 [组件:行]
HANDLER: onClick → {
调用 1: functionA() → 设置 {X: true}
调用 2: functionB() → 设置 {Y: null} 重置 {X: false} ← 冲突
}
EXPECTED: 用户看到 [按钮标签所承诺的描述]
ACTUAL: X 为 false因为 functionB 重置了它
VERDICT: BUG — [描述]
```
**检查以下每种缺陷模式:**
#### 模式 1顺序撤销
```
handler() {
setState_A(true) // 设置 X = true
setState_B(null) // 副作用:重置 X = false
}
// 结果X 为 false。第一次调用毫无意义。
```
#### 模式 2异步竞态
```
handler() {
fetchA().then(() => setState({ loading: false }))
fetchB().then(() => setState({ loading: true }))
}
// 结果:最终的 loading 状态取决于哪个先完成
```
#### 模式 3过期闭包
```
const [count, setCount] = useState(0)
const handler = useCallback(() => {
setCount(count + 1) // 捕获了过时的 count
setCount(count + 1) // 同样的过时 count — 只增加 1而不是 2
}, [count])
```
#### 模式 4缺失状态转换
```
// 按钮显示"保存",但处理程序仅验证,从未实际保存
// 按钮显示"删除"但处理程序设置了一个标志而未调用API
// 按钮显示"发送"但API端点已被移除/损坏
```
#### 模式 5条件死路径
```
handler() {
if (someState) { // 此时 someState 始终为 false
doTheActualThing() // 永远不会执行到
}
}
```
#### 模式 6useEffect 干扰
```
// Button 设置 stateX = true
// useEffect 监听 stateX 并将其重置为 false
// 用户看不到任何变化
```
### 步骤 3报告
针对发现的每个缺陷:
```
CLICK-PATH-NNN: [严重性: 严重/高/中/低]
触点: [按钮标签] 位于 [文件:行号]
模式: [顺序撤销 / 异步竞态 / 过期闭包 / 缺失过渡 / 死路径 / useEffect 干扰]
处理函数: [函数名或内联]
追踪:
1. [调用] → 设置 {字段: 值}
2. [调用] → 重置 {字段: 值} ← 冲突
预期: [用户期望的结果]
实际: [实际发生的结果]
修复: [具体修复方案]
```
***
## 范围控制
此审计成本较高。请适当限定范围:
* **全应用审计:** 在发布或重大重构后使用。按页面启动并行代理。
* **单页面审计:** 在构建新页面或用户报告按钮失效后使用。
* **存储聚焦审计:** 在修改 Zustand 存储后使用——审计所有使用已更改操作的消费者。
### 全应用推荐的代理拆分:
```
Agent 1映射所有状态存储步骤 1——这是所有其他代理的共享上下文
Agent 2仪表盘任务、笔记、日志、想法
Agent 3聊天DanteChatColumn、JustChatPage
Agent 4邮件ThreadList、DraftArea、EmailsPage
Agent 5项目ProjectsPage、ProjectOverviewTab、NewProjectWizard
Agent 6CRM所有子标签页
Agent 7个人资料、设置、保险库、通知
Agent 8管理套件所有页面
```
代理 1 必须首先完成。其输出是所有其他代理的输入。
***
## 何时使用
* 系统化调试发现"无缺陷"但用户报告 UI 失效后
* 修改任何 Zustand 存储操作后(检查所有调用者)
* 任何涉及共享状态的重构后
* 发布前,针对关键用户流程
* 当按钮"无反应"时——这是解决该问题的工具
## 何时不使用
* 针对 API 级别缺陷(错误的响应结构、缺失端点)——使用系统化调试
* 针对样式/布局问题——视觉检查
* 针对性能问题——性能分析工具
***
## 与其他技能的集成
*`/superpowers:systematic-debugging`(发现其他 54 种缺陷类型)之后运行
*`/superpowers:verification-before-completion`(验证修复是否有效)之前运行
* 反馈至 `/superpowers:test-driven-development`——此处发现的每个缺陷都应添加测试
***
## 示例:启发此技能的缺陷
**ThreadList.tsx "新邮件"按钮:**
```
onClick={() => {
useEmailStore.getState().setComposeMode(true) // ✓ 设置 composeMode = true
useEmailStore.getState().selectThread(null) // ✗ 重置 composeMode = false
}}
```
存储定义:
```
selectThread: (thread) => set({
selectedThread: thread,
selectedThreadId: thread?.id ?? null,
messages: [],
drafts: [],
selectedDraft: null,
summary: null,
composeMode: false, // ← 这个静默重置导致按钮失效
composeData: null,
redraftOpen: false,
})
```
**系统化调试遗漏了它**,因为:
* 按钮有 onClick 处理程序(未失效)
* 两个函数都存在(无缺失连接)
* 两个函数均未崩溃(无运行时错误)
* 数据类型正确(无类型不匹配)
**点击路径审计捕获了它**,因为:
* 步骤 1 映射出 `selectThread` 重置了 `composeMode`
* 步骤 2 追踪处理程序:调用 1 设置为 true调用 2 重置为 false
* 判定:顺序撤销——最终状态与按钮意图矛盾

View File

@@ -0,0 +1,244 @@
---
name: code-tour
description: 创建 CodeTour `.tour` 文件——针对特定角色的、带有真实文件和行锚点的逐步演练。用于入职引导、架构演练、PR 演练、RCA 演练以及结构化的“解释其工作原理”请求。
origin: ECC
---
# 代码导览
创建 **CodeTour** `.tour` 文件,用于代码库导览,可直接打开真实文件并定位到指定行范围。导览文件存放在 `.tours/` 目录中,专为 CodeTour 格式设计,而非临时性的 Markdown 笔记。
一个好的导览应针对特定读者讲述一个故事:
* 他们正在查看什么
* 为什么重要
* 接下来应该遵循什么路径
仅创建 `.tour` JSON 文件。不要在此技能范围内修改源代码。
## 何时使用
在以下情况下使用此技能:
* 用户请求代码导览、入职导览、架构导览或 PR 导览
* 用户说“解释 X 如何工作”,并希望获得可重用的引导式产物
* 用户希望为新工程师或审阅者提供上手路径
* 相比平铺直叙的摘要,引导式序列更适合该任务
示例:
* 新维护者入职
* 单个服务或包的架构导览
* 锚定到变更文件的 PR 审查导览
* 展示故障路径的根本原因分析导览
* 信任边界和关键检查的安全审查导览
## 何时不使用
| 不使用代码导览的情况 | 使用 |
| --- | --- |
| 在聊天中一次性解释就足够了 | 直接回答 |
| 用户想要散文式文档,而不是 `.tour` 产物 | `documentation-lookup` 或仓库文档编辑 |
| 任务是实现或重构 | 执行实现工作 |
| 任务是没有导览产物的广泛代码库入职 | `codebase-onboarding` |
## 工作流程
### 1. 探索
在编写任何内容之前探索仓库:
* README 和包/应用入口点
* 文件夹结构
* 相关配置文件
* 如果导览聚焦于 PR则查看变更的文件
在理解代码结构之前,不要开始编写步骤。
### 2. 推断读者
根据请求确定角色和深度。
| 请求形式 | 角色 | 建议深度 |
| --- | --- | --- |
| "入职""新成员" | `new-joiner` | 9-13 步 |
| "快速导览""快速了解" | `vibecoder` | 5-8 步 |
| "架构" | `architect` | 14-18 步 |
| "导览此 PR" | `pr-reviewer` | 7-11 步 |
| "为什么这个出错了" | `rca-investigator` | 7-11 步 |
| "安全审查" | `security-reviewer` | 7-11 步 |
| "解释此功能如何工作" | `feature-explainer` | 7-11 步 |
| "调试此路径" | `bug-fixer` | 7-11 步 |
### 3. 读取并验证锚点
每个文件路径和行锚点必须是真实的:
* 确认文件存在
* 确认行号在范围内
* 如果使用选区,验证确切的代码块
* 如果文件易变,优先使用基于模式的锚点
切勿猜测行号。
### 4. 编写 `.tour`
写入:
```text
.tours/<persona>-<focus>.tour
```
保持路径确定且可读。
### 5. 验证
在完成之前:
* 每个引用的路径都存在
* 每行或每个选区都有效
* 第一步锚定到真实文件或目录
* 导览讲述连贯的故事,而非罗列文件
## 步骤类型
### 内容
谨慎使用,通常仅用于结束步骤:
```json
{ "title": "Next Steps", "description": "You can now trace the request path end to end." }
```
不要将第一步设为纯内容。
### 目录
用于引导读者了解模块:
```json
{ "directory": "src/services", "title": "Service Layer", "description": "The core orchestration logic lives here." }
```
### 文件 + 行
这是默认步骤类型:
```json
{ "file": "src/auth/middleware.ts", "line": 42, "title": "Auth Gate", "description": "Every protected request passes here first." }
```
### 选区
当某个代码块比整个文件更重要时使用:
```json
{
"file": "src/core/pipeline.ts",
"selection": {
"start": { "line": 15, "character": 0 },
"end": { "line": 34, "character": 0 }
},
"title": "Request Pipeline",
"description": "This block wires validation, auth, and downstream execution."
}
```
### 模式
当精确行号可能发生变化时使用:
```json
{ "file": "src/app.ts", "pattern": "export default class App", "title": "Application Entry" }
```
### URI
在需要时用于 PR、问题或文档
```json
{ "uri": "https://github.com/org/repo/pull/456", "title": "The PR" }
```
## 编写规则SMIG
每个描述应回答:
* **情境**:读者正在查看什么
* **机制**:它是如何工作的
* **影响**:为什么对此角色重要
* **陷阱**:聪明的读者可能会错过什么
保持描述简洁、具体,并基于实际代码。
## 叙事结构
除非任务明确需要不同结构,否则使用此弧线:
1. 定位
2. 模块地图
3. 核心执行路径
4. 边缘情况或陷阱
5. 结束 / 下一步
导览应感觉像一条路径,而非清单。
## 示例
```json
{
"$schema": "https://aka.ms/codetour-schema",
"title": "API Service Tour",
"description": "Walkthrough of the request path for the payments service.",
"ref": "main",
"steps": [
{
"directory": "src",
"title": "Source Root",
"description": "All runtime code for the service starts here."
},
{
"file": "src/server.ts",
"line": 12,
"title": "Entry Point",
"description": "The server boots here and wires middleware before any route is reached."
},
{
"file": "src/routes/payments.ts",
"line": 8,
"title": "Payment Routes",
"description": "Every payments request enters through this router before hitting service logic."
},
{
"title": "Next Steps",
"description": "You can now follow any payment request end to end with the main anchors in place."
}
]
}
```
## 反模式
| 反模式 | 修复 |
| --- | --- |
| 平铺直叙的文件列表 | 讲述一个步骤间有依赖关系的故事 |
| 通用描述 | 指明具体的代码路径或模式 |
| 猜测的锚点 | 先验证每个文件和行 |
| 快速导览步骤过多 | 果断精简 |
| 第一步是纯内容 | 将第一步锚定到真实文件或目录 |
| 角色不匹配 | 为实际读者编写,而非通用工程师 |
## 最佳实践
* 步骤数量与仓库大小和角色深度成比例
* 使用目录步骤进行定位,文件步骤用于实质内容
* 对于 PR 导览,首先覆盖变更的文件
* 对于单体仓库,将范围限定在相关包,而非导览所有内容
* 以读者现在可以做什么来结束,而非总结
## 相关技能
* `codebase-onboarding`
* `coding-standards`
* `council`
* 官方上游格式:`microsoft/codetour`

View File

@@ -0,0 +1,160 @@
---
name: ecc-tools-cost-audit
description: 证据优先的ECC工具燃烧和计费审计工作流。用于调查ECC工具仓库中的失控PR创建、配额绕过、高级模型泄漏、重复作业或GitHub App成本激增。
origin: ECC
---
# ECC 工具成本审计
当用户怀疑 ECC Tools GitHub App 正在消耗成本、过度创建 PR、绕过使用限制或将免费用户引导至付费分析路径时使用此技能。
这是一个针对兄弟仓库 [ECC-Tools](../../../../ECC-Tools) 的聚焦操作者工作流。它不是通用的计费技能,也不是仓库范围的代码审查。
## 技能栈
在相关情况下,将这些 ECC 原生技能拉入工作流:
* `autonomous-loops` 用于跨 webhook、队列、计费和重试的有界多步骤审计
* `agentic-engineering` 用于将请求路径追踪为离散的、可证明的单元
* `customer-billing-ops` 当需要清晰分离仓库行为和客户影响计算时
* `search-first` 在发明辅助函数或重新实现仓库本地工具之前
* `security-review` 当涉及认证、使用限制、授权或密钥时
* `verification-loop` 用于证明重试安全性和精确的修复后状态
* `tdd-workflow` 当修复需要在 worker、路由器或计费路径中添加回归测试覆盖时
## 使用时机
* 用户提及 ECC Tools 消耗率、PR 递归、过度创建的 PR、使用限制绕过或付费模型泄漏
* 任务位于兄弟仓库 `ECC-Tools` 中,并依赖于 webhook 处理器、队列 worker、使用预留、PR 创建逻辑或付费网关强制执行
* 客户报告称应用创建了过多 PR、计费错误或分析了代码但未产生可用结果
## 范围约束
* 在兄弟仓库 `ECC-Tools` 中工作,而非 `everything-claude-code`
* 除非用户明确要求修复,否则以只读方式开始
* 在追踪分析消耗时,不要修改无关的计费、结账或 UI 流程
* 将应用生成的分支和应用生成的 PR 视为红旗递归路径,除非被证明并非如此
* 明确区分三件事:
* 仓库侧消耗的根本原因
* 面向客户的计费影响
* 需要纳入待办事项跟踪的产品或授权缺口
## 工作流
### 1. 冻结仓库范围
* 切换到兄弟仓库 `ECC-Tools`
* 首先检查分支和本地差异
* 确定审计的具体范围:
* webhook 路由器
* 队列生产者
* 队列消费者
* PR 创建路径
* 使用预留 / 计费路径
* 模型路由路径
### 2. 在理论化之前追踪入口
* 首先检查 `src/index.*` 或主入口点
* 在提出修复建议之前,映射每个入队路径
* 确认哪些 GitHub 事件共享一个队列类型
* 确认 push、pull\_request、synchronize、comment 或手动重新运行事件是否会汇聚到同一个昂贵的路径上
### 3. 追踪 Worker 和副作用
* 检查处理分析的队列消费者或定时 worker
* 确认排队的分析是否总是以以下方式结束:
* PR 创建
* 分支创建
* 文件更新
* 付费模型调用
* 使用量增加
* 如果分析可能消耗令牌,然后在输出持久化之前失败,则将其归类为“消耗但输出中断”
### 4. 审计高信号消耗路径
#### PR 倍增
* 检查 PR 辅助函数和分支命名
* 检查去重、synchronize 事件处理以及现有 PR 的复用
* 如果应用生成的分支可以重新进入分析,则将其视为优先级为 0 的递归风险
#### 配额绕过
* 检查配额检查的位置与使用量预留或增加的位置
* 如果在入队前检查配额,但仅在 worker 内部计费使用量,则将并发的前门通过视为真正的竞态条件
#### 付费模型泄漏
* 检查模型选择、层级分支和提供商路由
* 验证当存在付费密钥时,免费或受限用户是否仍能访问付费分析器
#### 重试消耗
* 检查重试循环、重复的队列任务和确定性失败重试
* 如果相同的非临时性错误可以反复消耗分析资源,则先修复此问题,再进行质量改进
### 5. 按消耗顺序修复
如果用户要求代码更改,请按以下顺序优先修复:
1. 阻止自动 PR 倍增
2. 阻止配额绕过
3. 阻止付费模型泄漏
4. 阻止重复任务扇出和无意义的重试
5. 弥补重试/更新安全缺口
除非同一根本原因明显跨越多个文件,否则将修复范围限制在一到三个直接修复。
### 6. 以最小的验证步骤进行验证
* 仅重新运行覆盖已更改路径的目标测试或集成片段
* 验证消耗路径现在是否:
* 被阻止
* 已去重
* 降级为更便宜的分析
* 或提前被拒绝
* 准确说明最终状态:
* 本地已更改
* 本地已验证
* 已推送
* 已部署
* 仍被阻止
## 高信号故障模式
### 1. 所有触发器使用同一队列类型
如果推送、PR 同步和手动审计都入队相同的任务,并且 worker 总是创建 PR那么分析就等于 PR 垃圾信息。
### 2. 入队后预留使用量
如果在入口处检查使用量,但仅在 worker 中增加,则并发请求可能全部通过关卡并超出配额。
### 3. 免费层级走付费路径
如果存在密钥时,免费的排队任务仍能路由到 Anthropic 或其他付费提供商,即使客户从未看到付费结果,这也是真实的支出泄漏。
### 4. 应用生成的分支重新进入 Webhook
如果 `pull_request.synchronize`、分支推送或评论触发的运行在应用拥有的分支上触发,则应用可以递归分析自己的输出。
### 5. 在持久化安全之前执行昂贵操作
如果系统可能消耗令牌,然后在 PR 创建、文件更新或分支冲突时失败,则是在消耗成本而不产生价值。
## 陷阱
* 不要一开始就广泛浏览仓库;先确定 webhook -> 队列 -> worker 的路径
* 不要将客户计费推断与基于代码的产品事实混为一谈
* 在最高消耗路径被控制之前,不要修复价值较低的质量问题
* 在重新运行狭窄的验证步骤之前,不要声称消耗问题已修复
* 除非用户要求,否则不要推送或部署
* 如果无关的仓库本地更改正在进行中,不要触碰它们
## 验证
* 根本原因需引用确切的文件路径和代码区域
* 修复按消耗影响排序,而非代码整洁度
* 需指明验证命令的名称
* 最终状态需区分本地更改、验证、推送和部署

View File

@@ -0,0 +1,123 @@
---
name: gateguard
description: 强制事实的门控,阻止编辑/写入/Bash包括MultiEdit并要求在允许操作之前进行具体调查导入器、数据模式、用户指令。与无门控代理相比可测量地将输出质量提高2.25分。
origin: community
---
# GateGuard — 事实驱动的前置操作门控
一个 PreToolUse 钩子,强制 Claude 在编辑前进行调查。不同于自我评估("你确定吗?"),它要求具体的事实。调查行为本身创造了自我评估永远无法带来的认知。
## 何时激活
* 处理任何文件编辑会影响多个模块的代码库时
* 项目包含具有特定模式或日期格式的数据文件时
* 团队要求 AI 生成的代码必须匹配现有模式时
* 任何 Claude 倾向于猜测而非调查的工作流程中
## 核心概念
LLM 的自我评估不起作用。问"你是否违反了任何策略?"答案永远是"没有"。这已通过实验验证。
但问"列出所有导入此模块的文件"会迫使 LLM 运行 Grep 和 Read。调查本身创造了改变输出的上下文。
**三阶段门控:**
```
1. DENY — 阻止首次编辑/写入/Bash 尝试
2. FORCE — 明确告知模型需要收集哪些事实
3. ALLOW — 在事实呈现后允许重试
```
没有竞争对手能同时做到这三步。大多数止步于拒绝。
## 证据
两个独立的 A/B 测试,相同的代理,相同的任务:
| 任务 | 有门控 | 无门控 | 差距 |
| --- | --- | --- | --- |
| 分析模块 | 8.0/10 | 6.5/10 | +1.5 |
| Webhook 验证器 | 10.0/10 | 7.0/10 | +3.0 |
| **平均** | **9.0** | **6.75** | **+2.25** |
两个代理生成的代码都能运行并通过测试。区别在于设计深度。
## 门控类型
### 编辑/多编辑门控(每个文件的首次编辑)
多编辑的处理方式相同——批次中的每个文件都单独进行门控。
```
在编辑 {file_path} 之前,请先呈现以下事实:
1. 列出所有导入/引用此文件的文件(使用 Grep
2. 列出受此更改影响的公共函数/类
3. 如果此文件读取/写入数据文件,请显示字段名称、结构以及日期格式(使用脱敏或合成值,而非原始生产数据)
4. 逐字引用用户当前的指令
```
### 写入门控(首次创建新文件)
```
在创建 {file_path} 之前,请先说明以下事实:
1. 命名将调用此新文件的文件及行号
2. 确认没有现有文件具有相同功能(使用 Glob
3. 如果此文件读取/写入数据文件,请展示字段名称、结构及日期格式(使用脱敏或合成值,而非原始生产数据)
4. 逐字引用用户当前的指令
```
### 破坏性 Bash 门控(每个破坏性命令)
触发条件:`rm -rf``git reset --hard``git push --force``drop table` 等。
```
1. 列出此命令将修改或删除的所有文件/数据
2. 编写一行回滚步骤
3. 逐字引用用户当前的指令
```
### 常规 Bash 门控(每个会话一次)
```
1. 当前用户请求的一句话概括
2. 此特定命令验证或生成的内容
```
## 快速开始
### 选项 A使用 ECC 钩子(零安装)
`scripts/hooks/gateguard-fact-force.js` 处的钩子已包含在此插件中。通过 hooks.json 启用它。
如果 GateGuard 阻止了设置或修复工作,请使用
`ECC_GATEGUARD=off` 启动会话。如需钩子级别的控制,请继续使用
`ECC_DISABLED_HOOKS` 配合 GateGuard 钩子 ID。
### 选项 B带配置的完整包
```bash
pip install gateguard-ai
gateguard init
```
这会添加 `.gateguard.yml` 用于按项目配置(自定义消息、忽略路径、门控开关)。
## 反模式
* **不要使用自我评估替代。** "你确定吗?"总是得到"确定。"这已通过实验验证。
* **不要跳过数据模式检查。** 两个 A/B 测试代理都假设了 ISO-8601 日期,而实际数据使用的是 `%Y/%m/%d %H:%M`。检查数据结构(使用脱敏值)可以防止这类错误。
* **不要对每个 Bash 命令都进行门控。** 常规 bash 门控每个会话一次。破坏性 bash 门控每次执行。这种平衡避免了速度下降,同时捕获了真正的风险。
## 最佳实践
* 让门控自然触发。不要试图预先回答门控问题——调查本身才是提高质量的关键。
* 为你的领域自定义门控消息。如果你的项目有特定约定,请将其添加到门控提示中。
* 使用 `.gateguard.yml` 忽略 `.venv/``node_modules/``.git/` 等路径。
## 相关技能
* `safety-guard` — 运行时安全检查(互补,不重叠)
* `code-reviewer` — 编辑后审查GateGuard 是编辑前调查)

View File

@@ -0,0 +1,720 @@
---
name: git-workflow
description: Git工作流模式包括分支策略、提交约定、合并与变基、冲突解决以及适用于各种规模团队的协作开发最佳实践。
origin: ECC
---
# Git 工作流模式
Git 版本控制、分支策略与协作开发的最佳实践。
## 何时启用
* 为新项目设置 Git 工作流
* 决定分支策略GitFlow、主干开发、GitHub Flow
* 编写提交信息和 PR 描述
* 解决合并冲突
* 管理发布和版本标签
* 让新团队成员熟悉 Git 实践
## 分支策略
### GitHub Flow简单推荐大多数场景使用
最适合持续部署以及中小型团队。
```
main (protected, always deployable)
├── feature/user-auth → PR → merge to main
├── feature/payment-flow → PR → merge to main
└── fix/login-bug → PR → merge to main
```
**规则:**
* `main` 始终可部署
*`main` 创建功能分支
* 准备就绪后发起 Pull Request
* 审核通过且 CI 通过后,合并到 `main`
* 合并后立即部署
### 主干开发(高速度团队)
最适合具备强大 CI/CD 和功能开关的团队。
```
main (主干)
├── 短期功能分支最长1-2天
├── 短期功能分支
└── 短期功能分支
```
**规则:**
* 所有人直接提交到 `main` 或使用极短生命周期的分支
* 功能开关隐藏未完成的工作
* 合并前必须通过 CI
* 每天多次部署
### GitFlow复杂基于发布周期
适合计划性发布和企业级项目。
```
main (生产发布版本)
└── develop (集成分支)
├── feature/user-auth
├── feature/payment
├── release/1.0.0 → 合并到 main 和 develop
└── hotfix/critical → 合并到 main 和 develop
```
**规则:**
* `main` 仅包含生产就绪代码
* `develop` 是集成分支
* 功能分支从 `develop` 创建,合并回 `develop`
* 发布分支从 `develop` 创建,合并到 `main``develop`
* 热修复分支从 `main` 创建,合并到 `main``develop`
### 何时使用哪种策略
| 策略 | 团队规模 | 发布频率 | 最佳适用场景 |
|----------|-----------|-----------------|----------|
| GitHub Flow | 任意 | 持续 | SaaS、Web 应用、初创公司 |
| 主干开发 | 5 人以上有经验 | 每天多次 | 高速度团队、功能开关 |
| GitFlow | 10 人以上 | 计划性 | 企业、受监管行业 |
## 提交信息
### 常规提交格式
```
<type>(<scope>): <subject>
[optional body]
[optional footer(s)]
```
### 类型
| 类型 | 用途 | 示例 |
|------|---------|---------|
| `feat` | 新功能 | `feat(auth): add OAuth2 login` |
| `fix` | 错误修复 | `fix(api): handle null response in user endpoint` |
| `docs` | 文档 | `docs(readme): update installation instructions` |
| `style` | 格式调整,无代码变更 | `style: fix indentation in login component` |
| `refactor` | 代码重构 | `refactor(db): extract connection pool to module` |
| `test` | 添加/更新测试 | `test(auth): add unit tests for token validation` |
| `chore` | 维护任务 | `chore(deps): update dependencies` |
| `perf` | 性能改进 | `perf(query): add index to users table` |
| `ci` | CI/CD 变更 | `ci: add PostgreSQL service to test workflow` |
| `revert` | 回滚之前的提交 | `revert: revert "feat(auth): add OAuth2 login"` |
### 好与坏的示例
```
# 不好:模糊,无上下文
git commit -m "修复了一些东西"
git commit -m "更新"
git commit -m "进行中"
# 好:清晰,具体,解释原因
git commit -m "fix(api): 在 503 服务不可用时重试请求
外部 API 在高峰时段偶尔会返回 503 错误。
添加了指数退避重试逻辑,最多尝试 3 次。
关闭 #123"
```
### 提交信息模板
在仓库根目录创建 `.gitmessage`
```
# <type>(<scope>): <subject>
# # 类型feat, fix, docs, style, refactor, test, chore, perf, ci, revert
# 范围api, ui, db, auth 等
# 主题祈使语气无句号最多50个字符
#
# [可选正文] - 解释原因,而非内容
# [可选脚注] - 破坏性变更,关闭 #issue
```
启用方式:`git config commit.template .gitmessage`
## 合并 vs 变基
### 合并(保留历史)
```bash
# Creates a merge commit
git checkout main
git merge feature/user-auth
# Result:
# * merge commit
# |\
# | * feature commits
# |/
# * main commits
```
**适用场景:**
* 将功能分支合并到 `main`
* 希望保留完整历史
* 多人共同开发该分支
* 分支已推送,其他人可能基于它开展工作
### 变基(线性历史)
```bash
# Rewrites feature commits onto target branch
git checkout feature/user-auth
git rebase main
# Result:
# * feature commits (rewritten)
# * main commits
```
**适用场景:**
* 用最新的 `main` 更新本地功能分支
* 希望获得线性、干净的历史
* 分支仅存在于本地(未推送)
* 只有你一个人在该分支上工作
### 变基工作流
```bash
# Update feature branch with latest main (before PR)
git checkout feature/user-auth
git fetch origin
git rebase origin/main
# Fix any conflicts
# Tests should still pass
# Force push (only if you're the only contributor)
git push --force-with-lease origin feature/user-auth
```
### 何时不应变基
```
# 切勿变基以下分支:
- 已推送至共享仓库的分支
- 他人已基于其工作的分支
- 受保护分支main、develop
- 已合并的分支
# 原因:变基会重写历史,破坏他人的工作
```
## Pull Request 工作流
### PR 标题格式
```
<type>(<scope>): <description>
示例:
feat(auth): add SSO support for enterprise users
fix(api): resolve race condition in order processing
docs(api): add OpenAPI specification for v2 endpoints
```
### PR 描述模板
```markdown
## 内容
简要描述此 PR 的内容。
## 动机
解释动机和背景。
## 实现方式
值得强调的关键实现细节。
## 测试
- [ ] 新增/更新单元测试
- [ ] 新增/更新集成测试
- [ ] 执行手动测试
## 截图(如适用)
UI 变更的前后对比截图。
## 检查清单
- [ ] 代码遵循项目风格指南
- [ ] 完成自我审查
- [ ] 为复杂逻辑添加注释
- [ ] 更新文档
- [ ] 未引入新警告
- [ ] 测试在本地通过
- [ ] 关联问题已链接
关闭 #123
```
### 代码审查清单
**审查者:**
* \[ ] 代码是否解决了所述问题?
* \[ ] 是否处理了所有边界情况?
* \[ ] 代码是否可读且易于维护?
* \[ ] 是否有足够的测试?
* \[ ] 是否存在安全问题?
* \[ ] 提交历史是否干净(必要时已压缩)?
**作者:**
* \[ ] 在请求审查前已完成自我审查
* \[ ] CI 通过测试、lint、类型检查
* \[ ] PR 大小合理(理想情况下 <500 行)
* \[ ] 与单个功能/修复相关
* \[ ] 描述清晰解释了变更内容
## 冲突解决
### 识别冲突
```bash
# Check for conflicts before merge
git checkout main
git merge feature/user-auth --no-commit --no-ff
# If conflicts, Git will show:
# CONFLICT (content): Merge conflict in src/auth/login.ts
# Automatic merge failed; fix conflicts and then commit the result.
```
### 解决冲突
```bash
# See conflicted files
git status
# View conflict markers in file
# <<<<<<< HEAD
# content from main
# =======
# content from feature branch
# >>>>>>> feature/user-auth
# Option 1: Manual resolution
# Edit file, remove markers, keep correct content
# Option 2: Use merge tool
git mergetool
# Option 3: Accept one side
git checkout --ours src/auth/login.ts # Keep main version
git checkout --theirs src/auth/login.ts # Keep feature version
# After resolving, stage and commit
git add src/auth/login.ts
git commit
```
### 冲突预防策略
```bash
# 1. Keep feature branches small and short-lived
# 2. Rebase frequently onto main
git checkout feature/user-auth
git fetch origin
git rebase origin/main
# 3. Communicate with team about touching shared files
# 4. Use feature flags instead of long-lived branches
# 5. Review and merge PRs promptly
```
## 分支管理
### 命名规范
```
# 功能分支
feature/user-authentication
feature/JIRA-123-payment-integration
# 错误修复
fix/login-redirect-loop
fix/456-null-pointer-exception
# 热修复(生产问题)
hotfix/critical-security-patch
hotfix/database-connection-leak
# 发布版本
release/1.2.0
release/2024-01-hotfix
# 实验/概念验证
experiment/new-caching-strategy
poc/graphql-migration
```
### 分支清理
```bash
# Delete local branches that are merged
git branch --merged main | grep -v "^\*\|main" | xargs -n 1 git branch -d
# Delete remote-tracking references for deleted remote branches
git fetch -p
# Delete local branch
git branch -d feature/user-auth # Safe delete (only if merged)
git branch -D feature/user-auth # Force delete
# Delete remote branch
git push origin --delete feature/user-auth
```
### 暂存工作流
```bash
# Save work in progress
git stash push -m "WIP: user authentication"
# List stashes
git stash list
# Apply most recent stash
git stash pop
# Apply specific stash
git stash apply stash@{2}
# Drop stash
git stash drop stash@{0}
```
## 发布管理
### 语义化版本
```
MAJOR.MINOR.PATCH
MAJOR破坏性变更
MINOR新功能向后兼容
PATCH错误修复向后兼容
示例:
1.0.0 → 1.0.1(补丁:错误修复)
1.0.1 → 1.1.0(次要:新功能)
1.1.0 → 2.0.0(主要:破坏性变更)
```
### 创建发布
```bash
# Create annotated tag
git tag -a v1.2.0 -m "Release v1.2.0
Features:
- Add user authentication
- Implement password reset
Fixes:
- Resolve login redirect issue
Breaking Changes:
- None"
# Push tag to remote
git push origin v1.2.0
# List tags
git tag -l
# Delete tag
git tag -d v1.2.0
git push origin --delete v1.2.0
```
### 变更日志生成
```bash
# Generate changelog from commits
git log v1.1.0..v1.2.0 --oneline --no-merges
# Or use conventional-changelog
npx conventional-changelog -i CHANGELOG.md -s
```
## Git 配置
### 基本配置
```bash
# User identity
git config --global user.name "Your Name"
git config --global user.email "your@email.com"
# Default branch name
git config --global init.defaultBranch main
# Pull behavior (rebase instead of merge)
git config --global pull.rebase true
# Push behavior (push current branch only)
git config --global push.default current
# Auto-correct typos
git config --global help.autocorrect 1
# Better diff algorithm
git config --global diff.algorithm histogram
# Color output
git config --global color.ui auto
```
### 实用别名
```bash
# Add to ~/.gitconfig
[alias]
co = checkout
br = branch
ci = commit
st = status
unstage = reset HEAD --
last = log -1 HEAD
visual = log --oneline --graph --all
amend = commit --amend --no-edit
wip = commit -m "WIP"
undo = reset --soft HEAD~1
contributors = shortlog -sn
```
### Gitignore 模式
```gitignore
# Dependencies
node_modules/
vendor/
# Build outputs
dist/
build/
*.o
*.exe
# Environment files
.env
.env.local
.env.*.local
# IDE
.idea/
.vscode/
*.swp
*.swo
# OS files
.DS_Store
Thumbs.db
# Logs
*.log
logs/
# Test coverage
coverage/
# Cache
.cache/
*.tsbuildinfo
```
## 常见工作流
### 开始新功能
```bash
# 1. Update main branch
git checkout main
git pull origin main
# 2. Create feature branch
git checkout -b feature/user-auth
# 3. Make changes and commit
git add .
git commit -m "feat(auth): implement OAuth2 login"
# 4. Push to remote
git push -u origin feature/user-auth
# 5. Create Pull Request on GitHub/GitLab
```
### 用新变更更新 PR
```bash
# 1. Make additional changes
git add .
git commit -m "feat(auth): add error handling"
# 2. Push updates
git push origin feature/user-auth
```
### 同步 Fork 与上游
```bash
# 1. Add upstream remote (once)
git remote add upstream https://github.com/original/repo.git
# 2. Fetch upstream
git fetch upstream
# 3. Merge upstream/main into your main
git checkout main
git merge upstream/main
# 4. Push to your fork
git push origin main
```
### 撤销错误操作
```bash
# Undo last commit (keep changes)
git reset --soft HEAD~1
# Undo last commit (discard changes)
git reset --hard HEAD~1
# Undo last commit pushed to remote
git revert HEAD
git push origin main
# Undo specific file changes
git checkout HEAD -- path/to/file
# Fix last commit message
git commit --amend -m "New message"
# Add forgotten file to last commit
git add forgotten-file
git commit --amend --no-edit
```
## Git 钩子
### 预提交钩子
```bash
#!/bin/bash
# .git/hooks/pre-commit
# Run linting
npm run lint || exit 1
# Run tests
npm test || exit 1
# Check for secrets
if git diff --cached | grep -E '(password|api_key|secret)'; then
echo "Possible secret detected. Commit aborted."
exit 1
fi
```
### 预推送钩子
```bash
#!/bin/bash
# .git/hooks/pre-push
# Run full test suite
npm run test:all || exit 1
# Check for console.log statements
if git diff origin/main | grep -E 'console\.log'; then
echo "Remove console.log statements before pushing."
exit 1
fi
```
## 反模式
```
# 错误:直接提交到主分支
git checkout main
git commit -m "修复bug"
# 正确:使用功能分支和拉取请求
# 错误:提交机密信息
git add .env # 包含API密钥
# 正确:添加到.gitignore使用环境变量
# 错误巨大的拉取请求超过1000行
# 正确:拆分为更小、更聚焦的拉取请求
# 错误:"更新"类提交信息
git commit -m "更新"
git commit -m "修复"
# 正确:描述性信息
git commit -m "fix(auth): 解决登录后的重定向循环问题"
# 错误:重写公共历史
git push --force origin main
# 正确:对公共分支使用回退
git revert HEAD
# 错误:长期存在的功能分支(数周/数月)
# 正确:保持分支短期(数天),频繁变基
# 错误:提交生成的文件
git add dist/
git add node_modules/
# 正确:添加到.gitignore
```
## 快速参考
| 任务 | 命令 |
|------|---------|
| 创建分支 | `git checkout -b feature/name` |
| 切换分支 | `git checkout branch-name` |
| 删除分支 | `git branch -d branch-name` |
| 合并分支 | `git merge branch-name` |
| 变基分支 | `git rebase main` |
| 查看历史 | `git log --oneline --graph` |
| 查看变更 | `git diff` |
| 暂存变更 | `git add .``git add -p` |
| 提交 | `git commit -m "message"` |
| 推送 | `git push origin branch-name` |
| 拉取 | `git pull origin branch-name` |
| 暂存 | `git stash push -m "message"` |
| 撤销上次提交 | `git reset --soft HEAD~1` |
| 回滚提交 | `git revert HEAD` |

View File

@@ -0,0 +1,145 @@
---
name: github-ops
description: GitHub 仓库操作、自动化与管理。使用 gh CLI 进行问题分类、PR 管理、CI/CD 操作、发布管理和安全监控。当用户想要管理 GitHub 问题、PR、CI 状态、发布、贡献者、过期项目或任何超出简单 git 命令的 GitHub 操作任务时使用。
origin: ECC
---
# GitHub 操作
管理 GitHub 仓库重点关注社区健康、CI 可靠性和贡献者体验。
## 何时激活
* 对议题进行分类(分类、打标签、回复、去重)
* 管理 PR审查状态、CI 检查、过期 PR、合并就绪状态
* 调试 CI/CD 失败
* 准备发布和变更日志
* 监控 Dependabot 和安全告警
* 管理开源项目的贡献者体验
* 用户说“检查 GitHub”、“分类议题”、“审查 PR”、“合并”、“发布”、“CI 坏了”
## 工具要求
* 所有 GitHub API 操作均使用 **gh CLI**
* 通过 `gh auth login` 配置仓库访问权限
## 议题分类
按类型和优先级对每个议题进行分类:
**类型:** bug, feature-request, question, documentation, enhancement, duplicate, invalid, good-first-issue
**优先级:** critical破坏性/安全相关), high重大影响, medium锦上添花, low外观/体验优化)
### 分类工作流程
1. 阅读议题标题、正文和评论
2. 检查是否与现有议题重复(通过关键词搜索)
3. 通过 `gh issue edit --add-label` 应用适当的标签
4. 对于问题:起草并发布有帮助的回复
5. 对于需要更多信息的 Bug要求提供复现步骤
6. 对于适合新手的议题:添加 `good-first-issue` 标签
7. 对于重复议题:评论并附上原始议题链接,添加 `duplicate` 标签
```bash
# Search for potential duplicates
gh issue list --search "keyword" --state all --limit 20
# Add labels
gh issue edit <number> --add-label "bug,high-priority"
# Comment on issue
gh issue comment <number> --body "Thanks for reporting. Could you share reproduction steps?"
```
## PR 管理
### 审查清单
1. 检查 CI 状态:`gh pr checks <number>`
2. 检查是否可合并:`gh pr view <number> --json mergeable`
3. 检查 PR 的创建时间和最后活动时间
4. 标记超过 5 天未审查的 PR
5. 对于社区 PR确保包含测试并遵循项目规范
### 过期策略
* 超过 14 天无活动的议题:添加 `stale` 标签,评论要求更新
* 超过 7 天无活动的 PR评论询问是否仍在进行
* 30 天内无回复的过期议题自动关闭(添加 `closed-stale` 标签)
```bash
# Find stale issues (no activity in 14+ days)
gh issue list --label "stale" --state open
# Find PRs with no recent activity
gh pr list --json number,title,updatedAt --jq '.[] | select(.updatedAt < "2026-03-01")'
```
## CI/CD 操作
当 CI 失败时:
1. 检查工作流运行:`gh run view <run-id> --log-failed`
2. 识别失败的步骤
3. 判断是不稳定测试还是真正的失败
4. 对于真正的失败:确定根本原因并提出修复建议
5. 对于不稳定测试:记录模式以便未来调查
```bash
# List recent failed runs
gh run list --status failure --limit 10
# View failed run logs
gh run view <run-id> --log-failed
# Re-run a failed workflow
gh run rerun <run-id> --failed
```
## 发布管理
准备发布时:
1. 确保主分支上的所有 CI 检查通过
2. 审查未发布的更改:`gh pr list --state merged --base main`
3. 根据 PR 标题生成变更日志
4. 创建发布:`gh release create`
```bash
# List merged PRs since last release
gh pr list --state merged --base main --search "merged:>2026-03-01"
# Create a release
gh release create v1.2.0 --title "v1.2.0" --generate-notes
# Create a pre-release
gh release create v1.3.0-rc1 --prerelease --title "v1.3.0 Release Candidate 1"
```
## 安全监控
```bash
# Check Dependabot alerts
gh api repos/{owner}/{repo}/dependabot/alerts --jq '.[].security_advisory.summary'
# Check secret scanning alerts
gh api repos/{owner}/{repo}/secret-scanning/alerts --jq '.[].state'
# Review and auto-merge safe dependency bumps
gh pr list --label "dependencies" --json number,title
```
* 审查并自动合并安全的依赖项更新
* 立即标记任何严重/高严重性告警
* 至少每周检查一次新的 Dependabot 告警
## 质量门禁
在完成任何 GitHub 操作任务之前:
* 所有已分类的议题都带有适当的标签
* 没有超过 7 天未收到审查或评论的 PR
* CI 失败已被调查(不仅仅是重新运行)
* 发布包含准确的变更日志
* 安全告警已被确认并跟踪

View File

@@ -0,0 +1,139 @@
---
name: hookify-rules
description: 当用户要求创建hookify规则、编写hook规则、配置hookify、添加hookify规则或需要关于hookify规则语法和模式的指导时应使用此技能。
---
# 编写 Hookify 规则
## 概述
Hookify 规则是带有 YAML 前置元数据的 Markdown 文件,用于定义要监控的模式以及匹配时显示的消息。规则存储在 `.claude/hookify.{rule-name}.local.md` 文件中。
## 规则文件格式
### 基本结构
```markdown
---
name: rule-identifier
enabled: true
event: bash|file|stop|prompt|all
pattern: regex-pattern-here
---
当此规则触发时向 Claude 显示的消息。
可包含 Markdown 格式、警告、建议等内容。
```
### 前置元数据字段
| 字段 | 必填 | 值 | 描述 |
|-------|----------|--------|-------------|
| name | 是 | kebab-case 字符串 | 唯一标识符动词优先warn-*、block-*、require-* |
| enabled | 是 | true/false | 无需删除即可切换 |
| event | 是 | bash/file/stop/prompt/all | 触发规则的钩子事件 |
| action | 否 | warn/block | warn默认显示消息block 阻止操作 |
| pattern | 是* | 正则表达式字符串 | 要匹配的模式(\*或使用 conditions 实现复杂规则) |
### 高级格式(多条件)
```markdown
---
name: warn-env-api-keys
enabled: true
event: file
conditions:
- field: file_path
operator: regex_match
pattern: \.env$
- field: new_text
operator: contains
pattern: API_KEY
---
你正在向 .env 文件中添加 API 密钥。请确保该文件已包含在 .gitignore 中!
```
**按事件划分的条件字段:**
* bash`command`
* file`file_path``new_text``old_text``content`
* prompt`user_prompt`
**运算符:** `regex_match``contains``equals``not_contains``starts_with``ends_with`
所有条件必须同时满足才能触发规则。
## 事件类型指南
### bash 事件
匹配 Bash 命令模式:
* 危险命令:`rm\s+-rf``dd\s+if=``mkfs`
* 权限提升:`sudo\s+``su\s+`
* 权限问题:`chmod\s+777`
### file 事件
匹配编辑/写入/多重编辑操作:
* 调试代码:`console\.log\(``debugger`
* 安全风险:`eval\(``innerHTML\s*=`
* 敏感文件:`\.env$``credentials``\.pem$`
### stop 事件
完成检查与提醒。模式 `.*` 始终匹配。
### prompt 事件
匹配用户提示内容以强制执行工作流程。
## 模式编写技巧
### 正则表达式基础
* 转义特殊字符:`.` 转义为 `\.``(` 转义为 `\(`
* `\s` 空白字符,`\d` 数字,`\w` 单词字符
* `+` 一个或多个,`*` 零个或多个,`?` 可选
* `|` 或运算符
### 常见陷阱
* **过于宽泛**`log` 会匹配 "login"、"dialog"——请使用 `console\.log\(`
* **过于具体**`rm -rf /tmp`——请使用 `rm\s+-rf`
* **YAML 转义**:使用无引号模式;带引号的字符串需要 `\\s`
### 测试
```bash
python3 -c "import re; print(re.search(r'your_pattern', 'test text'))"
```
## 文件组织
* **位置**:项目根目录下的 `.claude/` 目录
* **命名**`.claude/hookify.{descriptive-name}.local.md`
* **Gitignore**:将 `.claude/*.local.md` 添加到 `.gitignore`
## 命令
* `/hookify [description]` - 创建新规则(无参数时自动分析对话)
* `/hookify-list` - 以表格形式查看所有规则
* `/hookify-configure` - 交互式切换规则开关
* `/hookify-help` - 完整文档
## 快速参考
最小可行规则:
```markdown
---
name: my-rule
enabled: true
event: bash
pattern: dangerous_command
---
此处显示警告信息
```

View File

@@ -0,0 +1,302 @@
---
name: jira-integration
description: 在检索Jira工单、分析需求、更新工单状态、添加评论或转换问题时使用此技能。通过MCP或直接REST调用提供Jira API模式。
origin: ECC
---
# Jira 集成技能
直接从 AI 编码工作流中检索、分析和更新 Jira 工单。支持 **基于 MCP**(推荐)和 **直接 REST API** 两种方式。
## 何时激活
* 获取 Jira 工单以理解需求
* 从工单中提取可测试的验收标准
* 向 Jira 问题添加进度评论
* 转换工单状态(待办 → 进行中 → 完成)
* 将合并请求或分支链接到 Jira 问题
* 通过 JQL 查询搜索问题
## 前提条件
### 选项 AMCP 服务器(推荐)
安装 `mcp-atlassian` MCP 服务器。这将向您的 AI 代理直接暴露 Jira 工具。
**要求:**
* Python 3.10+
* `uvx`(来自 `uv`),通过您的包管理器或官方 `uv` 安装文档进行安装
**添加到您的 MCP 配置**(例如,`~/.claude.json``mcpServers`
```json
{
"jira": {
"command": "uvx",
"args": ["mcp-atlassian==0.21.0"],
"env": {
"JIRA_URL": "https://YOUR_ORG.atlassian.net",
"JIRA_EMAIL": "your.email@example.com",
"JIRA_API_TOKEN": "your-api-token"
},
"description": "Jira issue tracking — search, create, update, comment, transition"
}
}
```
> **安全:** 切勿在源代码中硬编码密钥。建议在系统环境(或密钥管理器)中设置 `JIRA_URL`、`JIRA_EMAIL` 和 `JIRA_API_TOKEN`。仅对本地未提交的配置文件使用 MCP `env` 块。
**获取 Jira API 令牌:**
1. 访问 <https://id.atlassian.com/manage-profile/security/api-tokens>
2. 点击 **创建 API 令牌**
3. 复制令牌 — 将其存储在您的环境中,切勿存储在源代码中
### 选项 B直接 REST API
如果 MCP 不可用,可通过 `curl` 或辅助脚本直接使用 Jira REST API v3。
**所需的环境变量:**
| 变量 | 描述 |
|----------|-------------|
| `JIRA_URL` | 您的 Jira 实例 URL例如`https://yourorg.atlassian.net` |
| `JIRA_EMAIL` | 您的 Atlassian 账户邮箱 |
| `JIRA_API_TOKEN` | 来自 id.atlassian.com 的 API 令牌 |
将这些存储在您的 shell 环境、密钥管理器或未跟踪的本地环境文件中。不要将其提交到仓库。
## MCP 工具参考
当配置了 `mcp-atlassian` MCP 服务器时,以下工具可用:
| 工具 | 用途 | 示例 |
|------|---------|---------|
| `jira_search` | JQL 查询 | `project = PROJ AND status = "In Progress"` |
| `jira_get_issue` | 按键获取完整问题详情 | `PROJ-1234` |
| `jira_create_issue` | 创建问题(任务、缺陷、故事、史诗) | 新建缺陷报告 |
| `jira_update_issue` | 更新字段(摘要、描述、经办人) | 更改经办人 |
| `jira_transition_issue` | 更改状态 | 移至“评审中” |
| `jira_add_comment` | 添加评论 | 进度更新 |
| `jira_get_sprint_issues` | 列出冲刺中的问题 | 活跃冲刺评审 |
| `jira_create_issue_link` | 链接问题(阻塞、关联) | 依赖跟踪 |
| `jira_get_issue_development_info` | 查看关联的 PR、分支、提交 | 开发上下文 |
> **提示:** 在转换前始终调用 `jira_get_transitions` — 转换 ID 因项目工作流而异。
## 直接 REST API 参考
### 获取工单
```bash
curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
-H "Content-Type: application/json" \
"$JIRA_URL/rest/api/3/issue/PROJ-1234" | jq '{
key: .key,
summary: .fields.summary,
status: .fields.status.name,
priority: .fields.priority.name,
type: .fields.issuetype.name,
assignee: .fields.assignee.displayName,
labels: .fields.labels,
description: .fields.description
}'
```
### 获取评论
```bash
curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
-H "Content-Type: application/json" \
"$JIRA_URL/rest/api/3/issue/PROJ-1234?fields=comment" | jq '.fields.comment.comments[] | {
author: .author.displayName,
created: .created[:10],
body: .body
}'
```
### 添加评论
```bash
curl -s -X POST -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"body": {
"version": 1,
"type": "doc",
"content": [{
"type": "paragraph",
"content": [{"type": "text", "text": "Your comment here"}]
}]
}
}' \
"$JIRA_URL/rest/api/3/issue/PROJ-1234/comment"
```
### 转换工单
```bash
# 1. Get available transitions
curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
"$JIRA_URL/rest/api/3/issue/PROJ-1234/transitions" | jq '.transitions[] | {id, name: .name}'
# 2. Execute transition (replace TRANSITION_ID)
curl -s -X POST -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"transition": {"id": "TRANSITION_ID"}}' \
"$JIRA_URL/rest/api/3/issue/PROJ-1234/transitions"
```
### 使用 JQL 搜索
```bash
curl -s -G -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
--data-urlencode "jql=project = PROJ AND status = 'In Progress'" \
"$JIRA_URL/rest/api/3/search"
```
## 分析工单
当为开发或测试自动化检索工单时,提取:
### 1. 可测试的需求
* **功能需求** — 功能的作用
* **验收标准** — 必须满足的条件
* **可测试的行为** — 具体操作和预期结果
* **用户角色** — 谁使用此功能及其权限
* **数据需求** — 需要哪些数据
* **集成点** — 涉及的 API、服务或系统
### 2. 所需的测试类型
* **单元测试** — 单个函数和工具
* **集成测试** — API 端点和服务交互
* **端到端测试** — 面向用户的 UI 流程
* **API 测试** — 端点契约和错误处理
### 3. 边界情况与错误场景
* 无效输入(空值、过长、特殊字符)
* 未授权访问
* 网络故障或超时
* 并发用户或竞态条件
* 边界条件
* 数据缺失或为空
* 状态转换(返回导航、刷新等)
### 4. 结构化分析输出
```
Ticket: PROJ-1234
Summary: [工单标题]
Status: [当前状态]
Priority: [高/中/低]
Test Types: 单元测试, 集成测试, 端到端测试
Requirements:
1. [需求1]
2. [需求2]
Acceptance Criteria:
- [ ] [验收标准1]
- [ ] [验收标准2]
Test Scenarios:
- Happy Path: [描述]
- Error Case: [描述]
- Edge Case: [描述]
Test Data Needed:
- [测试数据1]
- [测试数据2]
Dependencies:
- [依赖项1]
- [依赖项2]
```
## 更新工单
### 何时更新
| 工作流步骤 | Jira 更新 |
|---|---|
| 开始工作 | 转换为“进行中” |
| 编写测试 | 评论并附上测试覆盖率摘要 |
| 创建分支 | 评论并附上分支名称 |
| 创建 PR/MR | 评论并附上链接,链接问题 |
| 测试通过 | 评论并附上结果摘要 |
| PR/MR 合并 | 转换为“完成”或“评审中” |
### 评论模板
**开始工作:**
```
开始实现此工单。
分支feat/PROJ-1234-feature-name
```
**测试已实现:**
```
已实现的自动化测试:
单元测试:
- [测试文件1] — [覆盖内容]
- [测试文件2] — [覆盖内容]
集成测试:
- [测试文件] — [覆盖的端点/流程]
所有测试在本地通过。覆盖率XX%
```
**PR 已创建:**
```
Pull request created:
[PR Title](https://github.com/org/repo/pull/XXX)
Ready for review.
```
**工作完成:**
```
Implementation complete.
PR merged: [link]
Test results: All passing (X/Y)
Coverage: XX%
```
## 安全指南
* **切勿在**源代码或技能文件中硬编码 Jira API 令牌
* **始终使用**环境变量或密钥管理器
* **将 `.env`** 添加到每个项目的 `.gitignore`
* **如果令牌暴露在 git 历史中,立即轮换**
* **使用最小权限** API 令牌,范围限定在所需项目
* **在发出 API 调用前验证**凭据是否已设置 — 快速失败并给出清晰消息
## 故障排除
| 错误 | 原因 | 修复 |
|---|---|---|
| `401 Unauthorized` | API 令牌无效或已过期 | 在 id.atlassian.com 重新生成 |
| `403 Forbidden` | 令牌缺少项目权限 | 检查令牌范围和项目访问权限 |
| `404 Not Found` | 工单键或基础 URL 错误 | 验证 `JIRA_URL` 和工单键 |
| `spawn uvx ENOENT` | IDE 在 PATH 中找不到 `uvx` | 使用完整路径(例如,`~/.local/bin/uvx`)或在 `~/.zprofile` 中设置 PATH |
| 连接超时 | 网络/VPN 问题 | 检查 VPN 连接和防火墙规则 |
## 最佳实践
* 边工作边更新 Jira而不是最后一次性更新
* 保持评论简洁但信息丰富
* 链接而非复制 — 指向 PR、测试报告和仪表板
* 如果需要他人输入,使用 @提及
* 在开始前检查关联问题以了解完整功能范围
* 如果验收标准模糊,在编写代码前要求澄清

View File

@@ -0,0 +1,177 @@
---
name: knowledge-ops
description: 知识库管理、摄取、同步和跨多个存储层本地文件、MCP内存、向量存储、Git仓库的检索。当用户想要保存、组织、同步、去重或搜索其知识系统时使用。
origin: ECC
---
# 知识操作
管理一个多层知识系统,用于跨多个存储库进行知识的摄取、组织、同步和检索。
推荐使用实时工作区模型:
* 代码工作存在于实际克隆的仓库中
* 活跃执行上下文存在于 GitHub、Linear 和仓库本地的上下文文件中
* 面向人类更广泛的笔记可以存放在非仓库的上下文/归档文件夹中
* 跨机器的持久化记忆应属于知识库,而非影子仓库工作区
## 何时激活
* 用户希望将信息保存到其知识库
* 将文档、对话或数据摄取到结构化存储中
* 跨系统同步知识本地文件、MCP 记忆、Supabase、Git 仓库)
* 对现有知识进行去重或整理
* 用户说“保存到知识库”、“同步知识”、“关于 X 我知道什么”、“摄取这个”、“更新知识库”
* 任何超出简单记忆回忆的知识管理任务
## 知识架构
### 第一层:活跃执行真相
* **来源:** GitHub 议题、PR、讨论、发布说明、Linear 议题/项目/文档
* **用途:** 工作的当前操作状态
* **规则:** 如果某事物影响活跃的工程计划、路线图、发布或版本,优先将其放在此处
### 第二层Claude Code 记忆(快速访问)
* **路径:** `~/.claude/projects/*/memory/`
* **格式:** 带有前置元数据的 Markdown 文件
* **类型:** 用户偏好、反馈、项目上下文、参考
* **用途:** 跨对话持久化的快速访问上下文
* **会话启动时自动加载**
### 第三层MCP 记忆服务器(结构化知识图谱)
* **访问:** MCP 记忆工具create\_entities、create\_relations、add\_observations、search\_nodes
* **用途:** 对所有存储记忆进行语义搜索、关系映射
* **跨会话持久化,具有可查询的图谱结构**
### 第四层:知识库仓库 / 持久化文档存储
* **用途:** 精选的持久化笔记、会话导出、综合研究、操作员记忆、长文文档
* **规则:** 当内容不属于仓库拥有的代码时,这是跨机器上下文的首选持久化存储
### 第五层外部数据存储Supabase、PostgreSQL 等)
* **用途:** 结构化数据、大型文档存储、全文搜索
* **适用场景:** 对于记忆文件过大的文档、需要 SQL 查询的数据
### 第六层:本地上下文/归档文件夹
* **用途:** 面向人类的笔记、归档的游戏计划、本地媒体整理、临时非代码文档
* **规则:** 可写入用于信息存储,但非影子代码工作区
* **禁止用于:** 应存在于上游的活跃代码更改或仓库真相
## 摄取工作流
当需要捕获新知识时:
### 1. 分类
这是什么类型的知识?
* 业务决策 -> 记忆文件(项目类型)+ MCP 记忆
* 活跃路线图 / 发布 / 实现状态 -> 优先使用 GitHub + Linear
* 个人偏好 -> 记忆文件(用户/反馈类型)
* 参考信息 -> 记忆文件(参考类型)+ MCP 记忆
* 大型文档 -> 外部数据存储 + 记忆中的摘要
* 对话/会话 -> 知识库仓库 + 记忆中的简短摘要
### 2. 去重
检查此知识是否已存在:
* 搜索记忆文件中的现有条目
* 使用相关术语查询 MCP 记忆
* 在创建另一个本地笔记之前,检查信息是否已存在于 GitHub 或 Linear 中
* 不要创建重复项。而是更新现有条目。
### 3. 存储
写入适当的层级:
* 始终更新 Claude Code 记忆以便快速访问
* 使用 MCP 记忆实现语义可搜索性和关系映射
* 当信息改变实时项目真相时,首先更新 GitHub / Linear
* 提交到知识库仓库以进行持久的、长格式的添加
### 4. 索引
更新任何相关的索引或摘要文件。
## 同步操作
### 对话同步
定期将会话历史同步到知识库:
* 来源Claude 会话文件、Codex 会话、其他代理会话
* 目标:知识库仓库
* 生成会话索引以便快速浏览
* 提交并推送
### 工作区状态同步
将重要的工作区配置和脚本镜像到知识库:
* 生成目录映射
* 在提交前编辑敏感配置
* 随时间跟踪更改
* 不要将知识库或归档文件夹视为实时代码工作区
### GitHub / Linear 同步
当信息影响活跃执行时:
* 更新相关的 GitHub 议题、PR、讨论、发布说明或路线图线程
* 当工作需要持久的规划上下文时,将支持文档附加到 Linear
* 之后仅当本地笔记仍能增加价值时才进行镜像
### 跨源知识同步
将来自多个来源的知识汇集到一处:
* Claude/ChatGPT/Grok 对话导出
* 浏览器书签
* GitHub 活动事件
* 写入状态摘要,提交并推送
## 记忆模式
```
# 短期:当前会话上下文
使用 TodoWrite 进行会话内任务追踪
# 中期:项目记忆文件
写入 ~/.claude/projects/*/memory/ 以实现跨会话回溯
# 长期GitHub / Linear / 知识库
将活跃执行事实置于 GitHub + Linear
将持久化综合上下文置于知识库仓库
# 语义层MCP 知识图谱
使用 mcp__memory__create_entities 创建永久结构化数据
使用 mcp__memory__create_relations 进行关系映射
使用 mcp__memory__add_observations 添加关于已知实体的新事实
使用 mcp__memory__search_nodes 查找已有知识
```
## 最佳实践
* 保持记忆文件简洁。归档旧数据,而不是让文件无限增长。
* 在所有知识文件上使用前置元数据YAML作为元数据。
* 存储前进行去重。先搜索,然后创建或更新。
* 每个事实集优先使用一个权威存放位置。避免在本地笔记、仓库文件和跟踪器文档中并行复制同一计划。
* 在提交到 Git 之前编辑敏感信息API 密钥、密码)。
* 对知识文件使用一致的命名约定(小写-连字符-分隔)。
* 使用主题/类别标记条目,以便于检索。
## 质量门控
在完成任何知识操作之前:
* 没有创建重复条目
* 任何 Git 跟踪的文件中的敏感数据已被编辑
* 索引和摘要已更新
* 为数据类型选择了适当的存储层
* 在相关处添加了交叉引用

View File

@@ -0,0 +1,111 @@
---
name: project-flow-ops
description: 通过分类问题和拉取请求、关联活跃工作、保持GitHub对外可见而Linear作为内部执行层来协调GitHub和Linear之间的执行流程。当用户需要待办事项控制、PR分类或GitHub与Linear协调时使用。
origin: ECC
---
# 项目流程运营
此技能将分散的 GitHub Issue、PR 和 Linear 任务整合为一条执行流程。
当问题在于协调而非编码时使用。
## 使用时机
* 梳理开放的 PR 或 Issue 积压
* 决定哪些应放入 Linear哪些应保留在 GitHub 中
* 将活跃的 GitHub 工作与内部执行通道关联
* 将 PR 分类为:合并、移植/重建、关闭或搁置
* 审查评论、CI 失败或过时 Issue 是否阻碍执行
## 运营模式
* **GitHub** 是公开和社区的真实来源
* **Linear** 是内部执行的真实来源,用于活跃的已排期工作
* 并非每个 GitHub Issue 都需要创建 Linear Issue
* 仅当工作满足以下条件时,才创建或更新 Linear
* 活跃
* 已委派
* 已排期
* 跨职能
* 重要到需要内部跟踪
## 核心工作流
### 1. 首先阅读公开信息
收集:
* GitHub Issue 或 PR 状态
* 作者和分支状态
* 审查评论
* CI 状态
* 关联的 Issue
### 2. 对工作进行分类
每个项目应归入以下状态之一:
| 状态 | 含义 |
|-------|---------|
| 合并 | 独立完整、符合策略、准备就绪 |
| 移植/重建 | 有用的想法,但应在 ECC 内部手动重新落地 |
| 关闭 | 方向错误、过时、不安全或重复 |
| 搁置 | 可能有用,但当前未排期 |
### 3. 判断是否需要 Linear
仅在以下情况下创建或更新 Linear
* 执行正在积极规划中
* 涉及多个仓库或工作流
* 工作需要内部所有权或排序
* 该 Issue 是更大项目通道的一部分
不要机械地镜像所有内容。
### 4. 保持两个系统一致
当工作活跃时:
* GitHub Issue/PR 应说明公开进展
* Linear 应在内部跟踪负责人、优先级和执行通道
当工作完成或被拒绝时:
* 将公开解决方案发布回 GitHub
* 相应地标记 Linear 任务
## 审查规则
* 切勿仅凭标题、摘要或信任进行合并;需使用完整差异
* 当外部来源的功能有价值但不独立完整时,应在 ECC 内部重建
* CI 红色表示需分类并修复或阻止;不要假装其已可合并
* 如果真正的阻碍是产品方向,请直接说明,而非隐藏在工具背后
## 输出格式
返回:
```text
公开状态
- 议题 / 拉取请求状态
- 持续集成 / 审查状态
分类
- 合并 / 移植重建 / 关闭 / 搁置
- 一段理由说明
线性操作
- 创建 / 更新 / 无需线性项
- 项目 / 泳道(如适用)
下一步操作者行动
- 确切的下一个步骤
```
## 良好用例
* "审查开放的 PR 积压,告诉我哪些应合并,哪些应重建"
* "将 GitHub Issue 映射到我们的 ECC 1.x 和 ECC 2.0 项目通道"
* "检查这是否需要创建 Linear Issue还是应保留在 GitHub 中"

View File

@@ -0,0 +1,79 @@
---
name: repo-scan
description: 跨栈源代码资产审计——对每个文件进行分类检测嵌入的第三方库并为每个模块提供可操作的四级判定结果附带交互式HTML报告。
origin: community
---
# repo-scan
> 每个生态系统都有自己的依赖管理器,但没有工具能跨 C++、Android、iOS 和 Web 告诉你:有多少代码真正属于你,哪些是第三方代码,哪些是冗余负担。
## 适用场景
* 接手大型遗留代码库,需要了解整体结构
* 重大重构前——识别核心代码、重复代码和废弃代码
* 审计直接嵌入源码(而非通过包管理器声明)的第三方依赖
* 为单体仓库重组准备架构决策记录
## 安装
```bash
# Fetch only the pinned commit for reproducibility
mkdir -p ~/.claude/skills/repo-scan
git init repo-scan
cd repo-scan
git remote add origin https://github.com/haibindev/repo-scan.git
git fetch --depth 1 origin 2742664
git checkout --detach FETCH_HEAD
cp -r . ~/.claude/skills/repo-scan
```
> 安装任何代理技能前,请先审查源码。
## 核心能力
| 能力 | 描述 |
|---|---|
| **跨技术栈扫描** | 一次扫描 C/C++、Java/Android、iOSOC/Swift、WebTS/JS/Vue |
| **文件分类** | 每个文件标记为项目代码、第三方代码或构建产物 |
| **库检测** | 识别 50+ 已知库FFmpeg、Boost、OpenSSL…并提取版本号 |
| **四级判定** | 核心资产 / 提取合并 / 重建 / 废弃 |
| **HTML 报告** | 交互式深色主题页面,支持逐层下钻导航 |
| **单体仓库支持** | 分层扫描,提供摘要 + 子项目报告 |
## 分析深度级别
| 级别 | 读取文件数 | 适用场景 |
|---|---|---|
| `fast` | 每模块 1-2 个 | 快速盘点大型目录 |
| `standard` | 每模块 2-5 个 | 默认审计,含完整依赖 + 架构检查 |
| `deep` | 每模块 5-10 个 | 增加线程安全、内存管理、API 一致性检查 |
| `full` | 所有文件 | 合并前全面审查 |
## 工作原理
1. **分类仓库表面**:枚举文件,将每个文件标记为项目代码、嵌入的第三方代码或构建产物。
2. **检测嵌入的库**:检查目录名、头文件、许可证文件和版本标记,识别捆绑的依赖及其可能版本。
3. **为每个模块评分**:按模块或子系统分组文件,根据所有权、重复度和维护成本分配四种判定之一。
4. **突出结构风险**:指出冗余产物、重复的封装器、过时的供应商代码,以及应提取、重建或废弃的模块。
5. **生成报告**:返回简洁摘要及交互式 HTML 输出,支持按模块下钻,便于异步审查审计结果。
## 示例
在一个 50,000 文件的 C++ 单体仓库中:
* 发现仍在使用 FFmpeg 2.x2015 年版本)
* 发现同一 SDK 封装器重复了 3 次
* 识别出 636 MB 已提交的 Debug/ipch/obj 构建产物
* 分类结果3 MB 项目代码 vs 596 MB 第三方代码
## 最佳实践
* 首次审计时从 `standard` 深度开始
* 对包含 100+ 模块的单体仓库使用 `fast` 快速盘点
* 对标记为需重构的模块增量运行 `deep`
* 审查跨模块分析结果,检测子项目间的重复代码
## 链接
* [GitHub 仓库](https://github.com/haibindev/repo-scan)

View File

@@ -0,0 +1,112 @@
---
name: research-ops
description: 以证据为先的ECC当前状态研究工作流程。当用户希望基于当前公开证据和提供的本地上下文获取最新事实、比较、丰富信息或建议时使用。
origin: ECC
---
# 研究运营
当用户要求研究当前信息、比较选项、丰富人员或公司信息,或将重复查询转化为可监控的工作流时,使用此功能。
这是仓库研究栈的操作封装。它并非 `deep-research``exa-search``market-research` 的替代品;而是指示何时以及如何将它们结合使用。
## 技能栈
在相关场景下,将这些 ECC 原生技能纳入工作流:
* `exa-search`:用于快速发现当前网络信息
* `deep-research`:用于多源综合并附带引用
* `market-research`:当最终结果应为建议或排序决策时使用
* `lead-intelligence`:当任务针对人员/公司而非通用研究时使用
* `knowledge-ops`:当结果需持久存储于后续上下文时使用
## 使用时机
* 用户提及“研究”、“查找”、“比较”、“我应该联系谁”或“最新情况”
* 答案依赖于当前的公开信息
* 用户已提供证据,并希望将其纳入新的建议中
* 任务可能具有重复性,应转为监控而非一次性查询
## 防护措施
* 当新鲜搜索成本低廉时,不要依赖过时记忆回答当前问题
* 区分:
* 有来源的事实
* 用户提供的证据
* 推断
* 建议
* 如果答案已存在于本地代码或文档中,不要启动繁重的研究流程
## 工作流
### 1. 从用户已提供的信息出发
将任何提供的材料规范化为:
* 已有证据的事实
* 需要验证的内容
* 未解决的问题
如果用户已构建部分模型,不要从零开始重新分析。
### 2. 对请求进行分类
在搜索前选择正确的路径:
* 快速事实性回答
* 比较或决策备忘录
* 线索/丰富化处理
* 重复监控候选
### 3. 优先采用最轻量的有效证据路径
* 使用 `exa-search` 进行快速发现
* 当需要综合或多源信息时,升级至 `deep-research`
* 当结果需以建议形式呈现时,使用 `market-research`
* 当实际需求是目标排序或温暖路径发现时,转交至 `lead-intelligence`
### 4. 报告时明确证据边界
对于重要声明,说明其属于:
* 有来源的事实
* 用户提供的上下文
* 推断
* 建议
对时效性敏感的答案应包含具体日期。
### 5. 决定任务是否应保持手动
如果用户可能反复提出相同的研究问题,请明确说明,并建议采用监控或工作流层,而非永远重复相同的手动搜索。
## 输出格式
```text
问题类型
- 事实性 / 比较性 / 补充性 / 监控性
证据
- 有来源的事实
- 用户提供的上下文
推论
- 从证据中得出的结论
建议
- 答案或下一步行动
- 是否应将其设为监控项
```
## 常见陷阱
* 不要将推断混入有来源的事实而不加标注
* 不要忽略用户提供的证据
* 不要对本地仓库上下文能回答的问题使用繁重的研究路径
* 不要给出不含日期的时效性敏感答案
## 验证
* 重要声明需标注证据类型
* 时效性敏感的输出需包含日期
* 最终建议需与实际使用的研究模式匹配

View File

@@ -0,0 +1,109 @@
---
name: terminal-ops
description: 基于证据优先的仓库执行工作流适用于ECC。当用户需要运行命令、检查仓库、调试CI失败或推送带有精确执行和验证证明的窄修复时使用。
origin: ECC
---
# 终端操作
当用户需要真实的仓库执行时使用此技能:运行命令、检查 git 状态、调试 CI 或构建、进行窄幅修复,并准确报告更改和验证的内容。
此技能有意比通用编码指导更窄。它是一种以证据为先的终端执行操作工作流。
## 技能栈
在相关时,将这些 ECC 原生技能引入工作流:
* `verification-loop` 用于更改后的精确验证步骤
* `tdd-workflow` 当正确的修复需要回归覆盖时
* `security-review` 当涉及密钥、认证或外部输入时
* `github-ops` 当任务依赖于 CI 运行、PR 状态或发布状态时
* `knowledge-ops` 当需要将验证结果捕获到持久的项目上下文中时
## 使用时机
* 用户说"修复"、"调试"、"运行这个"、"检查仓库"或"推送它"
* 任务依赖于命令输出、git 状态、测试结果或已验证的本地修复
* 答案必须区分:本地已更改、本地已验证、已提交和已推送
## 安全护栏
* 先检查再编辑
* 如果用户仅要求审计/审查,则保持只读
* 优先使用仓库本地的脚本和辅助工具,而非即兴的临时封装
* 在验证命令重新运行之前,不得声称已修复
* 除非分支确实已推送到上游,否则不得声称已推送
## 工作流
### 1. 确定工作表面
明确:
* 确切的仓库路径
* 分支
* 本地差异状态
* 请求的模式:
* 检查
* 修复
* 验证
* 推送
### 2. 首先读取失败表面
在更改任何内容之前:
* 检查错误
* 检查文件或测试
* 检查 git 状态
* 在盲目重新读取之前,使用任何已提供的日志或上下文
### 3. 保持修复的窄幅
一次解决一个主要失败:
* 首先使用最小的有用验证命令
* 仅在本地失败解决后,才升级到更大的构建/测试流程
* 如果某个命令持续以相同特征失败,停止广泛重试并缩小范围
### 4. 报告确切的执行状态
使用确切的状态词:
* 已检查
* 本地已更改
* 本地已验证
* 已提交
* 已推送
* 已阻塞
## 输出格式
```text
表面
- 仓库
- 分支
- 请求模式
证据
- 失败的命令 / 差异 / 测试
操作
- 变更内容
状态
- 已检查 / 本地已更改 / 本地已验证 / 已提交 / 已推送 / 已阻止
```
## 陷阱
* 当可以读取实时仓库状态时,不要依赖过时的记忆
* 不要将窄幅修复扩大为仓库范围的变动
* 不要使用破坏性的 git 命令
* 不要忽略不相关的本地工作
## 验证
* 响应中需指明验证命令或测试
* 与 git 相关的工作需指明仓库路径和分支
* 任何推送声明需包含目标分支和确切结果

View File

@@ -0,0 +1,125 @@
---
name: workspace-surface-audit
description: 审计活跃仓库、MCP服务器、插件、连接器、环境表面和工具设置然后推荐最高价值的ECC原生技能、钩子、代理和操作员工作流。当用户希望帮助设置Claude Code或了解其环境中实际可用的功能时使用。
origin: ECC
---
# 工作区表面审计
只读审计技能,用于回答"这个工作区和机器当前实际上能做什么,以及我们下一步应该添加或启用什么?"
这是 ECC 原生对设置审计插件的回答。除非用户明确要求后续实现,否则不会修改文件。
## 何时使用
* 用户说"设置 Claude Code"、"推荐自动化"、"我应该使用什么插件或 MCP"或"我缺少什么?"
* 在安装更多技能、钩子或连接器之前审计机器或仓库
* 比较官方市场插件与 ECC 原生覆盖范围
* 审查 `.env``.mcp.json`、插件设置或连接的应用表面,以发现缺失的工作流层
* 决定某项能力应该是技能、钩子、代理、MCP 还是外部连接器
## 不可协商的规则
* 绝不打印秘密值。仅显示提供商名称、能力名称、文件路径以及密钥或配置是否存在。
* 当 ECC 能够合理拥有该表面时,优先选择 ECC 原生工作流,而非通用的"安装另一个插件"建议。
* 将外部插件视为基准和灵感,而非权威的产品边界。
* 清晰区分三件事:
* 当前已可用的
* 可用但 ECC 封装不佳的
* 不可用且需要新集成的
## 审计输入
仅检查回答该问题所需的文件和设置:
1. 仓库表面
* `package.json`、锁定文件、语言标记、框架配置、`README.md`
* `.mcp.json``.lsp.json``.claude/settings*.json``.codex/*`
* `AGENTS.md``CLAUDE.md`、安装清单、钩子配置
2. 环境表面
* 活动仓库及明显相邻的 ECC 工作区中的 `.env*` 文件
* 仅显示密钥名称,如 `STRIPE_API_KEY``TWILIO_AUTH_TOKEN``FAL_KEY`
3. 连接工具表面
* 已安装的插件、已启用的连接器、MCP 服务器、LSP 和应用集成
4. ECC 表面
* 已覆盖需求的现有技能、命令、钩子、代理和安装模块
## 审计流程
### 阶段 1盘点现有内容
生成简洁的清单:
* 活动的工具链目标
* 已安装的插件和连接的应用
* 已配置的 MCP 服务器
* 已配置的 LSP 服务器
* 由密钥名称暗示的基于环境的服务
* 与工作区相关的现有 ECC 技能
如果某个表面仅以原始形式存在,请指出。例如:
* "Stripe 可通过连接的应用使用,但 ECC 缺少计费操作技能"
* "Google Drive 已连接,但 ECC 没有原生的 Google Workspace 操作工作流"
### 阶段 2与官方和已安装表面进行基准比较
将工作区与以下内容进行比较:
* 与设置、审查、文档、设计或工作流质量重叠的官方 Claude 插件
* Claude 或 Codex 中本地安装的插件
* 用户当前连接的应用表面
不要仅列出名称。对于每个比较,回答:
1. 它们实际做什么
2. ECC 是否已具备同等能力
3. ECC 是否仅有原始形式
4. ECC 是否完全缺失该工作流
### 阶段 3将差距转化为 ECC 决策
对于每个实际差距,推荐正确的 ECC 原生形态:
| 差距类型 | 首选 ECC 形态 |
|----------|---------------------|
| 可重复的操作工作流 | 技能 |
| 自动执行或副作用 | 钩子 |
| 专门的委派角色 | 代理 |
| 外部工具桥接 | MCP 服务器或连接器 |
| 安装/引导指南 | 设置或审计技能 |
当需求是操作性的而非基础设施性的时,默认使用面向用户的技能来编排现有工具。
## 输出格式
按此顺序返回五个部分:
1. **当前表面**
* 当前已可用的内容
2. **同等能力**
* ECC 已匹配或超越基准的地方
3. **仅有原始形式的差距**
* 工具存在,但 ECC 缺少简洁的操作技能
4. **缺失的集成**
* 尚不可用的能力
5. **前 3-5 个下一步行动**
* 具体的 ECC 原生新增内容,按影响排序
## 推荐规则
* 每个类别最多推荐 1-2 个最高价值的想法。
* 优先选择具有明显用户意图和商业价值的技能:
* 设置审计
* 计费/客户运营
* 问题/项目运营
* Google Workspace 运营
* 部署/运营控制
* 如果连接器是公司特定的,仅在其确实可用或对用户工作流明显有用时才推荐。
* 如果 ECC 已有强大的原始形式,建议封装技能而非发明全新的子系统。
## 良好结果
* 用户可以立即看到已连接的内容、缺失的内容以及 ECC 下一步应拥有的内容。
* 推荐足够具体,无需再次发现即可在仓库中实现。
* 最终答案围绕工作流而非 API 品牌组织。