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.
- package/.devcontainer/.env +4 -1
- package/.devcontainer/CHANGELOG.md +117 -0
- package/.devcontainer/README.md +7 -3
- package/.devcontainer/config/main-system-prompt.md +10 -0
- package/.devcontainer/config/settings.json +9 -5
- package/.devcontainer/connect-external-terminal.ps1 +86 -0
- package/.devcontainer/connect-external-terminal.sh +78 -0
- package/.devcontainer/devcontainer.json +9 -4
- package/.devcontainer/features/agent-browser/install.sh +5 -5
- package/.devcontainer/features/biome/devcontainer-feature.json +16 -0
- package/.devcontainer/features/biome/install.sh +19 -0
- package/.devcontainer/features/tmux/README.md +75 -0
- package/.devcontainer/features/tmux/devcontainer-feature.json +17 -0
- package/.devcontainer/features/tmux/install.sh +52 -0
- package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/hooks/hooks.json +5 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +177 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +2 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/commands/debug.md +86 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/.claude-plugin/plugin.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +149 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +46 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +44 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/skill-suggester.py +229 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/syntax-validator.py +141 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/SKILL.md +165 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/references/error-patterns.md +530 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/references/log-locations.md +430 -0
- package/.devcontainer/scripts/setup-update-claude.sh +123 -0
- package/.devcontainer/scripts/setup.sh +13 -1
- package/README.md +13 -9
- package/package.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-file.py +0 -101
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/references/cli-flags-and-output.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/references/sdk-and-mcp.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/references/compose-services.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/references/dockerfile-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/references/container-lifecycle.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/references/resources-and-security.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/middleware-and-lifespan.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/pydantic-models.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/routing-and-dependencies.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/sse-and-streaming.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/references/agents-and-tools.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/references/models-and-streaming.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/cross-vendor-principles.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/patterns-and-antipatterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/skill-authoring-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/advanced-queries.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/javascript-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/python-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/schema-and-pragmas.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/ai-sdk-svelte.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/component-patterns.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/layercake.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/migration-guide.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/runes-and-reactivity.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/spa-and-routing.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/svelte-dnd-action.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/SKILL.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/references/fastapi-testing.md +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/references/svelte-testing.md +0 -0
package/.devcontainer/.env
CHANGED
|
@@ -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
|
package/.devcontainer/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# CodeForge DevContainer
|
|
2
2
|
|
|
3
3
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
4
|
-
[](https://www.npmjs.com/package/codeforge)
|
|
4
|
+
[](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
|
|
192
|
+
- **Model**: Claude Opus 4-6
|
|
191
193
|
- **Default mode**: Plan (prompts before executing)
|
|
192
|
-
- **Max output tokens**:
|
|
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-
|
|
7
|
-
"
|
|
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": "
|
|
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=
|
|
92
|
-
"--memory-swap=
|
|
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
|
|
62
|
-
echo "[agent-browser] Installing Playwright
|
|
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": "
|
|
99
|
+
"name": "code-directive",
|
|
100
100
|
"description": "Coding standards and skills for the CodeDirective project",
|
|
101
101
|
"version": "1.0.0",
|
|
102
|
-
"source": "./plugins/
|
|
102
|
+
"source": "./plugins/code-directive",
|
|
103
103
|
"category": "development"
|
|
104
104
|
}
|
|
105
105
|
]
|