You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 42b5540
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .claude-plugin/marketplace.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -14,7 +14,7 @@
14
14
"source": "./",
15
15
"displayName": "html2wp — HTML to WordPress",
16
16
"description": "BETA. Convert a static HTML site into a standalone WordPress block theme, verified against the original at three viewport widths — and reviewed by you before handover. The conversion runs through a verified Astro 5 build, so the Astro project is a real output too — compared pixel by pixel against the source before anything WordPress-shaped is generated.",
Copy file name to clipboardExpand all lines: .claude-plugin/plugin.json
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
"name": "html2wp",
3
3
"displayName": "html2wp — HTML to WordPress",
4
4
"description": "BETA. Convert a static HTML site — or anything that builds to one (Lovable, Bolt, v0, Next export) — into a standalone WordPress block theme: verified pixel by pixel, pages, blog, forms, menus, SEO and redirects, with no plugin required and verification gates at every stage. Two modes: Full (every gate repaired until green, then your own page-by-page review) and Flash (every stage once, no repair loop, the gates reported). The gates catch most fidelity drift, not all of it.",
--reason "<changedinputanddependentoutputs>"`. This permits earlier
479
+
stages in the SAME run, without `mode --new`. After all outstanding issues
480
+
of one stage pass current checks, `full-delivery.py {workspace} resolve
481
+
--stage S` removes its deferred warning using the successful repair receipt. It does not reset attempts. This exception also
482
+
applies to owner recovery from a stopped Full run. In repair-stop mode use
483
+
its counted attempts; if the capture/output is usable but still red, `defer`
484
+
archives the old stop and continues. Never mark an entire stage done just
485
+
because a single failed command was fixed.
486
+
351
487
## Choose the mode — Flash or Full
352
488
353
489
**Right after the output.** The same stages run in one of two modes:
354
490
355
491
| mode | what it is | for |
356
492
|---|---|---|
357
-
|**Full**| this file end to end: every gate, repaired until it is green, and the owner's page-by-page review| the hand-over run; the default in a CLI |
493
+
|**Full**| this file end to end: every gate checked, bounded repairs, then the best usable ZIP with remaining issues reported| the hand-over run; the default in a CLI |
358
494
|**Flash**| every stage ONCE, no repair loop. At stage 0 you identify the menus, the blog (posts and listing), the shop and every form, so each is wired and connectable in Visual Edit Lite; the gates run once and are REPORTED, not repaired | a converted, installed, honestly reported theme in about an hour; the desktop app's default |
359
495
|**Astro** (`H2WP_MODE=astro`, `H2WP_TARGET=astro`) | the Astro 5 project only: stages -1 to 1 and gates A/A2, each once — no service, no WordPress, no theme | the owner who wants the static site or its source, not WordPress |
360
496
|**Change** (`H2WP_MODE=change`) | after delivery: the owner's change made in the LIVE theme and applied to the running preview in seconds — never a new build (section "Changes after delivery") | every request once the project is delivered (`{workspace}/result.json` status `delivered`) |
361
497
362
-
-**`H2WP_MODE` set** (`flash`, `full`, `astro`or `change`): use it and do not ask. It wins over
498
+
-**`H2WP_MODE` set** (`flash`, `full`, `astro`, `change`, `repair-stop`or `repair-delivery`): use it and do not ask. It wins over
363
499
the wording of the request — a prompt cannot turn a Flash run into a repair
364
500
loop. Any other value: stop and say so.
365
501
-**Not set**: Flash only when the owner asked for it ("Flash", "one pass",
@@ -376,7 +512,7 @@ activates without an admin error.
376
512
then `assets/scripts/write-result.py {workspace} --status stopped --stopped-stage -4 --stopped-reason "<the same words>"`.
377
513
- A **Continue** keeps the mode the run started with (`{workspace}/.h2wp-mode`)
378
514
and does NOT call `progress.sh mode` again: it resumes at the stage
379
-
`progress.json` names and never redoes a finished stage. `progress.sh mode`
515
+
`progress.json` names and redoes only dependencies invalidated by a documented Full repair. `progress.sh mode`
380
516
starts a NEW run — the last run's progress is kept beside it and every stage
381
517
starts pending (the owner asked for Flash again, or Full after Flash). Over
382
518
a run still in progress (a Stop leaves one) it refuses with exit 3 and names
@@ -698,11 +834,11 @@ message (and Continue) on a stopped run comes with `H2WP_MODE=repair-stop`.
698
834
```
699
835
700
836
3.**Fixed → continue from that stage.** A fixed attempt puts the stopped
701
-
result aside, so the run is running again: `progress.sh done <stage>`, then
702
-
every stage after it exactly as its mode's table says, to the end —
837
+
result aside, so the run is running again: finish every remaining substep
838
+
of that stage before `progress.sh done <stage>`, then every stage after it exactly as its mode's table says, to the end —
703
839
stage 6.5 and `write-result.py` included (Flash: the "Flash mode" table;
704
840
the mode is the one the run started with, whatever `H2WP_MODE` says about
705
-
the turn). Never the stages before it, never `mode`, never a new run.
841
+
the turn). In Full, rebuild invalidated dependencies when needed; never `mode` or a new run.
706
842
4.**Not fixed** (the message's 3 attempts are spent): write the stop
707
843
again — `write-result.py {workspace} --status stopped --stopped-stage
708
844
<stage> --stopped-reason "<why>"` — and tell the owner plainly what could
@@ -2969,16 +3105,15 @@ What to do instead, in order:
2969
3105
in the README under Status), or an issue on the plugin's own repository. A fix there ships to everybody as
2970
3106
a release, which is the only way a plugin fix is allowed to reach a site.
2971
3107
2972
-
The same rule holds for the delivered theme: hand-editing it is pointless
2973
-
because the next rebuild erases it. The difference is that a theme edit only
2974
-
costs you the edit, while a plugin edit costs the product its integrity.
3108
+
The delivered HTML theme can be repaired locally using the patch ledger
3109
+
above. Server rebuilds replay recorded repairs before replacing it. The
3110
+
editor plugin remains a separately released product.
2975
3111
2976
3112
A delivered site comes back as REPORTS: "this should be a collection", "the
2977
3113
canonical points somewhere odd", "photos flash when I switch pages". The
2978
-
repair is almost never a re-conversion — but it is also never a hand-edit of
2979
-
the delivered theme, because the next rebuild would erase it. Every repair
2980
-
lands in the manifest, or in a defect report to the service, and re-runs the
2981
-
SHORTEST suffix of the pipeline that can carry it out.
3114
+
repair is usually a local theme patch or a manifest repair. Use the shortest
3115
+
affected part of the pipeline; report a general generator defect as well.
3116
+
Preserve the output patch until the server fixes the underlying cause.
2982
3117
2983
3118
**First, reproduce against the thing the owner actually uses.** Two traps,
0 commit comments