Skip to main content

skein-spec

SKEIN 规则记忆库 (.skein/spec)。触发: planning 召回既有约定 / finish 后沉淀或改写规则 / 现状 wiki 与记忆库维护 / spec 一致性核查 / 空仓播种与整库重构。recall·sediment·amend·map·analyze·migrate·bootstrap·reconstruct·maintain 全模式入口。

Aller à l'installation

Informations de source

Dépôt
lazygophers/ccplugin
Dernière activité de la source
18 septembre 2026 à 01:20
Langue détectée de SKILL.md
chinois
Étoiles
4
Forks
1

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
11 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
skein-spec
description
SKEIN 规则记忆库 (.skein/spec)。触发: planning 召回既有约定 / finish 后沉淀或改写规则 / 现状 wiki 与记忆库维护 / spec 一致性核查 / 空仓播种与整库重构。recall·sediment·amend·map·analyze·migrate·bootstrap·reconstruct·maintain 全模式入口。
user-invocable
true
argument-hint
[模式: recall/召回, sediment/沉淀, amend/改写, map/结构现算, analyze/一致性核查, migrate/迁移, bootstrap/播种, reconstruct/重构, maintain/维护 (加 --apply 自动修)] [--deep=recall/low/full/deep/max/high (reconstruct 模式可选)]
arguments
['recall(召回)|sediment(沉淀)|amend(改写)|map(结构现算)|analyze(一致性核查)|migrate(迁移)|bootstrap(播种)|reconstruct(重构)|maintain(维护)', '--deep=recall/low/full/deep/max/high']
model
inherit
effort
medium
# skein-spec — 规则记忆库 (namespace × inclusion) > 🔒 全局流程规则(状态机/调度/优先级等)以 skein-flow/references/ 为单一真值源。 **差异化核心**。不同于「按需沉淀单一 spec 文件」, SKEIN 记忆按两个正交维度组织, 基于 `.skein/spec`: > **绑定 agent (按读/写拆两个, 均 frontmatter `skills: skein:skein-spec`)**: > > - **读路径默认归 `skein-recaller`** (只读同步召回员): recall 检索 (planning) 派它, **main 等召回结果进 planning** (dispatch prompt「已知」段带上); executor/main 也可直跑 `skein-spec recall` CLI 等价命令。 > - **写路径默认归 `skein-specer`** (记忆写盘员): sediment/amend/reconstruct·maintain/prune 五类写作业 (finish 读 diff + subagent 回传摘要 跑判定门产候选 + 写盘 + reindex)。executor 踩到可复用约定也可直跑 `skein-spec sediment` CLI 等价命令。**异步 fire-and-forget 模式** (被 skein-flow finish 阶段在 finish 闭环后派发): specer 自主跑判定门 + `skein-spec sediment`/`amend` 写盘 + reindex, **无需 main 等待回传** (main 派发即结束回合, 回传到达后只补 output trace; 判定门通过即自主写, 不逐次询问用户)。仅 bootstrap/reconstruct 全局动作跑前一次征同意。 ## namespace × inclusion 正交两维 **两者正交**: namespace 决定放哪个目录 (内容分类), inclusion 决定怎么加载 (写在每篇 frontmatter 里, 与目录无关) —— 把文件从一个 namespace 目录搬到另一个**不会**改变它的加载策略, 这条曾被文档写反过, 教用户把文件搬目录来「降级」, 而那什么也不会发生。 | namespace \ inclusion | always 常驻注入 (SessionStart) | auto 按需召回 (默认) | fileMatch 按 globs 命中注入 | manual 纯手动检索 | | --------------------------- | --------------------------------------------------------------- | --------------------------------------------------- | --------------------------- | ----------------------------- | | **rules** (硬规 / 经验规则) | 硬约束 / 命令式契约 (软预算 `spec.always_budget`, 超则告警降级) | 长尾经验规则 (默认落点) | 特定路径触发的规则 | 极冷门参考 | | **product** (需求现状 wiki) | 极少见 (核心边界铁律) | 功能域现状页 (默认落点, 见下文) | — | 历史存档快照 | | **map** (代码结构语义页) | — | 职责 / 数据流说明页, 配合 `map --skeleton` 现算骨架 | — | — | | **external** (外部长文档) | — | 索引摘要 | — | 原文全文, 手动检索 (默认落点) | namespace 开放不设白名单 (目录扫描得, 新增 namespace 不改代码, 常见 rules/product/map/external), inclusion 是封闭四值。索引: 每个 `<namespace>/index.md` (该 namespace 全规则, 带 category / inclusion / anchors 列) + 顶层 `index.md` 聚合概览。 ## 寻找纪律 (planning/调研/找方案时) **动手前优先跑 `skein-spec recall "<关键词>"`** — 现有规则沉淀比凭记忆重推快且准, `inclusion: always` 的规则已常驻无需 recall。 顺序: recall spec (全 namespace, FTS5 BM25 排序) → vault → 项目本地 (Read/Grep) → 外部搜索。 recall 命中 → model 读全文判相关 → 相关的注入当前 task 上下文 (dispatch prompt「已知」段带上)。 external 层 (不入 hook, 纯手动) 存长文档/外部资料, 同经 `recall` 跨层检索。 ## recall (planning 阶段, 派 skein-recaller) > 默认派 `skein-recaller` (只读同步召回员) 承载, main 等其结果进 planning; main 也可直跑 `skein-spec recall` CLI 等价命令。 ``` skein-spec recall "<任务关键词>" [--src rules/product/map/code/all] ``` - grep `<namespace>/index.md` 输出命中行 → **model 读命中规则全文, 判是否真相关** → 相关的注入当前 task 上下文 (dispatch prompt「已知」段带上)。 - `inclusion: always` 的规则已由 SessionStart hook 常驻, 无需 recall。 - `--src` 分源: `rules`/`product`/`map` 限定单 namespace, `code` 专召 map namespace 语义页 + anchors 汇总, 缺省 `all` 跨 namespace 检索。 ## sediment (task finish 阶段, 异步 fire-and-forget) — 判定门 + 自主写盘 task finish 闭环后由 skein-flow finish 阶段异步 fire-and-forget 派 `skein-specer` 跑「判定门 checklist → 分层归类 → `skein-spec sediment` 自主写盘 + reindex」三步 (含升降级)。**异步**: main 派 skein-specer 即结束回合, 不等回传 (finish 已闭环, 禁为 sediment 阻塞); skein-specer 自主写盘, 回传到达后 main 只补 output trace 供审阅。**判定门 (语义) 通过即写, 不逐次 AskUserQuestion** —— 记忆积累高频, 每次询问是噪声; 误沉淀后续调 inclusion/删文件可逆纠正。完整判定 trace 模板、分层/归类规则、写盘命令详见 [references/sediment-workflow.md](references/sediment-workflow.md)。 sediment 只**追加**新章节 —— 现状类内容 (尤其 product wiki) 过时后要**改写**旧结论而非无限并存新版本, 追加 vs 改写的抉择见下文 amend。 ## prune (sediment 后自动精简, skein-specer) — 判定门 + 自主归档 sediment 写盘后 skein-specer 顺带跑一轮精简: 扫全 namespace, 按判据检出 candidate 并**自动 archive** (可逆) 而非只报告。**异步 fire-and-forget**: 同 sediment, main 派即放手, 不等回传。 - 判据分两层 —— 全局恒跑 (always 超预算 / 断链) + 按 namespace 分表 (product 只报告, 需求真值只有人知道该不该删)。**完整判据表与判定顺序见 [references/prune-workflow.md](references/prune-workflow.md)**, 本文件不重抄。 - **archive 即可逆, 不删文件** — 归档到 `.skein/spec/.archive/<ts>/`, `restore <ts>` 可回滚。 - **保护标记**: 规则头 `protected: true` 跳过不精简。 - **无命中 → 跳过**, 如实报「无精简项」, 不空跑 archive。 ## 写盘参照模板 (软骨架, 非强制) 规则 body 各有脊柱, sediment 写盘前 skein-specer 参照对应模板填: - **always** 规则 (命令式契约) 参照 [references/templates/rules-always.md.tmpl](references/templates/rules-always.md.tmpl): 铁律/禁 (MUST/禁, 一句一规则) + 反例表 (禁/改为) + 可选关联。 - **auto** 规则 (ADR/陷阱型) 参照 [references/templates/rules-auto.md.tmpl](references/templates/rules-auto.md.tmpl): 触发场景 / 陷阱-正解 / 反例 / 案例 / 适用 / 关联。 - **product** 现状页参照 [references/templates/product.md.tmpl](references/templates/product.md.tmpl): 现状 / 边界 / 为什么这样 / anchors / 关联。 - **map** 语义页参照 [references/templates/map.md.tmpl](references/templates/map.md.tmpl): 职责 / 入口 / 数据流 / anchors。 > **参考骨架非强制** — sediment 是 fire-and-forget, 模板仅作 skein-specer 填 body 的结构引导, **不强校验、不阻塞写盘**; 实际规则按内容取舍段名 (elastic spine), 缺段不报错。 ## product wiki (现状记忆, namespace=product) > 编写 product wiki 时参考 [skein-flow/references/writing-for-agents.md](../skein-flow/references/writing-for-agents.md) 的 information hierarchy — 现状页 (state) 用 in-file reference 格式,决策变更 (delta) 落 rules namespace 作 ADR 式记录。 区别于 rules 的「决策 / 规则」(为什么这样改), product namespace 只存**当前系统现状** —— 单一功能域此刻是什么样, 不叠加历史决策链。 - **delta vs state**: sediment 沉淀的是「决策变更」(踩过的坑 / 为什么这样约定), 落 rules namespace; product 只留**现状快照**, 旧结论过时直接 `amend` 改写, 不追加并存多个矛盾版本 (这一条决定了 product 与 rules 的判据也不同, 见上文 prune 分表)。 - **按功能域切页**: 一个功能域 (登录 / 计费 / 权限...) 一个 topic 文件, 不与 rules 按类目混放。 - **finish 时回写候选**: skein-flow finish 阶段跑 `skein-spec finish-candidates <tid>`, 三路降级产候选 —— ① diff 改动文件反查 anchors 命中的既有 product 页 → ② 皆无命中则用 prd 关键词 `recall --src product` 找弱候选 → ③ 仍无则报「无候选, 可能是新功能域, 建议新建」, **禁硬凑**。main 拿到候选后派 specer 用 `amend` (改写既有页) 或 `sediment --namespace product` (新建页) 落盘。 - **不自动精简**: product 是需求真值, maintain 判据只有 anchors 失效才报告 (禁自动 archive, 需人判断), 无 stale / keywords 重复 / 废弃 / 孤立判据。 ## amend (改写既有章节, 而非追加) sediment 只会**追加**新章节; 现状类内容 (product wiki 尤甚) 过时后要**改写**旧结论, 而非无限并存新版本, 用 `amend`: ``` skein-spec amend --topic <ns/cat/topic> --section <章节名> --body-file <正文文件> [--rename-section <新章节名>] ``` - 改前先 `archive` 旧版本 (可逆), 其余章节与 frontmatter 逐字不动。 - **目标章节不存在 → 报错并列出该主题现有章节名**, 不静默追加新章节 (❌ 静默追加; 追加新章节走 `sediment`)。 - `--rename-section` 同步更新库内反链 (`[[topic#旧章节名]]` → 新名), 缺省不改章节名。 - 写盘后自动 `reindex`。 **amend vs sediment 抉择**: 是「改写现状」(旧结论已过时, 只该有一份真值) 用 amend; 是「新增条目」(新踩的坑 / 新决策, 不否定旧条目) 用 sediment。详细抉择树见 [references/sediment-workflow.md](references/sediment-workflow.md)。 ## map (代码结构现算, namespace=map) ``` skein-spec map [--skeleton] [--paths <逗号分隔路径>] ``` 现算目录树 + 符号 + 行数, **不写盘**: - `--skeleton`: 仅顶层符号 (Python `def`/`class`/`async def`, JS/TS `function`/`class`/`export ...`, Go `func`/`type`), 正则非 AST (ponytail: 装饰器 / 嵌套 / 多行签名抓不准, 升级路径 tree-sitter)。 - `--paths`: 文件清单注入 (逗号分隔; 缺省 `git ls-files`, 非 git 仓降级 rglob 并排除 `node_modules`/`__pycache__` 等衍生目录)。 - map namespace 的语义页 (人写的职责 / 数据流说明) 与现算骨架合并展示; `recall --src code` 专召 map namespace 语义页 + anchors 汇总。 ## analyze (task 一致性核查, 只读) ``` skein-spec analyze <tid> ``` 对齐 spec-kit `/speckit.analyze`, 五类只读检查 (不写任何盘), 全启发式关键词/子串匹配, 措辞统一带「候选」字样, 零命中就如实报零冲突, **禁断言违规**: | 检查 | 比对 | | --------------- | --------------------------------------------------------------------- | | 验收覆盖率 | prd 验收标准 ↔ subtask 验收项, 报关键词无命中的验收条 (候选未覆盖) | | 硬规冲突 | design.md ↔ `inclusion: always` 规则的否定式表述, 报候选 (不断言违规) | | 范围蔓延 | subtask 名/desc ↔ prd 全文关键词, 报无命中的 subtask (候选蔓延) | | proposed 置信度 | design.md 提及的规则标题 ↔ 该规则 `status: proposed`, 报未验证引用 | | 接缝存在性 | design.md「测试接缝」段声明的路径/符号 ↔ codebase, 报未找到 | 缺省输出机器可读 JSON 供 `skein-checker` 消费 (`--show` 才是人读文本); `for-check.md` 的一致性核查段直接调这条, 不再手工 diff 比对。 ## migrate (旧两层结构 → namespace × inclusion) 旧 `spec/core/` + `spec/recall/` 两层结构迁移到 `rules/product/map/external` namespace × inclusion 新结构: `skein-setup` 在已初始化仓检出 `spec/core/` 存在时提示跑迁移, `init` 对全新仓直接建新结构目录。两阶段全流程 —— 阶段 1 机械改名 (旧 core→rules/inclusion:always, 旧 recall→rules/inclusion:auto) / 阶段 2 语义分拣 (把该归 product 的现状类内容、该归 map 的结构说明从 rules 分拣出去) —— 详见 [references/migration-v2.md](references/migration-v2.md)。 ## restructure (碎片文件批量合并进主题文件) ``` skein-spec restructure --map <plan.json> [--dry-run] ``` 映射 JSON (`{"<namespace>/<类目>/<主题>.md": ["<namespace>/<类目>/<碎片>.md", ...]}`) 把右侧碎片文件合并为左侧主题文件; 源文件自动归档到 `.archive/` (可 `restore <ts>` 回滚), 写盘后自动 reindex。`--dry-run` 只打印计划不落盘。碎片规则文件批量归并走此命令, 禁一条规则一个文件手工搬。 ## 空仓冷启动播种 (一次性, main) 新仓 `.skein/spec` 为空时前几十轮 planning 无规则可召回。此时 main **可**提议从既有代码库提炼约定作冷启动基线 —— 派 skein-researcher 扫五维 (命名/错误处理/测试/架构边界/构建), 候选逐条定 namespace×inclusion 或 drop, 复用上文 sediment 写盘流程落盘 (bootstrap 跑前一次征同意覆盖整轮, 内部候选自动写)。 一次性动作, `AskUserQuestion` 征同意再跑 (禁自动); 用户拒 → 走正常 planning, 规则随 finish sediment 增量积累。完整流程 (触发条件 / 五维明细 / ns×inclusion 判定表 / 落盘) 见 [references/bootstrap-seeding.md](references/bootstrap-seeding.md)。 ## 完全重构 (reconstruct, main) — 依代码/项目内容重建整库 既有记忆大面积失效 (大重构 / 换技术栈 / 记忆漂移 / 接手可疑旧库) 时, 把全库规则**可逆归档**后依当前代码 + 项目内容从零重建。区别于 bootstrap (仅空仓、纯增量): 重构多 `skein-spec archive` 前置 (可逆清库) + **按项目类型分型扫描**。 **六档深度** (`--deep=<recall|low|full|deep|max|high>`, 默认 full): 档位同时决定 ②archive 范围 (长尾 namespace / 全库) 与 ④扫描深度 (五维基线 / 全 8 型探针 / 加旧规则逐条比对), 逐档明细见 [references/reconstruct-memory.md §1.5](references/reconstruct-memory.md)。 ``` skein-spec archive --namespace <ns> # 只归档指定 namespace (recall/low 档) skein-spec archive # 全 namespace 归档 (full/deep/max/high 档) skein-spec restore <ts> # 回滚 (撞名不覆盖新规则, 加 restored- 前缀并存) # 注: 深度档 (recall/low/full/deep/max/high) 是本 skill 的参数, 决定「归档多大范围 + 扫多深」, # 不是 CLI 参数 —— archive 只认 --namespace。 ``` 流程: 快照 → 归档 → 识别项目类型 → 分型扫描 (researcher bootstrap 模式 + 类型侧重) → 逐条定 ns×inclusion → sediment 自动写盘 → 验证 + 保留归档。🛑 `AskUserQuestion` 征同意再跑 (归档全库虽可逆仍是全局动作 · STOP, 禁自动)。**事无巨细设计 + 8 类项目 (backend/frontend/cli/monorepo/data-ml/infra/mobile/docs) 分型扫描侧重、探针、always 倾向、规则示例、陷阱** 见 [references/reconstruct-memory.md](references/reconstruct-memory.md)。 ## 失败模式 (if-then 三段式: 触发 → 一线修复 → 仍失败兜底) | 触发 | 一线修复 | 仍失败兜底 |
Voir sur GitHub
Ce SKILL.md est tres volumineux, SkillsMP affiche donc ici seulement la premiere section. Voir sur GitHub