mustflow 2.117.1 → 2.118.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/cli/commands/run/args.js +5 -0
- package/dist/cli/commands/run/execution.js +7 -6
- package/dist/cli/commands/run/preview.js +6 -5
- package/dist/cli/commands/run/receipt.js +1 -0
- package/dist/cli/commands/run.js +2 -1
- package/dist/cli/commands/workspace.js +216 -81
- package/dist/cli/i18n/en.js +1 -0
- package/dist/cli/i18n/es.js +1 -0
- package/dist/cli/i18n/fr.js +1 -0
- package/dist/cli/i18n/hi.js +1 -0
- package/dist/cli/i18n/ko.js +1 -0
- package/dist/cli/i18n/zh.js +1 -0
- package/dist/cli/lib/manifest-lock.js +10 -1
- package/dist/cli/lib/repo-map.js +5 -0
- package/dist/cli/lib/run-context.js +136 -0
- package/dist/cli/lib/run-root-trust.js +22 -15
- package/dist/cli/lib/validation/index.js +8 -0
- package/dist/core/config-loading.js +107 -14
- package/dist/core/run-receipt.js +1 -0
- package/dist/core/workspace-command-authority.js +98 -0
- package/package.json +1 -1
- package/schemas/run-receipt.schema.json +10 -0
- package/schemas/workspace-command-catalog.schema.json +3 -0
- package/schemas/workspace-command-fragments.schema.json +2 -0
- package/schemas/workspace-status.schema.json +4 -1
- package/schemas/workspace-verification-plan.schema.json +3 -0
- package/templates/default/common/.mustflow/config/mustflow.toml +2 -0
- package/templates/default/i18n.toml +7 -1
- package/templates/default/locales/en/.mustflow/skills/INDEX.md +2 -1
- package/templates/default/locales/en/.mustflow/skills/ai-game-asset-production/SKILL.md +209 -0
- package/templates/default/locales/en/.mustflow/skills/ai-game-asset-production/references/asset-contract-validation.md +106 -0
- package/templates/default/locales/en/.mustflow/skills/ai-game-asset-production/references/raster-alpha-atlas-checklist.md +109 -0
- package/templates/default/locales/en/.mustflow/skills/ai-game-asset-production/references/tile-animation-checklist.md +98 -0
- package/templates/default/locales/en/.mustflow/skills/routes.toml +6 -0
- package/templates/default/manifest.toml +6 -1
|
@@ -59,6 +59,8 @@
|
|
|
59
59
|
"properties": {
|
|
60
60
|
"enabled": { "type": "boolean" },
|
|
61
61
|
"roots": { "$ref": "#/$defs/stringArray" },
|
|
62
|
+
"authority_mode": { "enum": ["repository_local", "delegated_scoped"] },
|
|
63
|
+
"delegated_contract_count": { "type": "integer", "minimum": 0 },
|
|
62
64
|
"max_depth": { "type": "integer", "minimum": 1 },
|
|
63
65
|
"max_repositories": { "type": "integer", "minimum": 1 },
|
|
64
66
|
"follow_symlinks": { "type": "boolean" },
|
|
@@ -32,6 +32,8 @@
|
|
|
32
32
|
"properties": {
|
|
33
33
|
"enabled": { "type": "boolean" },
|
|
34
34
|
"roots": { "$ref": "#/$defs/stringArray" },
|
|
35
|
+
"authority_mode": { "enum": ["repository_local", "delegated_scoped"] },
|
|
36
|
+
"delegated_contract_count": { "type": "integer", "minimum": 0 },
|
|
35
37
|
"max_depth": { "type": "integer", "minimum": 1 },
|
|
36
38
|
"max_repositories": { "type": "integer", "minimum": 1 },
|
|
37
39
|
"follow_symlinks": { "type": "boolean" },
|
|
@@ -122,9 +124,10 @@
|
|
|
122
124
|
],
|
|
123
125
|
"properties": {
|
|
124
126
|
"relative_path": { "type": "string" },
|
|
125
|
-
"status": { "enum": ["mustflow_ready", "contract_missing", "contract_invalid"] },
|
|
127
|
+
"status": { "enum": ["mustflow_ready", "delegated_ready", "contract_missing", "contract_invalid"] },
|
|
126
128
|
"git_repository": { "const": true },
|
|
127
129
|
"mustflow": { "type": "boolean" },
|
|
130
|
+
"command_authority": { "enum": ["repository_local", "delegated_scoped", null] },
|
|
128
131
|
"agent_rules": { "$ref": "#/$defs/nullableString" },
|
|
129
132
|
"repo_map": { "$ref": "#/$defs/nullableString" },
|
|
130
133
|
"mustflow_config": { "$ref": "#/$defs/nullableString" },
|
|
@@ -57,6 +57,8 @@
|
|
|
57
57
|
"properties": {
|
|
58
58
|
"enabled": { "type": "boolean" },
|
|
59
59
|
"roots": { "$ref": "#/$defs/stringArray" },
|
|
60
|
+
"authority_mode": { "enum": ["repository_local", "delegated_scoped"] },
|
|
61
|
+
"delegated_contract_count": { "type": "integer", "minimum": 0 },
|
|
60
62
|
"max_depth": { "type": "integer", "minimum": 1 },
|
|
61
63
|
"max_repositories": { "type": "integer", "minimum": 1 },
|
|
62
64
|
"follow_symlinks": { "type": "boolean" },
|
|
@@ -140,6 +142,7 @@
|
|
|
140
142
|
"plan_unavailable"
|
|
141
143
|
]
|
|
142
144
|
},
|
|
145
|
+
"command_authority": { "enum": ["repository_local", "delegated_scoped", null] },
|
|
143
146
|
"command_contract": { "$ref": "#/$defs/commandSurface" },
|
|
144
147
|
"changed_file_count": { "type": ["integer", "null"], "minimum": 0 },
|
|
145
148
|
"changed_files": { "$ref": "#/$defs/stringArray" },
|
|
@@ -62,7 +62,7 @@ translations = {}
|
|
|
62
62
|
[documents."skills.index"]
|
|
63
63
|
source = "locales/en/.mustflow/skills/INDEX.md"
|
|
64
64
|
source_locale = "en"
|
|
65
|
-
revision =
|
|
65
|
+
revision = 294
|
|
66
66
|
translations = {}
|
|
67
67
|
|
|
68
68
|
[documents."skill.ada-code-change"]
|
|
@@ -1622,3 +1622,9 @@ source = "locales/en/.mustflow/skills/web-asset-optimization/SKILL.md"
|
|
|
1622
1622
|
source_locale = "en"
|
|
1623
1623
|
revision = 3
|
|
1624
1624
|
translations = {}
|
|
1625
|
+
|
|
1626
|
+
[documents."skill.ai-game-asset-production"]
|
|
1627
|
+
source = "locales/en/.mustflow/skills/ai-game-asset-production/SKILL.md"
|
|
1628
|
+
source_locale = "en"
|
|
1629
|
+
revision = 1
|
|
1630
|
+
translations = {}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
mustflow_doc: skills.index
|
|
3
3
|
locale: en
|
|
4
4
|
canonical: true
|
|
5
|
-
revision:
|
|
5
|
+
revision: 294
|
|
6
6
|
authority: router
|
|
7
7
|
lifecycle: mustflow-owned
|
|
8
8
|
---
|
|
@@ -847,6 +847,7 @@ routes. Event routes stay inactive until their event occurs.
|
|
|
847
847
|
| Core Web Vitals, real-user web performance, CrUX, Search Console, Lighthouse-versus-field discrepancy, RUM instrumentation, LCP, INP, CLS, FID replacement, LCP subparts, interaction latency, Long Animation Frames, long tasks, bfcache, speculation rules, third-party scripts, tag managers, ads, web fonts, responsive hero media, layout shifts, or deployment performance regression needs field-data triage rather than a one-off lab score | `.mustflow/skills/core-web-vitals-field-review/SKILL.md` | User goal, current diff or target files, metric contract, field evidence ledger, LCP ledger, INP ledger, CLS ledger, lab and diagnostics ledger, current official threshold evidence when needed, and configured command intents | RUM instrumentation, metric payloads, route grouping, p75 reporting, field-versus-lab wording, LCP candidate attribution, Server-Timing, Resource Timing, LoAF or long-task capture, bfcache diagnostics, safe speculation rules, focused tests, and narrower render/image/frame/bundle fixes when selected | Lighthouse trophy claim, stale FID dashboard, averaged Web Vitals, hidden mobile failure, missing p75 split, uninstrumented RUM, lazy LCP media, undiscovered hero, render-blocked LCP, INP blocked by hydration or third-party scripts, GTM tag drift, long task without attribution, CLS from ads or skeleton mismatch, bfcache blocker, unsafe prerender side effect, single bundle-size budget, or unmonitored deploy regression | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Core Web Vitals field review, evidence level, threshold and percentile contract, mobile/desktop split, LCP/INP/CLS ledgers, fixes or recommendations, verification, and remaining CWV field risk |
|
|
848
848
|
| Web page, frontend route, landing page, ecommerce page, dashboard, SSR/RSC/SPA route, hero image, LCP candidate, above-the-fold CSS, font, image, iframe, third-party script, chat widget, client bundle, hydration boundary, route prefetch, first-view data fetch, HTML streaming, CDN cache, resource hint, compression, content-visibility, long task, or Core Web Vitals test needs web-render-performance triage for first-render performance, LCP, CLS, FCP, TTFB, render-blocking CSS, asset priority, JavaScript execution cost, or cache and delivery risk | `.mustflow/skills/web-render-performance-review/SKILL.md` | User goal, current diff or target files, first viewport and LCP candidate ledger, critical resource discovery ledger, CSS/render-blocking ledger, font loading ledger, image/video/iframe ledger, third-party script ledger, JavaScript bundle and hydration ledger, data and HTML delivery ledger, cache/compression/resource-hint ledger, main-thread/long-task ledger, measurement or test evidence, and configured command intents | LCP image loading priority, preload and preconnect hints, critical CSS, route CSS splitting, font-display and font preload policy, font subsetting, responsive images, image CDN usage, lazy image and iframe dimensions, third-party script gating, chat widget loading, client/server component boundaries, dynamic imports, code splitting, modulepreload, first-view data fetching, streaming HTML, static shell and dynamic hole split, TTFB instrumentation, CDN and cache headers, compression, content-visibility, long task scheduling, route prefetch behavior, focused tests, and directly synchronized docs or templates | lazy LCP image, undiscovered background hero, fetchpriority everywhere, render-blocking global CSS, common/vendor CSS bloat, font FOIT or CLS, over-preloaded fonts, unsubset Korean or CJK font, oversized image, missing srcset or sizes, lazy image CLS, eager offscreen iframe, global third-party script, first-paint chat SDK, broad use-client boundary, eager modal/chart/editor/map import, tiny-chunk waterfall, modulepreload spam, client-effect first data, all-or-nothing HTML wait, personalized whole-page dynamic render, TTFB handwave, uncacheable static HTML, wrong immutable/no-store cache header, missing text compression, Early Hints or preconnect spam, below-fold DOM layout cost, long main-thread task, overbroad Link prefetch, or lab-only perf claim | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Web render performance reviewed, viewport/resource/CSS/font/media/third-party/JS/data/cache/main-thread map, findings, fixes or recommendation, measurement or test evidence, verification, and remaining web-render performance risk |
|
|
849
849
|
| Web image, hero image, LCP image, product image, feed image, gallery, avatar, thumbnail, carousel image, CSS background hero, `img`, `picture`, `source`, `srcset`, `sizes`, framework image component, responsive preload, `imagesrcset`, `imagesizes`, `fetchpriority`, `loading`, `decoding`, intrinsic dimensions, DPR bucket, width bucket, AVIF/WebP/JPEG/PNG/SVG fallback, quality budget, blur placeholder, base64 inline image, image CDN transformation, derivative cache key, content-hash URL, `Accept` negotiation, image proxy allowlist, EXIF orientation, ICC profile, uploaded SVG handling, `elementtiming`, Resource Timing, DevTools image waterfall, or RUM image evidence needs image-delivery-performance triage for discovery, priority, candidate size, layout stability, cacheability, quality, or abuse risk | `.mustflow/skills/image-delivery-performance-review/SKILL.md` | User goal, current diff or target files, image role ledger, discovery and priority ledger, responsive candidate ledger, layout stability ledger, format and quality ledger, pipeline and metadata ledger, CDN and cache ledger, safety and abuse ledger, image measurement evidence or gap, and configured command intents | Image markup, `picture` source order, `srcset`, `sizes`, `loading`, `decoding`, `fetchpriority`, responsive preload, `imagesrcset`, `imagesizes`, intrinsic dimensions, `aspect-ratio`, placeholders, CSS background preload hints, framework image props, width and DPR buckets, format fallback policy, quality settings, metadata handling, cache headers, derivative cache key rules, `Accept` forwarding, remote image allowlists, transform limits, focused tests, and directly synchronized docs or templates | lazy LCP image, priority inflation, hidden background image discovery, responsive preload missing `imagesrcset` or `imagesizes`, multi-format preload, wrong `sizes`, framework fill without sizes, lazy image missing dimensions, unbounded 3x variants, arbitrary width bucket, CDN cache-key confetti, wrong format by content type, weak JPEG fallback, global quality constant, missing byte budget, EXIF rotation bug, color-profile loss, unsafe SVG serving, meaningful image hidden as CSS background, first-view lazy loading, giant lazy gallery, wrong `decoding` hint, oversized blur placeholder, base64 HTML bloat, missing content-hash URL, lost original, dropped `Accept` header, public image proxy, unbounded remote transform, Lighthouse-only claim, or duplicate image download | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Image delivery performance reviewed, image role/discovery/priority/candidate/layout/format/quality/cache/pipeline/safety map, findings, fixes or recommendation, measurement or static image-delivery evidence, verification, and remaining image-delivery performance risk |
|
|
850
|
+
| AI-generated 2D game assets, transparent PNGs, icons, sprites, sprite sheets, animation frames, tiles, terrain transitions, parallax backgrounds, props, VFX, texture atlases, pivots, trim metadata, alpha fringes, texture bleeding, foot sliding, loop discontinuity, or engine-ready image pipelines are planned, generated, integrated, reviewed, or validated | `.mustflow/skills/ai-game-asset-production/SKILL.md` | Asset roles, target engine and renderer version, camera and projection, final sizes and pixels per unit, alpha and color-space convention, master references, anchors, provenance ledger, source/work/output ownership, acceptance metrics, and configured command intents | Asset contracts, source manifests, masks, metadata, image-processing code, atlas and engine import settings, acceptance scenes, fixtures, tests, and directly synchronized docs within the selected asset scope | prompt-only production, baked background, matte fringe, unstable identity or scale, trim jitter, foot sliding, broken seams or loops, atlas bleed, collision derived from decorative pixels, stale legal claim, unknown provenance, or source-only verification | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `mustflow_check` | Asset and engine contract, provenance and stage boundaries, geometry/alpha/pivot/tile/animation/atlas findings, threshold sources, candidate disposition, verification, and remaining visual, gameplay, provenance, or runtime risk |
|
|
850
851
|
| Frontend app, client package, route, design system, component library, import graph, package entrypoint, bundler config, shared vendor chunk, first-route JS, tree shaking, ESM/CJS dependency, barrel file, package exports, sideEffects metadata, PURE annotation, Next use-client boundary, Server Component split, dynamic import, React lazy, Angular defer, Vue route lazy loading, import modularization, icon import, date locale, syntax highlighter, markdown renderer, code editor, Node polyfill, browser target, Babel polyfill, dev-only branch, console stripping, Rollup manualChunks, Vite modulepreload, Tailwind extraction, safelist, or inline asset rule needs client-bundle-pruning triage for dead-code elimination, dependency bloat, initial JS, shared vendor, or route chunk risk | `.mustflow/skills/client-bundle-pruning-review/SKILL.md` | User goal, current diff or target files, bundle target ledger, entry and import graph ledger, dependency format ledger, framework boundary ledger, heavy-feature ledger, polyfill and target ledger, bundle budget or analyzer evidence, and configured command intents | Import paths, package entrypoints, subpath exports, barrel usage, ESM package choices, package `sideEffects`, Rollup `moduleSideEffects`, PURE annotations, client/server boundaries, dynamic imports, framework deferral boundaries, package import modularization, icon/date/highlighter/editor imports, Node polyfill fallbacks, browser and Babel targets, dev-only constants, logging wrapper behavior, manual chunk rules, modulepreload policy, Tailwind extraction shapes, asset inline thresholds, focused tests, and directly synchronized docs or templates | total-dist theater, no initial-JS budget, CJS package on client path, broad utility import, hot-path barrel, package-root import dragging design system, missing subpath export, unsafe `sideEffects: false`, CSS or polyfill shaken away, global `moduleSideEffects: false`, missing PURE hint, false PURE annotation, page-level `use client`, server-safe parser in client bundle, dynamic import with variable path, lazy component declared in render, eager modal/chart/editor/map/search/PDF import, library import before user intent, Angular defer leak, Vue eager route, unverified import modularization, icon catalog import, all date locales, all highlighter languages, Node polyfill bundle, old browser-target helper bloat, whole `core-js` import, dev branch not folded, unsafe console drop, one giant vendor chunk, modulepreload spam, dynamic Tailwind class miss, broad safelist, large inline SVG/font/image, or unmeasured bundle claim | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Client bundle pruning reviewed, first-route/shared-vendor/import/dependency/client-boundary/polyfill/chunk/CSS/asset map, findings, fixes or recommendation, measurement or test evidence, verification, and remaining client-bundle pruning risk |
|
|
851
852
|
| Frontend route, component, animation, scroll path, input path, list, table, chart, map, canvas, media slot, modal, drawer, hydration boundary, DOM read/write path, CSS selector, class toggle, CSS custom property, containment, content-visibility, virtualization, observer, event listener, requestAnimationFrame loop, long task, worker boundary, ResizeObserver path, runtime CSS injection, React memo boundary, context provider, deferred update, transition, or DevTools rendering trace needs frame-render-performance triage for INP, animation smoothness, scroll responsiveness, style recalculation, layout, paint, compositing, main-thread, or hydration risk | `.mustflow/skills/frame-render-performance-review/SKILL.md` | User goal, current diff or target files, interaction and frame ledger, DOM and layout ledger, style and CSS ledger, paint and compositing ledger, event and scheduling ledger, framework render ledger, rendering evidence or measurement gap, and configured command intents | DOM read/write batching, layout-affecting writes, transform/opacity animations, will-change scope, containment, content-visibility and contain-intrinsic-size, virtualization, selector simplification, state-class scope, CSS variable scope, media geometry reservation, native lazy loading, IntersectionObserver, passive listeners, overscroll-behavior, requestAnimationFrame scheduling, long-task chunking, worker and OffscreenCanvas boundaries, ResizeObserver, runtime CSS rule reduction, React prop and context stability, deferred and transition updates, hydration narrowing, focused tests, and directly synchronized docs or templates | forced synchronous layout, layout thrashing, width/height/top/left animation, stale will-change, missing containment, unsafe contain side effect, content-visibility scroll jump, offscreen chart or canvas work, oversized DOM, deep wrapper tree, expensive selector, body/html state blast, root CSS variable churn, unreserved media slot, LCP concern misrouted as frame fix, JS lazy loader overhead, scroll polling, non-passive wheel/touch handler, JS scroll lock, setTimeout frame clock, long task, main-thread heavy compute, canvas blocking input, resize measurement loop, runtime style injection, ineffective memo, broad context rerender, urgent heavy result render, full hydration INP cost, Lighthouse-score-only claim, or unmeasured rendering win | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Frame render performance reviewed, interaction/DOM/style/layout/paint/compositing/event/framework map, findings, fixes or recommendation, measurement or static frame-risk evidence, verification, and remaining frame-render performance risk |
|
|
852
853
|
| UI motion, animation, transition, microinteraction, motion recipe, motion design system, CSS animation or transition, WAAPI, Framer Motion, GSAP, View Transition, hover, press, focus, drag, viewport entry, loading, async success, async failure, reduced motion, interruption, cancellation, settlement, timeline track, transform, opacity, filter, layout animation, or additive composition is planned, edited, reviewed, or reported | `.mustflow/skills/motion-system-contract-review/SKILL.md` | User goal, current diff or target files, motion slot, source and target roles, semantic event class, logical from-state and to-state, timeline tracks, interruption policy, settlement policy, reduced-motion policy, binding approach, async signal owner, evidence level, and configured command intents | Motion recipes, component motion props, CSS keyframes and transitions, animation lifecycle handlers, reduced-motion rules, state and signal policies, role/ref/slot/data binding, story fixtures, focused tests, and directly synchronized docs or templates | motion owns product state, false success or failure feedback, timer pretending to be a signal, missing from-state or to-state, same target and channel collision, unsupported additive composition, layout-channel animation, `animation-fill-mode` state lie, missing reduced motion, hover-only access, brittle selector binding, production animation failure blocking core action, or unverified visual proof | `changes_status`, `changes_diff_summary`, `lint`, `build`, `test_related`, `test`, `docs_validate_fast`, `test_release`, `mustflow_check` | Motion contract reviewed, state/event/track/interruption/settlement/reduced-motion/binding ledgers, async and collision findings, evidence level, verification, and remaining motion contract risk |
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
---
|
|
2
|
+
mustflow_doc: skill.ai-game-asset-production
|
|
3
|
+
locale: en
|
|
4
|
+
canonical: true
|
|
5
|
+
revision: 1
|
|
6
|
+
lifecycle: mustflow-owned
|
|
7
|
+
authority: procedure
|
|
8
|
+
name: ai-game-asset-production
|
|
9
|
+
description: Apply this skill when AI-generated 2D game assets such as transparent PNGs, icons, sprites, animation frames, tiles, backgrounds, atlases, or engine-ready textures are planned, generated, normalized, integrated, reviewed, or validated as a repeatable production pipeline.
|
|
10
|
+
metadata:
|
|
11
|
+
mustflow_schema: "1"
|
|
12
|
+
mustflow_kind: procedure
|
|
13
|
+
pack_id: mustflow.core
|
|
14
|
+
skill_id: mustflow.core.ai-game-asset-production
|
|
15
|
+
command_intents:
|
|
16
|
+
- changes_status
|
|
17
|
+
- changes_diff_summary
|
|
18
|
+
- lint
|
|
19
|
+
- build
|
|
20
|
+
- test_related
|
|
21
|
+
- test
|
|
22
|
+
- docs_validate_fast
|
|
23
|
+
- mustflow_check
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# AI Game Asset Production
|
|
27
|
+
|
|
28
|
+
<!-- mustflow-section: purpose -->
|
|
29
|
+
## Purpose
|
|
30
|
+
|
|
31
|
+
Turn generated pictures into reproducible 2D game assets by making the project contract, source
|
|
32
|
+
provenance, geometry, alpha handling, pivots, animation semantics, engine import behavior, and
|
|
33
|
+
acceptance evidence authoritative instead of treating prompt wording or a visually pleasing master
|
|
34
|
+
image as the production contract.
|
|
35
|
+
|
|
36
|
+
<!-- mustflow-section: use-when -->
|
|
37
|
+
## Use When
|
|
38
|
+
|
|
39
|
+
- AI-generated transparent PNGs, icons, sprites, sprite sheets, animation frames, tiles, terrain
|
|
40
|
+
transitions, parallax backgrounds, props, VFX, or texture atlases are created or revised for a game.
|
|
41
|
+
- Assets look acceptable alone but drift in projection, scale, lighting, palette, edge continuity,
|
|
42
|
+
pivot, ground contact, collision alignment, frame identity, or runtime filtering.
|
|
43
|
+
- A repository needs a repeatable raw-to-engine asset pipeline, asset contract, atlas metadata,
|
|
44
|
+
automatic image checks, contact sheets, or engine-scene acceptance fixtures.
|
|
45
|
+
- A bug reports baked checkerboards, matte fringes, texture bleeding, trim jitter, foot sliding,
|
|
46
|
+
broken animation loops, inconsistent directional sprites, or seams between tiles and backgrounds.
|
|
47
|
+
|
|
48
|
+
<!-- mustflow-section: do-not-use-when -->
|
|
49
|
+
## Do Not Use When
|
|
50
|
+
|
|
51
|
+
- The task only optimizes website image delivery, responsive sources, LCP behavior, or browser cache
|
|
52
|
+
policy; use `web-asset-optimization` or `image-delivery-performance-review`.
|
|
53
|
+
- The task only creates a concept illustration with no game-engine integration, repeatability, or
|
|
54
|
+
asset acceptance requirement.
|
|
55
|
+
- The main deliverable is a 3D mesh, rig, topology, UV layout, shader, or physically based material;
|
|
56
|
+
this skill may use a 3D proxy as an input but does not own a full 3D production pipeline.
|
|
57
|
+
- The task asks for a legal conclusion about copyright, trademark, platform policy, or commercial
|
|
58
|
+
rights. Use current authoritative sources and `provenance-license-gate`; do not convert this
|
|
59
|
+
procedure into legal advice.
|
|
60
|
+
- The task only reviews UI motion state, interruption, or reduced-motion behavior rather than game
|
|
61
|
+
sprite frame production; use `motion-system-contract-review`.
|
|
62
|
+
|
|
63
|
+
<!-- mustflow-section: required-inputs -->
|
|
64
|
+
## Required Inputs
|
|
65
|
+
|
|
66
|
+
- Asset inventory and role for each output: isolated cutout, opaque background, translucent effect,
|
|
67
|
+
repeating tile, transition mask, icon, pixel art, painted sprite, normal map, or data mask.
|
|
68
|
+
- Target engine and renderer version, camera or projection, final display sizes, pixels per world
|
|
69
|
+
unit, color-space and straight or premultiplied alpha convention, filtering, mipmap, wrap,
|
|
70
|
+
compression, and atlas policy.
|
|
71
|
+
- Existing asset contract, style references, turnaround or calibration set, palette, meaningful
|
|
72
|
+
anchors, collision ownership, and animation state definitions; missing decisions must be named.
|
|
73
|
+
- Source and provenance ledger for generators, model or checkpoint components, reference images,
|
|
74
|
+
licenses or permissions, human edits, and retained source files.
|
|
75
|
+
- Repository paths and ownership for immutable source material, editable work files, generated
|
|
76
|
+
engine outputs, metadata, tests, and review artifacts.
|
|
77
|
+
- Acceptance metrics with a source of truth, measurement scale, threshold, exception, and failure
|
|
78
|
+
action, plus configured command intents in the selected repository.
|
|
79
|
+
|
|
80
|
+
<!-- mustflow-section: preconditions -->
|
|
81
|
+
## Preconditions
|
|
82
|
+
|
|
83
|
+
- The task matches the use conditions and does not match an exclusion.
|
|
84
|
+
- Higher-priority instructions, the selected repository's command contract, current engine setup,
|
|
85
|
+
and existing asset pipeline have been inspected.
|
|
86
|
+
- The final runtime scale and renderer behavior are known, or the work stops at a calibration plan
|
|
87
|
+
instead of inventing production thresholds.
|
|
88
|
+
- Reference inputs have usable provenance, or unknown-rights inputs are excluded from shipped
|
|
89
|
+
assets and reported.
|
|
90
|
+
|
|
91
|
+
<!-- mustflow-section: allowed-edits -->
|
|
92
|
+
## Allowed Edits
|
|
93
|
+
|
|
94
|
+
- Add or update project-owned asset contracts, source manifests, masks, metadata, image-processing
|
|
95
|
+
code, atlas configuration, engine import settings, acceptance scenes, fixtures, tests, and directly
|
|
96
|
+
synchronized documentation within the user-selected asset scope.
|
|
97
|
+
- Preserve immutable generated originals and manually authored masters when the repository declares
|
|
98
|
+
them as sources. Treat derived engine output as regenerable unless the repository says otherwise.
|
|
99
|
+
- When durable automation is needed, use the repository's existing cross-platform toolchain; under
|
|
100
|
+
the host policy, new repository automation defaults to Bun-backed TypeScript unless a nearer rule
|
|
101
|
+
selects another runtime.
|
|
102
|
+
- Do not install dependencies, call online generators, upload reference material, change legal or
|
|
103
|
+
platform policy, regenerate broad asset catalogs, or run unconfigured engine tools.
|
|
104
|
+
- Do not derive gameplay collision directly from decorative alpha unless the project contract
|
|
105
|
+
explicitly defines that bounded case.
|
|
106
|
+
|
|
107
|
+
<!-- mustflow-section: procedure -->
|
|
108
|
+
## Procedure
|
|
109
|
+
|
|
110
|
+
1. Classify every requested asset by rendering role and reject a one-setting-for-every-PNG pipeline.
|
|
111
|
+
Color textures, normal or mask data, hard cutouts, soft VFX, repeatable tiles, icons, and animation
|
|
112
|
+
frames have different alpha, color-space, resize, compression, and verification contracts.
|
|
113
|
+
2. Locate or define the smallest project-owned asset contract. Record canvas and target sizes,
|
|
114
|
+
projection and camera, pixels per unit, ground line, safe region, palette and value structure,
|
|
115
|
+
light direction, alpha convention, layers, anchors, sockets, collision profile, atlas rules, and
|
|
116
|
+
engine import expectations. Prompt text may derive from this contract but never replaces it.
|
|
117
|
+
3. Build a provenance and replacement ledger before generation. Separate provider permission,
|
|
118
|
+
copyrightability, third-party infringement risk, and exclusivity. Record the exact generator and
|
|
119
|
+
component chain, reference rights, source hashes, human contributions, review status, output
|
|
120
|
+
hashes, and every shipped use so one disputed asset can be quarantined and replaced.
|
|
121
|
+
4. Establish a calibration set before bulk generation: geometric primitives, a humanoid or object
|
|
122
|
+
scale reference, representative materials, smallest target-size previews, tile neighbors, and the
|
|
123
|
+
engine acceptance scene. Reject model, style, or post-processing combinations that cannot hold
|
|
124
|
+
geometry, scale, light, or identity across this set.
|
|
125
|
+
5. Freeze invariants separately from variables. Projection, camera, scale, light, palette, outline,
|
|
126
|
+
body ratios, anchors, and master references stay fixed; pose, expression, equipment, damage, and
|
|
127
|
+
material variants change deliberately. Derive variants from the approved master and original
|
|
128
|
+
reference set, not from a chain of progressively drifted outputs.
|
|
129
|
+
6. Preserve stages as source, work, and generated engine output. Keep generator settings and source
|
|
130
|
+
hashes with the immutable source; perform masks, paintover, segmentation, alignment, and palette
|
|
131
|
+
work in the editable stage; rebuild atlas and engine output from declared inputs.
|
|
132
|
+
7. Apply the alpha, icon, separation, trim, resize, atlas, and runtime checks in
|
|
133
|
+
`references/raster-alpha-atlas-checklist.md`. Test isolated cutouts on light, dark, and saturated
|
|
134
|
+
backgrounds. Preserve soft foreground alpha for glass, smoke, fire, and light instead of forcing
|
|
135
|
+
a binary mask.
|
|
136
|
+
8. Apply the tile, background, object-contact, and animation branches in
|
|
137
|
+
`references/tile-animation-checklist.md`. Generate tile topology and masks before surface detail,
|
|
138
|
+
align frames by semantic anchors, keep gameplay shapes separate from art, and preserve full
|
|
139
|
+
untrimmed-frame metadata after packing.
|
|
140
|
+
9. Define the automatic acceptance contract from
|
|
141
|
+
`references/asset-contract-validation.md`. Every metric needs a named coordinate space, target
|
|
142
|
+
scale, threshold source, exception policy, and deterministic failure action. A candidate starting
|
|
143
|
+
value is calibration evidence, not a universal default.
|
|
144
|
+
10. Validate the derived output after the same resize, premultiplication, packing, compression,
|
|
145
|
+
filtering, mipmap, and color-space conversions used by the shipped build. Inspect native and
|
|
146
|
+
reduced scales in the actual renderer; source-PNG inspection alone cannot prove engine behavior.
|
|
147
|
+
11. Classify each candidate as accepted, rework, quarantined, or rejected. Do not move a failing
|
|
148
|
+
threshold to fit a favored image. If the contract is wrong, revise it with new gameplay or
|
|
149
|
+
rendering evidence and re-evaluate the full calibration set.
|
|
150
|
+
12. Run only configured oneshot intents in the selected repository. Keep asset generation,
|
|
151
|
+
conversion, tests, builds, and engine verification local to that repository's command authority.
|
|
152
|
+
|
|
153
|
+
<!-- mustflow-section: postconditions -->
|
|
154
|
+
## Postconditions
|
|
155
|
+
|
|
156
|
+
- Every shipped output is traceable to project-owned contract fields, source inputs, transformation
|
|
157
|
+
settings, metadata, and an acceptance result.
|
|
158
|
+
- Transparent edges, pivots, trim offsets, atlas padding, tile seams, frame identity, contact points,
|
|
159
|
+
and runtime import settings are verified at the target scale or explicitly reported as unverified.
|
|
160
|
+
- Gameplay collision and event timing remain project-owned semantic data rather than accidental
|
|
161
|
+
consequences of generated pixels.
|
|
162
|
+
- Missing provenance, engine evidence, thresholds, or configured verification causes a bounded stop,
|
|
163
|
+
quarantine, or calibration report rather than an unsupported completion claim.
|
|
164
|
+
|
|
165
|
+
<!-- mustflow-section: verification -->
|
|
166
|
+
## Verification
|
|
167
|
+
|
|
168
|
+
Use configured oneshot command intents when available in the selected repository:
|
|
169
|
+
|
|
170
|
+
- `changes_status`
|
|
171
|
+
- `changes_diff_summary`
|
|
172
|
+
- `lint`
|
|
173
|
+
- `build`
|
|
174
|
+
- `test_related`
|
|
175
|
+
- `test`
|
|
176
|
+
- `docs_validate_fast`
|
|
177
|
+
- `mustflow_check`
|
|
178
|
+
|
|
179
|
+
Prefer the narrowest asset compiler, image validator, atlas, engine import, or acceptance-scene intent
|
|
180
|
+
declared by the project. A passing static PNG check does not replace renderer or engine evidence.
|
|
181
|
+
|
|
182
|
+
<!-- mustflow-section: failure-handling -->
|
|
183
|
+
## Failure Handling
|
|
184
|
+
|
|
185
|
+
- If projection, target scale, alpha convention, pivot, or runtime import behavior is unknown, stop
|
|
186
|
+
production output and return the missing contract fields plus a calibration plan.
|
|
187
|
+
- If reference provenance or commercial-use evidence is missing, exclude that input and its
|
|
188
|
+
derivatives from shipped output; do not make a legal assumption from generator marketing copy.
|
|
189
|
+
- If an isolated cutout fails RGBA, border-alpha, fringe, clipping, or safe-margin checks, quarantine
|
|
190
|
+
it before atlas packing. If a translucent effect fails a cutout-only rule, fix the role contract
|
|
191
|
+
rather than destroying its soft alpha.
|
|
192
|
+
- If frames fail identity, anchor, foot-contact, skeleton, arc, timing, or loop gates, rework the
|
|
193
|
+
source frames or metadata before assembling the sheet.
|
|
194
|
+
- If source files pass but engine output fails, inspect premultiplication, color space, padding,
|
|
195
|
+
extrude, UVs, filtering, mipmaps, wrap, compression, and import version before regenerating art.
|
|
196
|
+
- If a needed validator or engine check lacks a configured intent, report the missing intent and the
|
|
197
|
+
exact unverified risk instead of running a guessed command.
|
|
198
|
+
|
|
199
|
+
<!-- mustflow-section: output-format -->
|
|
200
|
+
## Output Format
|
|
201
|
+
|
|
202
|
+
- Asset roles and target engine contract
|
|
203
|
+
- Source, work, generated-output, and provenance boundaries
|
|
204
|
+
- Geometry, alpha, pivot, tile, animation, atlas, and engine findings
|
|
205
|
+
- Acceptance metrics, threshold sources, exceptions, and candidate disposition
|
|
206
|
+
- Files and metadata created or changed
|
|
207
|
+
- Command intents run
|
|
208
|
+
- Skipped checks and reasons
|
|
209
|
+
- Remaining visual, gameplay, provenance, or runtime risk
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Asset Contract and Validation Ledger
|
|
2
|
+
|
|
3
|
+
Use this reference to turn a visual request into project-owned inputs and observable acceptance
|
|
4
|
+
evidence. Values below are fields to decide, not Mustflow defaults.
|
|
5
|
+
|
|
6
|
+
## Contract fields
|
|
7
|
+
|
|
8
|
+
Record the fields that apply to the selected asset role:
|
|
9
|
+
|
|
10
|
+
| Area | Contract fields |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| identity | asset ID, role, variant family, master source, replacement tier |
|
|
13
|
+
| geometry | canvas, intended occupied bounds, target display sizes, pixels per unit, world dimensions, projection, camera, horizon or ground line |
|
|
14
|
+
| presentation | palette, value bands, outline range, material simplification, light vector, shadow policy, allowed baked lighting |
|
|
15
|
+
| transparency | straight or premultiplied delivery, cutout or soft alpha, background model, matte policy, color dilation policy |
|
|
16
|
+
| alignment | root pivot, ground contact, center of mass, sockets, trim policy, untrimmed source size |
|
|
17
|
+
| gameplay | movement collider, hurtbox, hitbox, interaction region, occluder, z-sort anchor, event frames |
|
|
18
|
+
| texture | color space, bit depth, filter, mipmap, wrap, compression, atlas rotation, extrude, shape padding, border padding |
|
|
19
|
+
| lifecycle | raw source owner, editable master, derived output, generator version, transform version, reviewer, replacement map |
|
|
20
|
+
|
|
21
|
+
For perspective or isometric work, also record screen directions for world axes and the expected
|
|
22
|
+
projection of a calibration cube. A style name such as "isometric" or "three-quarter" is not a
|
|
23
|
+
projection contract.
|
|
24
|
+
|
|
25
|
+
## Provenance and replacement ledger
|
|
26
|
+
|
|
27
|
+
Keep provenance evidence separate from visual approval:
|
|
28
|
+
|
|
29
|
+
- exact provider, model, checkpoint, adapter, VAE, pose or control input, and post-processor versions;
|
|
30
|
+
- account or license context needed by the project, captured at the generation date when required;
|
|
31
|
+
- source URL or file identity, hash, author or owner, license or permission, attribution, and use scope
|
|
32
|
+
for every reference input;
|
|
33
|
+
- prompt or prompt hash, seed when meaningful, settings hash, generation date, and immutable raw hash;
|
|
34
|
+
- human-authored blockout, silhouette, composition, paintover, palette, rig, frame alignment, and
|
|
35
|
+
gameplay metadata contributions;
|
|
36
|
+
- similarity, watermark, logo, trademark, platform disclosure, and human-review disposition;
|
|
37
|
+
- final file hash and every game, atlas, UI, store, marketing, and localization reference that must be
|
|
38
|
+
changed during quarantine or replacement.
|
|
39
|
+
|
|
40
|
+
Do not collapse provider permission, copyright ownership, non-infringement, and exclusivity into one
|
|
41
|
+
"commercial use" boolean. Time-sensitive legal, vendor, and platform claims require current
|
|
42
|
+
authoritative sources; this ledger records evidence and decisions but does not supply legal advice.
|
|
43
|
+
|
|
44
|
+
## Metric contract
|
|
45
|
+
|
|
46
|
+
Every automated metric should declare:
|
|
47
|
+
|
|
48
|
+
| Field | Question |
|
|
49
|
+
| --- | --- |
|
|
50
|
+
| metric ID | What stable name identifies the rule? |
|
|
51
|
+
| asset roles | Which cutout, effect, tile, icon, frame, or atlas roles does it apply to? |
|
|
52
|
+
| coordinate space | Source pixels, target pixels, normalized canvas, world units, UVs, or color space? |
|
|
53
|
+
| sampling stage | Raw, work, resized, packed, compressed, imported, or rendered? |
|
|
54
|
+
| threshold | What exact bound causes pass, warning, review, quarantine, or rejection? |
|
|
55
|
+
| source | Project contract, engine rule, representative approved set, or measured runtime budget? |
|
|
56
|
+
| exception | Which intentional edge-touch, full-canvas effect, soft-alpha, or asymmetric pose is exempt? |
|
|
57
|
+
| evidence | Which report, image, contact sheet, metadata record, or engine scene proves the result? |
|
|
58
|
+
| action | Rework, quarantine, reject, or revise the contract with new evidence? |
|
|
59
|
+
|
|
60
|
+
## Required metric families
|
|
61
|
+
|
|
62
|
+
Select only the families relevant to the asset role:
|
|
63
|
+
|
|
64
|
+
- file contract: exact canvas, color mode, RGBA presence, bit depth, color profile, byte budget, empty
|
|
65
|
+
output, duplicate hash, naming, and metadata completeness;
|
|
66
|
+
- alpha contract: corner and border alpha, border-connected background residue, low-alpha noise area,
|
|
67
|
+
alpha histogram, matte fringe on contrasting backgrounds, and hidden RGB policy;
|
|
68
|
+
- framing contract: occupied bounds, border contact, safe margin, ground contact, pivot, sockets,
|
|
69
|
+
source size, trim rectangle, and sprite-source position;
|
|
70
|
+
- icon contract: silhouette occupancy, minimum negative space, minimum stroke, connected-component
|
|
71
|
+
count, contrast, pixel-grid alignment, and size-specific detail budget;
|
|
72
|
+
- seam contract: opposite-edge color and gradient distance, corner closure, repeated-pattern peak,
|
|
73
|
+
topology validity, object-contact height, and worst-neighbor matrix;
|
|
74
|
+
- animation contract: root and pivot drift, support-foot world drift, silhouette-area change, landmark
|
|
75
|
+
and bone-length change, palette drift, motion-arc deviation, loop pose and velocity discontinuity,
|
|
76
|
+
optical-flow outliers, and event-frame completeness;
|
|
77
|
+
- runtime contract: atlas bleed, UV region, alpha blend agreement, filter and mipmap behavior, wrap,
|
|
78
|
+
compression artifacts, draw scale, pixel snap, import metadata, and engine-scene result.
|
|
79
|
+
|
|
80
|
+
## Threshold calibration
|
|
81
|
+
|
|
82
|
+
Exact values belong to the project because a 16-pixel icon, a 256-pixel painted sprite, and a
|
|
83
|
+
full-canvas smoke effect cannot share one tolerance. Calibrate from target-size approved examples and
|
|
84
|
+
known-bad fixtures.
|
|
85
|
+
|
|
86
|
+
Useful starting hypotheses from the supplied production material include exact alpha zero at isolated
|
|
87
|
+
cutout corners, no unintended occupied border pixel, pivot or grounded-foot drift no greater than one
|
|
88
|
+
target pixel, silhouette-height drift around two percent, and light-direction drift around five
|
|
89
|
+
degrees. These are calibration candidates only. Record the tested scale and replace them with the
|
|
90
|
+
project's measured bounds before using them as release gates.
|
|
91
|
+
|
|
92
|
+
If no approved baseline or engine evidence exists, emit measurements and contact sheets as a
|
|
93
|
+
calibration report. Do not silently turn an arbitrary number into a pass or fail contract.
|
|
94
|
+
|
|
95
|
+
## Acceptance matrix
|
|
96
|
+
|
|
97
|
+
Render or inspect at least:
|
|
98
|
+
|
|
99
|
+
- transparent cutouts on black, white, mid-gray, and saturated backgrounds;
|
|
100
|
+
- icons at every shipped optical size, not only a large master preview;
|
|
101
|
+
- tiles as same-tile repeats and worst valid neighbors, including all four corners;
|
|
102
|
+
- sprites at native, reduced, and enlarged scales with the shipped filter and mipmap policy;
|
|
103
|
+
- atlases before and after compression with adjacent high-contrast sprites;
|
|
104
|
+
- animation at intended frame durations, slow inspection speed, and the loop boundary;
|
|
105
|
+
- debug overlays for pivot, ground line, sockets, trim rectangle, collider, hurtbox, hitbox, occluder,
|
|
106
|
+
motion paths, light vector, and tile topology.
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Raster, Alpha, Icon, and Atlas Checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist for isolated PNGs, translucent effects, icons, frame extraction, trimming, resizing,
|
|
4
|
+
packing, and engine import. Verify exact engine-version options from current project files or official
|
|
5
|
+
documentation before naming a setting.
|
|
6
|
+
|
|
7
|
+
## Real transparency
|
|
8
|
+
|
|
9
|
+
1. Decode the file and inspect its actual channel layout; a PNG extension or visible checkerboard is
|
|
10
|
+
not proof of an alpha channel.
|
|
11
|
+
2. For an isolated cutout, require the contract's corner and border alpha. Do not apply the same rule
|
|
12
|
+
to full-canvas fog, light, edge effects, or intentionally edge-touching tiles.
|
|
13
|
+
3. Inspect the alpha histogram and border-connected low-alpha regions. A large faint background can
|
|
14
|
+
pass a four-corner test, while a legitimate soft effect can have many distinct alpha values.
|
|
15
|
+
4. Detect baked checkerboards as image content by looking for repeated alternating blocks in opaque
|
|
16
|
+
or near-opaque background regions; route suspicious cases to review instead of claiming a perfect
|
|
17
|
+
detector.
|
|
18
|
+
5. Composite the decoded image on dark, light, neutral, and saturated backgrounds at target size.
|
|
19
|
+
Measure the edge band as well as reviewing it visually.
|
|
20
|
+
|
|
21
|
+
## Straight and premultiplied alpha
|
|
22
|
+
|
|
23
|
+
- Record whether working images, resize operations, packed textures, renderer uploads, and blend
|
|
24
|
+
equations expect straight or premultiplied alpha.
|
|
25
|
+
- For color resampling, convert color to the correct linear-light working space when required,
|
|
26
|
+
premultiply RGB by alpha, resize color and alpha together, and unpremultiply only when the output
|
|
27
|
+
contract requires straight alpha. Protect alpha zero from division noise.
|
|
28
|
+
- A white, black, or gray halo usually means a matte color was mixed into antialiased pixels, hidden
|
|
29
|
+
transparent RGB entered filtering, or straight data was blended as premultiplied data or vice versa.
|
|
30
|
+
- Normal, roughness, ID, and mask textures are data, not display color. Do not apply sRGB color
|
|
31
|
+
transforms or color-image alpha repair to them without an explicit format rule.
|
|
32
|
+
|
|
33
|
+
## Hidden RGB policy
|
|
34
|
+
|
|
35
|
+
Choose by runtime behavior:
|
|
36
|
+
|
|
37
|
+
- Clear RGB under alpha zero only for pipelines that never sample beyond visible texels and whose
|
|
38
|
+
compression or tooling contract requires canonical transparent bytes.
|
|
39
|
+
- Extend nearby visible color into transparent texels for linearly filtered, resized, mipmapped, or
|
|
40
|
+
atlased color sprites. Use nearest visible color or bounded edge dilation without changing alpha.
|
|
41
|
+
- Keep cutout-color dilation distinct from soft-effect matting. Smoke, glass, fire, glow, and hair
|
|
42
|
+
need foreground color and fractional alpha recovered together; hard thresholding deletes the
|
|
43
|
+
effect or leaves a matte.
|
|
44
|
+
|
|
45
|
+
## Multi-object separation
|
|
46
|
+
|
|
47
|
+
For a sheet containing several generated objects:
|
|
48
|
+
|
|
49
|
+
1. Estimate foreground alpha or foreground probability, preserving a soft channel for effects.
|
|
50
|
+
2. Remove border-connected background residue and isolated components below a role-specific area
|
|
51
|
+
threshold.
|
|
52
|
+
3. Run connected-component analysis at more than one alpha threshold so faint shadows and solid
|
|
53
|
+
objects can be reasoned about separately.
|
|
54
|
+
4. Merge components only with semantic evidence such as a declared object group, containment,
|
|
55
|
+
proximity, shared anchor, or source mask. A detached weapon decoration may belong to the object;
|
|
56
|
+
smoke or a ground glow may require a separate blend layer.
|
|
57
|
+
5. Split touching candidates with masks, contour concavities, watershed or distance fields, and a
|
|
58
|
+
review fallback. Do not slice solely through the narrowest pixel column.
|
|
59
|
+
6. Dilate the accepted mask only enough to preserve antialiasing, then compute a safety margin and
|
|
60
|
+
reject any crop that touches the output border outside an intentional exception.
|
|
61
|
+
7. Store the source image, extraction mask, component membership, original bounds, expanded bounds,
|
|
62
|
+
and confidence or review disposition.
|
|
63
|
+
|
|
64
|
+
## Icons and optical sizes
|
|
65
|
+
|
|
66
|
+
- Do not downsample one detailed master into every size and call the result complete. Treat 16, 24,
|
|
67
|
+
32, 64, 128, and larger outputs as optical-size families selected by the product, not as a mandatory
|
|
68
|
+
Mustflow size list.
|
|
69
|
+
- At the smallest sizes, prioritize silhouette, negative space, one dominant feature, strong value
|
|
70
|
+
separation, grid-aligned edges, and strokes that survive the target raster.
|
|
71
|
+
- Add secondary forms and material detail only as the target size can resolve them. Measure the final
|
|
72
|
+
raster rather than trusting a large preview.
|
|
73
|
+
- Generate each size from the largest approved source or a size-specific master in one resampling
|
|
74
|
+
step, then perform final-size cleanup. Do not repeatedly resize from the previous smaller output.
|
|
75
|
+
|
|
76
|
+
## Trimming and atlas metadata
|
|
77
|
+
|
|
78
|
+
Trimming may remove transparent storage but must not erase placement:
|
|
79
|
+
|
|
80
|
+
- original source width and height;
|
|
81
|
+
- trimmed frame rectangle in the original canvas;
|
|
82
|
+
- sprite-source position or corner offset;
|
|
83
|
+
- pivot in normalized and source-pixel coordinates when useful;
|
|
84
|
+
- ground contact, center of mass, sockets, and semantic anchors;
|
|
85
|
+
- frame duration, loop range, animation event references, and gameplay shape references;
|
|
86
|
+
- atlas frame rectangle, rotation flag, extrude, shape padding, border padding, and page identity.
|
|
87
|
+
|
|
88
|
+
Apply identical trim and placement to paired color, normal, emissive, and mask textures. Disable atlas
|
|
89
|
+
rotation when direction, UI orientation, tiling, paired maps, or local axes make rotation unsafe.
|
|
90
|
+
|
|
91
|
+
## Bleeding and engine import
|
|
92
|
+
|
|
93
|
+
- Transparent gaps alone do not stop sampling. Keep extruded edge color, spacing between packed
|
|
94
|
+
shapes, and atlas-border padding as separate values derived from filtering, mip depth, compression,
|
|
95
|
+
and maximum reduction.
|
|
96
|
+
- Do not use UV inset as the only repair; it can shrink or shimmer sprites and still fails at deeper
|
|
97
|
+
mips. Verify the packed result with deliberately high-contrast neighbors.
|
|
98
|
+
- Use clamp for independent sprites and repeat only for textures whose opposite edges are contracted
|
|
99
|
+
to repeat. Select nearest or linear filtering from the asset role and camera behavior; pixel art may
|
|
100
|
+
still need a deliberate mip strategy when heavily minified.
|
|
101
|
+
- For PixiJS, verify the installed renderer version's texture source, alpha, scale, mipmap, wrap, UV,
|
|
102
|
+
resolution, and atlas metadata behavior rather than copying properties from another major version.
|
|
103
|
+
- For Unity, verify sprite import mode, pixels per unit, pivot, mesh, filter, mipmaps, color space,
|
|
104
|
+
alpha handling, compression, atlas padding or extrude, rotation, and paired texture behavior.
|
|
105
|
+
- For Godot, verify texture import filtering, mipmaps, repeat, alpha-border repair, lossless or VRAM
|
|
106
|
+
compression, normal-map handling, region filtering, SpriteFrames metadata, offset, and pixel-snap
|
|
107
|
+
behavior for the installed major version.
|
|
108
|
+
- Compare the source, packed texture, imported resource, and rendered frame. Disk compression size is
|
|
109
|
+
not GPU-memory evidence.
|