关于 map-features
map-features 是用于维护仓库文档中共享能力目录的确认后写入技能,适合负责目录治理的开发者。它支持反向追踪、变更提案,以及满足同步条件后的受控导出或生成。
主要功能
- 01反向追踪并生成提示信封
- 02提议目录变更并等待确认
- 03处置观察记录
- 04在 index-only 模式导出目录字段
- 05生成草稿规格文件桩
适用场景
- 01发现能力缺口或过期的反向检查点
- 02写入前审阅目录更新提案
- 03同步条件允许时创建草稿规格文件桩
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jayden-dang/ skills --skill map-features安装后在 Claude Code 中输入/map-features确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
eval.jsonreferences/envelope.mdexport-fields.mdpasses.mdscripts/cluster.pycorpus_eval.pyoverlay.pyowns.pyreconcile.pytest_corpus.pytest_overlay.pytest_owns.pytest_reconcile.pyscripts/testdata/corpus/klynt-authz/gold.jsonowns.jsonpaths.txtscripts/testdata/corpus/mailgate-labels/gold.jsonowns.jsonpaths.txtscripts/testdata/specs-recognized/INDEX.mdscripts/testdata/specs-recognized/catalog/platform.mdscripts/testdata/specs-sharded/INDEX.mdscripts/testdata/specs-sharded/2026-01-01-shard-demo/tasks.mdscripts/testdata/specs-sharded/catalog/mail.mdscripts/testdata/specs/INDEX.mdscripts/testdata/specs/2026-01-01-demo/tasks.mdscripts/testdata/specs/2026-01-02-other/tasks.mdscripts/testdata/specs/catalog/app.mdtemplates/gitignore-index-only.snippetspecs-catalog-domain.md详细介绍
映射功能
针对共享能力目录的先确认后写入操作
(docs/specs/INDEX.md 领域路由器 + docs/specs/catalog/*.md)。与
configure-repo 并列。反向追踪(原名 reconcile-features)是处置步骤 0,
不是独立技能。
发现映射缺口或反向检查点已过时的模型调用技能,MUST 为用户指出
/map-features,且 MUST NOT 自动调用此技能。
按需加载: load-subgraph 的 catalog-query.md(共享卡片语法);
references/passes.md + references/envelope.md(反向追踪);references/export-fields.md;
templates/(存根、gitignore)。不要将 tombstones.jsonl 粘贴到聊天中。
预检
- 缺少
docs/specs/INDEX.md→ 停止。指出/configure-repo。不要自行创建 INDEX。 - INDEX 必须是领域路由器(
| Domain | … | Feature catalog |)。INDEX 上的扁平| Code | … |功能表 → 提议迁移为领域边界;不要将扁平行视为当前有效注册表。 - 从
docs/agents/project.md读取Catalog sync::
| Catalog sync | 允许的模式 |
|---|---|
index-only | dispose · export · materialize |
full-triad / 未设置 / 缺失 | 仅 dispose |
不明确时询问使用哪种模式。除非 sync 为 index-only,否则绝不运行 export / materialize。
模式操作步骤
dispose(默认)
0. 反向追踪(始终优先)
在扫描缺口前,运行机械式反向追踪。优先使用:
python3 skills/track/map-features/scripts/reconcile.py \
--repo <root> --base <sha> --head <sha> --mode <mode>
当 .skills/ 可写且被 gitignore 忽略时,添加 --write-overlay。模式:
changes-since-checkpoint | full | brownfield-bootstrap — 参见
references/passes.md。仅打印一个 references/envelope.md 信封
(供参考)。将 INDEX OBS 存放在 .skills/reverse-features/ 下,或保持无状态
(advanced_to: null)。展示运行器的每一条 notes[]。此处不要创建 Feature
CODE 或写入 INDEX——只写入 overlay + 信封。
完成条件:信封已留存;提议前可见待处理 OBS。
1–3. 扫描 → 提议 → 确认并写入
扫描 INDEX / 分片 / 任务 / 路线图 / .skills/reverse-features/active/(+
必要时查看 observation json)。仅提议以下类型:
| 类型 | 确认后的操作 |
|---|---|
| Domain boundary | 共享路由器 + 分片存根;将扁平 INDEX 行迁移到 catalog/<domain>.md |
| Missing Feature code | 在需求中添加 Feature code: 行 |
| Empty ROAD bind | 分片 Roadmap 单元格 → 仅绑定有效的 ROAD-N(绝不创建) |
| OWNS gap | tasks.md Files Create/Modify/Test 行 |
| DEPENDS_ON candidate | 仅复用说明文字——绝不添加 load-subgraph 边 |
| Recognized capability | 在分片中添加精简目录卡片(Spec 可为 —);不建 triad |
| OBS disposition | promote / absorb / dismiss + tombstone;promote 会写入 Recognized 分片卡片 |
OBS 来源信息: 当路径/术语的重叠明确时,附上 observation_id(+
surface_roots)。优先提升该 OBS,而非添加孤立的 Recognized 行。
批量确认: 按 Core / Integrations / Docs 分组。接受
Confirm P01-P06; decline P07-P15 或 Confirm batch Core。promote/absorb 行
仍需明确的 CODE 令牌。
只写入已确认的行。不创建 GRAPH.md。dispose 模式下不搭建 triad 框架。
在所属分片中注册新 CODE,而非路由器 INDEX。
export(index-only)
除非 Catalog sync 为 index-only,否则拒绝(指出 /configure-repo)。针对每个
具有本地 triad 的选定 CODE,按 references/export-fields.md 提议更新分片
(或路由器)单元格。先展示运行前后的差异。绝不暂存 triad 文件。
缺少 triad → 视为缺口;建议使用 materialize。
materialize(index-only)
除非 Catalog sync 为 index-only,否则拒绝。确认或提供
templates/gitignore-index-only.snippet;警告不要使用 git add -f。
针对每个 CODE,在 docs/specs/ 下定位 Spec 目录:
- 缺失 → 提议使用
templates/triad-stub/创建 Draft 存根 - 存在文件但没有 `` → 拒绝覆盖
- 仅有存根指纹 → 确认后可刷新
存根:Status 为 Draft,CODE + 标题取自分片卡片;不得编造 Approved EARS。写入后,
当需要 SHALL 时指出 specify-behavior。
调用方(仅提及名称,绝不调用)
| 技能 | 何时提及 /map-features |
|---|---|
frame-change | 逆向条件成立(检查点过时/缺失或拉取后)——在将各个界面视为全新开发之前 |
inspect-change | 只读逆向脚本运行后;待处理的 OBS 需要处置 |
load-subgraph | Envelope/observations 区段显示有待处理的 OBS |
| standalone | 用户要求进行逆向跟踪、处置 OBS、将扁平结构迁移为共享结构,或回填目录 |
inspect-change 可以运行 scripts/reconcile.py,以只读方式生成建议性
envelope;不得执行处置写入。
合理化说辞
| 想法 | 实际情况 |
|---|---|
| “没有 INDEX——根据我的提案表写一个” | 预检停止;/configure-repo 会建立路由器和分片 |
| “保留 reconcile-features 作为独立技能” | 已删除;逆向仅是处置步骤 0 |
| “frame-change 应该自动运行逆向” | 提及 /map-features;绝不自动调用 |
| “扁平 INDEX 仍然可以用” | 仅限共享目录;Domain 边界必须迁移 |
| “Slug 文件夹就是 CODE” | CODE 只能来自分片 / Feature code: / 已确认的行 |
| “稍后确认,现在先写” | 未明确确认,不得写入 |
| “OBS-5682de 显然是 LABL” | Promote 会提出建议;每行 CODE 均须确认 |
| “Catalog sync 未设置时也可以物化” | export/materialize 要求 index-only |
| “覆盖他们只写了一半的需求” | 没有 stub 指纹时拒绝 |
| “跳过逆向——active/ 中已经有 OBS” | 步骤 0 仍须运行(检查点/范围);仅有 active/ 不能替代 |
| “frame-change 中的 REQUIRED SUB-SKILL map-features” | 仅由用户调用;提及它 |
危险信号
- 跳过 INDEX 预检或臆造 INDEX
- 将 INDEX 上的扁平 Code 表当作当前注册表
- 未经逐行或批量确认就写入
- 臆造 ROAD-N 或未经确认的 CODE
- 在处置过程中搭建三元组
- 当 Catalog sync ≠
index-only时执行 export/materialize - 覆盖非 stub 的三元组文件
- 将已提升的 OBS 留在
active/中而不添加墓碑 - 在 Code 单元格中写入
OBS-* - 在 stub 中臆造 Approved EARS
- 从 frame-change / inspect-change / reconcile 遗留项中自动调用此技能
- 跳过处置步骤 0 逆向
- 在逆向过程中创建 Feature CODE
完成条件
预检已通过;模式已明确;逆向 envelope 已保留(处置);提案已展示 (如有 OBS 来源信息,则一并展示);仅应用了已确认的写入;已物化的 stub 为 Draft 且带有指纹;已列出缺口;扁平 INDEX 已迁移,或已作为 Domain 边界提出。