Use when migrating Agentplane tests to @agentplane/testkit, replacing local test helpers, fixing testkit export/build failures, splitting large CLI/backend suites, or diagnosing missing testkit dist exports in package builds.
Scanned 9/13/2026
Install to Claude Code
npx -y skills add basilisk-labs/agentplane --skill agentplane-testkit-migration --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Agentplane Testkit Migration?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/basilisk-labs-agentplane-testkit-migration)More formats (shields.io, HTML) on the badges page.
---
name: agentplane-testkit-migration
description: Use when migrating Agentplane tests to @agentplane/testkit, replacing local test helpers, fixing testkit export/build failures, splitting large CLI/backend suites, or diagnosing missing testkit dist exports in package builds.
---
# Agentplane Testkit Migration
## Use This Skill When
- A task mentions `@agentplane/testkit`, `run-cli.test-helpers`, shared fixtures, Vitest wrappers, or test helper duplication.
- CI/build fails because `packages/agentplane/src/testing/*` cannot import `../../../testkit/dist/*`.
- A large test file is being split into scenario-focused suites.
- Tests use local helper clones that should move behind the canonical testkit surface.
## Source Of Truth
Prefer exported testkit surfaces over deep imports or local helper copies. Before adding a helper, search for an existing one:
```bash
rg -n "tempRepo|mockTaskBackend|mockPrApi|mockConfig|describeWhen|runCliSilent|installRunCliIntegrationHarness" packages/testkit packages/agentplane/src
```
## Migration Steps
1. Identify the test family: CLI PR flow, task lifecycle, release/upgrade, runner, recipes, Redmine/backend, or scripts.
2. Replace local setup with canonical testkit helpers:
- repository setup: `tempRepo`, git helpers, config writers
- backend setup: mock task backend helpers
- GitHub PR setup: mock PR API helpers
- suite gating: `describeWhenEnvPresent`, `describeWhenNotHook`, `describeCritical`
3. Keep compatibility exports in `packages/agentplane/src/testing/index.ts` only as a bridge. The canonical implementation belongs in `packages/testkit`.
4. If `agentplane build` imports from `../../../testkit/dist/*`, ensure `@agentplane/testkit` is built before `agentplane`.
5. Remove obsolete shims only after `rg` proves no imports remain.
## Build-Safe Export Checklist
When adding or moving a helper:
1. Export it from the package-local module where it is implemented.
2. Export it from the public testkit barrel.
3. Export compatibility aliases only where existing agentplane tests still depend on them.
4. Run both focused tests and package builds.
Common failure:
```text
Module "../testing/index.js" has no exported member ...
Cannot find module "../../../testkit/dist/index.js"
```
Interpretation: the helper was migrated without a complete export chain, or build order skipped testkit.
## Verification
Use focused checks first, then the smallest relevant package build:
```bash
bun run --filter=@agentplane/testkit build
bun run --filter=agentplane build
bunx vitest run <focused-test-files>
```
For known slow PR-flow suites, prefer the recorded single-worker route instead of broad retries.
## Boundaries
- Do not introduce general testing style rules here.
- Do not add helper abstractions without at least two current consumers or an immediate build/export need.
- Do not hide fragile setup in testkit if the setup is task-specific and unlikely to recur.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!