Semantic-Linter 是一个面向 LLM 指令文件的插件与 CLI,用来收窄语义边界过宽的表达。它主要用于 SKILL.md、AGENTS.md、CLAUDE.md、prompt 文档、command 文档等指令资产,帮助减少因为措辞过宽带来的幻觉和范围漂移。
Semantic-Linter 现在使用分层设计,不再是旧的 pointer-only 方案:
SessionStart注入一条紧凑的STL:规则指针,指向当前生效的semantic-rules.mdSubagentStart把同样的规则指针传播给子代理UserPromptSubmit可以在提示词进入模型前提醒宽边界表达PreToolUse会在Write和Edit修改指令文件前给出预警PostToolUse会在写入后再次检查结果,并记录升级状态bin/scan.js仍然保留为显式 CLI 扫描入口,可扫描单文件、目录或当前工作区
默认运行模式是 guarded:
off:关闭 semantic-linterpointer:只保留轻量规则指针guarded:规则指针 + 写入期检查strict:规则指针 + 写入期检查 + prompt 扫描
默认使用 project-first 规则解析策略:
- 从当前编辑文件或工作区开始,向上查找最近的
semantic-rules.md - 如果项目内没有,则回退到插件自带的
semantic-rules.md
你也可以通过 .semantic-linter.json 强制使用 plugin-only。
claude plugin marketplace add SummerSec/semantic-linter
claude plugin install semantic-linter@summersec-semantic-linter
/reload-pluginscodex plugin marketplace add SummerSec/semantic-linter
codex plugin add semantic-linter@semantic-linterCodex 不直接消费 Claude 的 hook manifest。它的项目级接入方式是把受管规则块写入 AGENTS.md。
如果你想把项目本地规则注入到当前仓库,可以运行:
node /absolute/path/to/semantic-linter/scripts/build-rules.js --existing "$(pwd)"这会生成:
semantic-rules.mdAGENTS.md和或CLAUDE.md中的受管规则区块
如果两个文件都不存在,脚本会根据宿主环境创建默认目标:
- Codex 或 auto:
AGENTS.md - Claude:
CLAUDE.md
常用命令:
npm run build-rules
npm run build-rules:check
npm run build-lexicon
npm run build-lexicon:check
npm run scan -- <file>
npm test可选配置文件为 .semantic-linter.json。
支持的字段:
{
"ignoreTrapIds": ["T01"],
"ignorePathSubstrings": ["fixtures/generated/"],
"ignoreStructuralTypes": ["open_ended_verb"],
"defaultMode": "guarded",
"ruleSource": "project-first",
"enablePromptScan": false,
"maxFindingsPerHook": 3
}说明:
defaultMode支持off、pointer、guarded、strictruleSource支持project-first和plugin-onlyenablePromptScan会在guarded模式下启用UserPromptSubmitstrict会始终开启 prompt 扫描
Semantic-Linter 会按路径约定扫描指令类文件:
- 文件名:
SKILL.md、AGENTS.md、CLAUDE.md - 后缀:
*.prompt.md、*_definitions.md、*_examples.md - 目录:
skills/、agents/、commands/、rules/、prompts/
核心运行时文件:
hooks/session-start.jshooks/subagent-start.jshooks/user-prompt-submit.jshooks/pre-tool-use.jshooks/post-tool-use.jshooks/config.jshooks/runtime.jshooks/rules-resolver.js
核心库文件:
lib/content-scanner.jslib/structural-analyzer.jslib/report-formatter.jslib/state-manager.jslib/config-loader.js
npm testnpm test 会依次运行:
build-lexicon:checkbuild-rules:checktests/test-scanner.jstests/test-new-features.js
测试覆盖扫描器行为、生成器幂等性、manifest 一致性,以及基于 stdin 的 hook 入口行为。