In this piece
Craft Anything: How to Check a Website Rebuild
Our broken test page matched the working reference screenshot exactly. Craft Anything’s image metrics rounded to 100%, while the button did nothing.
Craft Anything website rebuild verification requires matching image evidence with the behavior you need. Review each viewport’s results and any failed claims or unknowns, then execute the required interaction. An untested outcome remains unproven even when the screenshots match. Record the implementation revision with those results.
Research status: 3 November 2026. We ran the official Linux x86_64 CLI from Craft Anything v0.3.0, verified the archive checksum and inspected its release source. Playwright captured our screenshots and checked the button separately. We did not run the AI builder or the complete rebuild workflow.
What does Craft Anything do?
Craft Anything is an open-source Rust toolkit that gives coding agents tools to inspect software and compare a new implementation. Its release README describes a Study, Build and Check workflow for websites, apps and games. The project labels itself early alpha.
ArtCraft’s official application catalog lists Craft Anything alongside its creative applications, including PhotoCraft and FilmCraft.
| Interface | Role in the workflow | What to verify |
|---|---|---|
| Desktop application | Review a target and follow the rebuild. | The captured target and the final check reports. |
| CLI | Run named tools or a rebuild from a terminal. | Version, tool output and each check’s actual result. |
| MCP server | Expose inspection and reconstruction tools to an agent. | The agent, inspection mode and permission scope. |
The tool count needs a date. The 31 October launch README advertised 284 tools. The v0.3.0 README says 314. Our released Linux binary returned 315 unique registered tool IDs through commands. Registration does not mean every tool is usable with your mode, target and installed dependencies.
Does Craft Anything bypass a Claude refusal?
Craft Anything does not document a way to remove Claude’s refusals. Its Claude Code integration guide says it launches your unmodified local claude program using your own sign-in. A different tool interface does not establish that a provider will accept a particular recreation request.
The claim that an Anthropic block caused this project is not established by the primary sources we found. Issue 21 records a Claude detection problem and a refusal report. A ticket-relay comment separates failure to find Claude on PATH from a refusal to recreate Titanfall 2. That is a specific report, not evidence of a provider-wide block.
Reverse Engineer Anything, or REA, is a separate project. Compare their supported targets and the evidence each returns when choosing between them.
What did our Craft Anything comparison test show?
Craft Anything’s screenshot comparator matched our deliberately broken page to the working reference at all three widths: 1440, 768 and 390 CSS pixels. The separate click check failed for the broken version at every width. Each viewport was 900 pixels high.
Our reference page changes a status message when you click Reserve a demo seat. The broken version omits that handler. A control keeps the handler but changes the colors. The button changes local page state; there is no reservation backend.
| Width, CSS px | Candidate versus reference | Layout metric | Detail metric | Separate click check |
|---|---|---|---|---|
| 1440 | Broken handler, same appearance | 100% | 100.00% | Failed |
| 768 | Broken handler, same appearance | 100% | 100.00% | Failed |
| 390 | Broken handler, same appearance | 100% | 100.00% | Failed |
| 1440 | Changed colors, working handler | 0% | 96.87% | Passed |
| 768 | Changed colors, working handler | 0% | 97.03% | Passed |
| 390 | Changed colors, working handler | 0% | 96.43% | Passed |
Measured scope: six comparator calls, all exit 0, plus nine independent interaction probes across the three modes and widths. The reference and broken-mode PNG hashes matched at each width; the comparator reported zero differing pixels. Detail values above are rounded to two decimals. The raw JSON retains the floating-point values.
web-pixels-compare never clicked the button, so it had no evidence about the handler. The complete Craft Anything workflow includes additional checks of observed states; this experiment does not show that it would accept the broken page.
Download the reproducible Craft Anything comparison fixture for our HTML and screenshot-generation runner, recorded results, tool inventory and environment details. Install the CLI and browser separately. The fixture uses our own content.
How can you reproduce the screenshot check?
To reproduce this Craft Anything check, run the released CLI against two PNG files using web-pixels-compare. Keep the image paths absolute and record the binary version. The included runner regenerates screenshots from our local fixture and records the separate click assertions.
craft-anything-cli --version
craft-anything-cli commands
craft-anything-cli --clean-room web-pixels-compare @compare.jsonUse this shape for compare.json, replacing both paths with your own files:
{
"before": { "path": "/absolute/reference.png" },
"after": { "path": "/absolute/candidate.png" },
"common_area": true,
"tolerance": 24
}The released screenshot-tool implementation computes these results from the PNGs. Our run used no model call or noise mask. The download records binary hashes and runtime versions; browser or font changes can alter regenerated screenshots.
What do Craft Anything’s similarity scores measure?
Craft Anything’s layout metric measures matching mean colors in 16-pixel tiles; its detail metric measures brightness structure using SSIM. Our recolored control’s zero layout score measures color disagreement, not movement of the page’s elements. Review both metrics alongside the images and their dimensions.
| Field or setting | What it describes | Review consequence |
|---|---|---|
layout_similarity | Share of tiles with sufficiently similar mean color. | A color change can lower it without moving the layout. |
perceptual_similarity | SSIM over image brightness. | Read it alongside the color-sensitive metric and the actual images. |
common_area | Compares the shared top-left area when dimensions differ. | Inspect both original dimensions and any content outside the shared area. |
tolerance: 24 | Threshold for counting per-channel pixel changes. | It is not a 24% allowance for incorrect behavior. |
coverage: complete, 1/1 | The one requested screenshot comparison was examined. | Coverage extends only to the operation on these input images. |
The website rebuild checker combines the two image metrics as (layout_similarity + perceptual_similarity) × 50, then averages across captured widths and pages. It also evaluates other observations and claims. Those checks are not all weights inside the screenshot percentage.
If you apply that formula to our 1440-pixel color control, the image score would be (0 + 0.9687234879) × 50 = 48.44%. That is a calculation from the primitive output, not an observed full-rebuild score. The button still worked. Decide separately whether the color change is acceptable and whether the required behavior is present.
Does Ready mean the rebuild passed every check?
In v0.3.0, Craft Anything can show Ready after reaching its refinement limit even when a check falls short. That follows from the source; our experiment did not execute the rebuild loop. Inspect every final-round check’s claims and unknowns before accepting the result.
The check-result definition and rebuild completion loop expose the distinction:
| Signal | Meaning in the inspected release | What you still need |
|---|---|---|
passed | The build succeeded, or the site was served and compared. | Similarity, claims and unknowns for that check. |
good(threshold) | Passed, no unknowns, all claims passed and sufficient similarity when present. | Confirmation that the measured claims cover your required outcomes. |
Ready | The run completed its finish path, which can follow the refinement cap and the last check’s passed field. | Every check from the final round, including failed claims and unresolved unknowns. |
| Successful process exit | The command finished successfully at the process level. | An explicit acceptance decision about the recreated software. |
Use successful CLI completion to collect artifacts, then evaluate the acceptance conditions. If a form must display an error or a menu must open, retain evidence of that state transition. Fail the acceptance step when the required state is absent.
How do you verify a Craft Anything website rebuild?
Inspect Craft Anything’s captured reference and every check in the final round before accepting a website rebuild. Then run the required interactions against the exact implementation you plan to keep. Record the expected outcomes before testing, so the acceptance decision does not depend on how convincing the screenshots look.
| Artifact | Question to answer | Evidence to retain |
|---|---|---|
craft.json and run notes | Which target, agent, mode and version produced this result? | Configuration, reference scope and tool version. |
capture/ | Did the reference include the routes and states you care about? | Viewport sizes, images, visible text and observed interactions. |
app/ | Which implementation did you evaluate? | The exact revision and the build or preview command. |
checks/ | What passed, failed or remained unknown in the final round? | All relevant results, scores, claims and unknowns. |
| Your interaction record | Did the required action produce the expected result? | Action, expected state, actual state and an independent pass or fail. |
Start with one route and an observable outcome, such as the exact status text after a click. If a form must save a record, check persistence as well as its confirmation message. Leave missing evidence unresolved.
When an observation becomes an approved implementation rule, put it into your repository’s context. Our Claude Code design-system guide covers that handoff. If the workflow crosses native applications, use the separate Cua browser-to-desktop QA protocol; this browser fixture says nothing about those boundaries.
When would we use Craft Anything?
We would evaluate Craft Anything for an authorized reconstruction task where the team can inspect the generated project against an agreed reference and explicit interaction checks. Keep release approval in a separate step with those criteria, especially while the project remains early alpha.
Begin with a site you own. If the recreation must become a maintained production system, use the broader prototype-to-production decision to assess the work beyond visual acceptance.
