@hostinger/mcp 3.2.2 → 3.3.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.
Files changed (64) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/gemini-extension.json +1 -1
  3. package/package.json +1 -1
  4. package/server.json +2 -2
  5. package/skills/headless/SKILL.md +247 -36
  6. package/skills/headless/connect/SKILL.md +103 -0
  7. package/skills/headless/{entry → connect}/bootstrap.mjs +8 -3
  8. package/skills/headless/connect/tools/antigravity.md +54 -0
  9. package/skills/headless/connect/tools/claude-code.md +46 -0
  10. package/skills/headless/connect/tools/codex.md +48 -0
  11. package/skills/headless/connect/tools/cursor.md +109 -0
  12. package/skills/headless/connect/tools/devin.md +50 -0
  13. package/skills/headless/connect/tools/vscode.md +57 -0
  14. package/skills/headless/report.schema.json +149 -0
  15. package/skills/headless/run-log.mjs +662 -0
  16. package/skills/headless/steps/01-check-state/SKILL.md +193 -0
  17. package/skills/headless/steps/02-refine/SKILL.md +206 -0
  18. package/skills/headless/steps/03-provision/SKILL.md +62 -0
  19. package/skills/headless/steps/03-provision/ecommerce/SKILL.md +133 -0
  20. package/skills/headless/steps/03-provision/webapp/SKILL.md +154 -0
  21. package/skills/headless/steps/03-provision/wordpress/SKILL.md +100 -0
  22. package/skills/headless/steps/04-content-model/SKILL.md +150 -0
  23. package/skills/headless/steps/04-content-model/ecommerce/SKILL.md +75 -0
  24. package/skills/headless/steps/04-content-model/wordpress/SKILL.md +178 -0
  25. package/skills/headless/steps/05-design/SKILL.md +455 -0
  26. package/skills/headless/steps/05-design/logo-kit.mjs +201 -0
  27. package/skills/headless/steps/06-frontend/SKILL.md +131 -0
  28. package/skills/headless/steps/07-validate/SKILL.md +53 -0
  29. package/skills/headless/steps/08-deploy/SKILL.md +171 -0
  30. package/skills/headless/steps/09-done/SKILL.md +151 -0
  31. package/src/core/skills.js +164 -24
  32. package/src/core/skills.ts +164 -24
  33. package/src/servers/agency-hosting.js +1 -1
  34. package/src/servers/agency-hosting.ts +1 -1
  35. package/src/servers/agent-readiness.js +1 -1
  36. package/src/servers/agent-readiness.ts +1 -1
  37. package/src/servers/all.js +1 -1
  38. package/src/servers/all.ts +1 -1
  39. package/src/servers/billing.js +1 -1
  40. package/src/servers/billing.ts +1 -1
  41. package/src/servers/dns.js +1 -1
  42. package/src/servers/dns.ts +1 -1
  43. package/src/servers/domains.js +1 -1
  44. package/src/servers/domains.ts +1 -1
  45. package/src/servers/ecommerce.js +1 -1
  46. package/src/servers/ecommerce.ts +1 -1
  47. package/src/servers/horizons.js +1 -1
  48. package/src/servers/horizons.ts +1 -1
  49. package/src/servers/hosting.js +1 -1
  50. package/src/servers/hosting.ts +1 -1
  51. package/src/servers/mail.js +1 -1
  52. package/src/servers/mail.ts +1 -1
  53. package/src/servers/reach.js +1 -1
  54. package/src/servers/reach.ts +1 -1
  55. package/src/servers/vps.js +1 -1
  56. package/src/servers/vps.ts +1 -1
  57. package/src/servers/wordpress.js +1 -1
  58. package/src/servers/wordpress.ts +1 -1
  59. package/skills/headless/entry/skill.md +0 -79
  60. package/skills/headless/references/DATABASE.md +0 -49
  61. package/skills/headless/references/DEPLOYMENT.md +0 -34
  62. package/skills/headless/references/SETUP.md +0 -35
  63. package/skills/headless/references/STORE.md +0 -52
  64. package/skills/headless/references/WORDPRESS.md +0 -51
@@ -0,0 +1,151 @@
1
+ ---
2
+ name: headless-step-done
3
+ description: "Step 9 (done) of the Hostinger Headless flow. Verifies the live site, then hands over the URLs (hPanel success page, main site, WordPress/store admin, dashboard), opens the success page in the browser on a successful run, and gives a summary of what was built and what the user can do next. Its final report format is also used whenever a run stops early."
4
+ ---
5
+
6
+ # headless-step-done
7
+
8
+ Verify the live site, then hand over the URLs (success page, main site, WordPress admin, dashboard), a
9
+ summary of what was built, and what the user can do next. **On a successful run, open the success page
10
+ for the user** (see *Open the success page*).
11
+
12
+ ## Verify the live site (brief)
13
+
14
+ On a run that deployed this session, re-confirm what you're about to hand over actually works (deploy
15
+ already checked this — this is a quick re-confirm, not a full re-run):
16
+
17
+ - **Main site:** `GET https://<domain>/` → 200 (Next.js SSR: `x-powered-by: Next.js`; Astro SSG: static
18
+ HTML with real content).
19
+ - **WordPress admin:** `GET {urls.wp_admin}` → reachable (a login page, 200/302), not 404.
20
+ - **Backend API:** `GET {urls.rest_api}/posts?per_page=1` → 200 (WordPress); or the storefront API for
21
+ the sales channel → 200 (Ecommerce).
22
+
23
+ If a check fails, say so in the outcome paragraph and don't claim the site is live.
24
+
25
+ ## Final report
26
+
27
+ Every run ends with this report, whether it finishes here or stops at an earlier stage (a dummy or
28
+ missing step, a failed provision, the user pausing). Build it from `state.json`, `site.json`,
29
+ `deploy.json` and what you actually did and checked in this run. Report only what you verified. Don't
30
+ claim a stage passed if you didn't check it.
31
+
32
+ Write it in this order:
33
+
34
+ 1. **One-paragraph outcome.** What was created and on which domain (bold it). If the run stopped
35
+ early, name the stage it stopped at, why, and what the user will see right now (e.g. "the site
36
+ root returns 403 until the frontend is deployed").
37
+
38
+ 2. **Steps completed** — a table with one row per stage that ran:
39
+
40
+ | Stage | Result |
41
+ |---|---|
42
+ | connect | How the connector was reached, MCP version, how sign-in happened. |
43
+ | 1 check state | New build / resumed at `<stage>` / adopted an existing site. |
44
+ | 2 refine | What the brief is and which backend it chose (say if a sample brief was used). |
45
+ | 3 provision | Plan and order used, how long setup took, which verification checks passed. |
46
+ | 4 content model | What was created (counts of pages, posts, terms, menus, media, SEO) and how it was verified. |
47
+ | … | One row for each further stage that ran (design, frontend, validate, deploy, done). |
48
+
49
+ Stages that didn't run are left out of the table and named in the outcome paragraph instead.
50
+ Use the stage numbers and names from the orchestrator's flow table.
51
+
52
+ 3. **Links** — every URL that exists at this point. Build the hPanel URLs from `site.json`
53
+ (`order_id`, `username`, `domain`) and `state.json` (`tool`); take the rest from `site.json` /
54
+ `deploy.json`. Lead with the one the user cares about most — the **main site** — then the admin
55
+ and dashboards. **Don't list the success page here:** it opens on its own (see *Open the success
56
+ page*), so printing its URL in the report is just noise — the only exception is when a browser
57
+ can't be opened (handled in that section):
58
+
59
+ - **Main site (live):** `urls.site` (`https://<domain>`) — only once deployed.
60
+ - **WordPress admin (one-click auto-login):** for a WordPress backend, **mint and hand over the
61
+ auto-login redirect URL** — `wordpress_login_create-links { username, software: <site.json
62
+ wordpress.install_id> }` returns a temporary link that logs the user straight into wp-admin. Give
63
+ that URL as the admin link (it lands on `/cms/wp-admin`), so the user never needs a password. Also
64
+ note the plain `urls.wp_admin` as a fallback. **Never print or store a password.** For an
65
+ Ecommerce store, link the store admin from `urls.store_admin` instead.
66
+ - **hPanel site dashboard:** `https://hpanel.hostinger.com/websites/<domain>` (the headless website
67
+ is installed by now).
68
+ - **Onboarding (resume):** `https://hpanel.hostinger.com/headless-onboarding/<order_id>/<username>/`
69
+ - **REST API** (for developers): `urls.rest_api`.
70
+
71
+ > URL shape note: `<username>` may be dropped from the onboarding/success URLs in a future hPanel
72
+ > release. If a built URL 404s, retry the same path without the `/<username>` segment before
73
+ > reporting it as broken.
74
+
75
+ 4. **Where state lives** — the workspace path `~/.hostinger/<domain>/`, the `stage` that a
76
+ resumed run will start from, and the build report `~/.hostinger/<domain>/report.html`.
77
+
78
+ 5. **Gaps / follow-ups** (only if any) — a short numbered list of anything skipped, approximated or
79
+ left for the user (e.g. no images generated, default WordPress content left in place).
80
+
81
+ Never include passwords, JWTs or other secrets in the report. For wp-admin access, give the URL and
82
+ offer a one-click login link (`wordpress_login_create-links`), not credentials.
83
+
84
+ ## Open the success page
85
+
86
+ On a **successful** run (the deploy succeeded and the live checks passed), open the success page in the
87
+ user's **main / system browser** right after presenting the report, so they land on the hPanel
88
+ celebration/next-steps screen for their new site. This is a side effect only — **don't print the
89
+ success URL in the report output** (it just opens); the one exception is the can't-open-a-browser
90
+ fallback below. Build the URL with `<tool>` as the running tool's onboarding slug (`claude` for
91
+ Claude Code, else `cursor`, `codex`, `vscode`, `antigravity`, `devin`), mapped from
92
+ `state.json → tool` (e.g. `claude-code` → `claude`):
93
+
94
+ ```bash
95
+ # Build the URL first, then open it with the OS default (main) browser — not an embedded one.
96
+ # <tool> = the onboarding slug (claude for Claude Code, else cursor/codex/vscode/antigravity/devin)
97
+ URL="https://hpanel.hostinger.com/headless-onboarding/<order_id>/<username>/success/<domain>/<tool>"
98
+ open "$URL" # macOS
99
+ # xdg-open "$URL" # Linux
100
+ # start "" "$URL" # Windows
101
+ ```
102
+
103
+ - **Main browser only.** Use the OS opener above (`open` / `xdg-open` / `start`) so the page lands in
104
+ Chrome, Safari, Edge, or whatever the user actually uses. **Do not** open it in an embedded or
105
+ sandboxed browser (Cursor IDE browser / `cursor-ide-browser`, Playwright, Puppeteer, WebView, or
106
+ any in-agent browser tab). Those stay inside the tool session and the user won't see the
107
+ celebration page where they expect it.
108
+ - Open it **once**, and only on a successful run — never on an early stop or a failed deploy.
109
+ - If your tool can't open a browser (the command isn't available, or `open`/`xdg-open`/`start`
110
+ fails), don't treat it as a failure and **don't fall back to an embedded browser**. This is the
111
+ **one** case where you print the success URL — show it once in the report and tell the user to
112
+ open it themselves in their main browser.
113
+
114
+ ## Build report
115
+
116
+ Right after the final report, save the build report for this run. It turns the run log (stage times
117
+ from `state.json`, events from `events.jsonl`) into `reports/<run>.json` and `.html`, and copies the
118
+ HTML to `report.html` in the workspace:
119
+
120
+ ```bash
121
+ node <skill>/run-log.mjs <domain> event good '{"text":"<something that went well>"}' # one per thing, if not logged yet
122
+ node <skill>/run-log.mjs <domain> stage-end done ok
123
+ node <skill>/run-log.mjs <domain> report --outcome <live|stopped|failed> [--tokens '<json>']
124
+ ```
125
+
126
+ Then send it to Hostinger: pass `reports/<run>.json` unchanged to `hosting_headless_submit-build-report`
127
+ and run `report-sent <run>` (or `report-rejected <run>` on a 422). The `report` command prints the
128
+ exact path and run id. Don't ask first; see *Run log and build report* in the top-level `SKILL.md`
129
+ for failures. Then tell the user in one line: "Sent the build report to Hostinger to help improve
130
+ the flow." On a 422 say it's saved locally only; on any other failure say it'll be sent next session.
131
+
132
+ If the user asks for more changes after this report in the same session, call
133
+ `run-log.mjs <domain> run-resume --reason "<what they asked for>"` before the work. Then log as
134
+ usual and run `report` again when it's done. It updates this run's report in place, and the report
135
+ lists the follow-up. Send the updated report the same way.
136
+
137
+ - **Outcome:** `live` when the deploy succeeded this run, `failed` when a stage failed and you
138
+ couldn't recover, `stopped` for everything else (the user paused, a dummy or missing step). Leave
139
+ `--outcome` out and the script decides from the log.
140
+ - **Before you write it,** check that every issue, correction and skill gap from this run is in
141
+ `events.jsonl`. Log any that are missing now; the report only shows what was logged.
142
+ - **After you write it,** read the `warning:` lines `report` prints. They list logging gaps: a stage
143
+ that never ended, a start that was estimated, a stage logged with no duration, or (on a live build)
144
+ a stage that was never logged. Fix what you can: `stage-end` an open stage, or correct a start with
145
+ `stage-fix <stage> --started-ago <time>`, then run `report` again. What you can't fix stays in the report's
146
+ *Logging gaps* section.
147
+ - **Tokens:** only what your tool tells you about your own usage (see *Run log and build report* in
148
+ the top-level `SKILL.md`).
149
+ - In the final report's *Where state lives*, add the path to `report.html` so the user can open it.
150
+
151
+ Do this on every run, including the early stops: those reports are the most useful ones.