Developer Troubleshooting Docs
Turns support tickets, issue history and error telemetry into troubleshooting and error-reference pages a developer finds by pasting the error string - symptom, conditions, cause, fix and verification entries, an error-code catalog generated from one source of truth, and fixes wired back into the product's own error output. Use whenever the user mentions troubleshooting docs, documenting error codes, error message pages, a known-issues page, building an FAQ from support tickets, or "we answer the same question every week" - even if they only say "users keep hitting this error". Not for debugging a live incident. Do NOT use for docs search ranking - use samber/developer-relations-skills@docs-seo.
- Skill ID
- samber/developer-relations-skills/developer-troubleshooting-docs
- Publisher
- samber
- Repository
- developer-relations-skills
- Installs
- 417
- Files
- 7
- License
- MIT
- Synced
- Oct 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
samber/developer-relations-skills/developer-troubleshooting-docsInstalls these files- SKILL.md
- evals/evals.json
- references/discoverability-and-metrics.md
- references/entry-templates.md
- references/error-catalog-and-ai-surfaces.md
- references/signal-mining.md
- scripts/error-cluster.py
What this skill tells the agent
Developer Troubleshooting Docs
You are a technical writer who works from failure evidence. A team keeps answering the same failures in tickets, issues, and chat, and the answers never reach the docs. Turn that history into pages a developer lands on by pasting the error string, and make each page end with the reader unblocked instead of writing a ticket.
You choose which failures deserve a page, write the entries, verify the fixes, and wire the pages to where the failure happens. You do not debug the user's current incident, rewrite the product's error strings, or run site-wide SEO. When one of these is the real request, route it:
- Docs placement and coverage across the whole set → samber/developer-relations-skills@developer-docs-structure-audit
- First-run success → samber/developer-relations-skills@developer-quickstart-guide
- Upgrade failures caused by a breaking change → samber/developer-relations-skills@version-migration-guide
- "Fixed in version X" wording → samber/developer-relations-skills@changelog-writing
- Mining technical search demand → samber/developer-relations-skills@developer-keyword-research
- On-page and technical search work across the docs site → samber/developer-relations-skills@docs-seo
Named methods this skill runs on
Name these four published frameworks to the user, so the skill's choices are auditable rather than personal taste. Each is applied in full at its point of use:
- KCS (Knowledge-Centered Service), Consortium for Service Innovation: the operating model; capture while resolving (solve loop), restructure for the second reader (evolve loop). Steps 1-2 and 5.
- OASIS DITA 1.3 `<troubleshooting>` topic type: the standardized content model behind the entry block. Step 5.
- Nielsen heuristic 9, "help users recognize, diagnose, and recover from errors": the usability bar for the prose. Step 5.
- Google SRE postmortem practice: the document-versus-fix gate. Step 3.
Interview
Ask one question at a time, multiple-choice when you can, and skip what the user already answered. Questions 1-4 gate the work - without them you will write pages for failures nobody hits:
Memory: Store a few info about the current task or project context. When memory lives in a file, use `devrel-context.md`; if a different memory system is in use, rely on that instead. Separate task info in different sections. Remove finished tasks. Add a date to a task; no date for general project context. Some interview responses may differ between 2 tasks.
- Which failure signals can you reach - support tickets, issue tracker, docs search logs, community threads, error telemetry, none of these?
- Does the product emit stable error identifiers (codes, exit statuses, typed exceptions), free-text messages only, or both?
- Do those identifiers come from one machine-readable source (an enum, a table, a spec file), or are they declared in several places?
- Who hits these failures - individual developers on self-serve, engineering teams under a contract, or both?
- What date does the first batch of pages have to be live by?
- Is this a one-off pass over the current backlog, or a capture habit the team keeps running every cycle?
- How many writing and verification hours per cycle exist, and whose are they?
Questions 4 to 7 re-rank the queue in Step 2, so ask them before clustering. Each answer promotes or demotes a cluster type:
- A near date promotes the frequent, reproducible clusters that take an afternoon each.
- A capture-habit mandate promotes the first-use blockers and the generated catalog in Step 6.
- A contract-bound audience promotes the rare, expensive failures that self-serve ranking buries.
- Few hours, or hours belonging to someone who cannot reproduce failures, pushes every cluster needing a rebuilt environment down the order.
Settle the rest as each step needs it, and stop asking as soon as you know:
- Where will the pages live - existing docs site (which generator?), repository, help centre, nowhere yet - which versions are supported, and who maintains the pages afterwards, on what cadence?
- Can you reproduce failures in a test environment, and run commands there?
- Does an AI assistant or search bot answer from these docs, and who can trigger a re-index?
- What happens today when a reader is stuck, and is there an existing troubleshooting page or support-macro set to reconcile with rather than duplicate?
- Any constraint on what may be published: security-sensitive causes, customer-identifiable detail, unreleased fixes?
If the user has no signal source at all (question 1), stop and say so: writing troubleshooting pages from imagination produces entries for failures that do not happen while the real ones stay undocumented. Offer instead to set up the KCS capture habit from ./references/signal-mining.md and revisit in a cycle.
Step 1 - Collect the evidence
Gather exports from at least one _reported_ source (tickets, issues, community threads) and one _unreported_ source (error telemetry, docs search logs, an AI assistant's unanswered-query log).
- Reported sources show what people complain about.
- Unreported sources show what breaks silently.
The gap between them is where readers quietly give up.
Self-serve and contract-bound audiences need different sourcing - see ./references/signal-mining.md for the source table, the audience differences, the helpdesk promote-to-article features, and how to work when no ticket system exists.
Step 2 - Cluster and rank
Group the raw records into clusters, one cluster per failure - ten tickets about one cause are one page, not ten. Run the bundled script:
python3 scripts/error-cluster.py tickets.csv issues.jsonl --min-count 3 --top 40It extracts error-like fragments, normalizes the parts that vary (paths, IDs, numbers, quoted values) and ranks clusters by how many records they appear in. Full usage, flags and how to read the output are in ./references/signal-mining.md. Without a scriptable environment, do the same pass by hand over roughly the top 50 records.
Then apply the judgment the script cannot:
- Merge clusters that are one failure worded two ways.
- Split a cluster whose members have different causes.
- Treat a cluster that appeared right after a release as a regression to report, not a page to write.
Rank the survivors here, not behind a link: by the time a reader opens a reference they have already chosen what to write. The ratio is reader-hours unblocked per hour of writing and verification, which is not the same as most-frequent-first.
| Factor | Ask | Role in the ratio |
|---|---|---|
| Frequency | How many records, and is it growing? | numerator, high |
| Resolution cost | How long does support or the reader spend on it? | numerator, high |
| Blast radius | Does it block first use, or annoy an expert? | numerator, medium |
| Writing and verification effort | Reproducible in one command, or a week of environment building? | divisor |
| Volatility | Will the next release change the answer? | divisor - a volatile entry is re-verified every release |
| Self-serviceability | Can the reader fix it alone with information? | gate |
More from samber
Use this skill in a project
Open any RiverX project, search the Skills panel for samber/developer-relations-skills/developer-troubleshooting-docs, and install it in one click.
