codeforge-dev 1.5.8 → 1.8.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 (176) hide show
  1. package/.devcontainer/.env +4 -5
  2. package/.devcontainer/.env.example +29 -0
  3. package/.devcontainer/.gitignore +8 -0
  4. package/.devcontainer/.secrets.example +12 -0
  5. package/.devcontainer/CHANGELOG.md +186 -0
  6. package/.devcontainer/CLAUDE.md +108 -21
  7. package/.devcontainer/README.md +173 -57
  8. package/.devcontainer/config/defaults/keybindings.json +5 -0
  9. package/.devcontainer/config/{main-system-prompt.md → defaults/main-system-prompt.md} +135 -2
  10. package/.devcontainer/config/{settings.json → defaults/settings.json} +25 -6
  11. package/.devcontainer/config/file-manifest.json +20 -0
  12. package/.devcontainer/devcontainer.json +38 -2
  13. package/.devcontainer/docs/configuration-reference.md +90 -0
  14. package/.devcontainer/docs/keybindings.md +100 -0
  15. package/.devcontainer/docs/optional-features.md +129 -0
  16. package/.devcontainer/docs/plugins.md +154 -0
  17. package/.devcontainer/docs/troubleshooting.md +128 -0
  18. package/.devcontainer/features/README.md +21 -7
  19. package/.devcontainer/features/agent-browser/install.sh +6 -0
  20. package/.devcontainer/features/ast-grep/install.sh +6 -0
  21. package/.devcontainer/features/biome/README.md +27 -0
  22. package/.devcontainer/features/biome/install.sh +6 -0
  23. package/.devcontainer/features/ccburn/README.md +60 -0
  24. package/.devcontainer/features/ccburn/devcontainer-feature.json +38 -0
  25. package/.devcontainer/features/ccburn/install.sh +180 -0
  26. package/.devcontainer/features/ccstatusline/README.md +22 -21
  27. package/.devcontainer/features/ccstatusline/devcontainer-feature.json +6 -1
  28. package/.devcontainer/features/ccstatusline/install.sh +55 -16
  29. package/.devcontainer/features/ccusage/install.sh +6 -0
  30. package/.devcontainer/features/claude-monitor/install.sh +6 -0
  31. package/.devcontainer/features/dprint/README.md +30 -0
  32. package/.devcontainer/features/dprint/devcontainer-feature.json +18 -0
  33. package/.devcontainer/features/dprint/install.sh +131 -0
  34. package/.devcontainer/features/hadolint/README.md +35 -0
  35. package/.devcontainer/features/hadolint/devcontainer-feature.json +13 -0
  36. package/.devcontainer/features/hadolint/install.sh +86 -0
  37. package/.devcontainer/features/lsp-servers/devcontainer-feature.json +5 -0
  38. package/.devcontainer/features/lsp-servers/install.sh +7 -0
  39. package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +6 -1
  40. package/.devcontainer/features/mcp-qdrant/install.sh +13 -6
  41. package/.devcontainer/features/mcp-reasoner/devcontainer-feature.json +6 -1
  42. package/.devcontainer/features/mcp-reasoner/install.sh +8 -1
  43. package/.devcontainer/features/notify-hook/devcontainer-feature.json +5 -0
  44. package/.devcontainer/features/notify-hook/install.sh +7 -0
  45. package/.devcontainer/features/ruff/README.md +26 -0
  46. package/.devcontainer/features/ruff/devcontainer-feature.json +21 -0
  47. package/.devcontainer/features/ruff/install.sh +74 -0
  48. package/.devcontainer/features/shellcheck/README.md +38 -0
  49. package/.devcontainer/features/shellcheck/devcontainer-feature.json +13 -0
  50. package/.devcontainer/features/shellcheck/install.sh +24 -0
  51. package/.devcontainer/features/shfmt/README.md +37 -0
  52. package/.devcontainer/features/shfmt/devcontainer-feature.json +13 -0
  53. package/.devcontainer/features/shfmt/install.sh +85 -0
  54. package/.devcontainer/features/splitrail/devcontainer-feature.json +5 -0
  55. package/.devcontainer/features/splitrail/install.sh +7 -0
  56. package/.devcontainer/features/tmux/install.sh +8 -0
  57. package/.devcontainer/features/tree-sitter/install.sh +6 -0
  58. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +3 -10
  59. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +1 -1
  60. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/__pycache__/format-on-stop.cpython-314.pyc +0 -0
  61. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +133 -13
  62. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/.claude-plugin/plugin.json +1 -1
  63. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +4 -5
  64. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/__pycache__/lint-file.cpython-314.pyc +0 -0
  65. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/lint-file.py +477 -78
  66. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/plugin.json +1 -1
  67. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/AGENT-REDIRECTION.md +226 -0
  68. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/REVIEW-RUBRIC.md +440 -0
  69. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/architect.md +207 -0
  70. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/bash-exec.md +173 -0
  71. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/claude-guide.md +146 -0
  72. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +2 -0
  73. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/dependency-analyst.md +250 -0
  74. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/doc-writer.md +246 -0
  75. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/explorer.md +237 -0
  76. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/generalist.md +134 -0
  77. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/git-archaeologist.md +242 -0
  78. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/migrator.md +201 -0
  79. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/perf-profiler.md +265 -0
  80. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/refactorer.md +213 -0
  81. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/researcher.md +195 -0
  82. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/security-auditor.md +289 -0
  83. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/spec-writer.md +297 -0
  84. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/statusline-config.md +188 -0
  85. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/test-writer.md +248 -0
  86. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +51 -0
  87. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/advisory-test-runner.cpython-314.pyc +0 -0
  88. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/collect-edited-files.cpython-314.pyc +0 -0
  89. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/commit-reminder.cpython-314.pyc +0 -0
  90. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/git-state-injector.cpython-314.pyc +0 -0
  91. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/guard-readonly-bash.cpython-314.pyc +0 -0
  92. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/redirect-builtin-agents.cpython-314.pyc +0 -0
  93. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/skill-suggester.cpython-314.pyc +0 -0
  94. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/syntax-validator.cpython-314.pyc +0 -0
  95. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/ticket-linker.cpython-314.pyc +0 -0
  96. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/todo-harvester.cpython-314.pyc +0 -0
  97. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-no-regression.cpython-314.pyc +0 -0
  98. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-tests-pass.cpython-314.pyc +0 -0
  99. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/advisory-test-runner.py +174 -0
  100. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +8 -6
  101. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/commit-reminder.py +90 -0
  102. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/git-state-injector.py +114 -0
  103. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/guard-readonly-bash.py +611 -0
  104. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/redirect-builtin-agents.py +83 -0
  105. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/skill-suggester.py +146 -2
  106. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/syntax-validator.py +9 -4
  107. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/ticket-linker.py +137 -0
  108. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/todo-harvester.py +130 -0
  109. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/verify-no-regression.py +221 -0
  110. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/verify-tests-pass.py +176 -0
  111. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/SKILL.md +224 -0
  112. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/references/error-handling.md +166 -0
  113. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/references/rest-conventions.md +215 -0
  114. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/ast-grep-patterns/SKILL.md +211 -0
  115. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/ast-grep-patterns/references/language-patterns.md +327 -0
  116. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/claude-agent-sdk/SKILL.md +599 -0
  117. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/claude-agent-sdk/references/sdk-typescript-reference.md +954 -0
  118. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/SKILL.md +134 -0
  119. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/references/ecosystem-commands.md +264 -0
  120. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/references/license-compliance.md +80 -0
  121. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/SKILL.md +153 -0
  122. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/references/api-doc-templates.md +221 -0
  123. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/references/docstring-formats.md +296 -0
  124. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/git-forensics/SKILL.md +276 -0
  125. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/git-forensics/references/advanced-commands.md +332 -0
  126. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/git-forensics/references/investigation-playbooks.md +319 -0
  127. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/SKILL.md +150 -0
  128. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/references/javascript-migrations.md +179 -0
  129. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/references/python-migrations.md +141 -0
  130. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/performance-profiling/SKILL.md +341 -0
  131. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/performance-profiling/references/interpreting-results.md +235 -0
  132. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/performance-profiling/references/tool-commands.md +395 -0
  133. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/refactoring-patterns/SKILL.md +344 -0
  134. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/refactoring-patterns/references/safe-transformations.md +247 -0
  135. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/refactoring-patterns/references/smell-catalog.md +332 -0
  136. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/security-checklist/SKILL.md +277 -0
  137. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/security-checklist/references/owasp-patterns.md +269 -0
  138. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/security-checklist/references/secrets-patterns.md +253 -0
  139. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/SKILL.md +320 -0
  140. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/references/criteria-patterns.md +245 -0
  141. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/references/ears-templates.md +239 -0
  142. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/__pycache__/block-dangerous.cpython-314.pyc +0 -0
  143. package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/hooks/hooks.json +1 -1
  144. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/__pycache__/guard-protected.cpython-314.pyc +0 -0
  145. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +40 -39
  146. package/.devcontainer/scripts/check-setup.sh +72 -0
  147. package/.devcontainer/scripts/setup-aliases.sh +51 -6
  148. package/.devcontainer/scripts/setup-auth.sh +74 -0
  149. package/.devcontainer/scripts/setup-config.sh +112 -20
  150. package/.devcontainer/scripts/setup-plugins.sh +38 -46
  151. package/.devcontainer/scripts/setup-projects.sh +175 -0
  152. package/.devcontainer/scripts/setup-symlink-claude.sh +36 -0
  153. package/.devcontainer/scripts/setup-update-claude.sh +19 -8
  154. package/.devcontainer/scripts/setup.sh +49 -14
  155. package/README.md +23 -190
  156. package/package.json +1 -1
  157. package/setup.js +245 -71
  158. package/.devcontainer/features/claude-code/README.md +0 -498
  159. package/.devcontainer/features/claude-code/config/settings.json +0 -36
  160. package/.devcontainer/features/claude-code/config/system-prompt.md +0 -118
  161. package/.devcontainer/features/claude-code/config/world-building-sp.md +0 -1432
  162. package/.devcontainer/features/claude-code/devcontainer-feature.json +0 -42
  163. package/.devcontainer/features/claude-code/install.sh +0 -466
  164. package/.devcontainer/plugins/devs-marketplace/plugins/planning-reminder/.claude-plugin/plugin.json +0 -7
  165. package/.devcontainer/plugins/devs-marketplace/plugins/planning-reminder/hooks/hooks.json +0 -17
  166. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/.claude-plugin/plugin.json +0 -6
  167. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/config/planning-instructions.md +0 -14
  168. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/functional-conjuring-map.md +0 -989
  169. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/hooks/hooks.json +0 -33
  170. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/__pycache__/post-enhance-task.cpython-314.pyc +0 -0
  171. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhance-planning.py +0 -71
  172. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhancers/enhance-plan.sh +0 -68
  173. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhancers/enhance-task.sh +0 -120
  174. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/post-enhance-plan.py +0 -133
  175. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/post-enhance-task.py +0 -253
  176. package/.devcontainer/scripts/setup-irie-claude.sh +0 -32
@@ -8,12 +8,12 @@ CLAUDE_CONFIG_DIR=/workspaces/.claude
8
8
  # Setup: copy config files to CLAUDE_CONFIG_DIR
9
9
  SETUP_CONFIG=true
10
10
 
11
- # Setup: overwrite existing config files (false = skip if exists)
12
- OVERWRITE_CONFIG=true
13
-
14
11
  # Setup: add cc alias to shell rc files
15
12
  SETUP_ALIASES=true
16
13
 
14
+ # Setup: configure Git and NPM auth from .secrets file
15
+ SETUP_AUTH=true
16
+
17
17
  # Setup: install official Anthropic plugins
18
18
  SETUP_PLUGINS=true
19
19
 
@@ -21,5 +21,4 @@ SETUP_PLUGINS=true
21
21
  SETUP_UPDATE_CLAUDE=true
22
22
 
23
23
  # Plugin blacklist (comma-separated plugin names to skip during auto-install)
24
- # Example: PLUGIN_BLACKLIST="workflow-enhancer,auto-formatter"
25
- PLUGIN_BLACKLIST="workflow-enhancer,planning-reminder"
24
+ PLUGIN_BLACKLIST=""
@@ -0,0 +1,29 @@
1
+ # CodeForge Environment Configuration
2
+ # Copy to .env and customize. .env is gitignored.
3
+
4
+ # Paths
5
+ CLAUDE_CONFIG_DIR=/workspaces/.claude
6
+ # CONFIG_SOURCE_DIR is derived from script location; uncomment to override:
7
+ # CONFIG_SOURCE_DIR=/custom/path/to/config
8
+
9
+ # Setup: copy config files to CLAUDE_CONFIG_DIR (per config/file-manifest.json)
10
+ SETUP_CONFIG=true
11
+
12
+ # Setup: add cc/claude/ccraw aliases to shell rc files
13
+ SETUP_ALIASES=true
14
+
15
+ # Setup: configure Git and NPM auth from .secrets file
16
+ SETUP_AUTH=true
17
+
18
+ # Setup: install official Anthropic plugins + register local marketplace
19
+ SETUP_PLUGINS=true
20
+
21
+ # Setup: auto-update Claude Code CLI to latest on container start (runs in background)
22
+ SETUP_UPDATE_CLAUDE=true
23
+
24
+ # Setup: auto-detect projects for VS Code Project Manager extension
25
+ SETUP_PROJECTS=true
26
+
27
+ # Plugin blacklist: comma-separated plugin names to skip during installation
28
+ # Example: PLUGIN_BLACKLIST="ticket-workflow,auto-linter"
29
+ PLUGIN_BLACKLIST=""
@@ -0,0 +1,8 @@
1
+ # Explicitly ignored (safety net on top of root .* rule)
2
+ .review
3
+ .secrets
4
+
5
+ # Un-ignore dotfiles that should be tracked (overrides root .* pattern)
6
+ !.env.example
7
+ !.secrets.example
8
+ !.gitignore
@@ -0,0 +1,12 @@
1
+ # Copy this file to .secrets and fill in your tokens.
2
+ # .secrets is gitignored and will never be committed.
3
+
4
+ # GitHub Personal Access Token (classic or fine-grained)
5
+ GH_TOKEN=
6
+ # GitHub username for git config
7
+ GH_USERNAME=
8
+ # GitHub email for git config (use noreply for privacy)
9
+ GH_EMAIL=
10
+
11
+ # NPM auth token for registry.npmjs.org
12
+ NPM_TOKEN=
@@ -1,5 +1,191 @@
1
1
  # CodeForge Devcontainer Changelog
2
2
 
3
+ ## [v1.8.0] - 2026-02-09
4
+
5
+ ### Added
6
+
7
+ #### Config System: Declarative File Manifest
8
+ - **`config/file-manifest.json`** — new declarative manifest controlling which config files are copied and how. Replaces hardcoded `copy_file` calls with per-file `overwrite` modes: `"if-changed"` (sha256-based, default), `"always"`, or `"never"`
9
+ - **`config/defaults/`** — config files relocated from `config/` to `config/defaults/` (settings.json, keybindings.json, main-system-prompt.md)
10
+ - **`setup-config.sh` rewritten** — reads file-manifest.json, supports variable expansion (`${CLAUDE_CONFIG_DIR}`, `${WORKSPACE_ROOT}`), sha256-based change detection, and legacy fallback if manifest is missing
11
+
12
+ #### Features
13
+ - **ruff feature** — Python formatter/linter via `uv tool install ruff`; replaces Black as primary Python formatter (Black kept as fallback)
14
+ - **shfmt feature** — Shell script formatter via direct binary download from GitHub releases; supports `.sh`, `.bash`, `.zsh`, `.mksh`, `.bats`
15
+ - **dprint feature** — Pluggable formatter for Markdown, YAML, TOML, and Dockerfile via GitHub releases binary; ships global config at `/usr/local/share/dprint/dprint.json` with four plugins (markdown, yaml, toml, dockerfile)
16
+ - **shellcheck feature** — Shell script linter via `apt-get install`; JSON output parsing for structured diagnostics
17
+ - **hadolint feature** — Dockerfile linter via direct binary download from GitHub releases; JSON output parsing
18
+
19
+ #### Formatter Coverage (format-on-stop.py)
20
+ - **Ruff formatter** — `.py`/`.pyi` files now formatted with Ruff (falls back to Black if Ruff not installed)
21
+ - **Biome expanded** — added `.css`, `.json`, `.jsonc`, `.graphql`, `.gql`, `.html`, `.vue`, `.svelte`, `.astro` (was JS/TS only; now 18 extensions total)
22
+ - **shfmt integration** — `.sh`, `.bash`, `.zsh`, `.mksh`, `.bats` files auto-formatted on Stop
23
+ - **dprint integration** — `.md`, `.markdown`, `.yaml`, `.yml`, `.toml` files and `Dockerfile`/`.dockerfile` auto-formatted on Stop
24
+ - **rustfmt integration** — `.rs` files auto-formatted if `rustfmt` is in PATH (conditional, zero overhead when unused)
25
+
26
+ #### Linter Coverage (lint-file.py)
27
+ - **Ruff linter** — Python files now checked by both Pyright (type checking) and Ruff (style/correctness); complementary, not redundant
28
+ - **Biome lint** — JS/TS/CSS/GraphQL files linted via `biome lint --reporter=json`; surfaces unsafe diagnostics not auto-fixed by formatter
29
+ - **ShellCheck** — shell scripts linted via `shellcheck --format=json`; structured severity/line/message output
30
+ - **go vet** — `.go` files linted via `go vet`; stderr parsed for diagnostics
31
+ - **hadolint** — `Dockerfile`/`.dockerfile` files linted via `hadolint --format json`
32
+ - **clippy** — `.rs` files linted via `cargo clippy` if cargo is in PATH (conditional)
33
+
34
+ #### version:none Support
35
+ - **All 20 local features** now support `"version": "none"` in devcontainer.json to skip installation entirely
36
+ - Added `version` option to 7 features that previously lacked it: ccstatusline, notify-hook, shellcheck, mcp-qdrant, mcp-reasoner, splitrail, lsp-servers
37
+ - Added skip guard (`if [ "${VERSION}" = "none" ]; then exit 0; fi`) to all 20 install.sh files
38
+
39
+ #### Advisory Hooks (code-directive plugin)
40
+ - **advisory-test-runner.py** `[Stop]` — runs project test suite on Stop, injects pass/fail results as `additionalContext`. Never blocks (always exit 0). Detects pytest, vitest, jest, mocha, go test, cargo test. 60s timeout, truncates to last 30 lines
41
+ - **git-state-injector.py** `[SessionStart]` — injects branch, status summary, recent commits, and diff stats as `additionalContext` on every session start. 5s per git command, total output capped at 2000 chars
42
+ - **ticket-linker.py** `[UserPromptSubmit]` — auto-fetches GitHub issues/PRs when prompt contains `#123` or full GitHub URLs. Up to 3 refs per prompt, body capped at 1500 chars each
43
+ - **commit-reminder.py** `[Stop]` — checks for uncommitted changes (staged/unstaged counts) and injects advisory reminder as `additionalContext`. Checks `stop_hook_active`
44
+ - **todo-harvester.py** `[SessionStart]` — greps for TODO/FIXME/HACK/XXX across 13 source extensions, injects count + top 10 items. Excludes noise dirs, output capped at 800 chars
45
+
46
+ #### New Skills (code-directive plugin — 5 new, 21 total)
47
+ - **api-design** — REST conventions, error handling patterns, OpenAPI/Swagger guidance
48
+ - **ast-grep-patterns** — structural code search patterns across languages
49
+ - **dependency-management** — ecosystem-specific audit commands, license compliance
50
+ - **documentation-patterns** — docstring formats, API doc templates
51
+ - **migration-patterns** — Python and JavaScript framework migration guides
52
+
53
+ #### Commands & Scripts
54
+ - **`cc-tools`** — new shell function listing all installed CodeForge tools with version info
55
+ - **`check-setup`** — new health check script (`check-setup.sh`) verifying container setup is working correctly; aliased in shell rc files
56
+
57
+ #### Workspace
58
+ - **`CLAUDE.md`** — workspace-level project instructions (workspace scoping rules)
59
+ - **`test-project/`** — minimal test project directory
60
+
61
+ ### Changed
62
+
63
+ #### NPM Package (setup.js)
64
+ - **`--force` is now non-destructive** — selectively syncs files instead of rm+copy. Framework files (scripts, features, plugins) are overwritten; user config files (settings, keybindings, system prompt, file-manifest) are preserved with `.codeforge-new` versions saved for diffing
65
+ - **`--reset` flag** — new option for complete fresh install (deletes and re-copies everything)
66
+ - **`.codeforge-preserve`** — user-customizable file listing additional paths to preserve during `--force` updates
67
+ - **devcontainer.json handling** — user's version backed up as `.bak` during `--force`, then overwritten with package version
68
+ - **`.npmignore`** — excludes `.codeforge-new`, `.bak`, and `.codeforge-preserve` artifacts from npm package
69
+
70
+ #### Setup System
71
+ - **setup.sh** — removed `set -e` (individual script failures no longer abort the entire setup); structured pass/fail/skip reporting with elapsed time summary
72
+ - **setup-aliases.sh** — backs up `.bashrc`/`.zshrc` before modifying (keeps last 3 backups); cleans up old cc-tools/check-setup definitions; adds `cc-tools` function and `check-setup` alias
73
+ - **OVERWRITE_CONFIG deprecated** — replaced by per-file `overwrite` in `config/file-manifest.json`. Legacy env var triggers a deprecation warning
74
+
75
+ #### Code-Directive Plugin
76
+ - **hooks.json** — expanded from 3 to 6 hook events (added Stop, SessionStart, updated UserPromptSubmit with ticket-linker)
77
+ - **Agent definitions** — architect gains documentation outputs section + api-design skill link; multiple agents updated with refined instructions
78
+ - **skill-suggester.py** — added keyword mappings for 5 new skills (api-design, ast-grep-patterns, dependency-management, documentation-patterns, migration-patterns)
79
+ - **specification-writing skill** — expanded with additional templates and patterns
80
+ - **code-directive plugin.json** — description updated to "17 custom agents, 16 coding skills, agent redirection, syntax validation, and skill auto-suggestion"
81
+
82
+ #### Other
83
+ - **format-on-stop.py** — rewritten with expanded dispatch: 7 formatters covering 31 file extensions (was 3 formatters, 12 extensions)
84
+ - **lint-file.py** — rewritten as multi-language dispatcher: 7 linters across Python, JS/TS/CSS, Shell, Go, Dockerfile, Rust (was Pyright-only for Python)
85
+ - **auto-linter hook timeout** — increased from 30s to 60s (each individual linter subprocess still capped at 10s)
86
+ - **auto-formatter plugin.json** — description updated to reflect all 7 formatters
87
+ - **auto-linter plugin.json** — description updated to reflect all 7 linters
88
+ - **marketplace.json** — descriptions updated for auto-formatter, auto-linter, and code-directive plugins
89
+ - **devcontainer.json** — 5 new features registered in `overrideFeatureInstallOrder` and `features` object; added install order documentation comments
90
+ - **.env.example** — removed `OVERWRITE_CONFIG`, added `SETUP_PROJECTS`, updated descriptions
91
+ - **.gitignore** — updated with additional exclusions
92
+
93
+ ### Removed
94
+
95
+ - **`features/claude-code/`** — entire local feature deleted (Claude Code now installed via `ghcr.io/anthropics/devcontainer-features/claude-code:1`, the official Anthropic feature)
96
+ - **`config/settings.json`**, **`config/keybindings.json`**, **`config/main-system-prompt.md`** — moved to `config/defaults/` subdirectory
97
+ - **`OVERWRITE_CONFIG` env var** — deprecated in favor of `config/file-manifest.json` per-file overwrite modes
98
+
99
+ ### Documentation
100
+
101
+ - **New `docs/` directory** with 5 focused guides: configuration-reference, keybindings, optional-features, plugins, troubleshooting
102
+ - **CLAUDE.md** — rewritten for new config system (file-manifest.json, config/defaults/), added cc-tools/check-setup commands, added version:none section, updated plugin descriptions
103
+ - **README.md** — added new tools (ruff, shfmt, dprint, shellcheck, hadolint, Bun), updated config system docs, added SETUP_PROJECTS and PLUGIN_BLACKLIST env vars, updated ccstatusline description
104
+
105
+ ---
106
+
107
+ ## [v1.7.1] - 2026-02-08
108
+
109
+ ### Added
110
+
111
+ - **Automatic Git & NPM auth on container start** — new `setup-auth.sh` script reads tokens from `.devcontainer/.secrets` (or environment variables) and configures GitHub CLI, git user identity, and NPM registry auth automatically
112
+ - **`.secrets.example` template** — committed template showing required variables (`GH_TOKEN`, `GH_USERNAME`, `GH_EMAIL`, `NPM_TOKEN`)
113
+ - **`.env.example` template** — committed template for environment configuration (`.env` itself remains gitignored)
114
+ - **`SETUP_AUTH` env var** — controls whether auth setup runs on container start (default: `true`)
115
+ - **`AGENT-REDIRECTION.md`** — guide on how the PreToolUse hook system works, how built-in agents are swapped to custom ones, and what else is possible (prompt injection, model overrides, conditional routing, external service chaining)
116
+
117
+ ### Changed
118
+
119
+ - **README split by audience** — root `README.md` is now the npm/GitHub landing page (install, prerequisites, what's included, quick start); `.devcontainer/README.md` is now the usage guide (auth, tools, config, agents, keybindings, gotchas). No duplicated content between the two
120
+ - **Auto-linter moved to Stop hook** — was PostToolUse (ran pyright per-edit, caused agent re-reads); now batch-lints all edited Python files when Claude stops, matching auto-formatter's pattern. Uses its own temp file (`claude-lint-files-{session_id}`) independent of the formatter pipeline
121
+ - **`collect-edited-files.py`** — now writes to both `claude-edited-files-*` (formatter) and `claude-lint-files-*` (linter) temp files, keeping the two Stop hook pipelines independent
122
+ - **`.devcontainer/.gitignore`** — added `.secrets` explicit ignore and negation patterns (`!.env.example`, `!.secrets.example`, `!.gitignore`) to override root `.*` rule for files that should be tracked
123
+ - **`setup.sh` orchestration** — `setup-auth.sh` runs early (after symlink, before config/plugins) so NPM auth is available for plugin installation
124
+ - **`PLUGIN_BLACKLIST`** — cleared (was `"workflow-enhancer,planning-reminder"`)
125
+
126
+ ### Removed
127
+
128
+ - **`workflow-enhancer` plugin** — deleted entirely (was scaffolding only, never active)
129
+ - **`planning-reminder` plugin** — deleted entirely (redundant with Claude Code v2.1+ auto plan mode)
130
+
131
+ ---
132
+
133
+ ## [v1.7.0] - 2026-02-08
134
+
135
+ ### Added
136
+
137
+ - **ccburn feature** — new devcontainer feature for visual token burn rate tracking with shell aliases and statusline wrapper
138
+ - **Session resume widget** — ccstatusline displays copyable `cc --resume {sessionId}` command on line 5
139
+ - **Burn rate widget** — ccstatusline line 6 shows live ccburn compact output with pace indicators (session/weekly/sonnet limits)
140
+ - **17 custom agent definitions** — code-directive plugin now includes specialized agents: architect, bash-exec, claude-guide, debug-logs, dependency-analyst, doc-writer, explorer, generalist, git-archaeologist, migrator, perf-profiler, refactorer, researcher, security-auditor, spec-writer, statusline-config, test-writer
141
+ - **6 new skills** — claude-agent-sdk, git-forensics, performance-profiling, refactoring-patterns, security-checklist, specification-writing
142
+ - **Agent redirect hook** — `redirect-builtin-agents.py` (PreToolUse/Task) transparently swaps built-in agent types (Explore→explorer, Plan→architect, etc.) to enhanced custom agents
143
+ - **Readonly bash guard** — `guard-readonly-bash.py` blocks write operations for read-only agents
144
+ - **Regression test hooks** — `verify-no-regression.py` (PostToolUse for refactorer) and `verify-tests-pass.py` (Stop for test-writer)
145
+ - **REVIEW-RUBRIC.md** — quality standards document for agent/skill development
146
+ - **Keybindings configuration** — new `config/keybindings.json` with schema support
147
+ - **VS Code terminal passthrough** — `Ctrl+P` and `Ctrl+F` pass through to Claude Code via `terminal.integrated.commandsToSkipShell`
148
+ - **claude-agent-sdk skill** — new code-directive skill for Claude Agent SDK TypeScript integration
149
+ - **OVERWRITE_CONFIG documentation** — documented ephemeral settings behavior
150
+ - **Project Manager integration** — `setup-projects.sh` auto-detects projects under `/workspaces/`, watches for changes via inotifywait, maintains `projects.json`
151
+ - **Claude config symlink** — `setup-symlink-claude.sh` symlinks `~/.claude` → `$CLAUDE_CONFIG_DIR` for third-party tool compatibility
152
+ - **Project Manager VS Code extension** — `alefragnani.project-manager` added to devcontainer
153
+
154
+ ### Changed
155
+
156
+ - **ccstatusline layout** — expanded from 3→6 lines (13→16 widgets), reorganized into logical groups (core metrics, tokens, git, session, totals, burn rate)
157
+ - **ccstatusline version** — bumped from 1.0.0 to 1.1.0
158
+ - **Plugin declarations centralized** — all 9 marketplace plugins declared in `enabledPlugins` in `config/settings.json`
159
+ - **setup-plugins.sh cache sync** — re-added plugin install loop to sync cache from source on every container start; added `.env` fallback so `PLUGIN_BLACKLIST` works on standalone invocation
160
+ - **Feature-level config synced** — `features/claude-code/config/settings.json` mirrors main config (model → `claude-opus-4-6`, `MAX_THINKING_TOKENS` → `63999`, `cleanupPeriodDays` → `60`, all env vars)
161
+ - **8 new env vars** — `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`, `CLAUDE_CODE_MAX_RETRIES`, `BASH_MAX_OUTPUT_LENGTH`, `TASK_MAX_OUTPUT_LENGTH`, `CLAUDE_CODE_PLAN_MODE_INTERVIEW_PHASE`, `CLAUDE_CODE_PLAN_V2_AGENT_COUNT`, `CLAUDE_CODE_PLAN_MODE_REQUIRED`, `CLAUDE_CODE_FORCE_GLOBAL_CACHE`
162
+ - **setup-config.sh** — added `chown` for correct ownership; added keybindings.json to copy pipeline
163
+ - **setup-aliases.sh** — added idempotency guard
164
+ - **TMPDIR consistency** — `setup-update-claude.sh` and `ccstatusline/install.sh` use `${TMPDIR:-/tmp}`
165
+ - **installsAfter references** — mcp-qdrant and mcp-reasoner updated from `./features/claude-code` to `ghcr.io/anthropics/devcontainer-features/claude-code:1`
166
+ - **code-directive hooks.json** — added PreToolUse/Task hook for agent redirection
167
+ - **Auto-linter timeout** — pyright reduced from 55s to 10s
168
+ - **Auto-formatter tool paths** — resolved via `which` first
169
+ - **Protected-files-guard regex** — tightened `id_rsa` pattern
170
+ - **Syntax-validator JSONC regex** — handles URLs containing `://`
171
+ - **Skill-suggester keywords** — consolidated claude-agent-sdk phrases; added "compose" to docker
172
+ - **redirect-builtin-agents.py fix** — `updatedInput` now preserves all original tool input fields (Claude Code replaces rather than merges)
173
+ - **System prompt hardened** — added anti-fabrication rule, failure recovery strategy, and silent-violation guard to `execution_discipline` and `rule_precedence`
174
+
175
+ ### Removed
176
+
177
+ - **setup-irie-claude.sh** — deleted (personal script, no longer invoked)
178
+ - **output-style widget** — removed from ccstatusline (low value)
179
+
180
+ ### Documentation
181
+
182
+ - **CLAUDE.md** — added keybindings.json, updated plugins list, fixed model name, documented VS Code conflicts, documented OVERWRITE_CONFIG, added agents/skills sections, added new scripts
183
+ - **README.md** — fixed max output tokens, added keybindings section, added agents/skills, added project manager
184
+ - **features/README.md** — full rewrite listing all features
185
+ - **CHANGELOG.md** — squashed v1.6.0 + v1.6.1 into this entry
186
+
187
+ ---
188
+
3
189
  ## [v1.5.8] - 2026-02-06
4
190
 
5
191
  ### Changed
@@ -10,14 +10,18 @@ CodeForge devcontainer for AI-assisted development with Claude Code.
10
10
  │ ├── devcontainer.json # Main container definition
11
11
  │ ├── .env # Environment variables
12
12
  │ ├── config/ # Default configurations
13
- │ │ ├── settings.json # Claude Code settings
14
- │ │ └── main-system-prompt.md
13
+ │ │ ├── file-manifest.json # Declarative file-copy manifest
14
+ │ │ └── defaults/ # Files copied per manifest
15
+ │ │ ├── settings.json # Claude Code settings
16
+ │ │ ├── keybindings.json # Claude Code keybindings
17
+ │ │ └── main-system-prompt.md
15
18
  │ ├── features/ # Custom devcontainer features
16
19
  │ ├── plugins/ # Local plugin marketplace
17
20
  │ │ └── devs-marketplace/
18
21
  │ └── scripts/ # Setup scripts
19
22
  ├── .claude/ # Runtime Claude config (created on first run)
20
- │ ├── settings.json # Active settings
23
+ │ ├── settings.json # Active settings (managed by file-manifest.json)
24
+ │ ├── keybindings.json # Active keybindings
21
25
  │ └── system-prompt.md # Active system prompt
22
26
  └── .gh/ # GitHub CLI config (persists across rebuilds)
23
27
  └── hosts.yml # Authenticated hosts
@@ -29,8 +33,12 @@ CodeForge devcontainer for AI-assisted development with Claude Code.
29
33
  |------|---------|
30
34
  | `devcontainer.json` | Container definition: base image, features, mounts, environment |
31
35
  | `.env` | Environment variables controlling setup behavior |
32
- | `config/settings.json` | Claude Code defaults: model, tokens, permissions, plugins |
33
- | `config/main-system-prompt.md` | Default system prompt defining assistant behavior |
36
+ | `config/file-manifest.json` | Declarative manifest controlling which config files are copied and how |
37
+ | `config/defaults/settings.json` | Claude Code defaults: model, tokens, permissions, plugins |
38
+ | `config/defaults/keybindings.json` | Claude Code keybindings (empty by default — customizable) |
39
+ | `config/defaults/main-system-prompt.md` | Default system prompt defining assistant behavior |
40
+
41
+ > **Note**: Config file copying is controlled by `config/file-manifest.json`. Each entry specifies `overwrite`: `"if-changed"` (default, sha256-based), `"always"`, or `"never"`. Persistent changes go in `.devcontainer/config/defaults/settings.json`.
34
42
 
35
43
  ## Commands
36
44
 
@@ -43,6 +51,8 @@ CodeForge devcontainer for AI-assisted development with Claude Code.
43
51
  | `gh` | GitHub CLI for repo operations |
44
52
  | `uv` | Fast Python package manager |
45
53
  | `ast-grep` | Structural code search |
54
+ | `cc-tools` | List all installed tools with version info |
55
+ | `check-setup` | Verify CodeForge setup health |
46
56
 
47
57
  ## Feature Development
48
58
 
@@ -63,6 +73,39 @@ To test a feature locally, reference it in `devcontainer.json`:
63
73
  }
64
74
  ```
65
75
 
76
+ > **Note**: Claude Code is installed via `ghcr.io/anthropics/devcontainer-features/claude-code:1` (Anthropic's official feature).
77
+
78
+ ### Disabling Features with `version: "none"`
79
+
80
+ Every local feature supports `"version": "none"` to skip installation entirely. This is useful for trimming build time or disabling tools you don't need without removing them from `devcontainer.json`.
81
+
82
+ ```json
83
+ "features": {
84
+ "./features/ruff": { "version": "none" },
85
+ "./features/biome": {},
86
+ "./features/hadolint": { "version": "none" }
87
+ }
88
+ ```
89
+
90
+ When `version` is set to `"none"`, the feature's `install.sh` exits immediately with a skip message. The feature entry stays in `devcontainer.json` so re-enabling is a one-word change.
91
+
92
+ **All local features support this pattern:**
93
+ ast-grep, biome, ccstatusline, claude-monitor, dprint, hadolint, lsp-servers, mcp-qdrant, mcp-reasoner, notify-hook, ruff, shfmt, shellcheck, splitrail, tmux
94
+
95
+ **External features with `version: "none"` support:**
96
+ `ghcr.io/devcontainers/features/node`, `ghcr.io/devcontainers/features/github-cli`, `ghcr.io/devcontainers/features/docker-outside-of-docker`, `ghcr.io/devcontainers/features/go` (all official Microsoft features)
97
+
98
+ **External features without `version: "none"` support:**
99
+ `ghcr.io/devcontainers-extra/features/uv`, `ghcr.io/anthropics/devcontainer-features/claude-code`, `ghcr.io/nickmccurdy/bun`
100
+
101
+ > **Convention**: Every new local feature must include a `version` option (default `"latest"`) in its `devcontainer-feature.json` and a skip guard at the top of `install.sh`:
102
+ > ```bash
103
+ > if [ "${VERSION}" = "none" ]; then
104
+ > echo "[feature-name] Skipping installation (version=none)"
105
+ > exit 0
106
+ > fi
107
+ > ```
108
+
66
109
  ## Setup Scripts
67
110
 
68
111
  Scripts in `./scripts/` run via `postStartCommand`:
@@ -70,17 +113,29 @@ Scripts in `./scripts/` run via `postStartCommand`:
70
113
  | Script | Purpose |
71
114
  |--------|---------|
72
115
  | `setup.sh` | Main orchestrator |
73
- | `setup-config.sh` | Copies config files to `/workspaces/.claude/` |
74
- | `setup-aliases.sh` | Creates `cc` shell function |
75
- | `setup-lsp.sh` | Installs LSP plugins from local marketplace |
76
- | `setup-plugins.sh` | Installs official Anthropic plugins |
116
+ | `setup-config.sh` | Copies config files per `config/file-manifest.json` to destinations |
117
+ | `setup-aliases.sh` | Creates `cc`/`claude`/`ccraw` shell aliases |
118
+ | `setup-plugins.sh` | Registers local marketplace + installs official Anthropic plugins |
119
+ | `setup-update-claude.sh` | Background auto-update of Claude Code binary |
120
+ | `setup-projects.sh` | Auto-detects projects for VS Code Project Manager |
121
+ | `setup-symlink-claude.sh` | Symlinks ~/.claude for third-party tool compatibility |
77
122
 
78
123
  ## Installed Plugins
79
124
 
80
- Automatically installed on container start:
125
+ Plugins are declared in `config/defaults/settings.json` under `enabledPlugins` and auto-activated on container start:
126
+
127
+ ### Official (Anthropic)
128
+ - `frontend-design@claude-code-plugins` — UI/frontend design skill
81
129
 
82
- - `frontend-design@claude-plugins-official` (skill)
83
- - `codeforge-lsp@devs-marketplace` (LSP for Python + TypeScript/JavaScript)
130
+ ### Local Marketplace (devs-marketplace)
131
+ - `codeforge-lsp@devs-marketplace` LSP for Python + TypeScript/JavaScript
132
+ - `ticket-workflow@devs-marketplace` — EARS-based ticket workflow with GitHub integration
133
+ - `notify-hook@devs-marketplace` — Desktop notifications on completion
134
+ - `dangerous-command-blocker@devs-marketplace` — Blocks destructive bash commands
135
+ - `protected-files-guard@devs-marketplace` — Blocks edits to secrets/lock files
136
+ - `auto-formatter@devs-marketplace` — Batch-formats edited files at Stop (Ruff/Black for Python, gofmt for Go, Biome for JS/TS/CSS/JSON/GraphQL/HTML, shfmt for Shell, dprint for Markdown/YAML/TOML/Dockerfile, rustfmt for Rust)
137
+ - `auto-linter@devs-marketplace` — Auto-lints edited files at Stop (Pyright + Ruff for Python, Biome for JS/TS/CSS/GraphQL, ShellCheck for Shell, go vet for Go, hadolint for Dockerfile, clippy for Rust)
138
+ - `code-directive@devs-marketplace` — 17 custom agents, 16 skills, syntax validation, skill suggestions, agent redirect hook
84
139
 
85
140
  ### Local Marketplace
86
141
 
@@ -91,12 +146,41 @@ plugins/devs-marketplace/
91
146
  ├── .claude-plugin/
92
147
  │ └── marketplace.json # Marketplace manifest
93
148
  └── plugins/
94
- └── codeforge-lsp/ # Combined LSP plugin
95
- └── .claude-plugin/
96
- └── plugin.json
149
+ ├── codeforge-lsp/ # Combined LSP plugin
150
+ ├── ticket-workflow/ # EARS ticket workflow
151
+ ├── auto-formatter/ # Batch formatter (Stop hook)
152
+ ├── auto-linter/ # Pyright linter
153
+ ├── code-directive/ # Agents, skills + hooks
154
+ └── ...
97
155
  ```
98
156
 
99
- This gives full control over LSP configuration without external dependencies.
157
+ ## Agents & Skills
158
+
159
+ The `code-directive` plugin includes 17 custom agent definitions and 16 coding reference skills.
160
+
161
+ **Agents** (`plugins/devs-marketplace/plugins/code-directive/agents/`):
162
+ architect, bash-exec, claude-guide, debug-logs, dependency-analyst, doc-writer, explorer, generalist, git-archaeologist, migrator, perf-profiler, refactorer, researcher, security-auditor, spec-writer, statusline-config, test-writer
163
+
164
+ The `redirect-builtin-agents.py` hook (PreToolUse/Task) transparently swaps built-in agent types to these custom agents (e.g., Explore→explorer, Plan→architect).
165
+
166
+ **Skills** (`plugins/devs-marketplace/plugins/code-directive/skills/`):
167
+ claude-agent-sdk, claude-code-headless, debugging, docker, docker-py, fastapi, git-forensics, performance-profiling, pydantic-ai, refactoring-patterns, security-checklist, skill-building, specification-writing, sqlite, svelte5, testing
168
+
169
+ ## VS Code Keybinding Conflicts
170
+
171
+ Claude Code runs inside VS Code's integrated terminal. VS Code intercepts some shortcuts before they reach the terminal:
172
+
173
+ | Shortcut | VS Code Action | Claude Code Action |
174
+ |----------|---------------|-------------------|
175
+ | `Ctrl+G` | Go to Line | `chat:externalEditor` |
176
+ | `Ctrl+S` | Save File | `chat:stash` |
177
+ | `Ctrl+T` | Open Symbol | `app:toggleTodos` |
178
+ | `Ctrl+O` | Open File | `app:toggleTranscript` |
179
+ | `Ctrl+B` | Toggle Sidebar | `task:background` |
180
+ | `Ctrl+P` | Quick Open | `chat:modelPicker` |
181
+ | `Ctrl+R` | Open Recent | `history:search` |
182
+
183
+ `Ctrl+P` and `Ctrl+F` are configured to pass through to the terminal via `terminal.integrated.commandsToSkipShell` in `devcontainer.json`. For other conflicts, use Meta (Alt) variants or customize via `config/defaults/keybindings.json`.
100
184
 
101
185
  ## Environment Variables
102
186
 
@@ -107,11 +191,14 @@ Key environment variables set in the container:
107
191
  | `WORKSPACE_ROOT` | `/workspaces` |
108
192
  | `CLAUDE_CONFIG_DIR` | `/workspaces/.claude` |
109
193
  | `GH_CONFIG_DIR` | `/workspaces/.gh` |
110
- | `ANTHROPIC_MODEL` | `claude-opus-4-5-20251101` |
194
+ | `ANTHROPIC_MODEL` | `claude-opus-4-6` |
195
+ | `TMPDIR` | `/workspaces/.tmp` |
111
196
 
112
197
  ## Modifying Behavior
113
198
 
114
- 1. **Change default model**: Edit `config/settings.json`, update `"model"` field
115
- 2. **Change system prompt**: Edit `config/main-system-prompt.md`
116
- 3. **Add features**: Add to `"features"` in `devcontainer.json`
117
- 4. **Disable auto-setup**: Set variables to `false` in `.env`
199
+ 1. **Change default model**: Edit `config/defaults/settings.json`, update `"model"` field
200
+ 2. **Change system prompt**: Edit `config/defaults/main-system-prompt.md`
201
+ 3. **Change keybindings**: Edit `config/defaults/keybindings.json`
202
+ 4. **Add a custom config file**: Add an entry to `config/file-manifest.json` with `src`, `dest`, and optional `overwrite`/`destFilename`
203
+ 5. **Add features**: Add to `"features"` in `devcontainer.json`
204
+ 6. **Disable auto-setup**: Set variables to `false` in `.env`