lov-mobile-adapt
扫描并修复 Web 项目的移动端问题:溢出、安全区、100vh、触控尺寸、响应式布局与多级页面导航。Use when the user mentions "移动端适配", "手机适配", "mobile adapt", "fix mobile overflow".
ソース情報
- リポジトリ
- lovstudio/mobile-adapt-skill
- ソースの最終更新活動
- 2026年10月31日 11:22
- 検出された SKILL.md の言語
- 複数言語
- スター
- 0
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
SKILL.md を表示中
SKILL.md
ソースの指示 · 読み取り専用プレビュー- name
- lov-mobile-adapt
- description
- 扫描并修复 Web 项目的移动端问题:溢出、安全区、100vh、触控尺寸、响应式布局与多级页面导航。Use when the user mentions "移动端适配", "手机适配", "mobile adapt", "fix mobile overflow".
- license
- MIT
- compatibility
- Requires Python 3.8+ (no external dependencies). Works with any web project: React, Vue, Next.js, Nuxt, Svelte, plain HTML/CSS.
- depends_on
- ["lov-branding-consistency"]
- metadata
- {"author":"lovstudio","version":"0.2.3","tags":["mobile","responsive","safe-area","overflow","navigation"]}
# 移动适配师 · Mobile Fit
Scan and fix mobile adaptation issues in an existing web project: viewport
configuration, overflow prevention, safe area handling, responsive breakpoints,
100vh pitfalls, touch targets, and multi-level page navigation.
## Triggers
### Activate when
- “移动端适配”“手机适配”“多级页面”“移动端布局”
- "mobile adapt", "responsive optimization", "fix mobile overflow", "add safe
area", or a request to adapt a site for phones or tablets.
- Converting a desktop-first site to work well on mobile
- User reports overflow, cut-off content, or notch overlap on phones
- Adding mobile navigation (back button, page stack) to a sidebar-based layout
- Fixing 100vh issues on iOS/Android browsers
- General "make it mobile friendly" requests
### Do not activate when
- The target is a native iOS/Android app (Swift, Kotlin, React Native, Flutter)
rather than a web project.
- The user wants a new interface or a visual redesign: use `lov-frontend-design`.
- A new app is being generated: use `lov-app-generator`.
- The complaint is runtime jank, battery, or memory growth on phones: use
`lov-app-optimizer`.
## Skill Group Composition
Read `references/skill-composition.md` before routing to or extending an
adjacent Skill.
## Workflow (MANDATORY)
**You MUST follow these steps in order.**
Resolve `SKILL_DIR` from the installed skill context before running the helper.
For manual execution, set it to the directory containing this `SKILL.md`.
### Step 1: Scan the Project
Run the scanner to identify issues:
```bash
python3 "$SKILL_DIR/scripts/scan_mobile_issues.py" <project-path>
```
For JSON output (easier to process programmatically):
```bash
python3 "$SKILL_DIR/scripts/scan_mobile_issues.py" <project-path> --format json
```
Review the output. The scanner checks:
- viewport meta tag presence and `viewport-fit=cover`
- CSS overflow risks (fixed widths, min-width)
- 100vh usage (should be 100dvh)
- safe-area-inset usage on fixed/sticky elements
- Touch target sizes (< 44px)
- Responsive breakpoint coverage
- Tailwind-specific issues (h-screen → h-dvh)
- Text overflow without ellipsis handling
### Step 2: Ask the User
**IMPORTANT: Use `AskUserQuestion` to collect scope BEFORE making changes.**
Present the scan results summary, then ask:
```
Question: "扫描发现 X 个问题。要修哪些类别?"
Options:
1. 全部修复 (Recommended) — fix all categories found
2. 只修布局和溢出 — overflow + responsive only
3. 只修导航 — convert to mobile stack navigation
4. 让我选具体类别 — pick specific categories
```
If the project has sidebar/tab navigation on desktop, also ask:
```
Question: "桌面端的侧边栏/tab 导航要改成移动端多级页面吗?"
Options:
1. 是,改成 push/pop 页面栈 (Recommended)
2. 改成底部 tab bar
3. 不改导航结构
```
### Step 3: Fix Issues
Apply fixes in this priority order:
1. **Viewport meta** — add or fix `<meta name="viewport">` with `viewport-fit=cover`
2. **Global overflow guard** — add `overflow-x: hidden` to html/body
3. **100vh → 100dvh** — replace all 100vh usages, add fallback
4. **Safe area padding** — add `env(safe-area-inset-*)` to fixed/sticky elements
5. **Image/media overflow** — add `max-width: 100%; height: auto`
6. **Text overflow** — add ellipsis/line-clamp where `white-space: nowrap` exists
7. **Touch targets** — increase size of interactive elements below 44px
8. **Responsive breakpoints** — add mobile-first media queries or Tailwind responsive
9. **Navigation restructure** — convert to mobile page stack if requested
For each fix, refer to `references/mobile-patterns.md` for the correct pattern.
### Step 4: Navigation Restructure (if applicable)
When converting sidebar/panel navigation to mobile stack:
1. Identify the navigation structure (sidebar, tabs, nested panels)
2. Create a responsive layout wrapper that switches between desktop and mobile
3. On mobile: render as a full-screen page stack with back button
4. Use CSS slide transitions for page push/pop
5. Preserve desktop layout unchanged at `md:` breakpoint and above
See `references/mobile-patterns.md` → "Multi-Level Page Navigation" for
implementation patterns per framework.
### Step 5: Verify
After all fixes:
1. Re-run the scanner — confirm issues resolved
2. Check the site in a mobile viewport (375px width)
3. Verify:
- No horizontal scroll
- Content not cut off by notch or home indicator
- All interactive elements are tappable (44px+)
- Navigation back button works
- Full-height layouts don't overflow behind browser chrome
## CLI Reference
| Argument | Default | Description |
|----------|---------|-------------|
| `project` | (required) | Path to web project root |
| `--format` | `text` | Output format: `text` or `json` |
## Key Patterns (quick reference)
| Problem | Fix |
|---------|-----|
| Missing viewport meta | `<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">` |
| 100vh overflow | `height: 100dvh` (with `100vh` fallback) |
| Notch overlap | `padding: env(safe-area-inset-top)` on fixed elements |
| Horizontal overflow | `overflow-x: hidden` on body + `max-width: 100%` on media |
| iOS input zoom | `font-size: 16px` on inputs |
| Small touch targets | `min-height: 44px; min-width: 44px` |
| Pull-to-refresh conflict | `overscroll-behavior-y: contain` |
For detailed patterns see `references/mobile-patterns.md`.
## Runtime context (shared)
运行前读取本 Skill 包的 `skill.yaml`,由宿主提供 `skill-runtime/v1` 上下文。字段解析顺序为:当前请求、项目上下文、个人 Preferences、品牌 Profile、通用默认值。
- 只使用 Manifest 声明的字段;Profile 保存公开品牌事实,Preferences 保存个人工作偏好。
- `required: true` 字段缺失时,按 Manifest 的问题配置向用户提出一个聚焦问题;用户明确同意后再保存回答。
- 报错提供可复制的 `context_id`、字段路径与来源,诊断内容避开秘密、完整私人路径和原始配置。
## 通用反馈闭环
用户在 Skill 驱动任务中提出修改意见时,继续当前产物前必须执行:
1. 先判断意见是 `task-specific`(仅本次)还是 `reusable`(可跨任务复用)。
2. `task-specific` 只修改当前任务,不改 Skill。
3. `reusable` 先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。
4. 完成规则更新、版本、lint 与分发核验后,再把修改应用到当前任务。
5. `reusable` 修改会使此前的“确认”“继续”“发吧”失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。
GitHubで見る