apply-turbo-handoffs
Audit the turbo skill lessons that /self-improve writes into this repo's .turbo/handoff/ from other projects, apply the ones the…
Systematically investigate bugs, test failures, build errors, performance issues, or unexpected behavior by cycling through characterize-isolate-hypothesize-test steps. Use when the user asks to \"investigate this bug\", \"debug this\", \"figure out why this fails\", \"find the
Claude Code
$ npx -y skills add tobihagemann/turbo --skill investigate --agent claude-code
Codex
$ npx skills add tobihagemann/turbo --skill investigate -a codex -y
Cursor
$ npx skills add tobihagemann/turbo --skill investigate -a cursor -y
Gemini CLI
$ npx skills add tobihagemann/turbo --skill investigate -a gemini-cli -y
GitHub Copilot
$ npx skills add tobihagemann/turbo --skill investigate -a github-copilot -y
OpenCode
$ npx skills add tobihagemann/turbo --skill investigate -a opencode -y
Windsurf
$ npx skills add tobihagemann/turbo --skill investigate -a windsurf -y
name: investigate description: "Find the root cause of bugs, test failures, build errors, or performance issues by testing hypotheses. Use when the user asks to \"investigate this bug\", \"debug this\", or \"find the root cause\"."
Systematic methodology for finding the root cause of bugs, failures, and unexpected behavior. Cycle through characterize-isolate-hypothesize-test steps, with oracle escalation for hard problems. Diagnose the root cause — do not apply fixes.
Optional: `$ARGUMENTS` contains the problem description or error message.
Gather the symptom and establish what is actually happening:
1. **Collect evidence** — error message, stack trace, test output, log entries, or user description of unexpected behavior 2. **Classify the problem type**:
| Signal | Type | |--------|------| | Stack trace / exception | Runtime error | | Test assertion failure | Test failure | | Compilation / bundler / build error | Build failure | | Type checker error (tsc, mypy, pyright) | Type error | | Slow response / high CPU / memory growth | Performance | | "It does X instead of Y" / no error | Unexpected behavior |
3. **Establish reproduction** — run the failing command, test, or operation, and confirm its output shows the reported symptom rather than a neighboring failure. When no command at hand shows the symptom, build one, trying whichever of these fit, in this order:
Reproduction is established when one command has been run and its output shows the reported symptom. Record that command and its output for verification. For intermittent or long-running reproductions, use the Monitor tool to tail logs filtered for relevant signals (errors, stack traces, specific identifiers) so failures surface live while you work.
When neither the failing command nor any reproduction built from the list above shows the symptom, output what was tried and what each attempt showed. Then use `AskUserQuestion` to offer three ways forward, and act on the answer:
Cut the reproduction down in a throwaway copy, leaving the working tree and its git index unchanged. Remove inputs, configuration, data, callers, and steps, halving what remains before cutting single elements. Re-run after each cut and restore a cut that makes the symptom disappear. Stop when removing any remaining element makes the symptom disappear, or once the reproduction runs quickly and its remaining elements can be named. Record the minimal command alongside the original, with what was cut, then delete the copy and report anything that could not be deleted. The original stays the report's reproduction command. **Skip** when the reproduction is a single test or command with nothing left to remove, when each run is slow or intermittent, or when no reproduction exists.
Narrow from "something is wrong" to "the problem is in this area." Read [references/problem-type-playbooks.md](references/problem-type-playbooks.md) for type-specific first moves and tool sequences.
For all problem types, check what changed recently near the failure point:
git log --oneline -20 -- <file> git blame -L <start>,<end> <file>
If a known-good state exists (e.g., "this worked yesterday"), consider `git bisect` to pinpoint the breaking commit.
When the problem description names a version, tag, or build that differs from the ref under investigation, resolve it to a ref and read what changed on the failing path between the two before generating hypotheses:
git diff <reported-ref>..HEAD -- <failing-path-files>
Read the full diff rather than its `--stat` summary. Carry each difference that could produce the symptom forward as a ranked hypothesis.
When the failure surfaces inside a third-party dependency, search its issue tracker for a distinctive string from the error before reading deeper into the dependency's code. An issue whose symptom matches often names the cause and the fix outright. Carry a match forward as a ranked hypothesis and test it.
Reusable workflows for planning, building, reviewing, and shipping with Claude Code and Codex.
Audit the turbo skill lessons that /self-improve writes into this repo's .turbo/handoff/ from other projects, apply the ones the…
Apply findings by making the suggested code changes. Applies accepted verdicts, escalates ambiguous findings to the user, and…
Assess project-wide structural technical debt: complexity hotspots, deprecated API usage, duplication clusters, architecture rot,…
Shared changelog conventions and formatting rules referenced by /create-changelog and /update-changelog. Not typically invoked…
Enforce existence, reuse, mirror, and symmetry principles to keep new code minimal and consistent with surrounding code. Use when…
Run autonomous task execution using the codex CLI. Use when the user asks to \"codex exec\", \"run codex exec\", \"execute a task…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.