codeforge-dev 1.7.0 → 1.9.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 -6
- package/.devcontainer/.env.example +29 -0
- package/.devcontainer/.gitignore +8 -0
- package/.devcontainer/.secrets.example +12 -0
- package/.devcontainer/CHANGELOG.md +181 -0
- package/.devcontainer/CLAUDE.md +57 -20
- package/.devcontainer/README.md +111 -56
- package/.devcontainer/config/{main-system-prompt.md → defaults/main-system-prompt.md} +72 -0
- package/.devcontainer/config/defaults/rules/spec-workflow.md +67 -0
- package/.devcontainer/config/defaults/rules/workspace-scope.md +7 -0
- package/.devcontainer/config/defaults/settings.json +67 -0
- package/.devcontainer/config/file-manifest.json +32 -0
- package/.devcontainer/devcontainer.json +20 -0
- 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/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/install.sh +6 -0
- package/.devcontainer/features/ccstatusline/devcontainer-feature.json +5 -0
- package/.devcontainer/features/ccstatusline/install.sh +7 -0
- 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 +5 -0
- package/.devcontainer/features/mcp-qdrant/install.sh +13 -6
- package/.devcontainer/features/mcp-reasoner/devcontainer-feature.json +5 -0
- 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 +104 -104
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/.claude-plugin/plugin.json +7 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/README.md +158 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/hooks/hooks.json +39 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/collect-edited-files.py +47 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/format-on-stop.py +297 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/lint-file.py +536 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/syntax-validator.py +146 -0
- 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 +114 -9
- 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 +478 -76
- 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/agents/architect.md +94 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/bash-exec.md +4 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/claude-guide.md +14 -23
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +20 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/dependency-analyst.md +20 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/doc-writer.md +99 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/explorer.md +20 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/generalist.md +152 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/git-archaeologist.md +18 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/migrator.md +114 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/perf-profiler.md +24 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/refactorer.md +101 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/researcher.md +33 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/security-auditor.md +24 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/spec-writer.md +65 -24
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/statusline-config.md +3 -3
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/test-writer.md +99 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +100 -56
- 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__/redirect-builtin-agents.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/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/skill-suggester.py +61 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/spec-reminder.py +121 -0
- 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/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/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/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/spec-check/SKILL.md +86 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/SKILL.md +97 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/references/backlog-template.md +7 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/references/roadmap-template.md +13 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-new/SKILL.md +101 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-new/references/template.md +110 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-update/SKILL.md +124 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/SKILL.md +32 -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/scripts/check-setup.sh +72 -0
- package/.devcontainer/scripts/setup-aliases.sh +43 -3
- package/.devcontainer/scripts/setup-auth.sh +74 -0
- package/.devcontainer/scripts/setup-config.sh +117 -24
- package/.devcontainer/scripts/setup-update-claude.sh +8 -0
- package/.devcontainer/scripts/setup.sh +46 -13
- package/README.md +23 -190
- package/package.json +42 -42
- package/setup.js +245 -71
- package/.devcontainer/config/settings.json +0 -70
- package/.devcontainer/features/claude-code/README.md +0 -498
- package/.devcontainer/features/claude-code/config/settings.json +0 -72
- 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/config/{keybindings.json → defaults/keybindings.json} +0 -0
package/.devcontainer/README.md
CHANGED
|
@@ -1,34 +1,21 @@
|
|
|
1
|
-
# CodeForge
|
|
1
|
+
# CodeForge Usage Guide
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[](https://www.npmjs.com/package/codeforge-dev)
|
|
5
|
-
|
|
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
|
-
|
|
8
|
-
## Prerequisites
|
|
9
|
-
|
|
10
|
-
- **Docker Desktop** (or compatible container runtime like Podman)
|
|
11
|
-
- **VS Code** with the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers), or **GitHub Codespaces**
|
|
12
|
-
- **Claude Code authentication** - see [Authentication](#authentication) section
|
|
3
|
+
Everything you need to know once you're inside the devcontainer.
|
|
13
4
|
|
|
14
5
|
## Quick Start
|
|
15
6
|
|
|
16
|
-
1. **
|
|
17
|
-
- VS Code: Open the folder, then select "Reopen in Container" from the command palette
|
|
18
|
-
- Codespaces: Create a new codespace from this repository
|
|
19
|
-
|
|
20
|
-
2. **Authenticate** (first time only)
|
|
7
|
+
1. **Authenticate** (first time only)
|
|
21
8
|
```bash
|
|
22
9
|
claude
|
|
23
10
|
```
|
|
24
11
|
Follow the prompts to authenticate via browser or API key.
|
|
25
12
|
|
|
26
|
-
|
|
13
|
+
2. **Start Claude Code**
|
|
27
14
|
```bash
|
|
28
15
|
cc
|
|
29
16
|
```
|
|
30
17
|
|
|
31
|
-
## Authentication
|
|
18
|
+
## Claude Code Authentication
|
|
32
19
|
|
|
33
20
|
Claude Code supports multiple authentication methods. On first run, you'll be prompted to choose:
|
|
34
21
|
|
|
@@ -57,11 +44,39 @@ Authentication credentials are stored in `/workspaces/.claude/` and persist acro
|
|
|
57
44
|
|
|
58
45
|
For more options, see the [Claude Code documentation](https://docs.anthropic.com/en/docs/claude-code).
|
|
59
46
|
|
|
60
|
-
## GitHub
|
|
47
|
+
## GitHub & NPM Authentication
|
|
61
48
|
|
|
62
|
-
|
|
49
|
+
### Automatic Auth via `.secrets` (Recommended)
|
|
50
|
+
|
|
51
|
+
CodeForge can automatically configure GitHub CLI, git identity, and NPM auth on every container start. Copy the template and fill in your tokens:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
cp .devcontainer/.secrets.example .devcontainer/.secrets
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Edit `.devcontainer/.secrets`:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
GH_TOKEN=ghp_your_token_here
|
|
61
|
+
GH_USERNAME=your-github-username
|
|
62
|
+
GH_EMAIL=your-email@example.com
|
|
63
|
+
NPM_TOKEN=npm_your_token_here
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
On the next container start (or rebuild), `setup-auth.sh` will:
|
|
67
|
+
- Authenticate `gh` CLI and configure git credential helper
|
|
68
|
+
- Set `git config --global user.name` and `user.email`
|
|
69
|
+
- Set NPM registry auth token
|
|
70
|
+
|
|
71
|
+
The `.secrets` file is gitignored at two levels (root `.*` + `.devcontainer/.gitignore`) and will never be committed.
|
|
72
|
+
|
|
73
|
+
**Environment variable fallback**: For Codespaces or CI, set `GH_TOKEN`, `GH_USERNAME`, `GH_EMAIL`, and/or `NPM_TOKEN` as environment variables (e.g., via Codespaces secrets or `localEnv` in `devcontainer.json`). Environment variables take precedence over `.secrets` file values.
|
|
74
|
+
|
|
75
|
+
Disable automatic auth by setting `SETUP_AUTH=false` in `.devcontainer/.env`.
|
|
63
76
|
|
|
64
|
-
### Interactive Login (
|
|
77
|
+
### Interactive Login (Alternative)
|
|
78
|
+
|
|
79
|
+
GitHub CLI (`gh`) is pre-installed for repository operations like pushing code, creating pull requests, and accessing private repositories.
|
|
65
80
|
|
|
66
81
|
```bash
|
|
67
82
|
gh auth login
|
|
@@ -98,7 +113,28 @@ Expected output shows your authenticated account and token scopes.
|
|
|
98
113
|
|
|
99
114
|
GitHub CLI credentials are automatically persisted across container rebuilds. The container is configured to store credentials in `/workspaces/.gh/` (via `GH_CONFIG_DIR`), which is part of the bind-mounted workspace.
|
|
100
115
|
|
|
101
|
-
**You only need to authenticate once.** After running `gh auth login`, your credentials will survive container rebuilds and be available in future sessions.
|
|
116
|
+
**You only need to authenticate once.** After running `gh auth login` or configuring `.secrets`, your credentials will survive container rebuilds and be available in future sessions.
|
|
117
|
+
|
|
118
|
+
## Using Claude Code
|
|
119
|
+
|
|
120
|
+
### The `cc` Command
|
|
121
|
+
|
|
122
|
+
The `cc` command is an alias that launches Claude Code with the project's system prompt and plan-mode permissions. For Agent Teams split-pane support, use the **"Claude Teams (tmux)"** terminal profile in VS Code (dropdown next to the `+` button) or connect via `connect-external-terminal.sh`.
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
cc # Start Claude Code in current directory
|
|
126
|
+
cc "explain this" # Start with an initial prompt
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Direct CLI
|
|
130
|
+
|
|
131
|
+
For more control, use the `claude` command directly:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
claude # Basic invocation
|
|
135
|
+
claude --help # View all options
|
|
136
|
+
claude --resume # Resume previous session
|
|
137
|
+
```
|
|
102
138
|
|
|
103
139
|
## Available Tools
|
|
104
140
|
|
|
@@ -109,6 +145,7 @@ GitHub CLI credentials are automatically persisted across container rebuilds. Th
|
|
|
109
145
|
| Node.js LTS | JavaScript runtime |
|
|
110
146
|
| TypeScript | Via Node.js |
|
|
111
147
|
| Go | Latest stable via devcontainer feature |
|
|
148
|
+
| Bun | Fast JavaScript runtime and toolkit |
|
|
112
149
|
|
|
113
150
|
### Package Managers
|
|
114
151
|
| Tool | Description |
|
|
@@ -126,7 +163,12 @@ GitHub CLI credentials are automatically persisted across container rebuilds. Th
|
|
|
126
163
|
| `jq` | JSON processor |
|
|
127
164
|
| `curl` | HTTP client |
|
|
128
165
|
| `tmux` | Terminal multiplexer for Agent Teams split-pane sessions |
|
|
129
|
-
| `biome` | Fast JS/TS/JSON/CSS formatter |
|
|
166
|
+
| `biome` | Fast JS/TS/JSON/CSS formatter and linter |
|
|
167
|
+
| `ruff` | Fast Python linter and formatter (replaces Black + Flake8) |
|
|
168
|
+
| `shfmt` | Shell script formatter |
|
|
169
|
+
| `dprint` | Pluggable formatter for Markdown, YAML, TOML, Dockerfile |
|
|
170
|
+
| `shellcheck` | Static analysis tool for shell scripts |
|
|
171
|
+
| `hadolint` | Dockerfile linter |
|
|
130
172
|
| `agent-browser` | Headless browser automation for AI agents |
|
|
131
173
|
|
|
132
174
|
### Code Intelligence
|
|
@@ -144,47 +186,38 @@ GitHub CLI credentials are automatically persisted across container rebuilds. Th
|
|
|
144
186
|
| `cc` | Wrapper with auto-configuration |
|
|
145
187
|
| `ccusage` | Token usage analyzer |
|
|
146
188
|
| `ccburn` | Visual token burn rate tracker with pace indicators |
|
|
147
|
-
| `ccstatusline` |
|
|
189
|
+
| `ccstatusline` | Status bar display (integrated into Claude Code, not standalone CLI) |
|
|
148
190
|
| `claude-monitor` | Real-time usage tracking |
|
|
149
191
|
|
|
150
|
-
## Using Claude Code
|
|
151
|
-
|
|
152
|
-
### The `cc` Command
|
|
153
|
-
|
|
154
|
-
The `cc` command is an alias that launches Claude Code with the project's system prompt and plan-mode permissions. For Agent Teams split-pane support, use the **"Claude Teams (tmux)"** terminal profile in VS Code (dropdown next to the `+` button) or connect via `connect-external-terminal.sh`.
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
cc # Start Claude Code in current directory
|
|
158
|
-
cc "explain this" # Start with an initial prompt
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### Direct CLI
|
|
162
|
-
|
|
163
|
-
For more control, use the `claude` command directly:
|
|
164
|
-
|
|
165
|
-
```bash
|
|
166
|
-
claude # Basic invocation
|
|
167
|
-
claude --help # View all options
|
|
168
|
-
claude --resume # Resume previous session
|
|
169
|
-
```
|
|
170
|
-
|
|
171
192
|
## Configuration
|
|
172
193
|
|
|
173
194
|
### Environment Variables
|
|
174
195
|
|
|
175
|
-
|
|
196
|
+
Copy `.devcontainer/.env.example` to `.devcontainer/.env` and customize:
|
|
176
197
|
|
|
177
198
|
| Variable | Default | Description |
|
|
178
199
|
|----------|---------|-------------|
|
|
179
200
|
| `CLAUDE_CONFIG_DIR` | `/workspaces/.claude` | Claude configuration directory |
|
|
180
|
-
| `SETUP_CONFIG` | `true` | Copy config files during setup |
|
|
181
|
-
| `
|
|
182
|
-
| `
|
|
183
|
-
| `SETUP_PLUGINS` | `true` | Install official plugins |
|
|
201
|
+
| `SETUP_CONFIG` | `true` | Copy config files during setup (per `file-manifest.json`) |
|
|
202
|
+
| `SETUP_ALIASES` | `true` | Add `cc`/`claude`/`ccraw` aliases to shell |
|
|
203
|
+
| `SETUP_AUTH` | `true` | Configure Git/NPM auth from `.secrets` |
|
|
204
|
+
| `SETUP_PLUGINS` | `true` | Install official plugins + register marketplace |
|
|
205
|
+
| `SETUP_UPDATE_CLAUDE` | `true` | Auto-update Claude Code on container start |
|
|
206
|
+
| `SETUP_PROJECTS` | `true` | Auto-detect projects for VS Code Project Manager |
|
|
207
|
+
| `PLUGIN_BLACKLIST` | `""` | Comma-separated plugin names to skip |
|
|
184
208
|
|
|
185
209
|
### Claude Code Settings
|
|
186
210
|
|
|
187
|
-
Default settings are in `.devcontainer/config/settings.json`.
|
|
211
|
+
Default settings are in `.devcontainer/config/defaults/settings.json`. File copying is controlled by `config/file-manifest.json`, which specifies per-file overwrite behavior (`"if-changed"`, `"always"`, or `"never"`).
|
|
212
|
+
|
|
213
|
+
To add a custom config file, append an entry to `file-manifest.json`:
|
|
214
|
+
```json
|
|
215
|
+
{
|
|
216
|
+
"src": "my-config.json",
|
|
217
|
+
"dest": "${WORKSPACE_ROOT}",
|
|
218
|
+
"overwrite": "if-changed"
|
|
219
|
+
}
|
|
220
|
+
```
|
|
188
221
|
|
|
189
222
|
Key defaults:
|
|
190
223
|
- **Model**: Claude Opus 4-6
|
|
@@ -193,7 +226,7 @@ Key defaults:
|
|
|
193
226
|
|
|
194
227
|
### Keybindings
|
|
195
228
|
|
|
196
|
-
Default keybindings are in `.devcontainer/config/keybindings.json` (empty by default — Claude Code defaults apply). Customize by adding entries to the `bindings` array.
|
|
229
|
+
Default keybindings are in `.devcontainer/config/defaults/keybindings.json` (empty by default — Claude Code defaults apply). Customize by adding entries to the `bindings` array.
|
|
197
230
|
|
|
198
231
|
**VS Code Terminal Passthrough**: `Ctrl+P` and `Ctrl+F` are configured to pass through to the terminal (via `terminal.integrated.commandsToSkipShell`) so Claude Code receives them. Other VS Code shortcuts that conflict with Claude Code:
|
|
199
232
|
|
|
@@ -210,7 +243,7 @@ For conflicting shortcuts, use Meta (Alt) variants or add custom keybindings.
|
|
|
210
243
|
|
|
211
244
|
### System Prompt
|
|
212
245
|
|
|
213
|
-
The default system prompt is in `.devcontainer/config/main-system-prompt.md`. Override it by creating a `.claude/system-prompt.md` in your project directory.
|
|
246
|
+
The default system prompt is in `.devcontainer/config/defaults/main-system-prompt.md`. Override it by creating a `.claude/system-prompt.md` in your project directory.
|
|
214
247
|
|
|
215
248
|
## Custom Features
|
|
216
249
|
|
|
@@ -223,7 +256,7 @@ CodeForge includes several custom devcontainer features:
|
|
|
223
256
|
| `claude-monitor` | Real-time token usage monitoring with ML predictions |
|
|
224
257
|
| `ccusage` | Usage analytics CLI |
|
|
225
258
|
| `ccburn` | Visual token burn rate tracker with pace indicators |
|
|
226
|
-
| `ccstatusline` |
|
|
259
|
+
| `ccstatusline` | Status bar display (integrated into Claude Code, not standalone CLI) |
|
|
227
260
|
| `ast-grep` | Structural code search using AST patterns |
|
|
228
261
|
| `tree-sitter` | Parser with JS/TS/Python grammars |
|
|
229
262
|
| `lsp-servers` | Pyright and TypeScript language servers |
|
|
@@ -274,12 +307,34 @@ The `setup-projects.sh` script auto-detects projects under `/workspaces/` and ma
|
|
|
274
307
|
|
|
275
308
|
- **Authentication required**: Run `claude` once to authenticate before using `cc`
|
|
276
309
|
- **Plan mode default**: The container starts in "plan" mode, which prompts for approval before making changes
|
|
277
|
-
- **
|
|
278
|
-
- **GitHub auth persists**: Run `gh auth login` once
|
|
310
|
+
- **Config is managed by manifest**: `config/file-manifest.json` controls which files are copied and when — default `overwrite: "if-changed"` uses sha256 comparison. Persistent changes go in `.devcontainer/config/defaults/settings.json`
|
|
311
|
+
- **GitHub auth persists**: Run `gh auth login` once or configure `.secrets`; credentials survive container rebuilds
|
|
279
312
|
- **Agent Teams needs tmux**: Split panes only work inside tmux. Use the "Claude Teams (tmux)" VS Code terminal profile or `connect-external-terminal.sh` from WezTerm/iTerm2
|
|
280
313
|
|
|
314
|
+
## Troubleshooting
|
|
315
|
+
|
|
316
|
+
Common issues and solutions. For detailed troubleshooting, see [docs/troubleshooting.md](docs/troubleshooting.md).
|
|
317
|
+
|
|
318
|
+
| Problem | Solution |
|
|
319
|
+
|---------|----------|
|
|
320
|
+
| `cc: command not found` | Run `source ~/.bashrc` or open a new terminal |
|
|
321
|
+
| `claude` fails during startup | Background update may be in progress — wait 10s and retry |
|
|
322
|
+
| GitHub push fails | Run `gh auth status` to check authentication |
|
|
323
|
+
| Plugin not loading | Check `enabledPlugins` in `config/defaults/settings.json` |
|
|
324
|
+
| Feature not installed | Check `devcontainer.json` for `"version": "none"` |
|
|
325
|
+
| Tool version/status | Run `cc-tools` to list all tools with version info |
|
|
326
|
+
| Full health check | Run `check-setup` to verify setup status |
|
|
327
|
+
|
|
281
328
|
## Further Reading
|
|
282
329
|
|
|
330
|
+
**CodeForge Documentation**:
|
|
331
|
+
- [Configuration Reference](docs/configuration-reference.md) — all env vars and config options
|
|
332
|
+
- [Plugin System](docs/plugins.md) — plugin architecture and per-plugin docs
|
|
333
|
+
- [Optional Features](docs/optional-features.md) — mcp-qdrant, mcp-reasoner, splitrail
|
|
334
|
+
- [Keybinding Customization](docs/keybindings.md) — resolving VS Code conflicts
|
|
335
|
+
- [Troubleshooting](docs/troubleshooting.md) — common issues and solutions
|
|
336
|
+
|
|
337
|
+
**External**:
|
|
283
338
|
- [Claude Code Documentation](https://docs.anthropic.com/en/docs/claude-code)
|
|
284
339
|
- [Dev Containers Specification](https://containers.dev/)
|
|
285
340
|
- [GitHub CLI Manual](https://cli.github.com/manual/)
|
|
@@ -396,6 +396,78 @@ offset = len(header) + 1 # null terminator in legacy format
|
|
|
396
396
|
offset = len(header) + 1 # add one to header length
|
|
397
397
|
</documentation>
|
|
398
398
|
|
|
399
|
+
<specification_management>
|
|
400
|
+
Specs and project-level docs live in `.specs/` at the project root.
|
|
401
|
+
|
|
402
|
+
You (the orchestrator) own spec creation and maintenance. Agents do not update
|
|
403
|
+
specs directly — they flag when specs need attention, and you handle it.
|
|
404
|
+
|
|
405
|
+
Folder structure:
|
|
406
|
+
```
|
|
407
|
+
.specs/
|
|
408
|
+
├── roadmap.md # What each version delivers and why (≤150 lines)
|
|
409
|
+
├── lessons-learned.md # Workflow anti-patterns
|
|
410
|
+
├── ci-cd.md # CI/CD pipeline, environments, deploy process
|
|
411
|
+
├── v0.1.0.md # Feature spec (single file per version if ≤200 lines)
|
|
412
|
+
├── v0.2.0/ # Version folder when multiple specs needed
|
|
413
|
+
│ ├── overview.md # Parent linking sub-specs (≤50 lines)
|
|
414
|
+
│ └── feature-name.md # Sub-spec per feature (≤200 lines each)
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
Spec rules:
|
|
418
|
+
- ≤200 lines per spec file. Split by feature boundary if larger; link via
|
|
419
|
+
a parent overview (≤50 lines). Monolithic specs rot — no AI context window
|
|
420
|
+
can use a 4,000-line spec.
|
|
421
|
+
- Reference files, don't reproduce them. Write "see `src/engine/db/migrations/002.sql`
|
|
422
|
+
lines 48-70" — never paste full schemas, SQL DDL, or type definitions. The
|
|
423
|
+
code is the source of truth; duplicated snippets go stale.
|
|
424
|
+
- Each spec is independently loadable. Include version, status, last-updated,
|
|
425
|
+
intent, key file paths, and acceptance criteria in every spec file.
|
|
426
|
+
|
|
427
|
+
Standard template:
|
|
428
|
+
```
|
|
429
|
+
# Feature: [Name]
|
|
430
|
+
**Version:** v0.X.0
|
|
431
|
+
**Status:** implemented | partial | planned
|
|
432
|
+
**Last Updated:** YYYY-MM-DD
|
|
433
|
+
|
|
434
|
+
## Intent
|
|
435
|
+
## Acceptance Criteria
|
|
436
|
+
## Key Files
|
|
437
|
+
## Schema / Data Model (reference only — no inline DDL)
|
|
438
|
+
## API Endpoints (table: Method | Path | Description)
|
|
439
|
+
## Requirements (EARS format: FR-1, NFR-1)
|
|
440
|
+
## Dependencies
|
|
441
|
+
## Out of Scope
|
|
442
|
+
## Implementation Notes (as-built deviations — post-implementation only)
|
|
443
|
+
## Discrepancies (spec vs reality gaps)
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
As-built workflow (after implementing a feature):
|
|
447
|
+
1. Find the feature spec: Glob `.specs/**/*.md`
|
|
448
|
+
2. Set status to "implemented" or "partial"
|
|
449
|
+
3. Check off acceptance criteria with passing tests
|
|
450
|
+
4. Add Implementation Notes for any deviations
|
|
451
|
+
5. Update file paths if they changed
|
|
452
|
+
6. Update Last Updated date
|
|
453
|
+
If no spec exists and the change is substantial, create one or note "spec needed."
|
|
454
|
+
|
|
455
|
+
Document types — don't mix:
|
|
456
|
+
- Roadmap (`.specs/roadmap.md`): what each version delivers and why. No
|
|
457
|
+
implementation detail — that belongs in feature specs. Target: ≤150 lines.
|
|
458
|
+
- Feature spec (`.specs/v*.md` or `.specs/vX.Y.0/*.md`): how a feature works.
|
|
459
|
+
≤200 lines.
|
|
460
|
+
- CI/CD (`.specs/ci-cd.md`): pipeline stages, environments, deploy process,
|
|
461
|
+
and automation config. Keep declarative — reference workflow files, don't
|
|
462
|
+
reproduce them.
|
|
463
|
+
- Lessons learned (`.specs/lessons-learned.md`): workflow anti-patterns.
|
|
464
|
+
|
|
465
|
+
After a version ships, update feature specs to as-built status. Delete or
|
|
466
|
+
merge superseded planning artifacts — don't accumulate snapshot documents.
|
|
467
|
+
|
|
468
|
+
Delegate spec writing to the spec-writer agent when creating new specs.
|
|
469
|
+
</specification_management>
|
|
470
|
+
|
|
399
471
|
<code_standards>
|
|
400
472
|
Files:
|
|
401
473
|
- Small, focused, single reason to change
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Specification Workflow
|
|
2
|
+
|
|
3
|
+
Every project uses `.specs/` as the specification directory. These rules are mandatory.
|
|
4
|
+
|
|
5
|
+
## Rules
|
|
6
|
+
|
|
7
|
+
1. Every non-trivial feature MUST have a spec before implementation begins.
|
|
8
|
+
Use `/spec-new` to create one from the standard template.
|
|
9
|
+
2. Every implementation MUST end with an as-built spec update.
|
|
10
|
+
Use `/spec-update` to perform the update.
|
|
11
|
+
3. Specs MUST be ≤200 lines. Split by feature boundary if larger;
|
|
12
|
+
link via a parent overview (≤50 lines).
|
|
13
|
+
4. Specs MUST reference file paths, never reproduce source code,
|
|
14
|
+
schemas, or type definitions inline. The code is the source of truth.
|
|
15
|
+
5. Each spec file MUST be independently loadable — include version,
|
|
16
|
+
status, last-updated, intent, key files, and acceptance criteria.
|
|
17
|
+
6. Before starting a new version, MUST run `/spec-check` to audit spec health.
|
|
18
|
+
7. To bootstrap `.specs/` for a project that doesn't have one, use `/spec-init`.
|
|
19
|
+
|
|
20
|
+
## Directory Convention
|
|
21
|
+
|
|
22
|
+
`.specs/` at the project root. Version-organized:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
.specs/
|
|
26
|
+
├── v0.1.0.md # Single-file spec for small versions
|
|
27
|
+
├── v0.2.0/ # Directory for multi-feature versions
|
|
28
|
+
│ ├── _overview.md # Feature matrix + architecture decisions
|
|
29
|
+
│ ├── feature-a.md
|
|
30
|
+
│ └── feature-b.md
|
|
31
|
+
├── ROADMAP.md # What each version delivers and why (≤150 lines)
|
|
32
|
+
└── BACKLOG.md # Deferred items not yet scheduled
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Standard Template
|
|
36
|
+
|
|
37
|
+
Every spec follows this structure:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
# Feature: [Name]
|
|
41
|
+
**Version:** v0.X.0
|
|
42
|
+
**Status:** implemented | partial | planned
|
|
43
|
+
**Last Updated:** YYYY-MM-DD
|
|
44
|
+
|
|
45
|
+
## Intent
|
|
46
|
+
## Acceptance Criteria
|
|
47
|
+
## Key Files
|
|
48
|
+
## Schema / Data Model (reference file paths only)
|
|
49
|
+
## API Endpoints (Method | Path | Description)
|
|
50
|
+
## Requirements (EARS format: FR-1, NFR-1)
|
|
51
|
+
## Dependencies
|
|
52
|
+
## Out of Scope
|
|
53
|
+
## Implementation Notes (post-implementation only)
|
|
54
|
+
## Discrepancies (spec vs reality gaps)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## As-Built Workflow
|
|
58
|
+
|
|
59
|
+
After implementing a feature:
|
|
60
|
+
1. Find the spec: Glob `.specs/**/*.md`
|
|
61
|
+
2. Set status to "implemented" or "partial"
|
|
62
|
+
3. Check off acceptance criteria with passing tests
|
|
63
|
+
4. Add Implementation Notes for any deviations
|
|
64
|
+
5. Update file paths if they changed
|
|
65
|
+
6. Update Last Updated date
|
|
66
|
+
|
|
67
|
+
If no spec exists and the change is substantial, create one.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Workspace Scoping Rule
|
|
2
|
+
|
|
3
|
+
When working in a project subdirectory, restrict all file operations
|
|
4
|
+
(reads, writes, searches, globs) to the current project directory
|
|
5
|
+
unless the user explicitly requests cross-project work.
|
|
6
|
+
|
|
7
|
+
Do not suggest changes to files in sibling project directories.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cleanupPeriodDays": 60,
|
|
3
|
+
"autoCompact": true,
|
|
4
|
+
"alwaysThinkingEnabled": true,
|
|
5
|
+
"env": {
|
|
6
|
+
"ANTHROPIC_MODEL": "claude-opus-4-6",
|
|
7
|
+
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-4-6",
|
|
8
|
+
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5-20250929",
|
|
9
|
+
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5-20251001",
|
|
10
|
+
"BASH_DEFAULT_TIMEOUT_MS": "240000",
|
|
11
|
+
"BASH_MAX_TIMEOUT_MS": "600000",
|
|
12
|
+
"CLAUDE_CODE_MAX_OUTPUT_TOKENS": "64000",
|
|
13
|
+
"MAX_MCP_OUTPUT_TOKENS": "10000",
|
|
14
|
+
"MAX_THINKING_TOKENS": "63999",
|
|
15
|
+
"MCP_TIMEOUT": "120000",
|
|
16
|
+
"MCP_TOOL_TIMEOUT": "30000",
|
|
17
|
+
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "95",
|
|
18
|
+
"CLAUDE_CODE_SHELL": "zsh",
|
|
19
|
+
"FORCE_AUTOUPDATE_PLUGINS": "1",
|
|
20
|
+
|
|
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",
|
|
25
|
+
"CLAUDE_CODE_DISABLE_AUTO_MEMORY": "0",
|
|
26
|
+
"ENABLE_CLAUDE_CODE_SM_COMPACT": "1",
|
|
27
|
+
"CLAUDE_CODE_FORCE_GLOBAL_CACHE": "1",
|
|
28
|
+
"CLAUDE_CODE_PLAN_MODE_INTERVIEW_PHASE": "true",
|
|
29
|
+
"CLAUDE_CODE_PLAN_V2_AGENT_COUNT": "3",
|
|
30
|
+
"CLAUDE_CODE_PLAN_MODE_REQUIRED": "true",
|
|
31
|
+
|
|
32
|
+
"CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY": "5",
|
|
33
|
+
"CLAUDE_CODE_MAX_RETRIES": "1",
|
|
34
|
+
"BASH_MAX_OUTPUT_LENGTH": "15000",
|
|
35
|
+
"TASK_MAX_OUTPUT_LENGTH": "64000"
|
|
36
|
+
},
|
|
37
|
+
"teammateMode": "auto",
|
|
38
|
+
"effortLevel": "high",
|
|
39
|
+
"includeCoAuthoredBy": false,
|
|
40
|
+
"permissions": {
|
|
41
|
+
"allow": ["Read(/workspaces/*)", "WebFetch(domain:*)"],
|
|
42
|
+
"deny": [],
|
|
43
|
+
"ask": [],
|
|
44
|
+
"defaultMode": "plan",
|
|
45
|
+
"additionalDirectories": []
|
|
46
|
+
},
|
|
47
|
+
"model": "opus",
|
|
48
|
+
"enabledMcpjsonServers": [],
|
|
49
|
+
"disabledMcpjsonServers": [],
|
|
50
|
+
"hooks": {},
|
|
51
|
+
"statusLine": {
|
|
52
|
+
"type": "command",
|
|
53
|
+
"command": "/usr/local/bin/ccstatusline-wrapper"
|
|
54
|
+
},
|
|
55
|
+
"enabledPlugins": {
|
|
56
|
+
"frontend-design@claude-plugins-official": true,
|
|
57
|
+
"codeforge-lsp@devs-marketplace": true,
|
|
58
|
+
"ticket-workflow@devs-marketplace": true,
|
|
59
|
+
"notify-hook@devs-marketplace": true,
|
|
60
|
+
"dangerous-command-blocker@devs-marketplace": true,
|
|
61
|
+
"protected-files-guard@devs-marketplace": true,
|
|
62
|
+
"auto-formatter@devs-marketplace": true,
|
|
63
|
+
"auto-linter@devs-marketplace": true,
|
|
64
|
+
"code-directive@devs-marketplace": true
|
|
65
|
+
},
|
|
66
|
+
"autoUpdatesChannel": "latest"
|
|
67
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"src": "defaults/settings.json",
|
|
4
|
+
"dest": "${CLAUDE_CONFIG_DIR}",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"overwrite": "if-changed"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"src": "defaults/keybindings.json",
|
|
10
|
+
"dest": "${CLAUDE_CONFIG_DIR}",
|
|
11
|
+
"enabled": true,
|
|
12
|
+
"overwrite": "if-changed"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"src": "defaults/main-system-prompt.md",
|
|
16
|
+
"dest": "${CLAUDE_CONFIG_DIR}",
|
|
17
|
+
"enabled": true,
|
|
18
|
+
"overwrite": "if-changed"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"src": "defaults/rules/spec-workflow.md",
|
|
22
|
+
"dest": "${CLAUDE_CONFIG_DIR}/rules",
|
|
23
|
+
"enabled": true,
|
|
24
|
+
"overwrite": "if-changed"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"src": "defaults/rules/workspace-scope.md",
|
|
28
|
+
"dest": "${CLAUDE_CONFIG_DIR}/rules",
|
|
29
|
+
"enabled": true,
|
|
30
|
+
"overwrite": "if-changed"
|
|
31
|
+
}
|
|
32
|
+
]
|
|
@@ -12,6 +12,11 @@
|
|
|
12
12
|
"TMPDIR": "/workspaces/.tmp"
|
|
13
13
|
},
|
|
14
14
|
|
|
15
|
+
// Feature install order: external runtimes first (Node, uv, Go, Bun),
|
|
16
|
+
// then Claude Code (needs Node), then custom features.
|
|
17
|
+
// npm-dependent features (agent-browser, ccusage, ccburn, biome, lsp-servers)
|
|
18
|
+
// must come after Node. uv-dependent features (ruff, claude-monitor) must
|
|
19
|
+
// come after uv. notify-hook is last (lightweight, no dependencies).
|
|
15
20
|
"overrideFeatureInstallOrder": [
|
|
16
21
|
"ghcr.io/devcontainers/features/node",
|
|
17
22
|
"ghcr.io/devcontainers/features/github-cli",
|
|
@@ -29,6 +34,11 @@
|
|
|
29
34
|
"./features/ast-grep",
|
|
30
35
|
"./features/tree-sitter",
|
|
31
36
|
"./features/lsp-servers",
|
|
37
|
+
"./features/ruff",
|
|
38
|
+
"./features/shfmt",
|
|
39
|
+
"./features/dprint",
|
|
40
|
+
"./features/shellcheck",
|
|
41
|
+
"./features/hadolint",
|
|
32
42
|
"./features/biome",
|
|
33
43
|
"./features/notify-hook"
|
|
34
44
|
],
|
|
@@ -69,6 +79,16 @@
|
|
|
69
79
|
"./features/tree-sitter": {},
|
|
70
80
|
"./features/lsp-servers": {},
|
|
71
81
|
"./features/agent-browser": {},
|
|
82
|
+
"./features/ruff": {
|
|
83
|
+
"version": "latest",
|
|
84
|
+
"username": "automatic"
|
|
85
|
+
},
|
|
86
|
+
"./features/shfmt": {},
|
|
87
|
+
"./features/dprint": {
|
|
88
|
+
"username": "automatic"
|
|
89
|
+
},
|
|
90
|
+
"./features/shellcheck": {},
|
|
91
|
+
"./features/hadolint": {},
|
|
72
92
|
"./features/biome": {},
|
|
73
93
|
"./features/notify-hook": {
|
|
74
94
|
"enableBell": true,
|
|
@@ -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).
|