Root-cause a failing or wrong empirical result with a disciplined reproduce → minimise → hypothesise → instrument → fix loop, instead of guessing-and-poking.

MITAuto-check passedResearch & Science

Install Diagnose

skills CLI
$ npx skills add pedrohcgs/claude-code-my-workflow --skill diagnose -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install pedrohcgs/claude-code-my-workflow diagnose --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/pedrohcgs/claude-code-my-workflow.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/diagnose .claude/skills/diagnose && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
diagnose
GitHub stars
1.7k
Token cost
~4.2k tokens
SKILL.md length
2,023 words
Files
1
Skills in repo
59
Repo updated
First seen
Licence
MIT

At a glance

Root-cause a failing or wrong empirical result with a disciplined reproduce → minimise → hypothesise → instrument → fix loop, instead of guessing-and-poking.

  • Works in 6 steps: Pin the symptom (expected vs. actual) → Reproduce deterministically (get a… → Minimise to an MWE → …
  • The user says why is my regression wrong
  • SKILL.md covers When to use, Phases, Worked example and Output / report format, plus 7 more sections
  • Calls pip and git

What it does

Diagnose is an agent skill from pedrohcgs/claude-code-my-workflow. Root-cause a failing or wrong empirical result with a disciplined reproduce → minimise → hypothesise → instrument → fix loop, instead of guessing-and-poking. Use when the user says "why is my regression wrong", "this number changed", "my script errors out", "the result won't reproduce", "debug this", "this estimate looks wrong", or "it worked yesterday". Tuned for research code (R/Stata/Python): type coercion, NA/merge blow-ups, factor levels, clustering/SE choices, weighting, collinearity/convergence, seeds…

Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Research & Science, covering Root cause analysis and Econometrics and empirical research. It works with Python. The repository describes itself as: A ready-to-fork Claude Code template for academics using LaTeX/Beamer + R. Multi-agent review, quality gates, adversarial QA, and replication protocols. The licence is MIT.

When your agent uses it

  • The user says why is my regression wrong
  • This number changed
  • My script errors out
  • The result wont reproduce

Example prompts

  • “why is my regression wrong”
  • “this number changed”
  • “my script errors out”
  • “/diagnose”

Requirements

  • Pre-approved tools (allowed-tools): ["Read", "Write", "Edit", "Grep", "Glob", "Bash", "Agent", "Task"]

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Pin the symptom (expected vs. actual)
  2. Reproduce deterministically (get a reliable red)
  3. Minimise to an MWE
  4. Hypothesise (enumerate, then rank)
  5. Instrument & localize (bisect, don't stare)
  6. Fix & verify (then guard against regression)

What it can do on your machine

Read from SKILL.md and the folder at commit ae72617. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • ["Read"
    • "Write"
    • "Edit"
    • "Grep"
    • "Glob"
    • "Bash"
    • "Agent"
    • "Task"]

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pip
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Diagnose loads about 4.2k tokens when it runs. Until then it costs about 159 tokens; SKILL.md has 2,023 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~159
When it runs · the whole SKILL.md, loaded when a task matches
~4.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from pedrohcgs/claude-code-my-workflow at commit ae72617, republished under its MIT licence (© pedrohcgs). 2,023 words, ~4,196 tokens.

Download SKILL.mdSave it as .claude/skills/diagnose/SKILL.md (or your agent's skills folder).
name
diagnose
description
Root-cause a failing or wrong empirical result with a disciplined reproduce → minimise → hypothesise → instrument → fix loop, instead of guessing-and-poking. Use when the user says "why is my regression wrong", "this number changed", "my script errors out", "the result won't reproduce", "debug this", "this estimate looks wrong", or "it worked yesterday". Tuned for research code (R/Stata/Python): type coercion, NA/merge blow-ups, factor levels, clustering/SE choices, weighting, collinearity/convergence, seeds, package-version drift. Use `--no-fix` to localize the root cause without editing shared or load-bearing files.
allowed-tools
["Read", "Write", "Edit", "Grep", "Glob", "Bash", "Agent", "Task"]
argument-hint
[file, script, or short description of the symptom] [--no-fix]
effort
high

/diagnose — Root-Cause a Wrong or Failing Result

Find why an analysis errors, returns the wrong number, or won't reconcile — with a structured debugging loop rather than scattershot edits. Adapted from the diagnose pattern in mattpocock/skills, reshaped for empirical research code where the bug is usually a silent wrong number, not a crash.

The discipline: never edit before you can reproduce, and never fix before you can explain. A guessed fix that makes the symptom disappear without a named root cause is how a wrong number gets laundered into a published table.

When to use

  • A regression / estimate returns a value you can't explain, or one that changed when nothing should have.
  • A script errors out and the stack trace doesn't point at the real cause.
  • A result "won't reproduce" — different number on re-run, on another machine, or after a package update.
  • A replication claim fails /audit-reproducibility and you need to localize which step drifted.

Diagnose is symptom-driven and single-target: ONE wrong number / ONE failing run. Use a sibling instead when the job is different:

  • /audit-reproducibility — verify all numeric claims in a manuscript against current code (claim-driven, whole-paper). If you have one FAILing claim and want to localize which pipeline step produced it, /audit-reproducibility hands off to /diagnose; if you want to re-check every table number, start there.
  • /review-r — code-quality review with no specific symptom.
  • /capture-environment — snapshot the environment when version/seed drift is the suspect.

Phases

Phase 0 — Pin the symptom (expected vs. actual)

State the bug as a falsifiable gap before touching anything:

  • Expected: the value/behaviour you believe is correct, and why (a prior run, a paper table, a hand calculation, a theoretical sign).
  • Actual: the value/error observed now, copied verbatim (full message, not a paraphrase).
  • Tolerance: the threshold that separates "same" from "different", keyed to the source of expected — prior run on the same machine → machine-epsilon + display rounding; a published table → rounding + small slack (~1e-3); a hand calculation → ~0.01; a theoretical prediction → an economic-significance band, not a decimal. Don't chase 1e-12 floating-point noise; don't wave away a 5% gap. (See replication-protocol.md.)

If expected/actual can't be stated, the task is understanding, not diagnosis — stop and clarify first.

Phase 1 — Reproduce deterministically (get a reliable red)

A bug you can't reproduce on demand can't be fixed, only hidden.

  1. Fix every source of nondeterminism: set the seed, pin the working directory, record sessionInfo() / pip freeze / Stata version (lean on /capture-environment).
  2. Re-run the smallest unit that exhibits the bug and confirm it fails every time. An intermittent failure is its own hypothesis (uninitialised RNG, order-dependent merge, race in parallel code) — note it and carry it into Phase 3.
Phase 2 — Minimise to an MWE

Shrink until the bug sits in the open:

  • Data: subset to the smallest rows/columns that still reproduce (often one group, one period, a handful of rows).
  • Code: strip the pipeline to the shortest path from input to wrong output; comment out everything the symptom survives without.
  • Each removal that keeps the bug is information; each that kills it is a stronger signal — record which.

The MWE is the deliverable even if the fix is later trivial: it's what makes the root cause undeniable.

Phase 3 — Hypothesise (enumerate, then rank)

List candidate causes before testing any — a written list beats poking because it prevents fixating on the first idea. For research code, walk the usual suspects (all of these run cleanly with no error message — they are silent-wrong-number bugs):

  • Types & coercion — a numeric read as character/factor; integer overflow; date parsed wrong; TRUE/FALSE ↔ 1/0.
  • Missingness — NA dropped silently, na.rm flipping a mean, listwise deletion changing the sample mid-pipeline.
  • Joins & shape — a many-to-many merge inflating rows; duplicate keys; an unbalanced panel where balance was assumed.
  • Specification — wrong clustering level, fixed effects absorbed twice, a lag/lead off by one.
  • Bad controls & colliders — a control that is post-treatment, a mediator on the causal path, or a descendant of treatment (adding it induces bias, invisibly). The tell: a coefficient that moves the "wrong way" or shrinks implausibly when a control enters.
  • Numerical stability & convergence — an optimizer that didn't converge (check the convergence code, not just the estimates), a singular/near-singular Hessian, collinearity (high VIF, a dropped column), tolerance set too loose, under/overflow with very small/large weights or coefficients.
  • Weighting & aggregation — weights silently dropped/truncated, weights renormalised wrong, frequency vs. probability vs. analytic weights confused, a weight applied after rather than before a transform.
  • Sample — a filter that runs before vs. after a transform; an outlier rule applied inconsistently.
  • Environment — a package/Stata version bump that changed a default; a seed that moved; locale/encoding.

For a genuinely ambiguous bug, fan out the top competing hypotheses to parallel Agent subagents (one per hypothesis, each in a fresh context), each instructed to try to confirm its own cause on the MWE and report back — the loop-first analogue of asking three colleagues at once (see orchestrator-protocol.md).

Phase 3b — Reduce the hypotheses (so you don't launder a guess)

Each hypothesis (whether tested by hand or by a fan-out Task) returns {hypothesis, evidence for, evidence against, confidence, one-line conclusion}. Then:

  • One clear winner (high confidence, others refuted) → proceed to Phase 4 to confirm the mechanism.
  • A near-tie (top two within ~20 percentage points) → do not pick one; go to Phase 4 instrumentation to discriminate.
  • None above ~50% → report ambiguity and ask the user; do not edit on a coin-flip.
Phase 4 — Instrument & localize (bisect, don't stare)

Test the ranked hypotheses cheaply:

  • Bisect the pipeline — check the intermediate value at the midpoint of the data flow; the bug is upstream or downstream of it. Repeat. Binary search finds the offending line in log2(n) steps, not n.
  • Bisect history — if it "worked yesterday", compare against the last-good commit/output to pin the change that introduced it. (git bisect is fine here — it never discards work; the destructive git commands are blocked by git-guardrails.py, this is not one of them.)
  • Instrument with diagnostic primitives, not guesses — at each stage inspect: str() / summary() for types & NA patterns; row & column counts before and after every transform; table(factor) to catch a silently dropped level; cor() / VIF for unexpected collinearity; weight diagnostics range(w), sum(w), table(is.na(w)); and the regression's convergence flag. The stage where a count drops unexpectedly, a factor level vanishes, correlation jumps, or weights go sparse is the culprit stage.

End Phase 4 with a one-sentence root cause naming the exact line/step and mechanism.

Phase 5 — Fix & verify (then guard against regression)

Confidence gate (the anti-laundering rule): do not apply a fix unless the root cause is named and its mechanism is explicit. If Phase 3b left a near-tie, behave as --no-fix: report the candidates and ask. Editing research code on an unproven hypothesis is exactly the laundering this skill exists to prevent.

Unless --no-fix is set:

  1. Apply the minimal fix at the root cause — not a downstream patch that masks it (prefer fixing the bad merge over filtering its duplicate rows afterward).

  2. Re-run the MWE → confirm actual == expected within the Phase-0 tolerance.

  3. Re-run the full unit and any dependent step → confirm the fix didn't move another number. If the result feeds a manuscript claim, re-check it (cross-ref the passport in /audit-reproducibility).

  4. Note a prevention — the assertion/check that would have caught this earlier. One concrete guard per bug class:

    Bug classOne-line guard
    Types & coercionstopifnot(is.numeric(x)) after read
    Missingnessexplicit na.rm = FALSE; stopifnot(sum(is.na(x)) == 0)
    Joins & shaperecord nrow pre-merge; stopifnot(nrow(out) == nrow(left)) for a 1:1 join
    Weightingstopifnot(abs(sum(w) - 1) < 1e-8) or !anyNA(w)
    Convergenceassert the optimizer/model convergence flag is OK before using estimates
    Sampleone explicit filter() with a stated reason, not a mid-pipe drop
    Environmentpin versions in renv.lock; set.seed() at the top of each script

    Propose the guard; don't silently install a test suite.

With --no-fix, stop after the root cause is named and report it for the user to fix by hand.

Show full SKILL.md (724 more words)Show less

Worked example

A demand-forecasting model's held-out MAE jumped from 0.043 to 0.071 after a data refresh; nothing in the spec changed.

r
# Phase 1 — reproduce: set.seed(1); same script, same number every run. Red is stable.

# Phase 2 — MWE: one region, two horizons still shows the jump.
#           Strip to: read panel -> merge features -> lm(). Bug survives the merge step.

# Phase 4 — instrument: row counts before/after each step
nrow(panel)                          # 12,400  (expected)
nrow(merge(panel, feats, by="id"))   # 12,933  <-- inflated! a many-to-many merge

# Root cause: the refresh left duplicate feats rows for a subset of ids; the
# join fans those ids out, 12,400 -> 12,933 (+533 rows), re-weighting the MAE
# toward the duplicated units.

# Phase 5 — minimal fix at the root (dedup the key), NOT a downstream row filter:
feats <- feats[!duplicated(feats$id), ]
# re-run: MAE back to 0.043 within tolerance; full pipeline re-checked, no other number moved.

# Prevention (Joins & shape guard):
stopifnot(nrow(merge(panel, feats, by = "id")) == nrow(panel))

Output / report format

Write a short diagnosis to quality_reports/diagnoses/YYYY-MM-DD_<slug>.md (create the directory first: mkdir -p quality_reports/diagnoses). These reports may contain real data values and file paths — they are project-internal and gitignored, like session logs. Include:

  • Symptom: expected vs. actual (+ tolerance).
  • MWE: the minimal input/code that reproduces it.
  • Root cause: the exact line/step and mechanism.
  • Fix: the diff applied (or, with --no-fix, the recommended change).
  • Verification: MWE + full-run re-check results.
  • Prevention: the guard that would have caught it.

Plus a chat summary leading with the one-line root cause.

Cross-language notes

The usual-suspects model is illustrated in R but the bug classes are language-neutral; the diagnostic idioms differ:

  • R — anyNA() / table(is.na(x)); factors silently drop unused levels; set.seed(); sessionInfo().
  • Stata — tab v, missing and explicit ./.a–.z extended missing; set seed; version; weights as [fw=] vs [pw=] vs [aw=] is a frequent silent bug.
  • Python — df.isnull().sum(); numpy.nan ≠ None; pandas vs numpy NaN handling differ; np.random.seed() / a passed random_state; pip freeze.

(Forkers in other fields: the five structural classes — Types, Missingness, Joins, Sample, Environment — are discipline-neutral; the econometric suspects above are the worked instance.)

Exit behavior

OutcomeAction
Root cause NAMED (high confidence), fix applied, re-verifiedreport root cause + diff + prevention
--no-fixstop at a named root cause; write the report, make no edit to source
Phase 0 blocked (no statable expected/actual)halt, ask for the expected value — diagnosis needs a target
Phase 1 blocked (cannot reproduce / nondeterminism)report the nondeterminism as the finding (it is the bug class) + how to make the analysis deterministic; do not edit blindly
Phase 3b near-tie / <50%report the competing hypotheses and ask the user; do not apply a fix

Flags

  • --no-fix — Diagnose only: run through naming the root cause (Phases 0–4) and write the report, but make no edit to source. Use when you want to apply the fix yourself, or when the file is shared/load-bearing and an automated edit is inappropriate.

Step 0 — State the contract before touching anything

Before proposing or writing any fix, state in 3–5 bullets and stop for confirmation:

  1. What the function's or pipeline's documented contract is.
  2. What the reporter claims is broken.
  3. Whether the reported scenario is even in contract — a caller violating the contract is not a bug in the callee.
  4. What the correct behaviour would be.
  5. What evidence would settle it.

This costs thirty seconds and prevents the most expensive class of wasted work: a confident fix to a misunderstood contract. In one logged case the same semantic point had to be corrected twice before a fix was scoped right, because the agent asserted a stance on the contract rather than restating it and asking.

Severity follows the contract. A scenario outside the documented contract is at most a documentation or validation issue, never a high-severity correctness bug. Inflating it because it looks wrong is how a fix ends up changing behaviour users depend on.

Separate the audit pass from the repair pass

The strongest outcomes in the logged sessions began as investigations, not fix requests. The messier ones mixed auditing with editing.

Audit pass — read-only. Produce a findings table: severity | file:line | claim | evidence I actually ran | proposed fix. Mark anything not verified by execution as UNVERIFIED. Edit nothing.

Repair pass — on approved rows only. The user picks which findings get fixed. This is what makes declining a finding cheap, and declining findings is how scope stays bounded.

--no-fix runs the audit pass alone.

Cross-references

What this skill does NOT do

  • Review code with no symptom — that is /review-r. Diagnose needs an expected-vs-actual gap to chase.
  • Re-audit every claim in a paper — that is /audit-reproducibility. Diagnose fixes one bug deeply.
  • Build a test suite — it proposes the single guard that would have caught this bug; standing test infrastructure is separate dev work.
  • Commit the fix — branching / committing is /commit's job.

© pedrohcgs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/diagnose of pedrohcgs/claude-code-my-workflow.

Open the folder on GitHubat commit ae72617

Compare with similar skills

Diagnose next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Diagnose compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Diagnose this skillpedrohcgs/claude-code-my-workflow1.7k—~4.2kAutomated safety check: PassMIT
Stata C Pluginsdylantmoore/stata-skill2911 repos~5.8kAutomated safety check: PassCustom licence
Fin Data Acquisitioncsmar432/finai-research109—~2kAutomated safety check: PassMIT
Empirical Research MethodsCitrus-bit/Anaxa120—~1.9kAutomated safety check: PassCC-BY-SA-4.0
Causal Inference Mixtapebrycewang-stanford/Auto-Empirical-Research-Skills4.6k—~1.5kAutomated safety check: PassCustom licence
Aer Statspaibrycewang-stanford/Auto-Empirical-Research-Skills4.6k—~3kAutomated safety check: PassCustom licence

Similar skills

  • Stata C Plugins

    dylantmoore/stata-skill

    Develop high-performance C/C++ plugins for Stata using the stplugin.h SDK.

    291 GitHub starsUsed in 1 repo~5.8k tokens
    Research & ScienceAuto-check passed
  • Fin Data Acquisition

    csmar432/finai-research

    根据REFINEDDESIGN.md中的变量定义,自动获取所需数据并生成可执行的回归分析脚本(Python/Stata)。

    109 GitHub stars~2k tokensUpdated 4 days ago
    Research & ScienceAuto-check passed
  • A skill your agent uses for empirical social-science research, applied economics, public policy, education, finance, management, sociology, psychology, epidemiology, or public-health data studies.

    120 GitHub stars~1.9k tokensUpdated 1 mo ago
    Research & ScienceAuto-check passed
  • Causal Inference Mixtape

    brycewang-stanford/Auto-Empirical-Research-Skills

    This skill should be used when the user asks to "implement a DiD regression", "write a causal inference pipeline", "set up an event study", "implement instrumental variables", "run a regression…

    4.6k GitHub stars~1.5k tokensUpdated 5 days ago
    Research & ScienceAuto-check passed
  • Aer Statspai

    brycewang-stanford/Auto-Empirical-Research-Skills

    A skill your agent uses when aer-identification has fixed the design, after methodology choice and before aer-robustness or aer-tables-figures, to run an AER-track analysis with StatsPAI — the…

    4.6k GitHub stars~3k tokensUpdated 5 days ago
    Research & ScienceAuto-check passed
  • Audit Replication

    brycewang-stanford/Auto-Empirical-Research-Skills

    Validate the replication package for the sewage-house-prices project.

    4.6k GitHub stars~984 tokensUpdated 5 days ago
    Research & ScienceAuto-check: notes

More from pedrohcgs/claude-code-my-workflow

All 59 skills in this repo
  • Devils Advocate

    pedrohcgs/claude-code-my-workflow

    Adversarial 5-7 question challenge to a deck's pedagogical choices — ordering, prerequisites, cognitive load, motivation.

    1.7k GitHub starsUsed in 2 repos~641 tokens
    Auto-check passed
  • Vaccinate

    pedrohcgs/claude-code-my-workflow

    Qualify a check before it is allowed to clear anything — prove it can detect the failure it is meant to catch.

    1.7k GitHub stars~2.1k tokensUpdated 12 days ago
    Auto-check: notes
  • Compile Latex

    pedrohcgs/claude-code-my-workflow

    Compile a Beamer LaTeX slide deck with XeLaTeX (3 passes + bibtex).

    1.7k GitHub starsUsed in 1 repo~492 tokens
    Auto-check: notes
  • Context Status

    pedrohcgs/claude-code-my-workflow

    Show current context status and session health. An agent skill from pedrohcgs/claude-code-my-workflow.

    1.7k GitHub starsUsed in 1 repo~613 tokens
    Auto-check: notes
  • Capture Environment

    pedrohcgs/claude-code-my-workflow

    Snapshot the computational environment for a replication package — detects the analysis stack (R / Stata / Python) and emits the right lockfiles (renv.lock + sessionInfo.txt, requirements.txt /…

    1.7k GitHub stars~2.8k tokensUpdated 12 days ago
    Auto-check: notes
  • Checkpoint

    pedrohcgs/claude-code-my-workflow

    Save a structured state snapshot before stopping or handing off.

    1.7k GitHub stars~2.8k tokensUpdated 12 days ago
    Auto-check: notes

Works with

Questions about Diagnose

What does Diagnose do?

Root-cause a failing or wrong empirical result with a disciplined reproduce → minimise → hypothesise → instrument → fix loop, instead of guessing-and-poking. Diagnose is an agent skill from pedrohcgs/claude-code-my-workflow. Root-cause a failing or wrong empirical result with a disciplined reproduce → minimise → hypothesise → instrument → fix loop, instead of guessing-and-poking.

When should I use Diagnose?

Diagnose fits situations like: the user says why is my regression wrong; this number changed; my script errors out; the result wont reproduce.

How do I install Diagnose in Claude Code?

Run `npx skills add pedrohcgs/claude-code-my-workflow --skill diagnose -a claude-code`. Or copy the skill folder (.claude/skills/diagnose in pedrohcgs/claude-code-my-workflow) into .claude/skills/diagnose in your project. Claude Code loads it when a task matches its description.

How do I install Diagnose in Codex?

Run `npx skills add pedrohcgs/claude-code-my-workflow --skill diagnose -a codex`. Or copy the skill folder (.claude/skills/diagnose in pedrohcgs/claude-code-my-workflow) into .agents/skills/diagnose in your project. Codex loads it when a task matches its description.

Can I use Diagnose in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add pedrohcgs/claude-code-my-workflow --skill diagnose -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/diagnose, .gemini/skills/diagnose, .github/skills/diagnose and .opencode/skills/diagnose in your project.

What does Diagnose need to run?

Going by SKILL.md and its folder, Diagnose needs the command-line tools its instructions call (pip and git). Its frontmatter pre-approves these tools: ["Read", "Write", "Edit", "Grep", "Glob", "Bash", "Agent", "Task"].

Does Diagnose access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Diagnose safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Diagnose use?

Diagnose is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Diagnose use?

About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Diagnose?

Skills that share tags, products or a category with Diagnose: Stata C Plugins (dylantmoore/stata-skill, 291 stars), Fin Data Acquisition (csmar432/finai-research, 109 stars), Empirical Research Methods (Citrus-bit/Anaxa, 120 stars) and Causal Inference Mixtape (brycewang-stanford/Auto-Empirical-Research-Skills, 4.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Diagnose?

pedrohcgs (a GitHub user) maintains it in pedrohcgs/claude-code-my-workflow, which has 1,655 GitHub stars. The repository holds 59 skills in this directory. The repository was last updated on September 27, 2026.

Source: pedrohcgs/claude-code-my-workflow on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.