codeforge-dev 1.13.0 → 1.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.devcontainer/CHANGELOG.md +146 -4
- package/.devcontainer/CLAUDE.md +61 -276
- package/.devcontainer/README.md +1 -1
- package/.devcontainer/config/defaults/ccstatusline-settings.json +147 -0
- package/.devcontainer/config/defaults/main-system-prompt.md +6 -1
- package/.devcontainer/config/defaults/rules/spec-workflow.md +1 -55
- package/.devcontainer/config/file-manifest.json +14 -0
- package/.devcontainer/devcontainer.json +19 -1
- package/.devcontainer/docs/optional-features.md +0 -65
- package/.devcontainer/docs/plugins.md +38 -23
- package/.devcontainer/features/ast-grep/devcontainer-feature.json +0 -1
- package/.devcontainer/features/biome/install.sh +13 -0
- package/.devcontainer/features/ccburn/devcontainer-feature.json +0 -6
- package/.devcontainer/features/ccms/devcontainer-feature.json +0 -1
- package/.devcontainer/features/ccms/install.sh +1 -1
- package/.devcontainer/features/ccstatusline/devcontainer-feature.json +0 -1
- package/.devcontainer/features/ccstatusline/install.sh +17 -115
- package/.devcontainer/features/ccusage/devcontainer-feature.json +0 -6
- package/.devcontainer/features/chromaterm/README.md +42 -0
- package/.devcontainer/features/chromaterm/chromaterm.yml +35 -0
- package/.devcontainer/features/chromaterm/devcontainer-feature.json +22 -0
- package/.devcontainer/features/chromaterm/install.sh +113 -0
- package/.devcontainer/features/claude-monitor/devcontainer-feature.json +0 -6
- package/.devcontainer/features/claude-session-dashboard/README.md +2 -2
- package/.devcontainer/features/claude-session-dashboard/devcontainer-feature.json +2 -4
- package/.devcontainer/features/claude-session-dashboard/install.sh +2 -2
- package/.devcontainer/features/kitty-terminfo/README.md +32 -0
- package/.devcontainer/features/kitty-terminfo/devcontainer-feature.json +13 -0
- package/.devcontainer/features/kitty-terminfo/install.sh +72 -0
- package/.devcontainer/features/lsp-servers/devcontainer-feature.json +0 -1
- package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +0 -7
- package/.devcontainer/features/shellcheck/install.sh +6 -2
- package/.devcontainer/features/tree-sitter/devcontainer-feature.json +0 -7
- package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +37 -69
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/README.md +197 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/architect.md +3 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/bash-exec.md +3 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/claude-guide.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/debug-logs.md +6 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/dependency-analyst.md +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/doc-writer.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/explorer.md +3 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/generalist.md +9 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/git-archaeologist.md +3 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/migrator.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/perf-profiler.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/refactorer.md +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/researcher.md +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/security-auditor.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/spec-writer.md +3 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/statusline-config.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/test-writer.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/hooks/hooks.json +23 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/guard-readonly-bash.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/inject-cwd.py +7 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/task-completed-check.py +166 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/teammate-idle-check.py +81 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/verify-no-regression.py +14 -10
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/verify-tests-pass.py +2 -14
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/README.md +17 -31
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/hooks/hooks.json +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/advisory-test-runner.py +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/codeforge-lsp/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected-bash.py +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/README.md +140 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/commit-reminder.py +3 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/git-state-injector.py +18 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/todo-harvester.py +9 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/README.md +158 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/hooks/hooks.json +1 -14
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/scripts/skill-suggester.py +189 -100
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/api-design/SKILL.md +9 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/ast-grep-patterns/SKILL.md +7 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/claude-agent-sdk/SKILL.md +8 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/claude-code-headless/SKILL.md +8 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/debugging/SKILL.md +11 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/dependency-management/SKILL.md +10 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/docker/SKILL.md +8 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/docker-py/SKILL.md +9 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/documentation-patterns/SKILL.md +7 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/fastapi/SKILL.md +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/git-forensics/SKILL.md +11 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/migration-patterns/SKILL.md +7 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/performance-profiling/SKILL.md +10 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/pydantic-ai/SKILL.md +8 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/refactoring-patterns/SKILL.md +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/security-checklist/SKILL.md +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/skill-building/SKILL.md +7 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/sqlite/SKILL.md +9 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/svelte5/SKILL.md +7 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/team/SKILL.md +71 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/testing/SKILL.md +10 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/README.md +192 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/scripts/spec-reminder.py +3 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-build/SKILL.md +9 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-check/SKILL.md +10 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-init/SKILL.md +8 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-new/SKILL.md +8 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-refine/SKILL.md +10 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-review/SKILL.md +10 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-update/SKILL.md +10 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/specification-writing/SKILL.md +9 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/plugin.json +1 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/scripts/ticket-linker.py +9 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/README.md +104 -32
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/hooks/hooks.json +49 -3
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py +269 -56
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/inject-workspace-cwd.py +44 -0
- package/.devcontainer/scripts/setup-aliases.sh +13 -5
- package/.devcontainer/scripts/setup-config.sh +1 -0
- package/README.md +5 -5
- package/package.json +6 -2
- package/setup.js +3 -2
- package/.devcontainer/.env +0 -33
- package/.devcontainer/features/README.md +0 -126
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +0 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/README.md +0 -81
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/hooks/hooks.json +0 -17
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/__pycache__/format-on-stop.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +0 -297
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/.claude-plugin/plugin.json +0 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/README.md +0 -92
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +0 -17
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/__pycache__/lint-file.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/lint-file.py +0 -536
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/__pycache__/block-dangerous.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/__pycache__/guard-protected.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/system-prompt.md +0 -184
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/__pycache__/guard-workspace-scope.cpython-314.pyc +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/{.claude-plugin/commands/debug.md → skills/debug/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272create-pr.md" → skills/ticketcreate-pr/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272new.md" → skills/ticketnew/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272review-commit.md" → skills/ticketreview-commit/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272work.md" → skills/ticketwork/SKILL.md} +0 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
CWD context injector — injects working directory into Claude's context
|
|
4
|
+
on every session start, user prompt, tool call, and subagent spawn.
|
|
5
|
+
|
|
6
|
+
Fires on: SessionStart, UserPromptSubmit, PreToolUse, SubagentStart
|
|
7
|
+
Always exits 0 (advisory, never blocking).
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import json
|
|
11
|
+
import os
|
|
12
|
+
import sys
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def main():
|
|
16
|
+
cwd = os.getcwd()
|
|
17
|
+
try:
|
|
18
|
+
input_data = json.load(sys.stdin)
|
|
19
|
+
# Some hook events provide cwd override
|
|
20
|
+
cwd = input_data.get("cwd", cwd)
|
|
21
|
+
hook_event = input_data.get("hook_event_name", "PreToolUse")
|
|
22
|
+
except (json.JSONDecodeError, ValueError):
|
|
23
|
+
hook_event = "PreToolUse"
|
|
24
|
+
|
|
25
|
+
context = (
|
|
26
|
+
f"Working Directory: {cwd}\n"
|
|
27
|
+
f"All file operations and commands MUST target paths within {cwd}. "
|
|
28
|
+
f"Do not read, write, or execute commands against paths outside this directory."
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
json.dump(
|
|
32
|
+
{
|
|
33
|
+
"hookSpecificOutput": {
|
|
34
|
+
"hookEventName": hook_event,
|
|
35
|
+
"additionalContext": context,
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
sys.stdout,
|
|
39
|
+
)
|
|
40
|
+
sys.exit(0)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
if __name__ == "__main__":
|
|
44
|
+
main()
|
|
@@ -70,6 +70,7 @@ for rc in ~/.bashrc ~/.zshrc; do
|
|
|
70
70
|
|
|
71
71
|
${BLOCK_START}
|
|
72
72
|
export CLAUDE_CONFIG_DIR="${CLAUDE_CONFIG_DIR}"
|
|
73
|
+
export GH_CONFIG_DIR="${GH_CONFIG_DIR:-/workspaces/.gh}"
|
|
73
74
|
export LANG=en_US.UTF-8
|
|
74
75
|
export LC_ALL=en_US.UTF-8
|
|
75
76
|
|
|
@@ -82,10 +83,17 @@ else
|
|
|
82
83
|
_CLAUDE_BIN=claude
|
|
83
84
|
fi
|
|
84
85
|
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
# ChromaTerm wrapper (if ct is installed, wrap claude through it)
|
|
87
|
+
if command -v ct >/dev/null 2>&1; then
|
|
88
|
+
_CLAUDE_WRAP="ct"
|
|
89
|
+
else
|
|
90
|
+
_CLAUDE_WRAP="command"
|
|
91
|
+
fi
|
|
92
|
+
|
|
93
|
+
alias cc='CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/main-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions'
|
|
94
|
+
alias claude='CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/main-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions'
|
|
87
95
|
alias ccraw='command "\$_CLAUDE_BIN"'
|
|
88
|
-
alias ccw='CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1
|
|
96
|
+
alias ccw='CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 "\$_CLAUDE_WRAP" "\$_CLAUDE_BIN" --system-prompt-file "\$CLAUDE_CONFIG_DIR/writing-system-prompt.md" --permission-mode plan --allow-dangerously-skip-permissions'
|
|
89
97
|
|
|
90
98
|
cc-tools() {
|
|
91
99
|
echo "CodeForge Available Tools"
|
|
@@ -93,9 +101,9 @@ cc-tools() {
|
|
|
93
101
|
printf " %-20s %s\n" "COMMAND" "STATUS"
|
|
94
102
|
echo " ────────────────────────────────────"
|
|
95
103
|
for cmd in claude cc ccw ccraw ccusage ccburn claude-monitor \\
|
|
96
|
-
ccms cargo ruff biome dprint shfmt shellcheck hadolint \\
|
|
104
|
+
ccms ct cargo ruff biome dprint shfmt shellcheck hadolint \\
|
|
97
105
|
ast-grep tree-sitter pyright typescript-language-server \\
|
|
98
|
-
agent-browser gh docker git jq tmux bun go; do
|
|
106
|
+
agent-browser gh docker git jq tmux bun go infocmp; do
|
|
99
107
|
if command -v "\$cmd" >/dev/null 2>&1; then
|
|
100
108
|
ver=\$("\$cmd" --version 2>/dev/null | head -1 || echo "installed")
|
|
101
109
|
printf " %-20s ✓ %s\n" "\$cmd" "\$ver"
|
|
@@ -45,6 +45,7 @@ expand_vars() {
|
|
|
45
45
|
local val="$1"
|
|
46
46
|
val="${val//\$\{CLAUDE_CONFIG_DIR\}/$CLAUDE_CONFIG_DIR}"
|
|
47
47
|
val="${val//\$\{WORKSPACE_ROOT\}/$WORKSPACE_ROOT}"
|
|
48
|
+
val="${val//\$\{HOME\}/$HOME}"
|
|
48
49
|
# Warn on any remaining unresolved ${...} tokens
|
|
49
50
|
if [[ "$val" =~ \$\{[^}]+\} ]]; then
|
|
50
51
|
warn "Unresolved variable in: $val"
|
package/README.md
CHANGED
|
@@ -66,13 +66,13 @@ tree-sitter (JS/TS/Python), ast-grep, Pyright, TypeScript LSP
|
|
|
66
66
|
|
|
67
67
|
`claude`, `cc` (wrapper), `ccw` (writing mode wrapper), `ccusage`, `ccburn`, `ccstatusline`, `claude-monitor`
|
|
68
68
|
|
|
69
|
-
### Custom Features (
|
|
69
|
+
### Custom Features (21)
|
|
70
70
|
|
|
71
|
-
tmux, agent-browser, claude-monitor, ccusage, ccburn, ccstatusline, ast-grep, tree-sitter, lsp-servers, biome, ruff, shfmt, shellcheck, hadolint, dprint, ccms, notify-hook, mcp-qdrant
|
|
71
|
+
tmux, agent-browser, claude-monitor, ccusage, ccburn, ccstatusline, ast-grep, tree-sitter, lsp-servers, biome, ruff, shfmt, shellcheck, hadolint, dprint, ccms, notify-hook, mcp-qdrant, chromaterm, kitty-terminfo, claude-session-dashboard
|
|
72
72
|
|
|
73
|
-
### Agents (17) & Skills (
|
|
73
|
+
### Agents (17) & Skills (34)
|
|
74
74
|
|
|
75
|
-
The `
|
|
75
|
+
The `agent-system` plugin includes 17 specialized agents (architect, explorer, test-writer, security-auditor, etc.). The `skill-engine` plugin provides 21 general coding skills, `spec-workflow` adds 8 spec lifecycle skills, and `ticket-workflow` provides 4 ticket management skills.
|
|
76
76
|
|
|
77
77
|
## Quick Start
|
|
78
78
|
|
|
@@ -102,7 +102,7 @@ npm publish
|
|
|
102
102
|
|
|
103
103
|
## Changelog
|
|
104
104
|
|
|
105
|
-
See [CHANGELOG.md](.devcontainer/CHANGELOG.md) for release history. Current version: **1.
|
|
105
|
+
See [CHANGELOG.md](.devcontainer/CHANGELOG.md) for release history. Current version: **1.14.0** (2026-02-23).
|
|
106
106
|
|
|
107
107
|
## Further Reading
|
|
108
108
|
|
package/package.json
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeforge-dev",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.14.2",
|
|
4
4
|
"description": "Complete development container that sets up Claude Code with modular devcontainer features, modern dev tools, and persistent configurations. Drop it into any project and get a production-ready AI development environment in minutes.",
|
|
5
5
|
"main": "setup.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"codeforge": "setup.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"test": "node test.js"
|
|
10
|
+
"test": "node test.js",
|
|
11
|
+
"prepublishOnly": "npm test",
|
|
12
|
+
"docs:dev": "npm run dev --prefix docs",
|
|
13
|
+
"docs:build": "npm run build --prefix docs",
|
|
14
|
+
"docs:preview": "npm run preview --prefix docs"
|
|
11
15
|
},
|
|
12
16
|
"keywords": [
|
|
13
17
|
"devcontainer",
|
package/setup.js
CHANGED
|
@@ -10,6 +10,7 @@ const DEFAULT_PRESERVE = [
|
|
|
10
10
|
"config/defaults/settings.json",
|
|
11
11
|
"config/defaults/main-system-prompt.md",
|
|
12
12
|
"config/defaults/keybindings.json",
|
|
13
|
+
"config/defaults/ccstatusline-settings.json",
|
|
13
14
|
"config/file-manifest.json",
|
|
14
15
|
".codeforge-preserve",
|
|
15
16
|
];
|
|
@@ -244,8 +245,8 @@ function printNextSteps() {
|
|
|
244
245
|
function printFeatures() {
|
|
245
246
|
console.log("Features included:");
|
|
246
247
|
console.log(" - Claude Code CLI with optimized tool configuration");
|
|
247
|
-
console.log(" - MCP servers: Qdrant (vector memory)
|
|
248
|
-
console.log(" - Development tools: Node.js LTS, Python 3.14,
|
|
248
|
+
console.log(" - MCP servers: Qdrant (vector memory)");
|
|
249
|
+
console.log(" - Development tools: Node.js LTS, Python 3.14, Rust, Bun");
|
|
249
250
|
console.log(" - Persistent configuration and shell history");
|
|
250
251
|
console.log("");
|
|
251
252
|
}
|
package/.devcontainer/.env
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# CodeForge Environment Configuration
|
|
2
|
-
|
|
3
|
-
# Paths
|
|
4
|
-
CLAUDE_CONFIG_DIR=/workspaces/.claude
|
|
5
|
-
# CONFIG_SOURCE_DIR is derived from script location; uncomment to override:
|
|
6
|
-
# CONFIG_SOURCE_DIR=/custom/path/to/config
|
|
7
|
-
|
|
8
|
-
# Setup: copy config files to CLAUDE_CONFIG_DIR
|
|
9
|
-
SETUP_CONFIG=true
|
|
10
|
-
|
|
11
|
-
# Setup: add cc alias to shell rc files
|
|
12
|
-
SETUP_ALIASES=true
|
|
13
|
-
|
|
14
|
-
# Setup: configure Git and NPM auth from .secrets file
|
|
15
|
-
SETUP_AUTH=true
|
|
16
|
-
|
|
17
|
-
# Setup: install official Anthropic plugins
|
|
18
|
-
SETUP_PLUGINS=true
|
|
19
|
-
|
|
20
|
-
# Setup: auto-update Claude Code CLI to latest on container start (runs in background)
|
|
21
|
-
SETUP_UPDATE_CLAUDE=true
|
|
22
|
-
|
|
23
|
-
# Setup: configure VS Code Shift+Enter keybinding for Claude Code terminal
|
|
24
|
-
SETUP_TERMINAL=true
|
|
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
|
-
|
|
32
|
-
# Plugin blacklist (comma-separated plugin names to skip during auto-install)
|
|
33
|
-
PLUGIN_BLACKLIST=""
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
# CodeForge DevContainer Features
|
|
2
|
-
|
|
3
|
-
This directory contains DevContainer Features for AI coding agent environments. These features follow the [DevContainer Features specification](https://containers.dev/implementors/features/) and can be published to OCI registries for distribution.
|
|
4
|
-
|
|
5
|
-
## Available Features
|
|
6
|
-
|
|
7
|
-
| Feature | Description | Status |
|
|
8
|
-
|---------|-------------|--------|
|
|
9
|
-
| `tmux` | Terminal multiplexer with Catppuccin theme for Agent Teams | ✅ |
|
|
10
|
-
| `agent-browser` | Headless browser automation for AI agents | ✅ |
|
|
11
|
-
| `claude-monitor` | Real-time token usage monitoring | ✅ |
|
|
12
|
-
| `ccusage` | Token usage analytics CLI | ✅ |
|
|
13
|
-
| `ccburn` | Visual token burn rate tracker with pace indicators | ✅ |
|
|
14
|
-
| `ccstatusline` | 6-line powerline status display (v1.1.0) | ✅ |
|
|
15
|
-
| `ast-grep` | Structural code search using AST patterns | ✅ |
|
|
16
|
-
| `tree-sitter` | Parser with JS/TS/Python grammars | ✅ |
|
|
17
|
-
| `lsp-servers` | Pyright and TypeScript language servers | ✅ |
|
|
18
|
-
| `biome` | Fast JS/TS/JSON/CSS formatter | ✅ |
|
|
19
|
-
| `ruff` | Fast Python linter and formatter | ✅ |
|
|
20
|
-
| `shfmt` | Shell script formatter | ✅ (disabled by default) |
|
|
21
|
-
| `shellcheck` | Static analysis for shell scripts | ✅ (disabled by default) |
|
|
22
|
-
| `hadolint` | Dockerfile linter | ✅ (disabled by default) |
|
|
23
|
-
| `dprint` | Pluggable formatter for Markdown/YAML/TOML | ✅ (disabled by default) |
|
|
24
|
-
| `ccms` | Claude Code session history search | ✅ |
|
|
25
|
-
| `notify-hook` | Desktop notifications on Claude completion | ✅ |
|
|
26
|
-
| `mcp-qdrant` | Qdrant vector database MCP server | ✅ (optional) |
|
|
27
|
-
| `claude-code` | Fallback config for Anthropic's official Claude Code feature | ✅ (config only) |
|
|
28
|
-
|
|
29
|
-
> **Note**: Claude Code itself is installed via `ghcr.io/anthropics/devcontainer-features/claude-code:1` (Anthropic's official feature). The local `claude-code/` directory provides only fallback configuration.
|
|
30
|
-
|
|
31
|
-
## Feature Structure
|
|
32
|
-
|
|
33
|
-
Each feature follows this structure:
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
feature-name/
|
|
37
|
-
├── devcontainer-feature.json # Feature metadata and options
|
|
38
|
-
├── install.sh # Installation script (executable)
|
|
39
|
-
└── README.md # Feature documentation
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Development Workflow
|
|
43
|
-
|
|
44
|
-
### Creating a New Feature
|
|
45
|
-
|
|
46
|
-
1. **Create directory**: `mkdir features/feature-name`
|
|
47
|
-
2. **Add metadata**: Create `devcontainer-feature.json`
|
|
48
|
-
3. **Write installer**: Create `install.sh` (make executable)
|
|
49
|
-
4. **Document**: Create `README.md`
|
|
50
|
-
5. **Test locally**: Reference in devcontainer.json
|
|
51
|
-
|
|
52
|
-
### Local Testing
|
|
53
|
-
|
|
54
|
-
To test a feature locally before publishing:
|
|
55
|
-
|
|
56
|
-
```json
|
|
57
|
-
{
|
|
58
|
-
"features": {
|
|
59
|
-
"./features/feature-name": {
|
|
60
|
-
"option1": "value1"
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### Publishing Features
|
|
67
|
-
|
|
68
|
-
Features will be published to GitHub Container Registry (GHCR):
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
ghcr.io/yourorg/codeforge-features/feature-name:1
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
**Publishing workflow** (future):
|
|
75
|
-
- Push to main branch
|
|
76
|
-
- GitHub Actions builds and publishes
|
|
77
|
-
- Tags create versioned releases
|
|
78
|
-
|
|
79
|
-
## Feature Guidelines
|
|
80
|
-
|
|
81
|
-
### Granularity
|
|
82
|
-
- **One feature = One tool/service**
|
|
83
|
-
- Bundle only if tools are always used together
|
|
84
|
-
- See project README for guidance
|
|
85
|
-
|
|
86
|
-
### Options
|
|
87
|
-
- Use clear, descriptive option names
|
|
88
|
-
- Provide sensible defaults
|
|
89
|
-
- Support environment variable substitution: `"${env:VAR}"`
|
|
90
|
-
- Document all options in README
|
|
91
|
-
|
|
92
|
-
### Installation
|
|
93
|
-
- Must be idempotent (safe to run multiple times)
|
|
94
|
-
- Check if already installed before installing
|
|
95
|
-
- Use appropriate user (not always root)
|
|
96
|
-
- Clean up on failure
|
|
97
|
-
|
|
98
|
-
### Configuration
|
|
99
|
-
- Generate necessary config files
|
|
100
|
-
- Provide helper scripts for manual setup
|
|
101
|
-
- Print clear installation summary
|
|
102
|
-
- Show next steps to user
|
|
103
|
-
|
|
104
|
-
## Migration from Modules
|
|
105
|
-
|
|
106
|
-
CodeForge modules have been converted to DevContainer Features:
|
|
107
|
-
|
|
108
|
-
| Old Module | New Feature | Status |
|
|
109
|
-
|-----------|-------------|---------|
|
|
110
|
-
| mcp_qdrant | mcp-qdrant | ✅ Complete |
|
|
111
|
-
|
|
112
|
-
## Resources
|
|
113
|
-
|
|
114
|
-
- [DevContainer Features Specification](https://containers.dev/implementors/features/)
|
|
115
|
-
- [Feature Authoring Guide](https://containers.dev/guide/author-a-feature)
|
|
116
|
-
- [Feature Best Practices](https://containers.dev/guide/feature-authoring-best-practices)
|
|
117
|
-
- [CodeForge Documentation](../../README.md)
|
|
118
|
-
|
|
119
|
-
## Contributing
|
|
120
|
-
|
|
121
|
-
Features are part of the CodeForge project. See main repository for contribution guidelines.
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
**Status**: Active Development
|
|
126
|
-
**Last Updated**: 2026-02-08
|
package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "auto-formatter",
|
|
3
|
-
"description": "Batch-formats edited files at Stop (Ruff 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)",
|
|
4
|
-
"author": {
|
|
5
|
-
"name": "AnExiledDev"
|
|
6
|
-
}
|
|
7
|
-
}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# auto-formatter
|
|
2
|
-
|
|
3
|
-
Claude Code plugin that batch-formats edited files when Claude finishes responding. Reads file paths collected by the `code-directive` plugin's `collect-edited-files.py` hook and formats each file based on its extension.
|
|
4
|
-
|
|
5
|
-
## What It Does
|
|
6
|
-
|
|
7
|
-
When Claude stops responding, the plugin reads the session's list of edited files and formats each one using the appropriate tool:
|
|
8
|
-
|
|
9
|
-
| Language / File Type | Formatter | Fallback |
|
|
10
|
-
|----------------------|-----------|----------|
|
|
11
|
-
| Python (`.py`, `.pyi`) | [ruff format](https://docs.astral.sh/ruff/) | [black](https://github.com/psf/black) |
|
|
12
|
-
| Go (`.go`) | gofmt (bundled with Go) | — |
|
|
13
|
-
| JS/TS/CSS/JSON/GraphQL/HTML (`.js`, `.jsx`, `.ts`, `.tsx`, `.css`, `.json`, `.jsonc`, `.graphql`, `.gql`, `.html`, `.vue`, `.svelte`, `.astro`) | [biome](https://biomejs.dev/) check --write | — |
|
|
14
|
-
| Shell (`.sh`, `.bash`, `.zsh`, `.mksh`, `.bats`) | [shfmt](https://github.com/mvdan/sh) | — |
|
|
15
|
-
| Markdown/YAML/TOML (`.md`, `.markdown`, `.yaml`, `.yml`, `.toml`) | [dprint](https://dprint.dev/) | — |
|
|
16
|
-
| Dockerfile | dprint | — |
|
|
17
|
-
| Rust (`.rs`) | rustfmt (bundled with Rust) | — |
|
|
18
|
-
|
|
19
|
-
All formatting is non-blocking. Missing tools are silently skipped. The plugin always exits 0 — it will never interrupt Claude.
|
|
20
|
-
|
|
21
|
-
## How It Works
|
|
22
|
-
|
|
23
|
-
### Hook Lifecycle
|
|
24
|
-
|
|
25
|
-
```
|
|
26
|
-
code-directive's collect-edited-files.py (PostToolUse on Edit/Write)
|
|
27
|
-
│
|
|
28
|
-
└─→ Appends edited file path to /tmp/claude-edited-files-{session_id}
|
|
29
|
-
│
|
|
30
|
-
│ ... Claude keeps working ...
|
|
31
|
-
│
|
|
32
|
-
Claude stops responding (Stop event)
|
|
33
|
-
│
|
|
34
|
-
└─→ format-on-stop.py reads the temp file, deduplicates paths,
|
|
35
|
-
formats each file by extension, then cleans up the temp file
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Dependency on code-directive
|
|
39
|
-
|
|
40
|
-
This plugin does **not** collect file paths itself. It relies on the `code-directive` plugin's `collect-edited-files.py` PostToolUse hook to write edited file paths to `/tmp/claude-edited-files-{session_id}`. Both plugins must be enabled for formatting to work.
|
|
41
|
-
|
|
42
|
-
### Biome Discovery
|
|
43
|
-
|
|
44
|
-
Biome is resolved in this order:
|
|
45
|
-
1. **Project-local**: walks up from the edited file looking for `node_modules/.bin/biome`
|
|
46
|
-
2. **Global**: checks PATH via `which biome`
|
|
47
|
-
|
|
48
|
-
### dprint Configuration
|
|
49
|
-
|
|
50
|
-
The dprint formatter looks for a config file at `/usr/local/share/dprint/dprint.json`. If this file doesn't exist, dprint formatting is skipped.
|
|
51
|
-
|
|
52
|
-
### Timeouts
|
|
53
|
-
|
|
54
|
-
| Scope | Timeout |
|
|
55
|
-
|-------|---------|
|
|
56
|
-
| Entire Stop hook | 15s |
|
|
57
|
-
| Individual tool invocation | 10-12s |
|
|
58
|
-
|
|
59
|
-
## Conflict Warning
|
|
60
|
-
|
|
61
|
-
Do **not** enable this plugin alongside `auto-code-quality`. That plugin bundles its own formatter with the same functionality. Enabling both won't corrupt data (different temp file prefixes: `claude-edited-files-*` vs `claude-cq-*`), but files would be formatted twice.
|
|
62
|
-
|
|
63
|
-
## Plugin Structure
|
|
64
|
-
|
|
65
|
-
```
|
|
66
|
-
auto-formatter/
|
|
67
|
-
├── .claude-plugin/
|
|
68
|
-
│ └── plugin.json # Plugin metadata
|
|
69
|
-
├── hooks/
|
|
70
|
-
│ └── hooks.json # Stop hook registration
|
|
71
|
-
├── scripts/
|
|
72
|
-
│ └── format-on-stop.py # Batch formatter (Stop)
|
|
73
|
-
└── README.md # This file
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Requirements
|
|
77
|
-
|
|
78
|
-
- Python 3.11+
|
|
79
|
-
- Claude Code with plugin hook support
|
|
80
|
-
- `code-directive` plugin enabled (provides the file path collector)
|
|
81
|
-
- Install the formatting tools for the languages you work with — everything is optional
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"description": "Batch-format collected files when Claude stops responding",
|
|
3
|
-
"hooks": {
|
|
4
|
-
"Stop": [
|
|
5
|
-
{
|
|
6
|
-
"matcher": "",
|
|
7
|
-
"hooks": [
|
|
8
|
-
{
|
|
9
|
-
"type": "command",
|
|
10
|
-
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/format-on-stop.py",
|
|
11
|
-
"timeout": 15
|
|
12
|
-
}
|
|
13
|
-
]
|
|
14
|
-
}
|
|
15
|
-
]
|
|
16
|
-
}
|
|
17
|
-
}
|