diff --git a/.gitignore b/.gitignore index 26173e4d..7f1d4526 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,8 @@ dist/ downloads/ eggs/ .eggs/ -lib/ +# lib/ is ignored but allow specific paths (exceptions below) +*/lib/ lib64/ # Exception: Include plugin and skill script libraries diff --git a/skills/docker-sandbox/SKILL.md b/plugins/me/skills/claude-isolated-test/SKILL.md similarity index 99% rename from skills/docker-sandbox/SKILL.md rename to plugins/me/skills/claude-isolated-test/SKILL.md index de1443bf..d691a5c1 100644 --- a/skills/docker-sandbox/SKILL.md +++ b/plugins/me/skills/claude-isolated-test/SKILL.md @@ -1,9 +1,9 @@ --- -name: docker-sandbox +name: claude-isolated-test description: Use when testing Claude Code components (SKILLs, Commands, Hooks) in isolated Docker environments, needing reproducible test conditions, or testing without polluting local environment --- -# Docker Sandbox Testing +# Claude Isolated Testing ## Overview @@ -418,7 +418,7 @@ ENTRYPOINT ["/usr/bin/env", "bash"] ## Comparison with tmux-testing -| Feature | docker-sandbox | tmux-testing | +| Feature | claude-isolated-test | tmux-testing | |---------|----------------|--------------| | **Isolation** | Full OS isolation | Process isolation | | **TTY** | No (unless combined) | Yes | diff --git a/skills/docker-sandbox/docker/.gitkeep b/plugins/me/skills/claude-isolated-test/docker/.gitkeep similarity index 100% rename from skills/docker-sandbox/docker/.gitkeep rename to plugins/me/skills/claude-isolated-test/docker/.gitkeep diff --git a/skills/docker-sandbox/docker/Dockerfile b/plugins/me/skills/claude-isolated-test/docker/Dockerfile similarity index 100% rename from skills/docker-sandbox/docker/Dockerfile rename to plugins/me/skills/claude-isolated-test/docker/Dockerfile diff --git a/skills/docker-sandbox/scripts/lib/.gitkeep b/plugins/me/skills/claude-isolated-test/scripts/lib/.gitkeep similarity index 100% rename from skills/docker-sandbox/scripts/lib/.gitkeep rename to plugins/me/skills/claude-isolated-test/scripts/lib/.gitkeep diff --git a/skills/docker-sandbox/scripts/lib/docker-helpers.sh b/plugins/me/skills/claude-isolated-test/scripts/lib/docker-helpers.sh similarity index 100% rename from skills/docker-sandbox/scripts/lib/docker-helpers.sh rename to plugins/me/skills/claude-isolated-test/scripts/lib/docker-helpers.sh diff --git a/skills/docker-sandbox/scripts/lib/test-helpers.sh b/plugins/me/skills/claude-isolated-test/scripts/lib/test-helpers.sh similarity index 100% rename from skills/docker-sandbox/scripts/lib/test-helpers.sh rename to plugins/me/skills/claude-isolated-test/scripts/lib/test-helpers.sh diff --git a/skills/docker-sandbox/scripts/run-docker-test.sh b/plugins/me/skills/claude-isolated-test/scripts/run-docker-test.sh similarity index 97% rename from skills/docker-sandbox/scripts/run-docker-test.sh rename to plugins/me/skills/claude-isolated-test/scripts/run-docker-test.sh index ece73e2a..fa2dbb20 100755 --- a/skills/docker-sandbox/scripts/run-docker-test.sh +++ b/plugins/me/skills/claude-isolated-test/scripts/run-docker-test.sh @@ -61,7 +61,7 @@ fi # 2. Check if image exists, build if needed if ! docker image inspect "$IMAGE_NAME" &>/dev/null; then echo "Image not found. Building $IMAGE_NAME..." >&2 - build_claude_image "$IMAGE_NAME" "$PROJECT_ROOT/skills/docker-sandbox/docker" + build_claude_image "$IMAGE_NAME" "$SCRIPT_DIR/../docker" fi # 3. Get OAuth token from Keychain (macOS) or environment diff --git a/skills/docker-sandbox/tests/.gitkeep b/plugins/me/skills/claude-isolated-test/tests/.gitkeep similarity index 100% rename from skills/docker-sandbox/tests/.gitkeep rename to plugins/me/skills/claude-isolated-test/tests/.gitkeep diff --git a/skills/docker-sandbox/tests/example-command-test.yaml b/plugins/me/skills/claude-isolated-test/tests/example-command-test.yaml similarity index 100% rename from skills/docker-sandbox/tests/example-command-test.yaml rename to plugins/me/skills/claude-isolated-test/tests/example-command-test.yaml diff --git a/skills/docker-sandbox/tests/example-hook-test.yaml b/plugins/me/skills/claude-isolated-test/tests/example-hook-test.yaml similarity index 100% rename from skills/docker-sandbox/tests/example-hook-test.yaml rename to plugins/me/skills/claude-isolated-test/tests/example-hook-test.yaml diff --git a/skills/docker-sandbox/tests/example-skill-test.yaml b/plugins/me/skills/claude-isolated-test/tests/example-skill-test.yaml similarity index 100% rename from skills/docker-sandbox/tests/example-skill-test.yaml rename to plugins/me/skills/claude-isolated-test/tests/example-skill-test.yaml diff --git a/tests/docker-sandbox.bats b/tests/claude-isolated-test.bats similarity index 79% rename from tests/docker-sandbox.bats rename to tests/claude-isolated-test.bats index 44a25f08..a838a642 100755 --- a/tests/docker-sandbox.bats +++ b/tests/claude-isolated-test.bats @@ -1,12 +1,12 @@ #!/usr/bin/env bats -# docker-sandbox.bats: Tests for docker-sandbox skill +# claude-isolated-test.bats: Tests for claude-isolated-test skill load 'helpers/bats_helper.bash' setup() { # Source the helper libraries - DOCKER_SANDBOX_DIR="${BATS_TEST_DIRNAME}/../skills/docker-sandbox" - export DOCKER_SANDBOX_DIR + CLAUDE_ISOLATED_TEST_DIR="${BATS_TEST_DIRNAME}/../plugins/me/skills/claude-isolated-test" + export CLAUDE_ISOLATED_TEST_DIR } teardown() { @@ -20,7 +20,7 @@ teardown() { skip "Docker not available" fi - source "$DOCKER_SANDBOX_DIR/scripts/lib/docker-helpers.sh" + source "$CLAUDE_ISOLATED_TEST_DIR/scripts/lib/docker-helpers.sh" run check_docker_available [ "$status" -eq 0 ] @@ -34,7 +34,7 @@ teardown() { } export -f docker - source "$DOCKER_SANDBOX_DIR/scripts/lib/docker-helpers.sh" + source "$CLAUDE_ISOLATED_TEST_DIR/scripts/lib/docker-helpers.sh" run check_docker_available [ "$status" -ne 0 ] @@ -48,7 +48,7 @@ teardown() { skip "Docker not available" fi - source "$DOCKER_SANDBOX_DIR/scripts/lib/docker-helpers.sh" + source "$CLAUDE_ISOLATED_TEST_DIR/scripts/lib/docker-helpers.sh" local container_name="claude-test-bats-$$-$RANDOM" local test_token="test-token-12345" @@ -72,7 +72,7 @@ teardown() { } @test "test-helpers.sh: verify_contains checks all expected strings" { - source "$DOCKER_SANDBOX_DIR/scripts/lib/test-helpers.sh" + source "$CLAUDE_ISOLATED_TEST_DIR/scripts/lib/test-helpers.sh" local output="This is a test output with multiple lines" @@ -84,7 +84,7 @@ teardown() { } @test "run-docker-test.sh: script exists and is executable" { - local script="$DOCKER_SANDBOX_DIR/scripts/run-docker-test.sh" + local script="$CLAUDE_ISOLATED_TEST_DIR/scripts/run-docker-test.sh" [ -f "$script" ] [ -x "$script" ] @@ -95,7 +95,7 @@ teardown() { skip "Docker not available" fi - local script="$DOCKER_SANDBOX_DIR/scripts/run-docker-test.sh" + local script="$CLAUDE_ISOLATED_TEST_DIR/scripts/run-docker-test.sh" run "$script" [ "$status" -ne 0 ] @@ -107,7 +107,7 @@ teardown() { skip "Docker not available" fi - local script="$DOCKER_SANDBOX_DIR/scripts/run-docker-test.sh" + local script="$CLAUDE_ISOLATED_TEST_DIR/scripts/run-docker-test.sh" run "$script" "/nonexistent/test.yaml" [ "$status" -ne 0 ]