Skip to content
Skills Library
Programming · Tool integration

pythonide-native

/pythonide-native

Choose and implement PythonIDE iOS native modules for permissions, device state, sensors, storage, keychain, photos, camera, location, notifications, networking, Bluetooth, health, speech, media, and system actions. Use with pythonide-appui when a MiniApp needs native capability behind user-triggered callbacks.

Licence
MIT
Last repository change
13.07.2026

Assessment and security

100/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
3
Scripts
1
HTML comments
2
URLs in SKILL.md
4
Deprecation

No signals detected. Repository changed on 13.07.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What to check before installing
  • 1 scripts in this package. Review them before installing, as Claude may execute them.
  • SKILL.md zawiera komentarze HTML (2). Nie widać ich w podglądzie Markdown, a model je czyta.

Scripts: examples/device_snapshot/main.py

What it does and when to use it

Choose and implement PythonIDE iOS native modules for permissions, device state, sensors, storage, keychain, photos, camera, location, notifications, networking, Bluetooth, health, speech, media, and system actions. Use with pythonide-appui when a MiniApp needs native capability behind user-triggered callbacks.

Original author description

Choose and implement PythonIDE iOS native modules for permissions, device state, sensors, storage, keychain, photos, camera, location, notifications, networking, Bluetooth, health, speech, media, and system actions. Use with pythonide-appui when a MiniApp needs native capability behind user-triggered callbacks.

How it works

  1. Read Before Coding
  2. Use When
  3. Do Not Use When
  4. Required Flow
  5. AppUI Pairing
  6. Permission Pattern
  7. Module Categories
  8. High-Signal Routing
  9. Hard Stops
  10. Persistence Rules
Original SKILL.md headings · 142 lines, 844 words
SKILL.md preview
---
name: pythonide-native
description: Choose and implement PythonIDE iOS native modules for permissions, device state, sensors, storage, keychain, photos, camera, location, notifications, networking, Bluetooth, health, speech, media, and system actions. Use with pythonide-appui when a MiniApp needs native capability behind user-triggered callbacks.
license: MIT
version: "1.0.0"
last_updated: "2026-06-19"
user_invocable: true
---

# PythonIDE Native

Discovery and implementation rules for iOS native Python modules. This skill does not replace `pythonide-appui`; pair both when building MiniApps that call system capabilities.

## Read Before Coding

1. [iOS native index](https://pythonide.xin/docs/pages/ios-native/)
2. [Native capabilities schema](https://pythonide.xin/schemas/native_capabilities_schema.json)
3. [llms-full.txt](https://pythonide.xin/llms-full.txt) native module table
4. Focused module page: `https://pythonide.xin/docs/pages/<module-id>/`
5. [references.md](references.md) in this skill for the full entry routing table
6. When the UI shell is AppUI, also load `pythonide-appui`

Chinese module docs are authoritative for scenarios; schema and stubs are authoritative for API names.

## Use When

- The task needs permissions, device facts, sensors, storage, secrets, user content, networking, peripherals, notifications, speech, audio/video, shortcuts, Live Activities, or Core ML
- You must choose the correct module before writing `import` statements
- An AppUI MiniApp needs callback-side native work beyond bridge components

## Do Not Use When

- The task is only AppUI layout, navigation, controls, or inline bridge components with no extra module logic
- The runtime is `widget`, `scene`, or plain stdlib Python with no iOS integration
- The app name mentions a capability but the code never calls it

## Required Flow

1. Route by schema entry kind: `module`, `appui_bridge`, `topic`, `reference`
2. Import only modules whose APIs are called
3. Check availability or authorization before sensitive operations
4. Request permission only from a named user-triggered callback
5. Handle denied, restricted, unavailable, cancelled, empty, offline, timeout, and error outcomes visibly
6. Persist small non-secret state with `storage`, queryable records with `database`, secrets with `keychain`
7. Keep native side effects out of AppUI `body()`

## AppUI Pairing

| UI need | Start here | Then |
| --- | --- | --- |
| Inline picker/camera/map/share/video | `pythonide-appui` bridge table | Add native module only for post-processing |
| Button-triggered GPS, notification, save-to-photos | `pythonide-appui` shell | `import location` / `notification` / `photos` in callback |
| Device status dashboard | `pythonide-appui` | `import device`, `permission`, `storage` |
| Script-only automation | this skill only | plain Python file |

## Permission Pattern

```python
import permission
import storage


def ensure_photos_access():
    status = permission.status("photos")
    if status.get("status") not in {"authorized", "limited"}:
        status = permission.request("photos")
    storage.set_json("native.photos_status", status)
    return status
```

## Module Categories

<!-- BEGIN GENERATED: native-module-categories -->
### Foundation & persistence

`clipboard`, `console`, `database`, `dialogs`, `keychain`, `permission`, `storage`

### Device & sensors

`biometric`, `device`, `haptics`, `health`, `location`, `motion`

### System & comms

`calendar_events`, `contacts`, `font_picker`, `live_activity`, `mail`, `message`, `notification`

### Media & vision

`audio_recorder`, `audio_session`, `avplayer`, `coreml`, `media_composer`, `music`, `music_player`, `now_playing`, `pdf`, `photos`, `qrcode`, `shazam`, `sound`, `speech`, `speech_recognition`, `video_recorder`, `vision`, `vision_helper`

### Connectivity & background

`background`, `background_download`, `ble_peripheral`, `bluetooth`, `http_server`, `network`, `nfc`, `ssh`, `weather`, `websocket`

### Automation & advanced

`alarm`, `assistant`, `c_extensions` (reference), `foundation_models`, `keyboard`, `objc_util`, `shortcuts`, `storekit`, `translation`
<!-- END GENERATED: native-module-categories -->

## High-Signal Routing

| User intent | Module / bridge |
| --- | --- |
| Pick or save photos | `photos`; inline UI → `appui.PhotoPicker` |
| Take photo in AppUI form | `appui.CameraPicker`; processing → `photos` |
| Current location / map | `location`; inline map → `appui.MapView` |
| Local notification | `notification` (permission key is `notifications`) |
| Network fetch | `network` |
| Live socket | `websocket` |
| Clipboard | `clipboard` |
| Share sheet in AppUI | `appui.ShareLink` (topic `share` has no import) |
| File picker in AppUI | `appui.FileImporter` (topic `file_picker` has no import) |
| Embedded AppUI video | `appui.PlayerController` + `appui.VideoPlayer` |
| Custom music queue player | `music_player` |
| Script-only media playback | `avplayer` |
| On-device ML | `coreml`, `vision`, `vision_helper`, `foundation_models` |

Full key-by-key routing: [references.md](references.md).

## Hard Stops

- Do not guess APIs from UIKit, Swift, browser, or Pythonista memory
- Do not use `permission.status("notification")`; use `notifications`
- Do not prompt permissions, scan hardware, or schedule notifications at import time or from AppUI `body()`
- Do not store secrets in `storage`
- Do not import CPython `sqlite3` directly in MiniApps; use `database`, which is backed by the host Swift SQLite bridge
- Do not use `avplayer` for AppUI embedded video controls
- Do not pass music provider IDs or unresolved search rows to `music_player.prepare`, `prefetch_next`, or `set_queue(..., preload_count=...)`; resolve them to real audio `url` values first
- Do not hide denied, cancelled, or offline outcomes
- Do not import `c_extensions` as runtime code; it is reference-only

## Persistence Rules

| Data | Use |
| --- | --- |
| User settings, small JSON state | `storage` |
| Queryable records / caches | `database` |
| Tokens, passwords, API keys | `keychain` |

## Repair Hints

- Inert native button → move call into named callback; surface result in `State` or output
- Wrong module → re-check [references.md](references.md) and schema `kind`
- Offline failures → `network.is_connected`, `network.connection_type` before expensive work
- Missing authorization → module `authorization_status` / `request_access`, else `permission.status` / `permission.request`
- Slow music next-track → resolve and cache playback URLs in the MiniApp/data layer, then use `music_player.set_queue(..., preload_count=3)` and `music_player.prefetch_next(3)` for host-side AVPlayer preparation

## Examples

- `examples/device_snapshot/` — `device` + `permission` + `storage` with AppUI shell in comments
Files in this package (3)
  • SKILL.md 7 KB
  • references.md 11 KB
  • examples/device_snapshot/main.py 1 KB

Versions

The database has no other skills named pythonide-native.

Database snapshot: 13.11.2026 · package version f5dc97426834 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100pythonide
    Route PythonIDE tasks to the correct runtime and companion skill (AppUI MiniApp, widget, scene, native modules, automation). Use when the user asks to build, fix, or choose a PythonIDE app, script, widget, game, or iOS capability workflow.
  • 100pythonide-appui
    Build or modify PythonIDE AppUI MiniApps with native navigation, forms, lists, search, tabs, toolbars, presentation, storage, and AppUI media bridges. Use when the user wants an interactive iOS MiniApp, settings screen, list/detail app, or native UI that may also need photos,…
  • 90expo-react-native
    Build, debug, or review an Expo and React Native feature across iOS and Android. Use when changing navigation, native modules, permissions, app configuration, EAS builds, or platform-specific UI.
  • 100ios-platform-capabilities
    Use when integrating iOS capabilities including App Intents, Spotlight, SwiftData, offline storage, biometrics, notifications, Bluetooth, media, PDF, Foundation Models, Core ML, or Vision; use ios-development for app architecture.
  • 90mobile-ios
    Builds native iOS apps in Swift — SwiftUI and UIKit screens, state and data flow, NavigationStack, lists, forms and accessibility; networking with URLSession and Codable, persistence with SwiftData, Core Data, files and the Keychain; permissions, push notifications, universal…
  • 100argent-settings-permissions
    Grant, deny, or reset an app's runtime permissions (camera, microphone, photos, contacts, notifications, calendar, location, location-always, media-library, motion, reminders) on an iOS simulator or Android device using the argent `settings-permissions` tool - without navigating…

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.