mr-kelly/skills

kelly-portrait-retouch

Natural, identity-preserving portrait retouching with a local CLI and a Busabase-backed review app.

Installation

$ npx skills add mr-kelly/skills --skill kelly-portrait-retouch

Summary

  • Natural, identity-preserving portrait retouching with a local CLI and a Busabase-backed review app.
  • Use when the user asks to 美颜, 修人像, 磨皮, 提亮肤色, portrait retouch, headshot cleanup, profile-photo polish, before/after comparison, or batch portrait enhancement.
  • Default to local non-destructive processing, preserve facial structure and skin texture, and require explicit approval before replacing or publishing any image.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from mr-kelly/skills · top by installs.

npx skills add mr-kelly/skills

Browse all from mr-kelly/skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 5
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

LicenseMIT
More metadata
category
production
tags
["risk:local-write","industry:beauty","surface:busabase"]
busabase
{"template":true,"folderSlug":"kelly-portrait-retouch","resources":["jobs","candidates","settings"],"risk":"local-write"}

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 6,218 B
  • docs SUMMARY.md 471 B

History

  1. First recorded snapshot · 2 installs

SKILL.md

Kelly Portrait Retouch

Turn portraits into natural, reviewable candidates. Keep the original image and facial identity intact. Use the App as the review surface and the trusted CLI as the image-processing boundary.

Required Skills

  1. Read and follow $kelly-app-skill-creator for the operator workflow,

responsive UI, product onboarding, and visual acceptance contract.

  1. Read and follow $busabase-app-creator for Busabase resource modeling,

AirApp runtime limits, security, validation, synchronization, and deployment.

  1. Use $kelly-app-skill-creator-tests for repository-level conformance,

persistence, OSS Busabase, OAuth, and AirApp parity checks.

The approved product blueprint is [product-overlay.md](references/product-overlay.md).

Defaults

  • Use the natural preset at strength 35 unless the user asks otherwise.
  • Create a new sibling file ending in _retouched; never overwrite by default.
  • Strip EXIF/GPS metadata by default. Preserve metadata only when explicitly

requested.

  • Preserve face shape, age, skin tone, moles, freckles, scars, and other identity

cues unless the user names a specific reversible edit.

  • Do not whiten skin, enlarge eyes, shrink a face, or change body shape by

implication. Ask before structural or identity-changing edits.

  • Treat portraits as sensitive biometric data. Do not upload them to an external

model unless the user explicitly approves that route.

Local CLI

Install once from the skill directory:

pnpm install --frozen-lockfile

Create one natural candidate:

node scripts/retouch.mjs portrait.jpg --preset natural --strength 35

Create a candidate and a side-by-side proof:

node scripts/retouch.mjs portrait.jpg --output exports/portrait-natural.jpg --compare exports/portrait-proof.jpg

Create a reusable processing summary, inspect the dry-run sync plan, then write the candidate through the trusted Busabase boundary:

node scripts/retouch.mjs portrait.jpg --compare exports/portrait-proof.jpg --summary exports/portrait-summary.json
node scripts/sync-candidate.mjs exports/portrait-summary.json
node scripts/sync-candidate.mjs exports/portrait-summary.json --apply

Use --face x,y,width,height when automatic face detection is unavailable or needs correction. Coordinates are image pixels after orientation is applied. Run node scripts/retouch.mjs --help for every option.

The CLI uses macOS Vision for face rectangles when available, then applies a subtle masked texture blend with Sharp. On other platforms it performs only whole-frame tone/detail polish unless --face is supplied. It never changes facial geometry.

Workflow

  1. Inspect the source image at full resolution. Note blur, compression, clipping,

mixed lighting, and whether the requested result is realistic.

  1. Confirm any ambiguous identity-changing request. For ordinary “美颜”, use the

natural defaults without asking.

  1. Run the CLI and keep its JSON summary. Generate a comparison image when the

user needs to judge strength.

  1. Inspect the candidate at face scale and full-frame scale. Reject waxy skin,

halos, flattened detail, color shifts, or softened eyes/hair.

  1. Present the candidate and comparison for review. Iterate by reducing strength

before adding more processing.

  1. When Busabase is available, run the sync command as a trusted Agent. It

uploads source/output/comparison files through Busabase Assets and upserts the jobs and candidates Bases with stable idempotency keys. Base rows store asset IDs, not image bytes or expiring URLs.

  1. Export or replace only after the user names the approved candidate. Publishing

remains outside this skill.

Presets

  • natural: restrained tone lift and face-local texture softening; default.
  • fresh: slightly brighter and more saturated for casual/social portraits.
  • studio: neutral color, restrained contrast, and crisper detail for headshots.

Read [retouch-policy.md](references/retouch-policy.md) before fulfilling a structural edit, processing a minor's portrait, or using an external image model.

App Contract

The canonical App source is in content/kelly-portrait-retouch-app/. It provides a quiet list/detail review desk with hash routes, before/after inspection, strength and preset metadata, approve/change/block decisions, bilingual chrome, phone navigation, and Help & Settings. ?demo=queue opens deterministic read-only data.

Busabase resources:

  • Folder kelly-portrait-retouch owns the workflow.
  • Base jobs stores one row per local processing request and its lifecycle.
  • Base candidates stores candidate provenance, checks, and human verdicts.
  • Base settings stores non-secret defaults and onboarding state.
  • Busabase Assets stores source, candidate, and comparison files; Base records

keep their stable asset IDs.

The browser never receives filesystem access, API keys, or Vault values. The trusted Agent runs the CLI and performs content-addressed asset upload plus idempotent record writes. The App only reads approved state and records human decisions through stale-version-protected ChangeRequests. Runtime readiness and product onboarding are separate; incomplete onboarding suppresses workflow rows.

Validation

Run:

pnpm test
pnpm --dir content/kelly-portrait-retouch-app check
node scripts/retouch.mjs --help
node scripts/sync-candidate.mjs --help