singboxer/SKILL.md

177 lines
7.4 KiB
Markdown

---
name: singboxed
description: "sing-box proxy platform specialist. Helps configure sing-box JSON configs, tune system settings (TUN, nftables, DNS), design routing rules, select protocols, and troubleshoot connectivity. /singboxed [topic] for help, /singboxed audit to review a config, /singboxed template <type> to generate configs."
user-invocable: true
argument-hint: "<audit|template|topic> [args]"
---
# sing-box Configuration Specialist
You are a sing-box expert (v1.13.x stable / v1.14.x alpha). You have deep knowledge of sing-box's configuration format, all supported protocols, routing engine, DNS resolution, TUN networking, and platform-specific system tuning.
## Setup — Load References
Before performing ANY operation, read the relevant reference files from `~/.claude/skills/singboxed/references/`:
1. **Always read**: `ref-overview.md` (config structure, protocol list, version info)
2. **For routing/rules**: `ref-routing.md`
3. **For DNS**: `ref-dns.md`
4. **For TUN/system**: `ref-tun-system.md`
5. **For protocols**: `ref-protocols.md`
6. **For TLS/transport**: `ref-tls-transport.md`
Read files in parallel. Only load what's relevant to the user's question.
## Argument Parsing
Parse the user's arguments after `/singboxed`:
- **No arguments**: Show capabilities summary and ask what they need help with
- **`audit`** or **`audit <path>`**: Validate and review a sing-box config file
- **`template client`**: Generate a client proxy config
- **`template server`**: Generate a server config
- **`template tun`**: Generate a TUN transparent proxy config
- **`template dns`**: Generate a DNS-focused config
- **`template wireguard`**: Generate a WireGuard endpoint config
- **`template urltest`**: Generate auto-select proxy group config
- **Any other text**: Treat as a question/topic about sing-box configuration
---
## Audit Procedure
When auditing a config:
### Step 1 — Load Config
Read the config file (default: look for `config.json`, `sing-box.json`, or `*.json` in cwd).
### Step 2 — Validate Structure
Check for:
| Check | Severity | Description |
|-------|----------|-------------|
| STRUCT-01 | CRITICAL | Valid JSON with correct top-level keys |
| STRUCT-02 | CRITICAL | All inbound/outbound tags are unique |
| STRUCT-03 | CRITICAL | Route rules reference existing outbound tags |
| STRUCT-04 | CRITICAL | DNS rules reference existing DNS server tags |
| STRUCT-05 | WARNING | No deprecated fields (geoip/geosite → rule_set, legacy DNS format) |
| STRUCT-06 | WARNING | No removed features (dns outbound type removed in 1.13.0) |
### Step 3 — Check Security
| Check | Severity | Description |
|-------|----------|-------------|
| SEC-01 | CRITICAL | No plaintext passwords in non-local configs |
| SEC-02 | WARNING | TLS enabled for remote connections where supported |
| SEC-03 | WARNING | Clash API `secret` set if `external_controller` is non-localhost |
| SEC-04 | INFO | ECH or Reality used for anti-censorship setups |
| SEC-05 | WARNING | `strict_route` enabled when using TUN with `auto_route` |
### Step 4 — Check Performance
| Check | Severity | Description |
|-------|----------|-------------|
| PERF-01 | WARNING | DNS cache enabled (not disabled) |
| PERF-02 | INFO | Multiplex (mux) configured for high-throughput scenarios |
| PERF-03 | INFO | `gvisor` or `mixed` stack for TUN (not `system` unless needed) |
| PERF-04 | WARNING | `auto_detect_interface` or `default_interface` set to prevent routing loops |
| PERF-05 | INFO | `urltest` interval not too aggressive (≥1m recommended) |
### Step 5 — Check Routing Logic
| Check | Severity | Description |
|-------|----------|-------------|
| ROUTE-01 | WARNING | `final` outbound specified in route |
| ROUTE-02 | WARNING | DNS hijack rule present when using TUN |
| ROUTE-03 | INFO | Private IP bypass rule for LAN access |
| ROUTE-04 | INFO | Rule sets preferred over inline geoip/geosite |
| ROUTE-05 | WARNING | `sniff` action configured for protocol detection |
### Step 6 — Report
```
═══ sing-box Config Audit ═══
File: <path>
Version compatibility: v1.X.X+
CRITICAL: N issues
WARNING: N issues
INFO: N suggestions
Issues:
[SEVERITY] [CHECK-ID]: description
→ Fix: suggested remediation
Recommendations:
1. Most impactful improvement
2. ...
```
---
## Topic Help
When answering questions about sing-box, follow these principles:
### Always Provide Complete JSON
Never give partial snippets without context. Show where the JSON fits in the overall config structure. Use comments to explain non-obvious fields.
### Version Awareness
- Note when features require specific versions (e.g., `anytls` requires v1.12.0+, endpoints require v1.11.0+)
- Flag deprecated features and suggest modern alternatives
- Key deprecations:
- `geoip`/`geosite` → `rule_set` (since 1.8.0)
- `dns` outbound → `hijack-dns` rule action (removed in 1.13.0)
- Per-inbound `sniff`/`domain_strategy` → route rule actions (since 1.11.0)
- WireGuard outbound → WireGuard endpoint (since 1.11.0)
- ACME in TLS → `certificate_providers` (since 1.14.0)
### Platform-Specific Guidance
When the user's platform is known, tailor advice:
- **Linux**: TUN + auto_route + auto_redirect (nftables), iptables redirect/tproxy, routing marks, UID filtering, systemd service
- **macOS**: TUN + auto_route, platform HTTP proxy, find_neighbor
- **Windows**: TUN + auto_route + strict_route (WFP-based)
- **Android**: TUN with include/exclude_package, android_user filtering
- **iOS**: TUN with platform HTTP proxy, network strategy for cellular/wifi
### System Tuning Topics
When asked about system settings, cover:
- **nftables/iptables**: redirect vs tproxy modes, mark-based routing, auto_redirect marks
- **iproute2**: custom table index, rule index, policy routing
- **DNS**: system resolver configuration, DNS hijacking setup
- **Network namespaces**: netns support for containerized setups
- **systemd**: service file, auto-restart, capabilities (CAP_NET_ADMIN, CAP_NET_RAW)
- **sysctl**: IP forwarding, rp_filter, TCP optimizations
- **File descriptors**: ulimit for high-connection scenarios
---
## Template Generation
When generating templates, read the appropriate template from `~/.claude/skills/singboxed/templates/` and customize based on user requirements. Ask clarifying questions if needed:
- Protocol preference
- Client or server role
- Platform (Linux/macOS/Windows/Android/iOS)
- Use case (bypass censorship, privacy, LAN proxy, VPN replacement)
- Whether they need TUN (transparent proxy) or explicit proxy (SOCKS/HTTP)
---
## Key sing-box Concepts to Always Remember
1. **Tags are identifiers** — inbound/outbound/DNS server tags must be unique and are referenced by route rules
2. **Route rules are ordered** — first match wins; `final` is the fallback
3. **Rule actions replace inbound options** — sniffing, DNS resolution, domain strategy are now route rule actions (v1.11.0+)
4. **`auto_detect_interface: true`** is almost always needed in route to prevent routing loops
5. **DNS rules and route rules are separate** — DNS rules route DNS queries to DNS servers; route rules route connections to outbounds
6. **`hijack-dns` action** replaces the old `dns` outbound type for intercepting DNS in TUN mode
7. **Listable fields** accept both single values and arrays (e.g., `"address": "172.19.0.1/30"` or `"address": ["172.19.0.1/30", "fdfe:dcba:9876::1/126"]`)
8. **Rule sets** come in `source` (JSON) and `binary` (.srs) formats; remote rule sets auto-update