Skip to content

Refactor to shared base image, add Flutter/Rust variants, CI/CD, and tooling#19

Merged
recoskyler merged 15 commits intolatestfrom
dev
Mar 7, 2026
Merged

Refactor to shared base image, add Flutter/Rust variants, CI/CD, and tooling#19
recoskyler merged 15 commits intolatestfrom
dev

Conversation

@recoskyler
Copy link
Copy Markdown
Owner

@recoskyler recoskyler commented Mar 3, 2026

Summary

Major overhaul of the devcontainers repository:

  • Shared base image: Extracted common tools into base/Dockerfile (Debian Trixie) — all variant images now extend this base
  • New variants: Added Flutter/Android (with VNC), Rust, and reorganized Bun/PHP images under the trixie-* naming convention
  • CI/CD pipelines: Added build.yml (push-to-GHCR) and check.yml (PR gate) workflows with GHA caching and parallel matrix builds
  • Claude Code integration: Added setup-claude.sh, init-claude-mcp.sh, user-scope CLAUDE.md, hook scripts, and bundled plugins
  • Homebrew (Linuxbrew): Installed in base image for additional package management
  • Runtime tooling: Added verify-tools.sh post-build verification and validate-flutter-runtime.sh for Flutter variant
  • Removed legacy: Deleted old noble-uv-vnc-claude/, templates/bun.Dockerfile, and templates/php.Dockerfile

Changes by area

Dockerfiles

  • New shared base/Dockerfile with all common dependencies
  • Slim variant Dockerfiles that extend the base (trixie-bun-*, trixie-php-*, trixie-rust-*, trixie-vnc-*, trixie-vnc-flutter-*)
  • Follows convention: USER dev at end, POSIX-compatible redirects, Trixie package names

CI/CD

  • Two-job structure: base builds first, then variants run in parallel via matrix
  • Flutter uses three-tier chain (base → VNC → flutter) with conditional VNC rebuild
  • build.yml writes GHA cache; check.yml only reads it
  • PR checks block merge on failure

Scripts

  • setup-claude.sh — Claude CLI installation and configuration
  • init-claude-mcp.sh — Runtime MCP server initialization
  • ntfy-hook.sh / suggest-context7-hook.sh — Claude Code hooks
  • verify-tools.sh — Post-build tool verification
  • validate-flutter-runtime.sh — Flutter/Android runtime validation

Documentation

  • Updated README.md with full project overview
  • Added CLAUDE.md with project conventions
  • Added base/devcontainer-claude.md (user-scope instructions installed in all images)

Test plan

  • gh act push passes locally
  • Base image builds successfully
  • All variant images build and extend the base correctly
  • verify-tools.sh passes in built containers
  • CI matrix jobs complete in parallel without errors

🤖 Generated with Claude Code

@recoskyler recoskyler changed the title Update tldr during setup, use global GSD installation, enable RC for all Claude sessions Update tldr during setup, use global GSD installation Mar 7, 2026
@recoskyler recoskyler changed the title Update tldr during setup, use global GSD installation Update tldr during setup, use global GSD installation, include homebrew Mar 7, 2026
@recoskyler recoskyler changed the title Update tldr during setup, use global GSD installation, include homebrew Update tldr during setup, use global GSD installation, include linuxbrew Mar 7, 2026
@recoskyler recoskyler changed the title Update tldr during setup, use global GSD installation, include linuxbrew Refactor to shared base image, add Flutter/Rust variants, CI/CD, and tooling Mar 7, 2026
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: base

Click to expand verification output
========================================
  Tool Verification: base
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

========================================
  Verification Summary
========================================
  Passed: 49
  Failed: 0
========================================

ALL_CHECKS_PASSED

1 similar comment
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: base

Click to expand verification output
========================================
  Tool Verification: base
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

========================================
  Verification Summary
========================================
  Passed: 49
  Failed: 0
========================================

ALL_CHECKS_PASSED

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: trixie-bun-nvm-uv-claude

Click to expand verification output
========================================
  Tool Verification: trixie-bun-nvm-uv-claude
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

=== Bun tools ===
  PASS: bun
  PASS: bunx

========================================
  Verification Summary
========================================
  Passed: 51
  Failed: 0
========================================

ALL_CHECKS_PASSED

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: trixie-vnc-nvm-uv-claude

Click to expand verification output
========================================
  Tool Verification: trixie-vnc-nvm-uv-claude
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

=== VNC tools ===
  PASS: x11vnc
  PASS: xvfb-run
  PASS: xdg-open

========================================
  Verification Summary
========================================
  Passed: 52
  Failed: 0
========================================

ALL_CHECKS_PASSED

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: trixie-php-nvm-uv-claude

Click to expand verification output
========================================
  Tool Verification: trixie-php-nvm-uv-claude
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

=== PHP tools ===
  PASS: php
  PASS: composer

========================================
  Verification Summary
========================================
  Passed: 51
  Failed: 0
========================================

ALL_CHECKS_PASSED

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: trixie-vnc-nvm-uv-claude

Click to expand verification output
========================================
  Tool Verification: trixie-vnc-nvm-uv-claude
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

=== VNC tools ===
  PASS: x11vnc
  PASS: xvfb-run
  PASS: xdg-open

========================================
  Verification Summary
========================================
  Passed: 52
  Failed: 0
========================================

ALL_CHECKS_PASSED

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: trixie-bun-nvm-uv-claude

Click to expand verification output
========================================
  Tool Verification: trixie-bun-nvm-uv-claude
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

=== Bun tools ===
  PASS: bun
  PASS: bunx

========================================
  Verification Summary
========================================
  Passed: 51
  Failed: 0
========================================

ALL_CHECKS_PASSED

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: trixie-php-nvm-uv-claude

Click to expand verification output
========================================
  Tool Verification: trixie-php-nvm-uv-claude
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

=== PHP tools ===
  PASS: php
  PASS: composer

========================================
  Verification Summary
========================================
  Passed: 51
  Failed: 0
========================================

ALL_CHECKS_PASSED

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: trixie-rust-nvm-uv-claude

Click to expand verification output
========================================
  Tool Verification: trixie-rust-nvm-uv-claude
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

=== Rust tools ===
  PASS: rustc
  PASS: cargo
  PASS: rustup
  PASS: rustfmt
  PASS: cargo-clippy
  PASS: cargo-watch
  PASS: cargo-set-version
  PASS: cargo-nextest

========================================
  Verification Summary
========================================
  Passed: 57
  Failed: 0
========================================

ALL_CHECKS_PASSED

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: trixie-rust-nvm-uv-claude

Click to expand verification output
========================================
  Tool Verification: trixie-rust-nvm-uv-claude
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

=== Rust tools ===
  PASS: rustc
  PASS: cargo
  PASS: rustup
  PASS: rustfmt
  PASS: cargo-clippy
  PASS: cargo-watch
  PASS: cargo-set-version
  PASS: cargo-nextest

========================================
  Verification Summary
========================================
  Passed: 57
  Failed: 0
========================================

ALL_CHECKS_PASSED

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: trixie-vnc-flutter-rust-nvm-uv-claude

Click to expand verification output
========================================
  Tool Verification: trixie-vnc-flutter-rust-nvm-uv-claude
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

=== Rust tools ===
  PASS: rustc
  PASS: cargo
  PASS: rustup
  PASS: rustfmt
  PASS: cargo-clippy
  PASS: cargo-watch
  PASS: cargo-set-version
  PASS: cargo-nextest

=== VNC tools ===
  PASS: x11vnc
  PASS: xvfb-run
  PASS: xdg-open

=== Flutter tools ===
  PASS: flutter
  PASS: dart
  PASS: fvm
  PASS: java
  PASS: chromium
  PASS: adb
  PASS: sdkmanager
  PASS: avdmanager

========================================
  Verification Summary
========================================
  Passed: 68
  Failed: 0
========================================

ALL_CHECKS_PASSED

1 similar comment
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 7, 2026

✅ Tool Verification: trixie-vnc-flutter-rust-nvm-uv-claude

Click to expand verification output
========================================
  Tool Verification: trixie-vnc-flutter-rust-nvm-uv-claude
========================================

=== Base tools ===
  PASS: git
  PASS: curl
  PASS: wget
  PASS: jq
  PASS: less
  PASS: sudo
  PASS: unzip
  PASS: tmux
  PASS: tree
  PASS: vim
  PASS: nano
  PASS: xclip
  PASS: rg
  PASS: fzf
  PASS: bat (batcat)
  PASS: fd (fdfind)
  PASS: tldr
  PASS: duf
  PASS: gh
  PASS: aws
  PASS: terraform
  PASS: kubectl
  PASS: stripe
  PASS: nvm
  PASS: node
  PASS: npm
  PASS: npx
  PASS: pnpm
  PASS: tsx
  PASS: uv
  PASS: gcc
  PASS: g++
  PASS: make
  PASS: cmake
  PASS: pkg-config
  PASS: psql
  PASS: mysql
  PASS: redis-cli
  PASS: ssh
  PASS: nc
  PASS: http
  PASS: ttyd
  PASS: delta
  PASS: agent-browser
  PASS: claude
  PASS: GSD directory
  PASS: ntfy-hook.sh
  PASS: suggest-context7-hook.sh
  PASS: init-claude-mcp.sh

=== Rust tools ===
  PASS: rustc
  PASS: cargo
  PASS: rustup
  PASS: rustfmt
  PASS: cargo-clippy
  PASS: cargo-watch
  PASS: cargo-set-version
  PASS: cargo-nextest

=== VNC tools ===
  PASS: x11vnc
  PASS: xvfb-run
  PASS: xdg-open

=== Flutter tools ===
  PASS: flutter
  PASS: dart
  PASS: fvm
  PASS: java
  PASS: chromium
  PASS: adb
  PASS: sdkmanager
  PASS: avdmanager

========================================
  Verification Summary
========================================
  Passed: 68
  Failed: 0
========================================

ALL_CHECKS_PASSED

@recoskyler recoskyler merged commit cd86867 into latest Mar 7, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant