用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/htlin222/dotfiles --skill funnel-config命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
依 ticket/issue 產出初版實作 — 解析需求、從最新 develop 切出符合命名規範的分支、寫出實作、跑既有測試與 lint、conventional commit,然後交棒給 /simplify。Use when the user types /develop, or asks to start implementing a ticket, issue, or feature request end-to-end from requirement to first commit.
Put a website behind a Cloudflare Access (Zero Trust) login gate, or remove one, entirely from the CLI — no dashboard GUI. Use when the user wants to password/email-protect a hostname, gate a Cloudflare Pages or Workers site, restrict a site to specific emails, set up Zero Trust Access, or asks about "cf-gate". Manages Access applications and allow-email policies via the Cloudflare API using a token in the skill's .env. Note: wrangler does NOT manage Access — this uses the Cloudflare REST API directly.
Curate a GitHub repository's wiki (the separate repo.wiki.git) into a coherent, tightly written set of pages: Home, Introduction (project + features), Roadmap, Gotchas/Lessons, Tech Debt, and an Architecture page taught through the book *Head First Software Architecture* — with mermaid diagrams, in the repo's own language and style, then commit and push. Use when the user wants to create, update, curate, or document a GitHub repo's wiki; write or refresh wiki pages; add an architecture / design page to a wiki; enable a wiki; or asks for "/wiki-git". Handles both first-time wikis and updates to existing ones, and can fan out across many repos.
基于 SOC 职业分类
正在显示 SKILL.md
| name | funnel-config |
| description | Manage Tailscale Funnel routes. Use when configuring tunnels or external HTTPS access. |
# Get hostname
tailscale status --json | jq -r '.Self.DNSName' | sed 's/\.$//'
# List all routes
tailscale funnel status
# Check what's listening on which ports
lsof -i -P -n | grep LISTEN | grep -E ':(8080|3000|3030|5000)'
# Root path (only one service can own /)
tailscale funnel --bg <port>
# Sub-path (multiple can coexist)
tailscale serve --bg --set-path /<path> http://localhost:<port>
Rule: Routes coexist. Adding a root route does NOT remove sub-path routes. Adding a sub-path does NOT remove the root route.
# Remove root
tailscale funnel --https=443 off
# Remove a sub-path
tailscale serve --https=443 --set-path /<path> off
After any route change, verify both local and external:
HOSTNAME=$(tailscale status --json | jq -r '.Self.DNSName' | sed 's/\.$//')
# Local
curl -s --max-time 5 http://127.0.0.1:<port>/health
# External (proves funnel works end-to-end)
curl -s --max-time 10 "https://${HOSTNAME}/<path>" -o /dev/null -w "%{http_code}\n"
| Symptom | Cause | Fix |
|---|---|---|
| External returns nothing | Funnel not active | tailscale funnel --bg <port> |
| External returns 502 | Service not running on that port | Start the service, check lsof -i :<port> |
| Route disappeared after restart | Funnel routes persist, but tailscale serve routes may not | Re-add with tailscale serve --bg --set-path ... |
| New route killed existing service | Won't happen — routes coexist | Verify with tailscale funnel status |
| GitHub webhooks not arriving | Hostname mismatch or funnel off | Check tailscale funnel status, compare with webhook URL |