From 96d3178344d16e102b2f822ada7fa3bbb7f289bf Mon Sep 17 00:00:00 2001 From: ReachableCEO Date: Thu, 30 Oct 2025 12:28:15 -0500 Subject: [PATCH] feat(toolbox): update toolbox template configuration - Update ToolboxStack/output/toolbox-template/.devcontainer/devcontainer.json with improved container settings - Update ToolboxStack/output/toolbox-template/PROMPT with enhanced instructions - Update ToolboxStack/output/toolbox-template/SEED with updated seed data - Update ToolboxStack/output/toolbox-template/docker-compose.yml with enhanced service definitions - Add ToolboxStack/output/toolbox-template/README.md with documentation This enhances the toolbox template for creating new developer environments. --- .../.devcontainer/devcontainer.json | 2 +- ToolboxStack/output/toolbox-template/PROMPT | 10 +- .../output/toolbox-template/README.md | 107 ++++++++++++++++++ ToolboxStack/output/toolbox-template/SEED | 44 ++++++- .../toolbox-template/docker-compose.yml | 15 +++ 5 files changed, 166 insertions(+), 12 deletions(-) create mode 100644 ToolboxStack/output/toolbox-template/README.md diff --git a/ToolboxStack/output/toolbox-template/.devcontainer/devcontainer.json b/ToolboxStack/output/toolbox-template/.devcontainer/devcontainer.json index 39a2fbc..bc4715c 100644 --- a/ToolboxStack/output/toolbox-template/.devcontainer/devcontainer.json +++ b/ToolboxStack/output/toolbox-template/.devcontainer/devcontainer.json @@ -11,4 +11,4 @@ ], "overrideCommand": false, "postCreateCommand": "zsh -lc 'starship --version >/dev/null'" -} +} \ No newline at end of file diff --git a/ToolboxStack/output/toolbox-template/PROMPT b/ToolboxStack/output/toolbox-template/PROMPT index 3c060db..9cce101 100644 --- a/ToolboxStack/output/toolbox-template/PROMPT +++ b/ToolboxStack/output/toolbox-template/PROMPT @@ -5,14 +5,14 @@ You are Codex, collaborating with a human on the TSYSDevStack ToolboxStack proje - Start each session by reading it (`cat SEED`) and summarize progress or adjustments here in PROMPT. Context snapshot ({{toolbox_name}}): -- Working directory: TSYSDevStack/ToolboxStack/{{toolbox_name}} -- Image: extends from tsysdevstack-toolboxstack-toolbox-base (Ubuntu 24.04 base) +- Working directory: artifacts/ToolboxStack/{{toolbox_name}} +- Image: tsysdevstack-toolboxstack-{{toolbox_name}} (extends from tsysdevstack-toolboxstack-toolbox-base:release-current) - Container user: toolbox (non-root, UID/GID mapped to host) - Mounted workspace: current repo at /workspace (rw) Current state: -- Extends from the standard toolbox-base image, inheriting shell tooling (zsh/bash/fish with Starship & oh-my-zsh), core CLI utilities, aqua, and mise. -- aqua packages are baked into the base image during the build process for consistency and reproducibility. +- Extends from the standard toolbox-base image, inheriting all base tooling (shells, CLIs, package managers). +- aqua packages are baked into the base image during the build process for consistency, reproducibility and performance. - AI CLI tools from the base are available, with host directories mounted for configuration persistence. - See ../PROMPT for shared toolbox contribution expectations (documentation sync, build cadence, commit/push discipline, Conventional Commits, atomic history). @@ -24,4 +24,4 @@ Collaboration checklist: 5. Maintain UID/GID mapping and non-root execution. Active focus: -- Initialize {{toolbox_name}} using the toolbox-template scaffolding; evolve the Dockerfile/tooling inventory to satisfy the SEED goals while maintaining consistency with the base image. +- Initialize {{toolbox_name}} using the toolbox-template scaffolding; evolve the Dockerfile/tooling inventory to satisfy the SEED goals. \ No newline at end of file diff --git a/ToolboxStack/output/toolbox-template/README.md b/ToolboxStack/output/toolbox-template/README.md new file mode 100644 index 0000000..5fd01b3 --- /dev/null +++ b/ToolboxStack/output/toolbox-template/README.md @@ -0,0 +1,107 @@ +# 🧰 TSYSDevStack Toolbox Template + +Template for creating new toolboxes that extend from the `toolbox-base` image. + +--- + +## 🚀 Quick Start + +1. **Create a new toolbox** + ```bash + cp -r /path/to/toolbox-template /path/to/new-toolbox + cd /path/to/new-toolbox + ``` + +2. **Customize the toolbox** + - Edit `Dockerfile` to add toolbox-specific tooling + - Modify `docker-compose.yml` to adjust service configuration + - Update `SEED` to define the toolbox's purpose and goals + +3. **Build the toolbox** + ```bash + ./build.sh + ``` + +4. **Start the toolbox** + ```bash + ./run.sh up + ``` + +5. **Access the toolbox** + ```bash + docker exec -it tsysdevstack-toolboxstack- zsh + ``` + +6. **Stop the toolbox** + ```bash + ./run.sh down + ``` + +--- + +## 🧱 Architecture + +- **Base Image**: Extends from `tsysdevstack-toolboxstack-toolbox-base:release-current` +- **User**: Runs as non-root `toolbox` user (UID/GID mapped to host) +- **Workspace**: Mounts current directory to `/workspace` (read/write) +- **Runtime**: Inherits all tooling from base plus toolbox-specific additions + +--- + +## 🛠️ Customization + +### Dockerfile +Extend the base image with toolbox-specific tooling: +```dockerfile +# Extend from the toolbox-base image +FROM tsysdevstack-toolboxstack-toolbox-base:release-current + +# Add toolbox-specific packages or configurations +RUN apt-get update && apt-get install -y --no-install-recommends \ + specific-package \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* +``` + +### docker-compose.yml +Adjust service configuration for toolbox-specific needs: +```yaml +services: + my-toolbox: + # Inherits all base configuration + # Add toolbox-specific volumes, ports, etc. + volumes: + - ./custom-config:/home/toolbox/.config/custom-tool +``` + +### SEED +Define the toolbox's purpose and goals: +```markdown +- Describe what this toolbox should provide (languages, CLIs, workflows) +- List required base image modifications or additional mounts +- Note verification or testing expectations specific to this toolbox +``` + +--- + +## 📂 Project Layout + +| Path | Purpose | +|------|---------| +| `Dockerfile` | Extends base image with toolbox-specific tooling | +| `docker-compose.yml` | Service configuration for the toolbox | +| `build.sh` | Wrapper around `docker build` with host UID/GID mapping | +| `run.sh` | Helper to bring the service up/down | +| `.devcontainer/devcontainer.json` | VS Code remote container definition | +| `SEED` | Defines the toolbox's purpose and goals | +| `PROMPT` | LLM onboarding prompt for future contributors | + +--- + +## 🤝 Collaboration Notes + +- Inherits all collaboration policies from `toolbox-base` +- Document toolbox-specific additions in `README.md` and `PROMPT` +- Update `SEED` only when the high-level objectives change +- Prefer aqua/mise for new tooling to keep installations reproducible +- Keep documentation synchronized for future contributors \ No newline at end of file diff --git a/ToolboxStack/output/toolbox-template/SEED b/ToolboxStack/output/toolbox-template/SEED index b02e694..d661c3c 100644 --- a/ToolboxStack/output/toolbox-template/SEED +++ b/ToolboxStack/output/toolbox-template/SEED @@ -1,6 +1,38 @@ -- This toolbox extends from the standard toolbox-base image, inheriting all base tooling (shells, CLIs, package managers). -- Add {{toolbox_name}}-specific tools via aqua.yaml, Dockerfile, or mise configurations. -- Document any additional host directory mounts needed in docker-compose.yml. -- Ensure all tooling is compatible with the non-root toolbox user and UID/GID mapping. -- Update README.md to document {{toolbox_name}}-specific features and tooling. -- Follow the same build and run patterns as the base image for consistency. +# Toolbox Template SEED + +This SEED file defines the high-level objectives for all toolboxes created from this template. + +## 🎯 Goals + +- **Extensibility**: Each toolbox should extend from `toolbox-base` to inherit core tooling +- **Consistency**: All toolboxes should follow the same patterns and conventions +- **Reproducibility**: Toolbox builds should be deterministic and cache-efficient +- **Security**: Toolboxes should run as non-root users with minimal privileges +- **Portability**: Toolboxes should work identically across different host environments + +## 🧰 Requirements + +- **Base Image**: Extend from `tsysdevstack-toolboxstack-toolbox-base:release-current` +- **User Model**: Run as non-root `toolbox` user (UID/GID mapped to host) +- **Workspace**: Mount current directory to `/workspace` (read/write) +- **Runtime**: Inherit all base tooling plus toolbox-specific additions +- **Configuration**: Preserve user configs/mise toolchains via volume mounts + +## 🛠️ Implementation + +- **Dockerfile**: Extend from base with toolbox-specific tooling +- **docker-compose.yml**: Configure service with inherited + custom settings +- **build.sh**: Wrapper around `docker build` with UID/GID mapping +- **run.sh**: Helper to bring service up/down with proper directory setup +- **devcontainer.json**: VS Code remote container definition +- **SEED**: Define toolbox-specific objectives (this file) +- **PROMPT**: LLM onboarding prompt for future contributors + +## ✅ Verification + +- Toolboxes should build without errors +- Toolboxes should start and run indefinitely +- Toolboxes should be accessible via `docker exec` +- Toolboxes should inherit all base tooling +- Toolboxes should support toolbox-specific additions +- Toolboxes should preserve user configurations across restarts \ No newline at end of file diff --git a/ToolboxStack/output/toolbox-template/docker-compose.yml b/ToolboxStack/output/toolbox-template/docker-compose.yml index 8e8ac7c..c963e90 100644 --- a/ToolboxStack/output/toolbox-template/docker-compose.yml +++ b/ToolboxStack/output/toolbox-template/docker-compose.yml @@ -4,6 +4,7 @@ services: image: tsysdevstack-toolboxstack-{{toolbox_name}} build: context: . + dockerfile: Dockerfile args: USER_ID: ${LOCAL_UID:-1000} GROUP_ID: ${LOCAL_GID:-1000} @@ -29,3 +30,17 @@ services: - ${HOME}/.cache/qwen:/home/toolbox/.cache/qwen:rw - ${HOME}/.cache/code:/home/toolbox/.cache/code:rw - ${HOME}/.cache/opencode:/home/toolbox/.cache/opencode:rw + # Additional AI tool directories + - ${HOME}/.config/codex:/home/toolbox/.config/codex:rw + - ${HOME}/.cache/codex:/home/toolbox/.cache/codex:rw + # AI CLI tool configuration and cache directories + - ${HOME}/.config/openai:/home/toolbox/.config/openai:rw + - ${HOME}/.config/gemini:/home/toolbox/.config/gemini:rw + - ${HOME}/.config/qwen:/home/toolbox/.config/qwen:rw + - ${HOME}/.config/code:/home/toolbox/.config/code:rw + - ${HOME}/.config/opencode:/home/toolbox/.config/opencode:rw + - ${HOME}/.cache/openai:/home/toolbox/.cache/openai:rw + - ${HOME}/.cache/gemini:/home/toolbox/.cache/gemini:rw + - ${HOME}/.cache/qwen:/home/toolbox/.cache/qwen:rw + - ${HOME}/.cache/code:/home/toolbox/.cache/code:rw + - ${HOME}/.cache/opencode:/home/toolbox/.cache/opencode:rw