codeforge-dev 1.4.0 → 1.5.0

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 (68) hide show
  1. package/.devcontainer/CHANGELOG.md +112 -0
  2. package/.devcontainer/README.md +7 -3
  3. package/.devcontainer/config/main-system-prompt.md +10 -0
  4. package/.devcontainer/config/settings.json +9 -5
  5. package/.devcontainer/connect-external-terminal.ps1 +77 -0
  6. package/.devcontainer/connect-external-terminal.sh +69 -0
  7. package/.devcontainer/devcontainer.json +9 -4
  8. package/.devcontainer/features/agent-browser/install.sh +5 -5
  9. package/.devcontainer/features/biome/devcontainer-feature.json +16 -0
  10. package/.devcontainer/features/biome/install.sh +19 -0
  11. package/.devcontainer/features/tmux/README.md +75 -0
  12. package/.devcontainer/features/tmux/devcontainer-feature.json +17 -0
  13. package/.devcontainer/features/tmux/install.sh +52 -0
  14. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +2 -2
  15. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +1 -1
  16. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/hooks/hooks.json +5 -5
  17. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +177 -0
  18. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +2 -1
  19. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/commands/debug.md +86 -0
  20. package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/.claude-plugin/plugin.json +1 -1
  21. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +149 -0
  22. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +46 -0
  23. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +44 -0
  24. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/skill-suggester.py +229 -0
  25. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/syntax-validator.py +141 -0
  26. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/SKILL.md +165 -0
  27. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/references/error-patterns.md +530 -0
  28. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/references/log-locations.md +430 -0
  29. package/README.md +13 -9
  30. package/package.json +1 -1
  31. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-file.py +0 -101
  32. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/SKILL.md +0 -0
  33. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/references/cli-flags-and-output.md +0 -0
  34. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/references/sdk-and-mcp.md +0 -0
  35. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/SKILL.md +0 -0
  36. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/references/compose-services.md +0 -0
  37. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/references/dockerfile-patterns.md +0 -0
  38. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/SKILL.md +0 -0
  39. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/references/container-lifecycle.md +0 -0
  40. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/references/resources-and-security.md +0 -0
  41. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/SKILL.md +0 -0
  42. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/middleware-and-lifespan.md +0 -0
  43. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/pydantic-models.md +0 -0
  44. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/routing-and-dependencies.md +0 -0
  45. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/sse-and-streaming.md +0 -0
  46. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/SKILL.md +0 -0
  47. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/references/agents-and-tools.md +0 -0
  48. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/references/models-and-streaming.md +0 -0
  49. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/SKILL.md +0 -0
  50. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/cross-vendor-principles.md +0 -0
  51. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/patterns-and-antipatterns.md +0 -0
  52. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/skill-authoring-patterns.md +0 -0
  53. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/SKILL.md +0 -0
  54. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/advanced-queries.md +0 -0
  55. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/javascript-patterns.md +0 -0
  56. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/python-patterns.md +0 -0
  57. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/schema-and-pragmas.md +0 -0
  58. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/SKILL.md +0 -0
  59. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/ai-sdk-svelte.md +0 -0
  60. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/component-patterns.md +0 -0
  61. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/layercake.md +0 -0
  62. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/migration-guide.md +0 -0
  63. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/runes-and-reactivity.md +0 -0
  64. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/spa-and-routing.md +0 -0
  65. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/svelte-dnd-action.md +0 -0
  66. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/SKILL.md +0 -0
  67. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/references/fastapi-testing.md +0 -0
  68. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/references/svelte-testing.md +0 -0
@@ -1,5 +1,117 @@
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
+
20
+ #### Plugins
21
+ - **code-directive plugin**: Replaces `codedirective-skills` with expanded hook infrastructure
22
+ - **New skill**: `debugging` — Log forensics, Docker log analysis, error pattern recognition
23
+ - **Hooks**: `skill-suggester.py` (UserPromptSubmit, SubagentStart), `syntax-validator.py` + `collect-edited-files.py` (PostToolUse)
24
+ - All 10 existing skills migrated from `codedirective-skills`
25
+
26
+ #### VS Code Extensions
27
+ - `GitHub.vscode-github-actions` — GitHub Actions workflow support
28
+ - `fabiospampinato.vscode-todo-plus` — Todo+ task management
29
+
30
+ ### Changed
31
+
32
+ - **Default model**: Claude Opus 4-5 → **Claude Opus 4-6** (frontier)
33
+ - **Max output tokens**: 64,000 → **128,000**
34
+ - **Container memory**: 3GB → **4GB** (`--memory-swap` raised to 8GB)
35
+ - **Auto-formatter**: Switched from PostToolUse (`format-file.py`) to Stop hook (`format-on-stop.py`)
36
+ - Added Biome support for JS/TS/CSS alongside existing Black and gofmt
37
+ - Batch-formats all edited files when Claude stops instead of formatting on every edit
38
+ - **Auto-linter**: Switched from PostToolUse to Stop hook
39
+ - **Agent-browser**: Optimized to install only Chromium (previously installed all Playwright browsers)
40
+
41
+ ### Removed
42
+
43
+ - **codedirective-skills plugin**: Replaced by `code-directive` (all skills preserved)
44
+ - **format-file.py**: Replaced by `format-on-stop.py`
45
+ - **`CLAUDE_CODE_SUBAGENT_MODEL`**: Environment variable removed (no longer needed)
46
+
47
+ ### Gitignore
48
+
49
+ - Added `claude-dev-discord-logs/`, `devforge/`
50
+
51
+ ---
52
+
53
+ ## [v1.4.0] - 2026-02-01
54
+
55
+ ### Breaking
56
+
57
+ - **Package rename**: `claudepod` → `codeforge-dev` on npm. Install via `npx codeforge-dev`
58
+ - **Full rebrand**: All references renamed from ClaudePod/claudepod to CodeForge/codeforge
59
+
60
+ ### Added
61
+
62
+ #### Plugins
63
+ - **codedirective-skills plugin**: 9 coding reference skills for the CodeDirective tech stack
64
+ - `fastapi` - Routing, middleware, SSE, Pydantic models
65
+ - `pydantic-ai` - Agents, tools, models, streaming
66
+ - `svelte5` - Runes, reactivity, components, routing, dnd, LayerCake, AI SDK
67
+ - `sqlite` - Python/JS patterns, schema, pragmas, advanced queries
68
+ - `docker` - Dockerfile patterns, Compose services
69
+ - `docker-py` - Container lifecycle, resources, security
70
+ - `claude-code-headless` - CLI flags, output, SDK/MCP
71
+ - `testing` - FastAPI and Svelte testing patterns
72
+ - `skill-building` - Meta-skill for authoring skills
73
+ - **codeforge-lsp plugin**: Replaces `claudepod-lsp` with identical functionality
74
+ - **Svelte MCP plugin**: Added `svelte@sveltejs/mcp` to official plugins
75
+ - **Plugin blacklist system**: `PLUGIN_BLACKLIST` env var in `.env` to skip plugins during auto-install
76
+ - Parsed by `is_blacklisted()` helper in `setup-plugins.sh`
77
+ - Default: `workflow-enhancer` blacklisted
78
+
79
+ #### System Prompt
80
+ - **`<execution_discipline>`**: Verify before assuming, read before writing, instruction fidelity, verify after writing, no silent deviations
81
+ - **`<professional_objectivity>`**: Prioritize technical accuracy over agreement, direct measured language
82
+ - **`<structural_search>`**: ast-grep and tree-sitter usage guidance with when-to-use-which
83
+ - **Scope discipline**: Modify only what the task requires, trust internal code, prefer inline clarity
84
+ - **Continuation sessions**: Re-read source files after compaction, verify state before changes
85
+ - **Brevity additions**: No problem restatement, no filler/narrative, no time estimates
86
+
87
+ #### DevContainer
88
+ - **Bun runtime**: Added `ghcr.io/rails/devcontainer/features/bun:1.0.2`
89
+ - **Playwright browsers**: Installed via `npx playwright install --with-deps` in agent-browser feature
90
+ - **Memory cap**: Container limited to 3GB via `--memory=3g --memory-swap=3g`
91
+ - **TMPDIR**: Set to `/workspaces/.tmp`
92
+ - **VS Code remote extension**: `wenbopan.vscode-terminal-osc-notifier` configured as UI extension
93
+
94
+ ### Changed
95
+
96
+ - **Permission model**: `--dangerously-skip-permissions` → `--permission-mode plan --allow-dangerously-skip-permissions`
97
+ - **Settings**: `autoCompact: true`, `alwaysThinkingEnabled: true`
98
+ - **Autocompact threshold**: 80% → 95%
99
+ - **Cleanup period**: 360 days → 60 days
100
+ - **Tool search**: Added `ENABLE_TOOL_SEARCH: "auto:5"`
101
+ - **Tree-sitter**: Removed Go grammar from defaults
102
+ - **Ticket-workflow commands**: Renamed `ticket:` → `ticket꞉` for cross-platform filesystem compatibility
103
+ - **notify-hook**: Added empty `matcher` field to hooks.json schema
104
+
105
+ ### Removed
106
+
107
+ - **claudepod-lsp plugin**: Replaced by `codeforge-lsp`
108
+
109
+ ### Gitignore
110
+
111
+ - Added `code-directive/`, `article/`, `claude-research/`, `dashboard/`, `simple-review/`, `workflow-enhancer/`
112
+
113
+ ---
114
+
3
115
  ## [v1.3.1] - 2025-01-24
4
116
 
5
117
  ### 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,77 @@
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
76
+ # -A attaches to existing session or creates new one
77
+ docker exec -it $CONTAINER_ID tmux new-session -A -s $TMUX_SESSION
@@ -0,0 +1,69 @@
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
68
+ # -A attaches to existing session or creates new one
69
+ exec docker exec -it "$CONTAINER_ID" tmux new-session -A -s "$TMUX_SESSION"
@@ -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
  }
@@ -1,14 +1,14 @@
1
1
  {
2
- "description": "Auto-format files after editing",
2
+ "description": "Batch-format collected files when Claude stops responding",
3
3
  "hooks": {
4
- "PostToolUse": [
4
+ "Stop": [
5
5
  {
6
- "matcher": "Edit|Write",
6
+ "matcher": "",
7
7
  "hooks": [
8
8
  {
9
9
  "type": "command",
10
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/format-file.py",
11
- "timeout": 30
10
+ "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/format-on-stop.py",
11
+ "timeout": 15
12
12
  }
13
13
  ]
14
14
  }