hostinger-api-mcp 3.28.2 → 3.28.4

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 (45) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/Dockerfile +2 -4
  3. package/gemini-extension.json +1 -1
  4. package/package.json +1 -1
  5. package/server.json +2 -2
  6. package/skills/headless/SKILL.md +1 -1
  7. package/skills/headless/VERSION +2 -2
  8. package/skills/headless/connect/SKILL.md +46 -20
  9. package/skills/headless/connect/tools/antigravity.md +6 -15
  10. package/skills/headless/connect/tools/claude-code.md +6 -20
  11. package/skills/headless/connect/tools/codex.md +6 -15
  12. package/skills/headless/connect/tools/cursor.md +6 -15
  13. package/skills/headless/connect/tools/devin.md +6 -15
  14. package/skills/headless/connect/tools/vscode.md +7 -16
  15. package/skills/headless/steps/08-deploy/SKILL.md +1 -1
  16. package/src/core/skills.js +27 -27
  17. package/src/core/skills.ts +27 -27
  18. package/src/servers/agency-hosting.js +1 -1
  19. package/src/servers/agency-hosting.ts +1 -1
  20. package/src/servers/agent-readiness.js +1 -1
  21. package/src/servers/agent-readiness.ts +1 -1
  22. package/src/servers/all.js +1 -1
  23. package/src/servers/all.ts +1 -1
  24. package/src/servers/billing.js +1 -1
  25. package/src/servers/billing.ts +1 -1
  26. package/src/servers/dns.js +1 -1
  27. package/src/servers/dns.ts +1 -1
  28. package/src/servers/domains.js +1 -1
  29. package/src/servers/domains.ts +1 -1
  30. package/src/servers/ecommerce.js +1 -1
  31. package/src/servers/ecommerce.ts +1 -1
  32. package/src/servers/gpu.js +1 -1
  33. package/src/servers/gpu.ts +1 -1
  34. package/src/servers/horizons.js +1 -1
  35. package/src/servers/horizons.ts +1 -1
  36. package/src/servers/hosting.js +1 -1
  37. package/src/servers/hosting.ts +1 -1
  38. package/src/servers/mail.js +1 -1
  39. package/src/servers/mail.ts +1 -1
  40. package/src/servers/reach.js +1 -1
  41. package/src/servers/reach.ts +1 -1
  42. package/src/servers/vps.js +1 -1
  43. package/src/servers/vps.ts +1 -1
  44. package/src/servers/wordpress.js +1 -1
  45. package/src/servers/wordpress.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,20 @@ Generated at release time from the diff between the previous and current
4
4
  build. Tool changes are listed individually; everything else is summarised
5
5
  by area.
6
6
 
7
+ ## v3.28.4 — 2026-11-04
8
+
9
+ ### Also in this release
10
+
11
+ - Build and packaging: `Dockerfile`
12
+ - Bundled agent skills: `skills/headless/VERSION`
13
+
14
+ ## v3.28.3 — 2026-11-04
15
+
16
+ ### Also in this release
17
+
18
+ - Bundled agent skills: 10 files
19
+ - Other files: `src/core/skills.js`, `src/core/skills.ts`
20
+
7
21
  ## v3.28.2 — 2026-11-04
8
22
 
9
23
  ### Also in this release
package/Dockerfile CHANGED
@@ -4,12 +4,10 @@ WORKDIR /app
4
4
 
5
5
  COPY package.json package-lock.json* ./
6
6
 
7
- RUN npm ci --only=production
7
+ RUN npm ci --omit=dev
8
8
 
9
9
  COPY . .
10
10
 
11
11
  ENV NODE_ENV=production
12
12
 
13
- RUN chmod +x server.js
14
-
15
- CMD ["node", "server.js"]
13
+ CMD ["node", "src/servers/all.js"]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "3.28.2",
3
+ "version": "3.28.4",
4
4
  "description": "Hostinger API — manage domains, DNS, hosting, VPS, billing and more from Gemini CLI.",
5
5
  "mcpServers": {
6
6
  "hostinger": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hostinger-api-mcp",
3
- "version": "3.28.2",
3
+ "version": "3.28.4",
4
4
  "mcpName": "io.github.hostinger/hostinger-api-mcp",
5
5
  "description": "MCP server for Hostinger API",
6
6
  "repository": {
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/hostinger/api-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "3.28.2",
9
+ "version": "3.28.4",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@hostinger/mcp",
14
- "version": "3.28.2",
14
+ "version": "3.28.4",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },
@@ -154,7 +154,7 @@ keep the language you were using.
154
154
  > The deleted legacy flow that put WordPress on a separate `cms.<domain>` subdomain with a
155
155
  > `type:"static"` frontend on the main domain (two instances, recorded as `cms_domain` + `type:"static"`
156
156
  > in `site.json`) is **gone and forbidden**. If you ever see `cms_domain` or `type:"static"` in a
157
- > workspace's `site.json`, you are running a stale/legacy skill copy — stop and re-pull the latest skills
157
+ > workspace's `site.json`, you are running a stale/legacy skill copy — stop and update the skill (`npx skills update` or the plugin update for an installed skill, or connect's Phase 1 npm install for a web-installed `headless/` folder)
158
158
  > (see `connect/SKILL.md`) before continuing.
159
159
 
160
160
  ### Background provision & the instance barrier
@@ -1,3 +1,3 @@
1
- version=3.28.2
2
- commit=96c74d42d44e
1
+ version=3.28.4
2
+ commit=01ad176fa140
3
3
  built=2026-11-04
@@ -28,20 +28,51 @@ If that errors (Node not installed) or prints a version below 20, install or upg
28
28
  - Linux: `nvm install 22 && nvm use 22` (or your distro's Node 20+ package)
29
29
  - Windows: `winget install OpenJS.NodeJS.LTS` (or download from nodejs.org)
30
30
 
31
- ## Phase 1 — Run the bootstrap (deterministic)
31
+ ## Phase 1 — Get the skill folder, then run its bootstrap (deterministic)
32
32
 
33
- Download the bootstrap script, then run it. It verifies the MCP server and handles sign-in, emitting one JSON event per line on stdout. Run it as a background/streaming process. Show the user only the sign-in URL (`awaiting_user`) or a
34
- failure's `detail`, and handle the other events silently (table below).
33
+ ### Find or install the skill folder
34
+
35
+ The bootstrap script and every step after connect ship in the `headless/` skill folder. Use the copy
36
+ you already have; never fetch single files from GitHub.
35
37
 
36
- The script is safe and inspectable: it only checks the MCP server via `npx` and drives the OAuth sign-in (a browser flow with a localhost callback) — no other network calls, no filesystem writes. Read it first if your sandbox flags externally-downloaded code.
38
+ - **An installer put the skill here** (you read this file from disk, from a folder that `npx skills
39
+ add` or a Claude Code or Cursor plugin installed): that folder is `<skill>`. Use it as it is and
40
+ download nothing. Updates come from the installer (`npx skills update`, the plugin update),
41
+ not from this run.
42
+ - **You read this file from the web, or from a `headless/` folder an earlier web run installed:**
43
+ install the skill from the published `@hostinger/mcp` npm release (for an earlier web install, only
44
+ when it is out of date; see below). It is the same package the MCP server runs, and npm checks
45
+ the tarball's integrity. Resolve the version first so the run uses one pinned release:
37
46
 
38
47
  ```bash
39
- # macOS/Linux:
40
- curl -fsSL -O https://raw.githubusercontent.com/hostinger/api-mcp-server/main/skills/headless/connect/bootstrap.mjs
41
- # Windows PowerShell:
42
- iwr https://raw.githubusercontent.com/hostinger/api-mcp-server/main/skills/headless/connect/bootstrap.mjs -OutFile bootstrap.mjs
48
+ # macOS/Linux
49
+ V=$(npm view @hostinger/mcp version) && npm pack "@hostinger/mcp@$V" --silent \
50
+ && tar -xzf "hostinger-mcp-$V.tgz" --strip-components=2 package/skills/headless && rm "hostinger-mcp-$V.tgz"
51
+ ```
52
+
53
+ ```powershell
54
+ # Windows PowerShell
55
+ $V = npm view @hostinger/mcp version; npm pack "@hostinger/mcp@$V" --silent
56
+ tar -xzf "hostinger-mcp-$V.tgz" --strip-components=2 package/skills/headless; Remove-Item "hostinger-mcp-$V.tgz"
57
+ ```
58
+
59
+ This leaves a local `headless/` folder, which is `<skill>`. A `headless/` folder already here from an
60
+ earlier web install counts as installed, with one check: when line 1 of its `headless/VERSION` is older
61
+ than `npm view @hostinger/mcp version`, install again the same way, so a run never uses a deleted,
62
+ legacy flow.
43
63
 
44
- node bootstrap.mjs
64
+ Read `<skill>/VERSION`: its line 1 is the skills version this run uses, which goes into
65
+ `connect.json` (Phase 3).
66
+
67
+ ### Run the bootstrap
68
+
69
+ Run the bundled script. It verifies the MCP server and handles sign-in, emitting one JSON event per line on stdout. Run it as a background/streaming process. Show the user only the sign-in URL (`awaiting_user`) or a
70
+ failure's `detail`, and handle the other events silently (table below).
71
+
72
+ The script is safe and inspectable: it only checks the MCP server via `npx` and drives the OAuth sign-in (a browser flow with a localhost callback) — no other network calls, no filesystem writes.
73
+
74
+ ```bash
75
+ node <skill>/connect/bootstrap.mjs
45
76
  ```
46
77
 
47
78
  ### Relay these events
@@ -113,8 +144,8 @@ until the tool restarts. When either tool group above is missing:
113
144
  (`npx --package=@hostinger/mcp@latest hostinger-ecommerce-mcp`) if the ecommerce group is missing.
114
145
  Skip a server that is already registered under its name. When neither group is there, register
115
146
  both: the backend isn't chosen until refine, and one restart then covers every backend.
116
- 2. **Pull the skills and write `connect.json`** (the route's skills step and Phase 3) before you stop,
117
- so the next run starts from them.
147
+ 2. **Write `connect.json`** (Phase 3) before you stop. The skill folder from Phase 1 stays in place,
148
+ so the next run starts from it.
118
149
  3. **Send the first message and end your turn.** It follows *The first message* in
119
150
  `headless/SKILL.md`: the sign-in link if one was needed, then one line saying Hostinger is set up
120
151
  and asking the user to restart the tool (the route says how) and paste the same prompt again so the
@@ -136,16 +167,11 @@ If a tool loads new servers without a restart (VS Code), use them right away and
136
167
  If the user's tool isn't listed yet, connect it the generic way: register both Hostinger MCP servers
137
168
  in that tool's MCP config (command `npx`, args as above), then follow *register, restart, resume*.
138
169
 
139
- ### Always pull the latest skills (never run a stale copy)
170
+ ### The skills come from Phase 1 only
140
171
 
141
- The tool route above downloads the `headless/` skill bundle. **Do this at the start of every run and let
142
- it overwrite any existing local `headless/` folder** — a build must never run on a stale copy, because an
143
- outdated local bundle is how a deleted, legacy flow (e.g. a separate CMS domain + a `type:"static"`
144
- frontend — two instances) ends up executing. The bundle ships a `headless/VERSION` stamp
145
- (`version=<semver>` on line 1, then `commit` and `built`). After pulling, read it; if you want to confirm
146
- it is current, compare line 1 against the published marker at
147
- `https://raw.githubusercontent.com/hostinger/api-mcp-server/main/skills/headless/VERSION` and re-pull if
148
- they differ. Carry the version into `connect.json` (Phase 3) so the build report records which skills ran.
172
+ The tool routes don't download the skills: Phase 1 already found or installed `<skill>`. The bundle
173
+ ships a `headless/VERSION` stamp (`version=<semver>` on line 1, then `commit` and `built`); carry the
174
+ version into `connect.json` (Phase 3) so the build report records which skills ran.
149
175
 
150
176
  ## Phase 3 - Write `connect.json`
151
177
 
@@ -37,22 +37,13 @@ no tokens to handle:
37
37
  ```
38
38
 
39
39
  Antigravity loads MCP servers only when the editor starts, so follow *register, restart, resume* in
40
- `connect/SKILL.md`: finish Step 2 and `connect.json`, then ask the user to fully quit and reopen
40
+ `connect/SKILL.md`: write `connect.json`, then ask the user to fully quit and reopen
41
41
  Antigravity and paste the same prompt. Never spawn the server yourself or write a JSON-RPC client to
42
42
  reach it.
43
43
 
44
- ## Step 2 — Install the skills and hand off
44
+ ## Step 2 — Hand off
45
45
 
46
- Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
47
- directly with no further network calls during the run. **Always pull the latest and overwrite any
48
- existing local `headless/` copy** so a run never uses a stale skill version. The repo is **public**, so
49
- fetch just the skill folder over HTTPS — no git, no credentials (see `connect/tools/claude-code.md` for
50
- the full tarball command):
51
-
52
- ```bash
53
- # macOS/Linux — downloads only skills/headless from the public repo
54
- curl -fsSL https://codeload.github.com/hostinger/api-mcp-server/tar.gz/refs/heads/main \
55
- | tar -xz --strip-components=2 'api-mcp-server-main/skills/headless'
56
- ```
57
-
58
- Then read the `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its steps. That skill owns the rest of the run.
46
+ The skills are already in place: Phase 1 of `connect/SKILL.md` found the installed `headless/`
47
+ folder or installed it from the `@hostinger/mcp` release. Don't download them again here. Read the
48
+ `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its
49
+ steps. That skill owns the rest of the run.
@@ -30,27 +30,13 @@ claude mcp add hostinger-ecommerce --scope user -- npx --package=@hostinger/mcp@
30
30
  ```
31
31
 
32
32
  Claude Code loads MCP servers only at startup, so follow *register, restart, resume* in
33
- `connect/SKILL.md`: finish Step 2 and `connect.json`, then ask the user to exit Claude Code, start it
33
+ `connect/SKILL.md`: write `connect.json`, then ask the user to exit Claude Code, start it
34
34
  again in the same folder (`claude`, or `claude --continue` to keep this conversation) and paste the
35
35
  same prompt. Never spawn the server yourself or write a JSON-RPC client to reach it.
36
36
 
37
- ## Step 2 — Install the skills and hand off
38
-
39
- Download the Hostinger skills locally **at the start of every run** so your agent then reads the files directly with no further network calls during the run. **Always pull the latest and let it overwrite any existing local `headless/` folder** — a build must never run on a stale skill copy (an outdated local copy is how a deleted, legacy flow ends up executing). The repo is **public**, so fetch just the skill folder over HTTPS — no git, no credentials:
40
-
41
- ```bash
42
- # macOS/Linux — downloads only skills/headless from the public repo
43
- curl -fsSL https://codeload.github.com/hostinger/api-mcp-server/tar.gz/refs/heads/main \
44
- | tar -xz --strip-components=2 'api-mcp-server-main/skills/headless'
45
- ```
46
-
47
- ```powershell
48
- # Windows PowerShell
49
- curl.exe -fsSL https://codeload.github.com/hostinger/api-mcp-server/tar.gz/refs/heads/main -o headless-skill.tar.gz
50
- tar -xf headless-skill.tar.gz --strip-components=2 'api-mcp-server-main/skills/headless'
51
- ```
52
-
53
- This leaves a local `headless/` folder with the full skill set. The bundle carries a `headless/VERSION` stamp (`version=<semver>`, commit, build date) — after pulling, read it and tell the user which skills version this run uses; it is the value to record in `connect.json`. If the tarball is ever blocked, browse the public folder at `https://github.com/hostinger/api-mcp-server/tree/main/skills/headless` and save each file under a local `headless/` directory, preserving the paths.
54
-
55
- Then open `headless/SKILL.md` and follow the steps on it. That skill owns the rest of the run — it resolves the operations sequence.
37
+ ## Step 2 — Hand off
56
38
 
39
+ The skills are already in place: Phase 1 of `connect/SKILL.md` found the installed `headless/`
40
+ folder or installed it from the `@hostinger/mcp` release. Don't download them again here. Read the
41
+ `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its
42
+ steps. That skill owns the rest of the run.
@@ -36,21 +36,12 @@ args = ["--package=@hostinger/mcp@latest", "hostinger-ecommerce-mcp"]
36
36
  ```
37
37
 
38
38
  Codex loads MCP servers only when it starts, so follow *register, restart, resume* in
39
- `connect/SKILL.md`: finish Step 2 and `connect.json`, then ask the user to restart Codex and paste the
39
+ `connect/SKILL.md`: write `connect.json`, then ask the user to restart Codex and paste the
40
40
  same prompt. Never spawn the server yourself or write a JSON-RPC client to reach it.
41
41
 
42
- ## Step 2 — Install the skills and hand off
42
+ ## Step 2 — Hand off
43
43
 
44
- Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
45
- directly with no further network calls during the run. **Always pull the latest and overwrite any
46
- existing local `headless/` copy** so a run never uses a stale skill version. The repo is **public**, so
47
- fetch just the skill folder over HTTPS — no git, no credentials (see `connect/tools/claude-code.md` for
48
- the full tarball command):
49
-
50
- ```bash
51
- # macOS/Linux — downloads only skills/headless from the public repo
52
- curl -fsSL https://codeload.github.com/hostinger/api-mcp-server/tar.gz/refs/heads/main \
53
- | tar -xz --strip-components=2 'api-mcp-server-main/skills/headless'
54
- ```
55
-
56
- Then read the `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its steps. That skill owns the rest of the run.
44
+ The skills are already in place: Phase 1 of `connect/SKILL.md` found the installed `headless/`
45
+ folder or installed it from the `@hostinger/mcp` release. Don't download them again here. Read the
46
+ `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its
47
+ steps. That skill owns the rest of the run.
@@ -59,7 +59,7 @@ OAuth can run:
59
59
  }
60
60
  ```
61
61
 
62
- Cursor loads MCP servers only when the editor starts, so after Step 2 and Step 3 follow
62
+ Cursor loads MCP servers only when the editor starts, so after Step 2 write `connect.json` and follow
63
63
  *register, restart, resume* in `connect/SKILL.md`: ask the user to fully quit and reopen Cursor
64
64
  (and, if Cursor asks, enable the two Hostinger servers under Settings → MCP), then paste the same
65
65
  prompt. Never spawn the server yourself or write a JSON-RPC client to reach it: every connector call
@@ -100,18 +100,9 @@ npx --yes --package=@hostinger/mcp@latest hostinger-api-mcp --logout
100
100
 
101
101
  **API token (optional, CI / scripts):** set `HOSTINGER_API_TOKEN` in the environment before launching Cursor. When present it always wins and no OAuth code runs. Do not commit the token.
102
102
 
103
- ## Step 3 — Install the skills and hand off
103
+ ## Step 3 — Hand off
104
104
 
105
- Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
106
- directly with no further network calls during the run. **Always pull the latest and overwrite any
107
- existing local `headless/` copy** so a run never uses a stale skill version. The repo is **public**, so
108
- fetch just the skill folder over HTTPS — no git, no credentials (see `connect/tools/claude-code.md` for
109
- the full tarball command):
110
-
111
- ```bash
112
- # macOS/Linux — downloads only skills/headless from the public repo
113
- curl -fsSL https://codeload.github.com/hostinger/api-mcp-server/tar.gz/refs/heads/main \
114
- | tar -xz --strip-components=2 'api-mcp-server-main/skills/headless'
115
- ```
116
-
117
- Then read the `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its steps. That skill owns the rest of the run.
105
+ The skills are already in place: Phase 1 of `connect/SKILL.md` found the installed `headless/`
106
+ folder or installed it from the `@hostinger/mcp` release. Don't download them again here. Read the
107
+ `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its
108
+ steps. That skill owns the rest of the run.
@@ -36,22 +36,13 @@ tokens to handle.
36
36
  ```
37
37
 
38
38
  If the tools still aren't in this session, follow *register, restart, resume* in `connect/SKILL.md`:
39
- finish Step 2 and `connect.json`, then ask the user to restart the Devin session (on Devin Desktop,
39
+ write `connect.json`, then ask the user to restart the Devin session (on Devin Desktop,
40
40
  fully quit and reopen the app) and paste the same prompt. Never spawn the server yourself or write a
41
41
  JSON-RPC client to reach it.
42
42
 
43
- ## Step 2 — Install the skills and hand off
43
+ ## Step 2 — Hand off
44
44
 
45
- Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
46
- directly with no further network calls during the run. **Always pull the latest and overwrite any
47
- existing local `headless/` copy** so a run never uses a stale skill version. The repo is **public**, so
48
- fetch just the skill folder over HTTPS — no git, no credentials (see `connect/tools/claude-code.md` for
49
- the full tarball command):
50
-
51
- ```bash
52
- # macOS/Linux — downloads only skills/headless from the public repo
53
- curl -fsSL https://codeload.github.com/hostinger/api-mcp-server/tar.gz/refs/heads/main \
54
- | tar -xz --strip-components=2 'api-mcp-server-main/skills/headless'
55
- ```
56
-
57
- Then read the `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its steps. That skill owns the rest of the run.
45
+ The skills are already in place: Phase 1 of `connect/SKILL.md` found the installed `headless/`
46
+ folder or installed it from the `@hostinger/mcp` release. Don't download them again here. Read the
47
+ `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its
48
+ steps. That skill owns the rest of the run.
@@ -48,22 +48,13 @@ VS Code picks up new servers and their tools become available right away, with n
48
48
  (Alternatively, the official Hostinger Connector extension installs the same server:
49
49
  `code --install-extension hostinger-official.hostinger-connector`.)
50
50
 
51
- If the tools still don't show up, follow *register, restart, resume* in `connect/SKILL.md`: finish
52
- Step 2 and `connect.json`, then ask the user to run **Developer: Reload Window** and paste the same
51
+ If the tools still don't show up, follow *register, restart, resume* in `connect/SKILL.md`: write
52
+ `connect.json`, then ask the user to run **Developer: Reload Window** and paste the same
53
53
  prompt. Never spawn the server yourself or write a JSON-RPC client to reach it.
54
54
 
55
- ## Step 2 — Install the skills and hand off
55
+ ## Step 2 — Hand off
56
56
 
57
- Download the Hostinger skills locally **at the start of every run** so your agent then reads the files
58
- directly with no further network calls during the run. **Always pull the latest and overwrite any
59
- existing local `headless/` copy** so a run never uses a stale skill version. The repo is **public**, so
60
- fetch just the skill folder over HTTPS — no git, no credentials (see `connect/tools/claude-code.md` for
61
- the full tarball command):
62
-
63
- ```bash
64
- # macOS/Linux — downloads only skills/headless from the public repo
65
- curl -fsSL https://codeload.github.com/hostinger/api-mcp-server/tar.gz/refs/heads/main \
66
- | tar -xz --strip-components=2 'api-mcp-server-main/skills/headless'
67
- ```
68
-
69
- Then read the `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its steps. That skill owns the rest of the run.
57
+ The skills are already in place: Phase 1 of `connect/SKILL.md` found the installed `headless/`
58
+ folder or installed it from the `@hostinger/mcp` release. Don't download them again here. Read the
59
+ `headless/VERSION` stamp (record it in `connect.json`), open `headless/SKILL.md` and follow its
60
+ steps. That skill owns the rest of the run.
@@ -244,7 +244,7 @@ serves the build as plain files over the document root and **overwrites `/cms`**
244
244
  WordPress backend (this is the "accidentally cleared cms" failure). A static-built SPA (Vite/React/Vue)
245
245
  still deploys as `type: "nodejs"` with its `appType` — the framework's static output is served correctly
246
246
  that way, and `/cms` is preserved. If a flow ever tells you to deploy a headless site as `type:
247
- "static"`, you are on a stale/legacy skill copy — stop and re-pull the latest skills.
247
+ "static"`, you are on a stale/legacy skill copy — stop and update the skill (`npx skills update` or the plugin update for an installed skill, or connect's Phase 1 npm install for a web-installed `headless/` folder).
248
248
 
249
249
  `hosting_deploy` on the local server is the only path: give its `path` a local **archive** (`zip`, `tar`,
250
250
  `tar.gz`, `tgz`, `7z`) written outside `~/.hostinger/` as in Step 2. There is no separate upload or