Skip to content

Commit c8c2cbe

Browse files
committed
skill 优化:标点符号&大小写对齐
1 parent 61329b5 commit c8c2cbe

6 files changed

Lines changed: 66 additions & 66 deletions

File tree

.agents/skills/mpx2skyline/SKILL.md

Lines changed: 27 additions & 27 deletions
Large diffs are not rendered by default.

.agents/skills/mpx2skyline/references/skyline-audit-matrix.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ rg -n "lazyCodeLoading|rendererOptions|defaultDisplayBlock|defaultContentBox|tag
4343
| --- | --- | --- | --- | --- | --- | --- | --- |
4444
| `CONFIG_APP_SKYLINE_OPTIONS` | error | app.json | `lazyCodeLoading` / `rendererOptions` / `defaultDisplayBlock` / `defaultContentBox` / `tagNameStyleIsolation` / `enableScrollViewAutoSize` / `keyframeStyleIsolation` | 迁移项目需补齐对齐 WebView 的推荐配置;缺失会放大默认布局、盒模型、样式隔离、scroll-view 自适应、keyframes 作用域差异 | app.json 顶层补 `lazyCodeLoading``rendererOptions.skyline` 下补 5 个推荐项 | 非 Skyline 项目、明确只审单组件且无 app.json scope 时说明未覆盖 | [rendererOptions.skyline](./skyline-configuration.md#rendereroptionsskyline-配置项)[app.json 顶层配置](./skyline-configuration.md#appjson-顶层配置) |
4545
| `CONFIG_PAGE_SKYLINE` | error | page.json | `renderer` / `componentFramework` / `disableScroll` / `navigationStyle` | Skyline 页面需显式声明渲染后端、glass-easel、禁用页面滚动和自定义导航 | 页面 json 补 `renderer: "skyline"``componentFramework: "glass-easel"``disableScroll: true``navigationStyle: "custom"` | 明确 WebView-only 页面 | [配置参考](./skyline-configuration.md#适配参考) |
46-
| `CONFIG_WORKLET_BABEL` | warn | script/config | `worklet:` / `'worklet'` / `wx.worklet` | 使用 worklet 时需确认 Babel 插件或开发者工具 worklet 编译配置 | 按需配置 `babel-plugin-worklet` overrides | 未使用 worklet;项目统一构建链已配置时说明 | [Worklet Babel 插件](./skyline-configuration.md#worklet-babel-插件) |
46+
| `CONFIG_WORKLET_BABEL` | warn | script/config | `worklet:` / `'worklet'` / `wx.worklet` | 使用 Worklet 时需确认 Babel 插件或开发者工具 Worklet 编译配置 | 按需配置 `babel-plugin-worklet` overrides | 未使用 Worklet;项目统一构建链已配置时说明 | [Worklet Babel 插件](./skyline-configuration.md#worklet-babel-插件) |
4747

4848
## 模板与组件规则
4949

@@ -89,7 +89,7 @@ rg -n "lazyCodeLoading|rendererOptions|defaultDisplayBlock|defaultContentBox|tag
8989
| `STYLE_CALC_ANGLE` | warn | style | `calc\\([^)]*(deg\|rad\|turn)` | Skyline `calc()` 不支持角度类型 | 直接写静态角度值 || [值类型支持](./skyline-style-reference.md#长度函数与单位) |
9090
| `STYLE_PSEUDO_ANIMATION` | warn | style | `::(before\|after)[\\s\\S]*animation` | Skyline 下伪元素 animation 不生效 | 改真实节点 + CSS animation | 无动画依赖 | [伪元素 animation](./skyline-layout-practice.md#伪元素不支持的-animation-需替换为真实节点) |
9191
| `STYLE_ANIMATION_FILL_MODE` | warn | style | `animation-fill-mode\\s*:?\\s*(none\|backwards)` | Skyline 下 `none` / `backwards` 实际表现为 `forwards` |`forwards` / `both` 或调整动画逻辑 | 已确认视觉无影响 | [动画差异](./skyline-style-reference.md#动画与过渡差异) |
92-
| `STYLE_ANIMATION_PROPERTY` | warn | style | `transition-property\|animation` | Skyline transition / animation 可动画属性是白名单 | 人工确认只驱动白名单属性;其他改 JS / class 切换 / worklet | 已确认不涉及不支持属性 | [动画差异](./skyline-style-reference.md#动画与过渡差异) |
92+
| `STYLE_ANIMATION_PROPERTY` | warn | style | `transition-property\|animation` | Skyline transition / animation 可动画属性是白名单 | 人工确认只驱动白名单属性;其他改 JS / class 切换 / Worklet | 已确认不涉及不支持属性 | [动画差异](./skyline-style-reference.md#动画与过渡差异) |
9393
| `STYLE_Z_INDEX_CONTEXT` | warn | style/template | `z-index\|transform\\s*:\|opacity\\s*:` | Skyline 无层叠上下文,`transform` / `opacity` 不会提升比较层级;`scroll-view` 直接子节点 `z-index` 不生效 | 将需比较层级的节点调整为兄弟节点;fixed 元素按 fixed-context 排序 | 简单同级 z-index 且已验证 | [z-index 适配](./skyline-layout-practice.md#z-index-与层叠适配) |
9494

9595
## 运行时规则

.agents/skills/mpx2skyline/references/skyline-component-reference.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
| --- | --- | --- |
1616
| `web-view` | 暂不考虑 | 承载 `web-view` 的页面单独配置 `"renderer": "webview"` |
1717
| `editor` | 暂不考虑 | 纯文本编辑用 `textarea`;富文本编辑页降级 WebView;只读展示用 `rich-text` |
18-
| `movable-area` / `movable-view` | 暂不考虑 | 使用手势组件 + worklet 动画替代 |
19-
| `progress` | 暂不考虑 |`view` 嵌套实现进度条,动画进度可配合 worklet 驱动 |
18+
| `movable-area` / `movable-view` | 暂不考虑 | 使用手势组件 + Worklet 动画替代 |
19+
| `progress` | 暂不考虑 |`view` 嵌套实现进度条,动画进度可配合 Worklet 驱动 |
2020
| `navigation-bar` | 不考虑 | Skyline 只能使用自定义导航 |
2121
| `xr-frame` | 暂未支持 | 3D/XR 页面降级 WebView,或用 `canvas` / WebGL 自行渲染 |
2222
| `match-media` | 待考虑 |`wx.createMediaQueryObserver()` 监听媒体条件,或用 `getWindowInfo()` 获取屏幕尺寸后条件渲染 |

.agents/skills/mpx2skyline/references/skyline-configuration.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535

3636
| 配置项 | 类型 | 默认值 | 推荐值 | 说明 |
3737
|--------|------|--------|--------|---------------------------------------|
38-
| `defaultDisplayBlock` | boolean | false | true | 默认 display:block(对齐 WebView) |
39-
| `defaultContentBox` | boolean | false | true | 默认 box-sizing:content-box(对齐 WebView) |
38+
| `defaultDisplayBlock` | boolean | false | true | 默认 `display: block`(对齐 WebView) |
39+
| `defaultContentBox` | boolean | false | true | 默认 `box-sizing: content-box`(对齐 WebView) |
4040
| `tagNameStyleIsolation` | string | "isolated" | "legacy" | 标签选择器全局匹配(对齐 WebView) |
4141
| `enableScrollViewAutoSize` | boolean | false | true | scroll-view 自动撑开高度 |
4242
| `keyframeStyleIsolation` | string | - | "legacy" | `@keyframes` 全局共享,避免迁移项目中动画关键帧作用域变化 |
@@ -49,7 +49,7 @@
4949
| 配置项 | 位置 | 类型 | 推荐值 / 示例 | 说明 |
5050
|--------|------|------|------------------------|-------------------------------------------------------------------------------------|
5151
| `lazyCodeLoading` | `app.json` 顶层 | string | `"requiredComponents"` | 开启按需注入用到的组件代码,降低页面初始化时一次性注入的代码量 |
52-
| `convertRpxToVw` | `app.json` 顶层 | boolean | 按需 | 基础库 3.3.0+;开启后将会将 Webview rpx 计算逻辑对齐 Skyline(`rpx` 单位转换为 `vw` 单位),用于修复部分 `rpx` 精度问题 |
52+
| `convertRpxToVw` | `app.json` 顶层 | boolean | 按需 | 基础库 3.3.0+;开启后会将 WebView rpx 计算逻辑对齐 Skyline(`rpx` 单位转换为 `vw` 单位),用于修复部分 `rpx` 精度问题 |
5353

5454
### 其他配置项
5555

@@ -62,7 +62,7 @@
6262
**项目配置 app.json 新增以下配置**
6363

6464
```json5
65-
// 对齐 webview
65+
// 对齐 WebView
6666
{
6767
"lazyCodeLoading": "requiredComponents",
6868
"rendererOptions": {
@@ -103,7 +103,7 @@
103103

104104
## Worklet Babel 插件
105105

106-
如果页面使用到 worklet 函数,需要配置 Babel 插件:
106+
如果页面使用到 Worklet 函数,需要配置 Babel 插件:
107107

108108
```bash
109109
npm i babel-plugin-worklet
@@ -127,7 +127,7 @@ Mpx 项目中通过 `overrides` 配置:
127127
```
128128

129129
**注意**
130-
- 配置 worklet Babel 插件后,**不需要勾选**「将 JS 编译成 ES5」(会导致包体积增加)
131-
- 若未配置以上插件,则需要开启开发者工具的「编译 worklet 函数」选项;「将 JS 编译成 ES5」也可以,但更推荐集成 Babel 插件按需编译
130+
- 配置 Worklet Babel 插件后,**不需要勾选**「将 JS 编译成 ES5」(会导致包体积增加)
131+
- 若未配置以上插件,则需要开启开发者工具的「编译 Worklet 函数」选项;「将 JS 编译成 ES5」也可以,但更推荐集成 Babel 插件按需编译
132132

133133
---

.agents/skills/mpx2skyline/references/skyline-layout-practice.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Skyline 没有 BFC(块级格式化上下文),也没有 margin 合并机制
4040
2. **兄弟节点间距只交给一侧负责**:列表项之间统一使用后一项的 `margin-top` 或前一项的 `margin-bottom`,避免双向 margin 叠加。
4141
3. **首尾项差异化用模板状态标记**:需要去掉首项或末项间距时,用 `wx:class` + `index` 显式绑定单类。
4242
4. **不要把 BFC hack 当作 Skyline 布局手段**`overflow: hidden` 在 Skyline 中仅用于裁剪,不再具备隔离 margin 的副作用。
43-
5. **必要时显式声明纵向 Flex**:容器内仍存在难以拆解的垂直 margin 关系时,可同时声明 `display: flex``flex-direction: column`,使子节点作为 flex item 参与布局,进一步避免垂直 margin 合并。
43+
5. **必要时显式声明纵向 Flex**:容器内仍存在难以拆解的垂直 margin 关系时,可同时声明 `display: flex``flex-direction: column`使子节点作为 flex item 参与布局进一步避免垂直 margin 合并。
4444

4545
```html
4646
<!-- ❌ Bad — 依赖 overflow: hidden 创建 BFC 隔离父子 margin 合并 -->
@@ -49,7 +49,7 @@ Skyline 没有 BFC(块级格式化上下文),也没有 margin 合并机制
4949
<view class="card-desc">说明</view>
5050
</view>
5151

52-
<!-- ✅ Good — 父容器 padding 表达外沿空间,兄弟间距交给单侧节点 -->
52+
<!-- ✅ Good — 父容器 padding 表达外沿空间兄弟间距交给单侧节点 -->
5353
<view class="card">
5454
<view class="card-title">标题</view>
5555
<view class="card-desc">说明</view>
@@ -67,7 +67,7 @@ Skyline 没有 BFC(块级格式化上下文),也没有 margin 合并机制
6767
.card-desc { margin-top: 16rpx; }
6868
```
6969

70-
**列表场景**:用 `index > 0` 标记非首项,只对非首项加 `margin-top`
70+
**列表场景**:用 `index > 0` 标记非首项只对非首项加 `margin-top`
7171

7272
```html
7373
<view class="list">
@@ -244,12 +244,12 @@ fixed-e (z-index: 4)
244244
```html
245245
<!-- isSkyline 来自 renderer 判断,见 skyline-runtime-practice.md 的「判断当前渲染模式」 -->
246246
<scroll-view type="list" scroll-y="true">
247-
<!-- Skyline:sticky-section + sticky-header 组件 -->
247+
<!-- Skylinesticky-section + sticky-header 组件 -->
248248
<sticky-section wx:if="{{isSkyline}}">
249249
<sticky-header class="sticky-title">吸顶标题</sticky-header>
250250
<view>列表内容</view>
251251
</sticky-section>
252-
<!-- WebView:保留 position: sticky 原生写法 -->
252+
<!-- WebView保留 position: sticky 原生写法 -->
253253
<block wx:else>
254254
<view class="sticky-title webview-sticky">吸顶标题</view>
255255
<view>列表内容</view>
@@ -258,9 +258,9 @@ fixed-e (z-index: 4)
258258
```
259259

260260
```css
261-
/* 两端都需显式背景色,避免吸顶时透字穿透 */
261+
/* 两端都需显式背景色避免吸顶时透字穿透 */
262262
.sticky-title { background: #fff; }
263-
/* WebView 专属:position: sticky 在 Skyline 下静默失效,仅 WebView 分支使用 */
263+
/* WebView 专属position: sticky 在 Skyline 下静默失效仅 WebView 分支使用 */
264264
.webview-sticky { position: sticky; top: 0; }
265265
```
266266

@@ -417,7 +417,7 @@ watch(isShow, (val) => {
417417

418418
**多行省略**
419419

420-
> 注意:文本省略场景下不要删除原 webview 下的文本省略样式,尤其是 `display: -webkit-box;`
420+
> 注意:文本省略场景下不要删除原 WebView 下的文本省略样式,尤其是 `display: -webkit-box;`
421421
422422
```html
423423
<view class="normal"
@@ -478,7 +478,7 @@ Skyline 下伪元素的 `animation` 不生效,需要改用真实节点。
478478

479479
### animation API 不支持 → 使用 CSS transition
480480

481-
Skyline 不支持 `wx.createAnimation` API(`animation` 属性赋值方式),需要改用 CSS `transition`worklet 动画。
481+
Skyline 不支持 `wx.createAnimation` API(`animation` 属性赋值方式),需要改用 CSS `transition`Worklet 动画。
482482

483483
```js
484484
// ❌ Bad — wx.createAnimation 在 Skyline 下无效
@@ -517,22 +517,22 @@ Skyline 下 `text-decoration-line` 只取单值,`underline line-through` 这
517517
```
518518

519519
```html
520-
<!-- ✅ Good — 运行时判断:Skyline 嵌套 text 各承担一条装饰线;WebView 维持单节点双值 -->
521-
<!-- 嵌套 text 的插值务必紧贴标签,text 节点会字面保留首尾空白 -->
520+
<!-- ✅ Good — 运行时判断Skyline 嵌套 text 各承担一条装饰线WebView 维持单节点双值 -->
521+
<!-- 嵌套 text 的插值务必紧贴标签text 节点会字面保留首尾空白 -->
522522
<text wx:if="{{isSkyline}}" class="underline"><text class="line-through">{{price}}</text></text>
523523
<text wx:else class="dual-decoration">{{price}}</text>
524524
```
525525

526526
```css
527-
/* WebView:单节点双值即可叠加两条线 */
527+
/* WebView单节点双值即可叠加两条线 */
528528
.dual-decoration { text-decoration-line: underline line-through; }
529-
/* Skyline:外层节点画下划线,内层节点画删除线,嵌套后两条线同时生效 */
529+
/* Skyline外层节点画下划线内层节点画删除线嵌套后两条线同时生效 */
530530
.underline { text-decoration-line: underline; }
531531
.line-through { text-decoration-line: line-through; }
532532
```
533533

534534
```js
535-
// isSkyline 来自 renderer 判断,在生命周期里写入 data 供模板使用
535+
// isSkyline 来自 renderer 判断在生命周期里写入 data 供模板使用
536536
createPage({
537537
data: {
538538
isSkyline: false
@@ -542,7 +542,7 @@ createPage({
542542
}
543543
})
544544
```
545-
> 嵌套的内外层只设 `text-decoration-line`,字号/颜色等由外层继承,避免重复声明导致两层样式打架。两条装饰线归属哪层不影响最终视觉,但内层文本节点要紧贴标签写,防止 `text` 字面保留空白把价格文案撑出多余间距。
545+
> 嵌套的内外层只设 `text-decoration-line`,字号/颜色等由外层继承,避免重复声明导致两层样式打架。两条装饰线归属哪层不影响最终视觉,但内层文本节点要紧贴标签写防止 `text` 字面保留空白把价格文案撑出多余间距。
546546
547547
### flex 布局的子节点 min-width 百分比撑开失效
548548

@@ -698,29 +698,29 @@ Skyline 不支持 `@media screen` 的条件判断:`@media screen and (...)`
698698

699699
✅ Good — 用 `isSkyline` 门控 Skyline 默认类与状态类,WebView 仍走原生 `@media`
700700
```html
701-
<!-- 仅 Skyline 加 .wrapper-skyline / .small;WebView 不加,继续走原生 @media -->
701+
<!-- 仅 Skyline 加 .wrapper-skyline / .smallWebView 不加继续走原生 @media -->
702702
<view wx:class="wrapper {{ { 'wrapper-skyline': isSkyline, small: isSkyline && isSmall } }}"></view>
703703
```
704704

705705
```js
706-
// isSkyline 来自 renderer 判断;isSmall 为屏宽快照
706+
// isSkyline 来自 renderer 判断isSmall 为屏宽快照
707707
const isSmall = ref(mpx.getWindowInfo().screenWidth <= 320)
708708
```
709709

710710
```css
711-
/* 默认态先声明,WebView 大屏与 Skyline 默认态都以此为基准 */
711+
/* 默认态先声明WebView 大屏与 Skyline 默认态都以此为基准 */
712712
.wrapper {
713713
display: block;
714714
}
715715

716-
/* WebView:原生 @media 实时响应横竖屏/resize */
716+
/* WebView原生 @media 实时响应横竖屏/resize */
717717
@media screen and (max-width: 320px) {
718718
.wrapper { display: none; }
719719
}
720720

721721
/*
722-
* Skyline:上面的 @media 条件会被忽略,.wrapper { display: none; } 会泄漏为全局规则。
723-
* 必须在 @media 之后声明 Skyline 默认类,把非小屏状态覆盖回默认样式。
722+
* Skyline上面的 @media 条件会被忽略.wrapper { display: none; } 会泄漏为全局规则。
723+
* 必须在 @media 之后声明 Skyline 默认类把非小屏状态覆盖回默认样式。
724724
*/
725725
.wrapper-skyline {
726726
display: block;
@@ -779,7 +779,7 @@ const isSmall = ref(mpx.getWindowInfo().screenWidth <= 320)
779779

780780
### navigator 嵌套限制
781781

782-
Skyline 下 `<navigator>`**只能嵌套 `<text>` 组件或纯文本节点****不能嵌套** `<view>` / `<image>` / `<swiper>` 等任意其他组件。WebView 下常见的"navigator 内放图标 + 文字"业务结构会让 Skyline 静默渲染异常(图标不显示,或点击区域错位)。
782+
Skyline 下 `<navigator>`**只能嵌套 `<text>` 组件或纯文本节点****不能嵌套** `<view>` / `<image>` / `<swiper>` 等任意其他组件。WebView 下常见的navigator 内放图标 + 文字业务结构会让 Skyline 静默渲染异常(图标不显示,或点击区域错位)。
783783

784784
```html
785785
<!-- ❌ Bad — navigator 内嵌 view + image 在 Skyline 下渲染异常 -->

.agents/skills/mpx2skyline/references/skyline-runtime-practice.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const instance = getCurrentInstance()
4949
const isSkyline = instance.proxy.renderer === 'skyline'
5050
```
5151

52-
> 注意事项:Skyline & Webview 只能通过运行时的变量区分,在编译时仅能区分微信平台,无法区分是否是 Skyline 渲染
52+
> 注意事项:Skyline 与 WebView 只能通过运行时变量区分;编译时仅能区分微信平台,无法区分是否为 Skyline 渲染
5353
5454
### [必须] SelectorQuery 选择器不再支持以数字开头
5555

@@ -256,7 +256,7 @@ createComponent({
256256
257257
> 注意:`list` 模式下列表项必须是 `scroll-view` 的**直接子节点**;若只有一个直接子节点(例如外面又包了一层 `view`),按需渲染会退化为全量渲染。
258258
259-
适用前提:列表项结构、样式一致(差异仅由数据驱动)。结构差异较大的卡片混排不要无脑标注 `list-item`,否则共享失败反而增加判定成本。
259+
适用前提列表项结构、样式一致差异仅由数据驱动。结构差异较大的卡片混排不要无脑标注 `list-item`否则共享失败反而增加判定成本。
260260
261261
### cache-extent 预渲染(按需启用)
262262
@@ -285,18 +285,18 @@ createComponent({
285285
286286
### 预加载 Skyline 环境
287287
288-
微信客户端默认不预加载 Skyline 环境(WebView 为主),首次进入 Skyline 页面会有冷启动开销。在可能跳转到 Skyline 页面的前置页面手动预加载,可显著缩短首屏:
288+
微信客户端默认不预加载 Skyline 环境(以 WebView 为主),首次进入 Skyline 页面会有冷启动开销。在可能跳转到 Skyline 页面的前置页面手动预加载可显著缩短首屏
289289
290290
```js
291291
createPage({
292292
onShow() {
293-
// 延迟调用,避免阻塞当前页面渲染
293+
// 延迟调用避免阻塞当前页面渲染
294294
setTimeout(() => {
295295
wx.preloadSkylineView()
296296
}, 500)
297297
}
298298
})
299299
```
300300
301-
- 放在 `onShow` 而非 `onLoad`:用户从 Skyline 页面返回时,前置页 `onShow` 会再次触发,保证下次跳转仍是热环境。
302-
- 延迟约 500ms 触发,避开当前页首帧高峰。
301+
- 放在 `onShow` 而非 `onLoad`用户从 Skyline 页面返回时前置页 `onShow` 会再次触发保证下次跳转仍是热环境。
302+
- 延迟约 500ms 触发避开当前页首帧高峰。

0 commit comments

Comments
 (0)