Explain any reference as a zero-context story with citations and call-path tracing. Use when the user shares a Jira ticket, GitHub PR or issue, Sentry error, Slack thread, URL, blog post, design doc, RFC, or LLD and wants to understand it. Also trigger on phrases like "explain this", "walk me through", "what does this PR do", "why is this failing", "what is this ticket about", "trace this call", or any time the user pastes a link or issue key expecting an explanation. Always fetch the source before explaining — never guess from partial text.
Explain any reference as a story that builds from zero context — not a technical dump. Think senior dev explaining to a first-week intern.
This skill runs on the same decode/encode duality as create-tech-doc:
The story arcs below are the decode map. The "each chapter earns the next" rule is the encode constraint.
Always retrieve the content before explaining. Never guess from partial text in the chat.
| Source type | How to fetch |
|---|---|
| Jira ticket / URL | Atlassian MCP tools (getJiraIssue) |
| GitHub PR / issue | GitHub MCP tools |
| Sentry error | Sentry MCP tools |
| Any URL (blog, doc, Slack archive, tweet) | WebFetch / curl |
| Local file in codebase | Read the file path directly |
Use when the source is a Sentry error, a failing CI check, an incident report, or a bug ticket.
Each chapter earns the next. Never jump to root cause without establishing "normal" first. Never jump to solutions without establishing context first.
Use when the source is describing something new being built or proposed.
Each chapter earns the next. Don't explain the mechanism before the reader understands the problem it's solving.
Every claim needs a reference. No unsourced assertions.
startLine:endLine:filepath — include the snippet inline so the user can navigate directlyThe expected behaviour / fix / next steps quote is mandatory. If the source doesn't state one, say so explicitly — don't invent it.
When the user asks "where is this called?" or "when does this run?":
entrypoint → intermediate calls → target methodPOST /apply → ApplyView → ApplyObject.submit_job() → validate_answers() → check_custom_rules()
Never answer with isolated snippets — always connect them into one runtime story.
Before sending, verify:
If any is "no", fix it first.
See the examples/ files in this skill directory for reference explanations: