Iron Proxy Gateway for NanoClaw
nanocoai/nanoclaw
Installs or refreshes Iron Proxy and its Iron Control web console for NanoClaw, with a local Docker setup, database, credentials and a human approval bridge.
Search Sutochno.ru (СУТОЧНО.РУ), a Russian short-term apartment-rental platform where you book directly from owners and pay in rubles (Mir card / bank transfer).
$ npx skills add borski/travel-hacking-toolkit --skill sutochno -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install borski/travel-hacking-toolkit sutochno --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/sutochno .claude/skills/sutochno && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sutochno" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/sutochno into .claude/skills/sutochno/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sutochno", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/sutochnoType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add borski/travel-hacking-toolkit --skill sutochno -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install borski/travel-hacking-toolkit sutochno --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/sutochno .agents/skills/sutochno && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sutochno" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/sutochno into .agents/skills/sutochno/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sutochno", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add borski/travel-hacking-toolkit --skill sutochno -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install borski/travel-hacking-toolkit sutochno --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/sutochno .cursor/skills/sutochno && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sutochno" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/sutochno into .cursor/skills/sutochno/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sutochno", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/borski/travel-hacking-toolkit.git --path plugins/travel-hacking-toolkit/skills/sutochno--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add borski/travel-hacking-toolkit --skill sutochno -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install borski/travel-hacking-toolkit sutochno --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/sutochno .gemini/skills/sutochno && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sutochno" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/sutochno into .gemini/skills/sutochno/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sutochno", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install borski/travel-hacking-toolkit sutochnoInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add borski/travel-hacking-toolkit --skill sutochno -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/sutochno .github/skills/sutochno && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sutochno" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/sutochno into .github/skills/sutochno/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sutochno", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add borski/travel-hacking-toolkit --skill sutochno -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install borski/travel-hacking-toolkit sutochno --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/sutochno .opencode/skills/sutochno && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sutochno" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/sutochno into .opencode/skills/sutochno/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sutochno", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sutochnoSearch Sutochno.ru (СУТОЧНО.РУ), a Russian short-term apartment-rental platform where you book directly from owners and pay in rubles (Mir card / bank transfer).
Sutochno is an agent skill from borski/travel-hacking-toolkit. Search Sutochno.ru (СУТОЧНО.РУ), a Russian short-term apartment-rental platform where you book directly from owners and pay in rubles (Mir card / bank transfer). Best for Russian-speaking travellers booking stays in Georgia / the CIS, where Airbnb and Booking have withdrawn or do not accept Russian cards. Sutochno is NOT behind a bot wall — it ships on the toolkit standard patchright-docker base but runs the bundled chromium headless with no Akamai sensor to defeat. Trigger phrases include search Sutochno…
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts (for example `scripts/entrypoint.sh`, `scripts/search_sutochno.py` and `tests/test_search_sutochno.py`).
It sits in DevOps & Cloud, covering Containers. It works with Docker. The repository describes itself as: AI-powered travel hacking and search with cash, points, miles, and award flights. Drop-in skills and MCP servers for Claude, Codex, and OpenCode. The licence is MIT.
Read from SKILL.md and the folder at commit db82131. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 2 files in scripts/ (Python and Shell), which the agent can run.
Shell commands in SKILL.md call:
python3dockerpipFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
tbilisi.sutochno.rukutaisi.sutochno.rubatumi.sutochno.rusutochno.ruFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Sutochno loads about 2.1k tokens when it runs. Until then it costs about 159 tokens; SKILL.md has 855 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from borski/travel-hacking-toolkit at commit db82131, republished under its MIT licence (© borski). 855 words, ~2,109 tokens.
.claude/skills/sutochno/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Search Sutochno.ru (СУТОЧНО.РУ) — a Russian short-term-rental marketplace
where you book apartments, rooms, and houses directly from owners and pay in
rubles, typically via Mir card or bank transfer. It's the natural fit
for Russian-speaking travellers booking stays in Georgia / the CIS, where
Airbnb and Booking have withdrawn or won't take Russian cards. It complements
the Airbnb MCP and the vrbo skill: those reach Western inventory, Sutochno
reaches the ruble-priced, owner-direct inventory those platforms miss.
Sutochno is NOT behind Akamai. Unlike the vrbo skill (which fights an
Akamai bot wall and must run headed), Sutochno's server-rendered city pages
load fine headless — there is no bot sensor to defeat. This skill still ships
on the toolkit's standard patchright-docker base (the same image every
browser skill builds on), but only for the bundled chromium + OS deps; it does
not need Patchright's stealth. Patchright is a drop-in Playwright fork, so the
browser API is identical. The default mode is headless; --headed is opt-in for
debugging.
The JSON API is auth-walled — we scrape pages instead. Sutochno's /api/*
endpoints (e.g. /api/geo/suggest) return 403 Application authentication failed without an app token the SPA computes client-side. So this skill does
not touch the API. It scrapes the server-rendered city pages, where the
listing cards are already present in the HTML.
City results live on SUBDOMAINS. Each city has its own host:
https://tbilisi.sutochno.ru/, https://batumi.sutochno.ru/,
https://kutaisi.sutochno.ru/, etc. The country directory
https://sutochno.ru/georgia lists the supported Georgian cities and links out
to https://{city}.sutochno.ru/<listingId> cards. Pass the city as a
subdomain keyword (--city tbilisi) or a full URL (--url).
No login required. Sutochno search results are public; the skill finds rentals and returns links only — it does not log in or complete a booking.
pip install patchright && patchright install chromiumOr use Docker (no local install):
docker build -t sutochno skills/sutochno/vrbo
skill, and Booking have far deeper inventory and card support — use those.# Tbilisi, human-readable table (headless by default)
python3 skills/sutochno/scripts/search_sutochno.py --city tbilisi
# Batumi, JSON, only 9.0+ rated, under 8000 rubles/night, top 15
python3 skills/sutochno/scripts/search_sutochno.py --city batumi \
--min-rating 9.0 --max-price 8000 --limit 15 --json
# Explicit full URL (e.g. a city page with query filters already applied)
python3 skills/sutochno/scripts/search_sutochno.py \
--url "https://kutaisi.sutochno.ru/" --json
# Docker
docker run --rm sutochno --city tbilisi --json| Flag | Default | Notes |
|---|---|---|
--city | one of city/url required | City subdomain keyword, e.g. tbilisi, batumi. Resolves to https://{city}.sutochno.ru/. |
--url | one of city/url required | Full city URL — use instead of --city to pass a page that already carries query filters. |
--min-rating | 0 | Client-side filter, 0–10 scale (e.g. 9.0). Listings with no rating are kept. |
--max-price | 0 | Client-side per-night ceiling in rubles. Listings with no price are kept. |
--limit | 20 | Max listings returned (after sort). |
--headed | off | Run the browser headed (debugging only — Sutochno has no bot wall, so headless is the default). |
--json | off | Emit JSON to stdout (use this for orchestration). |
On a city page, each listing card exposes:
| Field | Selector | Raw shape | Extraction |
|---|---|---|---|
| name + link | .card-content__object-type (an <a>) | text + href → https://{city}.sutochno.ru/<id> (or /hotels/<id>) | name text; id = trailing digits of href |
| price | .card-prices__price | "4 890 ₽ за сутки" | substring before ₽, strip all non-digits → 4890 |
| rating + reviews | .card-prices__rating | "10 отзывов 9,8 (10) …" | rating = first /\d{1,2},\d/ (comma → dot); reviews = /(\d+)\s*отзыв/ |
| address | .card-content__address | "Тбилиси, Старый город" | as-is |
The card wrapper is the nearest ancestor of the name node that also contains
a .card-prices element — name and prices are siblings, not nested — so the
extractor climbs up from the name link until el.querySelector('.card-prices')
is truthy, then reads price/rating from inside that wrapper.
Price gotcha: the thousands separator in the price string is a mixed-width /
non-breaking space, so a naive \d+ regex truncates the leading digit (returns
890 for 4 890). The reliable method is to split on ₽ then strip all
non-digits — that's what parse_price does.
Images are lazy-loaded placeholders (lzy-img.gif) on first paint, so the
scraper does not rely on photos.
JSON shape (with --json):
{
"source": "sutochno",
"searchUrl": "https://tbilisi.sutochno.ru/",
"query": { "city": "tbilisi", "url": null, "min_rating": 9.0, "max_price": 8000 },
"count": 12,
"listings": [
{
"id": "1234567",
"name": "Уютная студия в центре",
"area": "Тбилиси, Старый город",
"rub_per_night": 4890,
"rating": 9.8,
"reviews": 10,
"url": "https://tbilisi.sutochno.ru/1234567"
}
]
}Listings are deduped by id and sorted rating desc, then price asc (entries
with no rating / price sort last). rub_per_night is the lead nightly rate in
rubles — open the listing URL to confirm the all-in total (cleaning, deposit,
and any owner fees may not be in the SERP figure).
The pure logic (city-URL building, ruble price parsing, rating/review parsing,
listing-id extraction, normalisation, dedupe / filter / sort) is covered by
stdlib unittest tests — no browser, network, or Patchright needed (the
patchright import is lazy):
python3 -m unittest discover -s skills/sutochno/tests -v # or: python3 -m pytest skills/sutochno/testsThe browser-driven path (page navigation, DOM extraction) can't be unit-tested offline — verify it with a real city search (see Usage above).
card-content__* /
card-prices__* class names. If a live search returns 0 cards on a city you
know has inventory, re-inspect a city page and refresh the selectors in
EXTRACT_JS and the selector table above (file a P2 task)./api/* — it needs
the SPA's computed app token and returns 403 Application authentication failed without it. The server-rendered pages are the supported surface.© borski, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts) in plugins/travel-hacking-toolkit/skills/sutochno of borski/travel-hacking-toolkit.
Open the folder on GitHubat commit db82131
Sutochno next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Sutochno this skillborski/travel-hacking-toolkit | 688 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Iron Proxy Gateway for NanoClawnanocoai/nanoclaw | 31k | — | ~4.6k | Automated safety check: Notes | MIT | |
| GreptimeDB Dev Docker ImageGreptimeTeam/greptimedb | 6.7k | — | ~4k | Automated safety check: Notes | Apache-2.0 | |
| Senior DevOps Toolkitmaslennikov-ig/claude-code-orchestrator-kit | 260 | 6 repos | ~1.1k | Automated safety check: Notes | Custom licence | |
| LangBot Deployment Guidelangbot-app/LangBot | 18k | — | ~1.2k | Automated safety check: Notes | Apache-2.0 | |
| Build Openshell Mxc WindowsNVIDIA/OpenShell | 15k | — | ~4.9k | Automated safety check: Pass | Apache-2.0 |
nanocoai/nanoclaw
Installs or refreshes Iron Proxy and its Iron Control web console for NanoClaw, with a local Docker setup, database, credentials and a human approval bridge.
GreptimeTeam/greptimedb
Packages a locally built GreptimeDB debug binary into a development-only Docker image for local-cluster testing, with an optional push to a dev registry.
maslennikov-ig/claude-code-orchestrator-kit
Comprehensive DevOps skill for CI/CD, infrastructure automation, containerization, and cloud platforms (AWS, GCP, Azure). Includes pipeline setup…
langbot-app/LangBot
Deploys and configures a LangBot instance with Docker Compose or Kubernetes, covering config.yaml, the Box sandbox runtime, the plugin runtime and the global API key.
NVIDIA/OpenShell
Maintain and validate OpenShell's build-only Windows MSVC lane for x64 and ARM64.
omnigent-ai/omnigent
Brings up the Omnigent server and Postgres as a Docker compose stack on any Docker host, and covers the Dockerfile's runtime and host build targets for extending it to a new platform.
borski/travel-hacking-toolkit
Search Amex travel portal for cash prices, MR points pricing, IAP discounts, and FHR/THC hotel benefits via Patchright.
borski/travel-hacking-toolkit
Search Chase UR travel portal via Patchright for cash prices, points pricing, Points Boost offers, and Chase Edit hotel benefits.
borski/travel-hacking-toolkit
Deutsche Bahn train schedules, journey planning, and departures across Germany and into neighboring countries (Austria, Switzerland, Netherlands, France, Belgium).
borski/travel-hacking-toolkit
Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright.
borski/travel-hacking-toolkit
Search VRBO (Vrbo / Expedia Group) vacation rentals including entire homes, condos, and cabins via Patchright browser automation.
borski/travel-hacking-toolkit
Check American Airlines AAdvantage balance, elite status, and loyalty points via Patchright.
Works with
Categories
Search Sutochno.ru (СУТОЧНО.РУ), a Russian short-term apartment-rental platform where you book directly from owners and pay in rubles (Mir card / bank transfer). Sutochno is an agent skill from borski/travel-hacking-toolkit.РУ), a Russian short-term apartment-rental platform where you book directly from owners and pay in rubles (Mir card / bank transfer).
Sutochno fits situations like: phrases include search Sutochno; russian apartment rental; tbilisi apartment; batumi apartment.
Run `npx skills add borski/travel-hacking-toolkit --skill sutochno -a claude-code`. Or copy the skill folder (plugins/travel-hacking-toolkit/skills/sutochno in borski/travel-hacking-toolkit) into .claude/skills/sutochno in your project. Claude Code loads it when a task matches its description.
Run `npx skills add borski/travel-hacking-toolkit --skill sutochno -a codex`. Or copy the skill folder (plugins/travel-hacking-toolkit/skills/sutochno in borski/travel-hacking-toolkit) into .agents/skills/sutochno in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add borski/travel-hacking-toolkit --skill sutochno -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sutochno, .gemini/skills/sutochno, .github/skills/sutochno and .opencode/skills/sutochno in your project.
Going by SKILL.md and its folder, Sutochno needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (python3, docker and pip). Our summary lists: Python 3; A Bash shell; Docker.
SKILL.md names 4 domains. In commands or code: tbilisi.sutochno.ru, kutaisi.sutochno.ru, batumi.sutochno.ru and sutochno.ru; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Sutochno is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Sutochno: Iron Proxy Gateway for NanoClaw (nanocoai/nanoclaw, 31k stars), GreptimeDB Dev Docker Image (GreptimeTeam/greptimedb, 6.7k stars), Senior DevOps Toolkit (maslennikov-ig/claude-code-orchestrator-kit, 260 stars) and LangBot Deployment Guide (langbot-app/LangBot, 18k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
borski (a GitHub user) maintains it in borski/travel-hacking-toolkit, which has 688 GitHub stars. The repository holds 46 skills in this directory. The repository was last updated on October 5, 2026.
Source: borski/travel-hacking-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.