Publish files and folders to the web instantly. Use when asked to "publish this", "host this", "deploy this", "share this on the web", "make a website", or "put this online". Outputs a live URL at {slug}.here.now.
96
Does it follow best practices?
Validation for skill structure
Skill version: 1.6.4
Publish any file or folder to the web and get a live URL back. Static hosting only.
To install or update (recommended): npx skills add heredotnow/skill --skill here-now -g
For repo-pinned/project-local installs, run the same command without -g.
If npm is unavailable, see fallback install docs: https://here.now/docs#install-skill
curl, file, jq$HERENOW_API_KEY~/.herenow/credentials./scripts/publish.sh {file-or-dir}Outputs the live URL (e.g. https://bright-canvas-a7k2.here.now/).
Under the hood this is a three-step flow: create/update -> upload files -> finalize. A publish is not live until finalize succeeds.
Without an API key this creates an anonymous publish that expires in 24 hours. With a saved API key, the publish is permanent.
File structure: For HTML sites, place index.html at the root of the directory you publish, not inside a subdirectory. The directory's contents become the site root. For example, publish my-site/ where my-site/index.html exists — don't publish a parent folder that contains my-site/.
You can also publish raw files without any HTML. Single files get a rich auto-viewer (images, PDF, video, audio). Multiple files get an auto-generated directory listing with folder navigation and an image gallery.
./scripts/publish.sh {file-or-dir} --slug {slug}The script auto-loads the claimToken from .herenow/state.json when updating anonymous publishes. Pass --claim-token {token} to override.
Authenticated updates require a saved API key.
Pass --client so here.now can track reliability by agent:
./scripts/publish.sh {file-or-dir} --client cursorThis sends X-HereNow-Client: cursor/publish-sh on publish API calls.
If omitted, the script sends a fallback value.
The publish script reads the API key from these sources (first match wins):
--api-key {key} flag (CI/scripting only — avoid in interactive use)$HERENOW_API_KEY environment variable~/.herenow/credentials file (recommended for agents)To store a key, write it to the credentials file:
mkdir -p ~/.herenow && echo "{API_KEY}" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentialsIMPORTANT: Never pass the API key directly in shell commands. Always write it to ~/.herenow/credentials using the command above. This keeps the key out of terminal history and logs.
Never commit credentials or local state files (~/.herenow/credentials, .herenow/state.json) to source control.
After every publish, the script writes to .herenow/state.json in the working directory:
{
"publishes": {
"bright-canvas-a7k2": {
"siteUrl": "https://bright-canvas-a7k2.here.now/",
"claimToken": "abc123",
"claimUrl": "https://here.now/claim?slug=bright-canvas-a7k2&token=abc123",
"expiresAt": "2026-02-18T01:00:00.000Z"
}
}
}Before publishing, you may check this file to find prior slugs for updates.
Treat .herenow/state.json as internal cache only.
Never present this local file path as a URL, and never use it as source of truth for auth mode, expiry, or claim URL.
siteUrl from the current script run.publish_result.* lines from script stderr.publish_result.auth_mode=anonymous.publish_result.claim_url is non-empty and starts with https://..herenow/state.json for claim URLs or auth status.| Anonymous | Authenticated | |
|---|---|---|
| Max file size | 250 MB | 5 GB |
| Expiry | 24 hours | Permanent (or custom TTL) |
| Rate limit | 5 / hour / IP | 60 / hour / account |
| Account needed | No | Yes (get key at here.now) |
To upgrade from anonymous (24h) to permanent publishing:
curl -sS https://here.now/api/auth/agent/request-code \
-H "content-type: application/json" \
-d '{"email": "user@example.com"}'curl -sS https://here.now/api/auth/agent/verify-code \
-H "content-type: application/json" \
-d '{"email":"user@example.com","code":"ABCD-2345"}'apiKey:mkdir -p ~/.herenow && echo "{API_KEY}" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials| Flag | Description |
|---|---|
--slug {slug} | Update existing publish instead of creating |
--claim-token {token} | Override claim token for anonymous updates |
--title {text} | Viewer title (non-site publishes) |
--description {text} | Viewer description |
--ttl {seconds} | Set expiry (authenticated only) |
--client {name} | Agent name for attribution (e.g. cursor) |
--base-url {url} | API base URL (default: https://here.now) |
--allow-nonherenow-base-url | Allow sending auth to non-default --base-url |
--api-key {key} | API key override (prefer credentials file) |
For delete, metadata patch, claim, list, and other operations, see references/REFERENCE.md.
Full docs: https://here.now/docs
7803adb
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.