service-debug
Diagnose Service connectivity issues (empty Endpoints, selector mismatch, port mismatch, no backend pods).
Skill by scitix
Chalk Labs
Need help deploying service-debug?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/scitix-service-debug
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: backend
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/service-debug
What's inside
- Skill name
service-debug- Description
- Diagnose Service connectivity issues (empty Endpoints, selector mismatch, port mismatch, no backend pods). Checks Service, Endpoints, and target pods to identify why traffic is not reaching backends.
- License
- Apache-2.0
- Instructions
- 160 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Service Connectivity Diagnosis
When a Service is unreachable, returns connection refused, or has no backends, follow this flow to identify the root cause.
**Scope:** This skill is for **diagnosis only**. Once you identify the root cause, report it to the user and stop. Do NOT attempt to modify the Service, Endpoints, or pod specs — that should be left to the user.
## Diagnostic Flow
### 1. Check the Service
```bash
kubectl get svc <service> -n <ns> -o wide
```
Confirm the Service exists and note:
- **TYPE** — ClusterIP, NodePort, LoadBalancer, or ExternalName
- **CLUSTER-IP** — should not be `None` unless it is a headless service
- **PORT(S)** — the port(s) the Service exposes
- **SELECTOR** — the label selector used to find backend pods
### 2. Check Endpoints
```bash
kubectl get endpoints <service> -n <ns>
```
- If `ENDPOINTS` column shows `<none>` or is empty, no pods match the Service's selector — go to step 3.
- If endpoints exist, note the IPs and ports — go to step 4.
For more detail (including `notReadyAddresses`):
```bash
kubectl describe endpoints <service> -n <ns>
```
### 3. Investigate selector and pods
The Service's selector must match labels on running, ready pods.
Get the Service selector:
```bash
kubectl get svc <service> -n <ns> -o jsonpath='{.spec.selector}'
```
List pods that match the selector:
```bash
kubectl get pods -n <ns> -l <key>=<value> -o wide
```
(Replace `<key>=<value>` with each selector pair from the previous command.)
If no pods match:
- The selector may be wrong (typo, outdated label)
- The pods may be in a different namespace
- The pods may not exist yet
If pods exist but none are `Ready`:
- Pods may be starting, crashing, or failing readiness probes
- Use `pod-crash-debug` or check readiness probes
### 4. Check port configuration
Verify that the Service port, targetPort, and the container's actual listening port all align.
```bash
kubectl get svc <service> -n <ns> -o jsonpath='{range .spec.ports[*]}port={.port} targetPort={.targetPort} protocol={.protocol}{"\n"}{end}'
```
```bash
kubectl get pod <backend-pod> -n <ns> -o jsonpath='{range .spec.containers[*].ports[*]}containerPort={.containerPort} protocol={.protocol}{"\n"}{end}'
```
The Service's `targetPort` must match one of the container's `containerPort` values (or the named port). If they don't match, traffic will be sent to the wrong port.
Note: if the container does not declare `containerPort`, the traffic may still work — `containerPort` is informational. The real check is whether the application is actually listening on the `targetPort`.
### 5. Match patterns and conclude
---
#### Endpoints empty — No pods match selector
The Service has no endpoints because no running, ready pods match its label selector.
Possible causes:
- **Selector mismatch** — the Service selector labels don't match the pod labels (typo or outdated after a rename)
- **No pods exist** — the backing Deployment/StatefulSet has 0 replicas or hasn't been created
- **Pods not ready** — pods exist but are failing readiness probes, so they are excluded from Endpoints
Advise the user to compare the Service selector with the pod labels and ensure pods are running and ready.
---
#### `Connection refused` — Port mismatch or application not listening
Endpoints exist, but connections to the Service are refused.
- The Service `targetPort` may not match the port the application is actually listening on
- The application may not have started yet or may have crashed
Check the application logs:
```bash
kubectl logs <backend-pod> -n <ns> --tail=50
```
---
#### Service type `ExternalName` not resolving — DNS-based service issue
ExternalName services return a CNAME record. If the target hostname is unreachable or doesn't resolve, the service will appear broken.
```bash
kubectl get svc <service> -n <ns> -o jsonpath='{.spec.externalName}'
```
Verify the external name resolves from within the cluster (see `dns-debug` skill).From scitix/siclaw, Apache-2.0.
More from scitix/siclaw
- 0.752score
node-logs
scitix
Retrieve logs from a Kubernetes node — systemd units (journalctl) or files under /var/log.
SkillBFreshness: B★ 238Claude Code +9 - 0.752score
gateway-diagnostics
scitix
Show and ping the gateway of a network interface, on a Kubernetes node or inside a pod's network namespace.
SkillBFreshness: B★ 238Claude Code +9 - 0.752score
http-log-stats
scitix
Count HTTP status codes and request-duration distribution from an ingress controller's access log, over a fixed time window, in one pass.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
volcano-queue-diagnose
scitix
Diagnose Volcano Queue status and resource allocation.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
volcano-diagnose-pod
scitix
Diagnose Volcano-managed Pod scheduling issues.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
cluster-events
scitix
Analyze cluster-wide Kubernetes events to identify issues and patterns.
SkillBFreshness: B★ 238Claude Code +9 - 0.747score
manage-skill
scitix
Guides the user to the Siclaw Web page to manage Skills.
SkillBFreshness: B★ 238Claude Code +9 - 0.747score
volcano-resource-insufficient
scitix
Resource shortage diagnostic guide for Volcano.
SkillBFreshness: B★ 238Claude Code +9 - 0.747score
quota-debug
scitix
Diagnose Kubernetes native ResourceQuota and LimitRange admission rejections (exceeded quota, forbidden by LimitRange, FailedCreate).
SkillBFreshness: B★ 238Claude Code +9 - 0.747score
volcano-gang-scheduling
scitix
Gang Scheduling diagnostic guide for Volcano.
SkillBFreshness: B★ 238Claude Code +9 - 0.746score
volcano-job-diagnose
scitix
Diagnose Volcano Job status and issues.
SkillBFreshness: B★ 238Claude Code +9 - 0.746score
volcano-node-resources
scitix
Query cluster node resources for Volcano scheduling.
SkillBFreshness: B★ 238Claude Code +9
Signals
- Stars
- 238
- Forks
- 32
- Open issues
- 16
- Last commit (this folder)
- Mar 13, 2026 (7 months ago)
- Last release
- Sep 14, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/scitix/siclaw
- Website
- siclaw.ai
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from scitix
- 0.752score
node-logs
scitix
Retrieve logs from a Kubernetes node — systemd units (journalctl) or files under /var/log.
SkillBFreshness: B★ 238Claude Code +9 - 0.752score
http-log-stats
scitix
Count HTTP status codes and request-duration distribution from an ingress controller's access log, over a fixed time window, in one pass.
SkillBFreshness: B★ 238Claude Code +9 - 0.752score
gateway-diagnostics
scitix
Show and ping the gateway of a network interface, on a Kubernetes node or inside a pod's network namespace.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
volcano-diagnose-pod
scitix
Diagnose Volcano-managed Pod scheduling issues.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
cluster-events
scitix
Analyze cluster-wide Kubernetes events to identify issues and patterns.
SkillBFreshness: B★ 238Claude Code +9 - 0.749score
volcano-queue-diagnose
scitix
Diagnose Volcano Queue status and resource allocation.
SkillBFreshness: B★ 238Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get service-debug running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
service-debug skill. Agent Mart. https://agentmart.dev/skills/scitix-service-debug (last updated 2026-10-24)