SuperAPI AI 工具集

obsidian-check

编程与开发

查看项目

更新于 10-15 09:52

技能介绍

用途

Obsidian Check 是一个技能(skill),用于在推送代码或准备提交 Obsidian 插件之前,对照 Obsidian 的全部自动化插件审查规则检查代码。自 2026 年 5 月起,审查在社区中心(community.obsidian.md)运行,会扫描每个 GitHub 发布版本;未通过的版本会在 24 小时内从目录搜索中移除。该技能按严重程度分组报告违规项,并给出确切的文件位置和修复建议。

主要能力

  • 验证项目结构:检查 manifest.json、package.json 和 src/ 是否存在,缺失则中止并提示。
  • 确保 eslint-plugin-obsidianmd 已安装:检查 package.json 的 devDependencies 中是否包含 eslint-plugin-obsidianmd 和 @eslint-community/eslint-plugin-eslint-comments;若未安装,则安装它们及 peer 依赖,并在缺少 ESLint 配置文件时创建 eslint.config.mjs。
  • 运行 TypeScript 检查:执行 npx tsc --noEmit,报告类型错误。
  • 运行 eslint-plugin-obsidianmd:执行 npx eslint src/ package.json,同时检查 package.json(推荐配置会在其上运行 depend/ban-dependencies,标记已弃用的包)。覆盖句式大小写、内联样式、命令规则、manifest 校验、TFile/TFolder 类型转换、禁用元素、弹出窗口兼容性(prefer-active-doc、prefer-window-timers、no-global-this)、API 可用性与 minAppVersion(no-unsupported-api)、未描述或被禁止的 eslint-disable 指令等。
  • 手动检查(扫描 src/ 下所有 .ts 文件):捕捉 eslint-plugin-obsidianmd 未覆盖的问题。必需(阻断)项包括:不必要的类型断言、Promise 是否被处理、async 方法内无 await、事件处理器中期望 void 却传入 Promise、对象字符串化、设置/模态框中使用 createEl('h1'/'h2'/'h3') 而非 Setting.setHeading()。可选(警告)项包括:未使用的导入和变量(由 TypeScript 检查捕获)、生命周期中的 console.log、createEl 辅助函数(document.createElement、document.createDocumentFragment、createEl('span', createEl('div' 等应替换为 createEl()、createFragment()、createSpan()、createDiv())、localStorage 和 sessionStorage 的使用。
  • 检查 manifest.json:id 仅含字母数字和连字符,不含 "obsidian",无 "plugin" 后缀;name 不含 "Obsidian",无 "Plugin" 后缀;description 不含 "Obsidian"、"This plugin",必须以 . ? ! ) 结尾,少于 250 字符;必需字段齐全(id、name、version、minAppVersion、description、author);version 与最新 git tag 匹配(如有);minAppVersion 覆盖代码调用的所有 API。
  • 检查 LICENSE:文件存在、版权年份为当前年份、版权持有者不是占位符。
  • 输出结构化报告:包含 TypeScript、ESLint、必需违规、可选警告、Manifest、License 各部分的 PASS/FAIL 状态,以及最终结果(READY TO PUSH / FIX REQUIRED ISSUES FIRST)和问题计数。
  • 提供修复选项:发现违规后询问用户选择全部自动修复、仅修复必需违规、或仅展示细节由用户手动修复。自动修复会遵循 obsidian-plugin-development 技能规则(将样式移至 CSS 类、修正句式大小写、移除不必要的断言、为未处理的 Promise 添加 void 等)。

使用方式

这是一个技能,不是斜杠命令。通过请求在提交前检查 Obsidian 插件,或使用其技能名称 obsidian-development:obsidian-check 来调用。它会扫描当前 Obsidian 插件项目中的所有自动化审查违规。

适用场景

  • 准备将 Obsidian 插件提交到社区目录之前。
  • 推送代码之前进行本地预检。
  • 需要按严重程度分组、带文件位置和修复建议的审查报告时。

限制

  • 部分规则(如 obsidianmd/prefer-create-el)在审查平台强制执行,但尚未包含在 npm 发布版本中,因此本地 ESLint 会遗漏,需依赖手动检查。
  • 手动检查需要阅读源代码,可能无法覆盖所有边缘情况。
  • 该技能依赖 eslint-plugin-obsidianmd 及其 peer 依赖的安装。
  • 关于收费、价格、平台支持范围等更多信息暂未提供。