Skip to content
Back to skills

Photocraft

ASecurity

PhotoCraft is a native, pure-Rust image editor: an open-source clean-room reimplementation of Adobe Photoshop on macOS/Windows/Linux plus a WebAssembly web build, with PSD/PSB read+write, layers, masks, adjustment layers, layer styles, type, vectors, a brush engine, filters, a headless CLI (photocraft-cli), a JSON control channel, and an MCP server. Use this skill whenever the user mentions PhotoCraft, .pcraft, photocraft-cli, or Photoshop-style layer/PSD work; asks what PhotoCraft can or can...

  • 11 stars
  • 0 votes
  • 1 copy
  • 14 views
  • Added October 16, 2026
ai-agentsrustgogitperformance

Works with

  • cli
  • mcp

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned October 16, 2026

npx -y skills add midasmatterhorn/artcraft-skills --skill photocraft --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Photocraft?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Photocraft
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/midasmatterhorn-photocraft/badge)](https://www.skillsdirectory.com/skills/midasmatterhorn-photocraft)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: photocraft
description: >
  PhotoCraft is a native, pure-Rust image editor: an open-source clean-room reimplementation of
  Adobe Photoshop on macOS/Windows/Linux plus a WebAssembly web build, with PSD/PSB read+write,
  layers, masks, adjustment layers, layer styles, type, vectors, a brush engine, filters, a
  headless CLI (photocraft-cli), a JSON control channel, and an MCP server. Use this skill
  whenever the user mentions PhotoCraft, .pcraft, photocraft-cli, or Photoshop-style layer/PSD
  work; asks what PhotoCraft can or cannot do, its file formats or shortcuts; wants to automate,
  batch, script, or batch-convert images through it; needs importable assets prepared for it;
  wants PhotoCraft output verified or repaired; or troubleshoots it. Also trigger on generic
  image-editing or PSD-conversion tasks ("edit this photo", "make a PNG with transparency",
  "convert PSD to WebP", "batch-resize a folder") when PhotoCraft may be the tool.
---

# PhotoCraft

## Overview

PhotoCraft is a native, offline image editor written entirely in Rust (no Electron/Tauri/webview),
targeting 1:1 Photoshop parity with better performance and full agent drivability. It is a
clean-room reimplementation of Adobe Photoshop (behaviour and look only, from public specs), the
image-editing sibling of ArtCraft/VectorCraft/FilmCraft/LightCraft. Source: GitHub org
`storytold`, repo `photocraft` (README.md). Desktop UI is egui/eframe on wgpu; the same engine
compiles to WebAssembly for the browser (apps/photocraft-web, `docs/architecture.md`).

Maturity: **early alpha**, version 0.8.2 (workspace `Cargo.toml`; installed bundle
`/Applications/PhotoCraft.app` reports 0.8.2). The README is explicit: "much of Photoshop's
feature surface exists in some form, but it is not yet a Photoshop replacement for daily
professional work" (README.md "Status"). Measured numbers: feature breadth ~76%, ready for real
work ~45%, 953 open issues, 22 of 25 performance budgets missed (ROADMAP.md). The repo is HEAD of
main; the installed app may lag (launcher auto-updates) — **verify against your installed
version** where behaviour matters (`PhotoCraft ▸ About` / `photocraft --version`).

Rule the app lives by, and the agent should too: never crash, never panic on bad input; commands
validate params and return errors (AGENTS.md "Golden rules"). Expect graceful `Err`s, not crashes.

## Capabilities (verified)

### Documents, layers, editing
- RGB, Grayscale, CMYK and Lab documents at 8/16/32-bit; depth and mode are runtime data
  (README.md "Any colour, any depth"; `crates/doc`).
- Layers: groups, clipping masks, pixel and vector masks, fill layers, adjustment layers,
  27 Photoshop blend modes + 6 Paint.NET variants, opacity/fill, locks, colour labels, alpha
  channels, Quick Mask; merge/flatten/rasterize; Artboards, layer comps, snapshots
  (README.md "Layers, done properly"; `crates/doc`, `crates/engine/src/layer_cmds*`).
- 16 adjustment layers (Curves, Levels, Hue/Saturation, Vibrance, …) plus destructive
  equivalents; 10 layer-style effects live on any layer incl. type
  (README.md "Edit without regret", "Styles that sell the shot").
- Selections: marquees, lassos, Magic Wand, Quick/Object Selection, Select Subject (classical,
  no ML), Select and Mask dialog, feather/expand/contract/smooth/grow (README.md "Selections…";
  `crates/algo`).
- Type: point + paragraph text, on-canvas editing, Character/Paragraph controls, Warp Text;
  type layers round-trip through PSD (README.md "Type that sets beautifully").
- Vector: shape layers, Pen/Freeform/Curvature pens, combine modes, vector masks, strokes/fills;
  SVG opens as shape layers and places as a vector Smart Object (README.md "Pixel-perfect
  vectors"; `crates/io/src/svg.rs`).
- Smart objects with smart filters, lossless transforms/warps; History + History Brush, Toggle
  Last State; Actions record/replay; Fade (README.md; `crates/ops`, `crates/engine`).
- Filters: 70+ incl. Blur Gallery, distortions, Stylize, Render, live previews through the
  selection (README.md "See it before you commit"; `crates/algo`, `crates/engine/src/filter_cmds*`).
- Colour management in-house (`crates/cms`): embedded ICC, Assign/Convert to Profile, soft
  proofing and Gamut Warning (README.md "Any colour, any depth").
- 67 tools listed in the README; per `docs/gaps.md` (2026-10-13) the only Photoshop tool still
  missing is Art History Brush. (`ROADMAP.md` "12 missing" is stale — docs disagree; trust
  `docs/gaps.md` §G6.)

### Open / import formats (module that handles each)
- PSD/PSB, read+write — `crates/io/src/psd_import.rs`, `psd_export.rs`; `crates/psd`.
- Layered TIFF (Photoshop layer data), read+write — `crates/io/src/tiff_layers.rs`.
- OpenRaster `.ora`, read+write — `crates/io/src/ora.rs`. Paint.NET `.pdn` (read only, PDN3,
  editable layers + blend modes) — `crates/io/src/pdn.rs`. Krita `.kra`/`.krz` (read only) —
  `crates/io/src/kra.rs`. Affinity `.af`/`.afdesign`/`.afphoto`/`.afpub` (read only; unsupported
  parts warn) — `crates/io/src/affinity.rs`.
- SVG/SVGZ (opens as shape layers; placeable as vector Smart Object) — `crates/io/src/svg.rs`.
- Flat formats read+write: PNG (8/16-bit), JPEG, TIFF (8/16/32f), WebP (lossless default; lossy
  with a quality), GIF, BMP, TGA, ICO (≤256²), Netpbm (PBM/PGM/PPM/PAM/PFM), QOI, OpenEXR
  (F16/F32), Radiance HDR, FITS, DPX — `crates/codecs` (`format.rs` `caps()` is the authority;
  `crates/codecs/README.md` capability matrix). Read-only: PCX, XPM, DDS.
- HEIC/HEIF read-only (official builds enable the `heif` feature; no write); AVIF write-only
  behind the non-default `avif` feature (no read in any build) — `crates/codecs/src/format.rs`
  `FormatCaps`, `crates/heif`.
- Camera raw read: DNG, CR2, NEF, NRW, ARW, SRF, SR2, PEF, ORF, RW2, RAF — `crates/raw/src/lib.rs:142`.
- Photoshop Actions `.atn` import (112 mapped events) — `crates/engine/src/atn_cmds.rs`.

### Native project format
- `.pcraft`: a lossless bundle — a ZIP of STORE entries **or** a directory with the same layout:
  `manifest.json` (versioned document tree, migrations in `crates/format/src/migrate.rs`),
  content-addressed `tiles/<blake3>.zst` + `blobs/<blake3>.zst`, optional `thumb.png` and
  `composite/preview.png` (`crates/format/src/lib.rs` module docs; `docs/development.md` "Native
  format"). Incremental save (`PcraftWriter`), atomic writes, autosave + crash recovery
  (`crates/format/src/autosave.rs`; desktop `Recovery` folder; **web build has no crash
  recovery**).

### Save / export
- File ▸ Save writes back only to the document's own PSD, PSB or `.pcraft` (`docs/control-protocol.md`);
  Save As chooses a format; Save a Copy leaves the document untitled.
- PSD/PSB export with warnings for anything dropped; layered TIFF when asked; `.pcraft` always.
- Export As dialog: PNG, JPG, WebP, TIFF, TGA, ICO with quality/transparency/scale + size estimate
  (`crates/ui-egui/src/export_dialog.rs:16`); plus Quick Export as PNG, Save for Web (Legacy)
  with GIF/PNG-8 palette editing (`docs/control-protocol.md`).
- Exporting a layered document to a flat format can flatten/drop things — the export returns
  warnings; read them (`docs/control-protocol.md` `app.save` `warnings`).

### Automation surfaces
- **Every user-visible action is an engine command** (~700 registered; `crates/engine/src/commands.rs`,
  `docs/architecture.md` "Current state"). UI, CLI, control channel and MCP dispatch the same ids.
  Discover them with `photocraft-cli commands --filter <text>`, `engine.commands` over the control
  channel, or MCP `command_list` (reply shape documented in `docs/control-protocol.md`).
- **CLI `photocraft-cli`** (headless; `apps/photocraft-cli/src/lib.rs` `USAGE`): `convert`,
  `info`, `run`, `batch`, `droplet`, `commands`, `mcp`, `serve`. Exit codes 0 ok / 1 failure /
  2 usage; unknown flags are errors (no silent fallback).
- **JSON control channel** in the desktop app (`--control <port>`): authenticated loopback TCP,
  one JSON line per request; methods `engine.execute`, `engine.commands`, `ui.inspect`, `ui.set`,
  `ui.pointer`, `ui.click`, `ui.key`, `ui.screenshot`, `ui.menu.invoke`, `ui.dialog.*`,
  `app.open`/`app.save`, `jobs.*` (`apps/photocraft/src/control_server.rs`,
  `crates/ui-egui/src/control.rs`, `docs/control-protocol.md`).
- **MCP server** (`photocraft-cli mcp`): headless in-process session, or `--bridge
  127.0.0.1:<port>` to a running app. Tools include `command_list`, `command_run`,
  `command_batch`, `doc_open/new/place/save/export/inspect/render_preview/select/close`,
  `jobs_list`, `jobs_cancel`; bridge adds `ui_inspect`, `ui_screenshot`, `ui_pointer`,
  `ui_menu_invoke`, `ui_set` (`docs/mcp.md`, `docs/development.md` "MCP (agents)").
- **Actions/batch/droplets**: recordable Actions (persist as `actions.json`), `.atn` load/save,
  `batch --actions <file> --action <name> --in <dir> --out <dir>`, `.pcdroplet` files via
  `photocraft-cli droplet` (`apps/photocraft-cli/src/lib.rs`).
- **Plug-ins**: sandboxed WebAssembly plug-ins, ABI v1, `plugin.*` commands
  (`docs/plugins.md`); no native/Photoshop plug-in hosting.

### Platform notes
- Desktop: macOS, Windows, Linux, FreeBSD (README.md Downloads). Web: WebAssembly via trunk
  (`apps/photocraft-web`, `packaging/web`), preferences in `localStorage`, no filesystem, no
  crash recovery (`docs/development.md`).
- macOS specifics: pen tablet support via an AppKit event monitor — pressure, tilt, rotation,
  eraser end (`crates/tablet/src/macos.rs`, AGENTS.md; the one crate allowed `unsafe`).

## Known limitations and not-implemented

- **Not a Photoshop replacement yet.** Alpha; ready-for-real-work ~45%; 953 open issues; PSDs it
  writes are not always accepted by Photoshop (#1281, #2469) and Photoshop-authored files do not
  always render identically (oracle 145/258) — `docs/gaps.md` G1, `ROADMAP.md`.
- **No AI/generative features**: no Generative Fill/Expand, Neural Filters, Sky Replacement, ML
  Select Subject; there is no ML runtime. Classical substitutes only (`docs/gaps.md` G15).
- **No Photoshop plug-in compatibility**: no `.8BF`, CEP or UXP hosting; only the repo's own
  wasm plug-in ABI v1 (`docs/plugins.md`, `docs/gaps.md` G16).
- **Type depth**: no type on a path, no paragraph-direction UI, no OpenType Numerals/Stylistic
  Sets submenus, no live Warp Text preview, no text free transform (`docs/gaps.md` G8).
- **Workspaces are dialogs**: Select and Mask, Content-Aware Fill, Vanishing Point and most Blur
  Gallery pin editors are parameter dialogs, not Photoshop's full-screen workspaces (only Field
  Blur has on-canvas pins) — `docs/gaps.md` G7.
- **Performance**: 22 of 25 budgets missed on a loaded machine (layer move, paste, opacity
  changes, big-brush lag); the 150-layer nudge can crash the GPU compositor (`docs/gaps.md` G2).
- **Formats missing**: JPEG Options dialog, Photoshop PDF read/write, JPEG XL, JPEG 2000,
  Cineon, DICOM, EPS/DCS, Photoshop Raw, AVIF read, HEIC write, multi-page PDF I/O, layered
  TIFF extra alpha channels; `.asl`/`.shc`/`.csh` presets; C2PA (`docs/gaps.md` G10).
- **Camera Raw depth**: CR3 detected but unsupported; compressed RAF, lossy DNG, lens profiles,
  `.xmp` sidecars missing (`crates/raw/src/lib.rs`, `docs/gaps.md` G14).
- **PSD byte-identity**: a re-saved PSD is not byte-identical to its source (image resources,
  layer records and composite are rewritten). Only the standalone `photocraft-psd` crate tests
  byte-exact parse/write round trips (`README.md` "PSD without compromise").
- **Localization**: 17 languages ship with full UI strings (9 of the 12 key languages + 8 more),
  but engine/error messages stay English; Hindi, Arabic (0% strings) and Vietnamese are missing,
  and RTL layout is not implemented (`ROADMAP.md` Languages, `docs/gaps.md` G13).
- **Linux Wayland**: files dropped on the window do not open (winit limitation); use File ▸ Open
  or paste (README.md Get started).
- **Control-channel/watchdog timeouts**: a request queued while the window isn't drawing (asleep
  display, occluded window on Wayland) times out; `timeout: not run` is safe to resend,
  `timeout: no reply in 60s` may have applied — inspect the document before resending
  (`docs/control-protocol.md`).

### Claimed but unverified
- README claims PSD re-save "keeps the render of 307 of the 309 psd-tools test files"; the
  measured floor in `docs/gaps.md` (2026-10-12) reads psd-tools 236/309 and round trips ~100% —
  the two metrics differ; inspect `crates/io/tests/corpus.rs` and the fetched corpus yourself.
- README calls the command palette ⌘F; at HEAD both `edit.search` and `filter.lastFilter`
  default to ⌘F and tests show Last Filter wins until remapped
  (`crates/ui-egui/src/kys_import_tests.rs:157`). Check the installed version before relying on it.
- `ROADMAP.md` says 12 tools are missing while `docs/gaps.md` (newer) says only Art History
  Brush is; docs disagree — uncertain, see both.
- Menu-coverage counts ("628/628" in older docs vs the current generated
  `docs/parity-checklist.md` "631 of 631 menu items live") describe **menu wiring only**, not
  behaviour — the checklist says so itself, and README's Status note repeats it.

## How to operate

### Launch on macOS
```sh
open -a "PhotoCraft"                       # app bundle (ai.storyteller.photocraft, 0.8.2)
open -a "PhotoCraft" ~/Pictures/edit.psd   # positional paths open documents
"/Applications/PhotoCraft.app/Contents/MacOS/PhotoCraft" --version
```
App flags parsed by the binary (`apps/photocraft/src/main.rs`): `--control <port>`
(env `PHOTOCRAFT_CONTROL_PORT`), `--control-token <64-hex>`, `--control-token-file <path>`,
`--automation-read-root <dir>`, `--automation-write-root <dir>`, `--safe-gpu`,
`--in-window-menus`, `--version`; anything else that isn't a known flag is treated as a file
path to open. A bad `--control` port exits 2 without opening a window.
**Do not launch the GUI on headless machines** — it needs a display adapter; use the CLI/MCP.

### CLI (installed separately)
The CLI is not inside the .app bundle; it ships as `photocraft-cli-<ver>-macos-universal.zip`
(signed/notarized, README.md › macOS) or build from source:
`cargo run --release -p photocraft-cli -- <subcommand>` (binary `target/release/photocraft-cli`).
```sh
photocraft-cli info photo.psd --compact          # JSON: size, mode, depth, layer tree, warnings
photocraft-cli convert in.psd out.pcraft         # any supported format -> any
photocraft-cli convert in.psd out.jpg --quality 90
photocraft-cli run in.png --cmd filter.blur.gaussianBlur --params '{"radius":3}' --out out.psd
photocraft-cli run --new '{"width":800,"height":600}' --cmd document.inspect
photocraft-cli batch --actions set.atn --action "My Action" --in raw/ --out graded/ --format jpg
photocraft-cli droplet recipe.pcdroplet photo.png
photocraft-cli commands --filter blur            # discover command ids (~700)
photocraft-cli mcp --automation-read-root ... --automation-write-root ...
photocraft-cli serve --port 7878                 # JSON-lines headless session
```
`convert` flags: `--format`, `--quality 1..100` (JPEG; WebP becomes lossy), `--tiff-layers`,
`--tga-bits 24|32`, `--dpx-bits 8|10|12|16`. `run` prints one JSON line per command. `batch`
refuses `--out` == `--in` unless `--in-place`; recognised inputs include `.pcraft .psd .psb
.pdn .ora .kra .krz .af .afdesign .afphoto .afpub` + all readable codecs.

### Document model and workflows
- Multiple open documents in tabs; extra windows per document (`ui.window.open`), Window menu
  lists them (`docs/control-protocol.md`).
- File ▸ New params: `{"width":1..300000,"height":1..300000,"mode":"rgb|gray|grayscale|cmyk|lab",
  "depth":8|16|32,"background":"white|black|backgroundColor|transparent|#rrggbb",
  "resolution":dpi,"name":str}` (`crates/engine/src/commands.rs:402`).
- Keyboard shortcuts come from `crates/ui-egui/src/menu_catalog.rs` + the registry and are fully
  remappable (`edit.keyboardShortcuts`, `.kys` import). A safe sample: ⌘N/⌘O/⌘S/⇧⌘S (New/Open/
  Save/Save As), ⌘Z/⇧⌘Z (Undo/Redo, `crates/engine/src/commands.rs:452`), ⌘J (Layer via Copy,
  `crates/engine/src/edit_cmds.rs:982`), ⌘Y/⇧⌘Y (Proof Colors / Gamut Warning,
  `crates/engine/src/color_cmds.rs:1184,1193`). Tool letters follow Photoshop (V move, B brush,
  E eraser, T type, …; `crates/ui-egui/src/state.rs` `Tool::key`). Prefer `commands --json` over
  memorised keys.
- Preferences live in `preferences.json` under `~/Library/Application Support/Photocraft`
  (override `PHOTOCRAFT_CONFIG_DIR`); autosaves in its `Recovery` folder; UI state in `ui.ron`
  (`docs/control-protocol.md`).

### Open / save / export flow
- Open: drag-drop (not Wayland), File ▸ Open, or `app.open {path}` / CLI / `doc_open`.
- Save: File ▸ Save writes the document's own PSD/PSB/`.pcraft`; Save As/Export As for anything
  else; exports report warnings (shown in the status bar and `ui.inspect.notices`).
- **Automation caveat:** over the control channel, path-based `file.*` commands are refused by
  design (ambient filesystem access); use `app.open` / `app.save` inside the granted
  `--automation-read-root` / `--automation-write-root` (`docs/control-protocol.md` §Engine
  commands, `crates/automation/src/workspace.rs`). Absolute paths outside the roots are refused.
- Drive a running app (exact shape from `docs/development.md`):
```sh
printf '%s\n' "{\"id\":\"auth\",\"method\":\"auth\",\"params\":{\"token\":\"$TOKEN\"}}" \
  '{"id":1,"method":"engine.execute","params":{"command":"layer.newAdjustmentLayer.hueSaturation","params":{"hue":30}}}' \
  '{"id":2,"method":"ui.screenshot","params":{"path":"evidence/shot.png"}}' | nc 127.0.0.1 7878
```
`ui.screenshot` raises the window first (macOS stops rendering occluded windows) and captures the
app's own window — this is the supported way for an agent to "see" the app.

## Working with an AI agent

Legitimate jobs around the app:
- **Batch convert/prepare inputs**: `photocraft-cli batch` or `convert` — e.g. normalise a folder
  to PNG/TIFF, pick JPEG quality, keep TIFF layers with `--tiff-layers`. Probe first with
  `photocraft-cli info <file> --compact` and read `warnings`.
- **Author assets programmatically**: build layered documents headlessly with `run --new ... --cmd
  ... --out ...`, or record Actions in the app and replay them via `batch`/MCP; `.atn` files from
  Photoshop import (112 events; unmapped steps fail by name with a warning).
- **Drive the engine over MCP or the control channel** rather than the GUI: `command_run` /
  `engine.execute` with ids discovered from `command_list` (`enabled`/`disabledReason`/
  `needsDocument` tell you if you must open a document first). Use `doc_render_preview` /
  `ui.screenshot` for visual verification, `doc_inspect` for structure, `jobs_list` to wait.
- **Inspect/repair native files**: `.pcraft` is documented and versioned (`crates/format/src/`;
  `manifest.json` + blake3-addressed tiles/blobs, migrations in `migrate.rs`, `TooNew` refusal for
  newer bundles). You may read/salvage the manifest; recover crashed sessions from the `Recovery`
  folder rather than editing tiles. Never hand-edit `tiles/`/`blobs/` — hashes are the identity.
- **Verify exports**: reopen them (`info`, `convert` to PNG, `document.pixel`/`render_preview`),
  and parse warnings; for PSD deliverables, verify in Photoshop itself when acceptance matters.

Must NOT attempt:
- Blind GUI automation (synthetic clicks/CGEvent on the window) — drive the control channel/MCP
  instead; for visual checks screenshot the app's own window (`ui.screenshot`), never a screen
  region (it can grab other apps).
- Assuming Photoshop features: AI/generative, `.8BF`/UXP plug-ins, type on a path, full-screen
  Select and Mask/Content-Aware workspaces, JPEG XL, Photoshop PDF, AVIF read, HEIC write.
- Assuming a re-saved PSD is byte-identical or Photoshop-accepted (verify).
- Treating unknown CLI flags/params as tolerated: the parser errors (exit 2), and strict commands
  reject unknown param keys (`crates/engine/src/param_check.rs`).
- Hand-editing `.pcraft` tiles/blobs (content hashes are the identity; edits corrupt the bundle),
  or editing `preferences.json` while the app runs (the app rewrites it on change).

## Verification protocol

Alpha discipline — every deliverable gets one throwaway round trip and evidence:
1. **Round-trip test**: `photocraft-cli run --new '{"width":256,"height":256}' --cmd ... --out
   check.pcraft` → `convert check.pcraft check.png` → `info check.png --compact`; or open → edit →
   save → reopen in PhotoCraft and (when it matters) in the target consumer app.
2. **Never trust a silent export**: warnings are the contract (`warnings` in replies, `warning:`
   lines on stderr). An export that flattens adjustment layers, drops metadata or reduces 16-bit
   to 8-bit says so — read it. `crates/codecs` `fidelity_warnings` exists precisely so you can
   predict loss before writing.
3. **Version and back up project files per session**: keep a `.pcraft` (or PSD) per iteration
   rather than overwriting; the app is alpha (953 open issues, 22/25 perf budgets missed) and the
   launcher auto-updates — update the app between projects, not mid-project. Record
   `photocraft --version` (build SHA included) with any automation result.
4. **Headless first, live app second**: prove a pipeline with `photocraft-cli`/MCP-headless
   (deterministic, no window); only then bridge to the live app for UI-level steps. For live
   automation, always check `ui.inspect` state before and after, and prefer document-scoped
   commands over screen coordinates.
5. **On failure, keep the artifacts**: failed jobs leave the document unchanged and recovery
   files intact (`docs/development.md`), so preserve the input and error text for triage.

## Sources & evidence

- Repo: https://github.com/storytold/photocraft — HEAD inspected:
  `7250e6e29a9248ac17bc0cb20296e03e7cbed86a` (2026-10-14); workspace version 0.8.2.
- Installed app inspected: `/Applications/PhotoCraft.app` (CFBundleShortVersionString 0.8.2,
  `ai.storyteller.photocraft`), Info.plist document types: `.pcraft`, `.ora`, `.pdn`, `.psb`,
  `.qoi` + standard image types.
- Key files read: `README.md`, `Cargo.toml`, `ROADMAP.md`, `AGENTS.md`;
  `docs/architecture.md`, `docs/control-protocol.md`, `docs/gaps.md`, `docs/roadmap.md`,
  `docs/mcp.md`, `docs/development.md`, `docs/parity-checklist.md`, `docs/plugins.md`;
  `apps/photocraft-cli/src/lib.rs`, `apps/photocraft/src/main.rs`;
  `crates/format/src/lib.rs`, `crates/io/src/lib.rs`, `crates/codecs/src/format.rs`,
  `crates/codecs/README.md`, `crates/raw/src/lib.rs`, `crates/engine/src/commands.rs`,
  `crates/ui-egui/src/menu_catalog.rs`, `crates/ui-egui/src/shortcuts.rs`,
  `crates/ui-egui/src/tool_shortcuts.rs`, `crates/ui-egui/src/state.rs`.
- Shared libraries (`craft-libs`: craft-ui, craft-print) are pinned by git revision in
  `Cargo.toml`; nothing about the document/file-format behaviour needed them beyond what the
  repo documents.

Files in this skill

  • SKILL.md22.6 KB
  • agents/openai.yaml144 B
  • evidence.md6.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.