
Filmkit Fujifilm Camera
Guide an agent through FilmKit’s browser WebUSB workflow for Fujifilm X-series presets, RAF conversion, and on-camera profile management.
Overview
FilmKit Fujifilm Camera is an agent skill for the Build phase that helps you use FilmKit’s WebUSB PTP integration to manage Fujifilm presets and convert RAF files in the browser.
Install
npx skills add https://github.com/aradotso/trending-skills --skill filmkit-fujifilm-cameraWhat is this skill?
- Browser-based preset manager for Fujifilm X-series using WebUSB and PTP like X RAW STUDIO
- Read/write custom film simulation slots D18E–D1A5 via GetDevicePropValue / SetDevicePropValue
- RAF-to-JPEG conversion handled on-camera with full-quality JPEG return and live preview
- Local preset library with drag-and-drop sync between camera and browser storage
- Runs client-side on GitHub Pages with desktop Chrome and Android support
- On-camera custom preset slot range D18E–D1A5 via PTP device properties
Adoption & trust: 826 installs on skills.sh; 31 GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
You want to manage Fujifilm film simulations and convert RAF files without installing desktop studio software, but WebUSB and PTP steps are easy to get wrong.
Who is it for?
Solo creators or indie devs shooting Fujifilm X-series who automate or document FilmKit preset and RAW workflows with an agent.
Skip if: Builders without Fujifilm X-series hardware, teams needing non-Fuji RAW pipelines, or workflows that require server-side batch processing only.
When should I use this skill?
User mentions FilmKit, Fujifilm camera presets, WebUSB Fuji connection, X-series PTP, or browser-based Fuji RAW conversion.
What do I get? / Deliverables
You can run FilmKit’s on-camera preset and RAW-to-JPEG flows confidently, including library sync and import/export, on supported browsers and Android Chrome.
- Step-level FilmKit workflow guidance
- Preset import/export and library sync instructions
- RAF conversion and live preview usage notes
Recommended Skills
Journey fit
FilmKit is a concrete client-side integration (WebUSB + PTP), so Build is the natural home when you are wiring or operating that toolchain. Connecting a web app to camera hardware via PTP matches integrations more than generic frontend polish.
How it compares
Use for FilmKit’s browser PTP workflow—not a generic photo SaaS backend or a Rust/Cargo research skill.
Common Questions / FAQ
Who is filmkit-fujifilm-camera for?
Photographers and indie builders using Fujifilm X-series cameras who want agent guidance for FilmKit’s WebUSB preset and RAW conversion features.
When should I use filmkit-fujifilm-camera?
Use it during Build when integrating or operating FilmKit—managing on-camera presets, syncing a local library, or debugging WebUSB PTP connection issues.
Is filmkit-fujifilm-camera safe to install?
The skill describes a third-party browser tool that accesses your camera over USB; review the Security Audits panel on this Prism page and only grant WebUSB to trusted origins.
SKILL.md
READMESKILL.md - Filmkit Fujifilm Camera
# FilmKit Fujifilm Camera Skill > Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. FilmKit is a browser-based, zero-install preset manager and RAW converter for Fujifilm X-series cameras. It uses WebUSB to communicate via PTP (Picture Transfer Protocol) — the same protocol as Fujifilm X RAW STUDIO — so the camera's own image processor handles RAW-to-JPEG conversion. It runs entirely client-side (hosted on GitHub Pages) and supports desktop and Android. --- ## What FilmKit Does - **Preset Management**: Read, edit, and write custom film simulation presets directly on-camera (slots D18E–D1A5 via PTP `GetDevicePropValue` / `SetDevicePropValue`) - **Local Preset Library**: Save presets locally, drag-and-drop between camera and local storage - **RAW Conversion & Live Preview**: Send RAF files to the camera, receive full-quality JPEGs back - **Preset Detection**: Loading a RAF file auto-detects which preset was used to shoot it - **Import/Export**: Presets as files, links, or text paste - **Mobile Support**: Works on Android via Chrome's WebUSB support --- ## Requirements - **Chromium-based browser** (Google Chrome, Edge, Brave) on desktop or Android — WebUSB is required - **Fujifilm X-series camera** connected via USB (tested on X100VI; likely works on X-T5, X-H2, X-T30, etc.) - **Linux udev rule** (if running Chrome in Flatpak): ```bash # /etc/udev/rules.d/99-fujifilm.rules SUBSYSTEM=="usb", ATTR{idVendor}=="04cb", MODE="0666" ``` Reload rules after adding: ```bash sudo udevadm control --reload-rules && sudo udevadm trigger ``` --- ## Installation / Setup (Development) FilmKit is a static TypeScript app. To run locally: ```bash git clone https://github.com/eggricesoy/filmkit.git cd filmkit npm install npm run dev ``` Build for production: ```bash npm run build ``` The built output is a static site — no server required. Open in Chrome at `http://localhost:5173` (or wherever Vite serves it). --- ## Architecture Overview ### PTP over WebUSB FilmKit speaks PTP (Picture Transfer Protocol) directly over USB bulk transfers. Key operations: | PTP Operation | Purpose | |---|---| | `GetDevicePropValue` | Read a camera preset property | | `SetDevicePropValue` | Write a camera preset property | | `InitiateOpenCapture` | Start RAW conversion session | | `SendObject` | Send RAF file to camera | | `GetObject` | Retrieve converted JPEG from camera | ### Preset Property Codes Fujifilm X-series cameras expose film simulation parameters as device properties in the range `0xD18E`–`0xD1A5`: ```typescript // Example property codes (from QUICK_REFERENCE.md) const PROP_FILM_SIMULATION = 0xD18E; const PROP_GRAIN_EFFECT = 0xD18F; const PROP_COLOR_CHROME = 0xD190; const PROP_WHITE_BALANCE = 0xD191; const PROP_COLOR_TEMP = 0xD192; const PROP_DYNAMIC_RANGE = 0xD193; const PROP_HIGHLIGHT_TONE = 0xD194; const PROP_SHADOW_TONE = 0xD195; const PROP_COLOR = 0xD196; const PROP_SHARPNESS = 0xD197; const PROP_HIGH_ISO_NR = 0xD198; // Non-linear encoding! const PROP_CLARITY = 0xD199; ``` ### Native Profile Format The camera's native `d185` profile is **625 bytes** and uses different field indices/encoding from RAF file metadata. FilmKit uses a **patch-based approach**: ```typescript // Conceptual patch approach function applyPresetPatch(baseProfile: Uint8Array, changes: PresetChanges): Uint8Array { // Copy base profile byte-for-byte const patched = new Uint8Array(baseProfile); // Only overwrite fields the user changed // This preserves EXI