Purpose
Take a local codebase or static site and publish it to a production URL with minimal DevOps friction.
Primary outcomes:
- repository created and synced,
- deployment triggered,
- live URL verified,
- custom-domain path documented when requested.
This is an orchestration skill. It does not guarantee uptime/SLA by itself.
Required Installed Skills
Core:
github-api (inspected latest: 1.0.3)
- One deploy path:
vercel (inspected latest: 1.0.1), or
netlify (inspected latest: 1.0.0)
Optional:
domain-dns-ops (inspected latest: 1.0.0, environment-specific)
api-gateway (inspected latest: 1.0.29)
Install/update:
npx -y clawhub@latest install github-api
npx -y clawhub@latest install vercel
npx -y clawhub@latest install netlify
npx -y clawhub@latest install domain-dns-ops
npx -y clawhub@latest install api-gateway
npx -y clawhub@latest update --all
Verify:
npx -y clawhub@latest list
Important name mapping:
- If user says
/netlifly, map it to /netlify.
Required Credentials
Mandatory:
MATON_API_KEY (required for github-api, and for api-gateway routes)
Provider/CLI auth (at least one deploy path):
- Vercel path: logged in
vercel login or VERCEL_TOKEN
- Netlify path: logged in
netlify login or NETLIFY_AUTH_TOKEN
Optional (custom infra through api-gateway):
- active app-specific OAuth connection in Maton control plane (
ctrl.maton.ai)
Preflight:
echo "$MATON_API_KEY" | wc -c
echo "$VERCEL_TOKEN$NETLIFY_AUTH_TOKEN" | wc -c
Mandatory behavior:
- Never fail silently on missing keys/tokens.
- Always return
MissingAPIKeys (or missing auth) with blocked stages.
- Continue with non-blocked stages and mark output as
Partial when needed.
Inputs the LM Must Collect First
project_path
repo_name
repo_visibility (private or public)
deploy_target (vercel or netlify)
framework_hint (optional)
custom_domain (optional)
domain_provider (optional; Cloudflare/Namecheap/etc.)
infra_mode (frontend-static, fullstack-managed, vps-server)
Do not run deployment before deploy target and visibility are explicit.
Tool Responsibilities
github-api
Use for repository bootstrap and remote sync setup:
- create repository (user/org),
- configure visibility,
- store remote URL metadata for subsequent push/deploy linkage.
Operational constraints from inspected skill:
- requires
MATON_API_KEY
- uses Maton-managed OAuth connections
- missing/invalid key leads to auth errors
vercel
Use for managed frontend/fullstack deploy path:
- link project,
- trigger deploy (
vercel / vercel --prod),
- inspect deployment and domain status,
- manage domain attachments when needed.
netlify
Use as alternative managed deploy path:
- site create/link/init,
- CI/CD setup from GitHub,
- manual or prod deploy,
- environment variable and domain/dns capabilities.
domain-dns-ops
Use only when environment matches its assumptions.
Important limitation from inspected skill:
- this skill is documented as environment-specific ("for Peter", source of truth in
~/Projects/manager).
- if that source context does not exist, do not assume it is portable.
api-gateway
Use for optional infra/API-managed operations when connected apps exist.
Operational constraints from inspected skill:
- requires
MATON_API_KEY
- requires active app-specific connection per target service
400 indicates missing app connection
401 indicates missing/invalid Maton key
Capability disclosure:
- inspected list clearly includes Netlify and many SaaS apps.
- DigitalOcean/AWS are not explicitly listed as native app names in the inspected
api-gateway skill index.
- treat VPS/server provisioning via gateway as conditional, not guaranteed.
Canonical Causal Signal Chain
Code Audit
- scan project root for framework markers:
package.json, next.config.*, vite.config.*, index.html, dist/, build/
- classify project type (
Next.js, Vite, static HTML, other)
- determine default build and publish path
Git Inception
- initialize git if needed,
- create remote repository via
github-api,
- set origin, commit, and push branch.
Infrastructure Gate
- present hosting recommendation based on project type:
- Vercel/Netlify for frontend-managed deploy,
- custom infra path only if supported connections exist.
Required gate format:
InfraGateStatus: available or blocked
Reason: missing auth / missing connection / unsupported provider
Action: exact next step
If user asks about provider signup/offers:
- provide neutral official onboarding links only.
Deployment Trigger
- Vercel path: run
vercel link (if needed), then deploy (vercel --prod).
- Netlify path: create/link/init and deploy (
netlify deploy --prod).
Status Monitoring
- poll deploy status/logs until final state:
Ready/success -> proceed,
- failure -> return build error summary + remediation actions.
Domain Wiring
- if custom domain requested:
- attach domain in provider (Vercel/Netlify),
- output required DNS records,
- verify DNS propagation and HTTPS readiness.
Output
- return live URL,
- return domain instructions,
- return CI/CD update path (future pushes redeploy automatically).
Output Contract
Always return:
ProjectDetection
- detected framework
- build/publish assumptions
RepoStatus
- repository URL
- default branch
- push status
InfraGateStatus
- provider selected
- gate status
- blockers and actions
DeploymentStatus
- live URL
- deploy ID/reference
- final state (
ready or failed)
CustomDomainPlan
- required DNS records
- where to set them
- verification checklist
NextActions
- exact command/portal steps if anything remains manual
Quality Gates
Before final output, verify:
- framework detection based on actual files (not guesswork)
- remote repo exists and push path is valid
- deployment URL resolves and status is successful
- custom domain records are explicit and provider-correct
- all missing credentials/connections are disclosed
If any gate fails, return Needs Revision with concrete missing dependencies or errors.
Failure Handling
- Missing
MATON_API_KEY: return MissingAPIKeys, skip github-api/api-gateway stages.
- Missing Vercel/Netlify auth: return missing auth state and provide exact login/token setup steps.
- Git push rejected: keep deployment blocked, return upstream remote/auth error and retry commands.
- Deploy build failed: return build log summary and required fixes.
- Missing domain control: return live platform URL and park custom-domain steps as pending.
- Unsupported VPS provider path in gateway: disclose limitation and provide managed-hosting fallback.
Guardrails
- Never claim deployment success without a reachable URL.
- Never claim custom domain is active before DNS + HTTPS checks pass.
- Never hide provider limitations or auth blockers.
- Keep recommendations bounded to inspected, available integrations.
1---2name: hosting3description: Meta-skill for zero-friction deployment of local web projects to production URLs by orchestrating github-api, vercel/netlify, domain-dns-ops, and api-gateway. Use when users want to make a local site live with SSL, CI/CD, and optional custom domain wiring.4---5
6# Purpose
7
8Take a local codebase or static site and publish it to a production URL with minimal DevOps friction.
9
10Primary outcomes:
111. repository created and synced,
122. deployment triggered,
133. live URL verified,
144. custom-domain path documented when requested.
15
16This is an orchestration skill. It does not guarantee uptime/SLA by itself.
17
18# Required Installed Skills
19
20Core:
21- `github-api` (inspected latest: `1.0.3`)
22- One deploy path:
23 - `vercel` (inspected latest: `1.0.1`), or
24 - `netlify` (inspected latest: `1.0.0`)
25
26Optional:
27- `domain-dns-ops` (inspected latest: `1.0.0`, environment-specific)
28- `api-gateway` (inspected latest: `1.0.29`)
29
30Install/update:
31
32```bash
33npx -y clawhub@latest install github-api
34npx -y clawhub@latest install vercel
35npx -y clawhub@latest install netlify
36npx -y clawhub@latest install domain-dns-ops
37npx -y clawhub@latest install api-gateway
38npx -y clawhub@latest update --all
39```
40
41Verify:
42
43```bash
44npx -y clawhub@latest list
45```
46
47Important name mapping:
48- If user says `/netlifly`, map it to `/netlify`.
49
50# Required Credentials
51
52Mandatory:
53- `MATON_API_KEY` (required for `github-api`, and for `api-gateway` routes)
54
55Provider/CLI auth (at least one deploy path):
56- Vercel path: logged in `vercel login` or `VERCEL_TOKEN`
57- Netlify path: logged in `netlify login` or `NETLIFY_AUTH_TOKEN`
58
59Optional (custom infra through api-gateway):
60- active app-specific OAuth connection in Maton control plane (`ctrl.maton.ai`)
61
62Preflight:
63
64```bash
65echo "$MATON_API_KEY" | wc -c
66echo "$VERCEL_TOKEN$NETLIFY_AUTH_TOKEN" | wc -c
67```
68
69Mandatory behavior:
70- Never fail silently on missing keys/tokens.
71- Always return `MissingAPIKeys` (or missing auth) with blocked stages.
72- Continue with non-blocked stages and mark output as `Partial` when needed.
73
74# Inputs the LM Must Collect First
75
76- `project_path`
77- `repo_name`
78- `repo_visibility` (`private` or `public`)
79- `deploy_target` (`vercel` or `netlify`)
80- `framework_hint` (optional)
81- `custom_domain` (optional)
82- `domain_provider` (optional; Cloudflare/Namecheap/etc.)
83- `infra_mode` (`frontend-static`, `fullstack-managed`, `vps-server`)
84
85Do not run deployment before deploy target and visibility are explicit.
86
87# Tool Responsibilities
88
89## github-api
90
91Use for repository bootstrap and remote sync setup:
92- create repository (user/org),
93- configure visibility,
94- store remote URL metadata for subsequent push/deploy linkage.
95
96Operational constraints from inspected skill:
97- requires `MATON_API_KEY`
98- uses Maton-managed OAuth connections
99- missing/invalid key leads to auth errors
100
101## vercel
102
103Use for managed frontend/fullstack deploy path:
104- link project,
105- trigger deploy (`vercel` / `vercel --prod`),
106- inspect deployment and domain status,
107- manage domain attachments when needed.
108
109## netlify
110
111Use as alternative managed deploy path:
112- site create/link/init,
113- CI/CD setup from GitHub,
114- manual or prod deploy,
115- environment variable and domain/dns capabilities.
116
117## domain-dns-ops
118
119Use only when environment matches its assumptions.
120
121Important limitation from inspected skill:
122- this skill is documented as environment-specific ("for Peter", source of truth in `~/Projects/manager`).
123- if that source context does not exist, do not assume it is portable.
124
125## api-gateway
126
127Use for optional infra/API-managed operations when connected apps exist.
128
129Operational constraints from inspected skill:
130- requires `MATON_API_KEY`
131- requires active app-specific connection per target service
132- `400` indicates missing app connection
133- `401` indicates missing/invalid Maton key
134
135Capability disclosure:
136- inspected list clearly includes Netlify and many SaaS apps.
137- DigitalOcean/AWS are not explicitly listed as native app names in the inspected `api-gateway` skill index.
138- treat VPS/server provisioning via gateway as conditional, not guaranteed.
139
140# Canonical Causal Signal Chain
141
1421. `Code Audit`
143- scan project root for framework markers:
144 - `package.json`, `next.config.*`, `vite.config.*`, `index.html`, `dist/`, `build/`
145- classify project type (`Next.js`, `Vite`, static HTML, other)
146- determine default build and publish path
147
1482. `Git Inception`
149- initialize git if needed,
150- create remote repository via `github-api`,
151- set origin, commit, and push branch.
152
1533. `Infrastructure Gate`
154- present hosting recommendation based on project type:
155 - Vercel/Netlify for frontend-managed deploy,
156 - custom infra path only if supported connections exist.
157
158Required gate format:
159- `InfraGateStatus`: `available` or `blocked`
160- `Reason`: missing auth / missing connection / unsupported provider
161- `Action`: exact next step
162
163If user asks about provider signup/offers:
164- provide neutral official onboarding links only.
165
1664. `Deployment Trigger`
167- Vercel path: run `vercel link` (if needed), then deploy (`vercel --prod`).
168- Netlify path: create/link/init and deploy (`netlify deploy --prod`).
169
1705. `Status Monitoring`
171- poll deploy status/logs until final state:
172 - `Ready`/success -> proceed,
173 - failure -> return build error summary + remediation actions.
174
1756. `Domain Wiring`
176- if custom domain requested:
177 - attach domain in provider (Vercel/Netlify),
178 - output required DNS records,
179 - verify DNS propagation and HTTPS readiness.
180
1817. `Output`
182- return live URL,
183- return domain instructions,
184- return CI/CD update path (future pushes redeploy automatically).
185
186# Output Contract
187
188Always return:
189
190- `ProjectDetection`
191 - detected framework
192 - build/publish assumptions
193
194- `RepoStatus`
195 - repository URL
196 - default branch
197 - push status
198
199- `InfraGateStatus`
200 - provider selected
201 - gate status
202 - blockers and actions
203
204- `DeploymentStatus`
205 - live URL
206 - deploy ID/reference
207 - final state (`ready` or `failed`)
208
209- `CustomDomainPlan`
210 - required DNS records
211 - where to set them
212 - verification checklist
213
214- `NextActions`
215 - exact command/portal steps if anything remains manual
216
217# Quality Gates
218
219Before final output, verify:
220- framework detection based on actual files (not guesswork)
221- remote repo exists and push path is valid
222- deployment URL resolves and status is successful
223- custom domain records are explicit and provider-correct
224- all missing credentials/connections are disclosed
225
226If any gate fails, return `Needs Revision` with concrete missing dependencies or errors.
227
228# Failure Handling
229
230- Missing `MATON_API_KEY`: return `MissingAPIKeys`, skip github-api/api-gateway stages.
231- Missing Vercel/Netlify auth: return missing auth state and provide exact login/token setup steps.
232- Git push rejected: keep deployment blocked, return upstream remote/auth error and retry commands.
233- Deploy build failed: return build log summary and required fixes.
234- Missing domain control: return live platform URL and park custom-domain steps as pending.
235- Unsupported VPS provider path in gateway: disclose limitation and provide managed-hosting fallback.
236
237# Guardrails
238
239- Never claim deployment success without a reachable URL.
240- Never claim custom domain is active before DNS + HTTPS checks pass.
241- Never hide provider limitations or auth blockers.
242- Keep recommendations bounded to inspected, available integrations.