Claude Code Skills

This project includes Claude Code configuration to assist with development.

CLAUDE.md

The CLAUDE.md file at the project root provides Claude Code with project context:

  • Project structure — module layout, key files and their purposes
  • Plugin API — span types, instrumentation patterns (method replacement, wrapt proxy, async wrappers, interceptors), tags, component IDs
  • Context & Carrier APIget_context() signatures, Carrier format, correlation API
  • Plugin configuration options — all SW_AGENT_* plugin settings
  • Testing framework — Docker-based integration tests, expected data format, test patterns
  • Build commandsmake env, make test, make lint, make doc-gen, etc.
  • CI pipeline — GitHub Actions matrix, Python version coverage
  • GitHub Actions allow list — Apache enforces pinned SHAs for third-party actions
  • Complete plugin inventory — all 35 instrumentation plugins by category

Skills

/new-plugin — Scaffold a New Plugin

Generates all files needed for a new instrumentation plugin:

  • Plugin module (skywalking/plugins/sw_<name>.py) with correct instrumentation pattern based on plugin type (HTTP entry/exit, database, cache, MQ, RPC)
  • Component enum entry in skywalking/__init__.py
  • Test directory (tests/plugin/{data|http|web}/sw_<name>/) with:
    • Test file with parametrized versions
    • Docker Compose configuration
    • Provider and consumer services
    • Expected span data YAML
  • Post-generation reminders (component-libraries.yml, UI logo, doc-gen, lint)

Usage: /new-plugin and provide the library name, type, and versions to test.

/plugin-test — Run Plugin Tests Locally

Runs the same tests that CI runs, but locally:

  • Builds Docker test images for specific Python versions
  • Runs unit tests (no Docker needed) or plugin integration tests
  • Maps plugin names to test paths
  • Supports testing across multiple Python versions by rebuilding the Docker image
  • Includes troubleshooting guidance for common failures (proxy issues, container debugging)

Usage: /plugin-test and specify the scope (e.g., flask, redis, unit, all) and Python version.

Important: If you have http_proxy/https_proxy set, clear them before running plugin tests — the test HTTP requests must reach Docker containers directly.