@manohub/kit 0.7.0 → 0.8.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/CONTRACT.md CHANGED
@@ -298,7 +298,7 @@ configureHost(hostEl)
298
298
  | --- | --- | --- |
299
299
  | **L2-7 页头两模式不可混** | 传 `title` → 内置布局(`subTitle` 在下一行、`icon` 在左、`extra` 在右);**不传 `title` → 纯 slot 直出(整行替换)**,此时 `subTitle` 不生效、**`extra` 不渲染**。**想用右侧位就必须传 `title`** | 不传 title 却传 extra,右侧位会**静默消失**,最容易被当成「样式坏了」 |
300
300
  | **L2-8 缺省图标** | `icon` 不传 → 渲染设计稿默认图标(26×26 圆角方块,`currentColor`)。**不要为了「去掉图标」而传空值**;换图标传 `IconNameList` 里的 `<Icon>` | 「不传」是「用默认」,不是「不要」 |
301
- | **L2-9 `extra` 是唯一自由位** | 页头右侧**没有独立成员件**;**区域级筛选 / 操作不得因「页头能放」就提到页面级**;页面级页签用主体里的 `Tabs` / `Tabset` | 提到页面级会让「这块区域」失去自己的筛选位 |
301
+ | **L2-9 `extra` 是唯一自由位** | 页头右侧**没有独立成员件**;**区域级筛选 / 操作不得因「页头能放」就提到页面级**;页面级页签用主体里的 `TabBar` / `Tabs` | 提到页面级会让「这块区域」失去自己的筛选位 |
302
302
 
303
303
  ### 组 4 · 区域:筛选 / 操作 / 滚动 / 分页
304
304
 
@@ -558,6 +558,11 @@ import Sortable from 'sortablejs' // 行为库:不产
558
558
  >
559
559
  > **0.7.0** 是它之后的第一批修复与补齐(12.2),带去**四处行为变更** ——
560
560
  > 从 0.6.x 升上来的应用**只需读 12.2**。
561
+ >
562
+ > **0.8.0** 的技能目录改名:随包技能目录由 `kit` / `kit-migrate` / `kit-dev` 改为
563
+ > `manohub-kit` / `manohub-kit-migrate` / `manohub-kit-dev`(`frontmatter.name` 同步)。
564
+ > 技能内容与流程一字未变,但**升级后必须手工删掉技能目录下的那三个旧目录**再重跑 `kit install` ——
565
+ > 安装器只管理自己白名单内的目录,不会替你清旧名,留着会让新旧两份技能同时在场。
561
566
 
562
567
  ### 12.1 四包重构(0.4.3 → 0.6.0)变了什么
563
568
 
@@ -597,7 +602,7 @@ import Sortable from 'sortablejs' // 行为库:不产
597
602
  自建容器换锚 → 补富文本复权(或提件)→ 换骨架与件 → 收样式与图形。类名 `class="app-container"` 不必动
598
603
  (已降级为本包内部命名)。
599
604
 
600
- ### 12.2 修复与补齐(0.6.x → 0.7.0)变了什么
605
+ ### 12.2 修复与补齐(0.6.x → 0.7.1)变了什么
601
606
 
602
607
  #### 一、行为变更(五处,逐条确认)
603
608
 
@@ -615,7 +620,7 @@ import Sortable from 'sortablejs' // 行为库:不产
615
620
  | --- | --- |
616
621
  | `Select` 的选项行补按钮重置(`border` / `background` / `font-family` / `text-align` 四条) | 选项行呈**原生按钮外观**:灰底 + 2px 立体边框 + 居中 Arial —— 而同一个面板里的「创建 xxx」行是正常的(那个类写齐了重置) |
617
622
  | `Dialog` 补三段 flex 布局 + 新增 `panelHeight` | 设固定高度时**底栏不贴底**(body 只有内容高,剩余空间全留在 footer 之后);且此前「固定高度」只能经 `attrs.style` 传给未定义路径 |
618
- | `Tabs` / `Tabset` 补 `emits.update:value` | `v-model:value="current"` **静默失效** —— 受控值不变、内部也不更新,点 tab **毫无反应且不报错**(两件的文档注释都教 `v-model:value`) |
623
+ | `TabBar` / `Tabs` 补 `emits.update:value` | `v-model:value="current"` **静默失效** —— 受控值不变、内部也不更新,点 tab **毫无反应且不报错**(两件的文档注释都教 `v-model:value`) |
619
624
  | `reset` 的两条明文禁例对齐实现 | 契约曾写「选择器里不得出现 `:root` / `html` / `body`」,而 reset 自身又要求「整链高度由消费方自理」 ⇒ 那条链既必须给、又不得写。**该条款已删除**,入口基线改为显式合法(见 §1.2) |
620
625
  | L3-3 的措辞 | 旧文写成「import 源白名单」,把**业务域自有包**(`@manohub/api-client`)与**不产生外观的行为库**也判成越界;而契约 §11 又把「导入越界」列为**登记也不放行** ⇒ 每个已迁移应用都带着一条不可豁免的违规。**已改为「外观来源白名单」** |
621
626
 
@@ -642,6 +647,25 @@ import Sortable from 'sortablejs' // 行为库:不产
642
647
  (脚本按包名直接拦住并提示该给哪个根)。**它只覆盖能机械判定的部分** ——
643
648
  组件默认值是否与文档一致、骨架归位、三态分工这些仍走 §7 自检清单。
644
649
 
650
+ #### 四、0.7.1 的破坏性改名(**版本口径破例,逐条确认**)
651
+
652
+ ⚠️ **破例声明**:本仓 `AGENTS.md` 的硬约束写「**0.x 单线,破坏性变更升次版本并通知消费方**」,
653
+ 下面四项都属破坏性变更,按规矩该落 **0.8.0**。`0.7.1` 这个号是本地 tgz 直装联调期就定下的基线号,
654
+ 发包时经裁定**维持 0.7.1、不再补发 0.8.0**(四包 2026-09-28 已发到 npm 官方仓)。
655
+ 登记于此供后续升级与本仓的版本裁定参照 —— **下次同类批次请直接按硬约束升次版本**。
656
+
657
+ | 变更 | 0.7.0 | 0.7.1 | 为什么要改 / 怎么迁 |
658
+ | --- | --- | --- | --- |
659
+ | `Tabset` 更名 **`Tabs`** | `Tabset`(容器 / 骨架) | **`Tabs`** | `Tabs` 这个名字本就该给容器,`Tabset` 是历史叫法。类名 `.mh-tabset*` → `.mh-tabs*` |
660
+ | `Tabs` 更名 **`TabBar`** | `Tabs`(页签条) | **`TabBar`** | 旧 `Tabs` 只画那条页签条,和容器同名同族;改名后「条」与「容器」各归其位。类名 `.mh-tabs*` → `.mh-tabbar*`,令牌 `--ui-tabs-*` → `--ui-tabbar-*` |
661
+ | **零 JS 档位表退役** | `operations/tabs.css` 里有一张 1..8 档的 `:has(...)` 显形表 | **删除** | 它要求「上限 8 档 + 开关与面板同序 + 面板是 `.mh-tabs-panels` 直接子级」三条同时成立,实用面太窄,且 CSS 写不出通式。面板显隐**从此只剩组件路径**一条(按受控值给非选中面板下发 `hidden`)—— 纯 CSS 手写页签不再显形 |
662
+ | `.mh-tabs-panel` 不再钉 `display` | `display: block` | `flex: 1 1 auto` + `min-height: 0` | 钉 `display` 会顶掉消费方给的布局(实测把抽屉里的页签按钮挤到顶部)。面板高度从此由消费方与自身内容决定 |
663
+
664
+ **怎么迁**:`import { Tabset } from '@manohub/ui'` → 改名 `Tabs`;原先只当「页签条」用的 `Tabs` → 改名 `TabBar`。
665
+ 新增 **`TabPanel`** 作为 `Tabs` 的信息入口(`name` 既是页签文字、也是缺省项值):写了 `TabPanel` 就以它为准,
666
+ 否则回落「按顺序配对」旧写法,两条路不叠加;`selector` 插槽拿到的 `options` 就是提取出来的项。
667
+ **本仓内唯一消费点**是 `apps/mcp` 的配置抽屉(`mcp-config-drawer.tsx`),已随迁移同步。
668
+
645
669
  ### 12.3 存量应用怎么迁
646
670
 
647
671
  按**层**推进,每步单独可跑通(这也是最优顺序):
@@ -649,11 +673,11 @@ import Sortable from 'sortablejs' // 行为库:不产
649
673
  1. **L0 自查**(不可豁免,最先看):样式链两行 + 一个入口 + 锚。
650
674
  2. **L2 换骨架**:先按 §5 的三种模板把页面骨架摆对——这一步收益最大、风险最低。
651
675
  3. **L3 逐件换**:按 §6 换件与 prop。旧 `App*` 名与底层风格 prop 的对照见
652
- `skills/kit-migrate/references/migration-map.md`。**重点坑**:分页 `page`(0 基) →
676
+ `skills/manohub-kit-migrate/references/migration-map.md`。**重点坑**:分页 `page`(0 基) →
653
677
  `Pagination.modelValue`(1 基)、`Table.rows` → `Table.data`、`Textarea.maxLength` → `maxlength`、
654
678
  `Tooltip.placement` → `side` + `align`、`Steps.items/modelValue` → `steps/current`。
655
679
  4. **L1 收样式**:最后清应用 CSS——这一步做起来最快,但**前提是前三步已成**(否则你会把
656
680
  「本该换件解决的问题」当成样式问题去改)。
657
681
  5. **L1.5 收图形**:全量搜 `<svg` / 文字符号 / `size=` / `rotate(`。
658
682
 
659
- 逐文件的操作口径与验收清单见 `skills/kit-migrate/references/migration-playbook.md`。
683
+ 逐文件的操作口径与验收清单见 `skills/manohub-kit-migrate/references/migration-playbook.md`。
package/README.md CHANGED
@@ -114,7 +114,7 @@ pnpm build
114
114
  ```
115
115
 
116
116
  类名命名空间表放本仓 `docs/kit-namespaces.md`(per-app 文件,格式见技能包的
117
- `kit-migrate/references/migration-playbook.md`)—— 原 `appkit-guardrails.config.json` 不再被读取。
117
+ `manohub-kit-migrate/references/migration-playbook.md`)—— 原 `appkit-guardrails.config.json` 不再被读取。
118
118
 
119
119
  ### 6. 技能包落盘(AI 代理用)
120
120
 
@@ -147,9 +147,12 @@ pnpm exec kit install --dry-run # 先看会写什么
147
147
 
148
148
  | 技能 | 什么时候用 |
149
149
  | --- | --- |
150
- | `kit` | 不确定该用哪个子技能、问骨架层总体规范、要接入步骤与升级口径 |
151
- | `kit-dev` | 写/改页面:选模板、选组件与 prop、样式纪律、收工前自检 |
152
- | `kit-migrate` | 存量应用改造:按契约分层盘点、划批次、逐文件替换、逐层收口 |
150
+ | `manohub-kit` | 不确定该用哪个子技能、问骨架层总体规范、要接入步骤与升级口径 |
151
+ | `manohub-kit-dev` | 写/改页面:选模板、选组件与 prop、样式纪律、收工前自检 |
152
+ | `manohub-kit-migrate` | 存量应用改造:按契约分层盘点、划批次、逐文件替换、逐层收口 |
153
+
154
+ 技能目录名带包名前缀(旧名 `kit` / `kit-migrate` / `kit-dev` 已废弃):从带旧名的版本升级时,
155
+ 先手工删掉技能目录下的这三个旧目录再重跑 `kit install`,否则新旧两份技能会同时在场。
153
156
 
154
157
  ## 来源
155
158
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manohub/kit",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "子应用入口编排层:createSubApp(作用域容器与宿主锚点、pinia/路由/vue-query 装配、宿主挂载协议)、i18n 单实例与语言探测,外加随包分发的接入契约(CONTRACT.md,五层闭集条款 + 自检清单)与三个 AI 技能包。本包**零样式产物**:设计令牌(值)在 @manohub/theme,组件(类与行为)在 @manohub/ui,两者由消费方直接引入。",
package/skills/README.md CHANGED
@@ -1,78 +1,82 @@
1
- # @manohub/kit 技能包(随包分发)
2
-
3
- 本目录是随 npm 包一起发布的 AI 代理技能包,供**消费方**(接入了本包的子应用工程)使用。
4
-
5
- 契约条款的唯一事实源是包内 `CONTRACT.md`。技能只负责**按场景把代理导到正确的流程与查表入口**。
6
-
7
- ## 技能里为什么不写条款
8
-
9
- `CONTRACT.md` 是唯一的合规判据,它有两条性质:
10
-
11
- 1. **每条条款都是闭集** —— 白名单(如 L1-5 的属性白名单)或逐字清单(如 L3-1 的允许 import 源),
12
- 看一眼就能判定「符合 / 不符合」,不需要解释。
13
- 2. **§7 配了一份自检清单** —— 全是能直接回答的问句,收工前逐条过一遍即可。
14
-
15
- 所以技能里的**条款式描述一律算缺陷**:它必然与契约漂移,而契约才是唯一裁判。技能只写两件事 ——
16
- **「读契约第 X 节」** 与 **「过 §7 自检清单」**。
17
-
18
- ## 三个技能
19
-
20
- | 技能 | 职责 | 可独立调用 |
21
- |---|---|---|
22
- | `kit` | 入口编排:识别意图 → 调 `kit-migrate` 或 `kit-dev`(另有「从零建新应用」导到接入 SOP);承载跨场景硬约束 | 是(子技能也可直接调) |
23
- | `kit-migrate` | 存量应用改造到「`@manohub/ui` 组件 + `@manohub/kit` 骨架」(清理 `App*` 旧组件名、`.ak-*` 样式、直连底层组件库的写法):按契约逐层盘点 → 划批次 → 逐文件替换 → 逐层收口 → 验收;支持**只迁一部分**(典型是「只迁页面骨架」) | 是 |
24
- | `kit-dev` | 按骨架层规范做日常页面开发:选模板 / 选组件与 prop / 守样式纪律 / 缺件处置 / 自检 | 是 |
25
-
26
- ## 安装到消费方技能目录
27
-
28
- 在消费方**工程根**执行(缺省落 `.codebuddy/skills/`);`kit` 是本包的命令入口(`bin`),
29
- npm 消费方把 `pnpm exec` 换成 `npx`:
30
-
31
- ```bash
32
- pnpm exec kit install
33
-
34
- pnpm exec kit install --also-claude # 同时落 .claude/skills/
35
- pnpm exec kit install --target .x/skills
36
- pnpm exec kit install --dry-run # 只预览不落盘
37
- ```
38
-
39
- 输出示例(每个技能都会报告内容有没有变):
40
-
41
- ```text
42
- [kit 技能安装]
43
- 源:…/node_modules/@manohub/kit/skills
44
- 目标:…/.codebuddy/skills
45
- ….codebuddy/skills/kit —— 更新 2(共 3 个文件)
46
- ….codebuddy/skills/kit-migrate —— 已是包内最新(内容无变化,共 3 个文件)
47
- 完成:技能目录已与包内内容对齐(包升级后重跑本命令即刷新)
48
- ```
49
-
50
- 安装器是幂等的:每次执行**先清理同名技能目录再整体复制**,所以包升级后重跑一次即刷新到新版内容。
51
- 等价写法(老脚本/钩子里可用):`node node_modules/@manohub/kit/skills/install.mjs`。
52
- 它只管理 `kit` / `kit-migrate` / `kit-dev` 这三个目录,不触碰目标目录下的其它内容。
53
- 每次执行都会报告**技能内容有没有变**(「更新 N / 新增 N」=本次升级改了技能、已生效;
54
- 「已是包内最新」=本次升级没动技能包),这样消费方不必靠猜「我的技能是不是旧的」。
55
-
56
- ## 维护约定(改本目录时遵守)
57
-
58
- - 引用规范一律写**消费方视角**路径:`node_modules/@manohub/kit/CONTRACT.md` §x.y。
59
- 禁止出现本机绝对路径、worktree 路径、仓库内相对路径(技能落盘后与包目录分离,这些路径会失效)。
60
- - **不复述条款**:不抄白名单、不抄件名清单、不抄 prop 词表、不抄值。
61
- 需要时写「读契约 §x.y」或指向读取路径(见契约 §0 权威源表)。凡本目录内出现判据式描述,视为缺陷。
62
- - `SKILL.md` 只放流程与硬约束(控制在 5k 词内);查表内容(替换映射、场景配方)放各自的 `references/`,按需加载。
63
- - 三个技能的 `description` 触发条件互不重叠,否则代理会命中错的那个
64
- (`kit` 只在「意图还没落到具体任务」时命中,具体任务交给两个子技能)。
65
- - 技能引用的 `references/` 文件必须真实存在,文件名改动要同步 `SKILL.md`
66
- (已由 `verify-pack` 的 `checkSkillPack` 机械校验,跨技能引用 `../<skill>/references/…` 同样校验)。
67
- - 技能目录下的每个文件都必须真进 tarball(`references/` 漏发时「查表」会整体失效,也已机械校验)。
68
- - 技能引用的契约章节必须真实存在(改契约标题即需同步本目录,`verify-pack` 会校验章节号可解析)。
69
- - 技能与文档里的命令一律写**消费方命令** `pnpm exec kit install`(npm 注一句 `npx`)。
70
- - 本包**只有 `install` 一个子命令**(0.6.0 起 `kit lint` 及其四个校验子命令已下线)。
71
- `bin/` 是工具脚本、没有自测,改后手工跑一次确认参数透传(如 `--dry-run`),
72
- `verify-pack` 校验 `bin/kit.mjs` 随包分发。
73
- - 改动后跑门禁与打包校验(在仓库根):
74
-
75
- ```bash
76
- pnpm --filter @manohub/kit test:unit # 入口编排契约单测
77
- pnpm release:check # build + verify-pack(含技能包结构/引用校验)
78
- ```
1
+ # @manohub/kit 技能包(随包分发)
2
+
3
+ 本目录是随 npm 包一起发布的 AI 代理技能包,供**消费方**(接入了本包的子应用工程)使用。
4
+
5
+ 契约条款的唯一事实源是包内 `CONTRACT.md`。技能只负责**按场景把代理导到正确的流程与查表入口**。
6
+
7
+ ## 技能里为什么不写条款
8
+
9
+ `CONTRACT.md` 是唯一的合规判据,它有两条性质:
10
+
11
+ 1. **每条条款都是闭集** —— 白名单(如 L1-5 的属性白名单)或逐字清单(如 L3-1 的允许 import 源),
12
+ 看一眼就能判定「符合 / 不符合」,不需要解释。
13
+ 2. **§7 配了一份自检清单** —— 全是能直接回答的问句,收工前逐条过一遍即可。
14
+
15
+ 所以技能里的**条款式描述一律算缺陷**:它必然与契约漂移,而契约才是唯一裁判。技能只写两件事 ——
16
+ **「读契约第 X 节」** 与 **「过 §7 自检清单」**。
17
+
18
+ ## 三个技能
19
+
20
+ | 技能 | 职责 | 可独立调用 |
21
+ |---|---|---|
22
+ | `manohub-kit` | 入口编排:识别意图 → 调 `manohub-kit-migrate` 或 `manohub-kit-dev`(另有「从零建新应用」导到接入 SOP);承载跨场景硬约束 | 是(子技能也可直接调) |
23
+ | `manohub-kit-migrate` | 存量应用改造到「`@manohub/ui` 组件 + `@manohub/kit` 骨架」(清理 `App*` 旧组件名、`.ak-*` 样式、直连底层组件库的写法):按契约逐层盘点 → 划批次 → 逐文件替换 → 逐层收口 → 验收;支持**只迁一部分**(典型是「只迁页面骨架」) | 是 |
24
+ | `manohub-kit-dev` | 按骨架层规范做日常页面开发:选模板 / 选组件与 prop / 守样式纪律 / 缺件处置 / 自检 | 是 |
25
+
26
+ ## 安装到消费方技能目录
27
+
28
+ 在消费方**工程根**执行(缺省落 `.codebuddy/skills/`);`kit` 是本包的命令入口(`bin`),
29
+ npm 消费方把 `pnpm exec` 换成 `npx`:
30
+
31
+ ```bash
32
+ pnpm exec kit install
33
+
34
+ pnpm exec kit install --also-claude # 同时落 .claude/skills/
35
+ pnpm exec kit install --target .x/skills
36
+ pnpm exec kit install --dry-run # 只预览不落盘
37
+ ```
38
+
39
+ 输出示例(每个技能都会报告内容有没有变):
40
+
41
+ ```text
42
+ [kit 技能安装]
43
+ 源:…/node_modules/@manohub/kit/skills
44
+ 目标:…/.codebuddy/skills
45
+ ….codebuddy/skills/manohub-kit —— 更新 2(共 3 个文件)
46
+ ….codebuddy/skills/manohub-kit-migrate —— 已是包内最新(内容无变化,共 3 个文件)
47
+ 完成:技能目录已与包内内容对齐(包升级后重跑本命令即刷新)
48
+ ```
49
+
50
+ 安装器是幂等的:每次执行**先清理同名技能目录再整体复制**,所以包升级后重跑一次即刷新到新版内容。
51
+ 等价写法(老脚本/钩子里可用):`node node_modules/@manohub/kit/skills/install.mjs`。
52
+ 它只管理 `manohub-kit` / `manohub-kit-migrate` / `manohub-kit-dev` 这三个目录,不触碰目标目录下的其它内容。
53
+
54
+ > **技能目录名带包名前缀**:旧名 `kit` / `kit-migrate` / `kit-dev` 已废弃,安装器**不再管理**它们 ——
55
+ > 从带旧名的版本升级时,须先手工删掉技能目录下的这三个旧目录再重跑 `kit install`,
56
+ > 否则新旧两份技能会同时在场(同名触发条件撞车,代理可能命中旧的那份)。
57
+ 每次执行都会报告**技能内容有没有变**(「更新 N / 新增 N」=本次升级改了技能、已生效;
58
+ 「已是包内最新」=本次升级没动技能包),这样消费方不必靠猜「我的技能是不是旧的」。
59
+
60
+ ## 维护约定(改本目录时遵守)
61
+
62
+ - 引用规范一律写**消费方视角**路径:`node_modules/@manohub/kit/CONTRACT.md` §x.y。
63
+ 禁止出现本机绝对路径、worktree 路径、仓库内相对路径(技能落盘后与包目录分离,这些路径会失效)。
64
+ - **不复述条款**:不抄白名单、不抄件名清单、不抄 prop 词表、不抄值。
65
+ 需要时写「读契约 §x.y」或指向读取路径(见契约 §0 权威源表)。凡本目录内出现判据式描述,视为缺陷。
66
+ - `SKILL.md` 只放流程与硬约束(控制在 5k 词内);查表内容(替换映射、场景配方)放各自的 `references/`,按需加载。
67
+ - 三个技能的 `description` 触发条件互不重叠,否则代理会命中错的那个
68
+ (`kit` 只在「意图还没落到具体任务」时命中,具体任务交给两个子技能)。
69
+ - 技能引用的 `references/` 文件必须真实存在,文件名改动要同步 `SKILL.md`
70
+ (已由 `verify-pack` 的 `checkSkillPack` 机械校验,跨技能引用 `../<skill>/references/…` 同样校验)。
71
+ - 技能目录下的每个文件都必须真进 tarball(`references/` 漏发时「查表」会整体失效,也已机械校验)。
72
+ - 技能引用的契约章节必须真实存在(改契约标题即需同步本目录,`verify-pack` 会校验章节号可解析)。
73
+ - 技能与文档里的命令一律写**消费方命令** `pnpm exec kit install`(npm 注一句 `npx`)。
74
+ - 本包**只有 `install` 一个子命令**(0.6.0 起 `kit lint` 及其四个校验子命令已下线)。
75
+ `bin/` 是工具脚本、没有自测,改后手工跑一次确认参数透传(如 `--dry-run`),
76
+ `verify-pack` 校验 `bin/kit.mjs` 随包分发。
77
+ - 改动后跑门禁与打包校验(在仓库根):
78
+
79
+ ```bash
80
+ pnpm --filter @manohub/kit test:unit # 入口编排契约单测
81
+ pnpm release:check # build + verify-pack(含技能包结构/引用校验)
82
+ ```
@@ -25,7 +25,7 @@ import { basename, dirname, isAbsolute, join, relative, resolve } from 'node:pat
25
25
  import { fileURLToPath, pathToFileURL } from 'node:url'
26
26
 
27
27
  /** 本技能包管理的技能目录名(白名单:只有这些名字允许被创建或清理) */
28
- export const SKILL_NAMES = ['kit', 'kit-migrate', 'kit-dev']
28
+ export const SKILL_NAMES = ['manohub-kit', 'manohub-kit-migrate', 'manohub-kit-dev']
29
29
 
30
30
  /** 缺省的技能目录(相对消费方工程根) */
31
31
  export const TARGET_CODEXBUDDY = ['.codebuddy', 'skills']
@@ -1,85 +1,85 @@
1
- ---
2
- name: kit
3
- version: 1.0.0
4
- description: 子应用骨架层 @manohub/kit 的入口技能:识别意图并编排到 kit-migrate(存量应用改造)或 kit-dev(日常页面开发),并承载两个子技能共用的全局硬约束。触发条件:用户提到 kit / 骨架层 / 接入契约本身、询问该怎么接入或改造但尚未落到具体页面或文件、不确定该用哪个 kit 技能、或需要接入步骤/升级口径等跨场景事项时使用;一旦意图明确落到「迁移存量应用」或「写/改页面」,由对应子技能承接。
5
- ---
6
-
7
- # kit:骨架层入口编排
8
-
9
- 把「用骨架层做事」收敛到一条路径:先判意图,再交给对应子技能。
10
- 本技能不设计页面、不改代码,只做路由与硬约束。
11
-
12
- ## 一、先判意图
13
-
14
- | 用户意图信号 | 走向 |
15
- |---|---|
16
- | 应用还没接本包;或页面里还有 `App*` 组件名 / `.ak-*` 样式 / 直连底层组件库;或出现「迁移」「改造」「接入」「违规盘点」「收口」 | `Skill('kit-migrate')` |
17
- | 应用已接入,要新增或修改页面、组件;或要求「按规范写」「用 Page / Panel / Table…」 | `Skill('kit-dev')` |
18
- | 两者交织(边接入边改页面) | 先跑 `kit-migrate` 的接入阶段(契约已落到应用文档),再进 `kit-dev` |
19
- | 应用还不存在,要从零建一个子应用 | 按 `references/adoption.md` «9. 新应用从零搭建» 走,建成后按上面的表继续 |
20
- | 问的是组件本身的 prop / 用法(不是页面结构) | 读 `node_modules/@manohub/ui/README.md` 与类型声明;本包的契约只管**页面怎么搭** |
21
- | 与骨架层无关(纯后端问题、非 Vue 前端工程) | 不使用本技能 |
22
-
23
- 意图不明时先问一句「是要把存量页面改造过来,还是新写页面」,不要猜。
24
-
25
- ## 二、先读契约(两个子技能都适用)
26
-
27
- **合规判据只有一个地方**:`node_modules/@manohub/kit/CONTRACT.md`。每条条款都是闭集,
28
- §7 是配套的自检清单。**本技能与两个子技能都不复述条款** —— 需要判据时读契约,
29
- 不要凭记忆或凭本文件的措辞判断。
30
-
31
- 按顺序读这五节,一次读完,别边写边查:
32
-
33
- | # | 去哪读 | 为什么它要排这么前 |
34
- |---|---|---|
35
- | 1 | **§0 权威源表** | 值 / 件名 / 成员 / 词表 / 图标名的读取路径全在这里 —— 写任何东西之前先读它,否则你会去抄一份会过期的副本 |
36
- | 2 | **§2 L0 入口与作用域** | 漏了它,下面三层同时失效(典型症状:组件有框有距,颜色却是浏览器默认灰蓝);**这一层不可豁免** |
37
- | 3 | **§3 L1 值** | 样式纪律的全部判据;属性白名单是闭集,逐字照用 |
38
- | 4 | **§5 L2 结构** | 骨架怎么用(20 条):页头、成员归位、两级滚动、操作位、分页都在这里 |
39
- | 5 | **§6 L3 件与词表** | 件 / 成员 / prop 的用法;**件名与成员以 `.d.ts` 为准,不要抄** |
40
-
41
- 收工前过 **§7 自检清单**(24 问,五层各一组)。答不上来的那一条就是你要回去读的地方。
42
-
43
- **冲突时的优先级**:包内 `CONTRACT.md` > `@manohub/ui` 的 README 与类型声明里的 `@example`
44
- > 消费仓 `AGENTS.md` > 其它文档。发现 `@example` 与契约冲突,按契约写,并把该 `@example` 当缺陷处理。
45
-
46
- > 本包 **0.6.0 起不再发布消费侧机器规则**(原先的三条护栏已下线)。合规靠
47
- > 「契约条款 + §7 自检清单」在写作与评审时把关,不再有自动拦断。
48
-
49
- ## 三、固定命令(在应用包根执行)
50
-
51
- ```bash
52
- pnpm exec kit install # 把技能包刷到本地技能目录(幂等,包升级后重跑)
53
- pnpm exec vue-tsc --noEmit # 类型检查
54
- pnpm build # 生产构建
55
- ```
56
-
57
- - `kit` 是本包的命令入口(`package.json` 的 `bin`);npm 消费方把 `pnpm exec` 换成 `npx`。
58
- 本包**只有 `install` 一个子命令**。
59
- - 技能包内容更新后重新落盘(幂等,包升级后重跑即刷新):
60
-
61
- ```bash
62
- pnpm exec kit install # 等价:node node_modules/@manohub/kit/skills/install.mjs
63
- ```
64
-
65
- ## 四、失败处理
66
-
67
- | 现象 | 处理 |
68
- |---|---|
69
- | 找不到 `node_modules/@manohub/kit` | 在应用包根执行 `pnpm add @manohub/kit @manohub/ui @manohub/theme`(三个包在 npm 官方仓公开) |
70
- | 页面报 `App* is not exported` | 0.6.0 已移除 `App*` 组件名 —— 走 `kit-migrate` 按对照表替换 |
71
- | 命令式提示样式全丢 | 提示没落回应用容器:确认入口走的是 `createSubApp`(它无条件写 `data-manohub-ui`),别自己手写 `createApp` |
72
- | 组件有框有距但颜色全是浏览器默认灰蓝 | 容器缺 `data-manohub-ui` 属性(自建容器的场景),或漏引 `@manohub/theme/default.css` |
73
- | 调子技能报「技能不存在」 | 技能未安装或未刷新,跑上面的 `pnpm exec kit install` |
74
- | 终端里敲 `kit` 报 command not found | 用 `pnpm exec kit …`(或 npm 的 `npx kit …`) |
75
- | 类型检查报「无法解析 `*.css`」 | 消费方 tsconfig 的 `types` 需包含 `vite/client`,见 `references/adoption.md` |
76
- | 想找「某个写法合不合规」的机器判据 | 没有了 —— 读 `CONTRACT.md` 对应层 + §7 自检清单;确需全仓盘点时按 `kit-migrate` 的条款级盘点流程人工过 |
77
-
78
- ## 五、参考
79
-
80
- - `references/adoption.md`:接入 SOP(安装、样式三行、入口、类型配置、验收清单、故障对照、**新应用从零搭建**、升级口径)
81
- - `references/contract-index.md`:契约速查索引(按主题定位 `CONTRACT.md` 章节,不复制条款)
82
- - 迁移查表:`../kit-migrate/references/migration-map.md`
83
- - 开发配方:`../kit-dev/references/page-recipes.md`
84
- - 组件 API:`node_modules/@manohub/ui/README.md`
85
- - 自检清单:`node_modules/@manohub/kit/CONTRACT.md` §7
1
+ ---
2
+ name: manohub-kit
3
+ version: 1.0.0
4
+ description: 子应用骨架层 @manohub/kit 的入口技能:识别意图并编排到 manohub-kit-migrate(存量应用改造)或 manohub-kit-dev(日常页面开发),并承载两个子技能共用的全局硬约束。触发条件:用户提到 kit / manohub-kit / 骨架层 / 接入契约本身、询问该怎么接入或改造但尚未落到具体页面或文件、不确定该用哪个 manohub-kit 技能、或需要接入步骤/升级口径等跨场景事项时使用;一旦意图明确落到「迁移存量应用」或「写/改页面」,由对应子技能承接。
5
+ ---
6
+
7
+ # manohub-kit:骨架层入口编排
8
+
9
+ 把「用骨架层做事」收敛到一条路径:先判意图,再交给对应子技能。
10
+ 本技能不设计页面、不改代码,只做路由与硬约束。
11
+
12
+ ## 一、先判意图
13
+
14
+ | 用户意图信号 | 走向 |
15
+ |---|---|
16
+ | 应用还没接本包;或页面里还有 `App*` 组件名 / `.ak-*` 样式 / 直连底层组件库;或出现「迁移」「改造」「接入」「违规盘点」「收口」 | `Skill('manohub-kit-migrate')` |
17
+ | 应用已接入,要新增或修改页面、组件;或要求「按规范写」「用 Page / Panel / Table…」 | `Skill('manohub-kit-dev')` |
18
+ | 两者交织(边接入边改页面) | 先跑 `manohub-kit-migrate` 的接入阶段(契约已落到应用文档),再进 `manohub-kit-dev` |
19
+ | 应用还不存在,要从零建一个子应用 | 按 `references/adoption.md` «9. 新应用从零搭建» 走,建成后按上面的表继续 |
20
+ | 问的是组件本身的 prop / 用法(不是页面结构) | 读 `node_modules/@manohub/ui/README.md` 与类型声明;本包的契约只管**页面怎么搭** |
21
+ | 与骨架层无关(纯后端问题、非 Vue 前端工程) | 不使用本技能 |
22
+
23
+ 意图不明时先问一句「是要把存量页面改造过来,还是新写页面」,不要猜。
24
+
25
+ ## 二、先读契约(两个子技能都适用)
26
+
27
+ **合规判据只有一个地方**:`node_modules/@manohub/kit/CONTRACT.md`。每条条款都是闭集,
28
+ §7 是配套的自检清单。**本技能与两个子技能都不复述条款** —— 需要判据时读契约,
29
+ 不要凭记忆或凭本文件的措辞判断。
30
+
31
+ 按顺序读这五节,一次读完,别边写边查:
32
+
33
+ | # | 去哪读 | 为什么它要排这么前 |
34
+ |---|---|---|
35
+ | 1 | **§0 权威源表** | 值 / 件名 / 成员 / 词表 / 图标名的读取路径全在这里 —— 写任何东西之前先读它,否则你会去抄一份会过期的副本 |
36
+ | 2 | **§2 L0 入口与作用域** | 漏了它,下面三层同时失效(典型症状:组件有框有距,颜色却是浏览器默认灰蓝);**这一层不可豁免** |
37
+ | 3 | **§3 L1 值** | 样式纪律的全部判据;属性白名单是闭集,逐字照用 |
38
+ | 4 | **§5 L2 结构** | 骨架怎么用(20 条):页头、成员归位、两级滚动、操作位、分页都在这里 |
39
+ | 5 | **§6 L3 件与词表** | 件 / 成员 / prop 的用法;**件名与成员以 `.d.ts` 为准,不要抄** |
40
+
41
+ 收工前过 **§7 自检清单**(24 问,五层各一组)。答不上来的那一条就是你要回去读的地方。
42
+
43
+ **冲突时的优先级**:包内 `CONTRACT.md` > `@manohub/ui` 的 README 与类型声明里的 `@example`
44
+ > 消费仓 `AGENTS.md` > 其它文档。发现 `@example` 与契约冲突,按契约写,并把该 `@example` 当缺陷处理。
45
+
46
+ > 本包 **0.6.0 起不再发布消费侧机器规则**(原先的三条护栏已下线)。合规靠
47
+ > 「契约条款 + §7 自检清单」在写作与评审时把关,不再有自动拦断。
48
+
49
+ ## 三、固定命令(在应用包根执行)
50
+
51
+ ```bash
52
+ pnpm exec kit install # 把技能包刷到本地技能目录(幂等,包升级后重跑)
53
+ pnpm exec vue-tsc --noEmit # 类型检查
54
+ pnpm build # 生产构建
55
+ ```
56
+
57
+ - `kit` 是本包的命令入口(`package.json` 的 `bin`);npm 消费方把 `pnpm exec` 换成 `npx`。
58
+ 本包**只有 `install` 一个子命令**。
59
+ - 技能包内容更新后重新落盘(幂等,包升级后重跑即刷新):
60
+
61
+ ```bash
62
+ pnpm exec kit install # 等价:node node_modules/@manohub/kit/skills/install.mjs
63
+ ```
64
+
65
+ ## 四、失败处理
66
+
67
+ | 现象 | 处理 |
68
+ |---|---|
69
+ | 找不到 `node_modules/@manohub/kit` | 在应用包根执行 `pnpm add @manohub/kit @manohub/ui @manohub/theme`(三个包在 npm 官方仓公开) |
70
+ | 页面报 `App* is not exported` | 0.6.0 已移除 `App*` 组件名 —— 走 `manohub-kit-migrate` 按对照表替换 |
71
+ | 命令式提示样式全丢 | 提示没落回应用容器:确认入口走的是 `createSubApp`(它无条件写 `data-manohub-ui`),别自己手写 `createApp` |
72
+ | 组件有框有距但颜色全是浏览器默认灰蓝 | 容器缺 `data-manohub-ui` 属性(自建容器的场景),或漏引 `@manohub/theme/default.css` |
73
+ | 调子技能报「技能不存在」 | 技能未安装或未刷新,跑上面的 `pnpm exec kit install` |
74
+ | 终端里敲 `kit` 报 command not found | 用 `pnpm exec kit …`(或 npm 的 `npx kit …`) |
75
+ | 类型检查报「无法解析 `*.css`」 | 消费方 tsconfig 的 `types` 需包含 `vite/client`,见 `references/adoption.md` |
76
+ | 想找「某个写法合不合规」的机器判据 | 没有了 —— 读 `CONTRACT.md` 对应层 + §7 自检清单;确需全仓盘点时按 `manohub-kit-migrate` 的条款级盘点流程人工过 |
77
+
78
+ ## 五、参考
79
+
80
+ - `references/adoption.md`:接入 SOP(安装、样式三行、入口、类型配置、验收清单、故障对照、**新应用从零搭建**、升级口径)
81
+ - `references/contract-index.md`:契约速查索引(按主题定位 `CONTRACT.md` 章节,不复制条款)
82
+ - 迁移查表:`../manohub-kit-migrate/references/migration-map.md`
83
+ - 开发配方:`../manohub-kit-dev/references/page-recipes.md`
84
+ - 组件 API:`node_modules/@manohub/ui/README.md`
85
+ - 自检清单:`node_modules/@manohub/kit/CONTRACT.md` §7