关于 devcontainer-setup
为软件项目生成开发容器配置的技能,面向需要容器化开发环境的项目维护者。它先收集运行时、包管理器、端口和挂载等要求,再创建 `.devcontainer/` 配置文件与启动说明。
主要功能
- 01询问运行时和开发环境需求
- 02生成五类开发容器配置文件
- 03配置端口、挂载和扩展
- 04按包管理器设置依赖安装
- 05覆盖前及扩大范围前要求确认
适用场景
- 01为新项目创建开发容器环境
- 02为单体仓库配置共享目录挂载
- 03按项目需求设置端口与开发工具
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ shipshitdev/ skills --skill devcontainer-setup安装后在 Claude Code 中输入/devcontainer-setup确认已加载。
附带文件plugin.jsonreferences/templates.md
详细介绍
Devcontainer 设置技能
授权范围
仅在用户请求和现有授权范围内操作;加载此技能不会授予新的权限。对于仅要求报告的请求,只提供报告;遵循调用者指定的目标、主机、提供商和成本限制;扩大范围前先询问,并将这些限制传达给委派对象。
约定
输入:
- 项目运行时、现有容器配置以及所请求的开发环境设置
- 已批准的目录挂载和可选工具
输出:
- Dev Container 配置和启动说明
创建/修改:
- 授权设置范围内的
.devcontainer/文件
外部副作用:
- 仅在用户请求时拉取镜像、安装软件包或启动容器
需要确认:
- 覆盖现有配置,或挂载所选项目之外的目录之前
- 添加工具或启动已批准设置范围之外的容器之前
委派给:
docker-expert处理容器配置细节
信息收集
创建 devcontainer 之前,向用户收集以下信息:
必需信息
-
项目名称:项目/容器名称是什么?(例如:
my-project、shipshitdev-api) -
基础镜像:此项目使用什么运行时?
oven/bun:1.3.5— Bun 项目(推荐,速度快)node:20-slim— Node.js 项目node:20— 含更多工具的 Node.js- 自定义镜像路径
-
包管理器:使用哪个包管理器?
bun— Bun(Bun 项目的默认选项)npm— npmpnpm— pnpmyarn— Yarn
-
端口:需要转发哪些端口?(用逗号分隔,例如:
3000, 3001, 5432) -
端口标签(可选):每个端口的标签(例如:
3000=Web, 5432=Postgres) -
父目录挂载:是否应挂载父目录,以便跨仓库访问?
- 是 — 将父目录挂载为
/workspace(适用于 monorepo 和共享库) - 否 — 仅挂载此项目
- 是 — 将父目录挂载为
-
Claude Code 支持:是否包含 Claude Code CLI 设置?
- 是 — 安装 Claude Code,并修复符号链接以便在容器中使用
- 否 — 跳过 Claude Code 设置
-
VS Code 扩展(可选):要安装的其他扩展(用逗号分隔的扩展 ID)
-
Monorepo 结构(如适用):
- 这是包含嵌套
package.json文件的 monorepo 吗? - 应用/软件包目录是什么?(例如:
apps/*, packages/*)
- 这是包含嵌套
要创建的文件结构
.devcontainer/
├── devcontainer.json # VS Code dev container config
├── Dockerfile # Container image definition
├── docker-compose.yml # Docker compose config
├── setup.sh # Post-create setup script
└── README.md # Documentation
模板
根据收集的信息生成全部五个文件:
devcontainer.json— 构建配置、挂载、功能、VS Code 扩展/设置、转发端口、postCreateCommandDockerfile— 基础镜像、工作目录、依赖安装(适配 monorepo)、开发工具、公开端口docker-compose.yml— 服务定义、卷(父目录挂载和 node_modules 缓存)、端口、开发命令setup.sh— 安装依赖;如果用户请求 Claude Code 支持,还会修复主机到容器的 Claude 配置符号链接,并打印 API 密钥设置说明README.md— 快速开始、挂载/端口表、目录结构、故障排除
每个文件的完整填空文本见 references/templates.md({{PLACEHOLDER}} 值取自上述收集的信息)。
包管理器参考
| 包管理器 | 锁定文件 | 安装命令 | 开发命令 |
|---|---|---|---|
| bun | bun.lock* | bun install --frozen-lockfile | bun run dev |
| npm | package-lock.json | npm ci | npm run dev |
| pnpm | pnpm-lock.yaml | pnpm install --frozen-lockfile | pnpm run dev |
| yarn | yarn.lock | yarn install --frozen-lockfile | yarn dev |
实施步骤
- 使用 AskUserQuestion 向用户询问上述必需信息
- 创建
.devcontainer目录 - 根据收集到的配置生成各个文件
- 将
setup.sh设为可执行文件 - 总结创建的内容以及使用方法
使用示例
用户:“为我的 Next.js 项目配置 devcontainer”
- 收集信息:项目使用 Bun,端口为 3000,需要支持 Claude Code
- 在
.devcontainer/中创建全部 5 个文件 - 输出:“已创建 devcontainer 配置。请在 VS Code 中打开,然后点击‘在容器中重新打开’。”
评论
支持 Markdown