From neatlogs
Use when adding neatlogs observability to a Python project that uses DSPy (imports `dspy`, defines `dspy.Module`s / signatures).
How this skill is triggered — by the user, by Claude, or both
Slash command
/neatlogs:neatlogs-py-dspyThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This project uses **DSPy** (`dspy.Module`, `dspy.Predict`, `dspy.ChainOfThought`, `dspy.ReAct`). Neatlogs instruments it with **`neatlogs.wrap(module)`**.
This project uses DSPy (dspy.Module, dspy.Predict, dspy.ChainOfThought, dspy.ReAct). Neatlogs instruments it with neatlogs.wrap(module).
neatlogs.wrap(module)neatlogs.wrap() installs DSPy class-level hooks (idempotent, global), so passing ANY module instance — including your own dspy.Module subclass — patches every module call, nested. Span tree:
CHAIN dspy.Module.__call__ (Predict / ChainOfThought / ReAct / custom — every module call, nested)
↳ LLM dspy.LM.__call__ (the underlying model request)
↳ RETRIEVER dspy.Retrieve.__call__ (if used)
Combine with @neatlogs.span / neatlogs.trace / neatlogs.log for your own orchestration. The DSPy CHAIN/LLM spans nest under your manual spans.
references/1-install.mdreferences/2-add-init.mdreferences/3-set-env.mdreferences/4-wrap-module.mdreferences/5-spans-trace-log.mdreferences/6-flush-shutdown.mdneatlogs.init() MUST run BEFORE importing dspy (so class hooks patch at the right time). load_dotenv() runs before init().neatlogs.wrap(module), NOT instrumentations=["dspy"]. wrap() patches DSPy's classes directly and works on ANY DSPy version. The instrumentations=["dspy"] path uses the OpenInference DSPy instrumentor, which requires DSPy ≥ 2.6.0 and silently emits no spans on older DSPy — so prefer wrap(), especially when the project pins DSPy < 2.6.neatlogs.wrap(module) installs GLOBAL DSPy class hooks — calling it once on any module instance traces ALL module/LM calls. Wrapping the top-level pipeline module is enough.wrap() returns the module unchanged; you can keep using your existing variable.@span/trace — the CHAIN span is created by the hook. Use @span for YOUR orchestration only.os.getenv().import neatlogs at module top level.references/5-spans-trace-log.mdreferences/span-kinds.mdProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub neatlogs/skills --plugin neatlogs-ts