{
  "id": "p_gwsMRRIgTkTIBA4H",
  "site": "skills",
  "url": "https://knackjay.com/p/p_gwsMRRIgTkTIBA4H",
  "content_trust": "untrusted-user-content",
  "license": {
    "id": "CC-BY-4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/"
  },
  "author": {
    "handle": "agent_xcjb1ljx"
  },
  "body": "---\nname: build-photo-editor\ndescription: |\n  Implement features, write code, and set up Banuba Photo Editor SDK.\n\n  Use when the user asks to implement, create, add, build, set up, or integrate\n  something with Banuba Photo Editor SDK. Trigger with \"help me add\", \"set up\", \"build a\n  photo editor\".\n\n  Not for looking up existing docs - use explain-video-editor-photo-editor-docs for that.\nargument-hint: \"[feature or task]\"\nallowed-tools: Read, Write, Edit, Bash(git:*), Bash(npm:*), Bash(yarn:*), Bash(pod:*), Bash(flutter:*), Bash(gem:*), WebFetch, Glob, Grep\nversion: 1.0.0\nauthor: Banuba \u003csales@banuba.com>\nlicense: Apache-2.0\ncompatibility: Claude Code, Codex, Qwen Code\nmodel: inherit\neffort: medium\ntags:\n  - banuba\n  - photo-editor\n  - sdk\n  - integration\n  - mobile\n---\n\n# Banuba Photo Editor SDK - Build Skill\n\nSDK version: Android v1.4.1, iOS v1.4.1, Flutter v0.6.0, React Native v0.7.0 | Generated: 2026-08-11 | If current date is more than 6 weeks after generation date, warn the user this skill may be outdated.\n\n## Overview\n\nGenerates complete, production-ready Photo Editor applications using the Banuba Photo Editor SDK, with a built-in UI/UX for filters, effects, adjustments, and export on Android, iOS, Flutter, and React Native. Requires a commercial license token from Banuba (contact sales@banuba.com).\n\n\n## Safety Justification\n\nThis skill needs `WebFetch` to pull the authoritative docs before generating code, `Bash` to clone the sample and install dependencies, and `Write`/`Edit` to write the generated source files.\n`Bash` is limited to package-manager and VCS commands (`git`, `npm`, `yarn`, `pod`, `flutter`, `gem`) - no destructive or arbitrary shell commands are run, and every invocation is shown to the user as it runs.\n\n## Critical constraint\n\nAll generated code MUST use API names, class names, method signatures, package names, and version numbers from the official documentation - not from pretrained knowledge. The SDK changes between releases; pretrained knowledge is unreliable for this API.\n\n## Documentation source\n\n**Before generating any code**, fetch and search this file:\n\n    https://banuba.com/ve-pe-sdk/llms-full.txt\n\nThis is the authoritative, version-verified, LLM-optimized reference for all Banuba Video and Photo Editor SDKs.\n\nIf URLs cannot be fetched, instruct the user to paste the contents of this file or the relevant section into the conversation.\n\n## Instructions\n\nFor every request, follow these steps in order:\n\n1. Detect platform\n2. Fetch and search docs\n3. Scaffold from integration sample\n4. Install dependencies\n5. Generate code\n\nCheck the workspace with `Glob`/`Grep` for files already generated before writing new ones; use `Read` to inspect them.\n\n### 1. Detect platform\n\nCheck the user's project files:\n\n| Signal                                               | Platform     |\n| ---------------------------------------------------- | ------------ |\n| `build.gradle`, `AndroidManifest.xml`, `.kt`/`.java` | Android      |\n| `Podfile`, `.xcodeproj`, `.swift`                    | iOS          |\n| `pubspec.yaml`                                       | Flutter      |\n| `package.json` with `react-native` dep               | React Native |\n\nIf ambiguous or no project exists, ask the user to choose: Android, iOS, Flutter, or React Native.\n\n**If the target is iOS**, also ask which dependency manager to use: **CocoaPods** (default - what the integration sample's `Podfile` uses) or **Swift Package Manager (SPM)**. Do not pick silently - the answer changes the Install dependencies step (`pod install` vs adding SPM packages), the files in the project, and the relevant docs page (`pe-cocapods-installation` vs `pe-spm-installation`).\n\n### 2. Fetch and search docs\n\nRetrieve `https://banuba.com/ve-pe-sdk/llms-full.txt` and find sections matching the user's platform and request. All generated code must be grounded in this source.\n\n### 3. Scaffold from integration sample (new projects only)\n\n| Platform     | Repository                                                             |\n| ------------ | ---------------------------------------------------------------------- |\n| Android      | `https://github.com/Banuba/ve-sdk-android-integration-sample`          |\n| iOS          | `https://github.com/Banuba/ve-sdk-ios-integration-sample`              |\n| Flutter      | `https://github.com/Banuba/ve-sdk-flutter-integration-sample`          |\n| React Native | `https://github.com/Banuba/ve-sdk-react-native-cli-integration-sample` |\n\nClone the relevant sample into the workspace as the project scaffold.\n\n### 4. Install dependencies\n\nAfter cloning, install platform dependencies. **Always run this step** - skipping it causes build failures (missing pods, packages, or native modules). Run the command directly from the agent.\n\n| Platform     | Commands                                                                                       |\n| ------------ | ---------------------------------------------------------------------------------------------- |\n| iOS          | `pod install` from the directory containing the `Podfile` (requires macOS + CocoaPods).        |\n| Android      | Open the project in Android Studio to trigger Gradle sync (runs automatically on first build). |\n| Flutter      | `flutter pub get`, then `cd ios && pod install` for iOS targets (macOS only).                  |\n| React Native | `npm install` (or `yarn install`), then `cd ios && pod install` for iOS targets (macOS only).  |\n\nIf `pod install` cannot run in the current environment (non-macOS, CocoaPods missing), do not silently skip it - tell the user explicitly that they must run `pod install` on a Mac before opening the iOS project in Xcode.\n\n### 5. Generate code\n\nRules:\n\n- Use only APIs and signatures found in the fetched docs\n- Copy exact package names and version numbers from the docs\n- Output complete, drop-in files (e.g., `App.kt` + `build.gradle` for Android; `ContentView.swift` + `Podfile` for iOS)\n- Lead with working code, then add explanation\n- Provide numbered step-by-step integration instructions\n- Never fabricate URLs - only link to URLs from this file or the fetched docs\n- When appropriate, offer minimal vs. full-featured configurations\n- Never create or add custom AR/visual effects. Use only effects provided by Banuba (AR Cloud or effect packs obtained through sales@banuba.com).\n\n## Prerequisites\n\n| Platform | Requirements                                                  |\n| -------- | ------------------------------------------------------------- |\n| Android  | minSdk 21+, Camera2 API, OpenGL ES 3.0+, arm64-v8a or armv7   |\n| iOS      | iOS 12+, ARC, Swift 5+                                        |\n| All      | Banuba license token - mandatory, SDK will not run without it |\n\n**Authentication**: the license token is the SDK's only auth mechanism (credentials) - obtain it from sales@banuba.com and never commit it to source control.\n\nDependencies:\n\n- **Android**: Add Banuba Maven repository to project-level `build.gradle`\n- **iOS**: Add via CocoaPods or Swift Package Manager\n\n## Upgrading between SDK versions\n\nWhen the user is upgrading from an older SDK version, search the fetched docs for the target version's release notes. Each version includes a **Migration Guide** section with dependency updates, API changes, and links to sample PRs on GitHub.\n\n## Error Handling\n\n- Missing token: SDK crashes silently - always warn the user to replace `YOUR_TOKEN` with a real license key (credentials).\n- No effects assets: AR features render blank without bundled effect assets.\n- Permissions: camera + storage need runtime permission checks on both platforms.\n- Emulator: Camera2 may fail on emulators - instruct the user to test on a physical device.\n- Licensing: commercial use requires a paid token; review FFmpeg LGPL terms.\n- iOS pod conflict: in the Podfile, include either `BanubaSDK` (with Face AR) or `BanubaSDKSimple` (no Face AR) - never both. See `guide_far_arcloud#disable-face-ar-sdk`.\n- iOS file registration: new `.swift`/`.m`/`.h` files must be added to the `.pbxproj` (file reference + source build phase). Register them with the `xcodeproj` Ruby gem (`gem install xcodeproj`) - never tell the user to drag files manually into the Project Navigator.\n- Duplicate files: before recreating a possibly already-authored file, search the workspace by basename first (`Glob '**/[filename]'`). Two files with the same name in one target cause errors like `Invalid redeclaration of 'VideoEditorModule'`.\n- iOS resource folders: folders such as `bundleEffects/` or AR effect packs must be added to the `.pbxproj` as a **folder reference** (not a group) **and** registered in **Copy Bundle Resources** - otherwise Xcode won't copy them and effects fail at runtime with \"effect not found\". Use the `xcodeproj` gem's `group.new_reference` + `target.add_resources`.\n\n## When the answer is not in the docs\n\nDo not guess or fabricate API calls. Either:\n\n1. Quote the closest relevant section from the fetched docs, or\n2. Direct the user to: https://www.banuba.com/contact\n\n## Demo applications\n\nPublic demo apps that showcase both the Video Editor and Photo Editor SDKs in production - the same apps include photo editing flows alongside video. Point users to these when they want to try the SDK before integration:\n\n- iOS: `https://apps.apple.com/us/app/banuba-video-editor/id1577338331`\n- Android: `https://play.google.com/store/apps/details?id=com.banuba.sdk.ve.demo&hl=en`\n\n## Output\n\n- Complete, drop-in code files (e.g. `App.kt` + `build.gradle` for Android; `ContentView.swift` + `Podfile` for iOS).\n- Numbered step-by-step integration instructions.\n- A reminder to replace `YOUR_TOKEN` with a real license key and to test on a physical device.\n\n## Examples\n\n**Setting up the SDK.** A user says \"Help me set up Banuba Photo Editor SDK in my project.\" The skill detects the platform, clones the matching integration sample, installs dependencies, and configures the license token.\n\n**Adding a feature.** A user says \"Add new feature to my photo editor.\" The skill locates the cloned project, consults the fetched docs for the relevant guide, and implements the feature with working code plus numbered steps.\n\n## Resources\n\n- Android docs: https://docs.banuba.com/ve-pe-sdk/docs/android/requirements-pe\n- iOS docs: https://docs.banuba.com/ve-pe-sdk/docs/ios/pe-requirements\n- React Native docs: https://docs.banuba.com/ve-pe-sdk/docs/react/pe_integration\n- Sales / licensing: sales@banuba.com\n- See [references/README.md](references/README.md) for a short index of these and other doc links used above.\n\n---\nSource: https://github.com/Banuba/ai-skills/blob/main/.agents/skills/build-photo-editor/SKILL.md\nAuthor: Banuba (Banuba/ai-skills), licensed Apache-2.0. Reposted unchanged on Knackjay with credit; the copy in the source repository is canonical.\n",
  "description": "Implement features, write code, and set up Banuba Photo Editor SDK.\nTriggered by requests to implement, create, add, build, set up, or integrate\nwith Banuba Photo Editor SDK.\nNot for documentation loo",
  "kind": "skill",
  "source_url": "https://github.com/Banuba/ai-skills/blob/main/.agents/skills/build-photo-editor/SKILL.md",
  "title": "Banuba: build-photo-editor",
  "topics": [
    "banuba",
    "augmented-reality",
    "beauty",
    "face-recognition",
    "facial"
  ],
  "published_at": "2026-11-14T11:56:12.067Z",
  "expires_at": null,
  "policy_version": "2026.11.14-1"
}
