원클릭으로
testing
// Use when testing a bundle-plugin locally before release — generating dev-marketplace environments, verifying component discovery, running hook smoke tests, and validating cross-platform readiness
// Use when testing a bundle-plugin locally before release — generating dev-marketplace environments, verifying component discovery, running hook smoke tests, and validating cross-platform readiness
Use when reviewing a bundle-plugin for structural issues, version drift, skill quality, workflow integration, or security risks — before releasing, after changes, or after adding skills. Auto-detects scope (full project vs skill vs workflow)
Use when writing, completing, improving, or adapting SKILL.md and agents/*.md in a bundle-plugin — integrating external skills, filling scaffolded stubs, or rewriting for better triggering and token efficiency
Use when generating project structure for new bundle-plugins, adding or removing platform support (Claude Code, Cursor, Codex, OpenCode, Gemini CLI, OpenClaw), updating platform manifests, or migrating hooks and configuration between platforms
Use when optimizing a bundle-plugin or single skill — improving descriptions, reducing tokens, fixing audit findings, restructuring workflows, adding skills to fill gaps, or iterating on user feedback
Use when planning new bundle-plugins, splitting complex skills, combining skills into bundles, or exploring a vague idea about packaging skills
Use when releasing a bundle-plugin, bumping versions, fixing version drift across manifests, setting up version sync infrastructure, updating CHANGELOG, publishing to marketplaces, or checking release readiness
| name | testing |
| description | Use when testing a bundle-plugin locally before release — generating dev-marketplace environments, verifying component discovery, running hook smoke tests, and validating cross-platform readiness |
Dynamic verification of a bundle-plugin project: install it locally, confirm components are discoverable, validate hooks fire correctly, and run cross-platform smoke tests. Complements bundles-forge:auditing (static analysis) with runtime validation.
Core principle: Audit tells you if the structure is correct; testing tells you if it actually works.
Skill type: Flexible — adapt the test scope based on target platforms and project maturity.
Announce at start: "I'm using the testing skill to verify this plugin works correctly."
The target must be a local bundle-plugin project (has package.json + skills/). Remote URLs and archives are not supported — testing requires a local working directory.
| Target | Mode |
|---|---|
| Project root with multiple platforms | Full testing — all 5 test phases |
| Project root with single platform | Platform testing — phases 1-4 for the target platform |
| Single skill directory | Skill-only testing — phase 3 (component discovery) only |
Generate a temporary dev-marketplace for local installation testing.
../dev-marketplace/ adjacent to the project directory.claude-plugin/marketplace.json pointing to the project:{
"name": "<project-name>-dev",
"owner": { "name": "dev" },
"plugins": [
{
"name": "<project-name>",
"source": "../<project-directory-name>"
}
]
}
Dev marketplace created at ../dev-marketplace/
To install locally:
/plugin marketplace add ./dev-marketplace
/plugin install <project-name>@<project-name>-dev
To reload after changes:
/plugin marketplace update <project-name>-dev
To clean up when done:
/plugin marketplace remove <project-name>-dev
Cursor plugins are installed from local paths directly:
To test locally in Cursor:
1. Open Cursor Settings → Extensions → Install from Path
2. Select the project root directory
3. Reload Cursor to pick up changes
skills/ into ~/.agents/skills/ per INSTALL.md.opencode/plugins/See references/platform-test-guides.md for platform-specific setup instructions.
Verify hooks execute without errors by running them directly.
bash hooks/session-start
Expected: Exits 0, prints a one-line prompt containing the project name and available skills. No stderr output.
Verify output format:
CLAUDE_PLUGIN_ROOT is set: valid JSON with hookSpecificOutput.additionalContextCURSOR_PLUGIN_ROOT is set: valid JSON with additional_contextIf the project defines PreToolUse or PostToolUse hooks in hooks.json, run each referenced script directly and verify:
Verify hooks/openclaw-bootstrap/HOOK.md has valid YAML frontmatter with events declaration, and handler.js uses ESM export default.
Verify that all declared components can be found by the host platform.
For each directory under skills/:
SKILL.mdname and descriptionname matches directory namedescription starts with "Use when..."For each .md file under agents/:
For each target platform:
package.json versionGenerate a platform-specific test checklist based on references/platform-test-guides.md and known limitations from bundles-forge:scaffolding — references/platform-adapters.md.
| Platform | Limitation | Test |
|---|---|---|
| Claude Code | Plugin caching breaks ../ paths | Verify no ../ in hook commands or manifest paths |
| Cursor | Bootstrap lost after /clear | Verify session-start runs independently of prior context |
| Codex | No hook bootstrap | Verify AGENTS.md or INSTALL.md has manual setup instructions |
| OpenCode | Plugin JS must use ESM | Verify export default in .opencode/plugins/*.js |
| Gemini CLI | Extension needs contextFileName | Verify gemini-extension.json has contextFileName field |
| OpenClaw | Hook-pack wiring uncertain | Document as known risk in test report |
Generate a test report summarizing all findings.
# Test Report: <project-name>
**Date:** YYYY-MM-DD
**Scope:** [Full / Platform / Skill-only]
**Platforms tested:** [list]
## Results
| Phase | Status | Details |
|-------|--------|---------|
| 1. Local Environment | PASS/FAIL/SKIP | ... |
| 2. Hook Smoke Tests | PASS/FAIL/SKIP | ... |
| 3. Component Discovery | PASS/FAIL/SKIP | N skills, K agents |
| 4. Cross-Platform | PASS/FAIL/SKIP | ... |
## Issues Found
### Critical
- (blocks release)
### Warnings
- (should fix before release)
## Recommendations
- ...
Report location: .bundles-forge/audits/<timestamp>-test-report.md
In the releasing pipeline, testing runs after auditing and before version bump:
audit → test → version bump → publish
If testing reveals critical issues, the release pipeline is blocked until they are resolved.
| Mistake | Fix |
|---|---|
| Skipping local install test | Always test with a real dev-marketplace — file discovery differs from file existence |
| Testing only on one platform | Run cross-platform checklist for every target platform |
| Ignoring hook exit codes | Hooks must exit 0 to avoid blocking the host; test all code paths |
| Not cleaning up dev-marketplace | Always remove dev-marketplace after testing |
| Testing after version bump | Test before bumping — avoid releasing a broken version |
project-directory (required) — bundle-plugin project roottest-report — comprehensive test results written to .bundles-forge/audits/dev-marketplace (temporary) — local marketplace directory for installation testingCalled by:
Calls: