Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .devcontainer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@

### Changed

#### Performance
- Commented out Rust toolchain feature — saves ~1.23 GB image size; uncomment in `devcontainer.json` if needed
- Commented out ccms feature pending replacement tool (requires Rust)
- Updated Bun feature to install latest version (was pinned to outdated 1.3.9)
- Added npm cache cleanup to 6 features: agent-browser, ast-grep, biome, claude-session-dashboard, lsp-servers, tree-sitter (saves ~96 MB runtime disk)

#### Port Forwarding
- Dynamic port forwarding for all ports in VS Code — previously only port 7847 was statically forwarded; now all ports auto-forward with notification

Expand All @@ -23,6 +29,9 @@

### Fixed

#### Bun
- Bun PATH not available in non-interactive shells — added `/etc/profile.d/bun.sh` via postStart hook

#### Session Context Plugin
- **Commit reminder** no longer blocks Claude from stopping — switched from `decision: "block"` to advisory `systemMessage` wrapped in `<system-reminder>` tags
- **Commit reminder** now uses tiered logic: meaningful changes (3+ files, 2+ source files, or test files) get an advisory suggestion; small changes are silent
Expand Down
2 changes: 1 addition & 1 deletion .devcontainer/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ git worktree add /workspaces/projects/.worktrees/<branch-name> -b <branch>
| `ccraw` | Vanilla Claude Code (bypasses config) |
| `ccw` | Claude Code with writing system prompt |
| `cc-orc` | Claude Code in orchestrator mode (delegation-first) |
| `ccms` | Search session history (project-scoped) |
| ~~`ccms`~~ | _(commented out — replacement pending)_ |
| `ccusage` / `ccburn` | Token usage analysis / burn rate |
| `agent-browser` | Headless Chromium (Playwright-based) |
| `check-setup` | Verify CodeForge setup health |
Expand Down
17 changes: 9 additions & 8 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,28 +46,25 @@
}
},

// Feature install order: external runtimes first (Node, uv, Rust, Bun),
// Feature install order: external runtimes first (Node, uv, Bun),
// then Claude Code native binary (no Node dependency), then custom features.
// npm-dependent features (agent-browser, ccusage, ccburn, claude-session-dashboard,
// biome, lsp-servers) must come after Node. uv-dependent features (ruff, claude-monitor) must
// come after uv. cargo-dependent features (ccms) must come after Rust.
// notify-hook is second-to-last (lightweight, no dependencies).
// come after uv. notify-hook is second-to-last (lightweight, no dependencies).
// dbr (devcontainer-bridge) is last — standalone binary, no dependencies.
"overrideFeatureInstallOrder": [
"ghcr.io/devcontainers/features/node",
"ghcr.io/devcontainers/features/github-cli",
"ghcr.io/devcontainers/features/docker-outside-of-docker",
"ghcr.io/devcontainers-extra/features/uv",
"ghcr.io/rails/devcontainer/features/bun",
"ghcr.io/devcontainers/features/rust",
"./features/claude-code-native",
"./features/tmux",
"./features/agent-browser",
"./features/claude-monitor",
"./features/ccusage",
"./features/ccburn",
"./features/ccstatusline",
"./features/ccms",
"./features/claude-session-dashboard",
"./features/ast-grep",
"./features/tree-sitter",
Expand All @@ -94,10 +91,13 @@
"moby": false
},
"ghcr.io/devcontainers-extra/features/uv:1.0": {},
"ghcr.io/rails/devcontainer/features/bun:1.0.2": {},
"ghcr.io/devcontainers/features/rust:1.5.0": {
"ghcr.io/rails/devcontainer/features/bun:1.0.2": {
"version": "latest"
},
// Uncomment to add Rust toolchain:
// "ghcr.io/devcontainers/features/rust:1.5.0": {
// "version": "latest"
// },
// Uncomment to add Go runtime (not installed by default):
// "ghcr.io/devcontainers/features/go:1": {},
"./features/claude-code-native": {},
Expand All @@ -120,7 +120,8 @@
"./features/ccstatusline": {
"username": "automatic"
},
"./features/ccms": {},
// Uncomment to add ccms (requires Rust):
// "./features/ccms": {},
"./features/claude-session-dashboard": {
"version": "latest",
"port": "7847",
Expand Down
1 change: 1 addition & 0 deletions .devcontainer/features/agent-browser/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ npm install -g "${NPM_PACKAGE}" 2>/dev/null || {
echo "[agent-browser] WARNING: Global install failed, trying user install"
su - "${USERNAME}" -c "npm install -g ${NPM_PACKAGE}" 2>/dev/null || true
}
npm cache clean --force 2>/dev/null || true

# Download Chromium and install system dependencies
echo "[agent-browser] Installing Chromium and system dependencies..."
Expand Down
1 change: 1 addition & 0 deletions .devcontainer/features/ast-grep/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,6 @@ npm install -g "${NPM_PACKAGE}" 2>/dev/null || {
echo "[ast-grep] WARNING: Global install failed, trying user install"
su - "${USERNAME}" -c "npm install -g ${NPM_PACKAGE}" 2>/dev/null || true
}
npm cache clean --force 2>/dev/null || true

echo "[ast-grep] Installed: $(ast-grep --version 2>/dev/null || echo 'unknown')"
1 change: 1 addition & 0 deletions .devcontainer/features/biome/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ if [ "${VERSION}" = "latest" ]; then
else
npm install -g "@biomejs/biome@${VERSION}"
fi
npm cache clean --force 2>/dev/null || true

# Verify installation
biome --version
Expand Down
1 change: 1 addition & 0 deletions .devcontainer/features/claude-session-dashboard/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ echo "[claude-session-dashboard] Installing for user: ${USERNAME}"
# === INSTALL VIA NPM ===
echo "[claude-session-dashboard] Installing claude-session-dashboard@${DASHBOARD_VERSION} globally..."
npm install -g "claude-session-dashboard@${DASHBOARD_VERSION}"
npm cache clean --force 2>/dev/null || true

# === PERSISTENCE SYMLINK (POSTSTART HOOK) ===
# Settings/cache live at ~/.claude-dashboard, which is ephemeral (/home/vscode).
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/lsp-servers/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,8 @@ install_npm_package "typescript" "typescript" "${TS_VERSION}"
# Install TypeScript Language Server
install_npm_package "typescript-language-server" "typescript-language-server" "${TSLSP_VERSION}"

npm cache clean --force 2>/dev/null || true

# Install gopls (Go LSP) - uses go install since it's a Go package
echo "[lsp-servers] Installing gopls..."
if command -v go &>/dev/null; then
Expand Down
2 changes: 2 additions & 0 deletions .devcontainer/features/tree-sitter/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,8 @@ if [ "${NEED_PYTHON}" = "true" ]; then
echo "[tree-sitter] Python bindings installed"
fi

npm cache clean --force 2>/dev/null || true

# === SUMMARY ===
echo ""
echo "[tree-sitter] Installation complete!"
Expand Down
11 changes: 11 additions & 0 deletions .devcontainer/scripts/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,17 @@ if [ "$SETUP_POSTSTART" = "true" ]; then
run_poststart_hooks
fi

# Fix Bun PATH — external feature only adds to ~/.bashrc (misses non-interactive shells)
if [ -d "/home/vscode/.bun/bin" ] && [ ! -f /etc/profile.d/bun.sh ]; then
sudo tee /etc/profile.d/bun.sh > /dev/null <<'BUNEOF'
export BUN_INSTALL="/home/vscode/.bun"
if [[ "${PATH}" != *"${BUN_INSTALL}/bin"* ]]; then
export PATH="${BUN_INSTALL}/bin:${PATH}"
fi
BUNEOF
Comment thread
coderabbitai[bot] marked this conversation as resolved.
sudo chmod +x /etc/profile.d/bun.sh
fi

echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo " Setup Summary"
Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/docs/customization/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ DevContainer features install runtimes and tools. CodeForge pins external featur
"ghcr.io/devcontainers/features/rust:1.5.0": { "version": "latest" },
"ghcr.io/anthropics/devcontainer-features/claude-code:1.0.5": {},
"./features/ruff": { "version": "latest" },
"./features/ccms": {}
// "./features/ccms": {} // Currently disabled — replacement pending
}
}
```
Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/docs/customization/rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Key requirements:

### Session Search (`session-search.md`)

Configures the `ccms` session history search tool. Mandates project-scoped searches to prevent cross-project information leakage, and requires CLI mode (no interactive TUI) for automation compatibility.
Configures the `ccms` session history search tool. Mandates project-scoped searches to prevent cross-project information leakage, and requires CLI mode (no interactive TUI) for automation compatibility. _(Note: `ccms` is currently disabled in the default container build. This rule remains deployed so it takes effect if ccms is re-enabled.)_

Key requirements:
- Always pass `--project <current-project-dir>` to scope results
Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/docs/features/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ CodeForge pre-installs **22 tools and utilities** covering session management, c
Highlights include:

- **`cc`** — Launch Claude Code with full CodeForge configuration (plugins, system prompt, agents)
- **`ccms`** — Search your Claude Code session history with boolean queries, role filtering, and time scoping
- **`ccms`** — Search your Claude Code session history with boolean queries, role filtering, and time scoping _(currently disabled — replacement pending)_
- **`ccusage`** / **`ccburn`** — Track your Claude API token usage and burn rate
- **`ruff`**, **`biome`**, **`shellcheck`** — Code quality tools for Python, JS/TS, and Shell
- **`sg`** (ast-grep), **`tree-sitter`** — Structural code search and syntax tree operations
Expand Down
8 changes: 6 additions & 2 deletions docs/src/content/docs/features/tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ ccw

### ccms — Session History Search

:::caution[Currently Disabled]
The `ccms` feature is currently commented out in `devcontainer.json`. A replacement tool is pending. The documentation below is preserved for reference.
:::

Search through your Claude Code session history (JSONL files) with boolean queries, role filtering, and time scoping. Built in Rust for fast searching across large session archives.

```bash
Expand Down Expand Up @@ -180,7 +184,7 @@ CodeForge includes modern language runtimes and fast package managers so you can
|------|---------|---------|---------|
| **Node.js** | via nvm | JavaScript runtime | `node --version` |
| **Python** | 3.14 via uv | Python runtime | `python --version` |
| **Rust** | via rustup | Rust toolchain | `cargo --version` |
| **Rust** | via rustup | Rust toolchain _(opt-in — commented out by default)_ | `cargo --version` |
| **Bun** | latest | Fast JS runtime and package manager | `bun install` |
| **uv** | latest | Fast Python package manager | `uv pip install requests` |
| **Go** | via feature | Go toolchain | `go version` |
Expand All @@ -207,7 +211,7 @@ CodeForge uses `uv` as the default Python package manager. It is significantly f
| 1 | `cc` / `claude` | Session | Claude Code with CodeForge config |
| 2 | `ccraw` | Session | Vanilla Claude Code |
| 3 | `ccw` | Session | Claude Code in writing mode |
| 4 | `ccms` | Session | Session history search |
| 4 | `ccms` | Session | Session history search _(currently disabled)_ |
| 5 | `ccusage` | Session | API usage statistics |
| 6 | `ccburn` | Session | Token burn analysis |
| 7 | `ccstatusline` | Session | Terminal statusline |
Expand Down
4 changes: 2 additions & 2 deletions docs/src/content/docs/getting-started/first-session.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ From the terminal (not inside a Claude session), you can verify what's available
# List all installed tools and their versions
cc-tools

# Search past session history
ccms "what did we work on"
# Search past session history (ccms is currently disabled — replacement pending)
# ccms "what did we work on"

# Check API token usage
ccusage
Expand Down
4 changes: 2 additions & 2 deletions docs/src/content/docs/getting-started/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,11 @@ See the [Plugins Overview](../plugins/) for the full list and detailed documenta

CodeForge installs a comprehensive toolchain so you never have to stop and install something mid-session:

- **Language Runtimes** — Python 3.14, Node.js LTS, Rust, Bun, with Go available as an opt-in
- **Language Runtimes** — Python 3.14, Node.js LTS, Bun, with Rust and Go available as opt-ins
- **Package Managers** — uv (Python), npm, Bun, pip/pipx
- **Code Intelligence** — tree-sitter, ast-grep, Pyright, TypeScript LSP
- **Linters and Formatters** — Ruff, Biome, shfmt, ShellCheck, hadolint, dprint
- **CLI Utilities** — GitHub CLI, Docker, jq, tmux, and CodeForge-specific tools like ccms, ccusage, and ccburn
- **CLI Utilities** — GitHub CLI, Docker, jq, tmux, and CodeForge-specific tools like ccusage and ccburn (ccms currently disabled — replacement pending)

See the [Features Overview](../features/) for the complete reference.

Expand Down
12 changes: 6 additions & 6 deletions docs/src/content/docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ No local Docker installation required. Port forwarding is handled automatically
The first container build takes several minutes (typically 3-8 minutes depending on your internet speed and hardware). Here's what's happening behind the scenes:

1. **Base image pull** — downloads the Python 3.14 DevContainer image from Microsoft's registry
2. **Feature installation** — installs 21 DevContainer features in dependency order: Node.js and uv first (other tools depend on them), then Rust, Bun, Claude Code, and all custom features
2. **Feature installation** — installs DevContainer features in dependency order: Node.js and uv first (other tools depend on them), then Bun, Claude Code, and all custom features
3. **Post-start setup** — deploys configuration files, sets up shell aliases, and configures plugins

:::caution[Don't interrupt the first build]
Expand Down Expand Up @@ -157,8 +157,8 @@ A healthy installation shows all of these as available:
| Category | Tools |
|----------|-------|
| Claude Code | `claude`, `cc`, `ccw`, `ccraw` |
| Session tools | `ccms`, `ccusage`, `ccburn`, `claude-monitor` |
| Languages | `node`, `python`, `rustc`, `bun` |
| Session tools | `ccusage`, `ccburn`, `claude-monitor` (`ccms` currently disabled) |
| Languages | `node`, `python`, `bun` (`rustc` opt-in) |
| Code intelligence | `ast-grep`, `tree-sitter`, `pyright`, `typescript-language-server` |
| Linters/Formatters | `ruff`, `biome` |
| Utilities | `gh`, `docker`, `git`, `jq`, `tmux` |
Expand All @@ -173,7 +173,7 @@ A few features ship with `"version": "none"` by default (shfmt, dprint, shellche

- **Python 3.14** — the container's base image, with `uv` as the package manager
- **Node.js LTS** — installed via nvm, with npm included
- **Rust** — latest stable via rustup
- **Rust** — latest stable via rustup _(opt-in — uncomment in `devcontainer.json`)_
- **Bun** — fast JavaScript/TypeScript runtime and package manager
- **Go** — available as an opt-in (uncomment in `devcontainer.json`)

Expand All @@ -182,7 +182,7 @@ A few features ship with `"version": "none"` by default (shfmt, dprint, shellche
- **GitHub CLI** (`gh`) — repository management, PR creation, issue tracking
- **Docker** (Docker-outside-of-Docker) — container operations from inside the DevContainer
- **tmux** — terminal multiplexing for parallel Claude Code sessions
- **ccms** — search your Claude Code session history
- **ccms** — search your Claude Code session history _(currently disabled — replacement pending)_
- **ccusage** / **ccburn** — token usage analysis and burn rate tracking
- **ccstatusline** — session status in your terminal prompt
- **claude-monitor** — real-time session monitoring
Expand Down Expand Up @@ -237,7 +237,7 @@ Use `git diff .devcontainer/` after updating to review what changed before commi

### Tools not found after build

**Symptoms:** Commands like `cc` or `ccms` return "command not found."
**Symptoms:** Commands like `cc` return "command not found." (Note: `ccms` is currently disabled by default.)

- Run `check-setup` to identify which tools are missing
- Check that the post-start script completed successfully (look for errors in the terminal output)
Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/docs/getting-started/requirements.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ On macOS and Windows, Docker Desktop runs inside a VM with its own resource limi
**During initial setup**, internet access is required to:

- Pull the base container image (`mcr.microsoft.com/devcontainers/python:3.14`)
- Install DevContainer features (Node.js, Rust, Bun, uv, and 20+ custom features)
- Install DevContainer features (Node.js, Bun, uv, and 20+ custom features; Rust is opt-in)
- Download CLI tools and language servers

The first build downloads roughly 2-4 GB depending on what's cached. Subsequent container starts are much faster because Docker caches the built layers.
Expand Down
4 changes: 2 additions & 2 deletions docs/src/content/docs/reference/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ CodeForge operates in three layers. Each layer builds on the one below it:
+------------------------------------------------+
```

**DevContainer layer** provides the foundation: a Python 3.14 container image with Node.js, Rust, and Bun runtimes (Go available as opt-in), plus CLI tools (ruff, biome, ast-grep, tree-sitter, and others).
**DevContainer layer** provides the foundation: a Python 3.14 container image with Node.js and Bun runtimes (Rust and Go available as opt-in), plus CLI tools (ruff, biome, ast-grep, tree-sitter, and others).

**CodeForge layer** adds intelligence: plugins register hooks that validate commands, inject context, and run quality checks. Agents provide specialized personas for different tasks. Skills offer on-demand reference material. Rules enforce hard constraints. System prompts shape behavior.

Expand Down Expand Up @@ -120,7 +120,7 @@ CodeForge ships 38 skills across the skill-engine, spec-workflow, ticket-workflo
+-- devcontainer.json # Container definition (image, features, mounts)
+-- .env # Setup flags (SETUP_CONFIG, SETUP_ALIASES, etc.)
+-- features/ # DevContainer features (tool installers)
| +-- ccms/ # Session history search (Rust)
| +-- ccms/ # Session history search (commented out — replacement pending)
| +-- ccstatusline/ # Terminal status line
| +-- ccusage/ # API usage stats
| +-- ccburn/ # Token burn rate
Expand Down
12 changes: 8 additions & 4 deletions docs/src/content/docs/reference/commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Commands for session analysis, usage tracking, and system monitoring.

| Command | Description | Example |
|---------|-------------|---------|
| `ccms` | Search Claude Code session history. Supports boolean queries, role filtering, time scoping, and project isolation. | `ccms --project "$(pwd)" "auth approach"` |
| `ccms` | Search Claude Code session history. Supports boolean queries, role filtering, time scoping, and project isolation. _(currently disabled — replacement pending)_ | `ccms --project "$(pwd)" "auth approach"` |
| `ccusage` | View Claude API usage statistics | `ccusage` |
| `ccburn` | Analyze token burn rate and consumption patterns with pace indicators | `ccburn` |
| `ccstatusline` | Terminal status line displaying session metrics, git state, token usage, and burn rate | (runs automatically) |
Expand All @@ -48,6 +48,10 @@ Commands for session analysis, usage tracking, and system monitoring.

### ccms Usage

:::caution[Currently Disabled]
The `ccms` feature is currently commented out in `devcontainer.json`. A replacement tool is pending. The documentation below is preserved for reference.
:::

`ccms` is the most feature-rich analysis command. Key flags:

```bash
Expand Down Expand Up @@ -195,7 +199,7 @@ These additional commands are available in the container environment:
| `jq` | JSON processing and filtering |
| `tmux` | Terminal multiplexer for Agent Teams split-pane sessions |
| `bun` | Fast JavaScript runtime and package manager |
| `cargo` | Rust package manager (used by ccms) |
| `cargo` | Rust package manager _(opt-in — Rust toolchain is commented out by default)_ |
| `uv` | Fast Python package installer |

## Command Sources
Expand All @@ -206,9 +210,9 @@ Commands come from different sources in the CodeForge setup:
|--------|----------|-------------|
| Shell aliases | `cc`, `claude`, `ccw`, `ccraw`, `cc-orc`, `check-setup` | `setup-aliases.sh` writes to `.bashrc`/`.zshrc` |
| Shell functions | `cc-tools` | `setup-aliases.sh` writes to `.bashrc`/`.zshrc` |
| DevContainer features | `ccms`, `ccusage`, `ccburn`, `ruff`, `biome`, `sg`, `dbr`, etc. | `install.sh` in each feature directory |
| DevContainer features | `ccusage`, `ccburn`, `ruff`, `biome`, `sg`, `dbr`, etc. | `install.sh` in each feature directory |
| Slash commands | `/spec-new`, `/ticket:new`, `/ship`, `/pr:review`, `/ps`, etc. | Skill SKILL.md files in plugin directories |
| External features | `gh`, `docker`, `node`, `bun`, `cargo` | Installed via `devcontainer.json` features |
| External features | `gh`, `docker`, `node`, `bun` | Installed via `devcontainer.json` features |

:::tip[Listing All Tools]
Run `cc-tools` to see every installed tool and its version. This is the quickest way to verify what is available in your container.
Expand Down
4 changes: 2 additions & 2 deletions docs/src/content/docs/reference/environment.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ Variables that configure individual tools within the container.

| Variable | Tool | Description |
|----------|------|-------------|
| `CCMS_PROJECT` | ccms | Default project scope for session search |
| `CCMS_FORMAT` | ccms | Default output format (`text`, `json`) |
| `CCMS_PROJECT` | ccms | Default project scope for session search _(only when ccms is enabled)_ |
| `CCMS_FORMAT` | ccms | Default output format (`text`, `json`) _(only when ccms is enabled)_ |
| `RUFF_CONFIG` | ruff | Path to ruff configuration file |
| `BIOME_CONFIG_PATH` | biome | Path to biome configuration file |

Expand Down
Loading