libtower

A Go package for checking whether network services and hosts are reachable and healthy. It supports TCP, TLS, HTTP, HTTPS certificates, DNS, ICMP ping, and WebSocket checks, including some timing and certificate-expiry results.

In plain words
What is it for?
Use it for port checks, HTTP status checks, HTTP phase timing, TLS client-certificate checks, certificate-expiry warnings, DNS lookups, pings, WebSocket checks, and combined health-check lists.
Why use it?
It puts several kinds of connectivity checks behind one package and a shared checker interface. This avoids needing separate checking code for each network service.

Skill for Claude CodeCodex

Install

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.

agentmods
npx agentmods add skills/mismatched/tower/libtower
Any agent
npx skills add mismatched/tower --skill libtower
Clone the repo
git clone --depth 1 https://github.com/mismatched/tower

Made for: Claude Code, Codex.

Per session 0 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,566 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00000 $0.01566
Opus 5 $0.00000 $0.00783
Sonnet 5 $0.00000 $0.00313
Haiku 4.5 $0.00000 $0.00157

Measured yesterday against content hash 31b2d7d6a979, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

libtower scanned grade A with 0 findings 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 yesterday.

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.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/libtower/SKILL.md · 195 lines

How it starts

The opening of the file, as written. The whole thing — 195 lines — stays where its author put it; the contents beside it link to each section on GitHub.

libtower — Go Network Health Checks

Package: github.com/mismatched/libtower — flat package, no sub-packages.

Quick Reference

Goal Approach
TCP port check &libtower.TCP{URL: u, Timeout: 5*time.Second}TCPPortCheck(ctx)
TLS with client cert Same TCP struct, set CertFile/PrivateKeyFile, call TLSPortCheck(ctx)
HTTP status &libtower.HTTP{URL: url, Method: "GET"}HTTPStatus() or Check(ctx)
Per-phase HTTP timing &libtower.HTTPTrace{URL: url, Method: "GET"}Trace() or Check(ctx)
TLS cert check + expiry &libtower.HTTPS{Host: host, Timeout: 5*time.Second}HTTPSCheck(ctx)
Cert expiry warning Set WarnIfExpiringWithin → check r.Warning after hs.Check(ctx)
DNS resolution libtower.DNSLookup("example.com")
DNS via specific server libtower.DNSLookupFrom("example.com", "8.8.8.8")
ICMP ping libtower.Ping("example.com", 1) — root required
WebSocket &libtower.WebSocket{URL: "ws://...", Timeout: 5*time.Second}WSCheck(ctx)
Composable checks All types implement Checker — iterate []Checker and call Check(ctx)

Conventions

  • Pointer receivers — methods mutate the receiver, populating Start, End, Duration
  • Context — all I/O methods accept context.Context. Short-name wrappers use context.Background(); context-aware variants carry a Context suffix (PingContext, DNSLookupContext, DNSLookupFromContext, HTTPStatusContext, TraceContext)
  • URLs — TCP expects *url.URL with a tcp:// scheme: url.Parse("tcp://example.com:443")
  • Timing — every struct has Start, End, Duration set automatically by the check method

Core Types

Result

type Result struct {
    OK       bool
    Duration time.Duration
    Data     CheckData   // PingData, DNSData, CertData, or nil
    Warning  error       // non-nil on soft warnings (cert expiring)
    Error    error
}

Checker Interface

type Checker interface {
    Check(ctx context.Context) Result
}

Read the full file on GitHub · 195 lines

Changes

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.

  1. yesterday First seen · 195 lines · 0 tokens per session scan A 31b2d7d6a979

Subscribe to this mod's changes

libtower is a skill published in the GitHub repository mismatched/tower (24 stars, last pushed 2mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,566 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

nightly-system-log-review

Review system and application logs for errors/warnings over the last 24 hours, filter known noise, and deliver a consolidated health report via email (AgentMail). Use when running a nightly or periodic system health check, log audit, or error review cron job.

jcrabapple/hermes-skills · 58 tokens

agentic-devops

Production-grade agent DevOps toolkit — Docker, process management, log analysis, and health monitoring. Built by engineers who run production.

cacheforge-ai/cacheforge-skills · 31 tokens

alert-rule-troubleshoot

This skill should be used when the user reports that an alert rule is "not firing", "no alert was sent", "the rule didn't trigger", "the rule isn't working", "it should have alerted but didn't", "why didn't I get an alert", "alert rule not firing", or wants to diagnose why a specific alert rule failed to produce an…

ccfos/nightingale · 129 tokens

generate-message-template

Generate or modify Nightingale (n9e) alert notification message templates. Use when the user asks to write a notification template, change the message format, add hostname/recovery value/severity, or create DingTalk/Feishu/Lark/email/SMS/voice templates.

ccfos/nightingale · 59 tokens

ops-troubleshooting

This skill should be used when the user asks to "troubleshoot", "diagnose", "debug alert", "investigate incident", "locate a fault", "investigate an alert", "diagnose a problem", "fix an issue", "check alerts", "analyze alerts", "root cause analysis", "check metrics", "check logs", or discusses…

ccfos/nightingale · 99 tokens

import-prom-rule

Bulk import of a Prometheus alert rule YAML file (create a whole set of rules at once). Dedicated to handling a remote URL or local YAML text, automatically parsing the three formats groups / a plain rules array / a single rule. ⚠️ Do not use this skill for single-rule creation — when the user describes a single alert…

ccfos/nightingale · 125 tokens