claude-code-plugin-ref…
Explain plugin, skill, command, agent, and hook mechanics used here. Use when authoring or debugging plugins. Do not use for ops; use night-market-operations.
Run and ship this repo: make targets, artifacts, release runbook. Use when testing, linting, or releasing. Do not use for setup; use night-market-build-and-env.
$ npx -y skills add athola/claude-night-market --skill night-market-operations --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/night-market-operationsContext preview
The summary Claude sees to decide when to auto-load this skill.
Run and ship this repo: make targets, artifacts, release runbook. Use when testing, linting, or releasing. Do not use for setup; use night-market-build-and-env.
name: night-market-operations description: "Run and ship this repo: make targets, artifacts, release runbook. Use when testing, linting, or releasing. Do not use for setup; use night-market-build-and-env."
This skill is the runbook for operating the claude-night-market repo: what each make target actually executes, where artifacts land, and the exact sequence that ships a release. Every command below was verified against the Makefile, scripts/, and .github/workflows/ on 2026-07-02 (repo v1.9.15).
Terms used once and reused throughout:
`.claude-plugin/plugin.json` manifest. Most have their own Makefile, pyproject.toml, and tests/.
vendored at `plugins/abstract/bin/skrills`. Every skrills target has a Python fallback, so a missing binary never blocks you.
`clawhub/` by `scripts/clawhub_export.py`.
All commands run from the repo root unless a `cd` is shown. `uv` is required for everything Python. For environment setup, see night-market-build-and-env.
| Command | What it actually executes | When to use | Expected output shape | |---------|---------------------------|-------------|-----------------------| | `make test` | `./scripts/run-plugin-tests.sh --all`: per plugin, runs `make test --quiet` if the plugin Makefile has a `test:` target, else `uv run python -m pytest tests/ --tb=short --quiet` if pyproject mentions pytest. Skips plugins without `tests/`. | Full sweep before a PR or release. | Per-plugin pass/fail/skip lines. Failures re-run verbose. | | `make lint` | `uv run ruff format plugins/`, then `uv run ruff check --fix plugins/`, then ruff format again, then `uv run bandit --quiet -c pyproject.toml -r plugins/`. All use root pyproject.toml config. | Before every commit. Mutates files (auto-fix). | Four staged sections ending "Lint Complete". | | `make typecheck` | `./scripts/run-plugin-typecheck.sh --all`: per-plugin `uv run mypy` under each plugin's own strict config, plus a separate `uv run mypy hooks/` pass when `hooks/*.py` exists. | After type-touching changes and before release. | Per-plugin pass/fail. Hooks checked as a sub-step. | | `make validate-all` | `python3 plugins/abstract/scripts/validate_plugin.py <plugin>` for every plugin. Failures print "(validation failed)" but do NOT stop the loop or fail the target. | Structure audit after manifest edits. | One validation block per plugin. Read output, not exit code. | | `make plugin-check` | For each plugin whose Makefile has a `plugin-check:` target: `timeout 180 make -C plugins/<p> plugin-check`. Failures and timeouts print a note, exit code stays 0. | Dogfood/demo sweep before release. | Per-plugin sections. Watch for "(plugin-check failed or timed out)". | | `make docs-sync-check` | `bash scripts/capabilities-sync-check.sh` | PR touches plugin manifests or skills (mirrors capabilities-sync.yml CI). | Drift list or clean pass. Fix drift with `/sanctum:sync-capabilities --fix`. | | `make supply-chain-scan` | `python3 scripts/supply_chain_scan.py` | After dependency or lockfile changes. | Scan report between banner lines. | | `make validate-skills` | `skrills validate --skill-dir plugins --target claude` (plugin bin, then PATH). Falls back to `uv run python scripts/check_plugin_hooks.py`. | Skill frontmatter/structure check. | skrills report, or the Python fallback notice plus its output. | | `make analyze-skills` | `skrills analyze --skill-dir plugins`. Falls back to `uv run python scripts/generate_dependency_map.py`. | Skill token-budget and dependency analysis. | Token/dependency stats. | | `make status` | `make -C <plugin> status` for every plugin. | Quick overview. | Per-plugin status or "(status unavailable)". | | `make clean` | `make -C <plugin> clean` for every plugin, errors ignored. | Reset build artifacts. | "Done." |
Two targets have soft failure modes worth repeating: `make validate-all` and `make plugin-check` keep going past failures and can exit 0 while a plugin is broken. Read their output. Do not treat a green exit as proof.
The root Makefile auto-generates delegation targets for every plugin that has a Makefile. `make <plugin>-<target>` is identical to `make -C plugins/<plugin> <target>`:
make sanctum-test # run sanctum's test suite make imbue-lint # run imbue's lint target make abstract-help # list a plugin's own targets
Run a single test file from inside the plugin directory:
cd plugins/imbue && uv run pytest tests/unit/test_deferred_capture.py -x -q
Rules that save you an hour:
pyproject.toml sets `norecursedirs = ["plugins/*", ...]` because plugin conftest.py files collide on import paths. Plugin tests run per-plugin, always.
include `--cov=scripts`, `--cov-report=html:htmlcov`, and `--cov-report=xml`, so even a single-file run writes `htmlcov/` and `coverage.xml` into `plugins/imbue/`. This is normal, not a mess you made.
overrides live in each plugin's `[tool.nightmarket]` `coverage_threshold` (per-plugin values: see night-market-validation-and-qa, the designated home for the threshold inventory). `run-plugin-tests.sh` reads that value and passes `--cov-fail-under=<n>` when the plugin runs via the pytest path.
| Artifact | Producer | Location | Committed? | |----------|----------|----------|------------| | `htmlcov/`, `coverage.xml` | pytest coverage addopts | Repo root and per-plugin dirs | Present in tree but regenerated. Never hand-edit | | `reports/skill-graph.json` | skill-graph tooling | `reports/` | No,
A plugin marketplace for Claude Code. Install only the plugins you need to run git workflows, code review, spec-driven development, and autonomous agents from inside your Claude Code session.
Explain plugin, skill, command, agent, and hook mechanics used here. Use when authoring or debugging plugins. Do not use for ops; use night-market-operations.
States load-bearing decisions, invariants, and weak points. Use when judging a design change. Do not use for gating; use night-market-change-control.
Rebuild the dev environment: uv, Python tiers, pins, traps. Use when onboarding or toolchain breaks. Do not use for daily commands; use night-market-operations.
Classify, gate, and review changes. Use when landing a PR, releasing, or amending rules. Do not use for failure triage; use night-market-debugging-playbook.
Search and record project memory (Discussions, journal, ADRs). Use before re-investigating anything. Do not use for settled battles; see failure-archaeology.
Bind loop 'done' to unfakeable gates. Use to harden egregore/herald loops or promote completion_integrity. Not for QA gates; use night-market-validation-and-qa.