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.
This commit is contained in:
@@ -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.
|
- Start each session by reading it (`cat SEED`) and summarize progress or adjustments here in PROMPT.
|
||||||
|
|
||||||
Context snapshot ({{toolbox_name}}):
|
Context snapshot ({{toolbox_name}}):
|
||||||
- Working directory: TSYSDevStack/ToolboxStack/{{toolbox_name}}
|
- Working directory: artifacts/ToolboxStack/{{toolbox_name}}
|
||||||
- Image: extends from tsysdevstack-toolboxstack-toolbox-base (Ubuntu 24.04 base)
|
- Image: tsysdevstack-toolboxstack-{{toolbox_name}} (extends from tsysdevstack-toolboxstack-toolbox-base:release-current)
|
||||||
- Container user: toolbox (non-root, UID/GID mapped to host)
|
- Container user: toolbox (non-root, UID/GID mapped to host)
|
||||||
- Mounted workspace: current repo at /workspace (rw)
|
- Mounted workspace: current repo at /workspace (rw)
|
||||||
|
|
||||||
Current state:
|
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.
|
- 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 and reproducibility.
|
- 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.
|
- 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).
|
- 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.
|
5. Maintain UID/GID mapping and non-root execution.
|
||||||
|
|
||||||
Active focus:
|
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.
|
||||||
107
ToolboxStack/output/toolbox-template/README.md
Normal file
107
ToolboxStack/output/toolbox-template/README.md
Normal file
@@ -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-<toolbox-name> 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
|
||||||
@@ -1,6 +1,38 @@
|
|||||||
- This toolbox extends from the standard toolbox-base image, inheriting all base tooling (shells, CLIs, package managers).
|
# Toolbox Template SEED
|
||||||
- Add {{toolbox_name}}-specific tools via aqua.yaml, Dockerfile, or mise configurations.
|
|
||||||
- Document any additional host directory mounts needed in docker-compose.yml.
|
This SEED file defines the high-level objectives for all toolboxes created from this template.
|
||||||
- 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.
|
## 🎯 Goals
|
||||||
- Follow the same build and run patterns as the base image for consistency.
|
|
||||||
|
- **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
|
||||||
@@ -4,6 +4,7 @@ services:
|
|||||||
image: tsysdevstack-toolboxstack-{{toolbox_name}}
|
image: tsysdevstack-toolboxstack-{{toolbox_name}}
|
||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
args:
|
args:
|
||||||
USER_ID: ${LOCAL_UID:-1000}
|
USER_ID: ${LOCAL_UID:-1000}
|
||||||
GROUP_ID: ${LOCAL_GID:-1000}
|
GROUP_ID: ${LOCAL_GID:-1000}
|
||||||
@@ -29,3 +30,17 @@ services:
|
|||||||
- ${HOME}/.cache/qwen:/home/toolbox/.cache/qwen:rw
|
- ${HOME}/.cache/qwen:/home/toolbox/.cache/qwen:rw
|
||||||
- ${HOME}/.cache/code:/home/toolbox/.cache/code:rw
|
- ${HOME}/.cache/code:/home/toolbox/.cache/code:rw
|
||||||
- ${HOME}/.cache/opencode:/home/toolbox/.cache/opencode: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
|
||||||
|
|||||||
Reference in New Issue
Block a user