Skip to content
Docs

Optional Components

CodeForge includes several components that are available but not always enabled in the default setup. This page covers how to enable and configure them.

Individual hooks can be disabled without turning off their entire plugin. The file .codeforge/config/disabled-hooks.json contains a "disabled" array of script names:

{
"disabled": [
"git-state-injector",
"ticket-linker",
"spec-reminder",
"commit-reminder"
]
}

Add a hook’s script name (without path or extension) to disable it. Remove it to re-enable. Changes take effect immediately — no container rebuild required.

This is useful when a hook is noisy or conflicts with your workflow but you want the rest of the plugin to keep running. See Hooks — Per-Hook Disable for the full reference.

Language Server Protocol servers provide inline diagnostics, go-to-definition, and completions for supported languages. LSP servers are disabled by default.

  1. In devcontainer.json, set the lsp-servers feature version to "latest":
"./features/lsp-servers": { "version": "latest" }
  1. In settings.json, ensure the codeforge-lsp plugin is enabled:
{
"enabledPlugins": {
"codeforge-lsp@devs-marketplace": true
}
}
  1. Rebuild the container.

A Rust-based session search tool. Replaced in the default build by codeforge session search, but still available as an opt-in feature.

Uncomment the ccms entry in devcontainer.json:

"./features/ccms": {}

A terminal burn-down visualization tool. Currently commented out in the default build — it has been replaced by ccstatusline.

If you want the older burn-down view, uncomment it in devcontainer.json:

"./features/ccburn": {}

The Rust compiler and Cargo are available as an opt-in feature for projects that need Rust compilation (including ccms).

Uncomment the Rust feature in devcontainer.json:

"ghcr.io/devcontainers/features/rust:1.5.0": { "version": "latest" }

Rebuild the container after enabling.

The Go compiler and toolchain are available as an opt-in feature for projects that include Go code.

Uncomment the Go feature in devcontainer.json:

"ghcr.io/devcontainers/features/go:1": { "version": "latest" }

Rebuild the container after enabling.

Several formatters and linters are present in devcontainer.json but disabled by default (set to "version": "none"). To enable any of them, change the version to "latest" and rebuild:

ToolFeature PathPurpose
shfmt./features/shfmtShell script formatter
dprint./features/dprintPluggable code formatter (Markdown, TOML, JSON, etc.)
shellcheck./features/shellcheckShell script static analysis
hadolint./features/hadolintDockerfile linter
{
"features": {
"./features/shfmt": { "version": "latest" },
"./features/dprint": { "version": "latest" },
"./features/shellcheck": { "version": "latest" },
"./features/hadolint": { "version": "latest" }
}
}

These tools integrate with the auto-code-quality plugin — once installed, they are automatically invoked at Stop for any files they support.

Adds persistent vector memory to Claude Code via a Qdrant MCP server. Claude can store and retrieve information across sessions using qdrant-store and qdrant-find tools.

Add to devcontainer.json under "features":

"./features/mcp-qdrant": {
"collectionName": "my-project-memory",
"embeddingModel": "all-MiniLM-L6-v2"
}
OptionDefaultDescription
collectionNameagent-memoryQdrant collection name
embeddingModelall-MiniLM-L6-v2Embedding model for vector search
qdrantUrl(empty)Remote Qdrant server URL. If empty, uses local storage.
qdrantApiKey(empty)API key for remote Qdrant server
qdrantLocalPath/workspaces/.qdrant/storageLocal storage path (when no URL set)
  • all-MiniLM-L6-v2 — default, smallest, fastest
  • BAAI/bge-small-en-v1.5
  • BAAI/bge-base-en-v1.5
  • sentence-transformers/all-mpnet-base-v2
  1. During container build, the embedding model is pre-downloaded from GCS (not HuggingFace, to avoid network issues in containers).
  2. On container start, a post-start hook registers the Qdrant MCP server in Claude Code’s settings.json.
  3. Claude Code can then use qdrant-store and qdrant-find tools to persist and search memories.
Terminal window
uvx mcp-server-qdrant --help

OpenAI’s open-source terminal coding agent. Enabled by default — set "version": "none" to disable.

The feature installs Codex CLI via npm and creates ~/.codex/ for credentials and configuration. A user-editable config.toml is deployed from .codeforge/config/codex-config.toml via the file manifest.

"./features/codex-cli": {}

Codex CLI requires an OpenAI account. Two methods:

  1. Browser login — run codex and select “Sign in with ChatGPT” (requires ChatGPT Plus, Pro, Business, Edu, or Enterprise plan)
  2. API key — set OPENAI_API_KEY in .devcontainer/.secrets or as a Codespaces secret. On container start, setup-auth.sh auto-creates ~/.codex/auth.json.

Credentials persist across container rebuilds via a Docker named volume (codeforge-codex-config-${devcontainerId}).

"./features/codex-cli": { "version": "none" }

Any feature can be disabled without removing it from devcontainer.json by setting "version": "none":

"./features/hadolint": { "version": "none" },
"./features/shellcheck": { "version": "none" }

The feature entry stays in the config for easy re-enabling — just remove "version": "none" or set it to "latest".