plugins/tools/novelist/skills/novelist-lint/SKILL.md
校验 novelist 插件目录结构/文件名/文件夹组织是否符合插件规范 (plugin.json 合法 / commands-agents-skills 在根 / SKILL.md 大写 / kebab 命名 / 无产物泄漏 / plugin.json 路径真实 / frontmatter name 对齐)。novelist 插件改动后、加新 skill/agent 后、发布前、或怀疑结构不合规时调用。调用即跑 scripts/lint.py 扫 7 规则违规, 按 fix-hints 移/改/删到合规
npx skillsauth add lazygophers/ccplugin novelist-lintInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
校验 plugins/tools/novelist/ 目录结构、文件名、文件夹组织是否符合 docs/plugin-development.md 规范。不合规的按修复指引移动/重命名/删除。
.DS_Store、测试产物、缓存目录)泄漏进插件目录| 规则 | 检查 | 严重级 |
|---|---|---|
| R1 | .claude-plugin/plugin.json 存在 + 合法 JSON + name 匹配 ^[a-z0-9-]+$ | error |
| R2 | commands//agents//skills/ 在插件根,不在 .claude-plugin/ 内 | error |
| R3 | skills/*/ 目录名 kebab-case + 含大写 SKILL.md | error |
| R4 | agents/*.md 文件名 kebab-case | error |
| R5 | 无产物泄漏 (.DS_Store/__pycache__/*.pyc/.darwin-results.tsv/*.bak) | warning |
| R6 | plugin.json 中 agents/skills/commands/hooks 路径真实存在 | error |
| R7 | skill SKILL.md frontmatter name == 目录名 | warning |
规则定义 + 违规/合规示例 + 修复命令见 references/lint-rules.md。
# 校验 novelist 插件 (默认上溯找 .claude-plugin/ 定位插件根)
python3 plugins/tools/novelist/skills/novelist-lint/scripts/lint.py --plugin-dir plugins/tools/novelist --fix-hints
# 也可对任意插件目录跑
python3 <lint.py 路径> --plugin-dir <插件根>
输出:
0 全 PASS / 1 有 error / 2 仅 warning / 3 找不到插件根lint.py --fix-hints 看违规清单rm 与 R3/R4/R2/R6 的 git mv/mv 会删/移文件, 执行前先把该项 (文件路径 + 动作) 报用户确认, 得到明确同意再动手。只读改文本内容的 R7 无需停。rm <file> 或加 .gitignoregit mv 改名 (注意同步 plugin.json 引用)mv .claude-plugin/<sub> ./<sub>git mv 文件对齐name| 触发条件 | 一线修复 | 仍失败兜底 |
|---|---|---|
| exit 3 找不到插件根 | 确认 --plugin-dir 指向含 .claude-plugin/ 的目录 | 手动定位 .claude-plugin/plugin.json 所在层作为插件根传入 |
| lint.py 报 JSONDecodeError (R1) | plugin.json 语法坏 → python3 -m json.tool plugin.json 定位坏行修复 | 从 git 历史 git show HEAD:<path> 取上一版对照重写 |
| git mv 改名后 lint 仍报 R6 | plugin.json 仍引用旧路径 → 同步改 plugin.json 对应字段 | 全局 grep -rn '<旧文件名>' plugins/tools/novelist 找残留引用逐个改 |
| R7 改 name 后 check.py 仍报 name 不齐 | check.py 查的是 marketplace 层对齐, 非本 skill 范围 → 转 check.py 修复流程 | 两工具并用, 以 check.py 的 marketplace 校验为准 |
| lint.py 自身崩溃 (非违规报错) | 确认 python3 可用 + lint.py 未被改坏 | git checkout plugins/tools/novelist/skills/novelist-lint/scripts/lint.py 复原脚本 |
scripts/check.py (后者覆盖 plugin.json 格式/hook 测试/name alignment, 但有 skills.bak bug; 两者并用)--fix-hints 只打印建议不自动执行 (避免误删)| 维度 | novelist-lint | scripts/check.py | |---|---|---| | plugin.json 格式 | R1 (name 合规) | ✓ (全字段) | | 目录结构 | R2/R3/R4 (skills 目录名/SKILL.md/agent 命名) | 有 bug (检查 skills.bak 非 skills) | | 产物泄漏 | R5 (独有) | ✗ | | 路径存在 | R6 | 部分 | | frontmatter 对齐 | R7 (独有) | ✗ | | hooks 测试 | ✗ | ✓ | | name alignment (跨 marketplace) | ✗ | ✓ |
两者并用: check.py 查配置/hook/marketplace 对齐, 本 lint 查结构/命名/产物。
| ✗ 不要 | 为什么 | ✓ 替代 |
|---|---|---|
| 见 R5 违规直接 rm -rf | --fix-hints 只打印建议; 误删无法回滚 | 先报用户确认单个文件再 rm, 优先加 .gitignore |
| git mv 改名后不同步 plugin.json | R6 立刻挂, 且运行时插件加载失败 | 改名与 plugin.json 引用同一步双写 |
| 把 lint.py 当内容质量审查 | 只校验结构/命名/产物, 不看 SKILL.md 写得好不好 | 内容质量走人工 review / darwin-skill |
| 因 check.py 报错就改 lint 的 R 规则 | 两工具范围不同 (check 管 marketplace/hook) | 按各自分工表定位到对的工具 |
| 对非 novelist 插件默认套用本 SKILL 语境 | 触发语境限定 novelist (lint.py 本身可跑任意插件) | 跑任意插件只用 lint.py CLI, 不套本 skill 修复流程 |
| exit 3 时瞎猜插件根路径反复试 | 浪费轮次且可能改错目录 | 直接定位 .claude-plugin/plugin.json 所在层 |
tools
UI/UX 与布局设计——做界面布局/结构/导航/组件/交互的设计决策。触发:做UI/UX/布局/排版/导航/组件/交互/栅格/响应式/图表选型/字体配对。按媒介路由 HTML/Web、原生 App(iOS/Android/桌面)、CLI、TUI。需后端动态系统不适用;配色/主题/色板走姊妹 skill design-color。
tools
主题与配色设计——做颜色搭配/调色板/主题/品牌色阶/暗模式的设计决策。触发:选配色/调色/主题/色板/品牌色/暗模式/对比度/色盲/UI风格。按媒介路由 HTML/Web(CSS变量)、原生App(平台token)、CLI(ANSI)、TUI(真彩/256/16降级)。保证可访问性(对比度/色盲安全)。需后端动态系统不适用;UI/UX 布局/组件/交互走姊妹 skill design-uiux。
tools
跨任意组件(plugin/skill/agent/command)的验证驱动优化循环纪律 skill。当用户要优化某个已有组件却无明确方向、或要防止改了反而更差(自评乐观偏差 / 多维同改归因失效 / 为凑分加废话膨胀)、或要把一套通用「评分→单变量改→改后验证严格更好才留否则回滚→触顶停」的纪律套到任意组件上时使用。管优化过程本身的纪律(validation gate / ratchet / 独立验证 / 触顶停),不评单组件深度(交 skill-dev),不查插件接线(交 plugin-dev)。仅手动 /optimize-any 触发。
data-ai
两层规则记忆 (基于 .skein/spec)。planning 时 recall 召回相关规则、task finish 后 sediment 沉淀学习 + prune 自动精简过期/重复/断链规则。core 常驻硬规 + recall 按需召回, 经判定门自动写盘 (不逐次问用户)。产出 .skein/spec 下 core/recall 规则文件 + index。另支持空仓 bootstrap 播种规则基线、记忆大面积失效 (大重构/换栈) 时 reconstruct 可逆归档后按项目类型分型重建、maintain 手动体检 (超预算/stale/断链/重复/废弃, --apply 自动修复)、auto-fix (Stop hook 写 .pending-fix 标记 → main 派 skein-specer bg 跑 maintain --apply 全自动修, 断链只报告)。