plugins/tools/cortex/skills/cortex-config/SKILL.md
cortex 配置查看/编辑 — 无参展示当前 .cortex/config/*.yaml + ~/.cortex/config.json (含字段语义); 有 verb (get/set/unset) 写前 schema 校验; 会话结束自动校验配置合法性。Triggers on "查看 cortex 配置", "改 cortex 配置", "cortex config", "config edit", "configure cortex".
npx skillsauth add lazygophers/ccplugin cortex-configInstall 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.
[AUTO_MODE persistent: 禁询问, 自决执行, 禁中止]
cortex 配置统一查看 / 编辑入口。覆盖两个真相源:
~/.cortex/config.json — 用户级 (vault / lang / settings / install_path / timeout_default)<vault>/.cortex/config/*.yaml — vault 级 (digest / enrich / tags)写盘前强制 schema 校验, 不通过即拒。Stop hook 在会话结束时自动 validate, 防止自动化脚本调到不合法配置。
/cortex:config入参形态:
∅ (无参) → display: 读全部 config + schema 标注 + validate 报告
get <key> → 打印对应键 (支持点号路径, e.g. digest.stages.consolidate)
set <key> <value> → schema 校验 → atomic write → 回显新值
unset <key> → schema 校验 (是否可空) → 删除键 → atomic write
validate → 仅校验, 输出 {ok, errors, warnings} JSON
写盘前必跑 _validate_field(key, value)。失败 → 拒写 + stderr 列违规项 + exit 1。
display 模式标注 "default" vs "user-set"。
~/.cortex/config.json| key | type | default | range | 用途 / 哪些 skill 读 |
|---|---|---|---|---|
| vault | str (abs path) | — | exists | cortex 所有 skill (vault 根) |
| lang | str (ISO code) | zh-CN | ^[a-zA-Z]{2,3}(-[A-Z]{2})?$ | cortex-locale / digest / save |
| settings | str (abs path) | — | exists or empty | digest cron 注入 |
| install_path | str (abs path) | (install.sh 自动写) | exists | wrappers 找 plugin 根 |
| timeout_default | int | 600 | 60-7200 | cron wrappers |
<vault>/.cortex/config/digest.yaml| key | type | default | range / 约束 | 读取方 |
|---|---|---|---|---|
| stages.consolidate | bool | true | — | cortex-digest 阶段 5 |
| stages.enrich | bool | true | — | cortex-digest 阶段 6 |
| stages.verify | bool | true | — | cortex-digest 阶段 7 |
| incremental_max_age_days | int | 30 | 1-365 | cortex-digest state 失效阈值 |
| domain_aliases | map<str,str> | {} | key/value 非空 | 阶段 5 域名归一 |
<vault>/.cortex/config/enrich.yaml| key | type | default | range | 读取方 |
|---|---|---|---|---|
| mermaid_whitelist | list<str> | [flowchart, timeline, mindmap, sequenceDiagram, classDiagram] | 子集 of mermaid 已知 type | digest 阶段 6 |
| skip_paths | list<str> | [.obsidian, _meta, _templates, _assets, 归档, .cortex, .trash] | 相对 vault root | digest 阶段 6 |
<vault>/.cortex/config/tags.yaml| key | type | default | range | 读取方 |
|---|---|---|---|---|
| alias_synonyms | map<str,list<str>> | {} | value 列表非空 | digest 阶段 6 / lint |
| tag_naming | enum<str> | kebab-case | kebab-case | snake_case | lint |
完整 schema 见 references/schema.md。
| 规则 | 失败行为 | |---|---| | key 必须在 schema 已知集 | 拒写, exit 2 | | 类型不匹配 (str/int/bool/list/map) | 拒写, exit 1 | | 取值越界 (int range / enum) | 拒写, exit 1 | | path 字段不存在 | 拒写, exit 1 | | 必填字段写空字符串 | 拒写, exit 1 | | 互斥规则 (无, 当前无互斥字段) | — |
YAML 文件不存在视为合法 (用 schema 默认值)。
# 无参 — 列全部 + validate
/cortex:config
# get
/cortex:config get vault
/cortex:config get digest.stages.consolidate
/cortex:config get digest.incremental_max_age_days
# set (写前校验)
/cortex:config set lang en-US
/cortex:config set digest.incremental_max_age_days 45
/cortex:config set digest.domain_aliases.ai 技术
# unset
/cortex:config unset digest.domain_aliases.ai
# 仅校验
/cortex:config validate
详细示例 + 错误处理见 references/usage.md。
无参 (display):
~/.cortex/config.json:
vault /Users/foo/vault [user]
lang zh-CN [default]
install_path /Users/foo/.../cortex [user]
timeout_default 600 [default]
<vault>/.cortex/config/digest.yaml:
stages.consolidate true [default]
stages.enrich true [default]
stages.verify false [user]
incremental_max_age_days 30 [default]
domain_aliases (0 entries) [default]
<vault>/.cortex/config/enrich.yaml: (file absent, all defaults)
<vault>/.cortex/config/tags.yaml: (file absent, all defaults)
validate: ok
validate JSON (/cortex:config validate):
{
"ok": false,
"errors": [{"file": "digest.yaml", "key": "incremental_max_age_days", "issue": "expected int, got str"}],
"warnings": [{"file": "tags.yaml", "key": "tag_naming", "issue": "unknown enum 'PascalCase'"}]
}
写改逻辑直接调 scripts/cortex_config.py (已存在, 处理 ~/.cortex/config.json)。
vault yaml CRUD 在 SKILL.md body 中由 AI 调 Bash + python yaml 库 (PyYAML) 完成, 或调 scripts/validate_config.py --apply 子命令 (当前 read-only)。
MVP: AI 直接读写 yaml (Read/Edit/Write 工具), 写前调 scripts/validate_config.py --dry-run --key=<k> --value=<v> 校验单字段; 通过即 Edit 写盘。
skill frontmatter hooks.Stop 注册 validate_config.py (timeout 10s, non-blocking)。会话结束时:
~/.cortex/config.json 拿 vault, 没拿到则跳过 (空 vault 不报错).cortex/config/*.yaml[cortex-config WARN] ..., exit 1 (blocking=false, 不阻塞会话)降级方案: 若 Claude Code 当前不支持 skill-level Stop hook, AI 在会话收尾应主动 bash python3 .../scripts/validate_config.py 一次。plugin.json 已有 plugin-level Stop hook (stop.sh), 不在 plugin.json 二次注册, 避免双跑。
严禁:
| # | 禁止 |
|---|---|
| 1 | "建议"/"修复建议" 章节 |
| 2 | 用户确认问句 (是否?, 要继续吗?, 末尾问号) |
| 3 | AskUserQuestion 调用 (allowed-tools 已禁) |
| 4 | "建议人工"/"下一步" 推卸辞令 |
| 5 | 写盘前未跑 schema 校验 |
| 6 | 校验失败仍写盘 |
校验失败 → 直接 stderr 报错 + 列违规项 + exit 1, 不解释 "为何", 不给"修复建议"。
| 文件 | 内容 | |---|---| | references/schema.md | 完整 YAML + JSON schema + 类型 / 默认 / range / 互斥 | | references/usage.md | 用法详例 + 错误处理 + 输出样本 |
development
Go 数据库规范——GORM Model 命名 ModelXxx、表名单数、枚举 uint8 + 常量、索引 idx_ 前缀 + deleted_at leading column、禁 time.Time 统一 int64 unix、禁指针/nullable 字段、TEXT/BLOB/JSON 禁 default、AutoMigrate 禁改主键。设计 DB model、写 GORM tag、建索引、做 migration 审查时触发。
development
Go HTTP API 规范——响应始终 200 + body code 字段、路由 /api/* 全 POST 单段 <Action><Model>、中间件逐路由注册禁 Group(prefix,mw...)、handler 仅返回 (rsp,error)、认证走 header。设计 HTTP API、写路由/handler/中间件时触发。
development
Go 项目结构规范——三层架构(API → Impl → State)、全局状态模式、internal/ 私有包、cmd/ 仅 main.go、go.work 多模块、禁止 Repository 接口和 DI 容器、struct 公共字段开头全 omitempty、handler var rsp 顶声明、禁 legacy migration。设计项目骨架、新建目录、组织包、做架构评审时触发。
development
Go 命名规范——Id/Uid 字段(非 ID)、IsActive/HasMFA 布尔前缀、CreatedAt 时间字段、接收者统一用 p、包名全小写无下划线、泛型类型参数描述性命名、集合字段 xxx_list 禁 xxxs 复数、Enum 0 值 XxxNil 禁 Unknown、禁 Status 统一 State、Set/Update 语义区分。定义结构体字段、函数、变量、包、接收者名、泛型、枚举时触发。