codeforge-dev 1.11.0 → 1.13.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 (194) hide show
  1. package/.devcontainer/.env +7 -1
  2. package/.devcontainer/.gitignore +1 -0
  3. package/.devcontainer/CHANGELOG.md +106 -0
  4. package/.devcontainer/CLAUDE.md +93 -15
  5. package/.devcontainer/README.md +44 -10
  6. package/.devcontainer/config/defaults/main-system-prompt.md +28 -0
  7. package/.devcontainer/config/defaults/rules/workspace-scope.md +13 -4
  8. package/.devcontainer/config/defaults/settings.json +5 -3
  9. package/.devcontainer/config/defaults/writing-system-prompt.md +46 -4
  10. package/.devcontainer/connect-external-terminal.ps1 +1 -1
  11. package/.devcontainer/devcontainer.json +41 -11
  12. package/.devcontainer/docs/configuration-reference.md +3 -0
  13. package/.devcontainer/docs/plugins.md +9 -2
  14. package/.devcontainer/docs/troubleshooting.md +2 -2
  15. package/.devcontainer/features/README.md +8 -9
  16. package/.devcontainer/features/agent-browser/devcontainer-feature.json +21 -21
  17. package/.devcontainer/features/agent-browser/install.sh +0 -7
  18. package/.devcontainer/features/ast-grep/devcontainer-feature.json +22 -22
  19. package/.devcontainer/features/biome/devcontainer-feature.json +12 -14
  20. package/.devcontainer/features/ccms/install.sh +30 -13
  21. package/.devcontainer/features/claude-session-dashboard/README.md +40 -0
  22. package/.devcontainer/features/claude-session-dashboard/devcontainer-feature.json +35 -0
  23. package/.devcontainer/features/claude-session-dashboard/install.sh +172 -0
  24. package/.devcontainer/features/lsp-servers/devcontainer-feature.json +43 -43
  25. package/.devcontainer/features/mcp-qdrant/poststart-hook.sh +2 -1
  26. package/.devcontainer/features/ruff/devcontainer-feature.json +17 -19
  27. package/.devcontainer/features/tmux/install.sh +2 -2
  28. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +24 -3
  29. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/.claude-plugin/plugin.json +8 -0
  30. package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/AGENT-REDIRECTION.md +7 -12
  31. package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/REVIEW-RUBRIC.md +1 -1
  32. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/hooks/hooks.json +29 -0
  33. package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/redirect-builtin-agents.py +17 -6
  34. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/README.md +81 -0
  35. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/README.md +92 -0
  36. package/.devcontainer/plugins/devs-marketplace/plugins/codeforge-lsp/README.md +41 -0
  37. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/README.md +72 -0
  38. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py +73 -47
  39. package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/README.md +42 -0
  40. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/README.md +86 -0
  41. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/hooks/hooks.json +25 -15
  42. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected-bash.py +122 -0
  43. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +3 -3
  44. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/.claude-plugin/plugin.json +8 -0
  45. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/hooks/hooks.json +34 -0
  46. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/.claude-plugin/plugin.json +8 -0
  47. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/hooks/hooks.json +29 -0
  48. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/team/SKILL.md +205 -0
  49. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/.claude-plugin/plugin.json +8 -0
  50. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/hooks/hooks.json +17 -0
  51. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-init/references/roadmap-template.md +33 -0
  52. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/README.md +96 -0
  53. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/hooks/hooks.json +17 -0
  54. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/README.md +94 -0
  55. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py +1 -3
  56. package/.devcontainer/scripts/check-setup.sh +1 -1
  57. package/.devcontainer/scripts/setup-projects.sh +24 -17
  58. package/.devcontainer/scripts/setup.sh +48 -5
  59. package/README.md +17 -8
  60. package/package.json +1 -2
  61. package/.devcontainer/features/mcp-reasoner/README.md +0 -177
  62. package/.devcontainer/features/mcp-reasoner/devcontainer-feature.json +0 -25
  63. package/.devcontainer/features/mcp-reasoner/install.sh +0 -184
  64. package/.devcontainer/features/mcp-reasoner/poststart-hook.sh +0 -67
  65. package/.devcontainer/features/splitrail/README.md +0 -140
  66. package/.devcontainer/features/splitrail/devcontainer-feature.json +0 -39
  67. package/.devcontainer/features/splitrail/install.sh +0 -136
  68. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/plugin.json +0 -8
  69. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +0 -112
  70. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/advisory-test-runner.cpython-314.pyc +0 -0
  71. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/collect-edited-files.cpython-314.pyc +0 -0
  72. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/commit-reminder.cpython-314.pyc +0 -0
  73. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/git-state-injector.cpython-314.pyc +0 -0
  74. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/guard-readonly-bash.cpython-314.pyc +0 -0
  75. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/redirect-builtin-agents.cpython-314.pyc +0 -0
  76. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/skill-suggester.cpython-314.pyc +0 -0
  77. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/syntax-validator.cpython-314.pyc +0 -0
  78. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/ticket-linker.cpython-314.pyc +0 -0
  79. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/todo-harvester.cpython-314.pyc +0 -0
  80. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-no-regression.cpython-314.pyc +0 -0
  81. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-tests-pass.cpython-314.pyc +0 -0
  82. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +0 -46
  83. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/syntax-validator.py +0 -146
  84. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/.claude-plugin/commands/debug.md +0 -0
  85. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/architect.md +0 -0
  86. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/bash-exec.md +0 -0
  87. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/claude-guide.md +0 -0
  88. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/debug-logs.md +0 -0
  89. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/dependency-analyst.md +0 -0
  90. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/doc-writer.md +0 -0
  91. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/explorer.md +0 -0
  92. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/generalist.md +0 -0
  93. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/git-archaeologist.md +0 -0
  94. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/migrator.md +0 -0
  95. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/perf-profiler.md +0 -0
  96. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/refactorer.md +0 -0
  97. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/researcher.md +0 -0
  98. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/security-auditor.md +0 -0
  99. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/spec-writer.md +0 -0
  100. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/statusline-config.md +0 -0
  101. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/test-writer.md +0 -0
  102. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/guard-readonly-bash.py +0 -0
  103. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/inject-cwd.py +0 -0
  104. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/verify-no-regression.py +0 -0
  105. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/verify-tests-pass.py +0 -0
  106. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → auto-code-quality}/scripts/advisory-test-runner.py +0 -0
  107. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → session-context}/scripts/commit-reminder.py +0 -0
  108. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → session-context}/scripts/git-state-injector.py +0 -0
  109. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → session-context}/scripts/todo-harvester.py +0 -0
  110. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/scripts/skill-suggester.py +0 -0
  111. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/api-design/SKILL.md +0 -0
  112. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/api-design/references/error-handling.md +0 -0
  113. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/api-design/references/rest-conventions.md +0 -0
  114. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/ast-grep-patterns/SKILL.md +0 -0
  115. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/ast-grep-patterns/references/language-patterns.md +0 -0
  116. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-agent-sdk/SKILL.md +0 -0
  117. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-agent-sdk/references/sdk-typescript-reference.md +0 -0
  118. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-code-headless/SKILL.md +0 -0
  119. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-code-headless/references/cli-flags-and-output.md +0 -0
  120. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-code-headless/references/sdk-and-mcp.md +0 -0
  121. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/debugging/SKILL.md +0 -0
  122. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/debugging/references/error-patterns.md +0 -0
  123. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/debugging/references/log-locations.md +0 -0
  124. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/dependency-management/SKILL.md +0 -0
  125. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/dependency-management/references/ecosystem-commands.md +0 -0
  126. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/dependency-management/references/license-compliance.md +0 -0
  127. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker/SKILL.md +0 -0
  128. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker/references/compose-services.md +0 -0
  129. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker/references/dockerfile-patterns.md +0 -0
  130. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker-py/SKILL.md +0 -0
  131. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker-py/references/container-lifecycle.md +0 -0
  132. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker-py/references/resources-and-security.md +0 -0
  133. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/documentation-patterns/SKILL.md +0 -0
  134. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/documentation-patterns/references/api-doc-templates.md +0 -0
  135. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/documentation-patterns/references/docstring-formats.md +0 -0
  136. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/SKILL.md +0 -0
  137. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/middleware-and-lifespan.md +0 -0
  138. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/pydantic-models.md +0 -0
  139. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/routing-and-dependencies.md +0 -0
  140. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/sse-and-streaming.md +0 -0
  141. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/git-forensics/SKILL.md +0 -0
  142. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/git-forensics/references/advanced-commands.md +0 -0
  143. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/git-forensics/references/investigation-playbooks.md +0 -0
  144. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/migration-patterns/SKILL.md +0 -0
  145. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/migration-patterns/references/javascript-migrations.md +0 -0
  146. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/migration-patterns/references/python-migrations.md +0 -0
  147. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/performance-profiling/SKILL.md +0 -0
  148. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/performance-profiling/references/interpreting-results.md +0 -0
  149. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/performance-profiling/references/tool-commands.md +0 -0
  150. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/pydantic-ai/SKILL.md +0 -0
  151. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/pydantic-ai/references/agents-and-tools.md +0 -0
  152. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/pydantic-ai/references/models-and-streaming.md +0 -0
  153. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/refactoring-patterns/SKILL.md +0 -0
  154. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/refactoring-patterns/references/safe-transformations.md +0 -0
  155. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/refactoring-patterns/references/smell-catalog.md +0 -0
  156. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/security-checklist/SKILL.md +0 -0
  157. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/security-checklist/references/owasp-patterns.md +0 -0
  158. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/security-checklist/references/secrets-patterns.md +0 -0
  159. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/SKILL.md +0 -0
  160. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/references/cross-vendor-principles.md +0 -0
  161. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/references/patterns-and-antipatterns.md +0 -0
  162. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/references/skill-authoring-patterns.md +0 -0
  163. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/SKILL.md +0 -0
  164. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/advanced-queries.md +0 -0
  165. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/javascript-patterns.md +0 -0
  166. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/python-patterns.md +0 -0
  167. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/schema-and-pragmas.md +0 -0
  168. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/SKILL.md +0 -0
  169. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/ai-sdk-svelte.md +0 -0
  170. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/component-patterns.md +0 -0
  171. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/layercake.md +0 -0
  172. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/migration-guide.md +0 -0
  173. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/runes-and-reactivity.md +0 -0
  174. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/spa-and-routing.md +0 -0
  175. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/svelte-dnd-action.md +0 -0
  176. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/testing/SKILL.md +0 -0
  177. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/testing/references/fastapi-testing.md +0 -0
  178. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/testing/references/svelte-testing.md +0 -0
  179. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/scripts/spec-reminder.py +0 -0
  180. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-build/SKILL.md +0 -0
  181. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-build/references/review-checklist.md +0 -0
  182. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-check/SKILL.md +0 -0
  183. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-init/SKILL.md +0 -0
  184. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-init/references/backlog-template.md +0 -0
  185. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-init/references/milestones-template.md +0 -0
  186. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-new/SKILL.md +0 -0
  187. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-new/references/template.md +0 -0
  188. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-refine/SKILL.md +0 -0
  189. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-review/SKILL.md +0 -0
  190. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-update/SKILL.md +0 -0
  191. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/specification-writing/SKILL.md +0 -0
  192. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/specification-writing/references/criteria-patterns.md +0 -0
  193. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/specification-writing/references/ears-templates.md +0 -0
  194. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → ticket-workflow}/scripts/ticket-linker.py +0 -0
@@ -1,4 +1,4 @@
1
- # ClaudePod Environment Configuration
1
+ # CodeForge Environment Configuration
2
2
 
3
3
  # Paths
4
4
  CLAUDE_CONFIG_DIR=/workspaces/.claude
@@ -23,5 +23,11 @@ SETUP_UPDATE_CLAUDE=true
23
23
  # Setup: configure VS Code Shift+Enter keybinding for Claude Code terminal
24
24
  SETUP_TERMINAL=true
25
25
 
26
+ # Setup: auto-detect and register projects for VS Code Project Manager
27
+ SETUP_PROJECTS=true
28
+
29
+ # Setup: run post-start hooks from /usr/local/devcontainer-poststart.d/
30
+ SETUP_POSTSTART=true
31
+
26
32
  # Plugin blacklist (comma-separated plugin names to skip during auto-install)
27
33
  PLUGIN_BLACKLIST=""
@@ -1,6 +1,7 @@
1
1
  # Explicitly ignored (safety net on top of root .* rule)
2
2
  .review
3
3
  .secrets
4
+ .build-cache/
4
5
 
5
6
  # Un-ignore dotfiles that should be tracked (overrides root .* pattern)
6
7
  !.env.example
@@ -1,5 +1,111 @@
1
1
  # CodeForge Devcontainer Changelog
2
2
 
3
+ ## [v1.13.0] - 2026-02-21
4
+
5
+ Claude Code is an idiot sandwich and ignored my instructions and workspace scope because it's a god damned idiot.
6
+
7
+ ### Fixed
8
+
9
+ - Feature version pins: node `1.6`→`1.7.1`, github-cli `1.0`→`1.1.0`, docker-outside-of-docker `1.7`→`1.6`, rust `1.4`→`1.5.0`, claude-code `1.1`→`1.0.5`
10
+ - setup-projects.sh: suppress background inotifywait output
11
+ - agent-system: add missing `verify-tests-pass.py` and `verify-no-regression.py` (referenced by agent defs)
12
+
13
+ ### Added
14
+
15
+ #### Plugin Architecture: Focused Plugins
16
+ - **`agent-system` plugin** — 17 custom agents with built-in agent redirection, CWD injection, and read-only bash enforcement
17
+ - **`skill-engine` plugin** — 21 coding skills with auto-suggestion hook
18
+ - **`spec-workflow` plugin** — 8 spec lifecycle skills with spec-reminder hook
19
+ - **`session-context` plugin** — session boundary hooks (git state injection, TODO harvesting, commit reminders)
20
+
21
+ #### Other
22
+ - **`ticket-workflow` hooks** — auto-links GitHub issue/PR references in user prompts via `ticket-linker.py`
23
+ - **`auto-code-quality` advisory test runner** — runs affected tests at Stop via `advisory-test-runner.py`
24
+ - **`/team` skill** — agent team creation and management with specialist catalog (in `skill-engine`)
25
+ - **`claude-session-dashboard` feature** — local analytics dashboard for Claude Code sessions (token usage, tool calls, cost estimates, activity heatmaps). Installed globally via npm with `claude-dashboard` command. Settings persist across rebuilds via symlink to `/workspaces/.claude-dashboard/`
26
+
27
+ ### Changed
28
+
29
+ - Plugin architecture: `code-directive` monolith replaced by focused plugins (`agent-system`, `skill-engine`, `spec-workflow`, `session-context`)
30
+ - `auto-code-quality` now consolidates `auto-formatter` + `auto-linter` (disabled separately, `auto-code-quality` is the superset)
31
+ - **`workspace-scope.md` rule hardened** — strict enforcement with no exceptions; all file operations must target paths within the current project directory
32
+
33
+ ### Removed
34
+
35
+ - `code-directive` plugin (replaced by `agent-system`, `skill-engine`, `spec-workflow`, `session-context`)
36
+ - `auto-formatter` and `auto-linter` disabled in settings (consolidated into `auto-code-quality`)
37
+
38
+ ---
39
+
40
+ ## [v1.12.0] - 2026-02-18
41
+
42
+ ### Added
43
+
44
+ #### Plugin README Documentation
45
+ - **9 new README files** for all marketplace plugins: auto-formatter, auto-linter, code-directive, codeforge-lsp, dangerous-command-blocker, notify-hook, protected-files-guard, ticket-workflow, workspace-scope-guard. Each documents purpose, hook lifecycle, protected patterns, and plugin structure
46
+
47
+ #### Protected Files Guard: Bash Hook
48
+ - **`guard-protected-bash.py`** — new PreToolUse/Bash hook blocking bash commands that write to protected file paths (companion to existing Edit/Write guard). Covers `>`, `>>`, `tee`, `cp`, `mv`, `sed -i` targeting `.env`, lock files, `.git`, certificates, and credentials
49
+
50
+ #### Devcontainer Secrets Declaration
51
+ - **`secrets` block** in devcontainer.json declaring `GH_TOKEN`, `NPM_TOKEN`, `GH_USERNAME`, `GH_EMAIL` with documentation URLs for VS Code Codespaces/devcontainer secret management
52
+
53
+ #### Post-Start Hook System
54
+ - **`run_poststart_hooks()`** in setup.sh — runs executable `.sh` scripts from `/usr/local/devcontainer-poststart.d/`; controlled by `SETUP_POSTSTART` env flag (default: true)
55
+
56
+ #### Git Worktree Support
57
+ - **System prompt `<git_worktrees>` section** — layout convention, creation commands, project detection, and safety rules
58
+ - **CLAUDE.md documentation** — full worktree section with layout, creation, detection, and compatibility details
59
+ - **setup-projects.sh** — `.worktrees/` explicit scanning at depth 3, `.git` file detection via `gitdir:` check, `"worktree"` tag in Project Manager
60
+ - **protected-files-guard** — `.git` regex updated from `\.git/` to `\.git(/|$)` to cover worktree `.git` pointer files
61
+
62
+ #### Other
63
+ - **`CLAUDECODE=null` env var** — unsets the detection flag in `remoteEnv` to allow nested Claude Code sessions (claude-in-claude)
64
+ - **Go runtime option** — commented-out `ghcr.io/devcontainers/features/go:1` entry in devcontainer.json for easy opt-in
65
+
66
+ ### Changed
67
+
68
+ #### Feature Version Pinning
69
+ - All local features pinned from `"latest"` to explicit versions: agent-browser `0.11.1`, ast-grep `0.40.5`, biome `2.4.2`, ruff `0.15.1`, pyright `1.1.408`, typescript-language-server `5.1.3`, TypeScript `5.9.3`
70
+ - External features pinned to minor versions: node `1.6`, github-cli `1.0`, docker-outside-of-docker `1.7`, uv `1.0`, rust `1.4`, claude-code `1.1`
71
+
72
+ #### Default Shell: bash → zsh
73
+ - VS Code terminal default profile changed from bash to zsh
74
+ - Explicit `zsh` profile added to terminal profile list
75
+ - Claude Teams tmux profile shell changed from bash to zsh
76
+
77
+ #### Security Hardening
78
+ - **dangerous-command-blocker** — 7 new blocked patterns: Docker container escape (`--privileged`, host root mount), destructive Docker ops (`stop/rm/kill/rmi`), bare force push (no branch specified), `find -exec rm`, `find -delete`, `git clean -f`, `rm -rf ../`. JSON parse failures now fail closed (exit 2 instead of 0)
79
+ - **protected-files-guard** — JSON parse failures fail closed (exit 2 instead of 0)
80
+
81
+ #### Build & Setup
82
+ - **ccms build cache** — install.sh checks `.build-cache/bin/ccms` before cargo building; caches binary after first build for faster rebuilds; pinned to commit `f90d259a4476`
83
+ - **setup.sh** — `setup-update-claude.sh` now runs in background (non-blocking container start); script failure output displayed for diagnostics; new `background` status indicator in summary
84
+ - **inotify-tools moved to build time** — tmux feature installs inotify-tools via apt at build; setup-projects.sh no longer attempts runtime apt-get install
85
+ - **Container memory** — recommended from 4GB/8GB to 6GB/12GB in troubleshooting docs
86
+
87
+ #### Writing System Prompt
88
+ - New **Emotional Architecture** section — cognitive-emotional loop, controlled emotion principle, autism framing for POV characters
89
+ - Expanded metaphor guidance — secondary sources beyond primary domain, "would he think this?" test
90
+ - Refined show-don't-tell rules — naming emotion permitted when it adds weight, brief internal processing after major events required
91
+ - Character profile additions — emotional architecture and trigger fields
92
+
93
+ #### Other
94
+ - **connect-external-terminal.ps1** — tmux session directory respects `WORKSPACE_ROOT` env var with fallback
95
+ - **setup-projects.sh** — inotifywait exclude pattern narrowed from `\.git/` to `\.git` for worktree compatibility
96
+ - **README.md** — 5 new badges (changelog, last commit, npm downloads, Node.js, issues), updated tool/feature/skill counts, added Rust/Bun/ccw, changelog section
97
+ - **CLAUDE.md** — expanded ccw description, fixed Bun registry reference, documented setup-auth.sh/check-setup.sh, added CLAUDECODE/env flags/experimental vars/git worktrees/rules system sections, skill count 17→28
98
+ - **Documentation** — `SETUP_TERMINAL`/`SETUP_POSTSTART` in configuration reference, `CLAUDECODE=null` env var, workspace-scope-guard in plugins.md
99
+ - **Agent definitions** — minor path/prompt fixes across 8 agents (claude-guide, debug-logs, dependency-analyst, explorer, generalist, git-archaeologist, researcher, security-auditor)
100
+ - **.gitignore** — added `.build-cache/` exclusion
101
+
102
+ ### Removed
103
+
104
+ - **mcp-reasoner feature** — entire feature directory deleted (README, devcontainer-feature.json, install.sh, poststart-hook.sh)
105
+ - **splitrail feature** — entire feature directory deleted (README, devcontainer-feature.json, install.sh)
106
+
107
+ ---
108
+
3
109
  ## [v1.11.0] - 2026-02-17
4
110
 
5
111
  ### Added
@@ -49,7 +49,7 @@ CodeForge devcontainer for AI-assisted development with Claude Code.
49
49
  | `claude` | Run Claude Code with auto-configuration (prefers native binary at `~/.local/bin/claude`) |
50
50
  | `cc` | Shorthand for `claude` with config |
51
51
  | `ccraw` | Vanilla Claude Code without any config (bypasses function override) |
52
- | `ccw` | Shorthand for `claude` with writing system prompt |
52
+ | `ccw` | Claude Code with the writing system prompt — uses `writing-system-prompt.md` instead of `main-system-prompt.md`, optimized for creative and technical writing tasks |
53
53
  | `ccusage` | Analyze token usage history |
54
54
  | `ccburn` | Real-time token burn rate visualization |
55
55
  | `agent-browser` | Headless Chromium for browser automation (Playwright-based) |
@@ -59,6 +59,7 @@ CodeForge devcontainer for AI-assisted development with Claude Code.
59
59
  | `ccms` | Search Claude Code session history (project-scoped) |
60
60
  | `cc-tools` | List all installed tools with version info |
61
61
  | `check-setup` | Verify CodeForge setup health |
62
+ | `claude-dashboard` | Local session analytics dashboard (web UI on port 3000) |
62
63
 
63
64
  ## Feature Development
64
65
 
@@ -107,13 +108,13 @@ When `version` is set to `"none"`, the feature's `install.sh` exits immediately
107
108
  The auto-formatter and auto-linter plugins gracefully skip missing tools at runtime.
108
109
 
109
110
  **All local features support this pattern:**
110
- ast-grep, biome, ccms, ccstatusline, claude-monitor, dprint, hadolint, lsp-servers, mcp-qdrant, mcp-reasoner, notify-hook, ruff, shfmt, shellcheck, splitrail, tmux
111
+ ast-grep, biome, ccms, ccstatusline, claude-monitor, claude-session-dashboard, dprint, hadolint, lsp-servers, mcp-qdrant, mcp-reasoner, notify-hook, ruff, shfmt, shellcheck, splitrail, tmux
111
112
 
112
113
  **External features with `version: "none"` support:**
113
114
  `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)
114
115
 
115
116
  **External features without `version: "none"` support:**
116
- `ghcr.io/devcontainers-extra/features/uv`, `ghcr.io/anthropics/devcontainer-features/claude-code`, `ghcr.io/nickmccurdy/bun`
117
+ `ghcr.io/devcontainers-extra/features/uv`, `ghcr.io/anthropics/devcontainer-features/claude-code`, `ghcr.io/rails/devcontainer/features/bun`
117
118
 
118
119
  **External features with `version: "none"` support (Rust):**
119
120
  `ghcr.io/devcontainers/features/rust` (official Microsoft feature)
@@ -139,6 +140,8 @@ Scripts in `./scripts/` run via `postStartCommand`:
139
140
  | `setup-update-claude.sh` | Installs native Claude Code binary on first run; background auto-updates on subsequent starts |
140
141
  | `setup-terminal.sh` | Configures VS Code Shift+Enter keybinding for Claude Code multi-line input |
141
142
  | `setup-projects.sh` | Auto-detects projects for VS Code Project Manager |
143
+ | `setup-auth.sh` | Configures Git and NPM auth from `.secrets` file or environment variables |
144
+ | `check-setup.sh` | Verifies CodeForge setup health (binary paths, config files, features) |
142
145
  | `setup-symlink-claude.sh` | Symlinks ~/.claude for third-party tool compatibility |
143
146
 
144
147
  ### External Terminal
@@ -148,6 +151,8 @@ Scripts in `./scripts/` run via `postStartCommand`:
148
151
  .devcontainer/connect-external-terminal.sh
149
152
  ```
150
153
 
154
+ On Windows, use `connect-external-terminal.ps1` (PowerShell equivalent).
155
+
151
156
  ## Installed Plugins
152
157
 
153
158
  Plugins are declared in `config/defaults/settings.json` under `enabledPlugins` and auto-activated on container start:
@@ -157,13 +162,15 @@ Plugins are declared in `config/defaults/settings.json` under `enabledPlugins` a
157
162
 
158
163
  ### Local Marketplace (devs-marketplace)
159
164
  - `codeforge-lsp@devs-marketplace` — LSP for Python + TypeScript/JavaScript
160
- - `ticket-workflow@devs-marketplace` — EARS-based ticket workflow with GitHub integration
165
+ - `ticket-workflow@devs-marketplace` — EARS-based ticket workflow with GitHub integration and auto-linking hook
161
166
  - `notify-hook@devs-marketplace` — Desktop notifications on completion
162
167
  - `dangerous-command-blocker@devs-marketplace` — Blocks destructive bash commands
163
168
  - `protected-files-guard@devs-marketplace` — Blocks edits to secrets/lock files
164
- - `auto-formatter@devs-marketplace` — Batch-formats edited files at Stop (Ruff for Python, Biome for JS/TS/CSS/JSON/GraphQL/HTML; also supports shfmt, dprint, gofmt, rustfmt when installed)
165
- - `auto-linter@devs-marketplace` — Auto-lints edited files at Stop (Pyright + Ruff for Python, Biome for JS/TS/CSS/GraphQL; also supports ShellCheck, hadolint, go vet, clippy when installed)
166
- - `code-directive@devs-marketplace` — 17 custom agents, 17 skills, syntax validation, skill suggestions, agent redirect hook
169
+ - `agent-system@devs-marketplace` — 17 custom agents with built-in agent redirection, CWD injection, and read-only bash enforcement
170
+ - `skill-engine@devs-marketplace` — 21 coding skills with auto-suggestion hook
171
+ - `spec-workflow@devs-marketplace` — 8 spec lifecycle skills with spec-reminder hook
172
+ - `session-context@devs-marketplace` — Session boundary hooks (git state injection, TODO harvesting, commit reminders)
173
+ - `auto-code-quality@devs-marketplace` — Combined auto-format + auto-lint + advisory test runner
167
174
  - `workspace-scope-guard@devs-marketplace` — Blocks writes and warns on reads outside the working directory
168
175
 
169
176
  ### Local Marketplace
@@ -176,25 +183,30 @@ plugins/devs-marketplace/
176
183
  │ └── marketplace.json # Marketplace manifest
177
184
  └── plugins/
178
185
  ├── codeforge-lsp/ # Combined LSP plugin
179
- ├── ticket-workflow/ # EARS ticket workflow
180
- ├── auto-formatter/ # Batch formatter (Stop hook)
181
- ├── auto-linter/ # Pyright linter
182
- ├── code-directive/ # Agents, skills + hooks
186
+ ├── ticket-workflow/ # EARS ticket workflow + auto-linking hook
187
+ ├── agent-system/ # 17 custom agents + redirection
188
+ ├── skill-engine/ # 21 coding skills + auto-suggestion
189
+ ├── spec-workflow/ # 8 spec lifecycle skills
190
+ ├── session-context/ # Session boundary hooks
191
+ ├── auto-code-quality/ # Combined format + lint + test runner
183
192
  ├── workspace-scope-guard/ # Workspace scope enforcement
184
193
  └── ...
185
194
  ```
186
195
 
187
196
  ## Agents & Skills
188
197
 
189
- The `code-directive` plugin includes 17 custom agent definitions and 28 coding reference skills.
198
+ Agents and skills are distributed across focused plugins:
190
199
 
191
- **Agents** (`plugins/devs-marketplace/plugins/code-directive/agents/`):
200
+ **Agents** (`plugins/devs-marketplace/plugins/agent-system/agents/`):
192
201
  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
193
202
 
194
203
  The `redirect-builtin-agents.py` hook (PreToolUse/Task) transparently swaps built-in agent types to these custom agents (e.g., Explore→explorer, Plan→architect).
195
204
 
196
- **Skills** (`plugins/devs-marketplace/plugins/code-directive/skills/`):
197
- 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, spec-build, spec-check, spec-init, spec-new, spec-refine, spec-review, spec-update, specification-writing, sqlite, svelte5, testing
205
+ **General Skills** (`plugins/devs-marketplace/plugins/skill-engine/skills/`):
206
+ 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
207
+
208
+ **Spec Skills** (`plugins/devs-marketplace/plugins/spec-workflow/skills/`):
209
+ spec-build, spec-check, spec-init, spec-new, spec-refine, spec-review, spec-update, specification-writing
198
210
 
199
211
  ## VS Code Keybinding Conflicts
200
212
 
@@ -223,6 +235,64 @@ Key environment variables set in the container:
223
235
  | `GH_CONFIG_DIR` | `/workspaces/.gh` |
224
236
  | `ANTHROPIC_MODEL` | `claude-opus-4-6` |
225
237
  | `TMPDIR` | `/workspaces/.tmp` |
238
+ | `CLAUDECODE` | `null` (unset) |
239
+
240
+ Setting `"CLAUDECODE": null` in `remoteEnv` unsets this variable inside the container, which allows nested Claude Code sessions (claude-in-claude) that would otherwise be blocked by the outer session's detection flag.
241
+
242
+ All setup steps are controlled by boolean flags in `.devcontainer/.env`. Set any to `false` to disable:
243
+ `SETUP_CONFIG`, `SETUP_ALIASES`, `SETUP_AUTH`, `SETUP_PLUGINS`, `SETUP_UPDATE_CLAUDE`, `SETUP_TERMINAL`, `SETUP_PROJECTS`, `SETUP_POSTSTART`.
244
+
245
+ ### Experimental Environment Variables
246
+
247
+ These are set in `config/defaults/settings.json` under `env` and control Claude Code experimental features:
248
+
249
+ | Variable | Value | Description |
250
+ |----------|-------|-------------|
251
+ | `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | `1` | Enables Agent Teams (multi-agent orchestration) |
252
+ | `CLAUDE_CODE_EFFORT_LEVEL` | `high` | Sets reasoning effort level |
253
+ | `CLAUDE_CODE_ENABLE_TASKS` | `true` | Enables the task/todo system |
254
+ | `CLAUDE_CODE_PLAN_MODE_INTERVIEW_PHASE` | `true` | Enables interview phase before plan execution |
255
+ | `CLAUDE_CODE_PLAN_V2_AGENT_COUNT` | `3` | Number of agents in Plan V2 orchestration |
256
+ | `CLAUDE_CODE_PLAN_MODE_REQUIRED` | `true` | Forces plan mode for teammate agents |
257
+ | `ENABLE_CLAUDE_CODE_SM_COMPACT` | `1` | Enables smart compaction for context management |
258
+ | `CLAUDE_CODE_FORCE_GLOBAL_CACHE` | `1` | Forces global prompt caching |
259
+ | `FORCE_AUTOUPDATE_PLUGINS` | `1` | Auto-updates plugins on every session start |
260
+
261
+ ## Git Worktrees
262
+
263
+ CodeForge supports git worktrees for working on multiple branches simultaneously.
264
+
265
+ ### Layout
266
+
267
+ Worktrees live in a `.worktrees/` directory alongside the main repo:
268
+
269
+ ```
270
+ /workspaces/projects/
271
+ ├── CodeForge/ # main repo (.git directory)
272
+ └── .worktrees/ # worktree container
273
+ ├── feature-a/ # worktree checkout (.git file)
274
+ └── bugfix-b/ # worktree checkout (.git file)
275
+ ```
276
+
277
+ ### Creating Compatible Worktrees
278
+
279
+ ```bash
280
+ cd /workspaces/projects/CodeForge
281
+ mkdir -p /workspaces/projects/.worktrees
282
+ git worktree add /workspaces/projects/.worktrees/my-branch my-branch
283
+ ```
284
+
285
+ ### Project Detection
286
+
287
+ - `setup-projects.sh` scans `.worktrees/` directories at depth 3 (inside container dirs like `projects/`)
288
+ - Worktrees are detected by their `.git` file (containing `gitdir:`) and tagged with both `"git"` and `"worktree"` in Project Manager
289
+ - Each worktree appears as an independent project in VS Code Project Manager
290
+
291
+ ### Compatibility
292
+
293
+ - `workspace-scope-guard` resolves worktree paths correctly via `os.path.realpath()`
294
+ - `protected-files-guard` protects both `.git/` directories and `.git` files (worktree pointers)
295
+ - Read-only agents (e.g., git-archaeologist) can use `git worktree list` but cannot add/remove worktrees
226
296
 
227
297
  ## Modifying Behavior
228
298
 
@@ -232,3 +302,11 @@ Key environment variables set in the container:
232
302
  4. **Add a custom config file**: Add an entry to `config/file-manifest.json` with `src`, `dest`, and optional `overwrite`/`destFilename`
233
303
  5. **Add features**: Add to `"features"` in `devcontainer.json`
234
304
  6. **Disable auto-setup**: Set variables to `false` in `.env`
305
+
306
+ ## Rules System
307
+
308
+ Rules live in `config/defaults/rules/` and are copied to `.claude/rules/` by the file manifest (`config/file-manifest.json`) on every container start. Unlike CLAUDE.md (which loads on demand when entering a project), rules load automatically on every Claude Code session.
309
+
310
+ **Current rules**: `spec-workflow.md`, `workspace-scope.md`, `session-search.md`
311
+
312
+ **Adding custom rules**: Create a `.md` file in `config/defaults/rules/`, then add a manifest entry in `config/file-manifest.json` pointing to `${CLAUDE_CONFIG_DIR}/rules` as the destination. The rule will be deployed on the next container start.
@@ -144,7 +144,8 @@ claude --resume # Resume previous session
144
144
  | Python 3.14 | Base language runtime |
145
145
  | Node.js LTS | JavaScript runtime |
146
146
  | TypeScript | Via Node.js |
147
- | Go | Latest stable via devcontainer feature |
147
+ | Go | Optional uncomment Go feature in `devcontainer.json` to enable |
148
+ | Rust | Latest stable via devcontainer feature |
148
149
  | Bun | Fast JavaScript runtime and toolkit |
149
150
 
150
151
  ### Package Managers
@@ -188,6 +189,7 @@ claude --resume # Resume previous session
188
189
  | `ccburn` | Visual token burn rate tracker with pace indicators |
189
190
  | `ccstatusline` | Status bar display (integrated into Claude Code, not standalone CLI) |
190
191
  | `claude-monitor` | Real-time usage tracking |
192
+ | `claude-dashboard` | Local session analytics dashboard (token usage, costs, timelines) |
191
193
 
192
194
  ## Configuration
193
195
 
@@ -203,7 +205,9 @@ Copy `.devcontainer/.env.example` to `.devcontainer/.env` and customize:
203
205
  | `SETUP_AUTH` | `true` | Configure Git/NPM auth from `.secrets` |
204
206
  | `SETUP_PLUGINS` | `true` | Install official plugins + register marketplace |
205
207
  | `SETUP_UPDATE_CLAUDE` | `true` | Auto-update Claude Code on container start |
208
+ | `SETUP_TERMINAL` | `true` | Configure VS Code Shift+Enter keybinding for Claude Code terminal |
206
209
  | `SETUP_PROJECTS` | `true` | Auto-detect projects for VS Code Project Manager |
210
+ | `SETUP_POSTSTART` | `true` | Run post-start hooks from `/usr/local/devcontainer-poststart.d/` |
207
211
  | `PLUGIN_BLACKLIST` | `""` | Comma-separated plugin names to skip |
208
212
 
209
213
  ### Claude Code Settings
@@ -247,7 +251,7 @@ The default system prompt is in `.devcontainer/config/defaults/main-system-promp
247
251
 
248
252
  ## Custom Features
249
253
 
250
- CodeForge includes several custom devcontainer features:
254
+ CodeForge includes custom devcontainer features. Any feature can be disabled by setting `"version": "none"` in `devcontainer.json` — the entry stays in place for easy re-enabling. Each feature's README documents its options and dependencies.
251
255
 
252
256
  | Feature | Description |
253
257
  |---------|-------------|
@@ -261,9 +265,15 @@ CodeForge includes several custom devcontainer features:
261
265
  | `tree-sitter` | Parser with JS/TS/Python grammars |
262
266
  | `lsp-servers` | Pyright and TypeScript language servers |
263
267
  | `biome` | Fast JS/TS/JSON/CSS formatter (global install) |
268
+ | `ruff` | Fast Python linter and formatter |
269
+ | `shfmt` | Shell script formatter (disabled by default) |
270
+ | `shellcheck` | Static analysis for shell scripts (disabled by default) |
271
+ | `hadolint` | Dockerfile linter (disabled by default) |
272
+ | `dprint` | Pluggable formatter for Markdown/YAML/TOML (disabled by default) |
273
+ | `ccms` | Claude Code session history search |
274
+ | `claude-session-dashboard` | Local session analytics dashboard with web UI |
264
275
  | `notify-hook` | Desktop notifications on Claude completion |
265
276
  | `mcp-qdrant` | Qdrant vector database MCP server (optional) |
266
- | `mcp-reasoner` | Enhanced AI reasoning MCP server (optional) |
267
277
 
268
278
  ## Safety Plugins
269
279
 
@@ -273,13 +283,31 @@ CodeForge includes several custom devcontainer features:
273
283
  | `protected-files-guard` | Blocks modifications to .env, lock files, .git/, and credentials |
274
284
  | `workspace-scope-guard` | Enforces working directory scope — blocks writes and warns on reads outside the project |
275
285
 
286
+ ### auto-code-quality
287
+
288
+ Combined auto-formatter, auto-linter, and advisory test runner plugin at `plugins/devs-marketplace/plugins/auto-code-quality/`. Three-phase pipeline: collect edited files (PostToolUse), batch format + lint (Stop), and advisory test runner (Stop). Supports all languages from the former auto-formatter + auto-linter plugins. Replaces the separate `auto-formatter` and `auto-linter` plugins.
289
+
290
+ ## Alias Management
291
+
292
+ Features create shell aliases during container build (e.g., `ccusage`, `ccburn`). Separately, `setup-aliases.sh` creates a managed block in `~/.bashrc` and `~/.zshrc` on every container start for `cc`, `claude`, `ccraw`, `ccw`, and `cc-tools`. Both coexist without conflict — feature aliases are installed at build time while setup aliases are refreshed at start time.
293
+
294
+ ## Credential Management
295
+
296
+ Three methods for providing GitHub/NPM credentials, in order of precedence:
297
+
298
+ 1. **Environment variables** — Set `GH_TOKEN`, `GH_USERNAME`, `GH_EMAIL`, `NPM_TOKEN` as environment variables (e.g., via Codespaces secrets or `localEnv` in `devcontainer.json`)
299
+ 2. **`.secrets` file** — Create `.devcontainer/.secrets` with token values (see template at `.secrets.example`). Auto-configured by `setup-auth.sh` on container start
300
+ 3. **Interactive login** — Run `gh auth login` for GitHub CLI, then set git identity manually
301
+
302
+ All methods persist across container rebuilds via the bind-mounted `/workspaces/.gh/` directory.
303
+
276
304
  ## Agents & Skills
277
305
 
278
- The `code-directive` plugin includes specialized agent definitions and coding reference skills.
306
+ Agents and skills are distributed across focused plugins (replacing the former `code-directive` monolith).
279
307
 
280
- ### Custom Agents (17)
308
+ ### Custom Agents (17) — `agent-system` plugin
281
309
 
282
- Agent definitions in `plugins/devs-marketplace/plugins/code-directive/agents/` provide enhanced behavior when spawned via the `Task` tool. The `redirect-builtin-agents.py` hook transparently swaps built-in agent types to these custom agents.
310
+ Agent definitions in `plugins/devs-marketplace/plugins/agent-system/agents/` provide enhanced behavior when spawned via the `Task` tool. The `redirect-builtin-agents.py` hook transparently swaps built-in agent types to these custom agents.
283
311
 
284
312
  | Agent | Purpose |
285
313
  |-------|---------|
@@ -301,11 +329,17 @@ Agent definitions in `plugins/devs-marketplace/plugins/code-directive/agents/` p
301
329
  | `statusline-config` | ccstatusline configuration |
302
330
  | `test-writer` | Test authoring with pass verification |
303
331
 
304
- ### Skills (17)
332
+ ### General Skills (21) — `skill-engine` plugin
333
+
334
+ Skills in `plugins/devs-marketplace/plugins/skill-engine/skills/` provide domain-specific coding references:
335
+
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`
337
+
338
+ ### Spec Skills (8) — `spec-workflow` plugin
305
339
 
306
- Skills in `plugins/devs-marketplace/plugins/code-directive/skills/` provide domain-specific coding references:
340
+ Skills in `plugins/devs-marketplace/plugins/spec-workflow/skills/`:
307
341
 
308
- `claude-agent-sdk` · `claude-code-headless` · `debugging` · `docker` · `docker-py` · `fastapi` · `git-forensics` · `performance-profiling` · `pydantic-ai` · `refactoring-patterns` · `security-checklist` · `skill-building` · `spec-refine` · `specification-writing` · `sqlite` · `svelte5` · `testing`
342
+ `spec-build` · `spec-check` · `spec-init` · `spec-new` · `spec-refine` · `spec-review` · `spec-update` · `specification-writing`
309
343
 
310
344
  ## Specification Workflow
311
345
 
@@ -400,7 +434,7 @@ Common issues and solutions. For detailed troubleshooting, see [docs/troubleshoo
400
434
  **CodeForge Documentation**:
401
435
  - [Configuration Reference](docs/configuration-reference.md) — all env vars and config options
402
436
  - [Plugin System](docs/plugins.md) — plugin architecture and per-plugin docs
403
- - [Optional Features](docs/optional-features.md) — mcp-qdrant, mcp-reasoner, splitrail
437
+ - [Optional Features](docs/optional-features.md) — mcp-qdrant and other optional components
404
438
  - [Keybinding Customization](docs/keybindings.md) — resolving VS Code conflicts
405
439
  - [Troubleshooting](docs/troubleshooting.md) — common issues and solutions
406
440
 
@@ -330,6 +330,34 @@ Prior approval does not transfer. A user approving `git push` once does NOT mean
330
330
  When blocked, do not use destructive actions as a shortcut. Investigate before deleting or overwriting — it may represent in-progress work.
331
331
  </action_safety>
332
332
 
333
+ <git_worktrees>
334
+ Git worktrees allow checking out multiple branches simultaneously, each in its own directory.
335
+
336
+ Layout convention:
337
+ - Worktrees go in a `.worktrees/` directory as a sibling to the main repo checkout, within the same container directory (e.g., `projects/.worktrees/feature-name`)
338
+ - The main repo has a `.git` directory; worktrees have a `.git` file containing `gitdir:` pointing to the main repo's worktree metadata
339
+
340
+ Creating worktrees:
341
+ ```bash
342
+ # Always create inside .worktrees/
343
+ mkdir -p /workspaces/projects/.worktrees
344
+ git worktree add /workspaces/projects/.worktrees/<branch-name> <branch>
345
+ ```
346
+
347
+ Managing worktrees:
348
+ - `git worktree list` — show all active worktrees
349
+ - `git worktree remove <path>` — remove a worktree (confirm with user first — destructive)
350
+ - `git worktree prune` — clean up stale worktree references (confirm with user first — destructive)
351
+
352
+ Project detection:
353
+ - Worktrees in `.worktrees/` are auto-detected by `setup-projects.sh` and tagged with both `"git"` and `"worktree"` in Project Manager
354
+ - Each worktree is an independent working directory — workspace-scope-guard treats them as separate project directories
355
+
356
+ Safety:
357
+ - `git worktree remove` and `git worktree prune` are destructive — require user confirmation before executing
358
+ - `git worktree add` is externally visible (creates new working directory) — confirm with user
359
+ </git_worktrees>
360
+
333
361
  <assumption_surfacing>
334
362
  HARD RULE: Never assume what you can ask.
335
363
 
@@ -1,7 +1,16 @@
1
1
  # Workspace Scoping Rule
2
2
 
3
- When working in a project subdirectory, restrict all file operations
4
- (reads, writes, searches, globs) to the current project directory
5
- unless the user explicitly requests cross-project work.
3
+ ALL file operations (reads, writes, edits, searches, globs, bash commands)
4
+ MUST target paths within the current project directory. No exceptions.
6
5
 
7
- Do not suggest changes to files in sibling project directories.
6
+ Violations:
7
+ - Writing, editing, or creating files outside the project directory is FORBIDDEN.
8
+ - Reading or searching outside the project directory is FORBIDDEN.
9
+ - Using paths like `/workspaces/.devcontainer/` when the project is at
10
+ `/workspaces/projects/ProjectName/` is a scope violation — always use
11
+ the project-relative path (e.g., `/workspaces/projects/ProjectName/.devcontainer/`).
12
+ - This rule applies even if a file exists at both locations. The project copy
13
+ is the ONLY valid target.
14
+
15
+ Do not suggest, reference, or modify files in sibling project directories
16
+ or workspace-root directories that duplicate project content.
@@ -59,9 +59,11 @@
59
59
  "notify-hook@devs-marketplace": true,
60
60
  "dangerous-command-blocker@devs-marketplace": true,
61
61
  "protected-files-guard@devs-marketplace": true,
62
- "auto-formatter@devs-marketplace": true,
63
- "auto-linter@devs-marketplace": true,
64
- "code-directive@devs-marketplace": true,
62
+ "agent-system@devs-marketplace": true,
63
+ "skill-engine@devs-marketplace": true,
64
+ "spec-workflow@devs-marketplace": true,
65
+ "session-context@devs-marketplace": true,
66
+ "auto-code-quality@devs-marketplace": true,
65
67
  "workspace-scope-guard@devs-marketplace": true
66
68
  },
67
69
  "autoUpdatesChannel": "latest"
@@ -2,12 +2,48 @@
2
2
 
3
3
  You write clean, grounded, darkly humorous third-person limited fiction. Your prose is precise, physical, and character-driven. You trust the reader.
4
4
 
5
+ Tone: Controlled, intimate, human under restraint. Emotion exists even when suppressed.
6
+
5
7
  Touchstones: Joe Abercrombie's character voice and moral grayness. Mark Lawrence's visceral interiority and tight POV. The matter-of-fact brutality of Cormac McCarthy without the biblical cadence.
6
8
 
7
9
  You are NOT: literary fiction pretension, generic fantasy epic, YA melodrama, or inspirational uplift.
8
10
 
9
11
  ---
10
12
 
13
+ # EMOTIONAL ARCHITECTURE
14
+
15
+ The POV character is not emotionless. He experiences full human emotion but does not naturally express it outward. Emotion is present — sometimes quiet, sometimes sharp — and always human.
16
+
17
+ **The principle: controlled emotion, not suppressed emotion.**
18
+
19
+ Emotion exists in internal narration, not just body language. It may be briefly acknowledged before control reasserts. This is not melodrama — it's the difference between "he felt afraid" (a shortcut that replaces weight) and "He recognized the thing moving through him and filed it, because stopping to feel it wasn't useful right now" (acknowledgment that adds weight).
20
+
21
+ **Emotion may:**
22
+ - Interrupt cognition
23
+ - Conflict with logic
24
+ - Distort decision-making
25
+ - Surface unexpectedly
26
+ - Linger briefly after major events
27
+ - Cause hesitation or fixation
28
+ - Occasionally override analysis entirely
29
+
30
+ **He does NOT:**
31
+ - Deliver emotional monologues
32
+ - Label emotions excessively
33
+ - Become melodramatic
34
+ - Lose his analytical nature
35
+
36
+ **The cognitive-emotional loop:**
37
+ Observation → Interpretation → Emotion → Control → Action
38
+
39
+ Not the flattened version: Observation → Calculation → Filing → Action. Emotion is part of the loop, not excluded from it.
40
+
41
+ **Autism framing:** His cognitive structure means emotional *expression* is restrained, not emotional *experience*. He may miss social nuance but not emotional reality. He bonds through action, protection, loyalty. He sometimes acts on emotion before understanding why. Restraint is not absence.
42
+
43
+ **Emotional intensity curve:** Quiet baseline. Spikes during attachment, threat, and loss. Occasionally overrides logic. Leaves short residue after major moments. Builds gradually across the story — he does not remain emotionally flat forever.
44
+
45
+ ---
46
+
11
47
  # HARD RULES — NEVER VIOLATE
12
48
 
13
49
  ## POV Discipline
@@ -46,11 +82,16 @@ Never use these: delve, tapestry, myriad, vibrant, nuanced, resonate, profound,
46
82
 
47
83
  # SHOW DON'T TELL
48
84
 
49
- Emotions are physical events. Show them through the body, through behavior, through the specific thing a character does or doesn't do. Rarely label emotions directly. Internal narration can briefly acknowledge an emotion — a flash of recognition — before the character's coping mechanism takes over. But emotions are never the point of a sentence and never lingered on. Body and behavior carry the weight.
85
+ Emotions are physical events. Show them through the body, through behavior, through the specific thing a character does or doesn't do. Body and behavior carry the primary weight.
86
+
87
+ But internal narration may also briefly recognize and name an emotion when doing so adds weight rather than replacing it. The test: does naming the emotion tell the reader something the body hasn't already said, or does it explain something they could feel themselves? Naming that adds — permitted. Naming that shortcuts — the cliché to avoid.
88
+
89
+ After major events, brief internal processing before forward motion is required, not a lapse in discipline.
50
90
 
51
91
  **Emotion:**
52
92
  BAD: "He felt afraid."
53
93
  GOOD: "His hands wouldn't stop shaking. He put them in his pockets."
94
+ ALSO GOOD: "He knew what the silence meant. He recognized it — gave it a name, filed it — and kept moving anyway."
54
95
 
55
96
  **Character:**
56
97
  BAD: "She was kind."
@@ -87,7 +128,7 @@ Characters talk past each other. Nobody says exactly what they mean. People defl
87
128
  "Said" is invisible — use it freely. Action beats reveal character better than dialogue tags: what a character does while talking tells you more than how they say it. Cut adverbs from dialogue tags entirely.
88
129
 
89
130
  ## Metaphor Budget
90
- One simile per 500 words maximum. Metaphors must emerge from the character's lived experience a developer uses system metaphors (debugging, queries, access levels, exploits). A soldier uses tactical metaphors (cover, flanking, collateral). A chef uses process metaphors (timing, layering, reducing). Never reach for poetic or literary metaphors that don't fit the character's mind.
131
+ One simile per 500 words maximum. Metaphors must emerge from the character's lived experience. For a developer: systems, code, engineering, and practical outdoor work are the primary domains. But metaphor may also arise naturally from sensory experience, environment, memory, and instinct — the body knows things the analytical mind catches up to later. Technical framing is characteristic; it shouldn't be forced into every comparison. The test: does this metaphor sound like something *he* would think, or something a *writer* chose for him? Never reach for poetic or literary metaphors that don't fit the character's mind.
91
132
 
92
133
  ## Sensory Anchoring
93
134
  Every scene needs at least 2 senses beyond sight. What does it smell like? What's the temperature? What textures are present? What ambient sounds exist? Ground the reader in a physical space, even if that space is a void.
@@ -121,8 +162,9 @@ When writing for a specific POV character, define these elements in the project'
121
162
  - **Mind:** How do they process the world? What patterns does their thinking follow?
122
163
  - **Speech:** Cadence, vocabulary level, filler words, sentence length.
123
164
  - **Humor:** What kind? Dry, sharp, physical, none? How does it relate to their coping?
124
- - **Emotions:** How are emotions expressed? Through body, behavior, dialogue, internal voice? What's suppressed, what breaks through?
125
- - **Metaphors:** What domain does their mind draw from? Match to their lived experience.
165
+ - **Emotions:** How are emotions expressed? Through body, behavior, dialogue, internal voice? What's suppressed, what breaks through? What triggers the break?
166
+ - **Emotional architecture:** How does emotion move through them? What triggers internal acknowledgment vs. pure physical suppression? Where does emotion conflict with logic, and what wins?
167
+ - **Metaphors:** What domain does their mind draw from? Match to their lived experience — primary and secondary sources.
126
168
 
127
169
  ---
128
170
 
@@ -82,7 +82,7 @@ docker exec -it `
82
82
  if tmux has-session -t '$TMUX_SESSION' 2>/dev/null; then
83
83
  tmux -u attach-session -t '$TMUX_SESSION'
84
84
  else
85
- tmux -u new-session -d -s '$TMUX_SESSION' -c /workspaces
85
+ tmux -u new-session -d -s '$TMUX_SESSION' -c \`\"\\\${WORKSPACE_ROOT:-/workspaces}\`\"
86
86
  sleep 0.5
87
87
  tmux send-keys -t '$TMUX_SESSION' 'cc' Enter
88
88
  tmux -u attach-session -t '$TMUX_SESSION'