MCP Server Builder
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
Run a multi-lens hole hunt (audit) of the dmrgpy Python layer, or add a lens, a finding or a fix cluster to an existing one.
$ npx skills add joselado/dmrgpy --skill hole-hunt -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install joselado/dmrgpy hole-hunt --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/joselado/dmrgpy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/hole-hunt .claude/skills/hole-hunt && rm -rf skills-srcUse ~/.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/
Install the "hole-hunt" agent skill from https://github.com/joselado/dmrgpy/tree/master/.claude/skills/hole-hunt into .claude/skills/hole-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hole-hunt", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/joselado/dmrgpy/tree/master/.claude/skills/hole-huntType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add joselado/dmrgpy --skill hole-hunt -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install joselado/dmrgpy hole-hunt --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joselado/dmrgpy.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/hole-hunt .agents/skills/hole-hunt && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "hole-hunt" agent skill from https://github.com/joselado/dmrgpy/tree/master/.claude/skills/hole-hunt into .agents/skills/hole-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hole-hunt", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add joselado/dmrgpy --skill hole-hunt -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install joselado/dmrgpy hole-hunt --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joselado/dmrgpy.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/hole-hunt .cursor/skills/hole-hunt && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "hole-hunt" agent skill from https://github.com/joselado/dmrgpy/tree/master/.claude/skills/hole-hunt into .cursor/skills/hole-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hole-hunt", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/joselado/dmrgpy.git --path .claude/skills/hole-hunt--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add joselado/dmrgpy --skill hole-hunt -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install joselado/dmrgpy hole-hunt --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joselado/dmrgpy.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/hole-hunt .gemini/skills/hole-hunt && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "hole-hunt" agent skill from https://github.com/joselado/dmrgpy/tree/master/.claude/skills/hole-hunt into .gemini/skills/hole-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hole-hunt", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install joselado/dmrgpy hole-huntInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add joselado/dmrgpy --skill hole-hunt -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/joselado/dmrgpy.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/hole-hunt .github/skills/hole-hunt && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "hole-hunt" agent skill from https://github.com/joselado/dmrgpy/tree/master/.claude/skills/hole-hunt into .github/skills/hole-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hole-hunt", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add joselado/dmrgpy --skill hole-hunt -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install joselado/dmrgpy hole-hunt --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/joselado/dmrgpy.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/hole-hunt .opencode/skills/hole-hunt && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "hole-hunt" agent skill from https://github.com/joselado/dmrgpy/tree/master/.claude/skills/hole-hunt into .opencode/skills/hole-hunt/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "hole-hunt", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
hole-huntRun a multi-lens hole hunt (audit) of the dmrgpy Python layer, or add a lens, a finding or a fix cluster to an existing one.
Hole Hunt is an agent skill from joselado/dmrgpy. Run a multi-lens hole hunt (audit) of the dmrgpy Python layer, or add a lens, a finding or a fix cluster to an existing one. Use this whenever the user asks to audit, hole-hunt, hunt for bugs, sweep for holes, cross-check the backends against each other, or look for silently-wrong numbers, and also when they ask to record or fix a finding in docs/auditholehunt.md. This is the repository's established audit process, run in 2026-08 and 2026-09, and it has a fixed record shape and a fixed evidence standard that a…
Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with Python. The repository describes itself as: DMRGPy is a Python library to compute quasi-one-dimensional spin chains and fermionic systems using matrix product states with DMRG as implemented in ITensor. Most of the… The licence is GPL-3.0.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 7373fce. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitmakeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Hole Hunt loads about 3.4k tokens when it runs. Until then it costs about 142 tokens; SKILL.md has 1,770 words of instructions outside code blocks.
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.
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.
The full file from joselado/dmrgpy at commit 7373fce, republished under its GPL-3.0 licence (© joselado). 1,770 words, ~3,369 tokens.
.claude/skills/hole-hunt/SKILL.md (or your agent's skills folder).A hole hunt is a parallel, multi-lens search for behaviour in the dmrgpy Python
layer that is silently wrong: a number that is plausible and incorrect, a
dispatch that answers a question nobody asked, a kwarg with no consumer. The
previous hunts are docs/audit_2026_08_hole_hunt.md (five lenses, 21 findings),
docs/audit_2026_09_hole_hunt.md (eight lenses, 36 findings),
docs/audit_2026_09_24_hole_hunt.md (five lenses, 16 findings),
docs/audit_2026_09_24b_hole_hunt.md (five lenses, 18 findings) and
docs/audit_2026_09_24c_hole_hunt.md (four lenses, 18 findings), followed by
docs/audit_2026_09_25_open_items.md, a fix pass over ten of their open items
rather than a hunt, whose "Left open, and new leads" section belongs in the
next brief next to every record's "New leads", and by
docs/audit_2026_09_25b_hole_hunt.md (four lenses, 29 findings) over that fix
pass. Read the
scope section and the lens table of the most recent one before starting: a
finding already recorded there is not a new finding.
What makes this process worth following rather than improvising: every claim in
the record was executed, and every claim was then handed to a second agent
whose only brief was to refute it. That is what makes the record trustworthy
enough that a later fix does not have to re-derive the evidence. Predicted
output, remembered output and output from a stale .so all break that, so they
are the failure mode to guard against throughout.
Record, and keep true for the whole hunt:
git rev-parse --short HEAD) and that the tree is clean._dmrgcpp*.so invalidates
every other lens's measurements. The 2026-09 hunt took its one C++ fix by hand,
separately, for exactly this reason.git archive of the parent without the vendored
ITensor/TDVP folders, those linked back to this checkout's copies (check
they are unchanged between the two commits), then make pybind in each
mpscppN: about a minute, and it never touches the repo's own .so. The
recipe and the two-runner setup are in the 2026-09-25b record's "Shared
helpers".MKL_NUM_THREADS=1 OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 NUMEXPR_NUM_THREADS=1 \
PYTHONPATH=<this worktree>/src python3 <script>Both halves matter. Unpinned threads make a timing claim meaningless, and a bare
import resolves to whichever checkout site-packages is symlinked into, so an
ad-hoc probe can silently test code that is not the code under audit.
Four to eight, each a one-line brief naming one class of problem, and as file-disjoint as you can make them so the fix clusters afterwards can run in parallel. Previous sets, to vary rather than repeat:
python-backend-parity, wavefunction-consumers, dispatch-matrix,
pyitensor-performance, cpp-v3-completeness, ed-and-operators,
recent-commits, docs-examples-drift.docs/audit_2026_09_24_hole_hunt.md, scoped to the commits since
the previous hunt's fixes): kpm-calibration, td-convention,
canonical-form, infinite-chain, recent-misc. Scoping a hunt to a commit
window, one lens per recent change, found 16 holes in 11 commits, seven or
eight of them introduced by the single commit that closed the previous
hunt's open items; a hunt right after a fix pass is worth running for that
reason alone.docs/audit_2026_09_24b_hole_hunt.md, scoped to the one fix
commit 30200a4): one lens per fix cluster, operators, kpm, realtime,
kondo, pyitensor; 18 findings, twelve of them older than the commit and
reached by probing next to it.docs/audit_2026_09_24c_hole_hunt.md, scoped to the one fix
commit 867e2b4): again one lens per fix cluster, groundstate, kpm,
realtime, misc; 18 findings, six of them from the commit itself. Two things
it taught. The brief listing what is already recorded has to carry every
earlier record's "New leads", not only the last one's: its one refutation was
a lead two records back that the brief left out. And a candidate turned up by
a reviewer of a reviewer-found candidate needs its own reviewer too; a
workflow that stops one level down leaves it as a lead.docs/audit_2026_09_25b_hole_hunt.md, scoped to the fix-pass
commit e7b1196): one lens per fix cluster, construction, session,
scale, scale_cpp, run on e7b1196 and on a compiled snapshot of its
parent; 32 candidates reviewed to depth three, none refuted, 29 findings,
three from the commit itself and four more it made reachable. What it
taught: a fix that lowers one floor exposes the next one. Once
clean_threshold stopped dropping small operators, seventeen absolute
thresholds further down became reachable, and one of them sat in the
previous record's "Ruled out" as unreachable for exactly the reason the fix
removed. After a threshold or a guard changes, read the earlier "Ruled out"
sections as candidates, not as settled.Out of scope by construction, and stated in the record so the exclusion is on
the page rather than in someone's head: vendored ITensor (mpscpp2/ITensor/,
mpscpp3/ITensor/); the legacy bugs CLAUDE.md says are deliberately
reproduced (evoloperator's z^3/6 term on H2, the "moise" key, the
unreachable "tevol_fit_td" branch); the open docs/known_issue_*.md items;
anything already in an earlier audit record; and gaps ROADMAP.md already marks as
absent. Decide explicitly whether itensor_version="julia_live" is in scope,
since its juliacall JIT cost dominates any lens that touches it, and say so.
Spawn one hole-hunter agent per lens, all in one message so they run
concurrently. Each returns candidate findings, each carrying a repro script that
was actually run and its verbatim output.
Then spawn one finding-reviewer agent per candidate, briefed to refute it. A
reviewer that reproduces the repro and finds the behaviour intended, already
documented, or an artifact of the probe returns REFUTED, and that candidate
never enters the record. A reviewer that narrows the claim returns the narrowed
version, and the narrowed version is what gets written down. The 2026-09 record
carries several findings whose sub-claims the reviewer struck; keeping the strike
visible is part of the point.
Two practical points from the 2026-09-24 hunt. Subagents cannot write report files (the harness refuses them), so a reviewer's report arrives only as its hand-back text: save a condensed copy next to its scripts as it arrives, since the conversation that holds the full text may be compacted before the record is written. And the scratch folders every repro runs in do not outlive the session, so the record must carry each script and output inline rather than by path; the 2026-09-24 record was assembled by a small builder that splices the files from disk into the markdown, which keeps the outputs byte-for-byte what was run. A finding a reviewer turns up while reviewing another one gets its own reviewer before it enters the record.
docs/audit_<YYYY_MM>_hole_hunt.md (<YYYY_MM_DD> when the month already has
one), in the shape the existing records share:
# Audit, <YYYY-MM>: <n>-lens hole hunt
<one paragraph: date, commit, tree state, that every repro was executed and
every finding handed to an independent reviewer briefed to refute it, and that
REFUTED findings are not reproduced here>
<one paragraph: this file is the evidence, not a task list; fixed entries keep
their repro and gain a **Status** line rather than being deleted>
## The <n> lenses
| Lens | Brief |
|---|---|
## Scope
<what is excluded by construction, and the pinned-threads invocation above>
## Findings
### 1. <the defect stated as a claim, with its measured size, in one sentence>
`bug` · severity **HIGH** · CONFIRMED · lens `<lens-name>`
**Where**: `<file:line list, every site the defect reaches>`
<prose: what the code does, what the layer above believes it does, why every
existing test passes through it>
**Expected**: <what a correct implementation returns>
Repro:
```bash
<the exact pinned-threads invocation that was run>
```
Observed:
```
<verbatim output, not retyped>
```
**Reviewer (CONFIRMED)**: <the attempt to refute it, and what survived>
**Suggested fix**: <one paragraph>A **Status** line goes directly under the classification line once the finding
has been acted on, and **Reviewer on severity** is the variant used where the
reviewer accepted the defect and disputed how bad it is.
Two things about the finding heading, because they are what makes the record
readable a year later: state the defect as a claim rather than a topic
("vev(op, npow=n) silently ignores npow on every ED route" beats "npow
handling"), and put the measured size in it where there is one.
Group the findings into clusters that do not touch the same files, and take one
cluster at a time or in parallel agents. Each cluster gets one regression file,
tests/test_audit_<YYYY_MM>_<cluster>.py, and each fix gets a **Status** line
appended to its finding: FIXED, PARTIAL (say which half landed), or the
reasoning if the behaviour turns out to be intended after all. Name the tests
that pin it, or say explicitly that none does.
Pin the property, not a golden number, wherever the property is what was wrong:
the 2026-09 TDVP fix is pinned by a test that asserts the order in dt rather
than a value. Where a fix removes a bug from an existing computation, keeping
the pre-fix reference construction verbatim inside the test is the cheapest way
to prove the new path agrees with the old one where it should.
The 2026-09-25b fix pass ran nine clusters as parallel agents, each in its own git worktree, and four things about that shape are worth keeping:
.so files are gitignored, so
v2/v3 silently fall back to ED and every test passes vacuously. Each agent
copies (not symlinks) both .so in and asserts cppext.available first.
The cluster that edits C++ builds its own by copying the untracked
ITensor/this_dir.mk and options.mk into its worktree, which points the
build at the main checkout's libitensor.a.Chain::nhdmrg), write the formula and the place into both briefs.A fix that makes a previously-returned number different is a different kind of
event from a fix that makes a crash stop, because saved results elsewhere are
now not comparable. Every such fix gets NUMBERS CHANGE in its **Status**
line, naming the old value, the new one and the exact chain it was measured on,
and the consolidated list goes into CLAUDE.md's paragraph for that audit.
Other projects save results produced by this library, so this is not
bookkeeping.
Update CLAUDE.md with a paragraph for the hunt: how many lenses, how many
findings, where the regressions live, which fixes changed numbers, and which
items are open rather than fixed. An open item stays in the record with what is
known about it, the way the kpm_energy_truncate window problem and the
submode="TD"/"TDZ" convention items did, rather than being dropped because
it did not get fixed.
© joselado, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/hole-hunt of joselado/dmrgpy.
Open the folder on GitHubat commit 7373fce
Hole Hunt 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Hole Hunt this skilljoselado/dmrgpy | 114 | — | ~3.4k | Automated safety check: Pass | GPL-3.0 | |
| MCP Server Builderanthropics/skills | 180k | 63 repos | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| PDF Processinganthropics/skills | 180k | 47 repos | ~2k | Automated safety check: Pass | Proprietary | |
| NotebookLM Research AssistantPleasePrompto/notebooklm-skill | 7.8k | 14 repos | ~2.4k | Automated safety check: Notes | MIT | |
| Manim Video Productionbrowser-use/video-use | 29k | 6 repos | ~3k | Automated safety check: Pass | MIT | |
| PPT Masterhugohe3/ppt-master | 59k | 1 repos | ~2.5k | Automated safety check: Pass | MIT |
anthropics/skills
Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.
anthropics/skills
Handles everyday PDF jobs in Python and on the command line: extract text and tables, merge, split, rotate, watermark, fill forms, encrypt and OCR.
PleasePrompto/notebooklm-skill
Lets Claude Code ask questions of your Google NotebookLM notebooks through browser automation and return answers grounded in your uploaded sources.
browser-use/video-use
Produces math and technical explainer videos with Manim Community Edition: concept animations, equation derivations, algorithm walkthroughs and data stories.
hugohe3/ppt-master
Generates editable PowerPoint decks, rebuilds slides from images, fills .pptx templates and polishes existing presentations through routed workflows.
zLanqing/codex-claude-academic-skills
Machine learning in Python with scikit-learn. An agent skill from zLanqing/codex-claude-academic-skills.
joselado/dmrgpy
Update docs/userguide.{md,tex} and docs/documentation.{md,tex} together after a change to dmrgpy, keeping the Markdown and LaTeX versions of each in step and verifying the .tex still compiles under…
joselado/dmrgpy
Add or revise a script under examples/ in dmrgpy. An agent skill from joselado/dmrgpy.
Works with
Run a multi-lens hole hunt (audit) of the dmrgpy Python layer, or add a lens, a finding or a fix cluster to an existing one. Hole Hunt is an agent skill from joselado/dmrgpy. Run a multi-lens hole hunt (audit) of the dmrgpy Python layer, or add a lens, a finding or a fix cluster to an existing one.
Hole Hunt fits situations like: sweep for holes; cross-check the backends against each other; look for silently-wrong numbers; also when they ask to record.
Run `npx skills add joselado/dmrgpy --skill hole-hunt -a claude-code`. Or copy the skill folder (.claude/skills/hole-hunt in joselado/dmrgpy) into .claude/skills/hole-hunt in your project. Claude Code loads it when a task matches its description.
Run `npx skills add joselado/dmrgpy --skill hole-hunt -a codex`. Or copy the skill folder (.claude/skills/hole-hunt in joselado/dmrgpy) into .agents/skills/hole-hunt in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add joselado/dmrgpy --skill hole-hunt -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/hole-hunt, .gemini/skills/hole-hunt, .github/skills/hole-hunt and .opencode/skills/hole-hunt in your project.
Going by SKILL.md and its folder, Hole Hunt needs the command-line tools its instructions call (git and make). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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.
Hole Hunt is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.4k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Hole Hunt: MCP Server Builder (anthropics/skills, 180k stars), PDF Processing (anthropics/skills, 180k stars), NotebookLM Research Assistant (PleasePrompto/notebooklm-skill, 7.8k stars) and Manim Video Production (browser-use/video-use, 29k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
joselado (a GitHub user) maintains it in joselado/dmrgpy, which has 114 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 26, 2026.
Source: joselado/dmrgpy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.