前端测试
- 作者仓库星标 194
- 作者更新于 实时读取
- 作者仓库 skills
- 领域
- 通用
- 兼容 Agent
-
- Claude Code
- Cursor
- Cline
- Codex
- Windsurf
- Gemini CLI
- +20
- 信任分
- 88 / 100 · 社区维护
- 作者 / 版本 / 许可
- @JetBrains · 未声明 license
- Token 消耗评级
- 低消耗
- 接入复杂程度
- 需手动接入
- 是否需要外部 API Key
- 不需要
- 兼容的系统
- macOS · Linux · Docker
- 底层运行要求
- Docker
- 文件与系统权限
-
- 只读
- 允许写入 / 修改
- Shell 执行
- 网络行为
- 仅限本地
- 安装命令数
- 26 条
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
---
name: skillshare-devcontainer
description: >- Execute CLI commands and tests inside the devcontainer. The host machine is macOS but the pro…
category: 通用
runtime: Docker
---
# skillshare-devcontainer 输出预览
## PART A: 任务判断
- 适用问题:通用任务拆解、检查和交付。
- 输入要求:目标材料、限制条件、期望输出和验收方式。
- 证据边界:围绕“When to Use This / When NOT to Use This / Architecture: Two Layers of Isolation”读取原文规则,不把推断写成作者承诺。
## PART B: 执行结果
- **01** 任务判断:确认你的需求是否属于通用任务拆解、检查和交付,并标出输入、限制和预期结果。
- **02** 执行计划:优先按“When to Use This / When NOT to Use This / Architecture: Two Layers of Isolation”拆成步骤,说明每一步会读取什么、修改什么、产出什么。
- **03** 交付结果:给出可复制的命令、文件改动、检查清单或内容草稿,并说明如何继续迭代。
- **04** 风险边界:结合 读取文件、写入/修改文件、执行终端命令、主要在本地完成、通常不需要额外 API Key 给出执行前确认项。
## Running Rules
- 读取文件、写入/修改文件、执行终端命令;主要在本地完成;通常不需要额外 API Key。
- 先小样例验证,再放大到真实任务。
- 交付时同时给结果、检查口径和下一步迭代建议。 原文出现了 `/home`、`/workspace`、`/tmp` 这类斜杠命令;如果你的 Agent 支持命令触发,优先用命令开场,再补充目标和边界。
告诉 Agent 目标文件或材料、期望结果、不可改范围、是否允许联网或执行命令。本 Skill 的权限画像是:读取文件、写入/修改文件、执行终端命令。
先用一个小任务确认它会围绕“When to Use This / When NOT to Use This / Architecture: Two Layers of Isolation”工作;涉及文件或命令时,先看 diff、日志、预览或测试结果。
检查最终产物是否包含明确结果、必要证据和下一步动作;如果输出泛泛而谈,就补充输入、边界和验收标准后重跑。
---
name: skillshare-devcontainer
description: >- Execute CLI commands and tests inside the devcontainer. The host machine is macOS but the pro…
category: 通用
source: JetBrains/skills
---
# skillshare-devcontainer
## 什么时候使用
- 用于组织测试、定位失败并形成修复闭环 适合处理通用任务拆解、检查、交付和复盘,核心价值是把输入、判断、执行、验证和交付边界固定下来,避免 Agent 泛泛回答。 把任务拆成可执行、可检查、可继续迭代的步骤;通常不需要额外 API Key…
- 面向通用任务拆解、检查和交付,优先处理能明确输入、步骤和验收标准的工作。
## 需要提供什么
- 目标材料、目录范围、期望结果和不可改动内容。
- 是否允许联网、执行命令、读写文件或调用外部服务。
## 执行规则
- 围绕「When to Use This / When NOT to Use This / Architecture: Two Layers of Isolation」组织步骤,不把推断写成作者事实。
- 读取文件、写入/修改文件、执行终端命令;主要在本地完成;通常不需要额外 API Key。
- 先跑小样例,确认结果可检查后再扩大任务范围。
## 输出要求
- 给出最终产物、关键证据、验证方式和下一步动作。
- 信息不足时标记 unknown,不编造命令、平台或依赖。 作者原文负责流程事实;仓库文件负责来源和命令;流狐只补充适用场景、限制和质量判断。
skill "skillshare-devcontainer" {
输入层 -> 用户目标 + 目标文件 + 禁止范围 + 验收标准
上下文层 -> When to Use This / When NOT to Use This / Architecture: Two Layers of Isolation
规则层 -> SKILL.md 触发条件 / 执行顺序 / 输出格式
运行层 -> Docker | 读取文件、写入/修改文件、执行终端命令 | 主要在本地完成
安全层 -> 通常不需要额外 API Key + 小任务验证 + diff / 日志复核
输出层 -> 可复制结果 + 检查清单 + 下一步迭代
} Execute CLI commands and tests inside the devcontainer. The host machine is macOS but the project binary is Linux — running CLI commands on the host will silently produce wrong results or fail. This skill prevents that mistake.
When to Use This
- Running
ss/skillsharecommands for verification - Running
go test,make test,make check - Reproducing a bug report
- Testing a feature you just implemented
- Starting the web UI dashboard
- Any command that needs the skillshare binary or Go toolchain
When NOT to Use This
- Editing source code (do that on host via Read/Edit tools)
- Running
gitcommands (git works on host) - Running
make fmt,make lint(host-safe Go toolchain commands; no container needed) - E2E test runbooks → use
cli-e2e-testskill instead (it handles ssenv isolation)
Architecture: Two Layers of Isolation
Host (macOS)
└─ Devcontainer (Linux, Debian-based)
├─ Default HOME: /home/developer (persistent volume)
├─ Source: /workspace (bind-mount of repo root)
└─ ssenv environments: ~/.ss-envs/<name>/ (isolated HOME dirs)
Devcontainer = Linux environment with Go, git, pnpm, air (hot-reload). Source code is at /workspace (bind-mount of the host repo). The ss / skillshare wrapper auto-builds from source on every invocation — no manual make build needed. Edit code on the host, then immediately docker exec to run it; the change is picked up automatically.
ssenv = Isolated HOME directories within the devcontainer. Each env gets its own ~/.config/skillshare/, ~/.claude/, etc. Use ssenv when you need a clean state (testing init, install, sync) without polluting the container's default HOME.
Zero-Rebuild Workflow
Source code is bind-mounted into the container at /workspace. The ss wrapper runs go build transparently on every invocation:
- Edit files on host (Read/Edit tools)
docker exec $CONTAINER ss <command>— picks up your changes instantly- No
make build, no restart, no rebuild step
This also applies to go test — tests always compile against the latest source. The Web UI backend uses air for hot-reload (same zero-rebuild experience).
Entering the Devcontainer
The quickest way — one command builds, initialises, and enters the shell:
make devc # build + init + interactive shell (one step)
make devc-up # start only (no shell)
make devc-down # stop
make devc-restart # restart + re-run start-dev.sh
make devc-reset # full reset (remove volumes), then `make devc` to re-init
make devc-status # show container status
Works with or without VS Code — make devc handles the full lifecycle autonomously.
Programmatic access (for docker exec workflows)
CONTAINER=$(docker compose -f .devcontainer/docker-compose.yml ps -q skillshare-devcontainer 2>/dev/null)
If $CONTAINER is empty, tell the user:
Devcontainer is not running. Start it with
make devc-up.
Then verify the binary:
docker exec $CONTAINER bash -c \
'/workspace/.devcontainer/ensure-skillshare-linux-binary.sh && ss version'
Running Commands
Simple command (uses container's default HOME)
docker exec $CONTAINER ss <command> [flags]
Good for: ss version, ss status, ss list, ss check, ss audit.
Command with isolated HOME (clean state)
ENV_NAME="test-$(date +%s)"
docker exec $CONTAINER ssenv create "$ENV_NAME" --init
docker exec $CONTAINER ssenv enter "$ENV_NAME" -- ss status
# Cleanup when done:
docker exec $CONTAINER ssenv delete "$ENV_NAME" --force
Good for: testing init, install, sync, uninstall — anything that modifies config/state.
Multi-command sequence
docker exec $CONTAINER ssenv enter "$ENV_NAME" -- bash -c '
ss install runkids/demo-skills --track --force
ss list
ss sync
'
Always use bash -c '...' for multi-command sequences inside ssenv enter.
Go tests
# All tests (unit + integration)
docker exec $CONTAINER bash -c 'cd /workspace && make test'
# Unit tests only
docker exec $CONTAINER bash -c 'cd /workspace && make test-unit'
# Integration tests only
docker exec $CONTAINER bash -c 'cd /workspace && make test-int'
# Specific test
docker exec $CONTAINER bash -c 'cd /workspace && go test ./tests/integration -run TestInit_Fresh -count=1'
# Specific package
docker exec $CONTAINER bash -c 'cd /workspace && go test ./internal/install/... -count=1'
Always cd /workspace before Go commands — ssenv changes HOME which can break module resolution.
Go tests with auth disabled
Some tests (e.g., TestResolveToken, TestAuthEnv) need auth credentials removed:
docker exec $CONTAINER bash -c '
eval "$(credential-helper --eval off)"
cd /workspace
go test ./internal/github -run TestResolveToken -count=1
eval "$(credential-helper --eval on)"
'
Web UI Dashboard
# Start (global mode)
docker exec $CONTAINER ui
# Start (project mode — uses ~/demo-project)
docker exec $CONTAINER ui -p
# Stop
docker exec $CONTAINER ui stop
Dashboard accessible at http://localhost:5173 (Vite dev server with HMR).
API backend at http://localhost:19420.
Logs: /tmp/api-dev.log, /tmp/vite-dev.log.
ssenv Quick Reference
| Shortcut | Full form | Purpose |
|---|---|---|
ssnew <name> |
ssenv create <name> + enter |
Create and enter isolated shell |
ssuse <name> |
ssenv enter <name> |
Enter existing isolated shell |
ssrm <name> |
ssenv delete <name> --force |
Delete environment |
ssls |
ssenv list |
List all environments |
ssback |
ssenv reset |
Leave isolated context |
sshelp |
help |
Show all devcontainer commands |
For automation (non-interactive), prefer ssenv enter <name> -- <command> over ssnew/ssuse (which launch subshells).
Ports
| Port | Service | Notes |
|---|---|---|
| 5173 | Vite dev server | React dashboard with HMR |
| 19420 | Go API backend | skillshare ui server |
| 3000 | Docusaurus | docs command in devcontainer |
Common Mistakes to Avoid
- Running
sson host — macOS binary won't match Linux container; alwaysdocker exec - Forgetting
cd /workspace— Go tests fail if HOME was changed by ssenv - Using
make teston host — builds macOS binary, then tests run against wrong arch - Skipping
--initon ssenv create — env won't have config; most commands will fail - Not cleaning up ssenv —
ssenv delete <name> --forceafter done; or ask user - Running from /workspace root without -g — the
sswrapper auto-redirects to~/demo-projectin project mode; use-gfor global or setSKILLSHARE_DEV_ALLOW_WORKSPACE_PROJECT=1 - Running
make buildbefore testing — unnecessary; thesswrapper auto-builds from source every time
Rules
- All CLI execution inside devcontainer — no exceptions
- Use ssenv for stateful tests — don't pollute default HOME
- Always verify — run the command and check output; never assume it worked
- Clean up — delete ssenv environments after use (or ask user)
- Report container ID — set
$CONTAINERat the start and reuse throughout
先判断是否适合
作者设计意图
作者的方法与取舍
边界和复核