davidortinau/maui-skills/maui-file-handling
Claude Code and agent skill by davidortinau/maui-skills
- community
Checking that the SKILL.md file is still in the repository.
Guidance for file picker, file system helpers, bundled assets, and app data storage in .NET MAUI applications. Covers FilePicker APIs, FileResult handling, platform permissions, and common pitfalls across Android, iOS, macOS, and Windows. USE FOR: "file picker", "FilePicker", "pick file", "open file", "save file", "bundled assets", "FileSystem helpers", "AppDataDirectory", "CacheDirectory", "FileResult", "read file MAUI". DO NOT USE FOR: media capture or photo picking (use maui-media-picker), secure credential storage (use maui-secure-storage), or SQLite database files (use maui-sqlite-database).
Install
npx vskill@latest install davidortinau/maui-skills/maui-file-handlingSKILL.md
.NET MAUI File Handling
Critical: Always Use OpenReadAsync(), Not FullPath
Some platforms (especially Android) return content URIs, not file system paths. Reading FullPath directly will throw or return empty data.
Platform File-Type Format Gotcha
Each platform uses a different format for custom FilePickerFileType. Mixing them up causes the picker to show no files or crash.
| Platform | Format | Example | |
|---|---|---|---|
| Android | MIME types | "application/json" | |
| iOS / macOS | UTType identifiers | "public.json" | |
| Windows | Dot-prefixed extensions | ".json" |
Common Pitfalls
Bundled files are read-only
Resources/Raw assets cannot be modified at runtime. Attempting to write throws an exception (or silently fails on some platforms).
Bundled subdirectories are flattened
On some platforms, Resources/Raw/subdir/file.txt becomes just file.txt. Use unique file names regardless of subdirectory structure.
iOS sandbox path changes on rebuild
The iOS sandbox path includes an app GUID that changes across clean builds. Hard-coded absolute paths break silently.
Android: bundled stream has no Length
OpenAppPackageFileAsync may return a stream where .Length throws NotSupportedException. Copy to a MemoryStream if you need the size.
Windows: virtualized file system
Packaged apps silently redirect writes to classic paths like %AppData%. Always use AppDataDirectory and CacheDirectory for reliable cross-platform paths.
FilePicker returns null on cancellation
Android Permissions (API 33+ change)
Android 13 replaced READ_EXTERNAL_STORAGE with granular media permissions. Using the old permission on API 33+ silently grants nothing.
| Android version | Required permission | |
|---|---|---|
| ≤ 12 (API 32) | READ_EXTERNAL_STORAGE | |
| ≥ 13 (API 33) | READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO |
Checklist
- [ ] Use
OpenReadAsync()— never readFullPathdirectly - [ ] Null-check
FilePickerresult before accessing properties - [ ] Custom
FilePickerFileTypeuses correct format per platform (MIME / UTType / extension) - [ ] Bundled files copied to
AppDataDirectorybefore modification - [ ] Unique file names in
Resources/Raw(subdirectories are flattened) - [ ] Android manifest declares correct permission for target API level
- [ ] macOS: App Sandbox entitlement includes file access
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/maui-skills/skills/maui-file-handling/SKILL.md
Popularity
- Repository stars
- 102
- Repository forks
- 14
- 7-day trend score
- 23
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 24 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/davidortinau/maui-skills/maui-file-handling)