nardovibecoding/simply-skills-curation
GitHub: nardovibecoding/simply-skills-curation
为 Claude Code 提供经过生产验证的技能与钩子集合,通过多模型对抗审查、混合记忆检索和确定性自动化提升 AI 辅助开发的安全性和效率。
Stars: 0 | Forks: 0
```
claude plugins install nardovibecoding/simply-skills-curation
```
**经过生产测试的 Claude Code 技能 + 钩子 —— 在你需要的地方使用 LLM 推理,在不需要的地方使用确定性自动化。**
[](https://claude.com/claude-code)
[](#skills)
[](#hooks)
[](#)
[](LICENSE)
一个 Claude 只能为你提供一种视角。对于代码审查、架构决策或任何重要事项而言——单一观点是不够的。本项目引入了结构化辩论、对抗性审查以及自动化上下文管理。
## 技能
技能通过结构化提示词调用 LLM。它们在匹配到触发短语时自动激活——无需斜杠命令。
| 类别 | 技能 | 功能 |
|----------|-------|-------------|
| **安全** | [red-alert](#red-alert--adversarial-self-review) | 对抗性红队 —— 查找安全漏洞、逻辑错误、资源浪费 |
| **维护** | [md-cleanup](#md-cleanup--unified-context-budget-auditor) | 统一上下文预算审计器 —— CLAUDE.md、hookify 规则、记忆文件、技能 |
| **维护** | skill-profile | 配置文件切换:仅加载与当前任务相关的技能 |
| **工作流** | [research-council](#research-council--6-model-debate-at-0cost) | 6 个免费 LLM 进行辩论、交叉审查并得出共识 —— $0/决策 |
| **发现** | skill-extractor | 在安装社区技能之前对其进行评估 —— 发现重叠和冗余 |
| **发现** | tldr-eli5 | 自适应摘要 + 面向非技术利益相关者的 ELI5 模式 |
| **记忆** | [recall](#recall--hybrid-memory-search) | 跨所有记忆文件的混合向量 + BM25 + 图谱搜索 —— `/recall
` |
## 钩子
钩子是在 Claude Code `PostToolUse` 事件上触发的纯 Python 脚本 —— 无需 LLM 调用,无延迟,零成本。
| 钩子 | 触发条件 | 功能 |
|------|---------|-------------|
| **vps-sync** | `git push` | 在远程服务器上自动通过 SSH 拉取 —— 保持 VPS 与每次推送同步 |
| **dependency-grep** | `mv` / `rm` | 在你继续操作之前,grep 搜索对已移动或删除文件的引用 |
| **pip-install** | `requirements.txt` 编辑 | 在远程服务器上自动运行 `pip install -r requirements.txt` |
| **bot-restart** | persona JSON 编辑 | 自动 `pkill` 受影响的 bot 进程 —— `start_all.sh` 会在 10 秒内重启它 |
| **memory-index** | 新 `memory/*.md` (Write) | 检查新的记忆文件是否已列在 `MEMORY.md` 索引中 |
| **memory-inject** | UserPromptSubmit + PreToolUse | 对每个新话题进行 BM25 搜索 —— 自动将相关的记忆片段注入上下文 |
| **memory-conflict** | Read + Write/Edit | 针对跨会话编辑的记忆文件,实现 Git 风格的冲突检测 + 三方自动合并 |
| **memory-access** | PostToolUse (Read) | 跟踪每个记忆文件的访问频率 + 重要性评分 |
| **memory-commit** | Stop (会话结束) | Rsync 将更改的记忆文件同步到 git 仓库并自动提交 |
| **memory-inject-reset** | SessionStart | 重置注入状态,以便每次会话都进行全新的记忆注入 |
## 研究委员会 —— 6 模型辩论,$0/决策
这是一大亮点。LLM 默认具有迎合心理 —— 它们会同意提问者的观点。研究委员会通过让六个模型相互辩论来解决这个问题。
**工作原理:**
```
/debate Should we migrate from REST to GraphQL for our internal API?
```
| 轮次 | 发生了什么 |
|-------|-------------|
| **第 1 轮** | 六个模型并行作答(约 10 秒) |
| **第 2 轮** | 每个模型阅读其他所有模型的答案,找出最强和最弱的论点,完善自己的立场 |
| **第 3 轮** | 最终立场,明确包含“我改变了主意,因为……”或“我坚持原观点,因为……” |
| **综合** | 一个评判模型生成一份执行备忘录:共识、未解决的分歧、行动项、逆向见解 |
**快速模式**(3 个模型,2 轮)适用于轻量级问题。**完整委员会**(6 个模型,3 轮)适用于架构决策、供应商选择,或任何值得花费 3 分钟计算时间的高风险事项。
**成本:** $0。所有六个模型均为免费层级的 API 调用。这场如果用会议计算将花费 $40/小时的委员会现在成本为零。
## 红色警报 —— 对抗性自我审查
标准的代码审查往往过于和气。红色警报使用“付费找缺陷”提示词 —— 审查者因发现真正的问题而获得明确奖励,而不是因为提供支持而受奖。
**三种模式:**
- **按需** —— 指向任何文件、提交或功能描述
- **变更后** —— 在大型差异(>50 行更改)后自动触发
- **定时** —— 针对 8 点清单的全面系统红队评估:安全性、可靠性、成本、数据丢失、过时状态、死代码、依赖项、监控盲点
**多模型审查:** 运行第二个模型作为外部批评者 —— 不同的训练数据会发现不同的盲点。
## MD 清理 —— 统一上下文预算审计器
用一条五阶段命令取代三个独立的维护任务:
```
md cleanup
```
| 阶段 | 审计内容 |
|-------|---------------|
| 1 | **CLAUDE.md** —— 将每条规则分类为 INTERNALIZED (已内化) / REINFORCED (已强化) / CUSTOM (自定义) / HISTORICAL (历史性) / REDUNDANT (冗余) |
| 2 | **Hookify 规则** —— 针对 CLAUDE.md 和反馈记忆进行去重 |
| 3 | **记忆文件** —— 检查行数、时效性、重复主题、晋升候选 |
| 4 | **技能清单** —— 检测重复触发器、损坏的脚本、缺失的依赖、上游更新 |
| 5 | **预算表** —— 跨所有上下文来源的 token 计数与阈值 |
一条命令。一份报告。建议在你批准前不会执行。
## Recall —— 混合记忆搜索
`/recall ` 使用融合在一起的四个信号搜索你所有的记忆文件:
```
/recall how did we fix the rate limiter?
/recall #trading
```
**工作原理:**
| 信号 | 方法 | 优势 |
|--------|--------|---------|
| **向量** | all-MiniLM-L6-v2 (本地,无需 API 密钥) | 语义相似度 —— 查找概念上相关的文件 |
| **BM25** | 带字段加权的 TF-IDF (name 3x, description 2x, body 1x) | 关键词精度 —— 精确的术语匹配 |
| **时效性** | 距最后修改日期的指数衰减 | 较新的文件排名更高 |
| **图谱** | 可选 —— 遍历知识图谱中的连接节点 | 扩展到相关主题 |
所有四个信号均使用 **倒数排名融合 (Reciprocal Rank Fusion, k=60)** 进行合并 —— 这是一种无需参数且优于加权平均的融合方法。
**标签搜索:** 使用 `#` 前缀按标签进行过滤,而非搜索:
```
/recall #hooks
/recall #security
```
标签由 `build-index.mjs` 构建,该脚本会扫描所有记忆文件、钩子和技能,并根据内容关键词对它们进行分类。
**嵌入缓存:** 向量缓存在 `~/.claude/.memory_embeddings_cache.json` 中。仅重新嵌入新增或修改的文件。首次运行会下载模型(约 22MB)。
**安装:**
```
cd ~/.claude/skills/recall
npm install
node build-index.mjs # build tag index
node search.mjs "test query"
```
**为什么它比 grep 更好:**
标准的 `grep` 会查找包含你所输入确切词汇的文件。Recall 则会查找关于你脑海中*概念*的文件 —— 即使你不记得写笔记时使用的确切术语。
## 项目起源
每一项都提取自真实的实际生产故障:
| 项目 | 真实问题 |
|------|-------------|
| **red-alert** | 代码审查总是漏掉安全漏洞。需要一个付费持反对意见的审查者。 |
| **research-council** | LLM 总是顺从提问的框架。因此构建了对抗性的交叉审查机制。 |
| **md-cleanup** | 三个独立的维护技能总是以错误的顺序运行。合并为一次五阶段审计。 |
| **skill-extractor** | 安装了一个与现有工具重叠 80% 的社区技能。因此构建了一个评估器来先进行检查。 |
| **skill-profile** | 加载 30 多个技能时达到了 15K YAML 技能限制。需要针对每个任务上下文进行配置切换。 |
| **tldr-eli5** | 需要针对不同受众和语言采用不同的压缩比。 |
| **vps-sync** | 在笔记本电脑上编辑代码后忘记推送,服务器运行旧代码长达 3 天。现在钩子在每次推送时触发。 |
| **dependency-grep** | 重命名配置文件后,静默破坏了 6 个下游引用。钩子在你继续操作前会进行 grep 检查。 |
| **pip-install** | 添加了依赖却忘记在服务器上安装,导致服务在凌晨 2 点崩溃。现在钩子会自动安装。 |
| **bot-restart** | 编辑了 persona 配置后,不得不手动 SSH 并重启。现在钩子会在 10 秒内搞定。 |
| **memory-index** | 创建了记忆文件却忘记索引,两周后找不到了。现在钩子会立即捕获。 |
| **recall** | 使用 grep 搜索记忆时结果为零,因为笔记使用了不同的措辞。于是构建了语义搜索。 |
| **memory-inject** | 总是忘记之前会话的上下文。现在钩子在话题切换时会自动加载最相关的 5 个文件。 |
| **memory-conflict** | 两个 Claude 会话同时编辑同一个记忆文件并互相覆盖。于是构建了三方合并机制。 |
| **memory-commit** | 记忆编辑仅停留在本地,从未备份。现在 Stop 钩子会在每次会话结束时同步到 git。 |
## 架构:技能与钩子
```
┌─────────────────────────────────────────────────────────┐
│ Claude Code CLI │
├────────────────────────┬────────────────────────────────┤
│ SKILLS │ HOOKS │
│ (LLM reasoning) │ (deterministic automation) │
│ │ │
│ Trigger phrase → │ Tool event fires → │
│ Structured prompt → │ Python check() → │
│ LLM generates output │ Python action() │
│ │ (no LLM, no latency) │
│ Use for: │ Use for: │
│ debate, critique, │ sync, grep, install, │
│ summarize, evaluate │ restart, validate │
└────────────────────────┴────────────────────────────────┘
```
技能和钩子是相互独立的 —— 只需安装你需要的部分。
## 安装
一条命令。耗时 30 秒。
```
curl -fsSL https://raw.githubusercontent.com/nardovibecoding/simply-skills-curation/main/install.sh | bash
```
克隆仓库,在 `~/.claude/settings.json` 中注册所有 13 个钩子 + 6 个技能。重启 Claude Code。
手动安装
### 技能 —— 作为插件
```
claude plugins install nardovibecoding/simply-skills-curation
```
### 技能 —— 手动(逐个安装)
```
git clone https://github.com/nardovibecoding/simply-skills-curation.git
cp -r simply-skills-curation/skills/workflow/research-council ~/.claude/skills/
```
### 钩子
```
# 共享库 (所有 hooks 都需要)
cp simply-skills-curation/hooks/shared/hook_base.py ~/.claude/hooks/
cp simply-skills-curation/hooks/shared/vps_config.py ~/.claude/hooks/
# 复制您需要的任何 hooks
cp simply-skills-curation/hooks/vps-sync/auto_vps_sync.py ~/.claude/hooks/
cp simply-skills-curation/hooks/dependency-grep/auto_dependency_grep.py ~/.claude/hooks/
cp simply-skills-curation/hooks/pip-install/auto_pip_install.py ~/.claude/hooks/
cp simply-skills-curation/hooks/bot-restart/auto_bot_restart.py ~/.claude/hooks/
cp simply-skills-curation/hooks/memory-index/auto_memory_index.py ~/.claude/hooks/
```
在 `~/.claude/settings.json` 的 `hooks.PostToolUse` 下注册钩子。每个钩子的目录都包含一个带有确切注册代码块的 README。
**前置条件:** 已安装 [Claude Code](https://claude.com/claude-code) CLI。
## 项目结构
```
simply-skills-curation/
├── .claude-plugin/
│ └── plugin.json # Plugin manifest
├── skills/
│ ├── security/
│ │ └── red-alert/ # Adversarial red team (SKILL.md + prompt)
│ ├── maintenance/
│ │ ├── md-cleanup/ # 5-phase context budget auditor
│ │ └── skill-profile/ # Profile switching (all/coding/outreach/minimal)
│ ├── workflow/
│ │ └── research-council/ # 6-model debate at $0/decision
│ ├── discovery/
│ │ ├── skill-extractor/ # Community skill evaluator
│ │ └── tldr-eli5/ # Adaptive summarization + ELI5
│ └── memory/
│ └── recall/ # Hybrid search (Vector + BM25 + Graph + RRF)
│ ├── SKILL.md
│ ├── search.mjs # Main search script
│ ├── build-index.mjs # Tag index builder
│ └── package.json
├── hooks/
│ ├── shared/
│ │ ├── hook_base.py # run_hook(), check(), action() pattern
│ │ └── vps_config.py # SSH config (reads from .env)
│ ├── vps-sync/
│ ├── dependency-grep/
│ ├── pip-install/
│ ├── bot-restart/
│ ├── memory-index/ # Warn when new memory file not in MEMORY.md
│ ├── memory-inject/ # Auto-inject relevant memories on topic shift
│ ├── memory-conflict/ # 3-way merge conflict guard for memory files
│ ├── memory-access/ # Track access frequency + importance scores
│ └── memory-commit/ # Auto-commit memory changes at session end
├── README.md
└── LICENSE
```
## 贡献
每个技能都是独立的:一个 `SKILL.md` 定义了触发器、允许的工具和行为 —— 该文件就是完整的技能。钩子遵循来自 `hook_base.py` 的双函数模式:`check()` 决定是否触发,`action()` 执行实际工作。
欢迎提交 Issue 或 PR。如果你从实际的生产问题中提取出了技能,它就属于这里。
## Star 历史
[](https://star-history.com/#nardovibecoding/simply-skills-curation&Date)
## 许可证
[AGPL-3.0](LICENSE)标签:AGPL-3.0, AI 代理, AI 编程助手, AI 辅助开发, Claude Code 插件, JSON 请求, LLM 自动化, MITM代理, VPS 同步, 上下文预算管理, 代码安全, 代码审查, 内存分配, 多平台支持, 多模型辩论, 安全审查, 对抗性审查, 开发效率, 开源, 技能管理, 插件, 架构决策, 漏洞枚举, 确定性自动化, 网络可观测性, 网络安全研究, 逆向工具, 逻辑漏洞, 钩子