From Dev10x
Root-cause a bug report, question, or unexpected behaviour from a Slack thread — posts a technical reply with GitHub links and creates a Linear ticket when warranted. TRIGGER when: given a Slack URL pointing to a bug report, question, or unexpected behaviour that needs investigation. DO NOT TRIGGER when: no Slack URL provided, issue already root-caused, or user wants to investigate without posting a reply.
npx claudepluginhub dev10x-guru/dev10x-claude --plugin Dev10xThis skill is limited to using the following tools:
**Announce:** "Using Dev10x:investigate to investigate [brief description of the issue]."
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Announce: "Using Dev10x:investigate to investigate [brief description of the issue]."
This skill follows references/task-orchestration.md patterns.
Auto-advance: Complete each step, immediately start the next. Never pause to ask "should I continue?" between steps.
Playbook-driven modes:
references/playbook.yaml play "standard"references/playbook.yaml play "pr-review"REQUIRED: Create tasks before ANY work. Execute TaskCreate
calls at startup based on the detected mode:
Standard mode:
TaskCreate(subject="Parse Slack URL", activeForm="Parsing URL")TaskCreate(subject="Read the thread", activeForm="Reading thread")TaskCreate(subject="Investigate the codebase", activeForm="Investigating")TaskCreate(subject="Verify findings", activeForm="Verifying findings")TaskCreate(subject="Draft the reply", activeForm="Drafting reply")TaskCreate(subject="Post the reply", activeForm="Posting reply")TaskCreate(subject="Create a ticket", activeForm="Creating ticket")TaskCreate(subject="Mention ticket in thread", activeForm="Posting ticket link")Tasks 7–8 are conditional:
fix-warrants-ticket: true when the fix is non-trivial, affects
production/staging, or user explicitly requested a ticketticket-created: true after a ticket is successfully created in Step 7PR review mode:
TaskCreate(subject="Parse Slack URL", activeForm="Parsing URL")TaskCreate(subject="Read the thread", activeForm="Reading thread")TaskCreate(subject="Delegate to PR review", activeForm="Reviewing PR")Set dependencies and update status as each completes.
Given a Slack thread URL, read the report, root-cause it in the codebase, post a technical reply with GitHub links, and optionally create a Linear ticket.
PR review requests: When the Slack thread contains a GitHub PR link and the
request is to review it or check its status, invoke the pr:review skill with
the PR URL instead of following Steps 3–6. Steps 1–2 (parse URL, read thread)
still apply to get context before delegating.
External dependency: pr:review is a user-level skill (installed at
~/.claude/skills/pr-review/). If unavailable, fall back to
Dev10x:gh-pr-review for PR review functionality.
read channel_id thread_ts < <(${CLAUDE_PLUGIN_ROOT}/skills/investigate/scripts/parse-slack-url.sh "<url>")
URL format: https://example.slack.com/archives/<CHANNEL_ID>/p<TIMESTAMP>
Use MCP slack_read_thread with the channel_id and thread_ts.
Read all replies too — the answer may already be in the thread.
Use a Task agent (subagent_type: Explore) with a focused prompt:
For frontend display bugs look at:
formatCurrency, formatDate, etc.)For backend errors look at:
Read the identified files directly to confirm line numbers and exact code before drafting the reply. Wrong line numbers embarrass more than no links at all.
Structure:
[1-sentence root cause summary]
[2-3 sentences of causal chain — backend → API → frontend]
[Fix description: what needs to change and where]
Slack link format: <https://github.com/…/file.ts#L42|filename.ts#L42>
GitHub repo mapping:
| Codebase | Repo |
|---|---|
| app-admin | https://github.com/example-org/example-admin |
| app-pos | https://github.com/example-org/app-pos |
| app-backend | https://github.com/example-org/example-backend |
Use branch develop unless investigating a specific release.
Formatting rules:
[text](url) — use <url|text> instead*bold* (single asterisks), `code`, >quote${CLAUDE_PLUGIN_ROOT}/skills/investigate/scripts/reply.sh "$channel_id" "$thread_ts" "<message>"
Show the draft to the user and wait for approval before posting unless they explicitly said to post immediately (e.g. "investigate and post").
Create a ticket when:
Invoke Dev10x:ticket-create skill with the gathered context.
After ticket creation, post a follow-up reply:
${CLAUDE_PLUGIN_ROOT}/skills/investigate/scripts/reply.sh "$channel_id" "$thread_ts" \
"Logged as <https://linear.app/example/issue/PAY-XXX|PAY-XXX>."
| Mistake | Consequence |
|---|---|
Using [text](url) Slack links | Links render as plain text — no one can click them |
| Posting line numbers without re-reading the file | Wrong line numbers undermine credibility |
| Skipping user approval before posting | Message goes out with errors you can't take back |
| Creating a ticket for a one-liner fix | Ticket noise, distracts the team |
| Not reading thread replies | Duplicating investigation someone already did |
| Using this skill for a Sentry URL with a domain-specific error | This skill is for Slack threads. If the Sentry error is about Square Terminal or payments, use app-debug-payments or app-debug-payments instead — they have pre-built SQL, decision trees, and scripts for those errors |