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
7 changes: 4 additions & 3 deletions .planning/STATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ See: .planning/PROJECT.md (updated 2026-02-24)

Milestone: v1.0 MVP — SHIPPED 2026-02-24
Status: Milestone Complete
Last activity: 2026-03-08 - Completed quick task 1: Add tmux theme and ease of use config to base Dockerfile
Last activity: 2026-03-23 - Completed quick task 260322-wyy: add gstack to CLAUDE, update README, validate it works by building and creating a mock devcontainer

Progress: [##########] 100%

Expand All @@ -36,9 +36,10 @@ None.
| # | Description | Date | Commit | Directory |
|---|-------------|------|--------|-----------|
| 1 | Add tmux theme and ease of use config to base Dockerfile | 2026-03-08 | 7fc04c9 | [1-add-tmux-theme-and-ease-of-use-config-to](./quick/1-add-tmux-theme-and-ease-of-use-config-to/) |
| 260322-wyy | add gstack to CLAUDE, update README, validate it works by building and creating a mock devcontainer | 2026-03-23 | 9ef5374 | [260322-wyy-add-gstack-to-claude-update-readme-valid](./quick/260322-wyy-add-gstack-to-claude-update-readme-valid/) |

## Session Continuity

Last session: 2026-03-08
Stopped at: Completed quick/1-PLAN.md (tmux config)
Last session: 2026-03-23
Stopped at: Completed quick task 260322-wyy (gstack + Bun)
Resume file: None
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
---
phase: quick
plan: 260322-wyy
type: execute
wave: 1
depends_on: []
files_modified:
- scripts/setup-claude.sh
- base/devcontainer-claude.md
- README.md
- base/Dockerfile
autonomous: false
requirements: [add-gstack, update-docs, validate-build]
must_haves:
truths:
- "gstack is cloned and set up during Docker image build"
- "devcontainer-claude.md lists gstack in Plugins & Skills"
- "README.md lists gstack in What's Included > All images (base)"
- "Base Docker image builds successfully with gstack installed"
artifacts:
- path: "scripts/setup-claude.sh"
provides: "gstack clone + setup commands"
contains: "gstack"
- path: "base/devcontainer-claude.md"
provides: "gstack listed in Plugins & Skills"
contains: "gstack"
- path: "README.md"
provides: "gstack listed in base image tools"
contains: "gstack"
key_links:
- from: "base/Dockerfile"
to: "scripts/setup-claude.sh"
via: "COPY + bash execution during build"
pattern: "setup-claude.sh"
---

<objective>
Add gstack (garrytan/gstack) to the base DevContainer image, update documentation (devcontainer-claude.md and README.md), and validate the build works.

Purpose: gstack provides 28 specialized Claude Code skills as slash commands, enhancing the DevContainer's AI capabilities out of the box.
Output: Updated setup script, documentation, and a validated Docker build.
</objective>

<execution_context>
@$HOME/.claude/get-shit-done/workflows/execute-plan.md
@$HOME/.claude/get-shit-done/templates/summary.md
</execution_context>

<context>
@./CLAUDE.md
@scripts/setup-claude.sh
@base/devcontainer-claude.md
@README.md
@base/Dockerfile
</context>

<tasks>

<task type="auto">
<name>Task 1: Add gstack installation to setup-claude.sh and install Bun in base Dockerfile</name>
<files>scripts/setup-claude.sh, base/Dockerfile</files>
<action>
1. **base/Dockerfile** — Add Bun installation in the USER dev section, BEFORE `setup-claude.sh` is executed (around line 209, after UV install). Use the official install script:
```
# Bun
RUN curl -fsSL https://bun.sh/install | bash
```
This installs bun to `~/.bun/bin/bun`. The `.bashrc` sourced by NVM already handles PATH, but the Dockerfile RUN shell won't have it. So for subsequent RUN commands that need bun, use the full path or add to PATH explicitly.

Also add `ENV PATH="/home/dev/.bun/bin:${PATH}"` right after the bun install RUN so subsequent layers (including setup-claude.sh) can find `bun`.

2. **scripts/setup-claude.sh** — Add a `# --- gstack ---` section AFTER the `# --- GSD ---` block (line 58) and BEFORE the `# --- MCP Servers ---` block. Content:
```bash
# --- gstack ---

git clone https://github.com/garrytan/gstack.git "$HOME/.claude/skills/gstack"
cd "$HOME/.claude/skills/gstack" && ./setup
cd /workspace
```

The setup script likely requires bun (now available from the Dockerfile step above).
</action>
<verify>
<automated>grep -q "gstack" /workspace/scripts/setup-claude.sh && grep -q "bun" /workspace/base/Dockerfile && echo "PASS" || echo "FAIL"</automated>
</verify>
<done>setup-claude.sh contains gstack clone+setup section; base/Dockerfile installs Bun before running setup-claude.sh</done>
</task>

<task type="auto">
<name>Task 2: Update devcontainer-claude.md and README.md with gstack documentation</name>
<files>base/devcontainer-claude.md, README.md</files>
<action>
1. **base/devcontainer-claude.md** — In the `## Plugins & Skills` section (line 51-60), add a new line after the GSD entry (line 52):
```
- gstack — 28 specialized engineering skills as slash commands (garrytan/gstack)
```

Also in `### Languages & Runtimes` section (line 7-9), add Bun:
```
- Bun — `bun`, `bunx`
```

2. **README.md** — In the `### All images (base)` section (around line 157-174), add after the "Agent Browser" line (line 164):
```
- **gstack** — 28 specialized Claude Code engineering skills ([garrytan/gstack](https://github.com/garrytan/gstack))
```

Also add Bun to the base section since it is now in the base image:
```
- **Bun** runtime (`bun`, `bunx`)
```

Since Bun is now in base, the Bun variant section becomes a thin wrapper. Keep the variant as-is for now but add Bun to the base section. The variant may add bun-specific extras in the future.
</action>
<verify>
<automated>grep -q "gstack" /workspace/base/devcontainer-claude.md && grep -q "gstack" /workspace/README.md && echo "PASS" || echo "FAIL"</automated>
</verify>
<done>Both devcontainer-claude.md and README.md document gstack and Bun in the base image tooling</done>
</task>

<task type="checkpoint:human-verify" gate="blocking">
<name>Task 3: Build base image and verify gstack installation</name>
<files>base/Dockerfile</files>
<action>
Build the base Docker image and verify gstack + Bun are correctly installed. Run:
1. `docker build -t devcontainer-base:test -f base/Dockerfile .`
2. `docker run --rm devcontainer-base:test ls ~/.claude/skills/gstack/`
3. `docker run --rm devcontainer-base:test bun --version`
4. `docker run --rm devcontainer-base:test ls ~/.claude/skills/gstack/skills/`
Then present results for human review.
</action>
<verify>
<automated>docker build -t devcontainer-base:test -f base/Dockerfile . 2>&1 | tail -5</automated>
</verify>
<done>Base Docker image builds successfully; gstack directory exists at ~/.claude/skills/gstack/ with skills populated; bun --version returns 1.x+</done>
</task>

</tasks>

<verification>
- `grep -q "gstack" scripts/setup-claude.sh` returns 0
- `grep -q "gstack" base/devcontainer-claude.md` returns 0
- `grep -q "gstack" README.md` returns 0
- `grep -q "bun" base/Dockerfile` returns 0
- Docker base image builds successfully
- gstack directory exists at ~/.claude/skills/gstack/ inside the built image
</verification>

<success_criteria>
- gstack is installed in the base Docker image during build
- Bun runtime is available in the base image
- devcontainer-claude.md documents gstack in Plugins & Skills and Bun in Languages & Runtimes
- README.md documents gstack and Bun in the base image section
- Base Docker image builds without errors
</success_criteria>

<output>
After completion, create `.planning/quick/260322-wyy-add-gstack-to-claude-update-readme-valid/260322-wyy-SUMMARY.md`
</output>
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Quick Task 260322-wyy: Summary

**Task:** add gstack to CLAUDE, update README, validate it works by building and creating a mock devcontainer
**Date:** 2026-03-23
**Status:** Complete

## Changes

### 1. base/Dockerfile
- Added Bun runtime installation (`curl -fsSL https://bun.sh/install | bash`) after UV install
- Added `ENV PATH="/home/dev/.bun/bin:${PATH}"` so Bun is available in subsequent layers

### 2. scripts/setup-claude.sh
- Added `# --- gstack ---` section between GSD and MCP Servers
- Clones `garrytan/gstack` into `~/.claude/skills/gstack`
- Runs `bun install && bun run build` to compile browse binary
- Creates `~/.gstack/projects` global state directory
- Symlinks all 27 skill subdirectories into `~/.claude/skills/` for Claude Code discovery
- Uses manual setup instead of `./setup` to skip Chromium launch verification (incompatible with Docker build — no display)

### 3. base/devcontainer-claude.md
- Added `Bun — bun, bunx` to Languages & Runtimes section
- Added `gstack — 28 specialized engineering skills as slash commands (garrytan/gstack)` to Plugins & Skills section

### 4. README.md
- Added `gstack` and `Bun` entries to "What's Included > All images (base)" section

## Validation

- Docker base image builds successfully
- `bun --version` returns 1.3.11 inside container
- `~/.claude/skills/gstack/` contains full repo with all skill directories
- `browse/dist/browse` binary built successfully
- 27 skill symlinks created in `~/.claude/skills/`

## Design Decision

gstack's `./setup` script tries to launch Playwright Chromium for verification, which fails in Docker build (no display server). Solution: manual setup that replicates all setup steps except the Chromium launch check. agent-browser already installs Playwright + Chromium, so the verification is unnecessary.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,8 @@ All images extend a shared base (`base/Dockerfile` — `debian:trixie`) and run
- **MCP servers**: Serena, Context7, Automem
- **GSD** (Get Shit Done for Claude Code)
- **Agent Browser** + Chrome
- **gstack** — 28 specialized Claude Code engineering skills ([garrytan/gstack](https://github.com/garrytan/gstack))
- **Bun** runtime (`bun`, `bunx`)
- **Docker** CLI + Compose plugin (`docker`, `docker compose`) — mount the host socket to use; works without `sudo` (the entrypoint automatically matches the socket's GID)
- **CLI tools**: git, curl, wget, vim, nano, jq, tmux, xclip, openssh-client, gnupg, cmake, less, unzip, gh, pnpm, tsx
- **Search & file tools**: ripgrep, fd-find, fzf, bat, tree
Expand All @@ -172,6 +174,8 @@ All images extend a shared base (`base/Dockerfile` — `debian:trixie`) and run
- **ttyd** (web terminal)
- **Database clients**: postgresql-client, default-mysql-client, redis-tools
- **ntfy** notification hooks (Notification + Stop events)
- **pi** a minimal terminal coding harness
- **CliDeck** one dashboard for all your AI coding agents

### Bun (`trixie-bun-nvm-uv-claude`)

Expand Down
6 changes: 5 additions & 1 deletion base/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -208,18 +208,22 @@
# UV
RUN curl -LsSf https://astral.sh/uv/install.sh | sh

# Bun
RUN curl -fsSL https://bun.sh/install | bash
ENV PATH="/home/dev/.bun/bin:${PATH}"

# Claude Plugins, MCP, Hooks
ARG CONTEXT7_API_KEY=""

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 216 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
ARG AUTOMEM_ENDPOINT=""
ARG AUTOMEM_API_KEY=""

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 218 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
ARG NTFY_URL=""
ARG NTFY_TOKEN=""

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 220 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ARG "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

ENV CONTEXT7_API_KEY=${CONTEXT7_API_KEY}

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 222 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "CONTEXT7_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
ENV AUTOMEM_ENDPOINT=${AUTOMEM_ENDPOINT}
ENV AUTOMEM_API_KEY=${AUTOMEM_API_KEY}

Check warning on line 224 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 224 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 224 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 224 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 224 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 224 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "AUTOMEM_API_KEY") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/
ENV NTFY_URL=${NTFY_URL}
ENV NTFY_TOKEN=${NTFY_TOKEN}

Check warning on line 226 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / base

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 226 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-php-nvm-uv-claude, php, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 226 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-flutter-rust-nvm-uv-claude, flutter, true, trixie-vnc-nvm-uv-claude:latest=d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 226 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-bun-nvm-uv-claude, bun, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 226 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-rust-nvm-uv-claude, rust, devcontainer-base:latest=docker-image://localhost:5000...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

Check warning on line 226 in base/Dockerfile

View workflow job for this annotation

GitHub Actions / variants (trixie-vnc-nvm-uv-claude, vnc, devcontainer-base:latest=docker-image://localhost:5000/d...

Sensitive data should not be used in the ARG or ENV commands

SecretsUsedInArgOrEnv: Do not use ARG or ENV instructions for sensitive data (ENV "NTFY_TOKEN") More info: https://docs.docker.com/go/dockerfile/rule/secrets-used-in-arg-or-env/

COPY --chown=dev:dev scripts/ntfy-hook.sh $HOME/.local/bin/ntfy-hook.sh
COPY --chown=dev:dev scripts/suggest-context7-hook.sh $HOME/.local/bin/suggest-context7-hook.sh
Expand All @@ -246,7 +250,7 @@
# agent-browser
WORKDIR /workspace

RUN npm install -y -g agent-browser
RUN npm install -y -g agent-browser clideck @mariozechner/pi-coding-agent

RUN agent-browser install --with-deps

Expand Down
2 changes: 2 additions & 0 deletions base/devcontainer-claude.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ This is a DevContainer running Debian Trixie. You are the `dev` user with passwo
### Languages & Runtimes
- Node.js via NVM — `nvm`, `node`, `npm`, `tsx`, `pnpm`
- Python 3 — `python3`, `pip`, `uv`
- Bun — `bun`, `bunx`

### CLI Tools
- `git`, `gh` (GitHub CLI), `delta` (git-delta)
Expand Down Expand Up @@ -50,6 +51,7 @@ MCP servers are configured on first shell login via `init-claude-mcp.sh`. Option

## Plugins & Skills
- GSD (`/gsd:*`) — project management and execution workflow
- gstack — 28 specialized engineering skills as slash commands (garrytan/gstack)
- superpowers — brainstorming, TDD, debugging, code review skills
- everything-claude-code (ECC) — rules installed at `~/.claude/rules/`
- feature-dev, frontend-design, code-review, commit-commands, pr-review-toolkit
Expand Down
20 changes: 20 additions & 0 deletions scripts/setup-claude.sh
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,26 @@ rm -rf /tmp/everything-claude-code

npx -y get-shit-done-cc --claude --global

# --- gstack ---
# Manual setup (skips Chromium launch check — agent-browser already provides Playwright)

git clone https://github.com/garrytan/gstack.git "$HOME/.claude/skills/gstack"
cd "$HOME/.claude/skills/gstack"
bun install
bun run build
mkdir -p "$HOME/.gstack/projects"

# Register skills — symlink each skill subdir into the skills parent
for skill_dir in "$HOME/.claude/skills/gstack"/*/; do
if [ -f "$skill_dir/SKILL.md" ]; then
skill_name="$(basename "$skill_dir")"
[ "$skill_name" = "node_modules" ] && continue
ln -snf "gstack/$skill_name" "$HOME/.claude/skills/$skill_name"
fi
done

cd /workspace

# --- MCP Servers ---

if [ -x "$CLAUDE" ]; then
Expand Down
2 changes: 1 addition & 1 deletion scripts/verify-tools.sh
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ verify_base() {
done

# Other
for cmd in ttyd delta agent-browser claude; do
for cmd in ttyd delta agent-browser claude pi clideck; do
check_cmd "$cmd"
done

Expand Down
Loading