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.
Files changed (106) hide show
  1. package/{.devcontainer/config/defaults → .codeforge/config}/ccstatusline-settings.json +44 -6
  2. package/{.devcontainer/config/defaults → .codeforge/config}/main-system-prompt.md +14 -6
  3. package/.codeforge/config/orchestrator-system-prompt.md +333 -0
  4. package/{.devcontainer/config/defaults → .codeforge/config}/settings.json +3 -1
  5. package/{.devcontainer/config → .codeforge}/file-manifest.json +15 -9
  6. package/{.devcontainer → .codeforge/scripts}/connect-external-terminal.sh +3 -1
  7. package/.devcontainer/.env.example +5 -5
  8. package/.devcontainer/.secrets.example +3 -0
  9. package/.devcontainer/CHANGELOG.md +242 -0
  10. package/.devcontainer/CLAUDE.md +129 -22
  11. package/.devcontainer/README.md +34 -19
  12. package/.devcontainer/devcontainer.json +28 -10
  13. package/.devcontainer/features/agent-browser/install.sh +2 -0
  14. package/.devcontainer/features/ast-grep/install.sh +2 -0
  15. package/.devcontainer/features/biome/install.sh +2 -0
  16. package/.devcontainer/features/ccburn/install.sh +2 -0
  17. package/.devcontainer/features/ccms/install.sh +2 -0
  18. package/.devcontainer/features/ccstatusline/README.md +7 -6
  19. package/.devcontainer/features/ccstatusline/install.sh +9 -4
  20. package/.devcontainer/features/ccusage/install.sh +2 -0
  21. package/.devcontainer/features/chromaterm/chromaterm.yml +2 -2
  22. package/.devcontainer/features/chromaterm/install.sh +2 -0
  23. package/.devcontainer/features/claude-code-native/README.md +47 -0
  24. package/.devcontainer/features/claude-code-native/devcontainer-feature.json +29 -0
  25. package/.devcontainer/features/claude-code-native/install.sh +131 -0
  26. package/.devcontainer/features/claude-monitor/install.sh +2 -0
  27. package/.devcontainer/features/claude-session-dashboard/README.md +2 -2
  28. package/.devcontainer/features/claude-session-dashboard/install.sh +2 -0
  29. package/.devcontainer/features/dprint/install.sh +2 -0
  30. package/.devcontainer/features/hadolint/install.sh +2 -0
  31. package/.devcontainer/features/kitty-terminfo/README.md +3 -1
  32. package/.devcontainer/features/kitty-terminfo/install.sh +2 -0
  33. package/.devcontainer/features/lsp-servers/install.sh +2 -0
  34. package/.devcontainer/features/mcp-qdrant/CHANGES.md +3 -3
  35. package/.devcontainer/features/mcp-qdrant/README.md +1 -0
  36. package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +1 -1
  37. package/.devcontainer/features/mcp-qdrant/install.sh +9 -2
  38. package/.devcontainer/features/mcp-qdrant/poststart-hook.sh +9 -2
  39. package/.devcontainer/features/notify-hook/devcontainer-feature.json +1 -1
  40. package/.devcontainer/features/notify-hook/install.sh +2 -0
  41. package/.devcontainer/features/ruff/install.sh +2 -0
  42. package/.devcontainer/features/shellcheck/install.sh +2 -0
  43. package/.devcontainer/features/shfmt/install.sh +2 -0
  44. package/.devcontainer/features/tmux/README.md +3 -3
  45. package/.devcontainer/features/tmux/install.sh +3 -1
  46. package/.devcontainer/features/tree-sitter/install.sh +2 -0
  47. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +27 -11
  48. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/README.md +23 -4
  49. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/claude-guide.md +4 -4
  50. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/documenter.md +254 -0
  51. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/implementer.md +260 -0
  52. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/investigator.md +255 -0
  53. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/tester.md +304 -0
  54. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/README.md +1 -1
  55. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/advisory-test-runner.py +4 -2
  56. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py +2 -2
  57. package/.devcontainer/plugins/devs-marketplace/plugins/git-workflow/.claude-plugin/plugin.json +7 -0
  58. package/.devcontainer/plugins/devs-marketplace/plugins/git-workflow/README.md +125 -0
  59. package/.devcontainer/plugins/devs-marketplace/plugins/git-workflow/skills/pr-review/SKILL.md +325 -0
  60. package/.devcontainer/plugins/devs-marketplace/plugins/git-workflow/skills/ship/SKILL.md +314 -0
  61. package/.devcontainer/plugins/devs-marketplace/plugins/prompt-snippets/.claude-plugin/plugin.json +5 -0
  62. package/.devcontainer/plugins/devs-marketplace/plugins/prompt-snippets/README.md +52 -0
  63. package/.devcontainer/plugins/devs-marketplace/plugins/prompt-snippets/skills/ps/SKILL.md +37 -0
  64. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected-bash.py +1 -1
  65. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +1 -1
  66. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/README.md +30 -14
  67. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/hooks/hooks.json +13 -1
  68. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/collect-session-edits.py +44 -0
  69. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/commit-reminder.py +89 -10
  70. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/.claude-plugin/plugin.json +1 -1
  71. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/README.md +19 -11
  72. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/scripts/skill-suggester.py +476 -282
  73. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/worktree/SKILL.md +227 -0
  74. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/worktree/references/manual-worktree-commands.md +238 -0
  75. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/worktree/references/parallel-workflow-patterns.md +228 -0
  76. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/scripts/ticket-linker.py +2 -2
  77. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/README.md +1 -1
  78. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py +3 -2
  79. package/.devcontainer/scripts/check-setup.sh +5 -3
  80. package/.devcontainer/scripts/preflight.sh +113 -0
  81. package/.devcontainer/scripts/setup-aliases.sh +13 -8
  82. package/.devcontainer/scripts/setup-auth.sh +46 -0
  83. package/.devcontainer/scripts/setup-config.sh +29 -10
  84. package/.devcontainer/scripts/setup-migrate-claude.sh +80 -0
  85. package/.devcontainer/scripts/setup-migrate-codeforge.sh +60 -0
  86. package/.devcontainer/scripts/setup-plugins.sh +3 -1
  87. package/.devcontainer/scripts/setup-projects.sh +3 -1
  88. package/.devcontainer/scripts/setup-terminal.sh +3 -1
  89. package/.devcontainer/scripts/setup-update-claude.sh +22 -27
  90. package/.devcontainer/scripts/setup.sh +57 -5
  91. package/LICENSE.txt +14 -0
  92. package/README.md +79 -5
  93. package/package.json +2 -1
  94. package/setup.js +392 -21
  95. package/.devcontainer/docs/configuration-reference.md +0 -93
  96. package/.devcontainer/docs/keybindings.md +0 -100
  97. package/.devcontainer/docs/optional-features.md +0 -64
  98. package/.devcontainer/docs/plugins.md +0 -176
  99. package/.devcontainer/docs/troubleshooting.md +0 -128
  100. package/.devcontainer/scripts/setup-symlink-claude.sh +0 -36
  101. /package/{.devcontainer/config/defaults → .codeforge/config}/keybindings.json +0 -0
  102. /package/{.devcontainer/config/defaults → .codeforge/config}/rules/session-search.md +0 -0
  103. /package/{.devcontainer/config/defaults → .codeforge/config}/rules/spec-workflow.md +0 -0
  104. /package/{.devcontainer/config/defaults → .codeforge/config}/rules/workspace-scope.md +0 -0
  105. /package/{.devcontainer/config/defaults → .codeforge/config}/writing-system-prompt.md +0 -0
  106. /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
 
@@ -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
- | `config/defaults/settings.json` | Model, tokens, permissions, plugins, env vars |
28
- | `config/defaults/main-system-prompt.md` | System prompt defining assistant behavior |
29
- | `config/defaults/ccstatusline-settings.json` | Status bar widget layout (deployed to ~/.config/ccstatusline/) |
30
- | `config/file-manifest.json` | Controls which config files deploy and when |
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 `file-manifest.json` on every container start. Most deploy to `/workspaces/.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}`.
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** — 17 custom agents + built-in agent redirection
55
- - **skill-engine** — 21 general coding skills + auto-suggestion
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 `config/defaults/rules/` deploy to `.claude/rules/` on every container start. They load into ALL sessions automatically.
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 `config/defaults/rules/`, add a manifest entry in `file-manifest.json`.
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` | `/workspaces/.claude` |
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 `config/defaults/settings.json` → `"model"` field
88
- 2. **Change system prompt**: Edit `config/defaults/main-system-prompt.md`
89
- 3. **Add config file**: Add entry to `config/file-manifest.json`
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 `config/defaults/ccstatusline-settings.json`
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 `ghcr.io/anthropics/devcontainer-features/claude-code:1`.
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.
@@ -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 `/workspaces/.claude/` and persist across container rebuilds.
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 `connect-external-terminal.sh`.
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` | `/workspaces/.claude` | Claude configuration directory |
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 `.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"`).
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 `.devcontainer/config/defaults/keybindings.json` (empty by default — Claude Code defaults apply). Customize by adding entries to the `bindings` array.
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 `.devcontainer/config/defaults/main-system-prompt.md`. Override it by creating a `.claude/main-system-prompt.md` in your project directory.
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 (21) — `skill-engine` plugin
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**: `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`
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 `connect-external-terminal.sh` from WezTerm/iTerm2
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 [docs/troubleshooting.md](docs/troubleshooting.md).
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 `config/defaults/settings.json` |
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](docs/configuration-reference.md) — all env vars and config options
436
- - [Plugin System](docs/plugins.md) — plugin architecture and per-plugin docs
437
- - [Optional Features](docs/optional-features.md) — mcp-qdrant and other optional components, disabling features
438
- - [Keybinding Customization](docs/keybindings.md) — resolving VS Code conflicts
439
- - [Troubleshooting](docs/troubleshooting.md) — common issues and solutions
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)