Installation
Install GoVisit once, then use any of its 22 available skills in your favourite AI tool.
1. Open your project
Open the project where you use your AI tool. Run the commands below in its terminal, or ask your AI tool to run them for you. You will need the selected AI tool installed. The npm-based Codex and GitHub Copilot CLI installers require Node.js and npm; GitHub Copilot requires Node.js 22 or later. The portable installer requires Node.js 22.20 or later and npm.
2. Choose your AI tool
Select one tab and follow its instructions. These commands install All, the complete set of 22 public read skills.
The GoVisit source commands use the repository's current main branch; use a reviewed release tag when you need a reproducible version pin.
Claude Code
If you do not have Claude Code installed, first install its CLI. Anthropic recommends the native installer for macOS, Linux, and WSL. On Windows, use the official installation guide.
curl -fsSL https://claude.ai/install.sh | bash
claude --version
claude plugin marketplace add inhotel-io/govisit-toolkit
claude plugin install govisit@govisit-toolkit --scope project
The native plugin makes GoVisit skills available to Claude Code in this project. You can ask for a skill in natural language.
Codex
# Install or upgrade the Codex CLI
npm install -g @openai/codex@latest
# Add the GoVisit marketplace and plugin
codex plugin marketplace add inhotel-io/govisit-toolkit --ref main
codex plugin add govisit@govisit-toolkit
Ask Codex to use the installed GoVisit skills. Start a new session if it needs to refresh its skill list.
GitHub Copilot
npm install -g @github/copilot
npx skills add inhotel-io/govisit-toolkit --skill '*' --agent github-copilot
Choose your installation scope when prompted. On first launch, run copilot and sign in with /login; run copilot update to update the CLI later. GitHub also provides Homebrew, WinGet, and install-script options in its Copilot CLI installation guide. Then use Copilot in agent mode. See GitHub’s skills guide if the skills do not appear.
Cursor
# macOS, Linux, or Windows Subsystem for Linux
curl https://cursor.com/install -fsS | bash
agent --version
# Install GoVisit skills
npx skills add inhotel-io/govisit-toolkit --skill '*' --agent cursor
On native Windows, run irm 'https://cursor.com/install?win32=true' | iex in PowerShell instead. Choose your installation scope when prompted, then ask Cursor Agent to use GoVisit. Cursor CLI auto-updates; run agent update to update it manually. See Cursor CLI installation and Cursor’s skills guide if the skills do not appear.
Other
npx skills add inhotel-io/govisit-toolkit --skill '*'
Select your AI tool and installation scope when prompted. Use a tool that supports Agent Skills and can make HTTP requests. If your tool is not listed, follow its own skill installation guide using the toolkit’s skill files.
Install a smaller selection instead
Start with All if you are unsure. For a smaller native Claude Code or Codex plugin, replace govisit@govisit-toolkit in the selected command with one of these:
| Selection | Plugin name | Skills |
|---|---|---|
| Travel Planner | govisit-travel-planner@govisit-toolkit | 18 |
| Destination | govisit-destination@govisit-toolkit | 13 |
| Local Business | govisit-local-business@govisit-toolkit | 10 |
For a single portable skill, replace '*' in the selected portable command with its name, such as govisit-search-places. Audience selections reuse some of the same skills; you do not need to install overlapping copies.
3. Try your first skill
Start a new session if your AI tool needs to refresh discovery. Then ask:
Search GoVisit for places in Czechia where travelers can actively participate in immersive experiences such as regional festivals, traditional craft workshops, historical preservation sites, and local food traditions.
For your own business, try:
Use GoVisit to find [business name and city]. Analyze the profile details and suggest concrete updates to position our hotel as the ideal nature retreat for families with young children.
Return to Find a skill for more example tasks. Public reads require no GoVisit API key; your AI tool may ask for network permission. Reading a profile does not grant editing rights.
Updates, removal, and troubleshooting
Installed skills are snapshots. Portable users can run npx skills check and npx skills update; native users use their AI tool’s plugin update commands. For a pinned Codex release, follow the tested update instructions.
Remove skills through the same installer or AI tool that installed them. Check its actual installed paths before removing shared copies. See update, removal, and diagnostic guidance and the compatibility record for tested clients and known limitations.
Manual downloads and verification
Most people can use the installer above. For a manual installation, the discovery index lists versioned GitHub Release archives and SHA-256 digests. Verify the original downloaded bytes, then install the complete skill directory with its LICENSE, SKILL.md, and references/contract.json together. Do not rename its existing govisit- name. A collection archive is not a universal skill-upload format.
The Python example installs govisit-search-places into a new local directory. Use the corresponding entry from the index for another skill, and your AI tool’s documented skill location.
Example: fetch, verify, and unpack with Python 3
This example verifies the downloaded archive before writing its complete files to a new local skill directory. Point your host at that directory or use its configured project skill location. Use the installer for updates to an existing installation.
from hashlib import sha256
from io import BytesIO
import json
from pathlib import Path
import re
import tarfile
from urllib.request import Request, urlopen
request_headers = {"User-Agent": "GoVisitToolkit/0.2.0 (+https://github.com/inhotel-io/govisit-toolkit)"}
with urlopen(Request("https://govisit.ai/.well-known/agent-skills/index.json", headers=request_headers), timeout=30) as response:
index = json.load(response)
skill = next(item for item in index["skills"] if item["name"] == "govisit-search-places")
if not re.fullmatch(r"govisit-[a-z0-9]+(?:-[a-z0-9]+)*", skill["name"]):
raise ValueError("Invalid skill name")
if not skill["url"].startswith("https://github.com/inhotel-io/govisit-toolkit/releases/download/"):
raise ValueError("Unexpected package source")
with urlopen(Request(skill["url"], headers=request_headers), timeout=30) as response:
archive_bytes = response.read(10 * 1024 * 1024 + 1)
if len(archive_bytes) > 10 * 1024 * 1024:
raise ValueError("Archive exceeds the download limit")
if "sha256:" + sha256(archive_bytes).hexdigest() != skill["digest"]:
raise ValueError("Archive digest differs from the discovery index")
expected = {"LICENSE", "SKILL.md", "references/contract.json"}
with tarfile.open(fileobj=BytesIO(archive_bytes), mode="r:gz") as archive:
members = archive.getmembers()
if len(members) != len(expected) or {m.name for m in members} != expected:
raise ValueError("Unexpected archive contents")
if any(not m.isfile() or m.size > 2 * 1024 * 1024 for m in members):
raise ValueError("Unsafe or oversized archive entry")
files = {m.name: archive.extractfile(m).read() for m in members}
header = "---\nname: " + json.dumps(skill["name"]) + "\n"
if not files["SKILL.md"].decode("utf-8").startswith(header):
raise ValueError("Package identity differs from the discovery index")
target = Path("skills") / skill["name"]
target.mkdir(parents=True, exist_ok=False)
for name, contents in files.items():
destination = target / name
destination.parent.mkdir(parents=True, exist_ok=True)
destination.write_bytes(contents)