codeforge-dev 1.14.2 → 2.0.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/config/defaults → .codeforge/config}/ccstatusline-settings.json +44 -6
- package/{.devcontainer/config/defaults → .codeforge/config}/main-system-prompt.md +14 -6
- package/.codeforge/config/orchestrator-system-prompt.md +333 -0
- package/{.devcontainer/config/defaults → .codeforge/config}/settings.json +3 -1
- package/{.devcontainer/config → .codeforge}/file-manifest.json +15 -9
- package/{.devcontainer → .codeforge/scripts}/connect-external-terminal.sh +3 -1
- package/.devcontainer/.env.example +5 -5
- package/.devcontainer/.secrets.example +3 -0
- package/.devcontainer/CHANGELOG.md +242 -0
- package/.devcontainer/CLAUDE.md +129 -22
- package/.devcontainer/README.md +34 -19
- package/.devcontainer/devcontainer.json +28 -10
- package/.devcontainer/features/agent-browser/install.sh +2 -0
- package/.devcontainer/features/ast-grep/install.sh +2 -0
- package/.devcontainer/features/biome/install.sh +2 -0
- package/.devcontainer/features/ccburn/install.sh +2 -0
- package/.devcontainer/features/ccms/install.sh +2 -0
- package/.devcontainer/features/ccstatusline/README.md +7 -6
- package/.devcontainer/features/ccstatusline/install.sh +9 -4
- package/.devcontainer/features/ccusage/install.sh +2 -0
- package/.devcontainer/features/chromaterm/chromaterm.yml +2 -2
- package/.devcontainer/features/chromaterm/install.sh +2 -0
- package/.devcontainer/features/claude-code-native/README.md +47 -0
- package/.devcontainer/features/claude-code-native/devcontainer-feature.json +29 -0
- package/.devcontainer/features/claude-code-native/install.sh +131 -0
- package/.devcontainer/features/claude-monitor/install.sh +2 -0
- package/.devcontainer/features/claude-session-dashboard/README.md +2 -2
- package/.devcontainer/features/claude-session-dashboard/install.sh +2 -0
- package/.devcontainer/features/dprint/install.sh +2 -0
- package/.devcontainer/features/hadolint/install.sh +2 -0
- package/.devcontainer/features/kitty-terminfo/README.md +3 -1
- package/.devcontainer/features/kitty-terminfo/install.sh +2 -0
- package/.devcontainer/features/lsp-servers/install.sh +2 -0
- package/.devcontainer/features/mcp-qdrant/CHANGES.md +3 -3
- package/.devcontainer/features/mcp-qdrant/README.md +1 -0
- package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +1 -1
- package/.devcontainer/features/mcp-qdrant/install.sh +9 -2
- package/.devcontainer/features/mcp-qdrant/poststart-hook.sh +9 -2
- package/.devcontainer/features/notify-hook/devcontainer-feature.json +1 -1
- package/.devcontainer/features/notify-hook/install.sh +2 -0
- package/.devcontainer/features/ruff/install.sh +2 -0
- package/.devcontainer/features/shellcheck/install.sh +2 -0
- package/.devcontainer/features/shfmt/install.sh +2 -0
- package/.devcontainer/features/tmux/README.md +3 -3
- package/.devcontainer/features/tmux/install.sh +3 -1
- package/.devcontainer/features/tree-sitter/install.sh +2 -0
- package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +27 -11
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/README.md +23 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/claude-guide.md +4 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/documenter.md +254 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/implementer.md +260 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/investigator.md +255 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/tester.md +304 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/README.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/advisory-test-runner.py +4 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/git-workflow/.claude-plugin/plugin.json +7 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/git-workflow/README.md +125 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/git-workflow/skills/pr-review/SKILL.md +325 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/git-workflow/skills/ship/SKILL.md +314 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/prompt-snippets/.claude-plugin/plugin.json +5 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/prompt-snippets/README.md +52 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/prompt-snippets/skills/ps/SKILL.md +37 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected-bash.py +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/README.md +30 -14
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/hooks/hooks.json +13 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/collect-session-edits.py +44 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/commit-reminder.py +89 -10
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/.claude-plugin/plugin.json +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/README.md +19 -11
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/scripts/skill-suggester.py +476 -282
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/worktree/SKILL.md +227 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/worktree/references/manual-worktree-commands.md +238 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/worktree/references/parallel-workflow-patterns.md +228 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/scripts/ticket-linker.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/README.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py +3 -2
- package/.devcontainer/scripts/check-setup.sh +5 -3
- package/.devcontainer/scripts/preflight.sh +113 -0
- package/.devcontainer/scripts/setup-aliases.sh +13 -8
- package/.devcontainer/scripts/setup-auth.sh +46 -0
- package/.devcontainer/scripts/setup-config.sh +29 -10
- package/.devcontainer/scripts/setup-migrate-claude.sh +80 -0
- package/.devcontainer/scripts/setup-migrate-codeforge.sh +60 -0
- package/.devcontainer/scripts/setup-plugins.sh +3 -1
- package/.devcontainer/scripts/setup-projects.sh +3 -1
- package/.devcontainer/scripts/setup-terminal.sh +3 -1
- package/.devcontainer/scripts/setup-update-claude.sh +22 -27
- package/.devcontainer/scripts/setup.sh +57 -5
- package/LICENSE.txt +14 -0
- package/README.md +79 -5
- package/package.json +2 -1
- package/setup.js +392 -21
- package/.devcontainer/docs/configuration-reference.md +0 -93
- package/.devcontainer/docs/keybindings.md +0 -100
- package/.devcontainer/docs/optional-features.md +0 -64
- package/.devcontainer/docs/plugins.md +0 -176
- package/.devcontainer/docs/troubleshooting.md +0 -128
- package/.devcontainer/scripts/setup-symlink-claude.sh +0 -36
- /package/{.devcontainer/config/defaults → .codeforge/config}/keybindings.json +0 -0
- /package/{.devcontainer/config/defaults → .codeforge/config}/rules/session-search.md +0 -0
- /package/{.devcontainer/config/defaults → .codeforge/config}/rules/spec-workflow.md +0 -0
- /package/{.devcontainer/config/defaults → .codeforge/config}/rules/workspace-scope.md +0 -0
- /package/{.devcontainer/config/defaults → .codeforge/config}/writing-system-prompt.md +0 -0
- /package/{.devcontainer → .codeforge/scripts}/connect-external-terminal.ps1 +0 -0
|
@@ -1,7 +1,248 @@
|
|
|
1
1
|
# CodeForge Devcontainer Changelog
|
|
2
2
|
|
|
3
|
+
## [Unreleased]
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
#### Port Forwarding
|
|
8
|
+
- Dynamic port forwarding for all ports in VS Code — previously only port 7847 was statically forwarded; now all ports auto-forward with notification
|
|
9
|
+
|
|
10
|
+
#### Documentation
|
|
11
|
+
- Updated prerequisites and installation docs to support all DevContainer clients (VS Code, CLI, JetBrains Gateway, DevPod, Codespaces)
|
|
12
|
+
- Added tabbed client-specific instructions on the installation page
|
|
13
|
+
- Added dedicated port forwarding reference page covering VS Code auto-detect, devcontainer-bridge, and SSH tunneling
|
|
14
|
+
- **Ported `.devcontainer/docs/` to docs site** — migrated content from 5 legacy reference docs into the Starlight documentation site:
|
|
15
|
+
- New **Keybindings** page (Customization) — VS Code/Claude Code shortcut conflicts and resolution options
|
|
16
|
+
- New **Troubleshooting** page (Reference) — 12+ problem/solution entries for build, auth, plugins, and performance issues
|
|
17
|
+
- New **Optional Features** page (Customization) — mcp-qdrant vector memory setup guide
|
|
18
|
+
- Merged setup variables (`.env` flags) into the Environment Variables reference
|
|
19
|
+
- Merged `.secrets` file authentication docs into the Configuration page
|
|
20
|
+
- Removed `.devcontainer/docs/` directory — all content now lives in the docs site
|
|
21
|
+
|
|
22
|
+
### Fixed
|
|
23
|
+
|
|
24
|
+
#### Session Context Plugin
|
|
25
|
+
- **Commit reminder** no longer blocks Claude from stopping — switched from `decision: "block"` to advisory `systemMessage` wrapped in `<system-reminder>` tags
|
|
26
|
+
- **Commit reminder** now uses tiered logic: meaningful changes (3+ files, 2+ source files, or test files) get an advisory suggestion; small changes are silent
|
|
27
|
+
- **Commit reminder** only fires when the session actually modified files (via new PostToolUse edit tracker), preventing false reminders during read-only sessions
|
|
28
|
+
|
|
29
|
+
#### Auto Code Quality Plugin
|
|
30
|
+
- **Advisory test runner** now reads from the correct tmp file prefix (`claude-cq-edited` instead of `claude-edited-files`), fixing a mismatch that prevented it from ever finding edited files
|
|
31
|
+
|
|
32
|
+
#### Docs
|
|
33
|
+
- Removed stale merge conflict marker in first-session docs page
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
|
|
37
|
+
#### Startup
|
|
38
|
+
- **Container runtime pre-flight check** — validates Docker or Podman is installed and running before attempting to build the devcontainer; aborts with OS-specific remediation guidance (Windows/WSL, macOS, Linux) instead of a cryptic Docker client error
|
|
39
|
+
|
|
40
|
+
#### README
|
|
41
|
+
- **"Why CodeForge?" section** — motivation and value proposition explaining the project's origins as a power user's personal setup
|
|
42
|
+
- **Architecture overview** — three-layer diagram (DevContainer → CodeForge Layer → Claude Code) with brief descriptions and link to full architecture docs
|
|
43
|
+
- **Configuration summary** — table of key config files with links to the documentation site
|
|
44
|
+
|
|
45
|
+
#### Public Repo Quality
|
|
46
|
+
- **CI workflow** (`.github/workflows/ci.yml`) — test and lint jobs on PRs and pushes to main (Node 18, `npm test` + Biome check)
|
|
47
|
+
- **CodeQL security analysis** (`.github/workflows/codeql.yml`) — JavaScript scanning on PRs, pushes, and weekly schedule
|
|
48
|
+
- **Dependabot** (`.github/dependabot.yml`) — weekly updates for npm (root + docs) and GitHub Actions
|
|
49
|
+
- **Bug report template** (`.github/ISSUE_TEMPLATE/bug-report.yml`) — YAML form with version, environment, and repro steps
|
|
50
|
+
- **Feature request template** (`.github/ISSUE_TEMPLATE/feature-request.yml`) — YAML form with problem/solution/alternatives
|
|
51
|
+
- **Issue template config** (`.github/ISSUE_TEMPLATE/config.yml`) — commercial licensing contact link
|
|
52
|
+
- **Pull request template** (`.github/pull_request_template.md`) — description, type of change, and checklist
|
|
53
|
+
- **CONTRIBUTING.md** — contribution guidelines with GPL-3.0 licensing and CLA requirement
|
|
54
|
+
- **CLA.md** — Individual Contributor License Agreement enabling dual licensing
|
|
55
|
+
- **Dual licensing notice** — added to README.md (Contributing + License sections) and LICENSE.txt (header)
|
|
56
|
+
- **CI badge** — added to README.md badge row
|
|
57
|
+
- **SPDX copyright headers** — `GPL-3.0-only` identifier and `Copyright (c) 2026 Marcus Krueger` added to all 36 source files (setup.js, test.js, 34 shell scripts)
|
|
58
|
+
|
|
59
|
+
#### Docs
|
|
60
|
+
- **CLAUDE.md** — new "Status Bar Widgets" section documenting widget properties, token color conventions, label fusion pattern, and available widget types
|
|
61
|
+
|
|
62
|
+
#### Skills
|
|
63
|
+
- **worktree** — New skill for git worktree creation, management, and cleanup. Covers `EnterWorktree` tool, `--worktree` CLI flag, `.worktreeinclude` setup, worktree naming conventions, cleanup lifecycle, and CodeForge integration (Project Manager auto-detection, agent isolation). Includes two reference files: manual worktree commands and parallel workflow patterns.
|
|
64
|
+
|
|
65
|
+
#### Claude Code Installation
|
|
66
|
+
- **Post-start onboarding hook** (`99-claude-onboarding.sh`) — ensures `hasCompletedOnboarding: true` in `.claude.json` when token auth is configured; catches overwrites from Claude Code CLI/extension that race with `postStartCommand`
|
|
67
|
+
|
|
68
|
+
#### Git Workflow Plugin
|
|
69
|
+
- **`/ship`** — Combined commit/push/PR command with full code review, commit message approval, and AskUserQuestion confirmation before PR creation; optionally links to tickets if context exists
|
|
70
|
+
- **`/pr:review`** — Review any PR by number/URL or auto-detect from current branch; posts findings as PR comment with severity ratings; never approves or merges
|
|
71
|
+
|
|
72
|
+
#### Features
|
|
73
|
+
- **devcontainer-bridge (dbr)** — Ports opened inside the container are now automatically discovered and forwarded to the host, even outside VS Code. Requires `dbr host-daemon` running on the host. See [devcontainer-bridge](https://github.com/bradleybeddoes/devcontainer-bridge)
|
|
74
|
+
|
|
75
|
+
#### Orchestrator Mode
|
|
76
|
+
- **`cc-orc` alias** — new Claude Code entry point using `orchestrator-system-prompt.md` for delegation-first operation; orchestrator decomposes tasks, delegates to agents, surfaces questions, and synthesizes results without performing direct implementation work
|
|
77
|
+
- **`orchestrator-system-prompt.md`** — slim system prompt (~250 lines) containing only delegation model, agent catalog, question surfacing protocol, planning gates, spec enforcement, and action safety; all code standards, testing standards, and implementation details live in agent prompts
|
|
78
|
+
|
|
79
|
+
#### Workhorse Agents
|
|
80
|
+
- **`investigator`** — consolidated read-only research agent (sonnet) merging the domains of researcher, explorer, dependency-analyst, git-archaeologist, debug-logs, and perf-profiler; handles codebase search, web research, git forensics, dependency auditing, log analysis, and performance profiling
|
|
81
|
+
- **`implementer`** — consolidated read-write implementation agent (opus, worktree) merging generalist, refactorer, and migrator; handles all code modifications with embedded code standards, execution discipline, and Stop hook regression testing
|
|
82
|
+
- **`tester`** — enhanced test agent (opus, worktree) with full testing standards, framework-specific guidance, and Stop hook verification; creates and verifies test suites
|
|
83
|
+
- **`documenter`** — consolidated documentation and specification agent (opus) merging doc-writer and spec-writer; handles README, API docs, docstrings, and the full spec lifecycle (create, refine, build, review, update, check)
|
|
84
|
+
- **Question Surfacing Protocol** — all 4 workhorse agents carry an identical protocol requiring them to STOP and return `## BLOCKED: Questions` sections when hitting ambiguities, ensuring no assumptions are made without user input
|
|
85
|
+
|
|
86
|
+
### Fixed
|
|
87
|
+
|
|
88
|
+
#### CCStatusLine Deployment
|
|
89
|
+
- **`CONFIG_SOURCE_DIR` deprecation guard** — `setup.sh` now detects stale `CONFIG_SOURCE_DIR=/workspaces/.claude` in `.env`, overrides to `$DEVCONTAINER_DIR/config`, and auto-comments the line on disk; the wrong path caused `setup-config.sh` to skip the file manifest entirely, leaving ccstatusline (and all manifest-based configs) undeployed
|
|
90
|
+
- **System template directory permissions** — `install.sh` now chowns `/usr/local/share/ccstatusline/` to the target user so `setup-config.sh` can write the template file during post-start
|
|
91
|
+
- **Silent copy failures** — `setup-config.sh` now reports warnings when file deployment fails instead of logging success after a failed `cp`
|
|
92
|
+
|
|
93
|
+
#### Post-Integration Review Fixes
|
|
94
|
+
- **skill-engine** — worktree skill definition uses weighted tuples (was plain strings, caused crash)
|
|
95
|
+
- **dangerous-command-blocker** — fail closed on unexpected exceptions (was fail-open)
|
|
96
|
+
- **ticket-workflow** — remove redundant `ValueError` from exception handlers
|
|
97
|
+
- **workspace-scope-guard** — use maxsplit in variable assignment detection
|
|
98
|
+
- **Shell scripts** — add executable bit to `check-setup.sh`, quote `PLUGIN_BLACKLIST` variable, add `set -uo pipefail` to tmux installer, replace deprecated `which` with `command -v`, normalize `&>` redirects in setup scripts
|
|
99
|
+
- **Documentation** — update agent count to 21, skill count to 38, plugin count to 14 across all docs site pages
|
|
100
|
+
- **Documentation** — add missing plugin pages for git-workflow and prompt-snippets
|
|
101
|
+
- **Documentation** — add `cc-orc` and `dbr` to commands reference
|
|
102
|
+
- **Documentation** — remove merge conflict marker from first-session.md
|
|
103
|
+
- **Documentation** — update architecture.md directory tree with new plugins
|
|
104
|
+
|
|
105
|
+
#### CodeRabbit Review Fixes
|
|
106
|
+
- **`implementer.md`** — changed PostToolUse hook (fires every Edit) to Stop hook (fires once at task end) with 120s timeout; prevents redundant test runs during multi-file tasks
|
|
107
|
+
- **`tester.md`** — increased Stop hook timeout from 30s to 120s to accommodate larger test suites
|
|
108
|
+
- **`setup-aliases.sh`** — added `cc-orc` to `cc-tools` discovery loop so it appears in tool audit
|
|
109
|
+
- **`CLAUDE.md`** — added missing `keybindings.json`, `orchestrator-system-prompt.md`, and `writing-system-prompt.md` to directory structure tree
|
|
110
|
+
- **`agent-system/README.md`** — updated `verify-no-regression.py` comment to list both consumers (implementer, refactorer); hyphenated "question-surfacing protocol"
|
|
111
|
+
- **`orchestrator-system-prompt.md`** — clarified plan mode allows investigator delegation for research; added catch-all entry in selection criteria pointing to the full specialist catalog
|
|
112
|
+
- **MD040 compliance** — added `text` language specifiers to 7 fenced code blocks across `investigator.md`, `tester.md`, and `documenter.md`
|
|
113
|
+
- **`setup.js` path traversal** — `configApply()` now validates that source paths resolve within `.codeforge/` and destination paths resolve within allowed directories (`CLAUDE_CONFIG_DIR`, `HOME`, `/usr/local/`), preventing directory traversal via `../` in manifest entries
|
|
114
|
+
- **`setup.sh` CODEFORGE_DIR** — deprecation guard now uses default-assignment semantics (`:=`) instead of unconditional overwrite, preserving any user-defined `CODEFORGE_DIR` from `.env`
|
|
115
|
+
- **Docs site URLs** — replaced `anexileddev.github.io/CodeForge/` with custom domain `codeforge.core-directive.com/` across README.md, CLAUDE.md, and .devcontainer/README.md
|
|
116
|
+
- **Architecture docs** — added `.checksums/` and `.markers/` directories to the `.codeforge/` tree in architecture.md
|
|
117
|
+
- **Troubleshooting docs** — renamed "Reset to Defaults" to "How to Reset" and clarified that `--reset` preserves `.codeforge/` user modifications; added step for restoring default config sources
|
|
118
|
+
|
|
119
|
+
### Changed
|
|
120
|
+
|
|
121
|
+
#### Skill Engine: Auto-Suggestion
|
|
122
|
+
- **Weighted scoring** — Skill suggestion phrases now carry confidence weights (0.0–1.0) instead of binary match/no-match. Specific phrases like "build a fastapi app" score 1.0; ambiguous phrases like "start building" score 0.2
|
|
123
|
+
- **Negative patterns** — Skills can define substrings that instantly disqualify them. Prevents `fastapi` from triggering when discussing `pydantic-ai`, and `docker` from triggering for `docker-py` prompts
|
|
124
|
+
- **Context guards** — Low-confidence matches (score < 0.6) require a confirming context word elsewhere in the prompt. "health check" only suggests `docker` if "docker", "container", or "compose" also appears
|
|
125
|
+
- **Ranked results, capped at 3** — Suggestions are sorted by score (then priority tier), and only the top 3 are returned. Eliminates 6+ skill suggestion floods
|
|
126
|
+
- **Priority tiers** — Explicit commands (priority 10) outrank technology skills (7), which outrank patterns (5) and generic skills (3) when scores tie
|
|
127
|
+
|
|
128
|
+
#### Claude Code Installation
|
|
129
|
+
- **Claude Code now installs as a native binary** — uses Anthropic's official installer (`https://claude.ai/install.sh`) via new `./features/claude-code-native` feature, replacing the npm-based `ghcr.io/anthropics/devcontainer-features/claude-code:1.0.5`
|
|
130
|
+
- **In-session auto-updater now works without root** — native binary at `~/.local/bin/claude` is owned by the container user, so `claude update` succeeds without permission issues
|
|
131
|
+
|
|
132
|
+
#### System Prompt
|
|
133
|
+
- **`<git_worktrees>` section** — Updated to document Claude Code native worktree convention (`<repo>/.claude/worktrees/`) as the recommended approach alongside the legacy `.worktrees/` convention. Added `EnterWorktree` tool guidance, `.worktreeinclude` file documentation, and path convention comparison table.
|
|
134
|
+
|
|
135
|
+
#### Configuration
|
|
136
|
+
- Moved `.claude` directory from `/workspaces/.claude` to `~/.claude` (home directory)
|
|
137
|
+
- Added Docker named volume for persistence across rebuilds (per-instance isolation via `${devcontainerId}`)
|
|
138
|
+
- `CLAUDE_CONFIG_DIR` now defaults to `~/.claude`
|
|
139
|
+
- `file-manifest.json` — added deployment entry for `orchestrator-system-prompt.md`
|
|
140
|
+
- `setup-aliases.sh` — added `cc-orc` alias alongside existing `cc`, `claude`, `ccw`, `ccraw`
|
|
141
|
+
- `CLAUDE.md` — documented `cc-orc` command and orchestrator system prompt in key configuration table
|
|
142
|
+
|
|
143
|
+
#### Agent System
|
|
144
|
+
- Agent count increased from 17 to 21 (4 workhorse + 17 specialist)
|
|
145
|
+
- Agent-system README updated with workhorse agent table, per-agent hooks for implementer and tester, and updated plugin structure
|
|
146
|
+
|
|
147
|
+
#### Authentication
|
|
148
|
+
- Added `CLAUDE_AUTH_TOKEN` support in `.secrets` for long-lived tokens from `claude setup-token`
|
|
149
|
+
- Auto-creates `.credentials.json` from token on container start (skips if already exists)
|
|
150
|
+
- Added `CLAUDE_AUTH_TOKEN` to devcontainer.json secrets declaration
|
|
151
|
+
|
|
152
|
+
#### Security
|
|
153
|
+
- Protected-files-guard now blocks modifications to `.credentials.json`
|
|
154
|
+
- Replaced `eval` tilde expansion with `getent passwd` lookup across all scripts (prevents shell injection via `SUDO_USER`/`USER`)
|
|
155
|
+
- Auth token value is now JSON-escaped before writing to `.credentials.json`
|
|
156
|
+
- Credential directory created with restrictive umask (700) matching credential file permissions (600)
|
|
157
|
+
|
|
158
|
+
#### Status Bar
|
|
159
|
+
- **ccstatusline line 1** — distinct background colors for each token widget (blue=input, magenta=output, yellow=cached, green=total), bold 2-char labels (In, Ou, Ca, Tt) fused to data widgets, `rawValue: true` on model widget to strip "Model:" prefix, restored spacing between token segments
|
|
160
|
+
|
|
161
|
+
#### Scripts
|
|
162
|
+
- Replaced `setup-symlink-claude.sh` with `setup-migrate-claude.sh` (one-time migration)
|
|
163
|
+
- Auto-migrates from `/workspaces/.claude/` if `.credentials.json` present
|
|
164
|
+
- `chown` in mcp-qdrant poststart hooks now uses resolved `_USERNAME` instead of hardcoded `vscode` or `$(id -un)`
|
|
165
|
+
- **Migration script hardened** — switched from `cp -rn` to `cp -a` (archive mode); added marker-based idempotency, critical file verification, ownership fixup, and old-directory rename
|
|
166
|
+
- **`.env` deprecation guard** — `setup.sh` detects stale `CLAUDE_CONFIG_DIR=/workspaces/.claude` in `.env`, overrides to `$HOME/.claude`, and auto-comments the line on disk
|
|
167
|
+
|
|
168
|
+
#### Documentation
|
|
169
|
+
- All docs now reference `~/.claude` as default config path
|
|
170
|
+
- Added `CLAUDE_AUTH_TOKEN` setup flow to README, configuration reference, and troubleshooting
|
|
171
|
+
- ccstatusline README verification commands now respect `CLAUDE_CONFIG_DIR`
|
|
172
|
+
|
|
173
|
+
### Fixed
|
|
174
|
+
|
|
175
|
+
#### Claude Code Installation
|
|
176
|
+
- **Update script no longer silently discards errors** — background update output now captured to log file instead of being discarded via `&>/dev/null`
|
|
177
|
+
- **Update script simplified to native-binary-only** — removed npm fallback and `claude install` bootstrap code; added 60s timeout and transitional npm cleanup
|
|
178
|
+
- **Alias resolution simplified** — `_CLAUDE_BIN` now resolves directly to native binary path (removed npm and `/usr/local/bin` fallbacks)
|
|
179
|
+
- **POSIX redirect** — replaced `&>/dev/null` with `>/dev/null 2>&1` in dependency check for portability
|
|
180
|
+
- **Installer shell** — changed `sh -s` to `bash -s` when piping the official installer (it requires bash)
|
|
181
|
+
- **Unquoted `${TARGET}`** — quoted variable in `su -c` command to prevent word splitting
|
|
182
|
+
- **Directory prep** — added `~/.local/state` and `~/.claude` pre-creation; consolidated `chown` to cover entire `~/.local` tree
|
|
183
|
+
|
|
184
|
+
#### Plugin Marketplace
|
|
185
|
+
- **`marketplace.json` schema fix** — changed all 11 plugin `source` fields from bare names (e.g., `"codeforge-lsp"`) to relative paths (`"./plugins/codeforge-lsp"`) so `claude plugin marketplace add` passes schema validation and all plugins register correctly
|
|
186
|
+
|
|
187
|
+
#### ChromaTerm
|
|
188
|
+
- **Regex lookbehinds** — replaced alternation inside lookbehinds (`(?<=[\s(]|^)` and `(?<=commit |merge |...)`) with non-capturing groups containing individual lookbehinds (`(?:(?<=[\s(])|^)` and `(?:(?<=commit )|(?<=merge )|...)`) for PCRE2 compatibility
|
|
189
|
+
|
|
190
|
+
#### Terminal Color Support
|
|
191
|
+
- **devcontainer.json** — added `TERM` and `COLORTERM=truecolor` to `remoteEnv`; Docker defaults to `TERM=xterm` (8 colors) which caused Claude Code and other CLI tools to downgrade rendering
|
|
192
|
+
- **devcontainer.json** — `TERM` uses `${localEnv:TERM:xterm-256color}` to forward the host terminal type (e.g., `xterm-kitty`) instead of unconditionally overriding it
|
|
193
|
+
- **setup-aliases.sh** — added terminal color defaults to managed shell block so tmux panes, `docker exec`, and SSH sessions also get 256-color and truecolor support
|
|
194
|
+
- **kitty-terminfo/README.md** — updated documentation to reflect `localEnv` forwarding and clarify behavior across VS Code vs non-VS Code entry points
|
|
195
|
+
- **CLAUDE.md** — documented `TERM` and `COLORTERM` environment variables in the Environment section
|
|
196
|
+
|
|
197
|
+
### Removed
|
|
198
|
+
|
|
199
|
+
#### Scripts
|
|
200
|
+
- `setup-symlink-claude.sh` — no longer needed with native home directory location
|
|
201
|
+
|
|
202
|
+
#### VS Code Extensions
|
|
203
|
+
- **Todo+** (`fabiospampinato.vscode-todo-plus`) — removed from devcontainer extensions
|
|
204
|
+
|
|
205
|
+
## [v2.0.0] - 2026-02-26
|
|
206
|
+
|
|
207
|
+
### Added
|
|
208
|
+
|
|
209
|
+
#### .codeforge/ User Customization Directory
|
|
210
|
+
- New `.codeforge/` directory centralizes all user-customizable configuration files
|
|
211
|
+
- Checksum-based modification detection preserves user changes during updates
|
|
212
|
+
- `codeforge config apply` CLI command deploys config files to `~/.claude/` (same as container start)
|
|
213
|
+
- Auto-migration from `.devcontainer/config/defaults/` to `.codeforge/config/` for existing users
|
|
214
|
+
- `.codeforge/.codeforge-preserve` for listing additional files to preserve during updates
|
|
215
|
+
|
|
216
|
+
### Changed
|
|
217
|
+
|
|
218
|
+
#### Configuration
|
|
219
|
+
- Config files moved from `.devcontainer/config/defaults/` to `.codeforge/config/`
|
|
220
|
+
- File manifest moved from `.devcontainer/config/file-manifest.json` to `.codeforge/file-manifest.json`
|
|
221
|
+
- Terminal connection scripts moved from `.devcontainer/` to `.codeforge/scripts/`
|
|
222
|
+
- `CONFIG_SOURCE_DIR` env var deprecated in favor of `CODEFORGE_DIR`
|
|
223
|
+
- `--force` updates now use checksum comparison for `.codeforge/` files (writes `.default` instead of `.codeforge-new`)
|
|
224
|
+
- `--reset` preserves `.codeforge/` user modifications (only `.devcontainer/` is wiped)
|
|
225
|
+
|
|
226
|
+
#### Migration
|
|
227
|
+
- v2 migration marker moved to `.codeforge/.markers/v2-migrated`
|
|
228
|
+
- Container start auto-migrates `.devcontainer/config/defaults/` to `.codeforge/config/` if needed
|
|
229
|
+
|
|
3
230
|
## [v1.14.2] - 2026-02-24
|
|
4
231
|
|
|
232
|
+
### Added
|
|
233
|
+
|
|
234
|
+
#### Prompt Snippets Plugin
|
|
235
|
+
- **New plugin: `prompt-snippets`** — single `/ps` slash command for quick behavioral mode switches (noaction, brief, plan, go, review, ship, deep, hold, recall, wait)
|
|
236
|
+
- Snippets inject short directives that persist for the conversation (e.g., `/ps noaction` → "Investigate and report only. Take no action.")
|
|
237
|
+
- Composable: `/ps noaction brief` applies multiple snippets at once
|
|
238
|
+
- Isolated from skill-engine auto-suggestion (`disable-model-invocation: true`) and independently toggleable via `enabledPlugins`
|
|
239
|
+
|
|
240
|
+
### Changed
|
|
241
|
+
|
|
242
|
+
#### Docs
|
|
243
|
+
- **First Session page** — trimmed from 198 to 128 lines by consolidating "What Happens Automatically" into a concise summary, replacing full agent/skill tables with brief teasers linking to their dedicated pages
|
|
244
|
+
- **Installation Troubleshooting** — expanded from 4 to 10 FAQ entries covering `npx` failures, VS Code extension issues, Docker permissions on Linux, WSL 2 integration, port conflicts, and slow rebuilds
|
|
245
|
+
|
|
5
246
|
### Fixed
|
|
6
247
|
|
|
7
248
|
#### CI: Release Workflow (v1.14.1)
|
|
@@ -18,6 +259,7 @@
|
|
|
18
259
|
|
|
19
260
|
#### Docs
|
|
20
261
|
- **Active sidebar item** — increased background opacity from 0.08 to 0.14, added `font-weight: 600` and `color: var(--sl-color-accent-high)` for readable contrast against inactive items
|
|
262
|
+
- **Stale skill counts** — 5 pages (First Session, Getting Started index, Features index) referenced "21 skills" instead of the correct total of 34 across all plugins (skill-engine: 21, spec-workflow: 8, ticket-workflow: 4, agent-system: 1)
|
|
21
263
|
|
|
22
264
|
## [v1.14.0] - 2026-02-24
|
|
23
265
|
|
package/.devcontainer/CLAUDE.md
CHANGED
|
@@ -8,51 +8,92 @@ CodeForge devcontainer for AI-assisted development with Claude Code.
|
|
|
8
8
|
.devcontainer/
|
|
9
9
|
├── devcontainer.json # Container definition
|
|
10
10
|
├── .env # Setup flags (SETUP_CONFIG, SETUP_ALIASES, etc.)
|
|
11
|
-
├── config/
|
|
12
|
-
│ ├── file-manifest.json # Declarative config file deployment
|
|
13
|
-
│ └── defaults/ # Source files deployed on start via file-manifest
|
|
14
|
-
│ ├── settings.json # Model, permissions, plugins, env vars
|
|
15
|
-
│ ├── main-system-prompt.md
|
|
16
|
-
│ ├── ccstatusline-settings.json # Status bar widget layout
|
|
17
|
-
│ └── rules/ # Deployed to .claude/rules/
|
|
18
11
|
├── features/ # Custom devcontainer features
|
|
19
12
|
├── plugins/devs-marketplace/ # Local plugin marketplace
|
|
20
13
|
└── scripts/ # Setup scripts (run via postStartCommand)
|
|
14
|
+
|
|
15
|
+
.codeforge/
|
|
16
|
+
├── file-manifest.json # Declarative config file deployment
|
|
17
|
+
├── config/ # Source files deployed on start via file-manifest
|
|
18
|
+
│ ├── settings.json # Model, permissions, plugins, env vars
|
|
19
|
+
│ ├── keybindings.json # Keyboard shortcuts
|
|
20
|
+
│ ├── main-system-prompt.md
|
|
21
|
+
│ ├── orchestrator-system-prompt.md
|
|
22
|
+
│ ├── writing-system-prompt.md
|
|
23
|
+
│ ├── ccstatusline-settings.json # Status bar widget layout
|
|
24
|
+
│ └── rules/ # Deployed to .claude/rules/
|
|
25
|
+
├── scripts/ # Terminal connection scripts
|
|
26
|
+
│ ├── connect-external-terminal.sh
|
|
27
|
+
│ └── connect-external-terminal.ps1
|
|
28
|
+
└── .codeforge-preserve # Lists additional files to preserve during updates
|
|
21
29
|
```
|
|
22
30
|
|
|
23
31
|
## Key Configuration
|
|
24
32
|
|
|
25
33
|
| File | Purpose |
|
|
26
34
|
|------|---------|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
35
|
+
| `.codeforge/config/settings.json` | Model, tokens, permissions, plugins, env vars |
|
|
36
|
+
| `.codeforge/config/main-system-prompt.md` | System prompt defining assistant behavior |
|
|
37
|
+
| `.codeforge/config/orchestrator-system-prompt.md` | Orchestrator mode prompt (delegation-first) |
|
|
38
|
+
| `.codeforge/config/ccstatusline-settings.json` | Status bar widget layout (deployed to ~/.config/ccstatusline/) |
|
|
39
|
+
| `.codeforge/file-manifest.json` | Controls which config files deploy and when |
|
|
31
40
|
| `devcontainer.json` | Container definition: image, features, mounts |
|
|
32
41
|
| `.env` | Boolean flags controlling setup steps |
|
|
33
42
|
|
|
34
|
-
Config files deploy via
|
|
43
|
+
Config files deploy via `.codeforge/file-manifest.json` on every container start. Most deploy to `~/.claude/`; ccstatusline config deploys to `~/.config/ccstatusline/`. Each entry supports `overwrite`: `"if-changed"` (default, sha256), `"always"`, or `"never"`. Supported variables: `${CLAUDE_CONFIG_DIR}`, `${WORKSPACE_ROOT}`, `${HOME}`.
|
|
44
|
+
|
|
45
|
+
## Worktrees
|
|
46
|
+
|
|
47
|
+
Git worktrees allow checking out multiple branches simultaneously, each in its own directory.
|
|
48
|
+
|
|
49
|
+
**Native (recommended for Claude Code sessions):**
|
|
50
|
+
- **In-session:** `EnterWorktree` tool — creates worktree at `<repo>/.claude/worktrees/<name>/`, branch `worktree-<name>`, auto-cleaned if no changes
|
|
51
|
+
- **New session:** `claude --worktree <name>` — starts Claude in its own worktree; combine with `--tmux` for background work
|
|
52
|
+
|
|
53
|
+
**Manual (legacy convention):**
|
|
54
|
+
```bash
|
|
55
|
+
mkdir -p /workspaces/projects/.worktrees
|
|
56
|
+
git worktree add /workspaces/projects/.worktrees/<branch-name> -b <branch>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Environment files:** Place a `.worktreeinclude` file at the project root listing `.gitignore`-excluded files to copy into new worktrees (e.g., `.env`). Uses `.gitignore` pattern syntax; only files matching both `.worktreeinclude` and `.gitignore` are copied.
|
|
60
|
+
|
|
61
|
+
**Management:**
|
|
62
|
+
|
|
63
|
+
| Command | Purpose |
|
|
64
|
+
|---------|---------|
|
|
65
|
+
| `git worktree list` | Show all active worktrees |
|
|
66
|
+
| `git worktree remove <path>` | Remove a worktree (destructive — confirm first) |
|
|
67
|
+
| `git worktree prune` | Clean up stale references (destructive — confirm first) |
|
|
68
|
+
|
|
69
|
+
**Path conventions:**
|
|
70
|
+
- **Native:** `<repo>/.claude/worktrees/<name>/` — used by `--worktree` flag and `EnterWorktree`
|
|
71
|
+
- **Legacy:** `.worktrees/` as sibling to the main repo — used for manual `git worktree add` and Project Manager integration
|
|
35
72
|
|
|
36
73
|
## Commands
|
|
37
74
|
|
|
38
75
|
| Command | Purpose |
|
|
39
76
|
|---------|---------|
|
|
40
77
|
| `cc` / `claude` | Run Claude Code with auto-configuration |
|
|
78
|
+
| `codeforge config apply` | Deploy config files to `~/.claude/` (same as container start) |
|
|
79
|
+
| `codeforge` | CLI for CodeForge management commands |
|
|
41
80
|
| `ccraw` | Vanilla Claude Code (bypasses config) |
|
|
42
81
|
| `ccw` | Claude Code with writing system prompt |
|
|
82
|
+
| `cc-orc` | Claude Code in orchestrator mode (delegation-first) |
|
|
43
83
|
| `ccms` | Search session history (project-scoped) |
|
|
44
84
|
| `ccusage` / `ccburn` | Token usage analysis / burn rate |
|
|
45
85
|
| `agent-browser` | Headless Chromium (Playwright-based) |
|
|
46
86
|
| `check-setup` | Verify CodeForge setup health |
|
|
47
87
|
| `claude-dashboard` | Session analytics dashboard (port 7847) |
|
|
88
|
+
| `dbr` | Dynamic port forwarding (devcontainer-bridge) |
|
|
48
89
|
| `cc-tools` | List all installed tools with versions |
|
|
49
90
|
|
|
50
91
|
## Plugins
|
|
51
92
|
|
|
52
93
|
Declared in `settings.json` under `enabledPlugins`, auto-activated on start:
|
|
53
94
|
|
|
54
|
-
- **agent-system** —
|
|
55
|
-
- **skill-engine** —
|
|
95
|
+
- **agent-system** — 21 custom agents (4 workhorse + 17 specialist) + built-in agent redirection
|
|
96
|
+
- **skill-engine** — 22 general coding skills + auto-suggestion
|
|
56
97
|
- **spec-workflow** — 8 spec lifecycle skills + spec-reminder hook
|
|
57
98
|
- **session-context** — Git state injection, TODO harvesting, commit reminders
|
|
58
99
|
- **auto-code-quality** — Auto-format + auto-lint + advisory test runner
|
|
@@ -61,37 +102,103 @@ Declared in `settings.json` under `enabledPlugins`, auto-activated on start:
|
|
|
61
102
|
- **protected-files-guard** — Blocks edits to secrets/lock files
|
|
62
103
|
- **codeforge-lsp** — LSP for Python + TypeScript/JavaScript
|
|
63
104
|
- **ticket-workflow** — EARS ticket workflow + auto-linking
|
|
105
|
+
- **git-workflow** — Standalone ship (commit/push/PR) + PR review
|
|
64
106
|
- **notify-hook** — Desktop notifications on completion
|
|
65
107
|
- **frontend-design** (Anthropic official) — UI/frontend design skill
|
|
108
|
+
- **prompt-snippets** — Quick behavioral mode switches via /ps command
|
|
66
109
|
|
|
67
110
|
## Rules System
|
|
68
111
|
|
|
69
|
-
Rules in
|
|
112
|
+
Rules in `.codeforge/config/rules/` deploy to `.claude/rules/` on every container start. They load into ALL sessions automatically.
|
|
70
113
|
|
|
71
114
|
**Current rules:** `spec-workflow.md`, `workspace-scope.md`, `session-search.md`
|
|
72
115
|
|
|
73
|
-
**Adding rules:** Create `.md` in
|
|
116
|
+
**Adding rules:** Create `.md` in `.codeforge/config/rules/`, add a manifest entry in `.codeforge/file-manifest.json`.
|
|
74
117
|
|
|
75
118
|
## Environment
|
|
76
119
|
|
|
77
120
|
| Variable | Value |
|
|
78
121
|
|----------|-------|
|
|
79
|
-
| `CLAUDE_CONFIG_DIR` | `/
|
|
122
|
+
| `CLAUDE_CONFIG_DIR` | `/home/vscode/.claude` |
|
|
123
|
+
| `CLAUDE_AUTH_TOKEN` | Long-lived token from `claude setup-token` (optional, via `.secrets` or Codespaces secrets) |
|
|
80
124
|
| `ANTHROPIC_MODEL` | `claude-opus-4-6` |
|
|
81
125
|
| `WORKSPACE_ROOT` | `/workspaces` |
|
|
126
|
+
| `TERM` | `${localEnv:TERM:xterm-256color}` (via `remoteEnv` — forwards host TERM, falls back to 256-color) |
|
|
127
|
+
| `COLORTERM` | `truecolor` (via `remoteEnv` — enables 24-bit color support) |
|
|
82
128
|
|
|
83
129
|
All experimental feature flags are in `settings.json` under `env`. Setup steps controlled by boolean flags in `.env`.
|
|
84
130
|
|
|
131
|
+
## Authentication & Persistence
|
|
132
|
+
|
|
133
|
+
The `~/.claude/` directory is backed by a Docker named volume (`codeforge-claude-config-${devcontainerId}`), persisting config, credentials, and session data across container rebuilds. Each devcontainer instance gets an isolated volume.
|
|
134
|
+
|
|
135
|
+
**Token authentication:** Set `CLAUDE_AUTH_TOKEN` in `.devcontainer/.secrets` (or as a Codespaces secret) with a long-lived token from `claude setup-token`. On container start, `setup-auth.sh` auto-creates `~/.claude/.credentials.json` with `600` permissions. If `.credentials.json` already exists, token injection is skipped (idempotent). Tokens must match `sk-ant-*` format.
|
|
136
|
+
|
|
85
137
|
## Modifying Behavior
|
|
86
138
|
|
|
87
|
-
1. **Change model**: Edit
|
|
88
|
-
2. **Change system prompt**: Edit
|
|
89
|
-
3. **Add config file**:
|
|
139
|
+
1. **Change model**: Edit `.codeforge/config/settings.json` → `"model"` field
|
|
140
|
+
2. **Change system prompt**: Edit `.codeforge/config/main-system-prompt.md`
|
|
141
|
+
3. **Add config file**: Place in `.codeforge/config/`, add entry to `.codeforge/file-manifest.json`
|
|
90
142
|
4. **Add features**: Add to `"features"` in `devcontainer.json`
|
|
91
143
|
5. **Disable features**: Set `"version": "none"` in the feature's config
|
|
92
144
|
6. **Disable setup steps**: Set flags to `false` in `.env`
|
|
93
|
-
7. **Customize status bar**: Edit
|
|
145
|
+
7. **Customize status bar**: Edit `.codeforge/config/ccstatusline-settings.json` (see below)
|
|
146
|
+
|
|
147
|
+
## Status Bar Widgets
|
|
148
|
+
|
|
149
|
+
The status bar is configured in `.codeforge/config/ccstatusline-settings.json` (deploys to `~/.config/ccstatusline/settings.json`). Each widget is a JSON object in a line array.
|
|
150
|
+
|
|
151
|
+
### Widget Properties
|
|
152
|
+
|
|
153
|
+
| Property | Purpose |
|
|
154
|
+
|----------|---------|
|
|
155
|
+
| `id` | Unique identifier (UUID or descriptive string) |
|
|
156
|
+
| `type` | Widget type (see below) |
|
|
157
|
+
| `backgroundColor` | Background color: `bgBlue`, `bgMagenta`, `bgYellow`, `bgGreen`, `bgRed`, etc. |
|
|
158
|
+
| `color` | Text color: `brightWhite`, `black`, `cyan`, `yellow`, etc. |
|
|
159
|
+
| `rawValue` | `true` to strip type-specific prefixes (e.g., removes "Model:" from model widget) |
|
|
160
|
+
| `bold` | `true` for bold text |
|
|
161
|
+
| `merge` | `"no-padding"` fuses this widget to the next (no separator/space between them) |
|
|
162
|
+
| `customText` | Static text content (only for `custom-text` type) |
|
|
163
|
+
|
|
164
|
+
### Token Widgets
|
|
165
|
+
|
|
166
|
+
Each token metric uses a distinct background color for at-a-glance identification:
|
|
167
|
+
|
|
168
|
+
| Type | Color | Label |
|
|
169
|
+
|------|-------|-------|
|
|
170
|
+
| `tokens-input` | Blue (`bgBlue`) | **In** |
|
|
171
|
+
| `tokens-output` | Magenta (`bgMagenta`) | **Ou** |
|
|
172
|
+
| `tokens-cached` | Yellow (`bgYellow`) | **Ca** |
|
|
173
|
+
| `tokens-total` | Green (`bgGreen`) | **Tt** |
|
|
174
|
+
|
|
175
|
+
Labels are `custom-text` widgets with `merge: "no-padding"` so they fuse visually to their data widget:
|
|
176
|
+
|
|
177
|
+
```json
|
|
178
|
+
{ "id": "lbl-tokens-input", "type": "custom-text", "customText": "In",
|
|
179
|
+
"backgroundColor": "bgBlue", "color": "brightWhite", "bold": true, "merge": "no-padding" },
|
|
180
|
+
{ "id": "5", "type": "tokens-input",
|
|
181
|
+
"backgroundColor": "bgBlue", "color": "brightWhite", "rawValue": true }
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Other Widget Types
|
|
185
|
+
|
|
186
|
+
`model`, `context-length`, `context-percentage-usable`, `git-branch`, `git-changes`, `git-worktree`, `session-clock`, `session-cost`, `block-timer`, `version`, `custom-command`
|
|
94
187
|
|
|
95
188
|
## Features
|
|
96
189
|
|
|
97
|
-
Custom features in `./features/` follow the [devcontainer feature spec](https://containers.dev/implementors/features/). Every local feature supports `"version": "none"` to skip installation. Claude Code is installed via
|
|
190
|
+
Custom features in `./features/` follow the [devcontainer feature spec](https://containers.dev/implementors/features/). Every local feature supports `"version": "none"` to skip installation. Claude Code is installed as a native binary via `./features/claude-code-native` (uses Anthropic's official installer at `https://claude.ai/install.sh`).
|
|
191
|
+
|
|
192
|
+
## Port Forwarding
|
|
193
|
+
|
|
194
|
+
Three mechanisms handle port access depending on your client:
|
|
195
|
+
|
|
196
|
+
| Mechanism | Client | Discovery |
|
|
197
|
+
|-----------|--------|-----------|
|
|
198
|
+
| VS Code auto-detect | VS Code only | Dynamic — all ports auto-forwarded with notification |
|
|
199
|
+
| devcontainer-bridge (`dbr`) | Any terminal client | Dynamic — polls `/proc/net/tcp` |
|
|
200
|
+
| SSH tunneling | Any SSH client | Manual — `ssh -L localPort:localhost:remotePort` |
|
|
201
|
+
|
|
202
|
+
VS Code auto-detects all ports opened inside the container (configured via `portsAttributes` in `devcontainer.json`). Outside VS Code, `dbr` provides dynamic port discovery via a reverse connection model (container→host). The container daemon auto-starts and is inert without the host daemon (`dbr host-daemon`). Both mechanisms coexist. See [devcontainer-bridge](https://github.com/bradleybeddoes/devcontainer-bridge).
|
|
203
|
+
|
|
204
|
+
For full setup instructions, see the [Port Forwarding reference](https://codeforge.core-directive.com/reference/port-forwarding/) in the docs.
|
package/.devcontainer/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CodeForge Usage Guide
|
|
2
2
|
|
|
3
|
-
Everything you need to know once you're inside the devcontainer.
|
|
3
|
+
Everything you need to know once you're inside the devcontainer. These instructions apply regardless of which client you used to start the container — VS Code, the `devcontainer` CLI, JetBrains Gateway, DevPod, or GitHub Codespaces.
|
|
4
4
|
|
|
5
5
|
## Quick Start
|
|
6
6
|
|
|
@@ -40,7 +40,20 @@ Get an API key from [console.anthropic.com](https://console.anthropic.com/).
|
|
|
40
40
|
|
|
41
41
|
### Credential Persistence
|
|
42
42
|
|
|
43
|
-
Authentication credentials are stored in
|
|
43
|
+
Authentication credentials are stored in `~/.claude/` and persist across container rebuilds via a Docker named volume.
|
|
44
|
+
|
|
45
|
+
### Long-Lived Token Authentication
|
|
46
|
+
|
|
47
|
+
For headless or automated environments, you can use a long-lived auth token instead of browser login:
|
|
48
|
+
|
|
49
|
+
1. Generate a token: `claude setup-token`
|
|
50
|
+
2. Add to `.devcontainer/.secrets`:
|
|
51
|
+
```bash
|
|
52
|
+
CLAUDE_AUTH_TOKEN=sk-ant-oat01-your-token-here
|
|
53
|
+
```
|
|
54
|
+
3. On next container start, `setup-auth.sh` will create `~/.claude/.credentials.json` automatically.
|
|
55
|
+
|
|
56
|
+
You can also set `CLAUDE_AUTH_TOKEN` as a Codespaces secret for cloud environments.
|
|
44
57
|
|
|
45
58
|
For more options, see the [Claude Code documentation](https://docs.anthropic.com/en/docs/claude-code).
|
|
46
59
|
|
|
@@ -111,7 +124,7 @@ Expected output shows your authenticated account and token scopes.
|
|
|
111
124
|
|
|
112
125
|
### Credential Persistence
|
|
113
126
|
|
|
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.
|
|
127
|
+
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. Claude Code credentials persist via a Docker named volume mounted at `~/.claude/`.
|
|
115
128
|
|
|
116
129
|
**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
130
|
|
|
@@ -119,7 +132,7 @@ GitHub CLI credentials are automatically persisted across container rebuilds. Th
|
|
|
119
132
|
|
|
120
133
|
### The `cc` Command
|
|
121
134
|
|
|
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
|
|
135
|
+
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 `.codeforge/scripts/connect-external-terminal.sh`.
|
|
123
136
|
|
|
124
137
|
```bash
|
|
125
138
|
cc # Start Claude Code in current directory
|
|
@@ -199,7 +212,7 @@ Copy `.devcontainer/.env.example` to `.devcontainer/.env` and customize:
|
|
|
199
212
|
|
|
200
213
|
| Variable | Default | Description |
|
|
201
214
|
|----------|---------|-------------|
|
|
202
|
-
| `CLAUDE_CONFIG_DIR` | `/
|
|
215
|
+
| `CLAUDE_CONFIG_DIR` | `/home/vscode/.claude` | Claude configuration directory |
|
|
203
216
|
| `SETUP_CONFIG` | `true` | Copy config files during setup (per `file-manifest.json`) |
|
|
204
217
|
| `SETUP_ALIASES` | `true` | Add `cc`/`claude`/`ccraw` aliases to shell |
|
|
205
218
|
| `SETUP_AUTH` | `true` | Configure Git/NPM auth from `.secrets` |
|
|
@@ -212,7 +225,7 @@ Copy `.devcontainer/.env.example` to `.devcontainer/.env` and customize:
|
|
|
212
225
|
|
|
213
226
|
### Claude Code Settings
|
|
214
227
|
|
|
215
|
-
Default settings are in `.
|
|
228
|
+
Default settings are in `.codeforge/config/settings.json`. File copying is controlled by `.codeforge/file-manifest.json`, which specifies per-file overwrite behavior (`"if-changed"`, `"always"`, or `"never"`).
|
|
216
229
|
|
|
217
230
|
To add a custom config file, append an entry to `file-manifest.json`:
|
|
218
231
|
```json
|
|
@@ -230,7 +243,7 @@ Key defaults:
|
|
|
230
243
|
|
|
231
244
|
### Keybindings
|
|
232
245
|
|
|
233
|
-
Default keybindings are in `.
|
|
246
|
+
Default keybindings are in `.codeforge/config/keybindings.json` (empty by default — Claude Code defaults apply). Customize by adding entries to the `bindings` array.
|
|
234
247
|
|
|
235
248
|
**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:
|
|
236
249
|
|
|
@@ -247,7 +260,7 @@ For conflicting shortcuts, use Meta (Alt) variants or add custom keybindings.
|
|
|
247
260
|
|
|
248
261
|
### System Prompt
|
|
249
262
|
|
|
250
|
-
The default system prompt is in `.
|
|
263
|
+
The default system prompt is in `.codeforge/config/main-system-prompt.md`. Override it by creating a `.claude/main-system-prompt.md` in your project directory.
|
|
251
264
|
|
|
252
265
|
## Custom Features
|
|
253
266
|
|
|
@@ -301,6 +314,8 @@ Three methods for providing GitHub/NPM credentials, in order of precedence:
|
|
|
301
314
|
|
|
302
315
|
All methods persist across container rebuilds via the bind-mounted `/workspaces/.gh/` directory.
|
|
303
316
|
|
|
317
|
+
4. **`.secrets` file with `CLAUDE_AUTH_TOKEN`** — Long-lived Claude auth token from `claude setup-token`. Auto-creates `~/.claude/.credentials.json` on container start.
|
|
318
|
+
|
|
304
319
|
## Agents & Skills
|
|
305
320
|
|
|
306
321
|
Agents and skills are distributed across focused plugins (replacing the former `code-directive` monolith).
|
|
@@ -329,11 +344,11 @@ Agent definitions in `plugins/devs-marketplace/plugins/agent-system/agents/` pro
|
|
|
329
344
|
| `statusline-config` | ccstatusline configuration |
|
|
330
345
|
| `test-writer` | Test authoring with pass verification |
|
|
331
346
|
|
|
332
|
-
### General Skills (
|
|
347
|
+
### General Skills (22) — `skill-engine` plugin
|
|
333
348
|
|
|
334
349
|
Skills in `plugins/devs-marketplace/plugins/skill-engine/skills/` provide domain-specific coding references:
|
|
335
350
|
|
|
336
|
-
`api-design` · `ast-grep-patterns` · `claude-agent-sdk` · `claude-code-headless` · `debugging` · `dependency-management` · `docker` · `docker-py` · `documentation-patterns` · `fastapi` · `git-forensics` · `migration-patterns` · `performance-profiling` · `pydantic-ai` · `refactoring-patterns` · `security-checklist` · `skill-building` · `sqlite` · `svelte5` · `team` · `testing`
|
|
351
|
+
`api-design` · `ast-grep-patterns` · `claude-agent-sdk` · `claude-code-headless` · `debugging` · `dependency-management` · `docker` · `docker-py` · `documentation-patterns` · `fastapi` · `git-forensics` · `migration-patterns` · `performance-profiling` · `pydantic-ai` · `refactoring-patterns` · `security-checklist` · `skill-building` · `sqlite` · `svelte5` · `team` · `testing` · `worktree`
|
|
337
352
|
|
|
338
353
|
### Spec Skills (8) — `spec-workflow` plugin
|
|
339
354
|
|
|
@@ -411,20 +426,20 @@ The `setup-projects.sh` script auto-detects projects under `/workspaces/` and ma
|
|
|
411
426
|
|
|
412
427
|
- **Authentication required**: Run `claude` once to authenticate before using `cc`
|
|
413
428
|
- **Plan mode default**: The container starts in "plan" mode, which prompts for approval before making changes
|
|
414
|
-
- **Config is managed by manifest**:
|
|
429
|
+
- **Config is managed by manifest**: `.codeforge/file-manifest.json` controls which files are copied and when — default `overwrite: "if-changed"` uses sha256 comparison. Persistent changes go in `.codeforge/config/settings.json`
|
|
415
430
|
- **GitHub auth persists**: Run `gh auth login` once or configure `.secrets`; credentials survive container rebuilds
|
|
416
|
-
- **Agent Teams needs tmux**: Split panes only work inside tmux. Use the "Claude Teams (tmux)" VS Code terminal profile or
|
|
431
|
+
- **Agent Teams needs tmux**: Split panes only work inside tmux. Use the "Claude Teams (tmux)" VS Code terminal profile or `.codeforge/scripts/connect-external-terminal.sh` from WezTerm/iTerm2
|
|
417
432
|
|
|
418
433
|
## Troubleshooting
|
|
419
434
|
|
|
420
|
-
Common issues and solutions. For detailed troubleshooting, see [
|
|
435
|
+
Common issues and solutions. For detailed troubleshooting, see the [Troubleshooting](https://codeforge.core-directive.com/reference/troubleshooting/) page on the docs site.
|
|
421
436
|
|
|
422
437
|
| Problem | Solution |
|
|
423
438
|
|---------|----------|
|
|
424
439
|
| `cc: command not found` | Run `source ~/.bashrc` or open a new terminal |
|
|
425
440
|
| `claude` fails during startup | Background update may be in progress — wait 10s and retry |
|
|
426
441
|
| GitHub push fails | Run `gh auth status` to check authentication |
|
|
427
|
-
| Plugin not loading | Check `enabledPlugins` in
|
|
442
|
+
| Plugin not loading | Check `enabledPlugins` in `.codeforge/config/settings.json` |
|
|
428
443
|
| Feature not installed | Check `devcontainer.json` for `"version": "none"` |
|
|
429
444
|
| Tool version/status | Run `cc-tools` to list all tools with version info |
|
|
430
445
|
| Full health check | Run `check-setup` to verify setup status |
|
|
@@ -432,11 +447,11 @@ Common issues and solutions. For detailed troubleshooting, see [docs/troubleshoo
|
|
|
432
447
|
## Further Reading
|
|
433
448
|
|
|
434
449
|
**CodeForge Documentation**:
|
|
435
|
-
- [Configuration Reference](
|
|
436
|
-
- [Plugin System](
|
|
437
|
-
- [Optional Features](
|
|
438
|
-
- [Keybinding Customization](
|
|
439
|
-
- [Troubleshooting](
|
|
450
|
+
- [Configuration Reference](https://codeforge.core-directive.com/customization/configuration/) — all env vars and config options
|
|
451
|
+
- [Plugin System](https://codeforge.core-directive.com/plugins/) — plugin architecture and per-plugin docs
|
|
452
|
+
- [Optional Features](https://codeforge.core-directive.com/customization/optional-features/) — mcp-qdrant and other optional components, disabling features
|
|
453
|
+
- [Keybinding Customization](https://codeforge.core-directive.com/customization/keybindings/) — resolving VS Code conflicts
|
|
454
|
+
- [Troubleshooting](https://codeforge.core-directive.com/reference/troubleshooting/) — common issues and solutions
|
|
440
455
|
|
|
441
456
|
**External**:
|
|
442
457
|
- [Claude Code Documentation](https://docs.anthropic.com/en/docs/claude-code)
|