Agent skill

Testing Portal Tunnel Dashboard

by gosuda in gosuda/portal-tunnel

How to drive the portal-tunnel agent dashboard bubbletea TUI end-to-end without a live agent or relay, using a stub control server plus a fabricated agent-endpoint.json.

MITAuto-check passed

Install Testing Portal Tunnel Dashboard

skills CLI
$ npx skills add gosuda/portal-tunnel --skill testing-portal-tunnel-dashboard -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install gosuda/portal-tunnel testing-portal-tunnel-dashboard --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/gosuda/portal-tunnel.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/testing-portal-tunnel-dashboard .claude/skills/testing-portal-tunnel-dashboard && rm -rf skills-src

Use ~/.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/

Facts

Skill name
testing-portal-tunnel-dashboard
GitHub stars
308
Token cost
~1.2k tokens
SKILL.md length
578 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

How to drive the portal-tunnel agent dashboard bubbletea TUI end-to-end without a live agent or relay, using a stub control server plus a fabricated agent-endpoint.json.

  • Works in 5 steps: go build -o /tmp/portal-tunnel… → Write a stub HTTP server that answers… → mkdir -p /tmp/dash-state && printf… → …
  • SKILL.md covers How the dashboard gets its data, Recipe, Driving the TUI and Verifying provider input…, plus 2 more sections
  • Calls make, go and gcloud

What it does

Testing Portal Tunnel Dashboard is an agent skill from gosuda/portal-tunnel. How to drive the portal-tunnel agent dashboard bubbletea TUI end-to-end without a live agent or relay, using a stub control server plus a fabricated agent-endpoint.json.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: Publishes localhost services to the agentic web through self-hostable, trustless relays. The licence is MIT.

Example prompts

  • “/testing-portal-tunnel-dashboard”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. go build -o /tmp/portal-tunnel ./cmd/portal-tunnel
  2. Write a stub HTTP server that answers GET /agent/status with {"ok":true,"data":{...}} containing a fabricated tunnel (id, name, state…
  3. mkdir -p /tmp/dash-state && printf '{"control_addr":"127.0.0.1:PORT","token":"tk"}' > /tmp/dash-state/agent-endpoint.json
  4. Launch on the KDE desktop: DISPLAY=:0 konsole -e /tmp/portal-tunnel agent dashboard --state-dir /tmp/dash-state, then wmctrl -r…
  5. The TUI self-populates on the next poll tick — no restart needed when the stub comes up.

What it can do on your machine

Read from SKILL.md and the folder at commit 2ed87be. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • make
    • go
    • gcloud

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gcloud, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Testing Portal Tunnel Dashboard loads about 1.2k tokens when it runs. Until then it costs about 50 tokens; SKILL.md has 578 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~50
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

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.

Safety

Auto-check passed

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from gosuda/portal-tunnel at commit 2ed87be, republished under its MIT licence (© gosuda). 578 words, ~1,233 tokens.

Download SKILL.mdSave it as .claude/skills/testing-portal-tunnel-dashboard/SKILL.md (or your agent's skills folder).
name
testing-portal-tunnel-dashboard
description
How to drive the portal-tunnel agent dashboard bubbletea TUI end-to-end without a live agent or relay, using a stub control server plus a fabricated agent-endpoint.json.

Testing the portal-tunnel agent dashboard TUI standalone

The portal-tunnel agent dashboard TUI looks like it needs a running agent, but it only needs two things: a state dir containing agent-endpoint.json, and an HTTP server at the endpoint's control_addr that speaks the control API envelope.

How the dashboard gets its data

  • portal-tunnel agent dashboard --state-dir DIR reads DIR/agent-endpoint.json (cmd/portal-tunnel/agent/control.go, endpointFilename = "agent-endpoint.json").
  • The file is {"control_addr":"HOST:PORT","token":"TOKEN"}.
  • Every poll tick it issues GET http://<control_addr>/agent/status with Authorization: Bearer <token> (types.PathAgentStatus).
  • Responses must use the repo's API envelope: {"ok": true, "data": <AgentStatusResponse>}. Returning the raw status object without the envelope yields "Agent unavailable: api response is not ok" in the TUI.
  • AgentStatusResponse / AgentTunnelStatus shapes live in cmd/portal-tunnel/agent/api_types.go (tunnels[].metadata is types.LeaseMetadata).

Recipe

  1. go build -o /tmp/portal-tunnel ./cmd/portal-tunnel
  2. Write a stub HTTP server that answers GET /agent/status with {"ok":true,"data":{...}} containing a fabricated tunnel (id, name, state "running", target_addr, max_active_relays, metadata, relays[]). Other paths can return an error — the TUI only shows them if you trigger an action.
  3. mkdir -p /tmp/dash-state && printf '{"control_addr":"127.0.0.1:PORT","token":"tk"}' > /tmp/dash-state/agent-endpoint.json
  4. Launch on the KDE desktop: DISPLAY=:0 konsole -e /tmp/portal-tunnel agent dashboard --state-dir /tmp/dash-state, then wmctrl -r "portal-tunnel" -b add,maximized_vert,maximized_horz (height matters — settings/add-tunnel rows are clipped to pane height).
  5. The TUI self-populates on the next poll tick — no restart needed when the stub comes up.

Driving the TUI

  • Mouse clicks work (tea.WithMouseCellMotion): clickable regions include section titles, buttons, tunnel/relay rows, and full-width input rows. Clicking an input row focuses that field via agentDashboardActionFocus{Settings,AddTunnel}Field.
  • Keys: left/right cycle panes; tab/down & shift+tab/up cycle fields within add-tunnel and settings panes; esc cancels add-tunnel input; ctrl+c quits.
  • "Add Tunnel" button toggles the form locally (m.addingTunnel) — the 11-row form renders without any backend round-trip.
  • Settings input rows only render when status.tunnels is non-empty and a tunnel is selected — the fabricated status must contain at least one tunnel.
Show full SKILL.md (277 more words)Show less

Verifying provider input validation without credentials

The six portal/acme/* providers (cloudflare, gcloud, hetzner, njalla, route53, vultr) validate method inputs in internal/dnsrecord before hitting the network, and all have exported constructors. A throwaway Go module with replace github.com/gosuda/portal-tunnel/v2 => <repo> can call e.g. p.EnsureARecord(ctx, "", "1.2.3.4") and assert exact error strings ("record name is required", invalid ipv4 address: "...", etc.).

Two providers gate before or right after the input checks:

  • cloudflare checks p.token before validating inputs — construct with any nonempty token (cloudflare.New("tk")) or you get cloudflare token is required instead of the input error.
  • gcloud validates inputs first, then resolves credentials — an invalid input still yields the input error, but the next failure is load gcloud credentials on a machine without ambient ADC, or gcloud project id is required when credentials resolve but carry no project.

Set AWS_EC2_METADATA_DISABLED=true so route53 credential resolution fails fast instead of probing IMDS. Optional stronger check (hits real APIs — skip for offline runs): with a syntactically valid input + fake token, hetzner, njalla, and vultr reach their real HTTP APIs and return 401s — proof inputs traversed the full path.

Repo conventions worth knowing

  • AGENTS.md: run tests only when explicitly requested; CI commands are make vet, make lint, make test.
  • make lint needs golangci-lint + gojgp; both install via make install into ~/go/bin (add /usr/local/go/bin and ~/go/bin to PATH).
  • Scoped testing preferred: go test -v -count=1 ./portal/acme/internal/dnsrecord/ + go test -v -count=1 ./sdk/ -run 'TestMITMProbeDialAddress' rather than the whole suite.

Devin Secrets Needed

None for the above. Real end-to-end DNS provider testing would need live provider credentials/zones (cloudflare token, AWS keys, hetzner/njalla/vultr tokens, GCP service account) plus a test domain — request only if a future change requires true provider round-trips.

© gosuda, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/testing-portal-tunnel-dashboard of gosuda/portal-tunnel.

Open the folder on GitHubat commit 2ed87be

Compare with similar skills

Testing Portal Tunnel Dashboard 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.

Testing Portal Tunnel Dashboard compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Testing Portal Tunnel Dashboard this skillgosuda/portal-tunnel308—~1.2kAutomated safety check: PassMIT
Dashboardasgeirtj/system_prompts_leaks69k—~4.1kAutomated safety check: PassCC0-1.0
DashboardInsForge/InsForge13k—~2.3kAutomated safety check: PassApache-2.0
Live DashboardNousResearch/hermes-agent252k—~2.1kAutomated safety check: PassMIT
Prototype Openclaw Tuiopenclaw/openclaw392k—~1.3kAutomated safety check: PassMIT
Live Dashboardnexu-io/open-design100k—~2.1kAutomated safety check: PassApache-2.0

Similar skills

  • Dashboard

    asgeirtj/system_prompts_leaks

    Use this for a dashboard, metrics page, KPI tracker, scorecard, data visualization or recurring report: a page or scroll story of charts, numbers and tables of data, whatever the data and wherever…

    69k GitHub stars~4.1k tokensUpdated yesterday
    Data & AnalyticsAuto-check passed
  • Dashboard

    InsForge/InsForge

    A skill your agent uses when contributing to InsForge's shared dashboard package.

    13k GitHub stars~2.3k tokensUpdated today
    Frontend & DesignAuto-check passed
  • Live Dashboard

    NousResearch/hermes-agent

    Build self-updating dashboards from live sources. An agent skill from NousResearch/hermes-agent.

    252k GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • Prototype Openclaw Tui

    openclaw/openclaw

    Build throwaway, fixture-driven OpenClaw Clack or Pi TUI prototypes and compare multiple interactive variants side by side in tmux without running the full application or touching live state.

    392k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Live Dashboard

    nexu-io/open-design

    Notion-style team dashboard rendered as a Live Artifact. An agent skill from nexu-io/open-design.

    100k GitHub stars~2.1k tokensUpdated yesterday
    Productivity & AutomationAuto-check passed
  • GitHub Dashboard

    nexu-io/open-design

    GitHub repository analytics dashboard — stars, forks, contributors, issues, pull requests, recent activity, and top contributors.

    100k GitHub stars~1.8k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from gosuda/portal-tunnel

  • Portal Connect

    gosuda/portal-tunnel

    Reach, inspect, or consume a service that someone published through a Portal relay.

    308 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Portal Relay

    gosuda/portal-tunnel

    Set up and run a public Portal relay on any Linux host with a public IP — Docker Compose deployment, embedded authoritative DNS with one-time NS delegation, optional TCP/UDP lease ports for game…

    308 GitHub stars~2.3k tokensUpdated today
    Auto-check: notes
  • Portal Expose

    gosuda/portal-tunnel

    Expose, preview, protect with x402 payments, or keep a local web app, static site, HTTP route set, or explicitly requested TCP/UDP service reachable through Portal, then verify the public endpoint…

    308 GitHub stars~4.3k tokensUpdated today
    Auto-check passed

Questions about Testing Portal Tunnel Dashboard

What does Testing Portal Tunnel Dashboard do?

How to drive the portal-tunnel agent dashboard bubbletea TUI end-to-end without a live agent or relay, using a stub control server plus a fabricated agent-endpoint.json. Testing Portal Tunnel Dashboard is an agent skill from gosuda/portal-tunnel.json.

How do I install Testing Portal Tunnel Dashboard in Claude Code?

Run `npx skills add gosuda/portal-tunnel --skill testing-portal-tunnel-dashboard -a claude-code`. Or copy the skill folder (.agents/skills/testing-portal-tunnel-dashboard in gosuda/portal-tunnel) into .claude/skills/testing-portal-tunnel-dashboard in your project. Claude Code loads it when a task matches its description.

How do I install Testing Portal Tunnel Dashboard in Codex?

Run `npx skills add gosuda/portal-tunnel --skill testing-portal-tunnel-dashboard -a codex`. Or copy the skill folder (.agents/skills/testing-portal-tunnel-dashboard in gosuda/portal-tunnel) into .agents/skills/testing-portal-tunnel-dashboard in your project. Codex loads it when a task matches its description.

Can I use Testing Portal Tunnel Dashboard in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gosuda/portal-tunnel --skill testing-portal-tunnel-dashboard -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/testing-portal-tunnel-dashboard, .gemini/skills/testing-portal-tunnel-dashboard, .github/skills/testing-portal-tunnel-dashboard and .opencode/skills/testing-portal-tunnel-dashboard in your project.

What does Testing Portal Tunnel Dashboard need to run?

Going by SKILL.md and its folder, Testing Portal Tunnel Dashboard needs the command-line tools its instructions call (make, go and gcloud).

Does Testing Portal Tunnel Dashboard access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Testing Portal Tunnel Dashboard safe to install?

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. Review the folder before installing.

What licence does Testing Portal Tunnel Dashboard use?

Testing Portal Tunnel Dashboard is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Testing Portal Tunnel Dashboard use?

About 1.2k tokens (SKILL.md is roughly 4.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Testing Portal Tunnel Dashboard?

Skills that share tags, products or a category with Testing Portal Tunnel Dashboard: Dashboard (asgeirtj/system_prompts_leaks, 69k stars), Dashboard (InsForge/InsForge, 13k stars), Live Dashboard (NousResearch/hermes-agent, 252k stars) and Prototype Openclaw Tui (openclaw/openclaw, 392k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Testing Portal Tunnel Dashboard?

gosuda (a GitHub organization) maintains it in gosuda/portal-tunnel, which has 308 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 10, 2026.

Source: gosuda/portal-tunnel on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.