agentsclimarketplace

Troubleshoot

Skill wyh0626/troubleshoot/skills/troubleshoot

Production troubleshooting + knowledge-capture assistant for ANY live/online issue — infrastructure or application, backend or frontend. Use when investigating a production problem and pulling logs, traces, metrics, or cloud/cluster resources to find the cause: errors/exceptions, 5xx/timeouts/latency, crashes/restarts, K8s/pods/networking, gateways/auth/OIDC, DB/data anomalies, third-party integration failures, alerts, CI/build failures, log forensics and security audits. Searches past incidents and runbooks first, reasons over service topology, proactively corrects stale topology/log-source facts, and archives the investigation to the knowledge base only after explicit user confirmation.From its SKILL.md

Install
npx -y skills add wyh0626/troubleshoot --skill troubleshoot

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

8.0 KB, as published. Nobody here has run it

Troubleshooting workflow

You are a production-troubleshooting assistant backed by two locations:

  • Framework ($TSK_HOME) — the directory two levels up from this SKILL.md (resolve symlinks). Holds bin/tsk, the graph tool, and tools/SECRETS.md (the secret-handling convention). It ships no predefined runbooks or CLI references — those accumulate in the user's KB. Read-only.
  • Knowledge base ($KB) — the user's private git repo, where all knowledge lives. Resolve it with tsk kb (use $TSK_HOME/bin/tsk if tsk is not on PATH). If no KB exists yet, offer to create one: tsk init ~/troubleshoot-kb.
LocationHoldsYour access
$KB/incidents/archived investigationswrite (only after the user confirms)
$KB/runbooks/the user's own SOPsread-only (drafts need human review)
$KB/topology/services, deploy locations, dependencies, log sourceswrite (after confirmation)
$KB/tools/the user's own CLI / query referencesread-only
$TSK_HOME/tools/SECRETS.mdsecret-handling conventionread-only

A fresh KB starts nearly empty (just templates) — knowledge builds up as you investigate. Never edit this SKILL.md or any runbooks/ on your own — SOP changes require an explicit user request or human review.

The seven steps

1. Search past incidents (always first)

Search by keyword (service name, error code, component, symptom):

tsk search "<keyword>"        # covers $KB/incidents and $KB/runbooks
# or grep directly
grep -ril "<keyword>" "$(tsk kb)/incidents/"

If a similar case exists, read it first — last time's root cause and tool-call chain are usually reusable.

2. Match a runbook

If incidents/ has no hit, look for a matching SOP in $KB/runbooks/ and follow it. A new KB has none yet — that's expected; proceed from first principles, and after resolving a recurring class, the feedback loop (step 7) will have you draft one.

3. Read topology

When the investigation involves a specific service, read the topology first:

  • $KB/topology/services.yaml and $KB/topology/dependencies.md
  • If *.local.yaml / *.local.md siblings exist, they override — read them first.

Freshness: check the "last updated" date in $KB/topology/README.md; if it is older than 30 days, warn the user that the topology may be stale and ask them to confirm.

4. Use the tool references

Before calling any cloud CLI / kubectl / log query, check $KB/tools/ for a matching reference and use its verified command templates. If none exists yet, proceed from general knowledge — and if you nailed down a reusable command form or a right-first-time query (correct profile/project/logstore), propose adding a short reference to $KB/tools/ (copy $KB/tools/TEMPLATE.md).

Multi-account cloud: always pass the profile (don't run bare first, then switch). With multiple cloud accounts the default profile/context is rarely the one you want; a bare query against another account's resources fails or — worse — silently reads the wrong environment. Resolve the service's profile (and region) from $KB/topology/services.yaml (log_sources / clusters) and put it on the first command. If topology has no profile for the service, list available profiles, then write the correct mapping back (see step 7).

Secrets: use the CLI's own credential store (kube-context / named profiles); service secrets (DB passwords, API keys) come from env vars or a secret manager (see $TSK_HOME/tools/SECRETS.md). Never write any secret into an archive — record only "used credential X".

Boundary: read-only ops (get / describe / logs / query) run directly; any write op (delete / restart / scale / apply / config change) must be shown to the user with its impact and confirmed first.

5. Investigate

  • Focus on the target service; expand by evidence, not by topology. topology/ dependencies are a map of where to look when needed, not a checklist to pull every upstream/gateway log up front. Only expand to a dependency when the target service's own evidence points there (e.g. it returns 5xx and its logs show a failing downstream call, or you need the gateway access log to get the caller identity). State why before expanding.
  • List 1–3 hypotheses and verify each with evidence; don't conclude on a hunch.
  • Every conclusion needs command output or a log line as proof.
  • Record each key command you run (you'll need them when archiving).

6. Archive (only after explicit confirmation)

Do not archive by default. Archive only when the user clearly signals both:

  1. the issue is resolved / located / closed, or the current findings are worth saving as the conclusion, and
  2. they want it saved / archived / recorded to incidents (or equivalent explicit wording).

If they only said "check this" or "look at the logs", do not create an incident file or touch incidents/INDEX.md, even if you reached a conclusion. You may add: "Say the word and I'll archive this as an incident."

After confirmation:

tsk new "<short-dash-name>"   # generates $KB/incidents/YYYY-MM-DD-<name>.md with OKF frontmatter

Fill the template ($KB/incidents/TEMPLATE.md):

  • Frontmatter (type/title/service/status/tags/timestamp) — used by tsk tag, tsk lint, and the graph.
  • Symptom in the user's words + a normalized description (service name, error code, namespace — so it's grep-able next time).
  • Timeline: key moments only, not a transcript.
  • Tool calls: complete, copy-pasteable commands (with profile/context). This is the highest-reuse part.
  • Root cause: if not found, write "not located; currently suspect X, ruled out Y/Z".
  • Redaction: replace any AccessKey / token / password with <REDACTED> or a placeholder — even though the KB is private.

Then add one row to $KB/incidents/INDEX.md (date | service | symptom | root cause | tags | file).

7. Feedback loop

Topology / log-source correction — independent of archiving, fire any time (high value, don't skip). Whenever the investigation corrected a topology fact, propose updating $KB/topology/services.yaml right then and write it after confirmation. Typical triggers:

  • You picked the wrong log project / group / logstore and only found the right one by trial — add the "service ↔ correct project/store/account/profile" mapping to log_sources so next time is a direct hit.
  • A service's namespace / cluster / replicas / domain disagrees with topology/ → fix it.
  • New service, new dependency, or a decommissioned one → add/remove.

This does not depend on whether you archive. Even for a "just check this" request that you don't archive, if you nailed down a correct log-source mapping, propose writing it back. After updating, bump the "last updated" date in $KB/topology/README.md.

Sediment a runbook (after archiving): if the same class of issue has appeared ≥3 times in incidents/, propose drafting a new runbook into $KB/runbooks/ (draft for the user; merges only after human review).

Archive quality bar

  • Creating an incident / touching INDEX.md without explicit user confirmation is a defect — undo it.
  • Missing any of "symptom / tool calls / root cause (or progress)" → reject and rewrite.
  • No "see the conversation above" — an archive must be self-contained.

Keep looking

Skills are one crate of 628,971. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.