flutter-pro-image-editor-engineering
Skill8 starsChanged 48 days agoMITView on GitHub
Design, implement, review, debug, test, optimize, and migrate production Flutter image-editing flows built with pro_image_editor. Use for ProImageEditor constructors and callbacks, paint/crop/filter/tune/blur/text/emoji/sticker tools, custom widget layers, undo/redo and persisted editor state, JPG/PNG export, transparency, large-image memory or OOM issues, isolate and Web Worker generation, editor lifecycle, upload pipelines, EXIF/GPS privacy, or version-sensitive pro_image_editor APIs. Trigger even when the request only says the Flutter image editor is slow, resets, freezes during export, loses quality, or behaves differently on Web/mobile/desktop. Do not use for image selection without editing (use an image_picker skill) or generic Flutter image rendering and caching without pro_image_editor (use an image-performance skill).
In this repository70 other files it gives its agents.
- camerawesome-flutterSkill
- dart-args-production-cliSkill
- dart-flutter-equatable-engineeringSkill
- dart-flutter-ffi-systems-engineeringSkill
- dart-metaSkill
- document-camera-frameSkill
- document-scan-flutterSkill
- figma-to-flutter-expertSkill
- flutter-animations-production-engineeringSkill
- flutter-app-hardening-reverse-engineeringSkill
- flutter-app-icon-engineeringSkill
- flutter-application-security-engineeringSkill
- flutter-app-links-deep-link-engineeringSkill
- flutter-cachingSkill
- flutter-concurrency-memory-performanceSkill
- flutter-confetti-engineeringSkill
- flutter-dart-package-engineeringSkill
- flutter-design-system-from-design-mdSkill
- flutter-dio-cache-interceptor-engineeringSkill
- flutter-dio-engineeringSkill
- flutter-doc-scannerSkill
- flutter-drift-persistence-engineeringSkill
- flutter-expert-tipsSkill
- flutter-firebase-analyticsSkill
- flutter-firebase-core-engineeringSkill
- flutter-firebase-messagingSkill
- flutter-get-it-injectable-dependency-injectionSkill
- flutter-go-router-engineeringSkill
- flutter-hive-persistence-engineeringSkill
- flutter-image-performanceSkill
- flutter-image-picker-production-engineeringSkill
- flutter-lints-static-analysis-engineeringSkill
- flutter-local-notifications-production-engineeringSkill
- flutter-memory-leak-engineeringSkill
- flutter-mobile-developmentSkill
- flutter-motion-engineeringSkill
- flutter-multi-environmentSkill
- flutter-native-splash-engineeringSkill
- flutter-package-plugin-selectionSkill
- flutter-path-provider-production-storageSkill
- flutter-performance-jank-optimizationSkill
- flutter-permission-handler-engineeringSkill
- flutter-pinputSkill
- flutter-production-build-releaseSkill
- flutter-production-engineeringSkill
- flutter-production-loggingSkill
- flutter-secure-storage-security-engineeringSkill
- flutter-sentry-engineeringSkill
- flutter-share-plus-engineeringSkill
- flutter-skeletonizer-engineeringSkill
- flutter-squadron-concurrency-engineeringSkill
- flutter-supabase-engineeringSkill
- flutter-svg-engineeringSkill
- flutter-ui-performance-engineeringSkill
- flutter-url-launcher-engineeringSkill
- flutter-video-player-production-engineeringSkill
- flutter-webview-production-engineeringSkill
- freezed-production-engineeringSkill
- html-to-flutterSkill
- hydrated-blocSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
22 rules. About 0 are common, 17 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈17
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 9
Treat pro_image_editor as an image-processing pipeline with UI, memory, lifecycle, persistence, and privacy consequences—not as an ordinary …
- Distinctive: line 13
Read only the references needed:
- Very specific: line 30
Every ProImageEditor constructor, callback, configuration, controller, and persisted-state caller affected by the change.
- Distinctive: line 35
Search for at least:
- Distinctive: line 53
Must the original remain available for re-editing or recovery?
- Distinctive: line 55
Must editor history or individual layers persist?
- Distinctive: line 56
Must EXIF/GPS be removed, preserved, or ignored?
- Distinctive: line 59
If the repository answers these questions, do not ask the user again.
- Distinctive: line 63
Use this default architecture:
- Very specific: line 77
Prefer ProImageEditor.file for an existing supported native file and ProImageEditor.memory when bytes already exist or a browser picker …
- Distinctive: line 78
Do not add file-to-bytes-to-base64 round trips or claim file input is zero-copy.
- Distinctive: line 80
Keep gesture-time state local to the editor.
- Distinctive: line 81
Keep isolate/Web Worker generation enabled initially.
- Distinctive: line 85
Leave layer capture disabled unless the caller consumes captured layers.
- Distinctive: line 88
Do not log image bytes, base64, sensitive paths, filenames, EXIF, coordinates, or persisted private editor state.
- Distinctive: line 89
Never assert that metadata is stripped or retained without testing the actual unchanged and re-encoded paths.
- Distinctive: line 108
Run the narrowest applicable checks, then expand when the risk requires it:
- Very specific: line 111
Run focused unit/widget/integration tests.
- Very specific: line 113
Verify small and maximum-size sources, repeated open/export/close, output dimensions, format, quality, and alpha.
- Distinctive: line 114
Test metadata with fixtures when privacy depends on it.
- Distinctive: line 115
Test every shipped platform whose source, worker, filesystem, gesture, or layout behavior differs.
- Distinctive: line 118
Before finishing, review the diff for redundant byte copies, stale APIs, new unbounded work, original-media overwrite, and accidental …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Flutter pro_image_editor Engineering
Treat pro_image_editor as an image-processing pipeline with UI, memory, lifecycle, persistence, and privacy consequences—not as an ordinary widget.
Route the task
Read only the references needed:
| Task | Reference |
| Architecture, current API, configuration, constructors, source selection | references/01-api-and-inputs.md |
| Large-image memory, processors, formats, transparency, export, quality | references/02-processing-memory-and-export.md |
| History, editing tools, layers, gestures, lifecycle, files, upload | references/03-state-tools-and-lifecycle.md |
| Metadata/privacy, platforms, accessibility, state integration, failures, profiling | references/04-platform-privacy-and-performance.md |
| Tests, debugging, anti-patterns, review/readiness checklists, version-sensitive facts | references/05-testing-audits-and-versioning.md |
For exact APIs, first inspect the project's resolved package version and installed source. The bundled facts are validated against pro_image_editor 13.3.1, Flutter 3.44+, and Dart 3.12+; treat them as a baseline, not proof for another version.
Inspect before changing code
Inspect:
pubspec.yaml,pubspec.lock, Flutter/Dart constraints, and supported platforms.- Every
ProImageEditorconstructor, callback, configuration, controller, and persisted-state caller affected by the change. - Source type and dimensions, required output dimensions/format/alpha, and metadata policy.
- Existing image-picker, storage, upload, navigation, state-management, and error-handling paths.
- Installed
pro_image_editorsource when a signature, default, enum value, or behavior is version-sensitive.
Search for at least:
ProImageEditor ProImageEditorCallbacks ProImageEditorConfigs
ImageGenerationConfigs MainEditorConfigs StateHistoryConfigs
onImageEditingComplete onCompleteWithParameters onCloseEditor
importStateHistory exportStateHistory captureLayersOnDone
UniqueKey readAsBytes base64 maxOutputSize outputFormatTrace all completion and cancellation paths before editing. Fix shared causes once instead of patching one caller.
Define the contract
Establish only requirements that affect the implementation:
- Which platforms ship?
- Which source types and maximum dimensions are accepted?
- Must the original remain available for re-editing or recovery?
- What output dimensions, format, quality, and transparency are required?
- Must editor history or individual layers persist?
- Must EXIF/GPS be removed, preserved, or ignored?
- What work must happen after export, and who owns it?
If the repository answers these questions, do not ask the user again. Otherwise choose the conservative behavior that preserves the original and avoids privacy claims.
Implement the smallest complete flow
Use this default architecture:
source media
→ minimal source preparation
→ stable ProImageEditor route
→ transient editor-owned state
→ one final export
→ close editor
→ persistence/upload/business workApply these rules:
- Prefer
ProImageEditor.filefor an existing supported native file andProImageEditor.memorywhen bytes already exist or a browser picker supplies bytes. - Do not add file-to-bytes-to-base64 round trips or claim file input is zero-copy.
- Preserve stable widget/session identity; never introduce
UniqueKey()to force routine rebuilds. - Keep gesture-time state local to the editor. Do not mirror every pointer update into global state, storage, analytics, or the network.
- Keep isolate/Web Worker generation enabled initially. Change processor mode or concurrency only from profile evidence.
- Bound final dimensions when the product does not need full source resolution. Preserve the original separately when re-editability or fidelity matters.
- Choose JPG for opaque photographic output and PNG when alpha or lossless output is required. Verify actual output dimensions and alpha pixels.
- Bound history deliberately for long sessions or large sources.
- Leave layer capture disabled unless the caller consumes captured layers.
- Give completion one owner and make downstream side effects idempotent when duplicate delivery is possible.
- Move uploads, database writes, and other business work outside the editor's interaction and export lifecycle when the product permits.
- Do not log image bytes, base64, sensitive paths, filenames, EXIF, coordinates, or persisted private editor state.
- Never assert that metadata is stripped or retained without testing the actual unchanged and re-encoded paths.
Diagnose from evidence
Classify the bottleneck before optimizing:
open latency → source decode, dimensions, copies, editor initialization
gesture jank → rebuilds, layer/path/history growth, blur/filter raster cost
export freeze → capture, raw buffers, encoding, app callback work
memory spike/OOM → decoded pixels, concurrent full-image buffers, history, layers
web-only failure → byte/file semantics, Worker availability, Wasm fallback
reset/lost edits → changing key/type/source identity or incorrect state ownershipMeasure profile/release builds on the slowest supported device or browser. Keep debug measurements out of performance conclusions.
Validate the result
Run the narrowest applicable checks, then expand when the risk requires it:
- Format and analyze changed Dart code.
- Run focused unit/widget/integration tests.
- Exercise cancel, successful Done, export failure, and duplicate completion.
- Verify small and maximum-size sources, repeated open/export/close, output dimensions, format, quality, and alpha.
- Test metadata with fixtures when privacy depends on it.
- Test every shipped platform whose source, worker, filesystem, gesture, or layout behavior differs.
- Profile UI/raster timing, export duration, and peak memory for performance work.
Before finishing, review the diff for redundant byte copies, stale APIs, new unbounded work, original-media overwrite, and accidental sensitive logging.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

