Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,6 @@
}
}
},
"updateContentCommand": "npm install -g opencode-ai",
"updateContentCommand": "npm install -g opencode-ai @github/copilot",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated in b7d05c9. AGENTS.md now states that updateContentCommand currently installs both opencode-ai and @github/copilot.

"postCreateCommand": "opencode --version && echo 'Development environment ready'"
}
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ jobs:
push: never
runCmd: |
set -eu
for cmd in python3 node npm gh opencode curl jq claude; do
for cmd in python3 node npm gh opencode copilot curl jq claude; do
if ! command -v "$cmd" >/dev/null 2>&1; then
echo "::error::$cmd is missing"
exit 1
Expand Down
10 changes: 5 additions & 5 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ Guidance for AI agents and automated contributors working in this repository.

This repository is a lean development container template for GitHub Codespaces
and local VS Code Dev Containers. It defines a reproducible Ubuntu 26.04
environment with Python 3, Node.js LTS, GitHub CLI, Claude Code CLI, and
OpenCode TUI. The repository contains no application source code — all
meaningful files are configuration.
environment with Python 3, Node.js LTS, GitHub CLI, GitHub Copilot CLI, Claude
Code CLI, and OpenCode TUI. The repository contains no application source code
— all meaningful files are configuration.

## Repository layout

Expand Down Expand Up @@ -103,7 +103,7 @@ docker build --pull -t dev-template:local .devcontainer/
npx -y @devcontainers/cli up --workspace-folder . --remove-existing-container
npx @devcontainers/cli exec --workspace-folder . -- bash -c '
set -eu
for cmd in python3 node npm gh opencode curl jq claude; do
for cmd in python3 node npm gh opencode copilot curl jq claude; do
command -v "$cmd" || { echo "MISSING: $cmd"; exit 1; }
done
claude --version
Expand Down Expand Up @@ -131,7 +131,7 @@ npx @devcontainers/cli exec --workspace-folder . -- bash -c '
re-run its `install.cjs`) to `updateContentCommand` — that step runs as user
`vscode` and fails with `EACCES` trying to rename the root-owned package
(this broke CI in PR #51). `updateContentCommand` should only install
user-writable packages (currently just `opencode-ai`).
user-writable packages (currently `opencode-ai` and `@github/copilot`).
- **CI runs on Copilot/bot-authored PR branches often show `action_required`**
and won't execute automatically. Approve them in the GitHub UI, or run
`gh run rerun <run-id> --repo idvoretskyi/dev` to trigger them.
16 changes: 10 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ Codespaces and local VS Code Dev Containers.
- Python 3 with `venv` and `pip`
- Node.js LTS with `npm`
- GitHub CLI
- GitHub Copilot CLI
- Claude Code CLI (authenticated session persisted across rebuilds)
- OpenCode TUI installed via `updateContentCommand` (cached by prebuilds)
- OpenCode TUI and GitHub Copilot CLI installed via `updateContentCommand`
(cached by prebuilds)
- Bash shell with common utilities
- Build essentials (`gcc`, `make`, and related packages) via base image
- VS Code extensions:
Expand All @@ -35,9 +37,9 @@ The devcontainer is tuned for fast Codespaces startup:
- `common-utils` configured with zsh and Oh My Zsh disabled
- `curl`, `wget`, `jq`, and `git` sourced from the base image — not
re-installed in the Dockerfile
- OpenCode TUI installed in `updateContentCommand` instead of
`postCreateCommand`, so it is cached during Codespaces prebuilds and not
re-run on every start
- OpenCode TUI and GitHub Copilot CLI installed in `updateContentCommand`
instead of `postCreateCommand`, so they are cached during Codespaces
prebuilds and not re-run on every start
- Claude Code authentication stored in a named volume
(`claude-code-config-${devcontainerId}`) so sign-in survives container
rebuilds
Expand Down Expand Up @@ -77,14 +79,16 @@ created from `main` will start in approximately **10–25 seconds**.
1. Click "Code" button on the GitHub repository
2. Select "Create codespace on main"
3. Wait for the environment to build
4. Run `claude` in the integrated terminal and follow the authentication prompt
4. Run `copilot` or `claude` in the integrated terminal and follow the
authentication prompt

### VS Code Local Dev Containers

1. Clone this repository
2. Open in VS Code
3. Click "Reopen in Container" when prompted
4. Run `claude` in the integrated terminal and follow the authentication prompt
4. Run `copilot` or `claude` in the integrated terminal and follow the
authentication prompt

## Repository Structure

Expand Down