Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add technicalpickles/pickled-claude-plugins/plugin install tailscaleWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/technicalpickles/pickled-claude-plugins/tailscale-serve-patterns)<a href="https://agentmods.dev/skills/technicalpickles/pickled-claude-plugins/tailscale-serve-patterns"><img src="https://agentmods.dev/badge/skills/technicalpickles/pickled-claude-plugins/tailscale-serve-patterns/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/technicalpickles/pickled-claude-plugins/tailscale-serve-patterns"><img src="https://agentmods.dev/badge/skills/technicalpickles/pickled-claude-plugins/tailscale-serve-patterns.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00218 | $0.02386 |
| Opus 5.5 | $0.00087 | $0.00954 |
| Sonnet 5.5 | $0.00044 | $0.00477 |
| Haiku 4.5 | $0.00022 | $0.00239 |
Grade A, and why
tailscale-serve-patterns scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
A security/doctor check that inspects `gateway.bind` (or equivalent app-level config) and calls it safe because it says `127.0.0.1` has no visibility into what's *actually* reachable: Docker's `-p` publish flag can expos How it starts
The opening of the file, as written. The whole thing — 72 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Tailscale Serve Patterns
Overview
Two ways to make a local service reachable over a tailnet, with very different security properties: bind loopback-only and let tailscale serve proxy HTTPS in front of it, or bind the process directly to the tailnet interface address. For CLI mechanics (commands, Services vs. node-serve, troubleshooting serve status), see the tailscale-cli skill instead — this skill is about which exposure shape to choose and what it implies for auth.
The two binding patterns
Loopback bind + tailscale serve |
Direct bind to tailnet interface | |
|---|---|---|
| What's exposed | 127.0.0.1:<port> only; serve proxies HTTPS at <host>.<tailnet>.ts.net |
Plain HTTP directly at the tailnet IP (e.g. 100.x.y.z:<port>) |
| Auth | Tailscale itself is the gate — only tailnet members can reach the hostname at all; TLS terminated by tailscaled |
None unless the app adds its own — anyone on the tailnet who knows the IP:port can hit it over unencrypted HTTP |
| Setup cost | One extra tailscale serve mapping to create/tear down |
Zero extra config — just bind a different address |
| Failure mode if misconfigured | Hitting <tailnet-hostname>:<port> directly (skipping the proxy) fails, because the app only bound loopback — this is expected, not a bug |
A stray bind flag or default (0.0.0.0 instead of 127.0.0.1) silently widens exposure to the whole tailnet with no signal |
Default to loopback + serve. It's the pattern used across this project's homelab services (bind 127.0.0.1:<port>, expose via host tailscaled + Services) and what the crit review tool's own auto-mode classifier treats as the expected, low-friction path. Direct tailnet-interface binding is the exception, appropriate for short-lived single-user sessions (e.g. "review this on my phone for the next ten minutes, I'm the only one on this tailnet") — treat it as something that needs an explicit, conscious opt-in (a flag like --allow-unauthenticated-network), not a default.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +18 lines · +103 tokens per session aa691989458b
- 1mo ago First seen · 54 lines · 115 tokens per session scan A 7713fb02dadd
tailscale-serve-patterns is a skill published in the GitHub repository technicalpickles/pickled-claude-plugins (11 stars, last pushed yesterday), licensed MIT. It adds 218 tokens to every session and 2,386 once invoked, about $0.0009 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-05.
Other skills, from other repositories
create-workflow-aspire
Creates a Dapr workflow app with .NET Aspire, run locally through the Aspire AppHost. Use for "create a workflow with Aspire" or "build a workflow app with .NET Aspire". For Diagrid Catalyst use the catalyst-ai plugin.
latchbio-integration
Builds, registers, debugs, and operates bioinformatics workflows on Latch using the Python SDK, CLI, Latch Data and Registry, Nextflow, Snakemake, programmatic execution, and Latch MCP. Use when authoring or deploying Latch workflows, configuring resources or interfaces, moving data, integrating Registry, or launching…
add-vercel
Add Vercel deployment capability to NanoClaw agents. Installs the Vercel CLI in agent containers and sets up OneCLI credential injection for api.vercel.com. Use when the user wants agents to deploy web applications to Vercel.
django-storages-s3
Use when configuring Django to store static and media files on AWS S3 with django-storages. Invoke when working with the STORAGES setting, S3 buckets, presigned URLs, CloudFront, or boto3-backed file storage in settings.py. Configures the Django 4.2+ STORAGES dict, public/private custom backends, presigned GET/POST…
terraform-engineer
Use when implementing infrastructure as code with Terraform across AWS, Azure, or GCP. Invoke for module development (create reusable modules, manage module versioning), state management (migrate backends, import existing resources, resolve state conflicts), provider configuration, multi-environment workflows, and…
websocket-engineer
Use when building real-time communication systems with WebSockets or Socket.IO. Invoke for bidirectional messaging, horizontal scaling with Redis, presence tracking, room management.