LangBot Plugin Development
langbot-app/LangBot
Guides building, debugging and testing LangBot plugins: components, SDK calls, README and locale rules, SDK pitfalls and WebSocket-based testing.
Triage night-market failures by symptom (hooks, CI, tests). An agent skill from athola/claude-night-market.
$ npx skills add athola/claude-night-market --skill night-market-debugging-playbook -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install athola/claude-night-market night-market-debugging-playbook --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/athola/claude-night-market.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/night-market-debugging-playbook .claude/skills/night-market-debugging-playbook && 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 "night-market-debugging-playbook" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-debugging-playbook into .claude/skills/night-market-debugging-playbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-debugging-playbook", 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/athola/claude-night-market/tree/master/.claude/skills/night-market-debugging-playbookType 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 athola/claude-night-market --skill night-market-debugging-playbook -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install athola/claude-night-market night-market-debugging-playbook --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/night-market-debugging-playbook .agents/skills/night-market-debugging-playbook && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "night-market-debugging-playbook" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-debugging-playbook into .agents/skills/night-market-debugging-playbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-debugging-playbook", 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 athola/claude-night-market --skill night-market-debugging-playbook -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install athola/claude-night-market night-market-debugging-playbook --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/night-market-debugging-playbook .cursor/skills/night-market-debugging-playbook && 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 "night-market-debugging-playbook" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-debugging-playbook into .cursor/skills/night-market-debugging-playbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-debugging-playbook", 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/athola/claude-night-market.git --path .claude/skills/night-market-debugging-playbook--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 athola/claude-night-market --skill night-market-debugging-playbook -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install athola/claude-night-market night-market-debugging-playbook --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/night-market-debugging-playbook .gemini/skills/night-market-debugging-playbook && 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 "night-market-debugging-playbook" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-debugging-playbook into .gemini/skills/night-market-debugging-playbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-debugging-playbook", 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 athola/claude-night-market night-market-debugging-playbookInstalls 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 athola/claude-night-market --skill night-market-debugging-playbook -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/night-market-debugging-playbook .github/skills/night-market-debugging-playbook && 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 "night-market-debugging-playbook" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-debugging-playbook into .github/skills/night-market-debugging-playbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-debugging-playbook", 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 athola/claude-night-market --skill night-market-debugging-playbook -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install athola/claude-night-market night-market-debugging-playbook --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/athola/claude-night-market.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/night-market-debugging-playbook .opencode/skills/night-market-debugging-playbook && 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 "night-market-debugging-playbook" agent skill from https://github.com/athola/claude-night-market/tree/master/.claude/skills/night-market-debugging-playbook into .opencode/skills/night-market-debugging-playbook/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "night-market-debugging-playbook", 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.
night-market-debugging-playbookTriage night-market failures by symptom (hooks, CI, tests). An agent skill from athola/claude-night-market.
Night Market Debugging Playbook is an agent skill from athola/claude-night-market. Triage night-market failures by symptom (hooks, CI, tests). Use when a check fails unexpectedly. Do not use for routine gates; use night-market-operations.
Its SKILL.md is about 3.8k 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 Development, covering Debugging. It works with Python. The repository describes itself as: 23 Claude Code plugins: TDD enforcement hooks, git/PR workflows, spec-driven development, code review, project lifecycle, fix-from-error, maintenance automation, context… The licence is MIT.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 9f3eb00. 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:
rgmakeuvpython3gitpythonbashghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, git and gh, 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.
Night Market Debugging Playbook loads about 3.8k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 1,910 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 athola/claude-night-market at commit 9f3eb00, republished under its MIT licence (© athola). 1,910 words, ~3,836 tokens.
.claude/skills/night-market-debugging-playbook/SKILL.md (or your agent's skills folder).Match the symptom to a row, run the one discriminating command, apply the known fix. Every row below is a failure this repo has already paid for, with the commit hash that settled it. Do not re-derive a diagnosis that archaeology already produced.
Terms used throughout, defined once:
hooks/hooks.json with a command and a timeout.timeout in seconds. The harness
kills the hook when it expires, before any output is honored.python3 ... under the machine's
system Python (floor: 3.9), NOT the repo's uv-managed 3.12 venv.
Third-party packages a plugin declares are not guaranteed present.import x transitively pulls in,
including the plugin's __init__.py.| # | Symptom | Likely cause | Story |
|---|---|---|---|
| 1 | PreToolUse hook error / ModuleNotFoundError on every git commit | Unguarded third-party import in a plugin __init__.py reachable from a hook | 45dd77ef, 9bfc0a7a |
| 2 | python39-compat is the only failing CI check | A 3.10+/3.11+ construct (datetime.UTC, bare X | Y union) entered a hook import chain | 18c9340d, PR #511 |
| 3 | Hook exits 0 but never does anything | Hook reads CLAUDE_TOOL_* env vars instead of stdin JSON | CHANGELOG 1.9.14 |
| 4 | capabilities-sync CI fails | plugin.json registrations drifted from the book reference | capabilities-sync.yml |
| 5 | Root pytest raises ImportPathMismatchError | Plugin tests collected from repo root instead of per plugin | conftest.py, pyproject norecursedirs |
| 6 | slop-check fails on a PR | Slop score over 3.0 in a docs/ or book/src/ markdown file | slop-check.yml |
| 7 | Stop hook produces no verdict at all | Inner subprocess timeout >= registered hook budget | 268cff89 |
| 8 | CI broken on a GitHub action or tool pin | Stale or nonexistent pinned version | f81d89a5, 25bf5a9d |
| 9 | Scanner reports nothing on input you know is bad | Swallowed exception (except-and-continue) drops files silently | 666171c3, b6de71cf |
| 10 | skrills: not found | Missing optional binary (a Python fallback exists) | Makefile validate-skills |
First command (substitute the hook path from the error message):
echo '{}' | python3 plugins/gauntlet/hooks/precommit_gate.py; echo "exit=$?"What the result means: a traceback names the module whose import chain
pulls in a package the host interpreter lacks. Exit 0 with no output
means the hook is import-safe and the problem is elsewhere (check the
hook registration in hooks/hooks.json).
Fix: guard the import at module level or defer it into the function
that needs it. The gauntlet incident: precommit_gate.py imported
gauntlet.knowledge_store, whose __init__.py eagerly imported
modules doing bare import yaml and import anthropic. Guarded in
45dd77ef (#518), deferred in 9bfc0a7a. Add a regression test that
blocks the package via a sys.meta_path blocker and re-imports the
hook (pattern in plugins/gauntlet/tests/unit/test_challenges.py).
The repo is Python 3.12, but hook scripts and their transitive imports
must stay importable under Python 3.9 (.github/workflows/ python39-compat.yml). First command:
uv run ruff check --select UP007 --target-version py39 plugins/<plugin>/hooks/
rg -n 'datetime\.UTC|from datetime import UTC' plugins/<plugin>/What the result means: UP007 hits are bare X | Y union annotations
that raise TypeError at import time on 3.9. The rg hits are the
datetime.UTC alias (3.11+), which UP007 does not catch. Either one
in a hook import chain breaks every hook at once: on PR #511 a single
datetime.UTC in leyline.quota_tracker produced three cascade
failures (18c9340d).
Fix: use from datetime import timezone with timezone.utc, and
typing.Union/Optional or a from __future__ import annotations
line for unions. To mirror CI's Gate 2 locally (verified 2026-07-02):
uv venv --python 3.9 /tmp/hook39
VIRTUAL_ENV=/tmp/hook39 uv pip install pytest pyyaml
cd plugins/abstract
/tmp/hook39/bin/python -m pytest tests/hooks --override-ini="addopts="The addopts override strips per-plugin coverage flags that need
packages the bare venv lacks. See also the linter trap below: ruff
will fight this fix.
First command:
rg -l 'CLAUDE_TOOL_' plugins/*/hooks/
rg -ln 'read_hook_payload' plugins/*/hooks/What the result means: Claude Code never sets CLAUDE_TOOL_*
environment variables. The payload arrives as JSON on stdin. A hook
reading only env vars is a silent no-op: it exits 0, CI is green, and
nothing downstream ever happens. This starved the [Learning]
discussion digests for two months (last digest 2026-04-25) before
anyone noticed (CHANGELOG 1.9.14).
Fix: read stdin first via the canonical reader
plugins/abstract/hooks/shared/hook_io.py (read_hook_payload,
stdin-first with env-var fallback for the test harness). Then verify
the hook actually fires: pipe a realistic payload in and check for the
side effect rather than the exit code alone.
First command:
bash scripts/capabilities-sync-check.shWhat the result means: the script diffs every plugin's
.claude-plugin/plugin.json registrations against
book/src/reference/capabilities-reference.md and prints the drifted
entries. PASSED: All capabilities are in sync means the CI failure
was against an older commit. Rebase and rerun.
Fix: run the sanctum sync command with the fix flag:
/sanctum:sync-capabilities --fixFirst command:
rg -n 'norecursedirs' pyproject.tomlWhat the result means: root pytest excludes plugins/* on purpose.
Plugins carry duplicate test module names and conftest fixtures, and
collecting them from the root collides (documented in conftest.py).
If you see this error you ran pytest across plugin boundaries.
Fix: run tests per plugin, never from the root against plugins:
cd plugins/imbue && uv run pytest tests/unit/test_deferred_capture.py -x -q
make sanctum-test # delegation target, any plugin name works
./scripts/run-plugin-tests.sh --allFirst command: read the PR comment the workflow posts (it lists the
failing files and scores), then reproduce locally. The score is
tier-1 hits x3 plus tier-2 hits x2 plus em dashes, per 100 words,
threshold 3.0. Copy the TIER1 and TIER2 regexes from
.github/workflows/slop-check.yml rather than retyping the word
lists, then:
grep -o '—' docs/<file>.md | wc -l
grep -oiE "$TIER1" docs/<file>.md | wc -lFix: rewrite per .claude/rules/slop-scan-for-docs.md. Replace em
dashes with colons or periods, and replace the flagged vocabulary with
plain words. Never de-slop historical CHANGELOG entries.
First command:
rg -n '"timeout"' plugins/herald/hooks/hooks.json
rg -n 'TIMEOUT' plugins/herald/hooks/double_shot_latte.pyWhat the result means: if any subprocess or LLM-call timeout inside
the hook is greater than or equal to the registered hook budget, the
harness kills the whole hook before it can print a decision, and the
hook dies without emitting anything. Herald shipped LLM_TIMEOUT_SECONDS = 30 inside a 10-second registered budget (fixed in 268cff89: capped to
8 with startup margin, and the LLM second shot gated to the single
ambiguous outcome).
Fix: cap every inner timeout strictly below the registered budget and
pin the invariant with a guard test, as in
plugins/herald/tests/unit/test_double_shot_latte.py::
test_llm_timeout_fits_within_hook_timeout. Deterministic tests do
not exercise optional LLM branches, so the timeout relation must be
asserted directly.
First command:
python3 scripts/check_pinned_versions.pyWhat the result means: the script checks GitHub-sourced pins (CI
actions in .github/workflows/*, external rev: hooks in
.pre-commit-config.yaml) against upstream and prints stale or held
pins with reasons. Two settled incidents: setup-uv@v8 failed because
the bare v8 tag does not exist upstream (pinned to v8.2.0,
f81d89a5), and bandit 1.9+ dropped Python 3.9 support (held at 1.8.6,
25bf5a9d).
Fix: pin to a full existing tag, and when holding a version back, record the reason where the checker reports it so the hold is visible.
First command: feed the scanner one deliberately malformed file and watch for an ADVISORY finding. Silence is the bug. Then look for the swallow:
rg -n 'except' scripts/check_hook_modernization.pyWhat the result means: an except-and-continue block in a scanner loop drops unparseable files without a trace, so the worst inputs are exactly the ones never reported. Incidents B1-B4 (666171c3, #575, and b6de71cf) covered hook-modernization scanning, strict-mode file drops, and DORA metrics rating malformed tags as Elite.
Fix: Constitution rule 10. Errors are not optional: emit an advisory finding for each skipped file or propagate. Never catch-and-continue without output.
First command:
make validate-skillsWhat the result means: skrills not available, using Python fallback
followed by scripts/check_plugin_hooks.py output is normal
operation rather than an error. make analyze-skills falls back to
scripts/generate_dependency_map.py. Only build the binary if you
need the Rust path:
make skrills-build # needs cargo and the skrills repo at $HOME/skrills
# (override with SKRILLS_REPO=/path)Ruff's pyupgrade rule UP017 auto-rewrites timezone.utc back to the
3.11-only datetime.UTC, silently reverting the py39 fix on the next
make lint. This recurred at least three times (18c9340d, b0049fde,
709dafc9) before the durable defense landed: UP017 in root
pyproject.toml extend-ignore, per-line suppression comments with a
stated reason where needed (Constitution rule 6 requires the reason),
and above all an AST-scanning invariant test
(plugins/leyline/tests/test_python39_compat.py) that fails CI on any
reintroduction. Lesson: when an autofixer keeps reverting your fix,
re-applying is attempt N of an infinite loop. Encode the invariant as
a test that scans the source.
A green check proves only that the gate's own spec was satisfied. A
gate can be quietly configured to check nothing and stay green. The
global mirrors-mypy pre-commit hook silently disabled 13 error codes,
and typecheck ran
--changed instead of --all (fixed in 1.9.12: neutered hook
removed, run-plugin-typecheck --all, typecheck.yml gating every
PR). Discriminating test for any suspicious gate: introduce one known
violation and confirm the gate goes red. If it stays green, the bug
is inside the gate itself.
Plugins execute from Claude Code's cache directory rather than the
repo checkout, so a CWD-relative path in a hook resolves to nothing. The
conserve session-start hook broke exactly this way and was fixed by
inlining its JSON utilities (CHANGELOG 1.4.1; the inlined-copy sync
notice lives in scripts/shared/json_utils.sh). Rule: hooks resolve
paths from ${CLAUDE_PLUGIN_ROOT} or relative to their own script
file, never from the working directory.
After two consecutive failed attempts of the same shape (same file,
same error class, same tool), do not try a third variation. Switch to
a read-only diagnostic: the discriminating command from the matching
row above, verbose test output, or printing the actual state. Then
report four things: what you believed, what the evidence now says,
what you would try differently, and an explicit ask. This discipline
comes from the global CLAUDE.md and is wired into
plugins/sanctum/commands/fixit.md. It exists to kill the
"47 edits to make a test pass" loop.
python3 with a
stdin JSON payload and the side effect (beyond exit 0) was
observed.Compiled 2026-07-02 against repo v1.9.15, branch discussions-fix-1.9.14.
All commit hashes verified with git log --oneline -1 <hash>. Facts
most likely to drift, with re-verification one-liners:
rg -n '"timeout"' plugins/herald/hooks/hooks.json and
rg -n 'LLM_TIMEOUT_SECONDS' plugins/herald/hooks/double_shot_latte.py
(10 and 8 as of 2026-07-02).rg -n 'THRESHOLD|TIER1|TIER2' .github/workflows/slop-check.yml
(3.0 as of 2026-07-02).rg -n 'UP007|--python 3.9' .github/workflows/python39-compat.yml.rg -n 'UP017' pyproject.toml.rg -n 'def read_hook_payload' plugins/abstract/hooks/shared/hook_io.py.ls scripts/check_pinned_versions.py scripts/capabilities-sync-check.sh.rg -n -A 8 'validate-skills:' Makefile.rg -n 'norecursedirs' pyproject.toml.gh pr view 511 and the 18c9340d commit body.© athola, MIT. 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/night-market-debugging-playbook of athola/claude-night-market.
Open the folder on GitHubat commit 9f3eb00
Night Market Debugging Playbook 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 |
|---|---|---|---|---|---|---|
| Night Market Debugging Playbook this skillathola/claude-night-market | 341 | — | ~3.8k | Automated safety check: Pass | MIT | |
| LangBot Plugin Developmentlangbot-app/LangBot | 18k | — | ~3.9k | Automated safety check: Pass | Apache-2.0 | |
| Python Performance Optimizationwshobson/agents | 40k | 13 repos | ~814 | Automated safety check: Pass | MIT | |
| Git History Bug Auditben-manes/caffeine | 18k | — | ~3.3k | Automated safety check: Pass | Apache-2.0 | |
| Keybase RPC Log Analysiskeybase/client | 9.3k | — | ~3k | Automated safety check: Pass | BSD-3-Clause | |
| The Art of Debuggingstas00/the-art-of-debugging | 1.7k | — | ~6.1k | Automated safety check: Notes | CC-BY-SA-4.0 |
langbot-app/LangBot
Guides building, debugging and testing LangBot plugins: components, SDK calls, README and locale rules, SDK pitfalls and WebSocket-based testing.
wshobson/agents
Profiles slow Python code with cProfile and memory profilers, then applies targeted fixes for CPU, memory, I/O and query bottlenecks.
ben-manes/caffeine
Audits a module by walking its git history commit by commit, tracking unresolved issues forward, and reporting the ones that survive to HEAD as findings.
keybase/client
Captures a clean Keybase service log and analyzes it for redundant, duplicated or looping RPCs, then checks whether a caching fix reduced the calls.
stas00/the-art-of-debugging
Condensed debugging method and tool recipes for Unix, Python and PyTorch programs: crashes, hangs, segfaults, wrong output, CUDA OOM, NaN values and slowness.
google/adk-python
Sets up a local ADK Python development environment in a git clone of the open-source adk-python repository: a uv virtual environment, all dependency extras, pre-commit hooks, and a first unit-test…
athola/claude-night-market
Run and interpret repo diagnostic scripts (ratchets, validators, token stats).
athola/claude-night-market
Evaluate Claude skill quality through auditing. An agent skill from athola/claude-night-market.
athola/claude-night-market
Coordinates Claude agent teams via filesystem protocol. An agent skill from athola/claude-night-market.
athola/claude-night-market
Delegates execution to eight CLIs (Gemini, Qwen, MiniMax, GLM, Muse, Codex, OpenCode, Glimmer).
athola/claude-night-market
Guide minimal code via a decision ladder with full safety, edge, and negative-case coverage.
athola/claude-night-market
Build a project skill library in .claude/skills/ via discovery, parallel authoring, and review.
Works with
Categories
Triage night-market failures by symptom (hooks, CI, tests). An agent skill from athola/claude-night-market. Night Market Debugging Playbook is an agent skill from athola/claude-night-market. Triage night-market failures by symptom (hooks, CI, tests).
Night Market Debugging Playbook fits situations like: A check fails unexpectedly; use night-market-operations.
Run `npx skills add athola/claude-night-market --skill night-market-debugging-playbook -a claude-code`. Or copy the skill folder (.claude/skills/night-market-debugging-playbook in athola/claude-night-market) into .claude/skills/night-market-debugging-playbook in your project. Claude Code loads it when a task matches its description.
Run `npx skills add athola/claude-night-market --skill night-market-debugging-playbook -a codex`. Or copy the skill folder (.claude/skills/night-market-debugging-playbook in athola/claude-night-market) into .agents/skills/night-market-debugging-playbook 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 athola/claude-night-market --skill night-market-debugging-playbook -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/night-market-debugging-playbook, .gemini/skills/night-market-debugging-playbook, .github/skills/night-market-debugging-playbook and .opencode/skills/night-market-debugging-playbook in your project.
Going by SKILL.md and its folder, Night Market Debugging Playbook needs the command-line tools its instructions call (rg, make, uv, python3, git and python). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv, git and gh, 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.
Night Market Debugging Playbook is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k 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 Night Market Debugging Playbook: LangBot Plugin Development (langbot-app/LangBot, 18k stars), Python Performance Optimization (wshobson/agents, 40k stars), Git History Bug Audit (ben-manes/caffeine, 18k stars) and Keybase RPC Log Analysis (keybase/client, 9.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
athola (a GitHub user) maintains it in athola/claude-night-market, which has 341 GitHub stars. The repository holds 152 skills in this directory. The repository was last updated on October 9, 2026.
Source: athola/claude-night-market on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.