codeforge-dev 1.5.8 → 1.8.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.
- package/.devcontainer/.env +4 -5
- package/.devcontainer/.env.example +29 -0
- package/.devcontainer/.gitignore +8 -0
- package/.devcontainer/.secrets.example +12 -0
- package/.devcontainer/CHANGELOG.md +186 -0
- package/.devcontainer/CLAUDE.md +108 -21
- package/.devcontainer/README.md +173 -57
- package/.devcontainer/config/defaults/keybindings.json +5 -0
- package/.devcontainer/config/{main-system-prompt.md → defaults/main-system-prompt.md} +135 -2
- package/.devcontainer/config/{settings.json → defaults/settings.json} +25 -6
- package/.devcontainer/config/file-manifest.json +20 -0
- package/.devcontainer/devcontainer.json +38 -2
- package/.devcontainer/docs/configuration-reference.md +90 -0
- package/.devcontainer/docs/keybindings.md +100 -0
- package/.devcontainer/docs/optional-features.md +129 -0
- package/.devcontainer/docs/plugins.md +154 -0
- package/.devcontainer/docs/troubleshooting.md +128 -0
- package/.devcontainer/features/README.md +21 -7
- package/.devcontainer/features/agent-browser/install.sh +6 -0
- package/.devcontainer/features/ast-grep/install.sh +6 -0
- package/.devcontainer/features/biome/README.md +27 -0
- package/.devcontainer/features/biome/install.sh +6 -0
- package/.devcontainer/features/ccburn/README.md +60 -0
- package/.devcontainer/features/ccburn/devcontainer-feature.json +38 -0
- package/.devcontainer/features/ccburn/install.sh +180 -0
- package/.devcontainer/features/ccstatusline/README.md +22 -21
- package/.devcontainer/features/ccstatusline/devcontainer-feature.json +6 -1
- package/.devcontainer/features/ccstatusline/install.sh +55 -16
- package/.devcontainer/features/ccusage/install.sh +6 -0
- package/.devcontainer/features/claude-monitor/install.sh +6 -0
- package/.devcontainer/features/dprint/README.md +30 -0
- package/.devcontainer/features/dprint/devcontainer-feature.json +18 -0
- package/.devcontainer/features/dprint/install.sh +131 -0
- package/.devcontainer/features/hadolint/README.md +35 -0
- package/.devcontainer/features/hadolint/devcontainer-feature.json +13 -0
- package/.devcontainer/features/hadolint/install.sh +86 -0
- package/.devcontainer/features/lsp-servers/devcontainer-feature.json +5 -0
- package/.devcontainer/features/lsp-servers/install.sh +7 -0
- package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +6 -1
- package/.devcontainer/features/mcp-qdrant/install.sh +13 -6
- package/.devcontainer/features/mcp-reasoner/devcontainer-feature.json +6 -1
- package/.devcontainer/features/mcp-reasoner/install.sh +8 -1
- package/.devcontainer/features/notify-hook/devcontainer-feature.json +5 -0
- package/.devcontainer/features/notify-hook/install.sh +7 -0
- package/.devcontainer/features/ruff/README.md +26 -0
- package/.devcontainer/features/ruff/devcontainer-feature.json +21 -0
- package/.devcontainer/features/ruff/install.sh +74 -0
- package/.devcontainer/features/shellcheck/README.md +38 -0
- package/.devcontainer/features/shellcheck/devcontainer-feature.json +13 -0
- package/.devcontainer/features/shellcheck/install.sh +24 -0
- package/.devcontainer/features/shfmt/README.md +37 -0
- package/.devcontainer/features/shfmt/devcontainer-feature.json +13 -0
- package/.devcontainer/features/shfmt/install.sh +85 -0
- package/.devcontainer/features/splitrail/devcontainer-feature.json +5 -0
- package/.devcontainer/features/splitrail/install.sh +7 -0
- package/.devcontainer/features/tmux/install.sh +8 -0
- package/.devcontainer/features/tree-sitter/install.sh +6 -0
- package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +3 -10
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/__pycache__/format-on-stop.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +133 -13
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/.claude-plugin/plugin.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +4 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/__pycache__/lint-file.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/lint-file.py +477 -78
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/plugin.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/AGENT-REDIRECTION.md +226 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/REVIEW-RUBRIC.md +440 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/architect.md +207 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/bash-exec.md +173 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/claude-guide.md +146 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +2 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/dependency-analyst.md +250 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/doc-writer.md +246 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/explorer.md +237 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/generalist.md +134 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/git-archaeologist.md +242 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/migrator.md +201 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/perf-profiler.md +265 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/refactorer.md +213 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/researcher.md +195 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/security-auditor.md +289 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/spec-writer.md +297 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/statusline-config.md +188 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/test-writer.md +248 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +51 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/advisory-test-runner.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/collect-edited-files.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/commit-reminder.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/git-state-injector.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/guard-readonly-bash.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/redirect-builtin-agents.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/skill-suggester.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/syntax-validator.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/ticket-linker.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/todo-harvester.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-no-regression.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-tests-pass.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/advisory-test-runner.py +174 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +8 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/commit-reminder.py +90 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/git-state-injector.py +114 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/guard-readonly-bash.py +611 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/redirect-builtin-agents.py +83 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/skill-suggester.py +146 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/syntax-validator.py +9 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/ticket-linker.py +137 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/todo-harvester.py +130 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/verify-no-regression.py +221 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/verify-tests-pass.py +176 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/SKILL.md +224 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/references/error-handling.md +166 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/references/rest-conventions.md +215 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/ast-grep-patterns/SKILL.md +211 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/ast-grep-patterns/references/language-patterns.md +327 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/claude-agent-sdk/SKILL.md +599 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/claude-agent-sdk/references/sdk-typescript-reference.md +954 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/SKILL.md +134 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/references/ecosystem-commands.md +264 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/references/license-compliance.md +80 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/SKILL.md +153 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/references/api-doc-templates.md +221 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/references/docstring-formats.md +296 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/git-forensics/SKILL.md +276 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/git-forensics/references/advanced-commands.md +332 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/git-forensics/references/investigation-playbooks.md +319 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/SKILL.md +150 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/references/javascript-migrations.md +179 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/references/python-migrations.md +141 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/performance-profiling/SKILL.md +341 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/performance-profiling/references/interpreting-results.md +235 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/performance-profiling/references/tool-commands.md +395 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/refactoring-patterns/SKILL.md +344 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/refactoring-patterns/references/safe-transformations.md +247 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/refactoring-patterns/references/smell-catalog.md +332 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/security-checklist/SKILL.md +277 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/security-checklist/references/owasp-patterns.md +269 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/security-checklist/references/secrets-patterns.md +253 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/SKILL.md +320 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/references/criteria-patterns.md +245 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/references/ears-templates.md +239 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/__pycache__/block-dangerous.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/hooks/hooks.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/__pycache__/guard-protected.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +40 -39
- package/.devcontainer/scripts/check-setup.sh +72 -0
- package/.devcontainer/scripts/setup-aliases.sh +51 -6
- package/.devcontainer/scripts/setup-auth.sh +74 -0
- package/.devcontainer/scripts/setup-config.sh +112 -20
- package/.devcontainer/scripts/setup-plugins.sh +38 -46
- package/.devcontainer/scripts/setup-projects.sh +175 -0
- package/.devcontainer/scripts/setup-symlink-claude.sh +36 -0
- package/.devcontainer/scripts/setup-update-claude.sh +19 -8
- package/.devcontainer/scripts/setup.sh +49 -14
- package/README.md +23 -190
- package/package.json +1 -1
- package/setup.js +245 -71
- package/.devcontainer/features/claude-code/README.md +0 -498
- package/.devcontainer/features/claude-code/config/settings.json +0 -36
- package/.devcontainer/features/claude-code/config/system-prompt.md +0 -118
- package/.devcontainer/features/claude-code/config/world-building-sp.md +0 -1432
- package/.devcontainer/features/claude-code/devcontainer-feature.json +0 -42
- package/.devcontainer/features/claude-code/install.sh +0 -466
- package/.devcontainer/plugins/devs-marketplace/plugins/planning-reminder/.claude-plugin/plugin.json +0 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/planning-reminder/hooks/hooks.json +0 -17
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/.claude-plugin/plugin.json +0 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/config/planning-instructions.md +0 -14
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/functional-conjuring-map.md +0 -989
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/hooks/hooks.json +0 -33
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/__pycache__/post-enhance-task.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhance-planning.py +0 -71
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhancers/enhance-plan.sh +0 -68
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhancers/enhance-task.sh +0 -120
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/post-enhance-plan.py +0 -133
- package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/post-enhance-task.py +0 -253
- package/.devcontainer/scripts/setup-irie-claude.sh +0 -32
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Configuration Reference
|
|
2
|
+
|
|
3
|
+
Quick reference for all CodeForge configuration options.
|
|
4
|
+
|
|
5
|
+
## Which File to Edit
|
|
6
|
+
|
|
7
|
+
| Task | File to Edit |
|
|
8
|
+
|------|-------------|
|
|
9
|
+
| Change default model | `config/defaults/settings.json` |
|
|
10
|
+
| Change system prompt | `config/defaults/main-system-prompt.md` |
|
|
11
|
+
| Customize keybindings | `config/defaults/keybindings.json` |
|
|
12
|
+
| Control setup steps | `.env` |
|
|
13
|
+
| Add custom config file | `config/file-manifest.json` |
|
|
14
|
+
| Disable a feature | `devcontainer.json` (set `"version": "none"`) |
|
|
15
|
+
| Disable a plugin | `config/defaults/settings.json` (remove from `enabledPlugins`) |
|
|
16
|
+
| Skip a plugin install | `.env` (`PLUGIN_BLACKLIST`) |
|
|
17
|
+
| Change container memory | `devcontainer.json` (`runArgs`) |
|
|
18
|
+
| Add VS Code extension | `devcontainer.json` (`customizations.vscode.extensions`) |
|
|
19
|
+
|
|
20
|
+
## `.env` Variables (Setup Behavior)
|
|
21
|
+
|
|
22
|
+
These control what `setup.sh` does on each container start. Copy `.env.example` to `.env` and customize.
|
|
23
|
+
|
|
24
|
+
| Variable | Default | Description |
|
|
25
|
+
|----------|---------|-------------|
|
|
26
|
+
| `CLAUDE_CONFIG_DIR` | `/workspaces/.claude` | Where Claude Code config files are stored |
|
|
27
|
+
| `CONFIG_SOURCE_DIR` | `(auto-detected)` | Source directory for config defaults |
|
|
28
|
+
| `SETUP_CONFIG` | `true` | Copy config files per `file-manifest.json` |
|
|
29
|
+
| `SETUP_ALIASES` | `true` | Add cc/claude/ccraw/cc-tools aliases to shell |
|
|
30
|
+
| `SETUP_AUTH` | `true` | Configure Git/NPM auth from `.secrets` file |
|
|
31
|
+
| `SETUP_PLUGINS` | `true` | Install Anthropic plugins + register local marketplace |
|
|
32
|
+
| `SETUP_UPDATE_CLAUDE` | `true` | Background-update Claude Code CLI binary |
|
|
33
|
+
| `SETUP_PROJECTS` | `true` | Auto-detect projects for VS Code Project Manager |
|
|
34
|
+
| `PLUGIN_BLACKLIST` | `""` | Comma-separated plugin names to skip during installation |
|
|
35
|
+
|
|
36
|
+
## `devcontainer.json` `remoteEnv` (Container Runtime)
|
|
37
|
+
|
|
38
|
+
These environment variables are set in every terminal session inside the container.
|
|
39
|
+
|
|
40
|
+
| Variable | Value | Description |
|
|
41
|
+
|----------|-------|-------------|
|
|
42
|
+
| `WORKSPACE_ROOT` | `/workspaces` | Workspace root directory |
|
|
43
|
+
| `CLAUDE_CONFIG_DIR` | `/workspaces/.claude` | Claude Code config directory |
|
|
44
|
+
| `GH_CONFIG_DIR` | `/workspaces/.gh` | GitHub CLI config directory |
|
|
45
|
+
| `TMPDIR` | `/workspaces/.tmp` | Temporary files directory |
|
|
46
|
+
|
|
47
|
+
## `config/file-manifest.json` (File Copy Rules)
|
|
48
|
+
|
|
49
|
+
Each entry in the manifest array controls how a config file is deployed:
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"src": "defaults/settings.json",
|
|
54
|
+
"dest": "${CLAUDE_CONFIG_DIR}",
|
|
55
|
+
"destFilename": "settings.json",
|
|
56
|
+
"overwrite": "if-changed",
|
|
57
|
+
"enabled": true
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
| Field | Required | Default | Description |
|
|
62
|
+
|-------|----------|---------|-------------|
|
|
63
|
+
| `src` | Yes | — | Source file path relative to `config/` |
|
|
64
|
+
| `dest` | Yes | — | Destination directory (supports `${CLAUDE_CONFIG_DIR}`, `${WORKSPACE_ROOT}`) |
|
|
65
|
+
| `destFilename` | No | basename of `src` | Override the destination filename |
|
|
66
|
+
| `overwrite` | No | `"if-changed"` | `"always"`, `"never"`, or `"if-changed"` (sha256 comparison) |
|
|
67
|
+
| `enabled` | No | `true` | Set `false` to skip this entry |
|
|
68
|
+
|
|
69
|
+
## Feature Options
|
|
70
|
+
|
|
71
|
+
Each feature in `devcontainer.json` supports options defined in its `devcontainer-feature.json`. Common options:
|
|
72
|
+
|
|
73
|
+
| Option | Description | Used By |
|
|
74
|
+
|--------|-------------|---------|
|
|
75
|
+
| `version` | Tool version to install. `"none"` skips installation. | All local features |
|
|
76
|
+
| `username` | Container user to install for. `"automatic"` auto-detects. | dprint, ruff, ccusage, ccburn, etc. |
|
|
77
|
+
| `shells` | Which shell rc files to modify (`"both"`, `"bash"`, `"zsh"`). | ccusage, ccburn |
|
|
78
|
+
|
|
79
|
+
## `.secrets` File (Authentication)
|
|
80
|
+
|
|
81
|
+
Create `.devcontainer/.secrets` with tokens for automatic authentication:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
GH_TOKEN=ghp_your_token_here
|
|
85
|
+
GH_USERNAME=your-github-username
|
|
86
|
+
GH_EMAIL=your-email@example.com
|
|
87
|
+
NPM_TOKEN=npm_your_token_here
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Environment variables with the same names take precedence over `.secrets` file values (useful for Codespaces).
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Keybinding Customization
|
|
2
|
+
|
|
3
|
+
Claude Code runs inside VS Code's integrated terminal. Some VS Code shortcuts are intercepted before reaching the terminal, conflicting with Claude Code's keybindings.
|
|
4
|
+
|
|
5
|
+
## Conflicts
|
|
6
|
+
|
|
7
|
+
| Shortcut | VS Code Action | Claude Code Action |
|
|
8
|
+
|----------|---------------|-------------------|
|
|
9
|
+
| `Ctrl+G` | Go to Line | `chat:externalEditor` |
|
|
10
|
+
| `Ctrl+S` | Save File | `chat:stash` |
|
|
11
|
+
| `Ctrl+T` | Open Symbol | `app:toggleTodos` |
|
|
12
|
+
| `Ctrl+O` | Open File | `app:toggleTranscript` |
|
|
13
|
+
| `Ctrl+B` | Toggle Sidebar | `task:background` |
|
|
14
|
+
| `Ctrl+P` | Quick Open | `chat:modelPicker` |
|
|
15
|
+
| `Ctrl+R` | Open Recent | `history:search` |
|
|
16
|
+
| `Ctrl+F` | Find in Terminal | (navigation) |
|
|
17
|
+
|
|
18
|
+
## Already Resolved
|
|
19
|
+
|
|
20
|
+
`Ctrl+P` and `Ctrl+F` are configured to pass through to Claude Code via `terminal.integrated.commandsToSkipShell` in `devcontainer.json`:
|
|
21
|
+
|
|
22
|
+
```json
|
|
23
|
+
"terminal.integrated.commandsToSkipShell": [
|
|
24
|
+
"-workbench.action.quickOpen",
|
|
25
|
+
"-workbench.action.terminal.focusFind"
|
|
26
|
+
]
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The `-` prefix removes the shortcut from VS Code's interception list when the terminal is focused.
|
|
30
|
+
|
|
31
|
+
## Resolving Other Conflicts
|
|
32
|
+
|
|
33
|
+
### Option 1: Use Meta (Alt) Variants
|
|
34
|
+
|
|
35
|
+
Claude Code binds Meta (Alt) variants for all shortcuts. Use `Alt+G` instead of `Ctrl+G`, etc. No configuration needed.
|
|
36
|
+
|
|
37
|
+
### Option 2: Add to VS Code's Skip List
|
|
38
|
+
|
|
39
|
+
Add more shortcuts to `terminal.integrated.commandsToSkipShell` in `devcontainer.json`:
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
"terminal.integrated.commandsToSkipShell": [
|
|
43
|
+
"-workbench.action.quickOpen",
|
|
44
|
+
"-workbench.action.terminal.focusFind",
|
|
45
|
+
"-workbench.action.gotoLine",
|
|
46
|
+
"-workbench.action.files.save"
|
|
47
|
+
]
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Common command IDs:
|
|
51
|
+
| Shortcut | Command ID |
|
|
52
|
+
|----------|-----------|
|
|
53
|
+
| `Ctrl+G` | `workbench.action.gotoLine` |
|
|
54
|
+
| `Ctrl+S` | `workbench.action.files.save` |
|
|
55
|
+
| `Ctrl+T` | `workbench.action.showAllSymbols` |
|
|
56
|
+
| `Ctrl+O` | `workbench.action.files.openFile` |
|
|
57
|
+
| `Ctrl+B` | `workbench.action.toggleSidebarVisibility` |
|
|
58
|
+
| `Ctrl+R` | `workbench.action.openRecent` |
|
|
59
|
+
|
|
60
|
+
### Option 3: Custom Claude Code Keybindings
|
|
61
|
+
|
|
62
|
+
Edit `config/defaults/keybindings.json` to remap Claude Code actions to non-conflicting shortcuts:
|
|
63
|
+
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"bindings": [
|
|
67
|
+
{
|
|
68
|
+
"key": "ctrl+shift+g",
|
|
69
|
+
"command": "chat:externalEditor",
|
|
70
|
+
"description": "Open external editor (remapped from Ctrl+G)"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"key": "ctrl+shift+s",
|
|
74
|
+
"command": "chat:stash",
|
|
75
|
+
"description": "Stash conversation (remapped from Ctrl+S)"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
The keybindings file is copied to `/workspaces/.claude/keybindings.json` on container start (controlled by `file-manifest.json`).
|
|
82
|
+
|
|
83
|
+
## Claude Code Keybinding Reference
|
|
84
|
+
|
|
85
|
+
Full list of default Claude Code shortcuts (these work when Claude Code has terminal focus):
|
|
86
|
+
|
|
87
|
+
| Key | Action |
|
|
88
|
+
|-----|--------|
|
|
89
|
+
| `Ctrl+C` / `Esc` | Cancel / Interrupt |
|
|
90
|
+
| `Ctrl+L` | Clear screen |
|
|
91
|
+
| `Ctrl+P` | Model picker |
|
|
92
|
+
| `Ctrl+R` | Search history |
|
|
93
|
+
| `Ctrl+G` | External editor |
|
|
94
|
+
| `Ctrl+S` | Stash conversation |
|
|
95
|
+
| `Ctrl+T` | Toggle todos |
|
|
96
|
+
| `Ctrl+O` | Toggle transcript |
|
|
97
|
+
| `Ctrl+B` | Background current task |
|
|
98
|
+
| `Ctrl+F` | Find in output |
|
|
99
|
+
|
|
100
|
+
All of these also have `Meta` (Alt) variants that work even when VS Code intercepts the `Ctrl` version.
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Optional Features
|
|
2
|
+
|
|
3
|
+
CodeForge includes several features that are available but not enabled by default. This guide covers how to enable and configure them.
|
|
4
|
+
|
|
5
|
+
## mcp-qdrant (Vector Memory for Claude)
|
|
6
|
+
|
|
7
|
+
Adds persistent vector memory to Claude Code via a Qdrant MCP server. Claude can store and retrieve information across sessions.
|
|
8
|
+
|
|
9
|
+
### Enabling
|
|
10
|
+
|
|
11
|
+
Add to `devcontainer.json` under `"features"`:
|
|
12
|
+
|
|
13
|
+
```json
|
|
14
|
+
"./features/mcp-qdrant": {
|
|
15
|
+
"collectionName": "my-project-memory",
|
|
16
|
+
"embeddingModel": "all-MiniLM-L6-v2"
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Options
|
|
21
|
+
|
|
22
|
+
| Option | Default | Description |
|
|
23
|
+
|--------|---------|-------------|
|
|
24
|
+
| `collectionName` | `agent-memory` | Qdrant collection name |
|
|
25
|
+
| `embeddingModel` | `all-MiniLM-L6-v2` | Embedding model for vector search |
|
|
26
|
+
| `qdrantUrl` | (empty) | Remote Qdrant server URL. If empty, uses local storage. |
|
|
27
|
+
| `qdrantApiKey` | (empty) | API key for remote Qdrant server |
|
|
28
|
+
| `qdrantLocalPath` | `/workspaces/.qdrant/storage` | Local storage path (when no URL set) |
|
|
29
|
+
|
|
30
|
+
### Supported Embedding Models
|
|
31
|
+
|
|
32
|
+
- `all-MiniLM-L6-v2` (default, smallest, fastest)
|
|
33
|
+
- `BAAI/bge-small-en-v1.5`
|
|
34
|
+
- `BAAI/bge-base-en-v1.5`
|
|
35
|
+
- `sentence-transformers/all-mpnet-base-v2`
|
|
36
|
+
|
|
37
|
+
### Prerequisites
|
|
38
|
+
|
|
39
|
+
Already met by default container: Python 3.14 and uv are pre-installed.
|
|
40
|
+
|
|
41
|
+
### How It Works
|
|
42
|
+
|
|
43
|
+
1. During container build, the embedding model is pre-downloaded from GCS (not HuggingFace, to avoid network issues in containers).
|
|
44
|
+
2. On container start, a post-start hook registers the Qdrant MCP server in Claude Code's `settings.json`.
|
|
45
|
+
3. Claude Code can then use `qdrant-store` and `qdrant-find` tools to persist and search memories.
|
|
46
|
+
|
|
47
|
+
### Verification
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
uvx mcp-server-qdrant --help
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## mcp-reasoner (Enhanced Reasoning)
|
|
56
|
+
|
|
57
|
+
Adds a reasoning MCP server that gives Claude Code access to structured thinking tools (beam search, Monte Carlo tree search, etc.).
|
|
58
|
+
|
|
59
|
+
### Enabling
|
|
60
|
+
|
|
61
|
+
Add to `devcontainer.json` under `"features"`:
|
|
62
|
+
|
|
63
|
+
```json
|
|
64
|
+
"./features/mcp-reasoner": {}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Options
|
|
68
|
+
|
|
69
|
+
| Option | Default | Description |
|
|
70
|
+
|--------|---------|-------------|
|
|
71
|
+
| `version` | `latest` | Version to install. `"none"` to skip. |
|
|
72
|
+
| `username` | `automatic` | Container user to install for |
|
|
73
|
+
|
|
74
|
+
### Prerequisites
|
|
75
|
+
|
|
76
|
+
Already met by default container: Node.js LTS is pre-installed.
|
|
77
|
+
|
|
78
|
+
### How It Works
|
|
79
|
+
|
|
80
|
+
1. During build, clones and builds the mcp-reasoner Node.js project.
|
|
81
|
+
2. On container start, a post-start hook registers it as an MCP server in `settings.json`.
|
|
82
|
+
3. Claude Code gains access to reasoning tools: `beam_search`, `mcts`, `hypothesis_test`, etc.
|
|
83
|
+
|
|
84
|
+
### Verification
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
node ~/mcp-reasoner/dist/index.js --help
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## splitrail (Terminal Splitting)
|
|
93
|
+
|
|
94
|
+
A terminal multiplexer utility for splitting panes. Useful for Agent Teams workflows.
|
|
95
|
+
|
|
96
|
+
### Enabling
|
|
97
|
+
|
|
98
|
+
Add to `devcontainer.json` under `"features"`:
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
"./features/splitrail": {}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Prerequisites
|
|
105
|
+
|
|
106
|
+
Requires Rust toolchain. Add the Rust devcontainer feature first:
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
"ghcr.io/devcontainers/features/rust:1": {}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Then add splitrail to `overrideFeatureInstallOrder` after the Rust feature.
|
|
113
|
+
|
|
114
|
+
### How It Works
|
|
115
|
+
|
|
116
|
+
splitrail is a Rust-based tool that provides tmux pane management for Claude Code Agent Teams. It works alongside the tmux feature to provide split-pane terminal sessions.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Disabling Default Features
|
|
121
|
+
|
|
122
|
+
Any feature can be disabled without removing it from `devcontainer.json` by setting `"version": "none"`:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
"./features/hadolint": { "version": "none" },
|
|
126
|
+
"./features/shellcheck": { "version": "none" }
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
The feature entry stays in the config for easy re-enabling — just remove `"version": "none"` or set it to `"latest"`.
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Plugin System
|
|
2
|
+
|
|
3
|
+
CodeForge includes a local plugin marketplace that provides specialized tools and hooks for Claude Code.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
plugins/devs-marketplace/
|
|
9
|
+
├── .claude-plugin/
|
|
10
|
+
│ └── marketplace.json # Marketplace manifest (lists all plugins)
|
|
11
|
+
└── plugins/
|
|
12
|
+
├── codeforge-lsp/ # LSP language servers
|
|
13
|
+
├── ticket-workflow/ # EARS ticket workflow
|
|
14
|
+
├── notify-hook/ # Desktop notifications
|
|
15
|
+
├── dangerous-command-blocker/ # Safety: block destructive commands
|
|
16
|
+
├── protected-files-guard/ # Safety: protect sensitive files
|
|
17
|
+
├── auto-formatter/ # Batch formatter (Stop hook)
|
|
18
|
+
├── auto-linter/ # Batch linter (Stop hook)
|
|
19
|
+
└── code-directive/ # Agents, skills, hooks
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Each plugin has a `.claude-plugin/plugin.json` manifest defining its name, description, and capabilities.
|
|
23
|
+
|
|
24
|
+
## Enabling/Disabling Plugins
|
|
25
|
+
|
|
26
|
+
Plugins are enabled in `config/defaults/settings.json` under `enabledPlugins`:
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
"enabledPlugins": [
|
|
30
|
+
"auto-formatter@devs-marketplace",
|
|
31
|
+
"auto-linter@devs-marketplace",
|
|
32
|
+
"code-directive@devs-marketplace"
|
|
33
|
+
]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
To disable a plugin, remove its entry from the `enabledPlugins` array.
|
|
37
|
+
|
|
38
|
+
## PLUGIN_BLACKLIST
|
|
39
|
+
|
|
40
|
+
To skip a plugin during the installation/registration step (without editing `settings.json`), add it to `PLUGIN_BLACKLIST` in `.env`:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
PLUGIN_BLACKLIST="ticket-workflow,auto-linter"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
This prevents the plugin from being registered on container start but doesn't remove it from `enabledPlugins`.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Plugin Reference
|
|
51
|
+
|
|
52
|
+
### codeforge-lsp
|
|
53
|
+
|
|
54
|
+
**Purpose**: Provides Language Server Protocol servers for code intelligence.
|
|
55
|
+
|
|
56
|
+
**Servers**:
|
|
57
|
+
- **Pyright** — Python type checking and completion (`.py`, `.pyi`)
|
|
58
|
+
- **TypeScript Language Server** — TypeScript/JavaScript (`.ts`, `.tsx`, `.js`, `.jsx`, `.mts`, `.cts`, `.mjs`, `.cjs`)
|
|
59
|
+
- **gopls** — Go language server (`.go`, `.mod`, `.sum`)
|
|
60
|
+
|
|
61
|
+
Claude Code automatically uses these for hover info, go-to-definition, and find-references.
|
|
62
|
+
|
|
63
|
+
### ticket-workflow
|
|
64
|
+
|
|
65
|
+
**Purpose**: EARS-based ticket workflow with GitHub integration.
|
|
66
|
+
|
|
67
|
+
Provides structured ticket management using EARS (Easy Approach to Requirements Syntax) format. Integrates with GitHub Issues for tracking.
|
|
68
|
+
|
|
69
|
+
**Commands**: `/ticket:new`, `/ticket:work`, `/ticket:review-commit`, `/ticket:create-pr`
|
|
70
|
+
|
|
71
|
+
### notify-hook
|
|
72
|
+
|
|
73
|
+
**Purpose**: Desktop notifications when Claude Code finishes responding.
|
|
74
|
+
|
|
75
|
+
Sends an OSC escape sequence and terminal bell when Claude completes a response, triggering desktop notifications in supported terminals (WezTerm, iTerm2, VS Code with the OSC notifier extension).
|
|
76
|
+
|
|
77
|
+
**Configuration**: Enabled via `devcontainer.json` feature options:
|
|
78
|
+
```json
|
|
79
|
+
"./features/notify-hook": {
|
|
80
|
+
"enableBell": true,
|
|
81
|
+
"enableOsc": true
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### dangerous-command-blocker
|
|
86
|
+
|
|
87
|
+
**Purpose**: Prevents Claude Code from executing destructive bash commands.
|
|
88
|
+
|
|
89
|
+
**Blocked patterns**:
|
|
90
|
+
- `rm -rf /` and variants
|
|
91
|
+
- `sudo rm` on system directories
|
|
92
|
+
- `chmod 777` on sensitive paths
|
|
93
|
+
- `git push --force` to protected branches
|
|
94
|
+
- `dd` with output to block devices
|
|
95
|
+
- Other destructive system commands
|
|
96
|
+
|
|
97
|
+
The blocker runs as a PreToolUse hook on Bash commands. It checks the command against a pattern list and rejects matches.
|
|
98
|
+
|
|
99
|
+
### protected-files-guard
|
|
100
|
+
|
|
101
|
+
**Purpose**: Prevents Claude Code from modifying sensitive files.
|
|
102
|
+
|
|
103
|
+
**Protected patterns**:
|
|
104
|
+
- `.env` and `.secrets` files
|
|
105
|
+
- Lock files (`package-lock.json`, `uv.lock`, `Cargo.lock`, etc.)
|
|
106
|
+
- `.git/` directory contents
|
|
107
|
+
- Credential files and SSH keys
|
|
108
|
+
|
|
109
|
+
Runs as a PreToolUse hook on Write and Edit operations.
|
|
110
|
+
|
|
111
|
+
### auto-formatter
|
|
112
|
+
|
|
113
|
+
**Purpose**: Batch-formats all files edited during a Claude Code session.
|
|
114
|
+
|
|
115
|
+
**Supported languages**:
|
|
116
|
+
| Language | Formatter |
|
|
117
|
+
|----------|-----------|
|
|
118
|
+
| Python | Ruff |
|
|
119
|
+
| Go | gofmt |
|
|
120
|
+
| JavaScript/TypeScript/CSS/JSON/GraphQL/HTML | Biome |
|
|
121
|
+
| Shell scripts | shfmt |
|
|
122
|
+
| Markdown/YAML/TOML/Dockerfile | dprint |
|
|
123
|
+
| Rust | rustfmt |
|
|
124
|
+
|
|
125
|
+
**How it works**: Runs as a Stop hook. When Claude Code stops (end of a conversation turn), it checks which files were edited, detects their language, and runs the appropriate formatter. Has a 30-second timeout.
|
|
126
|
+
|
|
127
|
+
### auto-linter
|
|
128
|
+
|
|
129
|
+
**Purpose**: Batch-lints all files edited during a Claude Code session.
|
|
130
|
+
|
|
131
|
+
**Supported linters**:
|
|
132
|
+
| Language | Linter |
|
|
133
|
+
|----------|--------|
|
|
134
|
+
| Python | Pyright + Ruff |
|
|
135
|
+
| JavaScript/TypeScript/CSS/GraphQL | Biome |
|
|
136
|
+
| Shell scripts | ShellCheck |
|
|
137
|
+
| Go | go vet |
|
|
138
|
+
| Dockerfile | hadolint |
|
|
139
|
+
| Rust | clippy |
|
|
140
|
+
|
|
141
|
+
**How it works**: Runs as a Stop hook alongside auto-formatter. Checks edited files and runs the appropriate linter. Results are reported but don't block — they're informational.
|
|
142
|
+
|
|
143
|
+
### code-directive
|
|
144
|
+
|
|
145
|
+
**Purpose**: The main intelligence layer — custom agents, coding skills, and behavior hooks.
|
|
146
|
+
|
|
147
|
+
**Components**:
|
|
148
|
+
- **17 custom agents** — Specialized agent definitions for different task types (architect, test-writer, refactorer, etc.)
|
|
149
|
+
- **16 coding skills** — Domain-specific reference materials (FastAPI, Docker, testing patterns, etc.)
|
|
150
|
+
- **Agent redirection hook** — Transparently swaps built-in agent types to custom agents (e.g., `Explore` → `explorer`, `Plan` → `architect`)
|
|
151
|
+
- **Syntax validation hook** — Validates code syntax before commits
|
|
152
|
+
- **Skill auto-suggestion hook** — Suggests relevant skills based on conversation context
|
|
153
|
+
|
|
154
|
+
For detailed agent and skill documentation, see the agent markdown files in `plugins/devs-marketplace/plugins/code-directive/agents/` and skill files in `plugins/devs-marketplace/plugins/code-directive/skills/`.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Troubleshooting
|
|
2
|
+
|
|
3
|
+
Common issues and solutions for the CodeForge devcontainer.
|
|
4
|
+
|
|
5
|
+
## Container Build Failures
|
|
6
|
+
|
|
7
|
+
**Problem**: Container fails to build during feature installation.
|
|
8
|
+
|
|
9
|
+
- Check Docker has sufficient memory (4GB+ recommended). CodeForge sets `--memory=4g` by default.
|
|
10
|
+
- If a specific feature fails, disable it temporarily by setting `"version": "none"` in `devcontainer.json`.
|
|
11
|
+
- Check internet connectivity — most features download binaries from GitHub releases.
|
|
12
|
+
- If hitting GitHub API rate limits during build, set `GH_TOKEN` or `GITHUB_TOKEN` as an environment variable.
|
|
13
|
+
|
|
14
|
+
**Problem**: Build is slow or hangs.
|
|
15
|
+
|
|
16
|
+
- The mcp-qdrant feature downloads an embedding model (~90MB). This is normal on first build.
|
|
17
|
+
- The mcp-reasoner feature clones and builds a Node.js project. This takes 1-2 minutes.
|
|
18
|
+
- Use `"version": "none"` to skip optional features you don't need.
|
|
19
|
+
|
|
20
|
+
## Authentication Issues
|
|
21
|
+
|
|
22
|
+
**Problem**: `claude` command fails with authentication error.
|
|
23
|
+
|
|
24
|
+
- Run `claude` once interactively to complete authentication.
|
|
25
|
+
- If using API key auth, verify `ANTHROPIC_API_KEY` is set correctly.
|
|
26
|
+
- Background update may be in progress — wait 10 seconds and retry.
|
|
27
|
+
|
|
28
|
+
**Problem**: `gh` CLI not authenticated.
|
|
29
|
+
|
|
30
|
+
- Run `gh auth status` to check current state.
|
|
31
|
+
- Run `gh auth login` for interactive setup.
|
|
32
|
+
- Or configure `.devcontainer/.secrets` with `GH_TOKEN` for automatic auth on container start.
|
|
33
|
+
- Credentials persist in `/workspaces/.gh/` across rebuilds.
|
|
34
|
+
|
|
35
|
+
**Problem**: Git push fails with permission error.
|
|
36
|
+
|
|
37
|
+
- Run `gh auth status` to verify authentication.
|
|
38
|
+
- Check git remote URL: `git remote -v`. HTTPS remotes require `gh` auth; SSH remotes require SSH keys.
|
|
39
|
+
- Verify `git config --global user.name` and `user.email` are set.
|
|
40
|
+
|
|
41
|
+
**Problem**: NPM publish/install fails with 401.
|
|
42
|
+
|
|
43
|
+
- Set `NPM_TOKEN` in `.devcontainer/.secrets` or as environment variable.
|
|
44
|
+
- Verify token: `npm whoami`.
|
|
45
|
+
|
|
46
|
+
## Feature Installation Failures
|
|
47
|
+
|
|
48
|
+
**Problem**: Feature checksum verification fails.
|
|
49
|
+
|
|
50
|
+
- This usually means a corrupted download. Rebuild the container to retry.
|
|
51
|
+
- If persistent, the release may have been re-tagged. Try pinning a specific version in `devcontainer.json`.
|
|
52
|
+
|
|
53
|
+
**Problem**: Feature download fails after retries.
|
|
54
|
+
|
|
55
|
+
- Check internet connectivity.
|
|
56
|
+
- GitHub may be experiencing issues — check [githubstatus.com](https://www.githubstatus.com/).
|
|
57
|
+
- Set `GH_TOKEN` environment variable to avoid rate limiting.
|
|
58
|
+
|
|
59
|
+
**Problem**: Permission denied during feature install.
|
|
60
|
+
|
|
61
|
+
- Features run as root during build. This shouldn't happen in normal use.
|
|
62
|
+
- If modifying features, ensure `install.sh` has `chmod +x` and starts with `#!/bin/bash`.
|
|
63
|
+
|
|
64
|
+
## Plugin Issues
|
|
65
|
+
|
|
66
|
+
**Problem**: Plugin not loading or not appearing in Claude Code.
|
|
67
|
+
|
|
68
|
+
- Check `enabledPlugins` in `config/defaults/settings.json` — the plugin must be listed there.
|
|
69
|
+
- Verify the plugin directory exists under `plugins/devs-marketplace/plugins/`.
|
|
70
|
+
- Run `check-setup` to verify core configuration is correct.
|
|
71
|
+
- Check plugin blacklist: ensure it's not in `PLUGIN_BLACKLIST` in `.env`.
|
|
72
|
+
|
|
73
|
+
**Problem**: Auto-formatter or auto-linter not running.
|
|
74
|
+
|
|
75
|
+
- These run on the Stop hook — they only trigger when Claude Code stops (end of conversation turn).
|
|
76
|
+
- Verify the underlying tools are installed: `cc-tools` lists all available tools.
|
|
77
|
+
- Check the 30-second timeout hasn't been exceeded (large file sets may hit this).
|
|
78
|
+
|
|
79
|
+
## Agent Teams / tmux Issues
|
|
80
|
+
|
|
81
|
+
**Problem**: Split panes not working.
|
|
82
|
+
|
|
83
|
+
- Agent Teams requires tmux. Use the **"Claude Teams (tmux)"** terminal profile in VS Code.
|
|
84
|
+
- Verify tmux is installed: `tmux -V`.
|
|
85
|
+
- If using an external terminal, connect via `connect-external-terminal.sh`.
|
|
86
|
+
|
|
87
|
+
**Problem**: tmux Unicode/emoji rendering broken.
|
|
88
|
+
|
|
89
|
+
- Ensure locale is set: `echo $LANG` should show `en_US.UTF-8`.
|
|
90
|
+
- If not, run `source ~/.bashrc` or open a new terminal.
|
|
91
|
+
|
|
92
|
+
## "Command Not Found" Errors
|
|
93
|
+
|
|
94
|
+
**Problem**: `cc: command not found` or similar.
|
|
95
|
+
|
|
96
|
+
- Run `source ~/.bashrc` (or `~/.zshrc`) to reload aliases.
|
|
97
|
+
- Or open a new terminal.
|
|
98
|
+
- Verify setup ran: check for `# Claude Code environment and aliases` in your rc file.
|
|
99
|
+
|
|
100
|
+
**Problem**: Tool not found (e.g., `ruff`, `dprint`).
|
|
101
|
+
|
|
102
|
+
- Run `cc-tools` to see which tools are installed.
|
|
103
|
+
- Check if the feature was disabled with `"version": "none"` in `devcontainer.json`.
|
|
104
|
+
- Some tools (like `ruff`) install to `~/.local/bin` — ensure it's in your PATH.
|
|
105
|
+
|
|
106
|
+
## Performance Issues
|
|
107
|
+
|
|
108
|
+
**Problem**: Container is slow or running out of memory.
|
|
109
|
+
|
|
110
|
+
- CodeForge defaults to 4GB RAM / 8GB swap. Increase in `devcontainer.json` `runArgs`.
|
|
111
|
+
- Disable features you don't need with `"version": "none"`.
|
|
112
|
+
- The background Claude Code update runs once on startup — it's not persistent.
|
|
113
|
+
|
|
114
|
+
**Problem**: Slow startup.
|
|
115
|
+
|
|
116
|
+
- First start is slower due to `postStartCommand` running all setup scripts.
|
|
117
|
+
- Subsequent starts skip unchanged config files (sha256 comparison).
|
|
118
|
+
- Disable steps you don't need via `.env` (e.g., `SETUP_PROJECTS=false`).
|
|
119
|
+
|
|
120
|
+
## How to Reset to Defaults
|
|
121
|
+
|
|
122
|
+
1. **Reset config files**: Delete `/workspaces/.claude/` and restart the container. `setup-config.sh` will recopy all files from `config/defaults/`.
|
|
123
|
+
|
|
124
|
+
2. **Reset aliases**: Delete the `# Claude Code environment and aliases` block from `~/.bashrc` and `~/.zshrc`, then run `bash /workspaces/.devcontainer/scripts/setup-aliases.sh`.
|
|
125
|
+
|
|
126
|
+
3. **Full reset**: Rebuild the container from scratch (VS Code: "Dev Containers: Rebuild Container").
|
|
127
|
+
|
|
128
|
+
4. **Reset a single feature**: Set it to `"version": "none"`, rebuild, then set it back to the desired version and rebuild again.
|
|
@@ -4,11 +4,25 @@ This directory contains DevContainer Features for AI coding agent environments.
|
|
|
4
4
|
|
|
5
5
|
## Available Features
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
| Feature | Description | Status |
|
|
8
|
+
|---------|-------------|--------|
|
|
9
|
+
| `tmux` | Terminal multiplexer with Catppuccin theme for Agent Teams | ✅ |
|
|
10
|
+
| `agent-browser` | Headless browser automation for AI agents | ✅ |
|
|
11
|
+
| `claude-monitor` | Real-time token usage monitoring | ✅ |
|
|
12
|
+
| `ccusage` | Token usage analytics CLI | ✅ |
|
|
13
|
+
| `ccburn` | Visual token burn rate tracker with pace indicators | ✅ New |
|
|
14
|
+
| `ccstatusline` | 6-line powerline status display (v1.1.0) | ✅ |
|
|
15
|
+
| `ast-grep` | Structural code search using AST patterns | ✅ |
|
|
16
|
+
| `tree-sitter` | Parser with JS/TS/Python grammars | ✅ |
|
|
17
|
+
| `lsp-servers` | Pyright and TypeScript language servers | ✅ |
|
|
18
|
+
| `biome` | Fast JS/TS/JSON/CSS formatter | ✅ |
|
|
19
|
+
| `notify-hook` | Desktop notifications on Claude completion | ✅ |
|
|
20
|
+
| `splitrail` | Git worktree management for parallel branches | ✅ |
|
|
21
|
+
| `mcp-qdrant` | Qdrant vector database MCP server | ✅ (optional) |
|
|
22
|
+
| `mcp-reasoner` | Enhanced AI reasoning MCP server | ✅ (optional) |
|
|
23
|
+
| `claude-code` | Fallback config for Anthropic's official Claude Code feature | ✅ (config only) |
|
|
24
|
+
|
|
25
|
+
> **Note**: Claude Code itself is installed via `ghcr.io/anthropics/devcontainer-features/claude-code:1` (Anthropic's official feature). The local `claude-code/` directory provides only fallback configuration.
|
|
12
26
|
|
|
13
27
|
## Feature Structure
|
|
14
28
|
|
|
@@ -90,9 +104,9 @@ CodeForge modules are being converted to DevContainer Features:
|
|
|
90
104
|
| Old Module | New Feature | Status |
|
|
91
105
|
|-----------|-------------|---------|
|
|
92
106
|
| mcp_qdrant | mcp-qdrant | ✅ Complete |
|
|
107
|
+
| mcp_reasoner | mcp-reasoner | ✅ Complete |
|
|
93
108
|
| mcp_browser | mcp-browser | 🔜 Planned |
|
|
94
109
|
| mcp_sourcerer | mcp-sourcerer | 🔜 Planned |
|
|
95
|
-
| mcp_reasoner | mcp-reasoner | 🔜 Planned |
|
|
96
110
|
| mcp_obsidian | mcp-obsidian | 🔜 Planned |
|
|
97
111
|
| mcp_code_runner | mcp-code-runner | 🔜 Planned |
|
|
98
112
|
|
|
@@ -110,4 +124,4 @@ Features are part of the CodeForge project. See main repository for contribution
|
|
|
110
124
|
---
|
|
111
125
|
|
|
112
126
|
**Status**: Active Development
|
|
113
|
-
**Last Updated**:
|
|
127
|
+
**Last Updated**: 2026-02-08
|
|
@@ -4,6 +4,12 @@ set -euo pipefail
|
|
|
4
4
|
VERSION="${VERSION:-latest}"
|
|
5
5
|
USERNAME="${USERNAME:-automatic}"
|
|
6
6
|
|
|
7
|
+
# Skip installation if version is "none"
|
|
8
|
+
if [ "${VERSION}" = "none" ]; then
|
|
9
|
+
echo "[agent-browser] Skipping installation (version=none)"
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
|
|
7
13
|
# Set headless as default for containers (bundled Chromium, no display needed)
|
|
8
14
|
export AGENT_BROWSER_HEADLESS=true
|
|
9
15
|
|
|
@@ -4,6 +4,12 @@ set -euo pipefail
|
|
|
4
4
|
VERSION="${VERSION:-latest}"
|
|
5
5
|
USERNAME="${USERNAME:-automatic}"
|
|
6
6
|
|
|
7
|
+
# Skip installation if version is "none"
|
|
8
|
+
if [ "${VERSION}" = "none" ]; then
|
|
9
|
+
echo "[ast-grep] Skipping installation (version=none)"
|
|
10
|
+
exit 0
|
|
11
|
+
fi
|
|
12
|
+
|
|
7
13
|
echo "[ast-grep] Starting installation..."
|
|
8
14
|
echo "[ast-grep] Version: ${VERSION}"
|
|
9
15
|
|