@agile-team/wl-skills-kit 2.10.1 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +7 -7
- package/bin/wl-skills.js +49 -16
- package/files/.github/copilot-instructions.md +23 -465
- package/files/.wl-skills/copilot-instructions-full.md +233 -0
- package/files/{docs → .wl-skills/docs}/jh-pagination.md +2 -2
- package/files/{docs → .wl-skills/docs}/page-query-hook-best-practices.md +3 -3
- package/files/{.github → .wl-skills}/guides/README.md +1 -1
- package/files/{.github → .wl-skills}/guides/architecture.md +5 -5
- package/files/{.github → .wl-skills}/guides/mcp-setup.md +1 -1
- package/files/{.github → .wl-skills}/guides/usage.md +8 -8
- package/files/{.github → .wl-skills}/reports/SYS_MENU_INFO.md +1 -1
- package/files/{.github → .wl-skills}/reports/SYS_PERMISSION_INFO.md +1 -1
- package/files/{.github → .wl-skills}/reports//347/273/204/344/273/266/346/217/220/345/217/226/345/273/272/350/256/256.md +1 -1
- package/files/{.github → .wl-skills}/skills/_best-practices.md +5 -5
- package/files/{.github → .wl-skills}/skills/_compat/README.md +1 -1
- package/files/{.github → .wl-skills}/skills/_compat/editors.json +1 -1
- package/files/{.github → .wl-skills}/skills/_pipeline.md +9 -9
- package/files/{.github → .wl-skills}/skills/_registry.md +3 -3
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/SKILL.md +27 -27
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/USAGE.md +22 -22
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/business-index.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/business-open-questions.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/module-dictionary.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/module-field.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/module-index.md +2 -2
- package/files/{.github → .wl-skills}/skills/core/business-doc-extract/templates/module-requirement.md +2 -2
- package/files/{.github → .wl-skills}/skills/core/convention-audit/SKILL.md +6 -6
- package/files/{.github → .wl-skills}/skills/core/convention-audit/USAGE.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/page-codegen/SKILL.md +10 -10
- package/files/{.github → .wl-skills}/skills/core/page-codegen/USAGE.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-DETAIL-TABS.md +7 -7
- package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-DRIVEN.md +5 -5
- package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-FORM-ROUTE.md +2 -2
- package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-RECORD-FORM.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-TREE-LIST.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/prototype-scan/SKILL.md +11 -11
- package/files/{.github → .wl-skills}/skills/core/prototype-scan/USAGE.md +3 -3
- package/files/{.github → .wl-skills}/skills/core/spec-doc-parse/SKILL.md +9 -9
- package/files/{.github → .wl-skills}/skills/core/spec-doc-parse/USAGE.md +6 -6
- package/files/{.github → .wl-skills}/skills/core/template-extract/SKILL.md +1 -1
- package/files/{.github → .wl-skills}/skills/core/template-extract/USAGE.md +1 -1
- package/files/{.github → .wl-skills}/skills/sync/_mcp-guardrail.md +3 -3
- package/files/{.github → .wl-skills}/skills/sync/dict-sync/SKILL.md +5 -5
- package/files/{.github → .wl-skills}/skills/sync/dict-sync/USAGE.md +2 -2
- package/files/{.github → .wl-skills}/skills/sync/menu-sync/SKILL.md +6 -6
- package/files/{.github → .wl-skills}/skills/sync/menu-sync/USAGE.md +3 -3
- package/files/{.github → .wl-skills}/skills/sync/menu-sync/env/guide.md +2 -2
- package/files/{.github → .wl-skills}/skills/sync/permission-sync/SKILL.md +3 -3
- package/files/{.github → .wl-skills}/skills/sync/permission-sync/USAGE.md +1 -1
- package/files/{src → .wl-skills/src}/components/global/C_Splitter/index.vue +2 -2
- package/files/{src → .wl-skills/src}/components/local/c_formModal/README.md +1 -1
- package/files/{src → .wl-skills/src}/components/local/c_formSections/README.md +2 -2
- package/files/{src → .wl-skills/src}/components/remote/BaseForm/README.md +2 -2
- package/files/{src → .wl-skills/src}/components/remote/BaseQuery/README.md +4 -4
- package/files/{src → .wl-skills/src}/components/remote/BaseTable/README.md +2 -2
- package/files/{src → .wl-skills/src}/components/remote/BaseToolbar/README.md +1 -1
- package/files/{.github → .wl-skills}/standards/02-code-structure.md +1 -1
- package/files/{.github → .wl-skills}/standards/08-git.md +1 -1
- package/files/{.github → .wl-skills}/standards/11-form-validation.md +1 -1
- package/files/{.github → .wl-skills}/standards/13-platform-components.md +15 -15
- package/files/{.github → .wl-skills}/standards/14-layout-containers.md +4 -4
- package/files/{demo → .wl-skills/templates}/README.md +3 -3
- package/lib/vite-plugin-wl-skills.js +97 -0
- package/package.json +2 -2
- /package/files/{docs → .wl-skills/docs}/jh-date-range.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-date.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-dept-picker.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-drag-row.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-file-upload.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-picker.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-select.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-text.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-textarea.md +0 -0
- /package/files/{docs → .wl-skills/docs}/jh-user-picker.md +0 -0
- /package/files/{docs → .wl-skills/docs}/mock-architecture.md +0 -0
- /package/files/{docs → .wl-skills/docs}/request.md +0 -0
- /package/files/{.github → .wl-skills}/reports/README.md +0 -0
- /package/files/{.github → .wl-skills}/reports/SYS_DICT_INFO.md +0 -0
- /package/files/{.github → .wl-skills}/reports//350/247/204/350/214/203/345/256/241/346/237/245/346/212/245/345/221/212.md" +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/agents.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/claude-code.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/cline.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/cursor-mdc.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/cursor-rules.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/github-copilot.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/kiro.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/qoder.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/trae.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/_compat/headers/windsurf.txt +0 -0
- /package/files/{.github → .wl-skills}/skills/core/api-contract/SKILL.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/api-contract/USAGE.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/_index.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/domains/_CONTRIBUTING.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/domains/produce/TPL-OPERATION-STATION.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/domains/sale/README.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-CHANGE-HISTORY.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-LIST.md +0 -0
- /package/files/{.github → .wl-skills}/skills/core/page-codegen/templates/universal/TPL-MASTER-DETAIL.md +0 -0
- /package/files/{.github → .wl-skills}/skills/domain/README.md +0 -0
- /package/files/{.github → .wl-skills}/skills/ops/code-fix/SKILL.md +0 -0
- /package/files/{.github → .wl-skills}/skills/ops/code-fix/USAGE.md +0 -0
- /package/files/{.github → .wl-skills}/skills/sync/env.local.json +0 -0
- /package/files/{.github → .wl-skills}/skills/sync/menu-sync/env/env.local.json +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_ParentView/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_RightToolbar/data.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_RightToolbar/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_RightToolbar/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Splitter/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_SvgIcon/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_SvgIcon/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_SvgIcon/svgicon.js +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_TagStatus/README.md +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_TagStatus/config.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_TagStatus/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_TagStatus/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_TagStatus/types.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Tree/README.md +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Tree/data.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Tree/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Tree/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/global/C_Tree/types.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formModal/data.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formModal/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formModal/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formSections/data.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formSections/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_formSections/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_listModal/data.ts +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_listModal/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_listModal/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_spliterTitle/index.scss +0 -0
- /package/files/{src → .wl-skills/src}/components/local/c_spliterTitle/index.vue +0 -0
- /package/files/{src → .wl-skills/src}/components/remote/AGGrid/README.md +0 -0
- /package/files/{src → .wl-skills/src}/types/page.ts +0 -0
- /package/files/{.github → .wl-skills}/standards/01-toolchain.md +0 -0
- /package/files/{.github → .wl-skills}/standards/03-comments.md +0 -0
- /package/files/{.github → .wl-skills}/standards/04-coding-basics.md +0 -0
- /package/files/{.github → .wl-skills}/standards/05-logging.md +0 -0
- /package/files/{.github → .wl-skills}/standards/06-security.md +0 -0
- /package/files/{.github → .wl-skills}/standards/07-config.md +0 -0
- /package/files/{.github → .wl-skills}/standards/09-typescript.md +0 -0
- /package/files/{.github → .wl-skills}/standards/10-pinia.md +0 -0
- /package/files/{.github → .wl-skills}/standards/12-base-table.md +0 -0
- /package/files/{.github → .wl-skills}/standards/index.md +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add/api.md +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add-form/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add-form/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-add-form/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-form/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-form/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-form/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-history/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-history/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-apply-change-history/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-archive/api.md +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-archive/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-archive/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-archive/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-detail/api.md +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-detail/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-detail/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-customer-detail/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-temp-customer-archive/api.md +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-temp-customer-archive/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-temp-customer-archive/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/produce/aiflow/mmwr-temp-customer-archive/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/add-demo/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/add-demo/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/add-demo/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/billet-flame-cut-plan/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/billet-flame-cut-plan/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/billet-flame-cut-plan/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/domestic-trade-order/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/domestic-trade-order/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/domestic-trade-order/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/heat-batch-return/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/heat-batch-return/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/heat-batch-return/index.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/heat-batch-return/meltDialog.vue +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/metallurgical-spec/data.ts +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/metallurgical-spec/index.scss +0 -0
- /package/files/{demo → .wl-skills/templates}/sale/demo/metallurgical-spec/index.vue +0 -0
|
@@ -1,475 +1,33 @@
|
|
|
1
1
|
# 产品化前端编码指令
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
>
|
|
3
|
+
> ⚠️ 本文件是入口指引。**完整指令在 `.wl-skills/copilot-instructions-full.md`**,你必须在首次进入项目或开启新任务时读取该文件。
|
|
4
|
+
> 下方是核心要点摘要,确保你在读取完整指令前也不会犯严重错误。
|
|
5
5
|
|
|
6
|
-
##
|
|
6
|
+
## 必读(每次会话)
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
- Module Federation **子应用**,路由/权限/布局/Store 从主应用 `main` 远程加载
|
|
10
|
-
- UI:Element Plus + @jhlc/jh-ui + @jhlc/common-core
|
|
11
|
-
- 样式:Windi CSS + SCSS
|
|
12
|
-
- 状态:Pinia
|
|
13
|
-
- 页面注册:`vite/plugins/shared/pages.ts` 通过 `gProd()` / `gSale()` 声明
|
|
14
|
-
- 菜单路由配置:后端菜单表是唯一数据源。pages.ts 注册组件后,需在系统管理后台 → 菜单管理 → 新增菜单。批量新增页面时可用后端 batchImport 接口,详见 `.github/skills/sync/menu-sync/SKILL.md`
|
|
8
|
+
**你必须在每次会话开始时执行以下读取,否则无法正确执行任何任务:**
|
|
15
9
|
|
|
16
|
-
|
|
10
|
+
1. 读取 `.wl-skills/copilot-instructions-full.md` — 完整地图(Skill 路由表 + 规范清单 + 场景速查 + 护栏)
|
|
17
11
|
|
|
18
|
-
|
|
19
|
-
src/views/[域]/[模块]/[子模块]/[kebab-case目录]/
|
|
20
|
-
├── index.vue ← 纯模板+解构,不写业务逻辑
|
|
21
|
-
├── data.ts ← AbstractPageQueryHook 类 + API_CONFIG
|
|
22
|
-
├── index.scss ← 页面样式(可为空)
|
|
23
|
-
└── api.md ← 接口约定(前端预留 + 后端出接口依据)
|
|
24
|
-
```
|
|
12
|
+
## 核心规则摘要(在读取完整指令前必须遵守)
|
|
25
13
|
|
|
26
|
-
|
|
14
|
+
- 页面三文件分离:index.vue(模板)+ data.ts(逻辑)+ api.md(接口)
|
|
15
|
+
- **禁止**在 index.vue 写业务逻辑,**禁止**直接用 axios
|
|
16
|
+
- **必须**用 BaseTable + `render-type="agGrid"` + 全局唯一 cid
|
|
17
|
+
- code-fix 完成后**必须**自动 `wl-skills validate` 复扫(不可跳过)
|
|
18
|
+
- 高风险 Skill(page-codegen / sync 类 / code-fix)触发前**必须**二次确认
|
|
19
|
+
- 匹配 2+ Skill 时**必须**询问用户意图
|
|
27
20
|
|
|
28
|
-
|
|
29
|
-
- **极个性弹窗**(仅单页面使用,c_modal 无法满足)→ 放在页面 `components/xxxModal.vue`
|
|
21
|
+
## 内容目录
|
|
30
22
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
> 详细规范见 `docs/mock-architecture.md`
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
mock/
|
|
37
|
-
├── _utils.ts ← 共享工具(pageResult / ok / paginate / nowStr / pick)
|
|
38
|
-
└── [业务域]/ ← 镜像 src/views 第一级目录
|
|
39
|
-
└── [模块].ts ← 每个模块一个文件,export default MockMethod[]
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
- **开关**:`.env.dev` 中 `ENV_MOCK=true/false`,`vite.config.ts` 中 `viteMockServe({ enable: command === "serve" && config.ENV_MOCK !== "false" })`
|
|
43
|
-
- **解耦**:mock 文件放在项目根 `mock/` 目录,不在 `src/views` 中 import 任何 mock
|
|
44
|
-
- **URL 对齐**:`API_CONFIG` 保持真实路径(如 `/mdata/mdataModel/list`),mock 端点带 `/dev-api` 前缀,关闭 mock 后无需改页面代码
|
|
45
|
-
- **STORE 模式**:`let STORE = Array.from({ length: N }, genRecord)` 可变数组,CRUD 直接修改内存,查询立即可见
|
|
46
|
-
- **按模块自治**:删某业务 mock 只删对应文件,不影响其他模块
|
|
47
|
-
- **一键清理**:`wl-skills mock-clean --domain [域]` 或 `--all`
|
|
48
|
-
|
|
49
|
-
## data.ts 核心模式
|
|
50
|
-
|
|
51
|
-
> 配置化驱动,通过 `API_CONFIG` + `class extends AbstractPageQueryHook` 实现零 API 层开发。
|
|
52
|
-
> 基类内置 `getAction`/`postAction`/`putAction`/`deleteAction`/`actionBatch` 等 HTTP 方法(详见 `docs/request.md`),标准 CRUD 无需独立 API 文件。
|
|
53
|
-
|
|
54
|
-
```typescript
|
|
55
|
-
import {
|
|
56
|
-
AbstractPageQueryHook,
|
|
57
|
-
BaseQueryItemDesc,
|
|
58
|
-
ActionButtonDesc,
|
|
59
|
-
TableColumnDesc,
|
|
60
|
-
BusLogicDataType
|
|
61
|
-
} from "@/types/page";
|
|
62
|
-
import { getAction, postAction } from "@jhlc/common-core/src/api/action";
|
|
63
|
-
|
|
64
|
-
export const API_CONFIG = {
|
|
65
|
-
list: "/[服务缩写]/[资源名]/list",
|
|
66
|
-
remove: "/[服务缩写]/[资源名]/remove",
|
|
67
|
-
getById: "/[服务缩写]/[资源名]/getById",
|
|
68
|
-
save: "/[服务缩写]/[资源名]/save",
|
|
69
|
-
update: "/[服务缩写]/[资源名]/update",
|
|
70
|
-
export: "/[服务缩写]/[资源名]/export"
|
|
71
|
-
} as const;
|
|
72
|
-
|
|
73
|
-
export function createPage(addModalRef?: any) {
|
|
74
|
-
let Page = new (class extends AbstractPageQueryHook {
|
|
75
|
-
constructor() {
|
|
76
|
-
super({ url: { list: API_CONFIG.list, remove: API_CONFIG.remove } });
|
|
77
|
-
}
|
|
78
|
-
queryDef(): BaseQueryItemDesc<any>[] {
|
|
79
|
-
return [
|
|
80
|
-
{ name: "fieldName", label: "字段名", placeholder: "请输入" },
|
|
81
|
-
{
|
|
82
|
-
name: "status",
|
|
83
|
-
label: "状态",
|
|
84
|
-
logicType: BusLogicDataType.dict,
|
|
85
|
-
logicValue: "dictCode"
|
|
86
|
-
}
|
|
87
|
-
];
|
|
88
|
-
}
|
|
89
|
-
toolbarDef(): ActionButtonDesc[] {
|
|
90
|
-
return [
|
|
91
|
-
{
|
|
92
|
-
name: "primary",
|
|
93
|
-
label: "新增",
|
|
94
|
-
plain: true,
|
|
95
|
-
onClick: () => addModalRef?.value?.open()
|
|
96
|
-
}
|
|
97
|
-
];
|
|
98
|
-
}
|
|
99
|
-
columnsDef(): TableColumnDesc<any>[] {
|
|
100
|
-
return [
|
|
101
|
-
{ type: "selection" },
|
|
102
|
-
{ type: "index" },
|
|
103
|
-
{
|
|
104
|
-
label: "字段名",
|
|
105
|
-
name: "fieldName",
|
|
106
|
-
minWidth: 120,
|
|
107
|
-
sortable: true,
|
|
108
|
-
filterable: true
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
label: "状态",
|
|
112
|
-
name: "status",
|
|
113
|
-
minWidth: 100,
|
|
114
|
-
logicType: BusLogicDataType.dict,
|
|
115
|
-
logicValue: "dictCode",
|
|
116
|
-
sortable: true,
|
|
117
|
-
filterable: true
|
|
118
|
-
}
|
|
119
|
-
];
|
|
120
|
-
}
|
|
121
|
-
})();
|
|
122
|
-
return Page.create() as any;
|
|
123
|
-
}
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## index.vue 标准模板
|
|
127
|
-
|
|
128
|
-
```vue
|
|
129
|
-
<template>
|
|
130
|
-
<div class="app-container app-page-container">
|
|
131
|
-
<BaseQuery
|
|
132
|
-
:form="queryParam"
|
|
133
|
-
:items="queryItems"
|
|
134
|
-
@select="select"
|
|
135
|
-
@reset="select"
|
|
136
|
-
/>
|
|
137
|
-
<BaseToolbar :items="toolbars" />
|
|
138
|
-
<BaseTable
|
|
139
|
-
ref="tableRef"
|
|
140
|
-
render-type="agGrid"
|
|
141
|
-
:cid="TABLE_CID"
|
|
142
|
-
:data="list"
|
|
143
|
-
:columns="columns"
|
|
144
|
-
showToolbar
|
|
145
|
-
/>
|
|
146
|
-
<jh-pagination
|
|
147
|
-
v-show="page.total && page.total > 0"
|
|
148
|
-
:total="page.total || 0"
|
|
149
|
-
v-model:currentPage="page.current"
|
|
150
|
-
v-model:pageSize="page.size"
|
|
151
|
-
@current-change="select"
|
|
152
|
-
@size-change="select"
|
|
153
|
-
/>
|
|
154
|
-
</div>
|
|
155
|
-
</template>
|
|
156
|
-
|
|
157
|
-
<script setup lang="ts">
|
|
158
|
-
import { createPage, TABLE_CID } from "./data";
|
|
159
|
-
|
|
160
|
-
const Page = createPage();
|
|
161
|
-
const {
|
|
162
|
-
tableRef,
|
|
163
|
-
page,
|
|
164
|
-
queryParam,
|
|
165
|
-
list,
|
|
166
|
-
queryItems,
|
|
167
|
-
columns,
|
|
168
|
-
toolbars,
|
|
169
|
-
select
|
|
170
|
-
} = Page;
|
|
171
|
-
|
|
172
|
-
onMounted(() => select());
|
|
173
|
-
</script>
|
|
174
|
-
|
|
175
|
-
<style scoped lang="scss">
|
|
176
|
-
@import "./index.scss";
|
|
177
|
-
</style>
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
## 命名规范
|
|
181
|
-
|
|
182
|
-
| 位置 | 规范 | 示例 |
|
|
183
|
-
| ------------ | ----------------------- | -------------------------------- |
|
|
184
|
-
| 目录/路由 | kebab-case | `ompt-mill-plan/` |
|
|
185
|
-
| pages.ts | `["kebab名", "中文名"]` | `["ompt-mill-plan", "轧钢计划"]` |
|
|
186
|
-
| 字段名 | camelCase | `orderNo`, `planStatus` |
|
|
187
|
-
| logicValue | camelCase | `planStatus`, `plineCode` |
|
|
188
|
-
| 全局组件 | `C_PascalCase/` | `C_Tree/` |
|
|
189
|
-
| 局部公共组件 | `c_camelCase/` | `c_modal/`、`c_detailPanel/` |
|
|
190
|
-
| 页面私有组件 | camelCase | `addModal.vue`(仅极个性弹窗) |
|
|
191
|
-
|
|
192
|
-
## 平台组件速查
|
|
193
|
-
|
|
194
|
-
| 用途 | 组件 | 来源 |
|
|
195
|
-
| -------- | -------------- | -------------------------------- |
|
|
196
|
-
| 查询区 | BaseQuery | @jhlc/common-core |
|
|
197
|
-
| 工具栏 | BaseToolbar | @jhlc/common-core |
|
|
198
|
-
| 表格 | BaseTable | @jhlc/common-core |
|
|
199
|
-
| 分页 | jh-pagination | @jhlc/jh-ui |
|
|
200
|
-
| 上下分栏 | jh-drag-row | @jhlc/jh-ui |
|
|
201
|
-
| 下拉选择 | jh-select | @jhlc/jh-ui(dict 属性自动加载) |
|
|
202
|
-
| 单日期 | jh-date | @jhlc/jh-ui |
|
|
203
|
-
| 日期范围 | jh-date-range | @jhlc/jh-ui |
|
|
204
|
-
| 用户选择 | jh-user-picker | @jhlc/jh-ui |
|
|
205
|
-
| 部门选择 | jh-dept-picker | @jhlc/jh-ui |
|
|
206
|
-
| 文件上传 | jh-file-upload | @jhlc/jh-ui |
|
|
207
|
-
| 文本翻译 | jh-text | @jhlc/jh-ui |
|
|
208
|
-
| 左右分割 | jh-drag-col | @jhlc/jh-ui (#left/#right slot) |
|
|
209
|
-
| 树形面板 | C_Tree | src/components/global |
|
|
210
|
-
|
|
211
|
-
## 组件提取策略
|
|
212
|
-
|
|
213
|
-
| 场景 | 位置 | 命名 |
|
|
214
|
-
| ------------------------- | ------------------------------------- | ----------------------- |
|
|
215
|
-
| 3+ 页面复用 | `src/components/global/C_PascalCase/` | 全局自动注册 |
|
|
216
|
-
| 2+ 页面复用(如通用弹窗) | `src/components/local/c_camelCase/` | 按需导入,如 `c_modal/` |
|
|
217
|
-
| 仅单页面使用 | 页面 `components/xxxModal.vue` | 仅当 c_modal 无法满足时 |
|
|
218
|
-
|
|
219
|
-
## 禁止事项
|
|
220
|
-
|
|
221
|
-
- ❌ index.vue 中写业务逻辑(逻辑全在 data.ts)
|
|
222
|
-
- ❌ 使用 Vuex(用 Pinia)
|
|
223
|
-
- ❌ `::v-deep` / `/deep/`(用 `:deep()`)
|
|
224
|
-
- ❌ 直接用 axios(用 getAction/postAction)
|
|
225
|
-
- ❌ 手写查询表单/工具栏/分页(用 BaseQuery/BaseToolbar/jh-pagination)
|
|
226
|
-
- ❌ 每个页面重复写弹窗组件(优先用 `c_modal` 等局部公共组件)
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
---
|
|
230
|
-
|
|
231
|
-
## 规范门控(standards/index.md 懒加载)
|
|
232
|
-
|
|
233
|
-
> ⚠️ 本节为**强制约定**,所有 AI 编辑器/模型都必须遵守。
|
|
234
|
-
|
|
235
|
-
完整 14 条编码规范拆分在 `.github/standards/01 ~ 14.md`,由 `standards/index.md` 提供任务类型 → 规范子集映射,**按需加载,不全量读取**。
|
|
236
|
-
|
|
237
|
-
> 任务类型 → 必读规范映射以 `standards/index.md` 为**唯一数据源**,此处不再重复列表。执行前先 `read_file` 加载 `standards/index.md` 确认当前映射。
|
|
238
|
-
|
|
239
|
-
**执行任何代码生成或改动前**:
|
|
240
|
-
1. 先 `read_file` 加载 `standards/index.md` 确认任务类型
|
|
241
|
-
2. 按映射读取对应 `standards/0X-*.md`
|
|
242
|
-
3. 在 Pre-flight 声明中列出已加载文件
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## AI Skills 自动调度
|
|
247
|
-
|
|
248
|
-
完整触发词与 Skill 路径见 `skills/_registry.md`(**单一数据源**,不在此处重复)。
|
|
249
|
-
|
|
250
|
-
> 🔖 **首选「场景索引」**:`skills/_best-practices.md`
|
|
251
|
-
>
|
|
252
|
-
> 进入项目对话或开启新任务时,AI 必须先 `read_file` 加载:
|
|
253
|
-
>
|
|
254
|
-
> 1. `skills/_best-practices.md`(按场景的最佳实践索引,**首选路由依据**)
|
|
255
|
-
> 2. `skills/_registry.md`(触发词 → Skill 路径映射)
|
|
256
|
-
> 3. `skills/_pipeline.md`(Skill I/O 契约 + 推荐链式顺序)
|
|
257
|
-
>
|
|
258
|
-
> 三者联合判定后再决定调用哪个 Skill / MCP 工具。**禁止仅凭关键词命中就跳过 best-practices 的语义判断**。
|
|
259
|
-
>
|
|
260
|
-
> sync 类(菜单/字典/权限)任务必须额外加载 `skills/sync/_mcp-guardrail.md`,调用失败按 §2 自愈剧本引导用户完善配置后重试,不绕开 MCP。
|
|
261
|
-
|
|
262
|
-
### Intent Router(自然语言智能识别)
|
|
263
|
-
|
|
264
|
-
用户不需要记住 Skill 名。只要消息包含以下任一语义,AI 必须自动路由到对应 Skill:
|
|
265
|
-
|
|
266
|
-
| 用户自然表达 | 自动触发 |
|
|
267
|
-
| ------------ | -------- |
|
|
268
|
-
| 生成页面 / 做个页面 / 列表页 / 管理页 / 台账 / 根据原型 / 根据截图 / 补页面 | `page-codegen`,必要时先 `prototype-scan` + `api-contract` |
|
|
269
|
-
| 解析说明书 / 规范文档转页面 / 根据说明书生成 / IPO 转页面 / docs/spec 路径 / 功能编码(PMMB001) | `spec-doc-parse`(**规范线**,wl-skills-design 标准说明书专属,禁止 prototype-scan 接管) |
|
|
270
|
-
| mock / 假数据 / 后端没好 / 先能跑 / 联调前 | `page-codegen` 的 mock-first 规则 |
|
|
271
|
-
| 菜单 / 注册页面 / 点击进不来 / 同步菜单 / 补菜单 | `menu-sync` + `route-check` |
|
|
272
|
-
| 风格 / 样式不生效 / skills-ui / 操作列 / 状态标签 / AGGrid | `page-codegen` + `wk-skills-ui runtime` + `doctor-ui` |
|
|
273
|
-
| 规范检查 / 体检 / 接手项目 / 偏差 | `convention-audit` 或 CLI `validate` |
|
|
274
|
-
| 用户提供完整原型/详设/字段或字典资料,且意图为业务梳理/模块沉淀/字段字典维护/待确认事项整理 | `business-doc-extract`(**语义级触发,禁止仅靠关键词命中**;碎片需求默认跳过) |
|
|
275
|
-
|
|
276
|
-
页面生成类任务命中后,必须读取:
|
|
277
|
-
|
|
278
|
-
1. `.github/skills/core/page-codegen/SKILL.md`
|
|
279
|
-
2. `.github/skills/core/page-codegen/templates/_index.md`
|
|
280
|
-
3. 匹配的 `TPL-*.md`
|
|
281
|
-
4. `.github/standards/12-base-table.md`
|
|
282
|
-
5. 如涉及菜单,读取 `.github/skills/sync/menu-sync/SKILL.md`
|
|
283
|
-
|
|
284
|
-
### 页面模板硬约束
|
|
285
|
-
|
|
286
|
-
生成业务表格时,必须同时满足:
|
|
287
|
-
|
|
288
|
-
- 使用 `AbstractPageQueryHook + BaseQuery + BaseToolbar + BaseTable + jh-pagination`
|
|
289
|
-
- `BaseTable` 显式 `render-type="agGrid"`
|
|
290
|
-
- `BaseTable` 绑定全局唯一 `cid` / `:cid`
|
|
291
|
-
- 列定义使用 `@agile-team/wk-skills-ui/runtime` 的 `defineColumns()`
|
|
292
|
-
- 操作列使用 `renderOps()`,禁止 `operations: []`
|
|
293
|
-
- 保留 `common-core` 平台骨架,不得生搬硬套 `wk-skills-ui` 通用模板里的 `usePageHook/el-form/el-pagination`
|
|
294
|
-
- 生成后建议运行 `wl-skills validate-page <页面目录>` 和 `wl-skills doctor-ui`
|
|
295
|
-
|
|
296
|
-
**Skill 状态总览 / 路径 / 完整触发词**:见 `skills/_registry.md`(**单一数据源**,新增或激活 Skill 只改这一处)。
|
|
297
|
-
|
|
298
|
-
**执行规则**:
|
|
299
|
-
|
|
300
|
-
1. 用户消息匹配 `_registry.md` 触发词 → 用 `read_file` 加载对应 SKILL.md
|
|
301
|
-
2. SKILL.md 中标注的"必读 standards"按 standards/index.md 映射加载
|
|
302
|
-
3. 在 SKILL.md 指示下输出 **Pre-flight 声明**(强制)
|
|
303
|
-
|
|
304
|
-
---
|
|
305
|
-
|
|
306
|
-
## Pre-flight 声明(强制约定式输出)
|
|
307
|
-
|
|
308
|
-
每次 Skill 触发时,**必须先输出**以下结构的 Pre-flight 声明,再开始执行:
|
|
309
|
-
|
|
310
|
-
```
|
|
311
|
-
🚀 已触发技能 {skill-name}/SKILL.md → {一句话用途}
|
|
312
|
-
✅ 已读取 standards/index.md → 规范门控
|
|
313
|
-
✅ 已读取 standards/{相关条目} → {一句话说明}
|
|
314
|
-
✅ 已读取 {其他必要文档} → {说明}
|
|
315
|
-
✅ 工具链检测:{各项 ✓ / ✗}
|
|
316
|
-
✅ {其他前置检查项,如 cid 生成等}
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
**工具链检测失败必须暂停**:
|
|
320
|
-
|
|
321
|
-
```
|
|
322
|
-
❌ 工具链检测失败:未找到 {缺失文件}
|
|
323
|
-
→ 请执行:npx @robot-admin/git-standards init
|
|
324
|
-
→ 或联系 CHENY(工号 409322)解决
|
|
325
|
-
→ ⛔ 任务已暂停,修复后重新触发
|
|
326
|
-
```
|
|
327
|
-
|
|
328
|
-
---
|
|
329
|
-
|
|
330
|
-
## 报告类文件(reports/)
|
|
331
|
-
|
|
332
|
-
AI 生成的所有报告类文件统一写入 `.github/reports/`,**全部追加不覆盖**。
|
|
333
|
-
|
|
334
|
-
| 文件 | 写入方 | 读取方 |
|
|
335
|
-
| --------------------------------- | ------------------ | --------------------- |
|
|
336
|
-
| `reports/SYS_MENU_INFO.md` | page-codegen | menu-sync |
|
|
337
|
-
| `reports/SYS_DICT_INFO.md` | dict-collect | dict-sync |
|
|
338
|
-
| `reports/SYS_PERMISSION_INFO.md` [PLANNED] | permission-collect | permission-sync |
|
|
339
|
-
| `reports/规范审查报告.md` | convention-audit | 人工 → code-fix |
|
|
340
|
-
| `reports/组件提取建议.md` | convention-audit | 人工 → template-extract |
|
|
341
|
-
|
|
342
|
-
详见 `reports/README.md`。
|
|
343
|
-
|
|
344
|
-
---
|
|
345
|
-
|
|
346
|
-
## 组件文档按需查阅
|
|
347
|
-
|
|
348
|
-
生成代码时如需了解组件用法,按需读取以下文档(不要全量加载):
|
|
349
|
-
|
|
350
|
-
| 主题 | 文档路径 |
|
|
351
|
-
| ----------------------------------- | ----------------------------------------------------- |
|
|
352
|
-
| BaseQuery / BaseTable / BaseToolbar | `src/components/remote/{BaseXxx}/README.md` |
|
|
353
|
-
| jh-* 平台组件 | `docs/jh-{name}.md` |
|
|
354
|
-
| c_formModal / c_listModal 等 | `src/components/local/{c_xxx}/README.md` |
|
|
355
|
-
| AbstractPageQueryHook 最佳实践 | `docs/page-query-hook-best-practices.md` |
|
|
356
|
-
| HTTP 请求工具 | `docs/request.md` |
|
|
357
|
-
|
|
358
|
-
> 详细对照表与"何时必读哪个文档"见 `standards/13-platform-components.md`。
|
|
359
|
-
|
|
360
|
-
---
|
|
361
|
-
|
|
362
|
-
## 领域样例参考
|
|
363
|
-
|
|
364
|
-
首次生成某类页面时,可读取 `demo/` 下对应样例:
|
|
365
|
-
|
|
366
|
-
| 模板类型 | 样例路径 |
|
|
367
|
-
| --------------------- | ------------------------------------------------------- |
|
|
368
|
-
| LIST | `demo/produce/aiflow/mmwr-customer-archive/` |
|
|
369
|
-
| FORM_ROUTE | `demo/produce/aiflow/mmwr-customer-apply-add-form/` |
|
|
370
|
-
| CHANGE_HISTORY | `demo/produce/aiflow/mmwr-customer-apply-change-history/` |
|
|
371
|
-
| DETAIL_TABS | `demo/produce/aiflow/mmwr-customer-detail/` |
|
|
372
|
-
| MASTER_DETAIL | `demo/sale/demo/metallurgical-spec/` |
|
|
373
|
-
|
|
374
|
-
---
|
|
375
|
-
|
|
376
|
-
## 小修改 / 零散变更的约束(同样不可绕过)
|
|
377
|
-
|
|
378
|
-
> 即使不是"生成新页面",仅做小修改(加字段、改样式、修 bug、加按钮)也必须遵守:
|
|
379
|
-
|
|
380
|
-
| 规则 | 说明 |
|
|
23
|
+
| 内容 | 路径 |
|
|
381
24
|
|------|------|
|
|
382
|
-
|
|
|
383
|
-
|
|
|
384
|
-
|
|
|
385
|
-
|
|
|
386
|
-
|
|
|
387
|
-
|
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
> **CI 兜底**:即使 `git commit --no-verify` 绕过 pre-commit,CI 流水线中的 `wl-skills validate --strict`(正则 + AST 全量检测)会再次拦截,error 和 warn 都导致 CI 失败、阻断 PR 合并。这是不可绕开的最后一道防线。
|
|
392
|
-
|
|
393
|
-
### 豁免标记(特殊场景)
|
|
394
|
-
|
|
395
|
-
极少数场景下确实需要绕过某条规则(如弹窗内确实需要原生 `<el-table>`)时,在文件中添加精确豁免标记:
|
|
396
|
-
|
|
397
|
-
```vue
|
|
398
|
-
<!-- wl-skills:ignore R3 -->
|
|
399
|
-
<el-table :data="dialogData">...</el-table>
|
|
400
|
-
```
|
|
401
|
-
|
|
402
|
-
或在 `<script>` 中:
|
|
403
|
-
|
|
404
|
-
```typescript
|
|
405
|
-
// wl-skills:ignore R2
|
|
406
|
-
const data = sessionStorage.getItem("key");
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
**规则**:
|
|
410
|
-
- 必须带规则编号(R1~R9),精确豁免,不支持全局豁免
|
|
411
|
-
- 标记放在被豁免的代码附近,便于 review
|
|
412
|
-
- CI `--strict` 模式下豁免标记仍然生效(豁免不是违规)
|
|
413
|
-
|
|
414
|
-
---
|
|
415
|
-
|
|
416
|
-
## AI 执行护栏(强制约定)
|
|
417
|
-
|
|
418
|
-
以下规则对所有 AI 助手(Copilot / Claude / GPT 等)在本项目中执行任务时**强制生效**,不可被用户口头覆盖。
|
|
419
|
-
|
|
420
|
-
### 1. 闭环强制约定
|
|
421
|
-
|
|
422
|
-
| 触发场景 | 强制动作 | 不可跳过原因 |
|
|
423
|
-
|----------|----------|-------------|
|
|
424
|
-
| code-fix 执行完毕 | 自动执行 `wl-skills validate` 复扫 | 确保修复未引入新偏差 |
|
|
425
|
-
| 复扫发现新问题 | 继续修复 → 再次复扫,直到通过 | 闭环不允许断开 |
|
|
426
|
-
| 用户说“不用验证了” | **仍然执行**复扫,只是不再追问 | 规范高于口头指令 |
|
|
427
|
-
|
|
428
|
-
### 2. 高风险 Skill 确认机制
|
|
429
|
-
|
|
430
|
-
以下 Skill 触发前必须向用户**二次确认**,不可静默执行:
|
|
431
|
-
|
|
432
|
-
- `page-codegen`(生成整页代码,不可逆)
|
|
433
|
-
- `menu-sync` / `dict-sync` / `permission-sync`(跨系统同步,影响后端数据)
|
|
434
|
-
- `code-fix`(批量修改源码文件,需确认范围)
|
|
435
|
-
|
|
436
|
-
确认话术模板:
|
|
437
|
-
|
|
438
|
-
```
|
|
439
|
-
即将执行 [Skill名称],影响范围:[文件列表 / 后端数据类型]
|
|
440
|
-
是否继续?(Y/n)
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
### 3. 误触发防护
|
|
444
|
-
|
|
445
|
-
| 情况 | 处理方式 |
|
|
446
|
-
|------|----------|
|
|
447
|
-
| 用户意图匹配 2+ 个 Skill | 必须列出候选并询问用户意图 |
|
|
448
|
-
| 用户意图模糊无法映射到 Skill | 询问澄清,不猜测执行 |
|
|
449
|
-
| 仅匹配 1 个 Skill 且置信度高 | 直接执行,无需确认 |
|
|
450
|
-
|
|
451
|
-
### 4. Pre-flight 声明完整性
|
|
452
|
-
|
|
453
|
-
AI 在执行任何 Skill 前必须输出 Pre-flight 声明:
|
|
454
|
-
|
|
455
|
-
```
|
|
456
|
-
📋 Pre-flight:
|
|
457
|
-
- Skill: [skill-name]
|
|
458
|
-
- 触发依据: [用户原话 / 管道上游输出]
|
|
459
|
-
- 影响文件: [文件列表]
|
|
460
|
-
- 预期结果: [一句话描述]
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
### 5. 修复建议输出规范
|
|
464
|
-
|
|
465
|
-
当 `wl-skills validate` 阻断时,AI 必须:
|
|
466
|
-
1. 完整展示阻断项(error + strict 模式下的 warn)
|
|
467
|
-
2. 对每项给出**具体修复建议**(而非泛泛的“请修复”)
|
|
468
|
-
3. 标注是否可自动修复(auto: true/false)
|
|
469
|
-
4. 引导用户触发修复流程:`规范审计 → 自动修复 → 复扫验证`
|
|
470
|
-
|
|
471
|
-
---
|
|
472
|
-
|
|
473
|
-
> 📚 完整指南:`.github/guides/usage.md`
|
|
474
|
-
> 🏗️ 架构设计:`.github/guides/architecture.md`
|
|
475
|
-
> 🔧 维护者文档:`kit-internal/`(仓库内,不安装到业务项目)
|
|
25
|
+
| 完整指令(Skill路由+规范+场景+护栏) | `.wl-skills/copilot-instructions-full.md` |
|
|
26
|
+
| Skill 路由表(触发词→路径映射) | `.wl-skills/skills/_registry.md` |
|
|
27
|
+
| 场景索引(按场景的最佳实践) | `.wl-skills/skills/_best-practices.md` |
|
|
28
|
+
| I/O 契约(Skill 间串联协议) | `.wl-skills/skills/_pipeline.md` |
|
|
29
|
+
| 规范(01~14) | `.wl-skills/standards/` |
|
|
30
|
+
| 文档(组件用法) | `.wl-skills/docs/` |
|
|
31
|
+
| 指南 | `.wl-skills/guides/` |
|
|
32
|
+
| 报告 | `.wl-skills/reports/` |
|
|
33
|
+
| 模板 | `.wl-skills/templates/` |
|