AgentSkillsCN

codespaces

创建、管理和优化 GitHub Codespaces 云端开发环境。配置开发容器、管理资源,让基于云端的开发更加高效流畅。适用于搭建云端开发环境、配置开发容器,或管理 Codespaces 时使用。可在 codespace、devcontainer、云 IDE、远程开发、开发环境、容器化开发等场景下触发。

SKILL.md
--- frontmatter
name: codespaces
description: Create, manage, and optimize GitHub Codespaces cloud development environments. Configure devcontainers, manage resources, and streamline cloud-based development. Use when setting up cloud development environments, configuring devcontainers, or managing Codespaces. Triggers on codespace, devcontainer, cloud IDE, remote development, development environment, container development.

GitHub Codespaces

Cloud development environments that work anywhere.

Prerequisites

  • GitHub Account: With Codespaces access
  • gh CLI: Install from https://cli.github.com/
  • Authentication: Run gh auth login

Quick Reference

Core Commands

ActionCommand
Create codespacegh codespace create -r owner/repo
List codespacesgh codespace list
Open in VS Codegh codespace code -c <name>
Open in browsergh codespace view -c <name> -w
SSH into codespacegh codespace ssh -c <name>
Stop codespacegh codespace stop -c <name>
Delete codespacegh codespace delete -c <name>

Machine Types

TypevCPUsRAMStorageBest For
Basic28GB32GBSimple projects, docs
Standard416GB32GBMost development
Large832GB64GBFull-stack, multiple services
XL1664GB128GBData science, ML
GPU4+16GB+64GB+ML training, CUDA

DevContainer Configuration

Directory Structure

code
.devcontainer/
+-- devcontainer.json           # Default configuration
+-- web-frontend/
|   +-- devcontainer.json       # Frontend-specific
+-- backend-api/
|   +-- devcontainer.json       # Backend-specific
+-- data-science/
    +-- devcontainer.json       # Data science config

Basic devcontainer.json

json
{
  "name": "Project Dev Environment",
  "image": "mcr.microsoft.com/devcontainers/universal:2",
  "features": {
    "ghcr.io/devcontainers/features/node:1": {},
    "ghcr.io/devcontainers/features/python:1": {}
  },
  "customizations": {
    "vscode": {
      "extensions": [
        "GitHub.copilot",
        "ms-python.python"
      ]
    }
  },
  "postCreateCommand": "npm install",
  "forwardPorts": [3000, 5000]
}

Lifecycle Scripts

postCreateCommand

Runs once when container is created:

json
"postCreateCommand": "npm install && npm run setup"

postStartCommand

Runs every time codespace starts:

json
"postStartCommand": "npm run dev:services"

postAttachCommand

Runs when VS Code attaches:

json
"postAttachCommand": "echo 'Welcome! Run npm start to begin.'"

Secrets Management

Setting Secrets

bash
# For a specific repo
gh secret set API_KEY --repo owner/repo

# For Codespaces specifically
gh secret set DB_PASSWORD --app codespaces

# For user (all Codespaces)
gh secret set NPM_TOKEN --user

Using Secrets in devcontainer.json

json
{
  "containerEnv": {
    "DATABASE_URL": "${localEnv:DATABASE_URL}"
  },
  "secrets": {
    "API_KEY": {
      "description": "API key for external service"
    }
  }
}

Port Forwarding

Automatic Forwarding

json
{
  "forwardPorts": [3000, 5000, 8080],
  "portsAttributes": {
    "3000": {
      "label": "Frontend",
      "onAutoForward": "openBrowser"
    },
    "5000": {
      "label": "API",
      "onAutoForward": "notify"
    }
  }
}

Manual Forwarding

bash
gh codespace ports forward 3000:3000 -c <codespace-name>

Common Workflows

Quick Start New Feature

bash
# Create codespace for feature branch
gh codespace create -r owner/repo -b feature-branch -m standardLinux

# Open in VS Code
gh codespace code

PR Review in Codespace

bash
# Create codespace from PR
gh codespace create -r owner/repo --branch pr-branch

# Or use the PR directly
gh pr checkout 123
gh codespace create

Share Environment

bash
# Export port with visibility
gh codespace ports visibility 3000:public -c <name>

# Get shareable URL
gh codespace ports -c <name>

Performance Optimization

Prebuilds

Enable prebuilds for faster startup:

json
// .github/codespaces/prebuild.json
{
  "triggers": {
    "branches": ["main", "develop"],
    "paths": ["package.json", ".devcontainer/**"]
  }
}

Dotfiles Repository

Configure personal dotfiles in GitHub Settings > Codespaces.

Cost Management

Auto-stop Settings

Configure in GitHub Settings > Codespaces:

  • Default idle timeout: 30 minutes
  • Retention period: 7 days

Best Practices

  1. Stop when not in use: gh codespace stop
  2. Delete completed work: gh codespace delete
  3. Use appropriate machine size: Don't over-provision
  4. Enable prebuilds: Faster startup, less billing

Troubleshooting

IssueSolution
Slow startupEnable prebuilds
Out of storageDelete unused files, increase disk
Extension not workingCheck devcontainer extensions config
Port not accessibleCheck forwardPorts configuration
Environment variables missingVerify secrets are set

When to Use This Skill

  • Setting up cloud development environments
  • Configuring devcontainers for team consistency
  • Managing Codespaces via CLI
  • Optimizing development environment performance
  • Sharing development environments
  • PR reviews in isolated environments