Agent skill

Mobile Parity

by kdlbs in kdlbs/kandev

Ensures Kandev UI work uses native mobile interaction patterns instead of compressed desktop adaptations while preserving desktop/mobile capability parity, responsive behavior, and mobile Playwright…

AGPL-3.0Auto-check passedTesting & QA

Install Mobile Parity

skills CLI
$ npx skills add kdlbs/kandev --skill mobile-parity -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install kdlbs/kandev mobile-parity --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/kdlbs/kandev.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/mobile-parity .claude/skills/mobile-parity && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
mobile-parity
GitHub stars
912
Token cost
~3.7k tokens
SKILL.md length
1,966 words
Files
3 (incl. references)
Skills in repo
45
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Ensures Kandev UI work uses native mobile interaction patterns instead of compressed desktop adaptations while preserving desktop/mobile capability parity, responsive behavior, and mobile Playwright…

  • Works in 5 steps: Map affected surfaces. → Design desktop and mobile behavior… → Implement responsive UI. → …
  • Testing any new feature
  • SKILL.md covers When It Applies, Specification ownership, Mobile Design Contract and Workflow, plus 3 more sections
  • Calls make

What it does

Mobile Parity is an agent skill from kdlbs/kandev. Ensures Kandev UI work uses native mobile interaction patterns instead of compressed desktop adaptations while preserving desktop/mobile capability parity, responsive behavior, and mobile Playwright E2E coverage. Use when implementing, planning, reviewing, or testing any new feature, page, component, workflow, form, dialog, sidebar, navigation, dashboard, or visual UI change; if work touches frontend or user-facing UI, this skill must run even when user mentions only desktop or says "new feature".

Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/control-sizing.md` and `references/kandev-mobile-ui-language.md`).

It sits in Testing & QA, covering End-to-end testing, Mobile UI design and Browser testing. It works with Playwright. The repository describes itself as: AI Kanban & Development Environment. Orchestrate multiple agents, review changes, open PRs. Multi-provider, self-hostable, no telemetry. The licence is AGPL-3.0.

When your agent uses it

  • Testing any new feature
  • Visual UI change
  • Work touches frontend
  • This skill must run even when user mentions only desktop

Example prompts

  • “new feature”
  • “Use the mobile-parity skill to ensure Kandev UI work uses native mobile interaction patterns instead of compressed desktop adaptations while…”
  • “/mobile-parity”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Map affected surfaces.
  2. Design desktop and mobile behavior together.
  3. Implement responsive UI.
  4. Add E2E coverage.
  5. Verify visually and behaviorally.

What it can do on your machine

Read from SKILL.md and the folder at commit 53a00c2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • make

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Mobile Parity loads about 3.7k tokens when it runs, and up to ~7.7k if it reads all its reference files. Until then it costs about 129 tokens; SKILL.md has 1,966 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~129
When it runs · the whole SKILL.md, loaded when a task matches
~3.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from kdlbs/kandev at commit 53a00c2, republished under its AGPL-3.0 licence (© kdlbs). 1,966 words, ~3,711 tokens.

Download SKILL.mdSave it as .claude/skills/mobile-parity/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
mobile-parity
description
Ensures Kandev UI work uses native mobile interaction patterns instead of compressed desktop adaptations while preserving desktop/mobile capability parity, responsive behavior, and mobile Playwright E2E coverage. Use when implementing, planning, reviewing, or testing any new feature, page, component, workflow, form, dialog, sidebar, navigation, dashboard, or visual UI change; if work touches frontend or user-facing UI, this skill must run even when user mentions only desktop or says "new feature".
kandev.system
true
kandev.version
0.51.0

Mobile Parity

Use this skill before planning or changing UI. Goal: desktop and mobile deliver the same user value, while each viewport gets an intentional composition and tests prove the mobile path.

Before proposing a mobile design, read Kandev Mobile UI Language and inspect the closest shipped mobile surface. Responsive CSS alone does not establish mobile parity.

For buttons, single-line inputs, selectors, or control-size audits, also read Control sizing. It defines desktop sizes, touch exceptions, and the sweep procedure.

When It Applies

Apply when task changes user-facing UI:

  • new or changed pages, routes, components, forms, dialogs, drawers, navigation, dashboards, tables, cards, toolbars, editors, settings, onboarding, or visual states
  • new frontend behavior attached to backend/API work
  • bug fixes where layout, touch behavior, scrolling, or viewport width can affect success

If task has no UI surface, say why this skill does not apply and continue.

Specification ownership

When the task uses durable specifications, put mobile outcomes in the system that owns the feature contract. Do not create a second UI requirement or design only because the feature needs a phone surface. Use the UI system only for an independent reusable interaction contract.

Keep the mobile composition in the owning feature design with its backend and desktop boundaries. Link to an existing UI contract when the feature reuses one.

Mobile Design Contract

When a task changes composition, navigation, overlays, touch behavior, scrolling, or breakpoint behavior, state these choices in the working plan or task notes. Keep them brief; do not create a separate document unless the task already uses a spec or plan. For copy, icon, color, or content-only styling inside an unchanged surface, identify the nearest mobile exemplar and the rendered mobile check instead of forcing the full contract.

  • desktop user outcome and mobile entry point
  • nearest shipped mobile exemplar and which interaction/geometry it contributes
  • mobile information hierarchy and primary action
  • presentation choice: inline, inset bottom drawer, full-height surface, or direct navigation
  • surface rationale: why task frequency and content depth make that choice preferable to the alternatives
  • single scroll owner, dynamic viewport behavior, safe-area handling, and touch targets
  • shared state, view-model, filtering/selection, and business logic versus mobile-specific presentation
  • mobile Playwright scenario proving the same user value

For a feature or fix design package, record the desktop and phone composition as ASCII previews in the plan and relevant UI work orders. Follow docs/specs/guide/plans-and-work-orders.md#ascii-ui-previews; include a compact preview in the final conversation handoff. During implementation, compare the rendered phone surface with the assigned preview's structure and annotations.

Workflow

  1. Map affected surfaces.

    • Identify every page, modal, menu, tab, empty state, loading state, and error state the feature touches.
    • Check where desktop layout assumptions can fail: fixed widths, hover-only controls, sidebars, tables, dense toolbars, keyboard shortcuts, overflow, and absolute positioning.
    • Use rg to find the nearest existing mobile component and the route's current useResponsiveBreakpoint branch. Name the closest curated exemplar from the reference and state which parts are reused.
    • Treat live code as the source of truth for APIs, state, and current behavior. Treat this skill's curated guide and exemplar list as the desired mobile interaction baseline; nearby legacy surfaces that deviate from it need justification, not automatic reuse.
  2. Design desktop and mobile behavior together.

    • Preserve capability, data, and state semantics; do not require identical markup or navigation.
    • Apply the surface decision guide in the mobile UI language reference. Prefer a focused, one-dimensional phone flow over stacked desktop panes or two-axis scrolling.
    • Explicitly distinguish temporary choices that belong in a drawer from primary or dense content that deserves direct navigation or a full-height surface.
    • When a card or row has an obvious primary destination and no competing selection, drag, or inline-control behavior, make its body tap perform that action. Otherwise expose an explicit touch control. Put secondary actions behind a visible target, never hover, right-click, or undiscoverable long press.
    • Define mobile navigation, hierarchy, scroll owner, touch targets, truncation, empty/error states, and responsive fallback behavior before coding.
  3. Implement responsive UI.

    • Reuse domain hooks, state, view-model derivation, filtering/selection, and action handlers across viewports; keep responsive wrappers focused on presentation. Branch composition when the desktop interaction model depends on width or a fine pointer. Do not mount a heavyweight desktop workbench and merely hide or squeeze it on phones.
    • Use useResponsiveBreakpoint and existing @kandev/ui or mobile primitives. Reuse current Dropdown/ContextMenu primitives for contextual actions; use Drawer or an existing picker shell for structured phone navigation and choices. Use useTouchDrawer when a hover disclosure needs a coarse-pointer alternative.
    • Use 28px for ordinary desktop buttons, single-line inputs, select triggers, and combobox triggers. Use 24px only for deliberate compact inline controls. Match the desktop Start Task dialog and shared default primitives.
    • Keep phone and coarse-pointer action targets at least 44px. Scope touch dimensions to those conditions. A desktop-visible action must not inherit an unconditional h-11 or min-h-11. Check both height and minimum height: changing h-* does not remove an oversized min-h-*.
    • A Radix Tooltip that happens to open after Playwright .tap() is not a coarse-pointer alternative. Use useTouchDrawer with a Drawer branch and assert the drawer surface in mobile E2E.
    • Keep coarse-pointer and mobile touch targets large enough for touch use, generally at least 44px in the active dimension. This is an active hit-area rule, not a universal desktop visual-size rule: fine-pointer desktop controls should retain the surrounding design-system density, and touch-sized classes such as h-11 must not become the shared desktop button size.
    • When one component serves both pointer modes, keep its fine-pointer size as the base class and add the 44px size only behind a coarse-pointer or phone variant. An unqualified h-11 or min-h-11 on a desktop-visible shared action is a sizing bug.
    • For a primary mobile dialog action whose contract requires an actual hit target of at least 44px, prefer 48px nominal sizing when browser scaling can produce fractional bounds. Assert the rendered boundingBox().height (or width for a horizontal target) is at least 44px; a utility class alone does not prove the physical target.
    • Treat isMobile as the phone-layout authority independently of pointer precision. Add a narrow fine-pointer viewport regression for responsive controls and measure the rendered hit target with boundingBox() or elementFromPoint; require at least 44px when that is the control's phone contract.
    • Use dynamic viewport units and an explicit internal scroll region for viewport-bound/full-height or potentially overflowing surfaces. Ensure bottom-fixed controls and tall drawers clear safe-area insets; short drawers can retain the shared primitive's intrinsic sizing. Keep document-level horizontal overflow at zero.
    • If mobile substitutes an unsupported desktop view, derive an effective mobile view without overwriting the user's saved desktop preference.
    • Use semantic controls, visible labels or accessible names, focus return, and existing design-system components.
    • Avoid hiding required functionality on mobile unless there is a clear alternate path.
  4. Add E2E coverage.

    • Add or update Playwright tests for the feature's happy path on desktop if missing.
    • Add mobile Playwright coverage for the same user value, using existing mobile projects/devices when configured.
    • In this repo, name mobile test files mobile-*.spec.ts so the mobile-chrome Playwright project picks them up automatically.
    • Cover the actual mobile composition: drawer or full-height surface, visible overflow action, focused navigation, direct route, or bottom control.
    • For overlay and dense-navigation changes, assert viewport containment, internal scrolling, and the absence of document horizontal overflow where those properties are part of the regression.
    • For responsive visual or utility changes, define the base phone behavior and assert computed styles at the canonical phone viewport and just below and above the relevant breakpoint; geometry or overflow checks alone can miss a desktop style leaking into a full-screen mobile surface.
    • When overriding dimensions on a shared Dialog or Drawer, inspect the primitive's responsive classes as well as the caller. An unprefixed max-w-* or height utility does not replace an inherited sm: or md: variant through cn or twMerge; override the matching variant. Assert the rendered desktop width, phone containment, and scroll owner; class strings or visibility alone do not prove the geometry.
    • When responsive CSS changes an overlay or absolute child to normal flow (for example, position: static), re-check the parent's allocated width and height; a fixed-size desktop wrapper can under-report combined in-flow mobile content.
    • When a desktop-only flow is hidden on phones and owns a draft or completion state, test desktop → phone → desktop after an unsaved edit. Verify the draft survives and the phone visit does not mark the flow complete.
    • For containment regressions, compare the interactive control's bounding box with its row, drawer, or viewport bounds. An intrinsic 44px hitbox plus a document-overflow check does not prove that an ancestor is not clipping the control.
    • When a touch-only control is replaced or hidden, run rg across mobile E2E tests for the removed control. Replace every affected interaction with the intended gesture or alternate control, then run those tests together.
  5. Verify visually and behaviorally.

    • Run the narrowest relevant viewport locally or with screenshots when possible.
    • Even small user-facing UI tweaks need at least focused rendered verification when feasible: dev-server/browser check, Playwright screenshot, or targeted E2E. If not run, report the exact reason.
    • Check phone ergonomics, not only responsive fit: entry point is discoverable, primary action is thumb-reachable, hierarchy is understandable, sheet shape matches nearby surfaces, and back/dismiss behavior is predictable.
    • Check that text does not overlap, controls remain clickable, focus/keyboard flows still work, safe-area content is unobstructed, and no unintended horizontal scroll appears.
    • Run the focused Playwright tests. If full E2E cannot run, report the command and blocker.
    • E2E runs against the production Vite build served by the Go backend, not a dev server, so rebuild after frontend changes: make build-web (and make build-backend for Go), or use make test-e2e which rebuilds both. Skipping this silently tests stale code. See /e2e.
Show full SKILL.md (361 more words)Show less

Mobile E2E Expectations

Every UI feature should end with one of these:

  • mobile Playwright test added or updated
  • existing mobile Playwright test explicitly identified as covering the changed behavior
  • written justification for no mobile test, limited to impossible-to-test infrastructure gaps

For frontend changes that are purely state/data normalization inside an existing component and do not alter rendered layout, touch behavior, scrolling, navigation, or viewport-dependent interaction, targeted unit/component tests plus an explicit note can satisfy mobile parity. New mobile Playwright coverage is not required for that narrow case.

Good mobile tests assert real user outcomes, not only visibility. Prefer:

  • open feature from mobile navigation and complete primary action
  • use drawer/menu/sheet variant of desktop controls
  • submit form and verify result
  • handle empty/error/loading state on narrow viewport
  • confirm no required action is desktop-only

Playwright Routing

Create mobile-*.spec.ts files and let the mobile-chrome project apply its configured Pixel 5 device; do not add per-test device overrides. Follow /e2e for fixtures, page objects, selectors, build requirements, and local reproduction. Top-level tests/mobile-*.spec.ts files import ../fixtures/test-base; nested specs adjust the depth, commonly using ../../fixtures/test-base. Mobile parity owns which interaction and geometry contracts need proof; /e2e owns test mechanics.

Done Checklist

  • Desktop path still works.
  • Structural/touch changes include a mobile design contract naming entry point, nearest shipped exemplar, hierarchy, surface, scroll owner, and primary action.
  • For those changes, surface rationale explains why the chosen composition fits task frequency and content depth.
  • Content-only styling changes identify the nearest mobile exemplar and focused rendered mobile check instead.
  • Mobile path follows a shipped Kandev pattern or explains why a new pattern is needed.
  • Mobile composition is intentional, not desktop UI stacked, squeezed, or hidden with CSS.
  • Required controls are reachable by touch.
  • No required workflow depends on hover, wide viewport, or hidden desktop-only UI.
  • Viewport-bound/full-height or potentially overflowing surfaces use dynamic viewport sizing, safe-area clearance, and internal scrolling.
  • Responsive fallbacks do not overwrite saved desktop preferences.
  • Mobile E2E tests no longer invoke touch controls that the change replaced or hid.
  • Mobile Playwright coverage exists or absence is justified.
  • Focused rendered/visual verification was run for UI tweaks, or exact "not run" reason is reported.
  • Focused tests were run, or exact blocker is reported.

© kdlbs, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in .agents/skills/mobile-parity of kdlbs/kandev.

  • SKILL.md
  • references/control-sizing.md
  • references/kandev-mobile-ui-language.md

Open the folder on GitHubat commit 53a00c2

Compare with similar skills

Mobile Parity next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Mobile Parity compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Mobile Parity this skillkdlbs/kandev912—~3.7kAutomated safety check: PassAGPL-3.0
Web Application Testinganthropics/skills180k51 repos~966Automated safety check: PassApache-2.0
Write and Verify Playwright Testsappsmithorg/appsmith41k—~2.9kAutomated safety check: NotesApache-2.0
playwright-cli Browser Automationgithub/gh-aw5.4k23 repos~2.8kAutomated safety check: PassMIT
Cucumber and Playwright E2E Testslanggenius/dify158k—~682Automated safety check: PassCustom licence
E2E Testinglangflow-ai/langflow155k—~3.3kAutomated safety check: PassMIT

Similar skills

  • Web Application Testing

    anthropics/skills

    Official

    Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.

    180k GitHub starsUsed in 51 repos~966 tokens
    Testing & QAAuto-check passed
  • Writes a Playwright end-to-end test from a prompt, runs it against a live Appsmith deployment and retries with fixes up to three times until it passes.

    41k GitHub stars~2.9k tokensUpdated today
    Testing & QAAuto-check: notes
  • Official

    Drives a real browser from the command line with playwright-cli to open pages, interact, mock requests, save state and work with Playwright tests.

    5.4k GitHub starsUsed in 23 repos~2.8k tokens
    Testing & QAAuto-check passed
  • Guides changes and reviews of the Cucumber and Playwright end-to-end suite under `e2e/`: feature files, step definitions, support code, tags, locators and assertions.

    158k GitHub stars~682 tokensUpdated today
    Testing & QAAuto-check passed
  • E2E Testing

    langflow-ai/langflow

    Write and review Playwright E2E tests for Langflow. An agent skill from langflow-ai/langflow.

    155k GitHub stars~3.3k tokensUpdated today
    Testing & QAAuto-check passed
  • Handsontable Playwright E2E Tests

    handsontable/handsontable

    Guides writing and changing Playwright end-to-end tests for Handsontable using page objects, data-testid hooks and deterministic waits.

    22k GitHub stars~1.8k tokensUpdated today
    Testing & QAAuto-check passed

More from kdlbs/kandev

All 45 skills in this repo
  • PR Walkthrough

    kdlbs/kandev

    Generate a single-file HTML walkthrough that explains a PR's purpose, user impact, interface changes, compatibility risks, and implementation.

    912 GitHub stars~6.3k tokensUpdated today
    Auto-check passed
  • Debug

    kdlbs/kandev

    Diagnose Kandev bugs, running-instance issues, UI/browser failures, and runtime behavior.

    912 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Improve Kandev's AI harness from session learnings or explicit requests.

    912 GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Diagram Design

    kdlbs/kandev

    Create branded architecture, IT current-state, flowchart, sequence, state machine, ER/data model, timeline, swimlane, quadrant, radar/spider, polar chart (polar/radial lollipop), loop/flywheel…

    912 GitHub starsUsed in 1 repo~8k tokens
    Auto-check passed
  • TDD

    kdlbs/kandev

    Implement changes using Test-Driven Development (Red-Green-Refactor).

    912 GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Verify

    kdlbs/kandev

    Run a broad local verification audit only when the user explicitly requests it or PR/CI remediation requires it.

    912 GitHub stars~2.7k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Mobile Parity

What does Mobile Parity do?

Ensures Kandev UI work uses native mobile interaction patterns instead of compressed desktop adaptations while preserving desktop/mobile capability parity, responsive behavior, and mobile Playwright…. Mobile Parity is an agent skill from kdlbs/kandev. Ensures Kandev UI work uses native mobile interaction patterns instead of compressed desktop adaptations while preserving desktop/mobile capability parity, responsive behavior, and mobile Playwright E2E coverage.

When should I use Mobile Parity?

Mobile Parity fits situations like: testing any new feature; visual UI change; work touches frontend; this skill must run even when user mentions only desktop.

How do I install Mobile Parity in Claude Code?

Run `npx skills add kdlbs/kandev --skill mobile-parity -a claude-code`. Or copy the skill folder (.agents/skills/mobile-parity in kdlbs/kandev) into .claude/skills/mobile-parity in your project. Claude Code loads it when a task matches its description.

How do I install Mobile Parity in Codex?

Run `npx skills add kdlbs/kandev --skill mobile-parity -a codex`. Or copy the skill folder (.agents/skills/mobile-parity in kdlbs/kandev) into .agents/skills/mobile-parity in your project. Codex loads it when a task matches its description.

Can I use Mobile Parity in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kdlbs/kandev --skill mobile-parity -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/mobile-parity, .gemini/skills/mobile-parity, .github/skills/mobile-parity and .opencode/skills/mobile-parity in your project.

What does Mobile Parity need to run?

Going by SKILL.md and its folder, Mobile Parity needs the command-line tools its instructions call (make).

Does Mobile Parity access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Mobile Parity safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Mobile Parity use?

Mobile Parity is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Mobile Parity use?

About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4k tokens, read only when the agent opens those files.

What are the alternatives to Mobile Parity?

Skills that share tags, products or a category with Mobile Parity: Web Application Testing (anthropics/skills, 180k stars), Write and Verify Playwright Tests (appsmithorg/appsmith, 41k stars), playwright-cli Browser Automation (github/gh-aw, 5.4k stars) and Cucumber and Playwright E2E Tests (langgenius/dify, 158k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Mobile Parity?

kdlbs (a GitHub organization) maintains it in kdlbs/kandev, which has 912 GitHub stars. The repository holds 45 skills in this directory. The repository was last updated on October 10, 2026.

Source: kdlbs/kandev on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.