К основному содержанию
скилл CX Codex

mobile-platform-offline-validate — скилл для Claude Code

Проверяет компоненты LWC на совместимость с офлайн-режимом Komaci в Salesforce Mobile App Plus. Находит ошибки прайминга и формирует исправления кода.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add forcedotcom/sf-skills --skill mobile-platform-offline-validate -a claude-code
Открыть на GitHub

Что делает mobile-platform-offline-validate

Скилл выполняет статический анализ бандла LWC для офлайн-подготовки графа данных Komaci. В шаблонах HTML он находит директивы lwc:if и lwc:else, заменяя их на совместимые конструкции if:true и if:false. В коде JavaScript и TypeScript инструмент отслеживает инлайн-запросы GraphQL внутри декоратора @wire и выносит их в отдельные геттеры.

Для запуска третьего этапа аудита требуется локальное окружение с npm версии 9.0.0 или новее и eslint от 8.0.0. Скрипт scripts/run-komaci.sh передаёт бандл анализатору с процессором bundleAnalyzer, формируя отчёт по нарушениям правил реактивности и побочных эффектов.

Если плагин @salesforce/eslint-plugin-lwc-graph-analyzer не установлен в каталоге проекта, статический аудит графа завершится сбоем. Инструмент решает только задачи офлайн-прайминга и не подходит для общего ревью кода или интеграции нативных функций устройства.

Какие задачи решает

  • адаптировать директивы lwc:if под требования офлайн-прайминга Komaci
  • вынести строковые запросы GraphQL из конфигураций @wire в геттеры
  • выявить побочные эффекты в геттерах через правила Komaci ESLint
  • устранить ошибки подготовки графа данных для Salesforce Mobile App Plus

Примеры запросов агенту

  • Проверь компонент modules/c/offlineAccountCard на совместимость с офлайн-режимом Komaci.
  • Найди ошибки прайминга графа данных в этом LWC перед публикацией в Salesforce Mobile App Plus.
  • Запусти проверку мобильного офлайна для modules/c/workOrderSummary и исправь директивы шаблона.

Как установить mobile-platform-offline-validate

1Через Skills CLI (Vercel)

npx skills add forcedotcom/sf-skills --skill mobile-platform-offline-validate -a claude-code

2Вручную: положить файлы

~/.claude/skills/mobile-platform-offline-validate/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/mobile-platform-offline-validate/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о mobile-platform-offline-validate

Как установить mobile-platform-offline-validate в Claude Code?

Выполните команду npx skills add forcedotcom/sf-skills --skill mobile-platform-offline-validate -a claude-code.

Что делает mobile-platform-offline-validate?

Скилл проверяет файлы Lightning Web Component на соответствие правилам подготовки данных для офлайн-режима Salesforce. Он правит условные директивы в шаблонах, выносит GraphQL-запросы в геттеры и находит ошибки реактивности через линтер.

Какие системные пакеты нужны для работы скилла?

Требуются npm и npx версии от 9.0.0, eslint от 8.0.0, а также локально доступный пакет @salesforce/eslint-plugin-lwc-graph-analyzer.

Исходный текст

SKILL.md · Apache-2.0
---
name: mobile-platform-offline-validate
description: "Review a Lightning Web Component for **mobile offline** compatibility — the Komaci offline static analyzer that pre-primes the data graph for Salesforce Mobile App Plus and Field Service Mobile App. Produces a finding list with code-level fixes covering inline GraphQL queries in `@wire` configurations, modern `lwc:if` / `lwc:elseif` / `lwc:else` directives, and Komaci ESLint rule violations (private wire properties, non-local reactive references, getter side-effects). Use when the user asks for a \"mobile offline review\", \"Komaci check\", \"offline priming audit\", \"offline priming failure\", or \"offline data graph error\", or to validate an LWC against the `@salesforce/eslint-plugin-lwc-graph-analyzer` recommended ruleset. Do not use for generic LWC code review (use an appropriate domain review skill) or for building LWCs with native mobile capabilities (use `mobile-platform-native-capabilities-integrate`)."
metadata:
  version: "1.0"
  domains: ["Mobile"]
  relatedSkills:
    - "mobile-platform-native-capabilities-integrate"
  cliTools:
    - tool: ["eslint"]
      semver: ">=8.0.0"
    - tool: ["npm"]
      semver: ">=9.0.0"
    - tool: ["npx"]
      semver: ">=9.0.0"
---

# Reviewing LWC Mobile Offline

Run a structured offline-priming compliance pass over a Lightning Web
Component, producing a report of issues found and code-level fixes to bring
the component into compliance with Komaci's static analysis requirements
for the Salesforce Mobile App Plus and Field Service Mobile App.

## When to Use

- The user asks for a "mobile offline review", "Komaci check", or "offline
  priming audit" on a specific LWC.
- Preparing a component to ship in Salesforce Mobile App Plus or Field
  Service Mobile App offline mode.
- Investigating priming failures reported by the offline analyzer.

Do NOT use this skill for:

- Building an LWC that uses native mobile capabilities (barcode scanner,
  biometrics, location, etc.) — use `mobile-platform-native-capabilities-integrate`.
- Generic LWC code review — use the appropriate domain skill
  (`reviewing-lws-security`, `reviewing-lwc-rtl`, `accessibility-code-review`).

## Prerequisites

- Component path (LWC bundle under `modules/…`).
- Access to the component's JS/TS and HTML templates.
- Local Node + npm; ability to run `npx eslint` with the
  `@salesforce/eslint-plugin-lwc-graph-analyzer` plugin.

## Knowledge Base

[Mobile Offline Grounding](references/grounding.md) explains the three
violation categories and why each blocks offline priming. Read it before
judging. The per-reviewer references below are the source of truth for the
rules and remediations:

- Inline GraphQL wire configuration: [Inline GraphQL Reviewer](references/inline-graphql.md)
- `lwc:if` conditional rendering compatibility: [lwc:if Reviewer](references/lwc-if.md)
- Komaci ESLint static analysis: [Komaci ESLint Reviewer](references/komaci-eslint.md)

## Workflow

### Step 1 — Scope the review

Identify the component bundle: `.html`, `.js`/`.ts`. CSS and meta files are
not in scope for offline priming. If the bundle has multiple HTML
templates, all are reviewed.

### Step 2 — Read the grounding and per-reviewer references

Read [Mobile Offline Grounding](references/grounding.md) and the three
per-reviewer references end-to-end before judging. Cite the specific
reviewer when emitting each finding so the report is auditable.

### Step 3 — `lwc:if` / `lwc:elseif` / `lwc:else` (HTML)

Walk every `.html` file in the bundle and apply the rules in
[lwc:if Reviewer](references/lwc-if.md). For each occurrence of
`lwc:if={…}`, `lwc:elseif={…}`, or `lwc:else`, emit a finding with the
exact `if:true` / `if:false` rewrite — including the nesting required to
preserve `lwc:elseif` and `lwc:else` semantics.

### Step 4 — Inline GraphQL in `@wire` (JS)

Walk every `.js`/`.ts` file in the bundle and apply the rules in
[Inline GraphQL Reviewer](references/inline-graphql.md). For each `@wire`
that references a `gql` template literal directly (or via a top-level
constant), emit a finding that names a concrete getter and shows the
rewritten `@wire` configuration.

### Step 5 — Komaci ESLint pass (JS)

Run the Komaci ESLint analyzer over the bundle's JS file using the
bundled script. It applies the
`@salesforce/eslint-plugin-lwc-graph-analyzer` recommended ruleset with
the `bundleAnalyzer` processor enabled.

```bash
scripts/run-komaci.sh path/to/component.js
```

The script requires `@salesforce/eslint-plugin-lwc-graph-analyzer` to
be resolvable from the working directory, and the component's sibling
HTML templates must live next to the JS file (the plugin's
`bundleAnalyzer` processor uses them to resolve the offline data
graph). Output is ESLint `--format json` on stdout.

For each `messages[*]` entry in the output, group by `ruleId` and look
up the per-rule remediation in
[Komaci ESLint Reviewer](references/komaci-eslint.md). Emit a finding
per (rule, line) pair with the exact remediation text from the
reference; do not invent new advice. See the reference for the manual
`npx eslint ...` invocation if the script is unavailable in the runtime
environment.

### Step 6 — Produce the report

Emit a report in this shape:

```text
## Mobile Offline (Komaci priming)
- <reviewer> — <file>:<startLine>:<startColumn>-<endLine>:<endColumn> — <type>
  Description: <verbatim from the reviewer reference>
  Intent analysis: <verbatim from the reviewer reference>
  Suggested action: <verbatim from the reviewer reference>
  Code: |
    <source snippet from startLine through endLine, optional but
     recommended when the violation spans multiple lines>
  Applied: yes/no

## Summary
- <n> issues found; <m> fixed; <k> deferred (with reason)
```

For Komaci ESLint findings, take `startLine`/`startColumn`/`endLine`/
`endColumn` from the ESLint message's `line`/`column`/`endLine`/`endColumn`.
For Inline GraphQL and `lwc:if` findings, supply the line/column range you
observed in the source. If `endLine`/`endColumn` are not available for a
finding, fall back to `<file>:<startLine>` and omit the trailing range.

Cite the reviewer (Inline GraphQL / lwc:if / Komaci ESLint rule id) on every
finding.

### Step 7 — Apply fixes

Apply the remediations directly when the user asked for fixes. If a
remediation conflicts with the component's behavior outside offline (e.g.
the developer relies on `lwc:elseif` for readability and the user is not
yet shipping to mobile offline), surface the conflict in the deferred list
rather than silently rewriting.


## Verification Checklist

- [ ] Every `lwc:if` / `lwc:elseif` / `lwc:else` flagged or absent.
- [ ] Every `@wire` referencing `gql` checked; inline queries extracted to
      a getter.
- [ ] Komaci ESLint analyzer was actually run; findings cite real rule
      ids, not invented ones.
- [ ] Each finding cites the originating reviewer or rule id.
- [ ] No remediation outside the three categories above (other concerns
      belong to other skills).


## Troubleshooting

- **`npx eslint` cannot find the plugin** — install
  `@salesforce/eslint-plugin-lwc-graph-analyzer` in the workspace, or use a
  pinned local install path. The plugin is the canonical source of Komaci
  rules.
- **`bundleAnalyzer` related errors** — the recommended config drives the
  bundle processor; do not strip it. The processor expects sibling HTML
  files to be discoverable. If running on a stripped-down JS file, supply
  the matching HTML in the temp directory.
- **No findings for a component you expect to fail** — confirm the
  recommended ruleset is applied (not just `bundleAnalyzer` with empty
  rules). Some rules require the HTML to be present alongside the JS.
- **Findings duplicate `lwc:if` from the dedicated reviewer** — the Komaci
  plugin does not check templates; the `lwc:if` check is HTML-only and
  comes from Step 3. Findings from Step 5 are JS-only.

© forcedotcom · Apache-2.0 · forcedotcom/sf-skills

Похожие скиллы

Всё по теме «Мобильная разработка» →
salesforce-component-standards официальный github Задаёт стандарты разработки компонентов Salesforce для LWC, Aura и Visualforce. Помогает настроить безопасность, доступ к данным и интерфейс. 770установок mobile-offline-support secondsky Скилл для офлайн-первого подхода в мобильных приложениях: локальное хранилище, очередь синхронизации, разрешение конфликтов. CX Codex +1 398установок Salesforce UI Development (Aura & LWC) официальный github Субагент для GitHub Copilot, который собирает компоненты Lightning Web Components и Aura с оглядкой на доступность и SLDS. ★ 40 418звёзд репо salesforce-development Mindrally Скилл задаёт агенту правила разработки на Salesforce: Apex, триггеры, Lightning Web Components, SOQL и метаданные. Пригодится, когда пишете код для org и хотите, чтобы агент держал стиль и лимиты платформы. CX Codex +1 659установок google-mobile-ads-validate официальный google Проверяет интеграцию Google Mobile Ads SDK в проектах iOS, Android и Unity. Подходит для полного аудита перед запуском или проверки отдельного участка. CX Codex 3 300установок godot-platform-mobile thedivergentai Скилл для ИИ-агента, который ведёт мобильную сборку Godot: тач-ввод, вырезы экрана, троттлинг и права Android. CX Codex +1 421установок

Из того же набора167

omnistudio-omniscript-generate Скилл создаёт и проверяет OmniScripts для многошаговых процессов с Integration Procedures и Data Mappers. Нужен при проектировании форм и сценариев с пошаговой логикой. CX Codex +1 4 800установок omnistudio-datamapper-generate Скилл собирает и проверяет OmniStudio Data Mapper: Extract, Transform, Load и Turbo Extract с оценкой по 100-балльной шкале. Пригодится, когда нужно разметить поля объектов Salesforce. CX Codex +1 4 800установок dx-code-analyzer-custom-rule-create Скилл помогает создавать пользовательские правила для Salesforce Code Analyzer на базе Regex, PMD и ESLint. Пригодится, когда встроенных проверок кода Apex или метаданных недостаточно. CX Codex +1 4 800установок commerce-b2b-store-create Ведёт по шагам к созданию B2B-магазина Commerce в Salesforce и выгружает метаданные витрины в репозиторий. Пригодится, когда нужно развернуть витрину из уже готового магазина. CX Codex +1 4 700установок mobile-platform-native-capabilities-integrate Помогает собрать Salesforce LWC с нативными функциями мобильного устройства: сканированием, геолокацией, NFC и платежами. Нужен при работе с lightning/mobileCapabilities. CX Codex +1 4 700установок commerce-b2b-open-code-components-replace Меняет стандартные B2B Commerce компоненты на открытые аналоги в content.json метаданных сайта. Или просто показывает соответствия, если менять файлы не нужно. CX Codex +1 4 600установок commerce-b2b-open-code-components-integrate Копирует открытые компоненты Salesforce B2B Commerce из GitHub в метаданные сайта магазина, чтобы они появились в палитре Experience Builder. CX Codex +1 4 600установок platform-policy-rule-generate Помогает писать метаданные PolicyRuleDefinition и PolicyRuleDefinitionSet для Salesforce Data Cloud: схема, дерево категорий, проверки перед деплоем. CX Codex +1 4 100установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой