codeforge-dev 1.4.0 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/.devcontainer/.env +4 -1
  2. package/.devcontainer/CHANGELOG.md +117 -0
  3. package/.devcontainer/README.md +7 -3
  4. package/.devcontainer/config/main-system-prompt.md +10 -0
  5. package/.devcontainer/config/settings.json +9 -5
  6. package/.devcontainer/connect-external-terminal.ps1 +86 -0
  7. package/.devcontainer/connect-external-terminal.sh +78 -0
  8. package/.devcontainer/devcontainer.json +9 -4
  9. package/.devcontainer/features/agent-browser/install.sh +5 -5
  10. package/.devcontainer/features/biome/devcontainer-feature.json +16 -0
  11. package/.devcontainer/features/biome/install.sh +19 -0
  12. package/.devcontainer/features/tmux/README.md +75 -0
  13. package/.devcontainer/features/tmux/devcontainer-feature.json +17 -0
  14. package/.devcontainer/features/tmux/install.sh +52 -0
  15. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +2 -2
  16. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +1 -1
  17. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/hooks/hooks.json +5 -5
  18. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +177 -0
  19. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +2 -1
  20. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/commands/debug.md +86 -0
  21. package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/.claude-plugin/plugin.json +1 -1
  22. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +149 -0
  23. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +46 -0
  24. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +44 -0
  25. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/skill-suggester.py +229 -0
  26. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/syntax-validator.py +141 -0
  27. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/SKILL.md +165 -0
  28. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/references/error-patterns.md +530 -0
  29. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/references/log-locations.md +430 -0
  30. package/.devcontainer/scripts/setup-update-claude.sh +123 -0
  31. package/.devcontainer/scripts/setup.sh +13 -1
  32. package/README.md +13 -9
  33. package/package.json +1 -1
  34. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-file.py +0 -101
  35. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/SKILL.md +0 -0
  36. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/references/cli-flags-and-output.md +0 -0
  37. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/references/sdk-and-mcp.md +0 -0
  38. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/SKILL.md +0 -0
  39. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/references/compose-services.md +0 -0
  40. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/references/dockerfile-patterns.md +0 -0
  41. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/SKILL.md +0 -0
  42. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/references/container-lifecycle.md +0 -0
  43. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/references/resources-and-security.md +0 -0
  44. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/SKILL.md +0 -0
  45. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/middleware-and-lifespan.md +0 -0
  46. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/pydantic-models.md +0 -0
  47. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/routing-and-dependencies.md +0 -0
  48. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/sse-and-streaming.md +0 -0
  49. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/SKILL.md +0 -0
  50. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/references/agents-and-tools.md +0 -0
  51. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/references/models-and-streaming.md +0 -0
  52. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/SKILL.md +0 -0
  53. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/cross-vendor-principles.md +0 -0
  54. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/patterns-and-antipatterns.md +0 -0
  55. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/skill-authoring-patterns.md +0 -0
  56. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/SKILL.md +0 -0
  57. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/advanced-queries.md +0 -0
  58. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/javascript-patterns.md +0 -0
  59. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/python-patterns.md +0 -0
  60. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/schema-and-pragmas.md +0 -0
  61. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/SKILL.md +0 -0
  62. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/ai-sdk-svelte.md +0 -0
  63. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/component-patterns.md +0 -0
  64. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/layercake.md +0 -0
  65. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/migration-guide.md +0 -0
  66. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/runes-and-reactivity.md +0 -0
  67. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/spa-and-routing.md +0 -0
  68. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/svelte-dnd-action.md +0 -0
  69. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/SKILL.md +0 -0
  70. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/references/fastapi-testing.md +0 -0
  71. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/references/svelte-testing.md +0 -0
@@ -17,6 +17,9 @@ SETUP_ALIASES=true
17
17
  # Setup: install official Anthropic plugins
18
18
  SETUP_PLUGINS=true
19
19
 
20
+ # Setup: auto-update Claude Code CLI to latest on container start (runs in background)
21
+ SETUP_UPDATE_CLAUDE=true
22
+
20
23
  # Plugin blacklist (comma-separated plugin names to skip during auto-install)
21
24
  # Example: PLUGIN_BLACKLIST="workflow-enhancer,auto-formatter"
22
- PLUGIN_BLACKLIST="workflow-enhancer"
25
+ PLUGIN_BLACKLIST="workflow-enhancer,planning-reminder"
@@ -1,5 +1,122 @@
1
1
  # CodeForge Devcontainer Changelog
2
2
 
3
+ ## [v1.5.0] - 2026-02-06
4
+
5
+ ### Added
6
+
7
+ #### Agent Teams (Experimental)
8
+ - **Claude Code Agent Teams**: Enabled via `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS: "1"` and `teammateMode: "auto"`
9
+ - **System prompt guidance**: Agent Teams section with 3–5 active teammate limit and usage heuristics
10
+ - **Task tracking**: `CLAUDE_CODE_ENABLE_TASKS: "true"` for structured task management
11
+ - **Effort level**: `CLAUDE_CODE_EFFORT_LEVEL: "high"`
12
+
13
+ #### Features
14
+ - **tmux feature**: Split-pane terminal multiplexer for Agent Teams
15
+ - Pre-configured Catppuccin color palette, mouse support, 10,000-line scrollback
16
+ - Creates `claude-teams` session on container start
17
+ - **Biome feature**: Fast JS/TS/JSON/CSS formatter via global `@biomejs/biome` install
18
+ - **External terminal connectors**: Bash (`.sh`) and PowerShell (`.ps1`) scripts to connect host terminals to devcontainer tmux sessions
19
+ - **Claude Code auto-update**: `setup-update-claude.sh` checks for newer Claude Code native binary on every container start
20
+ - Runs non-blocking in background via `setup.sh`
21
+ - Downloads from GCS, verifies SHA256 checksum, atomic binary replacement
22
+ - Controlled by `SETUP_UPDATE_CLAUDE` env var in `.env` (default: `true`)
23
+
24
+ #### Plugins
25
+ - **code-directive plugin**: Replaces `codedirective-skills` with expanded hook infrastructure
26
+ - **New skill**: `debugging` — Log forensics, Docker log analysis, error pattern recognition
27
+ - **Hooks**: `skill-suggester.py` (UserPromptSubmit, SubagentStart), `syntax-validator.py` + `collect-edited-files.py` (PostToolUse)
28
+ - All 10 existing skills migrated from `codedirective-skills`
29
+
30
+ #### VS Code Extensions
31
+ - `GitHub.vscode-github-actions` — GitHub Actions workflow support
32
+ - `fabiospampinato.vscode-todo-plus` — Todo+ task management
33
+
34
+ ### Changed
35
+
36
+ - **Default model**: Claude Opus 4-5 → **Claude Opus 4-6** (frontier)
37
+ - **Max output tokens**: 64,000 → **128,000**
38
+ - **Container memory**: 3GB → **4GB** (`--memory-swap` raised to 8GB)
39
+ - **External terminal connectors**: Now run as `vscode` user and auto-launch `cc` on new tmux sessions
40
+ - **Auto-formatter**: Switched from PostToolUse (`format-file.py`) to Stop hook (`format-on-stop.py`)
41
+ - Added Biome support for JS/TS/CSS alongside existing Black and gofmt
42
+ - Batch-formats all edited files when Claude stops instead of formatting on every edit
43
+ - **Auto-linter**: Switched from PostToolUse to Stop hook
44
+ - **Agent-browser**: Optimized to install only Chromium (previously installed all Playwright browsers)
45
+
46
+ ### Removed
47
+
48
+ - **codedirective-skills plugin**: Replaced by `code-directive` (all skills preserved)
49
+ - **format-file.py**: Replaced by `format-on-stop.py`
50
+ - **`CLAUDE_CODE_SUBAGENT_MODEL`**: Environment variable removed (no longer needed)
51
+
52
+ ### Gitignore
53
+
54
+ - Added `claude-dev-discord-logs/`, `devforge/`
55
+
56
+ ---
57
+
58
+ ## [v1.4.0] - 2026-02-01
59
+
60
+ ### Breaking
61
+
62
+ - **Package rename**: `claudepod` → `codeforge-dev` on npm. Install via `npx codeforge-dev`
63
+ - **Full rebrand**: All references renamed from ClaudePod/claudepod to CodeForge/codeforge
64
+
65
+ ### Added
66
+
67
+ #### Plugins
68
+ - **codedirective-skills plugin**: 9 coding reference skills for the CodeDirective tech stack
69
+ - `fastapi` - Routing, middleware, SSE, Pydantic models
70
+ - `pydantic-ai` - Agents, tools, models, streaming
71
+ - `svelte5` - Runes, reactivity, components, routing, dnd, LayerCake, AI SDK
72
+ - `sqlite` - Python/JS patterns, schema, pragmas, advanced queries
73
+ - `docker` - Dockerfile patterns, Compose services
74
+ - `docker-py` - Container lifecycle, resources, security
75
+ - `claude-code-headless` - CLI flags, output, SDK/MCP
76
+ - `testing` - FastAPI and Svelte testing patterns
77
+ - `skill-building` - Meta-skill for authoring skills
78
+ - **codeforge-lsp plugin**: Replaces `claudepod-lsp` with identical functionality
79
+ - **Svelte MCP plugin**: Added `svelte@sveltejs/mcp` to official plugins
80
+ - **Plugin blacklist system**: `PLUGIN_BLACKLIST` env var in `.env` to skip plugins during auto-install
81
+ - Parsed by `is_blacklisted()` helper in `setup-plugins.sh`
82
+ - Default: `workflow-enhancer` blacklisted
83
+
84
+ #### System Prompt
85
+ - **`<execution_discipline>`**: Verify before assuming, read before writing, instruction fidelity, verify after writing, no silent deviations
86
+ - **`<professional_objectivity>`**: Prioritize technical accuracy over agreement, direct measured language
87
+ - **`<structural_search>`**: ast-grep and tree-sitter usage guidance with when-to-use-which
88
+ - **Scope discipline**: Modify only what the task requires, trust internal code, prefer inline clarity
89
+ - **Continuation sessions**: Re-read source files after compaction, verify state before changes
90
+ - **Brevity additions**: No problem restatement, no filler/narrative, no time estimates
91
+
92
+ #### DevContainer
93
+ - **Bun runtime**: Added `ghcr.io/rails/devcontainer/features/bun:1.0.2`
94
+ - **Playwright browsers**: Installed via `npx playwright install --with-deps` in agent-browser feature
95
+ - **Memory cap**: Container limited to 3GB via `--memory=3g --memory-swap=3g`
96
+ - **TMPDIR**: Set to `/workspaces/.tmp`
97
+ - **VS Code remote extension**: `wenbopan.vscode-terminal-osc-notifier` configured as UI extension
98
+
99
+ ### Changed
100
+
101
+ - **Permission model**: `--dangerously-skip-permissions` → `--permission-mode plan --allow-dangerously-skip-permissions`
102
+ - **Settings**: `autoCompact: true`, `alwaysThinkingEnabled: true`
103
+ - **Autocompact threshold**: 80% → 95%
104
+ - **Cleanup period**: 360 days → 60 days
105
+ - **Tool search**: Added `ENABLE_TOOL_SEARCH: "auto:5"`
106
+ - **Tree-sitter**: Removed Go grammar from defaults
107
+ - **Ticket-workflow commands**: Renamed `ticket:` → `ticket꞉` for cross-platform filesystem compatibility
108
+ - **notify-hook**: Added empty `matcher` field to hooks.json schema
109
+
110
+ ### Removed
111
+
112
+ - **claudepod-lsp plugin**: Replaced by `codeforge-lsp`
113
+
114
+ ### Gitignore
115
+
116
+ - Added `code-directive/`, `article/`, `claude-research/`, `dashboard/`, `simple-review/`, `workflow-enhancer/`
117
+
118
+ ---
119
+
3
120
  ## [v1.3.1] - 2025-01-24
4
121
 
5
122
  ### Fixed
@@ -1,7 +1,7 @@
1
1
  # CodeForge DevContainer
2
2
 
3
3
  [![License: GPL-3.0](https://img.shields.io/badge/License-GPL%203.0-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
4
- [![npm version](https://img.shields.io/npm/v/codeforge.svg)](https://www.npmjs.com/package/codeforge)
4
+ [![npm version](https://img.shields.io/npm/v/codeforge-dev.svg)](https://www.npmjs.com/package/codeforge-dev)
5
5
 
6
6
  A curated development environment optimized for AI-powered coding with Claude Code. CodeForge comes pre-configured with language servers, code intelligence tools, and official Anthropic plugins to streamline your development workflow.
7
7
 
@@ -125,6 +125,8 @@ GitHub CLI credentials are automatically persisted across container rebuilds. Th
125
125
  | `git` | Version control |
126
126
  | `jq` | JSON processor |
127
127
  | `curl` | HTTP client |
128
+ | `tmux` | Terminal multiplexer for Agent Teams split-pane sessions |
129
+ | `biome` | Fast JS/TS/JSON/CSS formatter |
128
130
  | `agent-browser` | Headless browser automation for AI agents |
129
131
 
130
132
  ### Code Intelligence
@@ -187,9 +189,9 @@ Edit `.devcontainer/.env` to customize behavior:
187
189
  Default settings are in `.devcontainer/config/settings.json`. These are copied to `/workspaces/.claude/settings.json` on first run.
188
190
 
189
191
  Key defaults:
190
- - **Model**: Claude Opus 4.5
192
+ - **Model**: Claude Opus 4-6
191
193
  - **Default mode**: Plan (prompts before executing)
192
- - **Max output tokens**: 64,000
194
+ - **Max output tokens**: 128,000
193
195
 
194
196
  ### System Prompt
195
197
 
@@ -207,6 +209,8 @@ CodeForge includes several custom devcontainer features:
207
209
  | `ast-grep` | Structural code search using AST patterns |
208
210
  | `tree-sitter` | Parser with JS/TS/Python grammars |
209
211
  | `lsp-servers` | Pyright and TypeScript language servers |
212
+ | `tmux` | Terminal multiplexer with Catppuccin theme for Agent Teams |
213
+ | `biome` | Fast JS/TS/JSON/CSS formatter (global install) |
210
214
 
211
215
  ## Essential Gotchas
212
216
 
@@ -123,6 +123,13 @@ Subagents (via `Task`):
123
123
  - Report findings; never decide or modify
124
124
  - Types: `Explore` (fast search), `Plan` (design), `general-purpose` (complex), `Bash` (commands)
125
125
 
126
+ Agent Teams (when enabled):
127
+ - CRITICAL: Limit to 3-5 active teammates maximum based on task complexity
128
+ - Simple tasks: no team needed; moderate: 2-3 teammates; complex multi-layer: up to 5
129
+ - Use teams for: parallel investigation, cross-layer work (frontend/backend/tests), competing hypotheses
130
+ - Avoid teams for: sequential tasks, same-file edits, simple changes, routine work
131
+ - Always clean up teams when work completes
132
+
126
133
  Parallelization:
127
134
  - Parallel: independent searches, multi-file reads, different perspectives
128
135
  - Sequential: when output feeds next step, cumulative context needed
@@ -233,6 +240,9 @@ Write minimal code that satisfies requirements.
233
240
 
234
241
  Non-trivial changes require an approved plan — see <execution_gate>.
235
242
 
243
+ When spawning agent teams, assess complexity first. Never exceed 5 active
244
+ teammates — this is a hard limit to control token costs and coordination overhead.
245
+
236
246
  Address concrete problems present in the codebase.
237
247
 
238
248
  When theory conflicts with working solutions, follow working solutions.
@@ -3,15 +3,14 @@
3
3
  "autoCompact": true,
4
4
  "alwaysThinkingEnabled": true,
5
5
  "env": {
6
- "ANTHROPIC_MODEL": "claude-opus-4-5-20251101",
7
- "CLAUDE_CODE_SUBAGENT_MODEL": "claude-opus-4-5-20251101",
8
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-5-20251101",
6
+ "ANTHROPIC_MODEL": "claude-opus-4-6",
7
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-6",
9
8
  "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5-20250929",
10
9
  "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001",
11
10
  "BASH_DEFAULT_TIMEOUT_MS": "240000",
12
11
  "BASH_MAX_TIMEOUT_MS": "600000",
13
12
  "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "true",
14
- "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "64000",
13
+ "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "128000",
15
14
  "MAX_MCP_OUTPUT_TOKENS": "10000",
16
15
  "MAX_THINKING_TOKENS": "63999",
17
16
  "MCP_TIMEOUT": "120000",
@@ -19,8 +18,13 @@
19
18
  "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": 95,
20
19
  "CLAUDE_CODE_SHELL": "zsh",
21
20
  "FORCE_AUTOUPDATE_PLUGINS": true,
22
- "ENABLE_TOOL_SEARCH": "auto:5"
21
+ "ENABLE_TOOL_SEARCH": "auto:5",
22
+ "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",
23
+ "CLAUDE_CODE_EFFORT_LEVEL": "high",
24
+ "CLAUDE_CODE_ENABLE_TASKS": "true"
23
25
  },
26
+ "teammateMode": "auto",
27
+ "effortLevel": "high",
24
28
  "includeCoAuthoredBy": false,
25
29
  "permissions": {
26
30
  "allow": [
@@ -0,0 +1,86 @@
1
+ #
2
+ # Connect to CodeForge devcontainer from external terminal with tmux
3
+ # For Claude Code Agent Teams split-pane support
4
+ #
5
+ # Usage: .\connect-external-terminal.ps1
6
+ #
7
+ # Prerequisites:
8
+ # - Docker Desktop installed and running
9
+ # - Devcontainer already running (via VS Code or CLI)
10
+ #
11
+ # This script will:
12
+ # 1. Auto-detect your running devcontainer
13
+ # 2. Attach to it with an interactive shell
14
+ # 3. Start or attach to a tmux session named "claude-teams"
15
+ #
16
+
17
+ $ErrorActionPreference = "Stop"
18
+
19
+ $TMUX_SESSION = "claude-teams"
20
+ $CONTAINER_LABEL = "devcontainer.local_folder"
21
+
22
+ Write-Host "======================================"
23
+ Write-Host " CodeForge External Terminal Connect"
24
+ Write-Host "======================================"
25
+ Write-Host ""
26
+
27
+ # Find the devcontainer
28
+ Write-Host "Searching for running devcontainer..."
29
+
30
+ try {
31
+ $CONTAINER_ID = docker ps --filter "label=$CONTAINER_LABEL" --format "{{.ID}}" | Select-Object -First 1
32
+ } catch {
33
+ Write-Host ""
34
+ Write-Host "ERROR: Docker command failed. Is Docker Desktop running?" -ForegroundColor Red
35
+ Write-Host ""
36
+ exit 1
37
+ }
38
+
39
+ if ([string]::IsNullOrWhiteSpace($CONTAINER_ID)) {
40
+ Write-Host ""
41
+ Write-Host "ERROR: No running devcontainer found." -ForegroundColor Red
42
+ Write-Host ""
43
+ Write-Host "Make sure your devcontainer is running:"
44
+ Write-Host " 1. Open VS Code"
45
+ Write-Host " 2. Open the folder containing .devcontainer/"
46
+ Write-Host " 3. Use 'Dev Containers: Reopen in Container'"
47
+ Write-Host ""
48
+ exit 1
49
+ }
50
+
51
+ # Get container name for display
52
+ $CONTAINER_NAME = docker ps --filter "id=$CONTAINER_ID" --format "{{.Names}}"
53
+ Write-Host "Found container: $CONTAINER_NAME ($CONTAINER_ID)"
54
+ Write-Host ""
55
+
56
+ # Check if tmux is available in the container
57
+ $tmuxCheck = docker exec $CONTAINER_ID which tmux 2>$null
58
+ if ([string]::IsNullOrWhiteSpace($tmuxCheck)) {
59
+ Write-Host "ERROR: tmux is not installed in the container." -ForegroundColor Red
60
+ Write-Host "Rebuild the devcontainer to install the tmux feature."
61
+ exit 1
62
+ }
63
+
64
+ Write-Host "Connecting to tmux session '$TMUX_SESSION'..."
65
+ Write-Host ""
66
+ Write-Host "Tips:"
67
+ Write-Host " - Agent Teams will use this terminal for split panes"
68
+ Write-Host " - Run 'claude' to start Claude Code"
69
+ Write-Host " - Press Ctrl+B then D to detach (keeps session running)"
70
+ Write-Host " - Mouse support is enabled for pane selection"
71
+ Write-Host ""
72
+ Write-Host "======================================"
73
+ Write-Host ""
74
+
75
+ # Connect to container with tmux as vscode user (where aliases are defined)
76
+ # If session exists, reattach. Otherwise create in /workspaces and auto-run cc.
77
+ docker exec -it --user vscode $CONTAINER_ID bash -c "
78
+ if tmux has-session -t '$TMUX_SESSION' 2>/dev/null; then
79
+ tmux attach-session -t '$TMUX_SESSION'
80
+ else
81
+ tmux new-session -d -s '$TMUX_SESSION' -c /workspaces
82
+ sleep 0.5
83
+ tmux send-keys -t '$TMUX_SESSION' 'cc' Enter
84
+ tmux attach-session -t '$TMUX_SESSION'
85
+ fi
86
+ "
@@ -0,0 +1,78 @@
1
+ #!/bin/bash
2
+ #
3
+ # Connect to CodeForge devcontainer from external terminal with tmux
4
+ # For Claude Code Agent Teams split-pane support
5
+ #
6
+ # Usage: ./connect-external-terminal.sh
7
+ #
8
+ # Prerequisites:
9
+ # - Docker installed and running
10
+ # - Devcontainer already running (via VS Code or CLI)
11
+ #
12
+ # This script will:
13
+ # 1. Auto-detect your running devcontainer
14
+ # 2. Attach to it with an interactive shell
15
+ # 3. Start or attach to a tmux session named "claude-teams"
16
+ #
17
+
18
+ set -e
19
+
20
+ TMUX_SESSION="claude-teams"
21
+ CONTAINER_LABEL="devcontainer.local_folder"
22
+
23
+ echo "======================================"
24
+ echo " CodeForge External Terminal Connect"
25
+ echo "======================================"
26
+ echo ""
27
+
28
+ # Find the devcontainer
29
+ echo "Searching for running devcontainer..."
30
+ CONTAINER_ID=$(docker ps --filter "label=$CONTAINER_LABEL" --format "{{.ID}}" | head -n1)
31
+
32
+ if [ -z "$CONTAINER_ID" ]; then
33
+ echo ""
34
+ echo "ERROR: No running devcontainer found."
35
+ echo ""
36
+ echo "Make sure your devcontainer is running:"
37
+ echo " 1. Open VS Code"
38
+ echo " 2. Open the folder containing .devcontainer/"
39
+ echo " 3. Use 'Dev Containers: Reopen in Container'"
40
+ echo ""
41
+ exit 1
42
+ fi
43
+
44
+ # Get container name for display
45
+ CONTAINER_NAME=$(docker ps --filter "id=$CONTAINER_ID" --format "{{.Names}}")
46
+ echo "Found container: $CONTAINER_NAME ($CONTAINER_ID)"
47
+ echo ""
48
+
49
+ # Check if tmux is available in the container
50
+ if ! docker exec "$CONTAINER_ID" which tmux > /dev/null 2>&1; then
51
+ echo "ERROR: tmux is not installed in the container."
52
+ echo "Rebuild the devcontainer to install the tmux feature."
53
+ exit 1
54
+ fi
55
+
56
+ echo "Connecting to tmux session '$TMUX_SESSION'..."
57
+ echo ""
58
+ echo "Tips:"
59
+ echo " - Agent Teams will use this terminal for split panes"
60
+ echo " - Run 'claude' to start Claude Code"
61
+ echo " - Press Ctrl+B then D to detach (keeps session running)"
62
+ echo " - Mouse support is enabled for pane selection"
63
+ echo ""
64
+ echo "======================================"
65
+ echo ""
66
+
67
+ # Connect to container with tmux as vscode user (where aliases are defined)
68
+ # If session exists, reattach. Otherwise create in /workspaces and auto-run cc.
69
+ exec docker exec -it --user vscode "$CONTAINER_ID" bash -c "
70
+ if tmux has-session -t '$TMUX_SESSION' 2>/dev/null; then
71
+ tmux attach-session -t '$TMUX_SESSION'
72
+ else
73
+ tmux new-session -d -s '$TMUX_SESSION' -c /workspaces
74
+ sleep 0.5
75
+ tmux send-keys -t '$TMUX_SESSION' 'cc' Enter
76
+ tmux attach-session -t '$TMUX_SESSION'
77
+ fi
78
+ "
@@ -20,6 +20,7 @@
20
20
  "ghcr.io/devcontainers/features/go",
21
21
  "ghcr.io/rails/devcontainer/features/bun",
22
22
  "ghcr.io/anthropics/devcontainer-features/claude-code",
23
+ "./features/tmux",
23
24
  "./features/agent-browser",
24
25
  "./features/claude-monitor",
25
26
  "./features/ccusage",
@@ -27,6 +28,7 @@
27
28
  "./features/ast-grep",
28
29
  "./features/tree-sitter",
29
30
  "./features/lsp-servers",
31
+ "./features/biome",
30
32
  "./features/notify-hook"
31
33
  ],
32
34
 
@@ -41,9 +43,9 @@
41
43
  "moby": false
42
44
  },
43
45
  "ghcr.io/devcontainers-extra/features/uv:1": {},
44
- "ghcr.io/devcontainers/features/go:1": {},
45
46
  "ghcr.io/rails/devcontainer/features/bun:1.0.2": {},
46
47
  "ghcr.io/anthropics/devcontainer-features/claude-code:1": {},
48
+ "./features/tmux": {},
47
49
  "./features/ccusage": {
48
50
  "version": "latest",
49
51
  "shells": "both",
@@ -61,6 +63,7 @@
61
63
  "./features/tree-sitter": {},
62
64
  "./features/lsp-servers": {},
63
65
  "./features/agent-browser": {},
66
+ "./features/biome": {},
64
67
  "./features/notify-hook": {
65
68
  "enableBell": true,
66
69
  "enableOsc": true
@@ -82,13 +85,15 @@
82
85
  }
83
86
  },
84
87
  "extensions": [
85
- "wenbopan.vscode-terminal-osc-notifier"
88
+ "wenbopan.vscode-terminal-osc-notifier",
89
+ "GitHub.vscode-github-actions",
90
+ "fabiospampinato.vscode-todo-plus"
86
91
  ]
87
92
  }
88
93
  },
89
94
 
90
95
  "runArgs": [
91
- "--memory=3g",
92
- "--memory-swap=3g"
96
+ "--memory=4g",
97
+ "--memory-swap=8g"
93
98
  ]
94
99
  }
@@ -58,11 +58,11 @@ agent-browser install --with-deps 2>/dev/null || {
58
58
  agent-browser install 2>/dev/null || true
59
59
  }
60
60
 
61
- # Install Playwright browsers and dependencies
62
- echo "[agent-browser] Installing Playwright browsers..."
63
- npx playwright install --with-deps 2>/dev/null || {
64
- echo "[agent-browser] WARNING: Playwright install with deps failed, trying without --with-deps"
65
- npx playwright install 2>/dev/null || true
61
+ # Install Playwright Chromium only (not all browsers)
62
+ echo "[agent-browser] Installing Playwright Chromium..."
63
+ npx playwright install chromium --with-deps 2>/dev/null || {
64
+ echo "[agent-browser] WARNING: Playwright chromium install with deps failed, trying without --with-deps"
65
+ npx playwright install chromium 2>/dev/null || true
66
66
  }
67
67
 
68
68
  echo "[agent-browser] Installed: $(agent-browser --version 2>/dev/null || echo 'unknown')"
@@ -0,0 +1,16 @@
1
+ {
2
+ "id": "biome",
3
+ "version": "1.0.0",
4
+ "name": "Biome",
5
+ "description": "Fast JS/TS/JSON/CSS formatter and linter",
6
+ "options": {
7
+ "version": {
8
+ "type": "string",
9
+ "default": "latest",
10
+ "description": "Biome version to install"
11
+ }
12
+ },
13
+ "installsAfter": [
14
+ "ghcr.io/devcontainers/features/node"
15
+ ]
16
+ }
@@ -0,0 +1,19 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ VERSION="${VERSION:-latest}"
5
+
6
+ echo "[biome] Starting installation..."
7
+ echo "[biome] Version: ${VERSION}"
8
+
9
+ # Install Biome globally via npm
10
+ if [ "${VERSION}" = "latest" ]; then
11
+ npm install -g @biomejs/biome
12
+ else
13
+ npm install -g "@biomejs/biome@${VERSION}"
14
+ fi
15
+
16
+ # Verify installation
17
+ biome --version
18
+
19
+ echo "[biome] Installation complete"
@@ -0,0 +1,75 @@
1
+ # tmux Terminal Multiplexer
2
+
3
+ Installs tmux for Claude Code Agent Teams split-pane support.
4
+
5
+ ## What This Provides
6
+
7
+ - **tmux** terminal multiplexer for managing multiple terminal sessions
8
+ - Pre-configured for Claude Code Agent Teams with optimized settings
9
+ - Mouse support enabled for easy pane navigation
10
+ - Clean status bar showing session info
11
+
12
+ ## Claude Code Agent Teams Integration
13
+
14
+ When Agent Teams are enabled (`CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`) and `teammateMode` is set to `"auto"` or `"tmux"`, Claude Code will automatically use tmux for split-pane display of teammates.
15
+
16
+ ### VS Code Terminal Limitation
17
+
18
+ The VS Code integrated terminal does **not** support tmux split panes. To use split-pane mode with Agent Teams, you need to connect via an external terminal.
19
+
20
+ ## Using External Terminal for Split Panes
21
+
22
+ ### Option 1: Helper Scripts (Recommended)
23
+
24
+ Use the provided helper scripts in the `.devcontainer/` folder:
25
+
26
+ **Linux/macOS:**
27
+ ```bash
28
+ cd /path/to/your/project/.devcontainer
29
+ ./connect-external-terminal.sh
30
+ ```
31
+
32
+ **Windows (PowerShell):**
33
+ ```powershell
34
+ cd C:\path\to\your\project\.devcontainer
35
+ .\connect-external-terminal.ps1
36
+ ```
37
+
38
+ ### Option 2: Manual Connection
39
+
40
+ 1. Find your container ID:
41
+ ```bash
42
+ docker ps --filter "label=devcontainer.local_folder" --format "{{.ID}}"
43
+ ```
44
+
45
+ 2. Connect with tmux:
46
+ ```bash
47
+ docker exec -it <container-id> tmux new-session -A -s claude-teams
48
+ ```
49
+
50
+ ## tmux Quick Reference
51
+
52
+ | Key | Action |
53
+ |-----|--------|
54
+ | `Ctrl+B %` | Split pane vertically |
55
+ | `Ctrl+B "` | Split pane horizontally |
56
+ | `Ctrl+B arrow` | Navigate between panes |
57
+ | `Ctrl+B d` | Detach from session |
58
+ | `Ctrl+B [` | Enter scroll mode (q to exit) |
59
+
60
+ Mouse support is enabled - click to select panes, drag borders to resize.
61
+
62
+ ## Prerequisites for Host Machine
63
+
64
+ ### Linux
65
+ - Docker installed and running
66
+ - Any terminal emulator (GNOME Terminal, Konsole, Alacritty, etc.)
67
+
68
+ ### Windows
69
+ - Docker Desktop installed and running
70
+ - Windows Terminal or PowerShell
71
+ - No additional software needed - tmux runs inside the container
72
+
73
+ ### macOS
74
+ - Docker Desktop installed and running
75
+ - Terminal.app, iTerm2, or any terminal emulator
@@ -0,0 +1,17 @@
1
+ {
2
+ "id": "tmux",
3
+ "version": "1.0.0",
4
+ "name": "tmux Terminal Multiplexer",
5
+ "description": "Installs tmux for Claude Code Agent Teams split-pane support",
6
+ "documentationURL": "https://github.com/AnExiledDev/CodeForge",
7
+ "options": {
8
+ "version": {
9
+ "type": "string",
10
+ "description": "tmux version to install (or 'latest' for system package)",
11
+ "default": "latest"
12
+ }
13
+ },
14
+ "installsAfter": [
15
+ "ghcr.io/devcontainers/features/common-utils:2"
16
+ ]
17
+ }
@@ -0,0 +1,52 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ echo "Installing tmux for Claude Code Agent Teams..."
5
+
6
+ # Install tmux via apt
7
+ apt-get update
8
+ apt-get install -y tmux
9
+
10
+ # Create a basic tmux config optimized for Claude Code teams
11
+ TMUX_CONF="/etc/tmux.conf"
12
+ cat > "$TMUX_CONF" << 'EOF'
13
+ # Claude Code Agent Teams - tmux configuration
14
+
15
+ # Enable mouse support for pane selection
16
+ set -g mouse on
17
+
18
+ # Start window numbering at 1
19
+ set -g base-index 1
20
+ setw -g pane-base-index 1
21
+
22
+ # Increase scrollback buffer
23
+ set -g history-limit 10000
24
+
25
+ # Reduce escape time for better responsiveness
26
+ set -sg escape-time 10
27
+
28
+ # Status bar configuration
29
+ set -g status-style 'bg=#1e1e2e fg=#cdd6f4'
30
+ set -g status-left '[#S] '
31
+ set -g status-right '%H:%M '
32
+ set -g status-left-length 20
33
+
34
+ # Pane border styling
35
+ set -g pane-border-style 'fg=#45475a'
36
+ set -g pane-active-border-style 'fg=#89b4fa'
37
+
38
+ # Window status
39
+ setw -g window-status-current-style 'fg=#1e1e2e bg=#89b4fa bold'
40
+ setw -g window-status-current-format ' #I:#W '
41
+ setw -g window-status-style 'fg=#cdd6f4'
42
+ setw -g window-status-format ' #I:#W '
43
+
44
+ # Enable true color support
45
+ set -g default-terminal "tmux-256color"
46
+ set -ga terminal-overrides ",*256col*:Tc"
47
+ EOF
48
+
49
+ echo "tmux installed successfully"
50
+ echo " - Config: $TMUX_CONF"
51
+ echo " - Use 'tmux new -s claude-teams' to start a session"
52
+ echo " - Claude Code Agent Teams will auto-detect tmux when available"
@@ -96,10 +96,10 @@
96
96
  "category": "development"
97
97
  },
98
98
  {
99
- "name": "codedirective-skills",
99
+ "name": "code-directive",
100
100
  "description": "Coding standards and skills for the CodeDirective project",
101
101
  "version": "1.0.0",
102
- "source": "./plugins/codedirective-skills",
102
+ "source": "./plugins/code-directive",
103
103
  "category": "development"
104
104
  }
105
105
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auto-formatter",
3
- "description": "Auto-formats files after editing (black for Python, gofmt for Go)",
3
+ "description": "Batch-formats edited files at Stop (Black for Python, gofmt for Go, Biome for JS/TS/CSS)",
4
4
  "author": {
5
5
  "name": "AnExiledDev"
6
6
  }