Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add jellydn/my-ai-tools --skill portless-localgit clone --depth 1 https://github.com/jellydn/my-ai-toolsWrote 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/jellydn/my-ai-tools/portless-local)<a href="https://agentmods.dev/skills/jellydn/my-ai-tools/portless-local"><img src="https://agentmods.dev/badge/skills/jellydn/my-ai-tools/portless-local/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/jellydn/my-ai-tools/portless-local"><img src="https://agentmods.dev/badge/skills/jellydn/my-ai-tools/portless-local.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 5 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Privilege Escalation · line 32 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
- high Privilege Escalation · line 325 Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.Fix: Remove references to credential paths. Use environment variables or secrets managers. For docs, use placeholder paths (e.g., /path/to/config). Never load .env or token files in production code paths.
- medium Prompt Injection · line 71 Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.Fix: Remove the large whitespace padding (blank-line blocks or long space runs) and review any content hidden below or to the right of it. Keep skill files compact and reviewable so no instructions can be
- medium Privilege Escalation · line 339 Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.Fix: Avoid sudo/root unless strictly required. Prefer least-privilege patterns. If elevation is needed, document the justification and scope.
- medium Privilege Escalation · line 407 Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.Fix: Avoid sudo/root unless strictly required. Prefer least-privilege patterns. If elevation is needed, document the justification and scope.
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.00016 | $0.04860 |
| Opus 5.5 | $0.00006 | $0.01944 |
| Sonnet 5.5 | $0.00003 | $0.00972 |
| Haiku 4.5 | $0.00002 | $0.00486 |
Grade B, and why
portless-local scanned grade B 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 20d 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.
Asks for rootmediumPrivilege escalation
A mod that escalates privileges can change anything on the machine, not only the project.
5. Auto-elevates with sudo on macOS/Linux for port binding How it starts
The opening of the file, as written. The whole thing — 486 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Portless - Named .localhost URLs
Replace port numbers with stable, named .localhost URLs for local development. For humans and agents.
Note: The portless CLI enables HTTPS on port 443 by default (
https://myapp.localhost). Pass--no-tlstoportless proxy start, or setPORTLESS_HTTPS=0, for plain HTTP. Keep HTTPS when the app needs OAuth, secure cookies, or HTTP/2.
Safety and Approval
Read existing proxy configuration before starting an app: auto-start reuses saved settings, including LAN mode. Outside LAN mode the proxy binds only to IPv4/IPv6 loopback; LAN mode binds all interfaces.
Ask for explicit approval before first-run sudo/elevation, CA trust-store changes, /etc/hosts writes, LAN exposure, Tailscale sharing, public Funnel/ngrok tunnels, startup-service installation/removal, or destructive cleanup. A request for local development does not authorize these actions. Use PORTLESS_SYNC_HOSTS=0 when hosts writes are not approved. In non-interactive environments, first-run prompts fail rather than granting permission; pre-start only an approved proxy configuration.
--force kills the existing process and takes over its route. prune terminates orphaned process groups, and prune --force uses SIGKILL. Do not use them without checking ownership and approval. clean also removes startup services and trust entries; it is not routine project cleanup.
Never print or commit TLS private keys or ngrok tokens. Let the user configure authentication through the provider's private credential workflow. Do not disable TLS verification to resolve proxy errors.
Why Portless?
Local dev with port numbers is fragile. Portless fixes that by giving each dev server a stable, named .localhost URL.
| Problem | With Ports | With Portless |
|---|---|---|
| Port conflicts | Two projects on :3000 = EADDRINUSE | Auto-assigned ports, named URLs - no collisions |
| Memorizing ports | "Was the API on 3001 or 8080?" | Always https://api.localhost |
| Wrong app on refresh | Stop one server, start another on same port = confusion | Named URLs eliminate this |
| Monorepo chaos | Every service needs a unique port | Distinct hostnames for each service |
| Agent confusion | AI agents guess/hardcode wrong ports | https://myapp.localhost is deterministic |
| Cookie/storage clashes | Cookies bleed across ports on localhost | Each .localhost subdomain gets its own scope |
| Hardcoded config | CORS, OAuth, .env break when ports change | URLs are stable across restarts |
| Sharing URLs | "What port is that on?" in Slack | Everyone uses the same named URL |
| Browser history | localhost:3000 history is a jumble |
Named URLs keep things organized |
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.
- 20d ago Changed · +51 lines 29ca0404c06b
- 21d ago Changed · -2 lines f7a8cd818655
- 1mo ago First seen · 437 lines · 16 tokens per session scan B 53a9ea01e891
portless-local is a skill published in the GitHub repository jellydn/my-ai-tools (124 stars, last pushed today), licensed MIT. It adds 16 tokens to every session and 4,860 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it B with 1 finding (asks for root). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
ask-first
A decision guide for handling unclear requests before taking action. It uses one focused question or probe when the requested goal, context, or boundaries are not clear.
insight-miner
A manually triggered writing guide that turns notes, debugging records, design summaries, code snippets, or rough drafts into Chinese technical blog posts. It first identifies and evaluates possible article topics before writing.
book-recommender
A Chinese-language book recommendation and analysis skill that evaluates what books are about, whether they are worth reading, and how to read them.
notes-to-blog
A manually triggered guide for turning technical notes and rough material into a Chinese programming blog post. It first extracts and evaluates the main transferable idea, then writes the article after the user confirms its direction.
wisdom-decoder
A guided explanation skill for ideas from Buddhism, philosophy, and psychology. It presents a chosen topic in everyday language and connects it to practical actions, sources, and perspectives from other fields.
teach-me
A five-step teaching workflow for introducing an unfamiliar topic and guiding the learner toward applying it. It moves from an example and explanation to supported practice and an independent task.