validate-pluginlisted
Install: claude install-skill radra23/otel-as-code-plugin
# Validate the otel-as-code plugin
Run the project's CI checks locally (plus a couple of local-only sanity checks) and report a concise PASS/FAIL per group plus an overall verdict. On failure, show the failing command's output.
## 1. Hook tests (CI: lint-hooks)
Iterate every suite under `tests/hooks/` — do NOT hardcode the list, so new tests run automatically:
```bash
for t in tests/hooks/*.test.sh; do echo "== $t =="; bash "$t" || exit 1; done
```
## 2. Fixture integrity (CI: validate-fixtures)
- **nodejs-greenfield**: `package.json`, `index.js`, `Dockerfile` exist AND `package.json` has NO `@opentelemetry` dependency.
- **python-greenfield**: `pyproject.toml`, `app.py`, `Dockerfile` exist AND `pyproject.toml` has NO `opentelemetry` dependency.
- **nodejs-brownfield**: `tracing.js` exists AND still contains the three seeded violations — `service.name` as a span attribute, `http.method`, and un-namespaced `orderId` — which the lint tests assert against.
## 3. Plugin manifest & structure (CI: validate-plugin-manifest)
- `claude plugin validate . --strict` — must pass. Validates `plugin.json` (metadata-only), `marketplace.json`, and the auto-discovered components (`commands/*.md`, `agents/*.md`, `skills/<name>/SKILL.md`, `hooks/hooks.json`).
- If the `claude` CLI isn't available: confirm both `.claude-plugin/plugin.json` and `.claude-plugin/marketplace.json` are valid JSON, plugin.json declares NO inline component arrays, and the convention dirs/files exist.
## 4. Shell sa