Rebuild raster-specific visual character as a Web-owned effect layer. Preserve
semantic HTML, responsive behavior, and accessibility; use source crops only as
measurement and comparison evidence.
This first version is explicit-only. Start only when the parent manifest sets
rasterTexture.required: true. If the user explicitly requests the skill,
record that decision first with reason: "user-request" and exact existing
target ids. Block when no parent manifest or resolvable target exists. Do not
auto-detect a requirement from weak background noise.
-
Read the parent manifest and normalize rasterTexture into a four-key
raster-texture-contract/v1 snapshot: schemaVersion, required, reason,
and targetIds. Bind that snapshot in the report and copy targetIds
exactly. The report receipt can then be added to the parent manifest without
creating a circular whole-manifest hash.
-
Create one target row per manifest id. Bind a real source crop and classify
every effect separately with its own coordinateSpace, methods, and
ownership. Use glyph-local, element-local, or section-field; one
target may legitimately combine spaces.
-
Record only source-observed effect types. Give each effect a stable
target-local id. Read
references/reconstruction-methods.md
before selecting CSS, SVG filter, content-free mask, or procedural-raster
methods.
-
Read the actual desktop/mobile QA viewports from the parent workflow. Define
each state's width, height, intensity scale, and spatial scale. Keep motion
static unless the parent manifest separately requires motion.
-
Set the report safety assertions exactly:
{
"sourcePixelsShipped": false,
"contentFreeAsset": true,
"structuralTextRemainsLive": true
}
-
Validate the plan before implementation:
SKILL_ROOT="${SKILL_ROOT:-${CODEX_HOME:-$HOME/.codex}/skills}"
"$SKILL_ROOT/mockup-to-code/scripts/skill-pack-python" \
"$SKILL_ROOT/raster-texture-reconstruction/scripts/validate_raster_texture_report.py" \
reports/raster-texture-report.json --root . --phase pre-css --receipt
A pre-CSS report uses status: "ready" and target
implementation.status: "planned". A fully passing completion report is
also valid at this phase.
-
Implement the effect outside the source pixels. Structural headings, labels,
CTA copy, navigation, body, and legal text remain selectable live DOM text.
Keep CSS-owned surfaces and image-owned assets separate.
-
Measure matched source/build crops with the supplied helper. Treat the result
as diagnostic evidence, not a universal quality score:
SKILL_ROOT="${SKILL_ROOT:-${CODEX_HOME:-$HOME/.codex}/skills}"
"$SKILL_ROOT/mockup-to-code/scripts/skill-pack-python" \
"$SKILL_ROOT/raster-texture-reconstruction/scripts/texture_metrics.py" \
--target-id hero.heading \
--source reports/crops/hero-heading-source.png \
--build reports/crops/hero-heading-build.png \
--out reports/texture-metrics-hero-heading.json
-
Use the parent workflow's render/capture commands at the declared widths and
heights. Capture readable desktop and mobile crop pairs and record the
dimensions. Bind current hashes for implementation files, any content-free
assets, the metrics report, and both crop pairs. Set each target verdict and
the report status to pass.
-
Validate completion and copy the emitted receipt into
specialistReports.rasterTexture:
SKILL_ROOT="${SKILL_ROOT:-${CODEX_HOME:-$HOME/.codex}/skills}"
"$SKILL_ROOT/mockup-to-code/scripts/skill-pack-python" \
"$SKILL_ROOT/raster-texture-reconstruction/scripts/validate_raster_texture_report.py" \
reports/raster-texture-report.json --root . --phase completion --receipt
-
Return the crop pairs to the parent workflow's existing independent visual
reviewer. Do not create a second reviewer system inside this skill. A
specialist pass means the evidence contract is complete; it does not
override a parent reviewer rejection.