Files
ks-zl-extract/SKILL.md
2026-05-17 17:24:03 +08:00

114 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: ks-zl-extract
description: Use when 用户要求从 ks-zl 蒸馏库、笔记库、规范库、建议库或文档库中,为当前目标项目提取适用的规范、需求摘要、示例或方案,并写入目标项目文档目录。
---
# ks-zl-extract
## 定位
`ks-zl` 维护的 distillation library 中读取资产索引,结合 target project 的项目特征,提取当前项目真正需要的规范、示例、需求摘要或方案到目标项目文档目录。
本 skill 不负责沉淀新资产到蒸馏库;蒸馏库资产创建和维护由 `ks-zl` 完成。本 skill 只读蒸馏库,只写目标项目文档目录,不实现业务代码。
语言硬规则:本 skill 写入目标项目的导入规范、摘要和 `extraction-report.md` 必须以中文为主体语言技术术语、产品名、命令、配置键、API 名称、UI 原文、文件路径和代码标识保留英文原文。
## 与 ks-zl 的边界
- `ks-zl`:在蒸馏库 B 中创建 `standard``requirement-package``solution``example` 等资产,并维护 `_indexes/artifacts-index.json`
- `ks-zl-extract`:在项目 A 中读取蒸馏库 B识别项目 A 的特征,选择适用资产,写入项目 A 的规范目录,并生成 `extraction-report.md`
- 如果提取时发现蒸馏库缺少资产或资产元数据不完整,只记录问题;不要在本 skill 中直接改蒸馏库,除非用户明确切换到 `ks-zl` 维护蒸馏库。
## 输入识别
用户通常会说:
```text
我的蒸馏库在 B帮我提取当前项目需要的规范到 ./xxxx
```
必须识别:
- distillation library用户指定的蒸馏库路径若未指定则询问。
- target project默认当前工作区用户指定时使用指定路径。
- output directory用户指定的 `./xxxx`;未指定时默认写入 `.ai-specs/imported-standards`
## 工作流
1. 读取蒸馏库的 `AGENTS.md``README.md``_indexes/artifacts-index.json`
2. 如果 `artifacts-index.json` 缺失但存在 `scripts/build-artifact-index.ps1`,先运行该脚本重建索引。
3. 扫描目标项目特征;优先使用本 skill 的 `scripts/detect-project-signals.ps1`
4. 根据用户目标、项目特征和索引中的 `appliesWhen``tags``domain``targetOutputs` 匹配资产;可用 `scripts/select-library-assets.ps1` 先生成候选列表。
5. 高置信命中可直接提取;命中冲突或候选过多时,先给出候选清单和推荐项,等用户确认。
6. 使用 `scripts/extract-library-assets.ps1` 写入 `<output-directory>/<domain>.md``extraction-report.md`;资产的 `targetOutputs` 作为建议目标记录在输出中,不直接覆盖目标项目既有规范。
7. 生成或更新 `<output-directory>/extraction-report.md`,记录来源、命中原因、写入路径和未提取原因。
## 项目信号
常用 signals
| Signal | 触发依据 |
| --- | --- |
| `project-has-database` | 存在 SQL、迁移脚本、ORM schema、实体模型、数据库配置或 `.ai-specs/doc-sql` |
| `designing-tables` | 用户要求表设计、字段规范、数据对象、字典或数据库文档 |
| `data-may-sync-or-recover` | 存在同步、导入、导出、补录、恢复、对账、外部编号等线索 |
| `has-api-contract` | 存在 OpenAPI、路由、controller、接口文档或 API 网关配置 |
| `has-frontend-ui` | 存在页面、组件、路由、表单、菜单或前端工程 |
信号只是匹配依据,不是确定结论。若信号来自推断,必须在 `extraction-report.md` 中标记为 inferred。
## 提取规则
- 优先提取 `type: standard` 的规范卡;它们是给跨项目复用设计的。
- 需求包只提取摘要和链接,不要把完整需求包散写进项目规范,除非用户明确要求。
- 示例和方案只作为参考材料,不得覆盖目标项目已有规范。
- 不复制整个蒸馏库;只复制命中资产的必要内容,并保留来源路径。
- 不覆盖目标项目已有确定规则;冲突时写入 `extraction-report.md` 的冲突记录并询问用户。
- 脚本生成的文件带 `generated-by: ks-zl-extract` 标记;遇到没有该标记的同名文件时,必须拒绝覆盖,除非用户明确要求 `-Force`
## 输出格式
每个提取文件建议包含:
```markdown
# <domain> 提取规范
来源蒸馏库:<distillation-library-path>
提取时间:<YYYY-MM-DD>
## <资产标题>
来源:<relative-path-in-library>
命中原因:<signals/tags/query>
<整理后的规范正文>
```
`extraction-report.md` 必须包含:
- 扫描到的 target project signals。
- 使用的索引路径和查询条件。
- 已提取资产:来源路径、写入路径、命中原因。
- 未提取候选:原因。
- 冲突或待确认事项。
## 验证
完成前至少检查:
```powershell
powershell -ExecutionPolicy Bypass -File <this-skill>\scripts\detect-project-signals.ps1 -Root <target-project>
```
如果蒸馏库提供搜索脚本,优先用选择脚本验证一次命中:
```powershell
powershell -ExecutionPolicy Bypass -File <this-skill>\scripts\select-library-assets.ps1 -LibraryRoot <library> -TargetRoot <target-project> -Query "database" -Json
```
执行写入时使用:
```powershell
powershell -ExecutionPolicy Bypass -File <this-skill>\scripts\extract-library-assets.ps1 -LibraryRoot <library> -TargetRoot <target-project> -OutputDirectory .ai-specs\imported-standards -Query "database"
```
回复用户时说明写入了哪些文件、每个文件来自蒸馏库哪个资产、还有哪些候选没有提取。