Tailscale
Open-source agent skills for Claude Code, Claude Cowork, Codex, Cursor, and Gemini CLI. Connect AI agents to Google Analytics, Search Console, and Drive. From Temi (usetemi.com).
npx -y skills add usetemi/skills --skill tailscaleAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use for any Tailscale platform work: tailnets, tailscaled, tailscale CLI, grants and ACLs, MagicDNS, Serve, Funnel, Tailscale Services, app connectors, subnet routers, exit nodes, Tailscale SSH, Kubernetes Operator, containers, tsnet, auth keys, OAuth clients, CI/CD automation, API usage, GitOps policy workflows, connectivity debugging, and production diagnostics.
SKILL.md
5.6 KB, as published. Nobody here has run it
Tailscale Platform
Use this skill for any Tailscale work, from local development connectivity to production tailnet architecture and incident diagnostics.
Tailscale changes quickly. Ground version-sensitive advice in the local CLI and current official docs before making claims about flags, policy syntax, product limits, or Kubernetes CRDs.
First Steps
-
Infer posture from context.
- For personal tailnets, MVPs, local dev, demos, and scrappy startup work, give the fastest viable path first.
- For organizations, production, shared tailnets, sensitive systems, or compliance contexts, use secure-first defaults.
- If the context is unclear and the posture changes commands, exposure, key handling, or access policy, ask before changing state.
-
Inspect local project and system context before prescribing commands.
rg --files -g 'tailnet*.json' -g '*tailscale*' -g 'acl.hujson' -g 'policy.hujson' -g 'docker-compose*.yml' -g 'Dockerfile*' -g '.github/workflows/**' -g 'k8s/**' -g 'helm/**' command -v tailscale tailscale version tailscale --help tailscale <subcommand> --help -
Prefer read-only checks first unless the user explicitly asks to mutate local Tailscale state, tailnet policy, Kubernetes resources, or remote resources.
tailscale status tailscale status --json tailscale netcheck tailscale ping <peer> tailscale dns status tailscale serve status tailscale funnel status -
Use official Tailscale docs as the source of truth. Third-party posts can help discover issues, but do not encode them as facts unless confirmed by official docs or the current CLI.
Reference Routing
- Read
references/policy-security.mdfor grants vs ACLs, policy HuJSON, tags, groups, tests,sshTests, Tailscale SSH, device posture, app capabilities, FunnelnodeAttrs, and Tailnet Lock cautions. - Read
references/routing-connectors.mdfor subnet routers, exit nodes, app connectors, MagicDNS, split DNS, route injection, HA/failover, regional routing, DERP/direct diagnostics,tailscale netcheck,tailscale ping, andtailscale status. - Read
references/expose-services.mdfor Tailscale Serve, Funnel, Tailscale Services, TailVIPs, HTTPS certs, identity headers, app capabilities headers, service config files, drain/advertise flows, TCP/TLS forwarding, and public exposure gotchas. - Read
references/automation-containers.mdfor auth keys, OAuth clients, workload identity federation, ephemeral nodes, GitHub Actions, Docker, userspace networking, serverless patterns,tsnet, API usage, and GitOps policy workflows. - Read
references/kubernetes.mdfor the Tailscale Kubernetes Operator, tags/OAuth prerequisites, ingress, egress, API server proxy, Connector, ProxyGroup, ProxyClass, Recorder, subnet routers, app connectors, version compatibility, and CNI notes. - Read
references/production-diagnostics.mdfor production review checklists, least privilege, key expiry, device approval, logs, network flow logs, audit logs, webhooks/log streaming, update policy, incident diagnostics, and safe read-only commands.
Defaults
- For new access policy, prefer grants. Use legacy ACLs only when maintaining an existing ACL-only policy or when the needed behavior is not yet expressible in grants.
- Treat
tailscale upflags as a complete desired state. To change one preference, prefertailscale setwhen available. - Keep route advertisement, route approval, client route acceptance, and access policy separate in explanations. Routing makes paths reachable; policy decides who may connect.
- Treat auth keys, OAuth client secrets, and generated auth keys as secrets. Prefer tagged, ephemeral, short-lived, scoped automation identities.
- For public exposure, make the Serve vs Funnel boundary explicit: Serve is tailnet-private; Funnel is internet-public.
- Use dry runs, status commands, policy tests, and local config inspection before changing production tailnets.
Gotchas To Surface Early
tailscale upwith flags requires the complete set of desired settings; an omitted setting can trigger an error or reset only with--reset.- Grants are preferred for new policy, but existing tailnets may still use ACLs.
- Subnet routes, exit-node routing, app connector route injection, and access rules are separate control layers.
- Serve and Funnel cannot both own the same node, DNS name, and port combination as private and public exposure at the same time.
- Auth keys expire; connector or automation key expiry can fail closed.
- MagicDNS and split DNS behavior depends on resolver setup and platform DNS integration.
- DERP relay use is a performance and reachability fallback, not plaintext traffic. Tailscale traffic remains WireGuard-encrypted between nodes.
Output Style
When answering Tailscale tasks, include:
- The fastest viable path.
- The security hardening path when relevant.
- Exact commands, policy shape, Kubernetes manifests, or API calls.
- The gotchas checked and any remaining risk.
Downrank dashboard-only instructions, stale CLI flags, broad tailnet access, and long-lived reusable keys unless the user explicitly asks for them.