diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1c2721e..3d76521 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -74,7 +74,22 @@ Edit the relevant `SKILL.md` or data file. Test by running the skill locally wit ## Testing -There is no automated test harness for skills — they are instruction sets interpreted by Claude Code, not code with unit tests. The validation steps are: +The repo ships a three-tier test suite under `tests/`. Full details are in [tests/README.md](tests/README.md). The short version: + +```bash +./tests/run-tests.sh # tier-1 skill tests + tier-2 invariants (~5 min) +./tests/run-tests.sh --verbose # show per-assertion output +``` + +| Tier | What it tests | Speed | +|---|---|---| +| 2 | Grep/filesystem invariants (no Claude invocation) | <1s | +| 1 | Each skill loads and describes itself correctly | ~1–2min per skill | +| 3 | Full pipeline run on `verkyyi/agent-team-playground` | ~20–35min, opt-in | + +Tier-1 and tier-2 also run in CI on every PR (`ci-tests.yml`). + +Additional validation steps for specific changes: 1. **Load the plugin**: `claude --plugin-dir .` — confirm no startup errors. 2. **Run the skill manually**: invoke `/discover-workflows` or `/install-workflow` and walk through the flow. diff --git a/README.md b/README.md index e18e51a..f3206aa 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ To remove workflows this plugin installed into your target repo: - `gh aw remove ` for each installed workflow (deletes both the `.md` source and the compiled `.lock.yml`), then commit the deletion. - `gh secret delete CLAUDE_CODE_OAUTH_TOKEN` — or `ANTHROPIC_API_KEY`, whichever path you used — to unset the auth secret. -- For `agent-team` specifically, also delete the seven labels: `gh label delete agent-team` plus `gh label delete state:` for each of `plan-needed`, `impl-needed`, `review-needed`, `done`, `blocked`, and `in-progress`. +- For `agent-team` specifically, also delete the seven labels: `gh label delete agent-team` and `gh label delete agent-team:reviewed`, plus `gh label delete state:` for each of `plan-needed`, `impl-needed`, `review-needed`, `done`, and `blocked`. Nothing else is persisted — the plugin writes only to your target repo (under user approval) and holds no local state outside Claude Code's own plugin directory.