resources/boost/skills/nativephp-mobile/SKILL.md
Builds native iOS and Android apps with PHP & Larvel. Activate when using native device APIs (camera, dialog, biometrics, scanner, geolocation, push notifications), EDGE components (bottom-nav, top-bar, side-nav), `#nativephp` JavaScript imports, native mobile events, NativePHP Artisan commands (native:run, native:install, native:watch), deep links, secure storage, or mobile app deployment.
npx skillsauth add nativephp/mobile-air nativephp-mobileInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Before implementing any feature, fetch the relevant docs using WebFetch. Find the right URL in references/available-docs.md.
WebFetch("https://nativephp.com/docs/mobile/3/apis/camera", "Explain Camera API methods, events, and fluent builder options")
Never auto-run these commands. Always tell the user to run them manually:
npm run build -- --mode=ios # or --mode=android
php artisan native:run ios # or android
php artisan native:watch
./native open
./native watch
Before suggesting commands, determine:
.blade.php with wire:, app/Livewire/) vs JavaScript (.vue/.jsx/.tsx, inertiajs in package.json).Set in .env before php artisan native:install:
NATIVEPHP_APP_ID=com.yourcompany.yourapp
NATIVEPHP_APP_VERSION="DEBUG"
NATIVEPHP_APP_VERSION_CODE="1"
# Optional for iOS:
NATIVEPHP_DEVELOPMENT_TEAM=XXXXXXXXXX
| Command | Purpose |
|---------|---------|
| php artisan native:install | Install/upgrade native shell |
| php artisan native:run ios/android | Build and launch on simulator/emulator |
| php artisan native:watch | Hot reload during development |
| php artisan native:jump | Quick restart without full rebuild |
| php artisan native:tail | Stream device logs |
| php artisan native:package | Package for App Store / Play Store |
HMR with Vite works when npm run dev runs alongside native:run.
import { nativephpMobile, nativephpHotFile } from './vendor/nativephp/mobile/resources/js/vite-plugin.js';
export default defineConfig({
plugins: [
laravel({
input: ['resources/css/app.css', 'resources/js/app.js'],
refresh: true,
hotFile: nativephpHotFile(),
}),
tailwindcss(),
nativephpMobile(),
]
});
import { camera, dialog, scanner, biometric, on, off, Events } from '#nativephp';
await camera.getPhoto();
await dialog.alert('Title', 'Message');
await scanner.scan().prompt('Scan ticket').formats(['qr', 'ean13']);
await biometric.prompt().id('auth-check');
Event handling — always clean up in onUnmounted:
const handler = (payload) => { /* handle */ };
on(Events.Camera.PhotoTaken, handler);
// onUnmounted:
off(Events.Camera.PhotoTaken, handler);
Core Facades (Native\Mobile\Facades): Camera, Dialog, Biometrics, Network, SecureStorage, File, Share, Haptics, System, Device
Plugin Facades (separate packages): Browser, Scanner, Microphone, Geolocation, PushNotifications
use Native\Mobile\Attributes\OnNative;
use Native\Mobile\Events\Camera\PhotoTaken;
#[OnNative(PhotoTaken::class)]
public function handlePhoto(string $path): void
{
// Process photo at $path
}
SecureStorage::get(), Network::status()Camera::getPhoto() dispatches PhotoTaken->event(CustomEvent::class) (PHP) or .event('App\\Events\\Custom') (JS)EDGE renders Blade components as native UI. Works with both Livewire and Inertia (layout is Blade).
native:bottom-nav, native:top-bar, native:side-navid attributesnativephp-safe-area class to body for notch handling<native:bottom-nav>
<native:bottom-nav-item id="home" icon="home" label="Home" :url="route('home')" />
<native:bottom-nav-item id="profile" icon="person" label="Profile" :url="route('profile')" />
</native:bottom-nav>
Modular plugin architecture — device features as separate Composer packages:
| Package | Feature | Cost |
|---------|---------|------|
| nativephp/mobile-browser | In-app browser, OAuth | Free |
| nativephp/mobile-camera | Camera & photo picker | Free |
| nativephp/mobile-dialog | Alerts & toasts | Free |
| nativephp/mobile-device | Vibrate, flashlight, device info | Free |
| nativephp/mobile-file | File move/copy | Free |
| nativephp/mobile-microphone | Audio recording | Free |
| nativephp/mobile-network | Network status | Free |
| nativephp/mobile-share | Share URLs & files | Free |
| nativephp/mobile-system | Open app settings | Free |
| nativephp/mobile-scanner | QR/barcode scanning | $49 |
| nativephp/mobile-biometrics | Face ID / Touch ID | $49 |
| nativephp/mobile-geolocation | GPS location | $49 |
| nativephp/mobile-secure-storage | Keychain/Keystore | $49 |
| nativephp/mobile-firebase | Push notifications | Proprietary |
For authoring plugins: references/plugin-best-practices.md
NATIVEPHP_APP_ID in .env before native:installoff() in onUnmountedid on EDGE component childrennativephp-safe-area class on bodyScanner requires nativephp/mobile-scanner)nativephpMobile() / nativephpHotFile() in vite.config.js--mode=ios or --mode=android to npm run builddevelopment
Maintainer-only workflow for handling GitHub Secret Scanning alerts on OpenClaw. Use when Codex needs to triage, redact, clean up, and resolve secret leakage found in issue comments, issue bodies, PR comments, or other GitHub content.
development
Maintainer workflow for OpenClaw releases, prereleases, changelog release notes, and publish validation. Use when Codex needs to prepare or verify stable or beta release steps, align version naming, assemble release notes, check release auth requirements, or validate publish-time commands and artifacts.
development
Run, watch, debug, and extend OpenClaw QA testing with qa-lab and qa-channel. Use when Codex needs to execute the repo-backed QA suite, inspect live QA artifacts, debug failing scenarios, add new QA scenarios, or explain the OpenClaw QA workflow. Prefer the live OpenAI lane with regular openai/gpt-5.4 in fast mode; do not use gpt-5.4-pro or gpt-5.4-mini unless the user explicitly overrides that policy.
development
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.