بنقرة واحدة
codebase-module-generator
阅读任意目录,分析模块结构,生成防腐蚀规范 skill(不生成孤儿文档)
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
阅读任意目录,分析模块结构,生成防腐蚀规范 skill(不生成孤儿文档)
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Relay-v3 Lua 状态机接入指南。新增一个互联网房间业务(聊天、卡牌、白板、投票、协作…)时使用。描述后端元函数契约、前端闭环套路、Lua 脚本模板、state 转换规范、错误案例。识别"我要实现一个新业务""写一个 Lua 房间脚本""加一个 action 类型"时触发。
当用户提及 Relay/LAN/快照/action 流/net_p2p/net_engine 协议、讨论消息传输层(事件 vs 快照)、新建/重构 P2P 协议、排查"晚加入者错过事件""两端不同步""房间状态丢失""广播丢失"等问题时触发。包含 v1 action/事件驱动(已落地,遗留用法)与 v2 快照驱动(推荐新功能)。
Flutter 项目中"样式"相关工程的渐进式披露指南。当用户要做 UI 样式选型、视觉对齐复刻、画布/HTML mockup 与 Flutter 实现的双向对照、或在 Material 3 体系下选某一类样式(顶部 App Bar / Card / Button / NavigationBar / Modal 等)落地时触发。本 skill 是样式大类的总入口,所有方案的最终形态都登记在分类索引表里,按需加载对应方案文件。同时承载小豆子 FR 项目的 UI 设计原则与实战 bug 沉淀(border-emphasis 边框强调式、嵌套 sheet race condition、多风格 lottery 投票挑选、纯色按钮减负、左重右轻、装饰性 vs 功能性颜色决策)。
flutter的开发操作流程,在dart-flutter任何问题都需要优先加载这个SKILL
Flutter 通过 home_widget 把 1Hz 实时值(如倒计时)推到 Android 桌面 AppWidget 的端到端架构。当用户提到 home_widget 不同步、桌面小组件不刷新、appwidget 实时值、widget 显示卡死、widget 进程被杀场景、AppWidgetProvider 找不到时触发。
Comprehensive Rive animation platform skill covering scripting (Luau), runtime integration (React/Next.js), state machines, data binding, and the complete API. Use this skill when users need to create interactive animations with Rive, integrate Rive into React/Next.js applications, write Rive scripts (Node, Layout, Converter, PathEffect protocols), control animations via state machines, implement scroll-based animations, or work with Rive's drawing API (Path, Paint, Renderer). Triggers on: "rive", "rive animation", "rive script", "luau", "@rive-app/react-canvas", "state machine animation", "interactive animation", "scroll animation with rive". 本项目(xiaodouzi/fr,Flutter + rive ^0.14.5)特化:DataBind / ViewModel 双向数据绑定、lab demo 添加流程见 references/flutter-databind-0.14.md 与 references/flutter-project-workflow.md。
| name | codebase-module-generator |
| description | 阅读任意目录,分析模块结构,生成防腐蚀规范 skill(不生成孤儿文档) |
调用 /writing-skills 或 /skill-creator 获得 skill 规范。
给出 bad_example 和 good_eg 的正反案例。
只生成 .claude/skills/<name>/SKILL.md 文件,不生成孤儿 markdown 文档。
# 获取所有源文件
ls -File -Recurse *.js,*.ts,*.py,*.go
# 查看文件树(含行数)
Get-ChildItem -Recurse -File | Select-Object FullName, @{N='Lines';E={(Get-Content $_.FullName | Measure-Object -Line).Lines}}
分析维度:
| 维度 | 说明 |
|---|---|
| 文件数量 | 判断模块复杂度 |
| 文件大小 | 找出过于臃肿的文件(>300行标记) |
| 命名模式 | 识别模块划分(如 xxx.js + xxx-utils.js) |
对每个源文件提取:
// 导入分析
import ... from './xxx.js' // 相对导入
import ... from 'xxx' // 包导入
// 导出分析
export function xxx() // 命名导出
export default class xxx // 默认导出
export { xxx, yyy } // 多导出
生成依赖矩阵:
## 模块依赖矩阵
| 文件 | 导入模块 | 被导入次数 | 行数 | 状态 |
|------|---------|----------|------|------|
| index.js | commands, groups, utils | 0 | 50 | ✅ |
| groups.js | utils | 3 | 160 | ✅ |
| utils.js | (无) | 5 | 80 | ✅ |
| timeline.js | utils | 2 | 450 | ⚠️ 过大 |
# 超过 300 行的文件
foreach ($f in Get-ChildItem . -Recurse -Filter "*.js") {
$lines = (Get-Content $f | Measure-Object -Line).Lines
if ($lines -gt 300) {
Write-Host "⚠️ $($f.FullName): $lines 行"
}
}
// 如果 A→B→C→A,则存在循环依赖
function detectCycle(moduleGraph) {
// Tarjan 算法或简单 DFS
}
# 查找重复函数名
grep -rn "function openTabboard" . --include="*.js"
# 查找重复的常量
grep -rn "DEFAULT_COLORS\|const DEFAULT_" . --include="*.js"
// 一个文件处理多种职责
const hasStorage = content.includes('chrome.storage');
const hasUI = content.includes('document.createElement');
const hasNetwork = content.includes('fetch') || content.includes('XMLHttpRequest');
if (hasStorage && hasUI) {
warnings.push(`${file}: 同时处理存储和 UI,违反单一职责`);
}
只生成 skill 文件,不生成独立的 markdown 文档。
.claude/skills/<模块名>/
└── SKILL.md ← 唯一的输出物
---
name: <模块名>-standards
description: <触发描述>
---
# {项目名} {模块名} 模块规范
## 模块职责边界
| 模块 | 职责 | 禁止混入 |
|------|------|---------|
| index.js | 入口/组装 | 业务逻辑 |
## 反正面案例
### bad_example
[错误代码]
### good_eg
[正确代码]
开始分析目录
│
├─► 目录包含 background/ 或 service-worker/
│ └─► 生成 chrome-ext-background-standards skill
│
├─► 目录包含 popup/
│ └─► 生成 chrome-ext-popup-standards skill
│
├─► 目录是独立工具库(utils/)
│ └─► 生成 utils-module-standards skill
│
├─► 目录是前端组件(components/)
│ └─► 生成 frontend-component-standards skill
│
└─► 通用的多模块项目
└─► 生成通用的 module-standards skill
# ❌ 生成独立的 markdown 文档
生成 BACKGROUND_STANDARDS.md
生成 MODULE_STANDARDS.md
# 这些文档无人维护,最终成为孤儿
# ✅ 只生成 skill 文件
.claude/skills/chrome-ext-background-standards/
└── SKILL.md ← 唯一的输出物
# skill 文件本身就是规范,可被 /skill-discovery 发现和复用
// utils.js 中没有定义 normalizeUrl
// A.js 自己定义了一份
function normalizeUrl(url) { ... }
// B.js 也自己定义了一份(稍有不同)
function normalizeUrl(url) {
// 略有差异的逻辑
}
// utils.js 中唯一定义
export function normalizeUrl(url) { ... }
// A.js 和 B.js 都导入使用
import { normalizeUrl } from './utils.js';
// groups.js 直接调用 timeline.js 的函数
import { collectCurrentWindowTabs } from './timeline.js';
function addGroup(name) {
collectCurrentWindowTabs(); // ❌ 违反模块边界
}
// groups.js 通过消息与 timeline.js 通信
async function addGroup(name) {
// ✅ 通过 chrome.runtime.sendMessage 通信
await chrome.runtime.sendMessage({ action: 'collectCurrentWindowTabs' });
}
| 错误操作 | 实际后果 | 正确做法 |
|---|---|---|
| 生成独立的 markdown 文档 | 文档无人维护,最终成为孤儿 | 只生成 SKILL.md 文件 |
| 不读取文件就制定规范 | 规范与实际脱节,无法执行 | 先完整遍历目录 |
| 规范过于宽泛 | "要保持代码整洁" 无法执行 | 给出具体检测方式和阈值 |
| 只分析表面命名 | utils.js 可能不是真正的工具模块 | 分析实际 import/export 依赖 |
| 遗漏 package.json | 不知道外部依赖,无法判断是否应该引入 | 同时读取 package.json |
groups.js:130).claude/skills/<name>/SKILL.md 文件.md 文档文件