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.
Files changed (148) hide show
  1. package/.devcontainer/CHANGELOG.md +146 -4
  2. package/.devcontainer/CLAUDE.md +61 -276
  3. package/.devcontainer/README.md +1 -1
  4. package/.devcontainer/config/defaults/ccstatusline-settings.json +147 -0
  5. package/.devcontainer/config/defaults/main-system-prompt.md +6 -1
  6. package/.devcontainer/config/defaults/rules/spec-workflow.md +1 -55
  7. package/.devcontainer/config/file-manifest.json +14 -0
  8. package/.devcontainer/devcontainer.json +19 -1
  9. package/.devcontainer/docs/optional-features.md +0 -65
  10. package/.devcontainer/docs/plugins.md +38 -23
  11. package/.devcontainer/features/ast-grep/devcontainer-feature.json +0 -1
  12. package/.devcontainer/features/biome/install.sh +13 -0
  13. package/.devcontainer/features/ccburn/devcontainer-feature.json +0 -6
  14. package/.devcontainer/features/ccms/devcontainer-feature.json +0 -1
  15. package/.devcontainer/features/ccms/install.sh +1 -1
  16. package/.devcontainer/features/ccstatusline/devcontainer-feature.json +0 -1
  17. package/.devcontainer/features/ccstatusline/install.sh +17 -115
  18. package/.devcontainer/features/ccusage/devcontainer-feature.json +0 -6
  19. package/.devcontainer/features/chromaterm/README.md +42 -0
  20. package/.devcontainer/features/chromaterm/chromaterm.yml +35 -0
  21. package/.devcontainer/features/chromaterm/devcontainer-feature.json +22 -0
  22. package/.devcontainer/features/chromaterm/install.sh +113 -0
  23. package/.devcontainer/features/claude-monitor/devcontainer-feature.json +0 -6
  24. package/.devcontainer/features/claude-session-dashboard/README.md +2 -2
  25. package/.devcontainer/features/claude-session-dashboard/devcontainer-feature.json +2 -4
  26. package/.devcontainer/features/claude-session-dashboard/install.sh +2 -2
  27. package/.devcontainer/features/kitty-terminfo/README.md +32 -0
  28. package/.devcontainer/features/kitty-terminfo/devcontainer-feature.json +13 -0
  29. package/.devcontainer/features/kitty-terminfo/install.sh +72 -0
  30. package/.devcontainer/features/lsp-servers/devcontainer-feature.json +0 -1
  31. package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +0 -7
  32. package/.devcontainer/features/shellcheck/install.sh +6 -2
  33. package/.devcontainer/features/tree-sitter/devcontainer-feature.json +0 -7
  34. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +37 -69
  35. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/.claude-plugin/plugin.json +0 -1
  36. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/README.md +197 -0
  37. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/architect.md +3 -1
  38. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/bash-exec.md +3 -0
  39. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/claude-guide.md +4 -1
  40. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/debug-logs.md +6 -1
  41. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/dependency-analyst.md +5 -1
  42. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/doc-writer.md +4 -1
  43. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/explorer.md +3 -1
  44. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/generalist.md +9 -1
  45. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/git-archaeologist.md +3 -0
  46. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/migrator.md +4 -1
  47. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/perf-profiler.md +4 -1
  48. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/refactorer.md +5 -1
  49. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/researcher.md +5 -1
  50. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/security-auditor.md +4 -1
  51. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/spec-writer.md +3 -1
  52. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/statusline-config.md +4 -1
  53. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/test-writer.md +4 -1
  54. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/hooks/hooks.json +23 -1
  55. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/guard-readonly-bash.py +2 -2
  56. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/inject-cwd.py +7 -4
  57. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/task-completed-check.py +166 -0
  58. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/teammate-idle-check.py +81 -0
  59. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/verify-no-regression.py +14 -10
  60. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/verify-tests-pass.py +2 -14
  61. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/README.md +17 -31
  62. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/hooks/hooks.json +5 -1
  63. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/advisory-test-runner.py +9 -8
  64. package/.devcontainer/plugins/devs-marketplace/plugins/codeforge-lsp/README.md +28 -0
  65. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/README.md +28 -0
  66. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py +2 -2
  67. package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/README.md +28 -0
  68. package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/hooks/hooks.json +0 -1
  69. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/README.md +28 -0
  70. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected-bash.py +1 -1
  71. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +2 -2
  72. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/.claude-plugin/plugin.json +0 -1
  73. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/README.md +140 -0
  74. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/hooks/hooks.json +0 -1
  75. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/commit-reminder.py +3 -2
  76. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/git-state-injector.py +18 -2
  77. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/todo-harvester.py +9 -1
  78. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/.claude-plugin/plugin.json +0 -1
  79. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/README.md +158 -0
  80. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/hooks/hooks.json +1 -14
  81. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/scripts/skill-suggester.py +189 -100
  82. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/api-design/SKILL.md +9 -6
  83. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/ast-grep-patterns/SKILL.md +7 -6
  84. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/claude-agent-sdk/SKILL.md +8 -8
  85. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/claude-code-headless/SKILL.md +8 -9
  86. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/debugging/SKILL.md +11 -7
  87. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/dependency-management/SKILL.md +10 -6
  88. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/docker/SKILL.md +8 -8
  89. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/docker-py/SKILL.md +9 -7
  90. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/documentation-patterns/SKILL.md +7 -6
  91. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/fastapi/SKILL.md +9 -8
  92. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/git-forensics/SKILL.md +11 -9
  93. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/migration-patterns/SKILL.md +7 -6
  94. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/performance-profiling/SKILL.md +10 -8
  95. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/pydantic-ai/SKILL.md +8 -7
  96. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/refactoring-patterns/SKILL.md +9 -8
  97. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/security-checklist/SKILL.md +9 -8
  98. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/skill-building/SKILL.md +7 -7
  99. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/sqlite/SKILL.md +9 -7
  100. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/svelte5/SKILL.md +7 -8
  101. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/team/SKILL.md +71 -5
  102. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/testing/SKILL.md +10 -7
  103. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/.claude-plugin/plugin.json +0 -1
  104. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/README.md +192 -0
  105. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/hooks/hooks.json +0 -1
  106. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/scripts/spec-reminder.py +3 -2
  107. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-build/SKILL.md +9 -6
  108. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-check/SKILL.md +10 -5
  109. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-init/SKILL.md +8 -4
  110. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-new/SKILL.md +8 -4
  111. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-refine/SKILL.md +10 -7
  112. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-review/SKILL.md +10 -6
  113. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-update/SKILL.md +10 -5
  114. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/specification-writing/SKILL.md +9 -9
  115. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/plugin.json +1 -2
  116. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/README.md +28 -0
  117. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/hooks/hooks.json +0 -1
  118. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/scripts/ticket-linker.py +9 -1
  119. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/README.md +104 -32
  120. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/hooks/hooks.json +49 -3
  121. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py +269 -56
  122. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/inject-workspace-cwd.py +44 -0
  123. package/.devcontainer/scripts/setup-aliases.sh +13 -5
  124. package/.devcontainer/scripts/setup-config.sh +1 -0
  125. package/README.md +5 -5
  126. package/package.json +6 -2
  127. package/setup.js +3 -2
  128. package/.devcontainer/.env +0 -33
  129. package/.devcontainer/features/README.md +0 -126
  130. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +0 -7
  131. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/README.md +0 -81
  132. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/hooks/hooks.json +0 -17
  133. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/__pycache__/format-on-stop.cpython-314.pyc +0 -0
  134. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +0 -297
  135. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/.claude-plugin/plugin.json +0 -7
  136. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/README.md +0 -92
  137. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +0 -17
  138. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/__pycache__/lint-file.cpython-314.pyc +0 -0
  139. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/lint-file.py +0 -536
  140. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/__pycache__/block-dangerous.cpython-314.pyc +0 -0
  141. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/__pycache__/guard-protected.cpython-314.pyc +0 -0
  142. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/system-prompt.md +0 -184
  143. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/__pycache__/guard-workspace-scope.cpython-314.pyc +0 -0
  144. /package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/{.claude-plugin/commands/debug.md → skills/debug/SKILL.md} +0 -0
  145. /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272create-pr.md" → skills/ticketcreate-pr/SKILL.md} +0 -0
  146. /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272new.md" → skills/ticketnew/SKILL.md} +0 -0
  147. /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272review-commit.md" → skills/ticketreview-commit/SKILL.md} +0 -0
  148. /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272work.md" → skills/ticketwork/SKILL.md} +0 -0
@@ -66,105 +66,16 @@ else
66
66
  echo "[ccstatusline] ccstatusline will be cached on first use via npx"
67
67
  fi
68
68
 
69
- echo "[ccstatusline] Generating powerline configuration..."
70
-
71
- # Generate powerline configuration using jq (ANSI colors - same as module)
72
- # 6-line layout with session resume command and ccburn burn rate tracking
73
- CONFIG_JSON=$(jq -n '{
74
- version: 3,
75
- lines: [
76
- [
77
- {id: "1", type: "context-length", color: "cyan"},
78
- {id: "db519d5a-80a7-4b44-8a9c-2c7d8c0a7176", type: "context-percentage-usable", backgroundColor: "bgRed"},
79
- {id: "d904cca6-ade8-41c1-a4f5-ddea30607a5e", type: "model", backgroundColor: "bgMagenta"}
80
- ],
81
- [
82
- {id: "5", type: "tokens-input", color: "magenta"},
83
- {id: "ac094d46-3673-4d41-84e3-dc8c5bcf639f", type: "tokens-output", backgroundColor: "bgMagenta"},
84
- {id: "2ad12147-05fd-45fb-8336-53ba2e7df56c", type: "tokens-cached", backgroundColor: "bgBrightRed"}
85
- ],
86
- [
87
- {id: "3", type: "git-branch", color: "brightBlack"},
88
- {id: "a529e50e-b9f3-4150-a812-937ab81545e8", type: "git-changes", backgroundColor: "bgBrightBlue"},
89
- {id: "a9eaae3f-7f91-459c-833a-fbc9f01a09ae", type: "git-worktree", backgroundColor: "bgBrightBlue"}
90
- ],
91
- [
92
- {id: "7", type: "session-clock", color: "yellow"},
93
- {id: "a4fe7f75-2f6c-49c7-88f6-ac7381142c2c", type: "session-cost", backgroundColor: "bgBrightWhite"},
94
- {id: "90aae111-3d3f-4bb0-8336-230f322cc2e8", type: "block-timer", backgroundColor: "bgYellow"}
95
- ],
96
- [
97
- {id: "9bacbdb4-2e01-45de-a0c0-ee6ec30fa3c2", type: "tokens-total", backgroundColor: "bgGreen"},
98
- {id: "2cdff909-8297-44a1-83f9-ad4bf024391e", type: "version", backgroundColor: "bgRed"}
99
- ],
100
- [
101
- {id: "cc-resume-session", type: "custom-command", commandPath: "/usr/local/bin/ccstatusline-session-resume", timeout: 500, preserveColors: false, maxWidth: 50, color: "cyan", backgroundColor: "bgBrightBlack"}
102
- ],
103
- [
104
- {id: "cc-cwd", type: "custom-command", commandPath: "/usr/local/bin/ccstatusline-cwd", timeout: 500, preserveColors: false, maxWidth: 40, color: "brightWhite", backgroundColor: "bgBrightBlack"}
105
- ],
106
- [
107
- {id: "ccburn-compact", type: "custom-command", commandPath: "/usr/local/bin/ccburn-statusline", timeout: 8000, preserveColors: true, maxWidth: 80, color: "green", backgroundColor: "bgBlack"}
108
- ]
109
- ],
110
- flexMode: "full-minus-40",
111
- compactThreshold: 60,
112
- colorLevel: 2,
113
- inheritSeparatorColors: false,
114
- globalBold: false,
115
- powerline: {
116
- enabled: true,
117
- separators: ["\ue0b0"],
118
- separatorInvertBackground: [false],
119
- startCaps: ["\ue0b6"],
120
- endCaps: ["\ue0b4"],
121
- autoAlign: false,
122
- theme: "monokai"
123
- },
124
- defaultPadding: " "
125
- }')
126
-
127
- # Validate generated config
128
- if ! echo "${CONFIG_JSON}" | jq empty 2>/dev/null; then
129
- echo "[ccstatusline] ERROR: Generated configuration is invalid JSON"
130
- exit 1
131
- fi
132
-
133
- echo "[ccstatusline] Writing configuration..."
134
-
135
- CONFIG_DIR="${USER_HOME}/.config/ccstatusline"
136
- CONFIG_FILE="${CONFIG_DIR}/settings.json"
137
-
138
- # Create directory
139
- mkdir -p "${CONFIG_DIR}"
140
-
141
- # Write config using secure temp file
142
- TEMP_CONFIG=$(mktemp)
143
- chmod 644 "${TEMP_CONFIG}"
144
- echo "${CONFIG_JSON}" | jq . > "${TEMP_CONFIG}"
145
-
146
- # Move to final location
147
- mv "${TEMP_CONFIG}" "${CONFIG_FILE}"
148
-
149
- # Set ownership
150
- if ! chown "${USERNAME}:${USERNAME}" "${CONFIG_FILE}" 2>/dev/null; then
151
- echo "[ccstatusline] WARNING: Could not set ownership on ${CONFIG_FILE}"
152
- echo " Fix: sudo chown ${USERNAME}:${USERNAME} ${CONFIG_FILE}"
153
- fi
154
-
155
- if ! chown "${USERNAME}:${USERNAME}" "${CONFIG_DIR}" 2>/dev/null; then
156
- echo "[ccstatusline] WARNING: Could not set ownership on ${CONFIG_DIR}"
157
- fi
158
-
159
- echo "[ccstatusline] ✓ Configuration written to ${CONFIG_FILE}"
160
-
161
- # Create template directory and save config template
162
- echo "[ccstatusline] Creating configuration template..."
69
+ # Widget config is managed by file-manifest.json (deployed by setup-config.sh)
70
+ # Source: .devcontainer/config/defaults/ccstatusline-settings.json
71
+ # Deployed to: ~/.config/ccstatusline/settings.json (if-changed)
72
+ # Template: /usr/local/share/ccstatusline/settings.template.json (always)
73
+ echo "[ccstatusline] Widget config managed by file-manifest.json"
74
+
75
+ # Create directories so wrapper doesn't fail before first post-start
76
+ mkdir -p "${USER_HOME}/.config/ccstatusline"
163
77
  mkdir -p /usr/local/share/ccstatusline
164
- TEMPLATE_FILE=/usr/local/share/ccstatusline/settings.template.json
165
- echo "${CONFIG_JSON}" | jq . > "${TEMPLATE_FILE}"
166
- chmod 644 "${TEMPLATE_FILE}"
167
- echo "[ccstatusline] ✓ Template saved to ${TEMPLATE_FILE}"
78
+ chown "${USERNAME}:${USERNAME}" "${USER_HOME}/.config/ccstatusline" 2>/dev/null || true
168
79
 
169
80
  # Create session resume helper script for custom-command widget
170
81
  # Reads Claude Code JSON from stdin, outputs the session ID
@@ -321,31 +232,22 @@ echo " ccstatusline Installation Complete"
321
232
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
322
233
  echo ""
323
234
  echo "Configuration:"
324
- echo " • Config file: ${CONFIG_FILE}"
235
+ echo " • Source: .devcontainer/config/defaults/ccstatusline-settings.json"
236
+ echo " • Deployed to: ~/.config/ccstatusline/settings.json (by file-manifest)"
237
+ echo " • Template: /usr/local/share/ccstatusline/settings.template.json"
325
238
  echo " • User: ${USERNAME}"
326
- echo " • Theme: Powerline (8 lines, 17 widgets, ANSI colors)"
327
239
  echo " • Protected by: /usr/local/bin/ccstatusline-wrapper"
328
240
  echo ""
329
- echo "Display:"
330
- echo " Line 1: Context Length | Context % | Model"
331
- echo " Line 2: Tokens In | Tokens Out | Tokens Cached"
332
- echo " Line 3: Git Branch | Git Changes | Git Worktree"
333
- echo " Line 4: Session Clock | Session Cost | Block Timer"
334
- echo " Line 5: Tokens Total | Version"
335
- echo " Line 6: Session ID"
336
- echo " Line 7: Working Directory"
337
- echo " Line 8: Burn Rate (ccburn compact)"
338
- echo ""
339
241
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
340
242
  echo " Next Steps"
341
243
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
342
244
  echo ""
343
- echo "1. Configuration will be applied automatically on container creation"
245
+ echo "1. Widget config is deployed automatically on container start"
344
246
  echo ""
345
- echo "2. Test manually:"
346
- echo " echo '{\"model\":{\"display_name\":\"Test\"}}' | npx -y ccstatusline@latest"
247
+ echo "2. To customize: edit .devcontainer/config/defaults/ccstatusline-settings.json"
248
+ echo " Changes deploy on next container start (if-changed)"
347
249
  echo ""
348
- echo "3. View configuration:"
349
- echo " cat ${CONFIG_FILE} | jq ."
250
+ echo "3. Test manually:"
251
+ echo " echo '{\"model\":{\"display_name\":\"Test\"}}' | npx -y ccstatusline@latest"
350
252
  echo ""
351
253
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@@ -3,7 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "name": "ccusage - Claude Code Usage Analyzer",
5
5
  "description": "Installs ccusage CLI tool for analyzing Claude Code token usage",
6
- "maintainer": "AnExiledDev",
7
6
  "documentationURL": "https://github.com/ryoppippi/ccusage",
8
7
  "options": {
9
8
  "version": {
@@ -19,11 +18,6 @@
19
18
  "bash",
20
19
  "zsh",
21
20
  "both"
22
- ],
23
- "proposals": [
24
- "bash",
25
- "zsh",
26
- "both"
27
21
  ]
28
22
  },
29
23
  "username": {
@@ -0,0 +1,42 @@
1
+ # chromaterm
2
+
3
+ Terminal output colorizer using regex-based YAML rules.
4
+
5
+ ## What It Does
6
+
7
+ Installs [ChromaTerm2](https://github.com/rgcr/ChromaTerm2) via `uv tool`. ChromaTerm2 applies regex-based color highlighting to terminal output using configurable YAML rules.
8
+
9
+ ## Options
10
+
11
+ | Option | Default | Description |
12
+ |--------|---------|-------------|
13
+ | `version` | `latest` | ChromaTerm2 version to install. Set `"none"` to skip. |
14
+ | `username` | `automatic` | Container user to install for |
15
+
16
+ ## Usage
17
+
18
+ ```bash
19
+ # Pipe any command through ct for colorized output
20
+ some-command | ct
21
+
22
+ # Use with a custom config
23
+ ct --config ~/.chromaterm.yml
24
+ ```
25
+
26
+ ## Configuration
27
+
28
+ Create a `~/.chromaterm.yml` file with regex rules:
29
+
30
+ ```yaml
31
+ rules:
32
+ - regex: "ERROR|FATAL"
33
+ color: red bold
34
+ - regex: "WARNING|WARN"
35
+ color: yellow
36
+ - regex: "INFO"
37
+ color: green
38
+ ```
39
+
40
+ ## Prerequisites
41
+
42
+ Requires `uv` (pre-installed in CodeForge container).
@@ -0,0 +1,35 @@
1
+ # ChromaTerm rules — additive to built-in defaults
2
+ # Customize to taste — this file won't be overwritten on rebuild.
3
+ #
4
+ # Built-in defaults already cover: errors, warnings, success, URLs,
5
+ # IPv4/IPv6, MAC addresses, dates, times, sizes, numbers.
6
+ # See: https://github.com/rgcr/ChromaTerm2
7
+ #
8
+ # These rules add patterns the defaults don't handle.
9
+ # Colors: f#HEX (foreground), b#HEX (background), bold, italic, underline
10
+
11
+ palette:
12
+ file_purple: '#bd93f9'
13
+ line_gray: '#6272a4'
14
+ info_blue: '#8be9fd'
15
+ hash_yellow: '#f1fa8c'
16
+
17
+ rules:
18
+ # File paths with optional line numbers (e.g., src/main.py:42)
19
+ # Covers common extensions for languages used in development
20
+ - description: File paths with line numbers
21
+ regex: '(?<=[\s(]|^)([a-zA-Z0-9_./-]+\.(py|ts|tsx|js|jsx|md|json|yml|yaml|toml|sh|rs|go|sql|css|html|svelte))(:(\d+))?'
22
+ color:
23
+ 1: f.file_purple underline
24
+ 4: f.line_gray
25
+ exclusive: true
26
+
27
+ # Info/debug markers (not covered by defaults)
28
+ - description: Info and debug markers
29
+ regex: '\b(INFO|DEBUG|HINT|NOTE|TRACE|VERBOSE)\b'
30
+ color: f.info_blue
31
+
32
+ # Git short commit hashes (7-12 hex chars)
33
+ - description: Git commit hashes
34
+ regex: '(?<=commit |merge |pick |revert |fixup )[0-9a-f]{7,40}'
35
+ color: f.hash_yellow
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "chromaterm",
3
+ "version": "1.0.0",
4
+ "name": "ChromaTerm - Terminal Output Colorizer",
5
+ "description": "Installs ChromaTerm2 for regex-based CLI output colorization via YAML rules",
6
+ "documentationURL": "https://github.com/rgcr/ChromaTerm2",
7
+ "options": {
8
+ "version": {
9
+ "type": "string",
10
+ "description": "ChromaTerm2 version to install (e.g., 'latest', '2.1.0', 'none' to skip)",
11
+ "default": "latest"
12
+ },
13
+ "username": {
14
+ "type": "string",
15
+ "description": "Container user to install for",
16
+ "default": "automatic"
17
+ }
18
+ },
19
+ "installsAfter": [
20
+ "ghcr.io/devcontainers-extra/features/uv"
21
+ ]
22
+ }
@@ -0,0 +1,113 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ # ==============================
5
+ # ChromaTerm DevContainer Feature
6
+ # Installs ChromaTerm2 via uv tool
7
+ # ==============================
8
+
9
+ CT_VERSION="${VERSION:-latest}"
10
+ USERNAME="${USERNAME:-automatic}"
11
+
12
+ # Skip installation if version is "none"
13
+ if [ "${CT_VERSION}" = "none" ]; then
14
+ echo "[chromaterm] Skipping installation (version=none)"
15
+ exit 0
16
+ fi
17
+
18
+ echo "[chromaterm] Starting ChromaTerm2 installation..."
19
+
20
+ # ---------- USER ----------
21
+ if [[ "${USERNAME}" == "auto" || "${USERNAME}" == "automatic" ]]; then
22
+ USERNAME=""
23
+ for u in vscode node codespace; do
24
+ if id -u "$u" >/dev/null 2>&1; then
25
+ USERNAME="$u"
26
+ break
27
+ fi
28
+ done
29
+ USERNAME="${USERNAME:-root}"
30
+ fi
31
+
32
+ USER_HOME="$(eval echo "~${USERNAME}")"
33
+
34
+ echo "[chromaterm] Target user: ${USERNAME}"
35
+ echo "[chromaterm] Version: ${CT_VERSION}"
36
+
37
+ fail() {
38
+ echo "[chromaterm] ERROR: $1" >&2
39
+ exit 1
40
+ }
41
+
42
+ run_as_user() {
43
+ sudo -u "${USERNAME}" env \
44
+ HOME="${USER_HOME}" \
45
+ "$@"
46
+ }
47
+
48
+ # ---------- UV DISCOVERY ----------
49
+ find_uv() {
50
+ command -v uv 2>/dev/null && return 0
51
+ for p in /usr/local/bin/uv /usr/bin/uv /opt/uv/bin/uv; do
52
+ [[ -x "$p" ]] && echo "$p" && return 0
53
+ done
54
+ find /usr /opt -maxdepth 4 -type f -name uv -executable 2>/dev/null | head -n 1
55
+ }
56
+
57
+ # ---------- INSTALL ----------
58
+ UV_BIN="$(find_uv || true)"
59
+ [[ -n "${UV_BIN}" ]] || fail "uv is not installed (devcontainer uv feature missing or broken)"
60
+
61
+ echo "[chromaterm] Using uv at: ${UV_BIN}"
62
+
63
+ if [[ "${CT_VERSION}" == "latest" ]]; then
64
+ run_as_user "${UV_BIN}" tool install chromaterm2
65
+ else
66
+ run_as_user "${UV_BIN}" tool install "chromaterm2==${CT_VERSION}"
67
+ fi
68
+
69
+ # ---------- DEPLOY DEFAULT CONFIG ----------
70
+ CT_CONFIG="${USER_HOME}/.chromaterm.yml"
71
+ FEATURE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
72
+
73
+ if [ ! -f "${CT_CONFIG}" ]; then
74
+ if [ -f "${FEATURE_DIR}/chromaterm.yml" ]; then
75
+ cp "${FEATURE_DIR}/chromaterm.yml" "${CT_CONFIG}"
76
+ chown "${USERNAME}:${USERNAME}" "${CT_CONFIG}" 2>/dev/null || true
77
+ echo "[chromaterm] Deployed default config to ${CT_CONFIG}"
78
+ fi
79
+ else
80
+ echo "[chromaterm] Config already exists at ${CT_CONFIG} — not overwriting"
81
+ fi
82
+
83
+ # ---------- VERIFY ----------
84
+ BIN_DIR="${USER_HOME}/.local/bin"
85
+
86
+ if [ -x "${BIN_DIR}/ct" ]; then
87
+ INSTALLED_VERSION="$("${BIN_DIR}/ct" --version 2>/dev/null || echo "unknown")"
88
+ echo "[chromaterm] ✓ ChromaTerm2 installed (${INSTALLED_VERSION})"
89
+ else
90
+ echo "[chromaterm] ERROR: ct not found in ${BIN_DIR}" >&2
91
+ ls -la "${BIN_DIR}" 2>/dev/null || true
92
+ exit 1
93
+ fi
94
+
95
+ # ---------- SUMMARY ----------
96
+ echo ""
97
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
98
+ echo " ChromaTerm2 Installation Complete"
99
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
100
+ echo ""
101
+ echo "Configuration:"
102
+ echo " • User: ${USERNAME}"
103
+ echo " • Version: ${CT_VERSION}"
104
+ echo " • Config: ${CT_CONFIG}"
105
+ echo ""
106
+ echo "Usage:"
107
+ echo " ct <command> # Wrap any command with colorization"
108
+ echo " echo 'ERROR test' | ct # Pipe output through ChromaTerm"
109
+ echo " cc / claude # Auto-wrapped when ct is installed"
110
+ echo ""
111
+ echo "Edit ~/.chromaterm.yml to customize highlighting rules."
112
+ echo ""
113
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@@ -3,7 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "name": "Claude Monitor - Real-time Usage Tracker",
5
5
  "description": "Installs claude-monitor for real-time Claude Code token usage monitoring with ML-based predictions",
6
- "maintainer": "AnExiledDev",
7
6
  "documentationURL": "https://github.com/Maciek-roboblog/Claude-Code-Usage-Monitor",
8
7
  "options": {
9
8
  "version": {
@@ -19,11 +18,6 @@
19
18
  "uv",
20
19
  "pipx",
21
20
  "pip"
22
- ],
23
- "proposals": [
24
- "uv",
25
- "pipx",
26
- "pip"
27
21
  ]
28
22
  },
29
23
  "username": {
@@ -16,14 +16,14 @@ Installs [claude-session-dashboard](https://github.com/dlupiak/claude-session-da
16
16
  | Option | Default | Description |
17
17
  |--------|---------|-------------|
18
18
  | `version` | `latest` | npm package version (`latest`, `1.0.0`, or `none` to skip) |
19
- | `port` | `3000` | Default port for the dashboard server |
19
+ | `port` | `7847` | Default port for the dashboard server |
20
20
  | `shells` | `both` | Shell configs to add alias to (`bash`, `zsh`, `both`) |
21
21
  | `username` | `automatic` | Container user to install for |
22
22
 
23
23
  ## Usage
24
24
 
25
25
  ```bash
26
- # Start the dashboard (default port 3000)
26
+ # Start the dashboard (default port 7847)
27
27
  claude-dashboard
28
28
 
29
29
  # Start on a custom port
@@ -3,7 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "name": "Claude Session Dashboard",
5
5
  "description": "Local analytics dashboard for Claude Code sessions (token usage, tool calls, cost estimates)",
6
- "maintainer": "AnExiledDev",
7
6
  "documentationURL": "https://github.com/dlupiak/claude-session-dashboard",
8
7
  "options": {
9
8
  "version": {
@@ -14,14 +13,13 @@
14
13
  "port": {
15
14
  "type": "string",
16
15
  "description": "Default port for the dashboard server",
17
- "default": "3000"
16
+ "default": "7847"
18
17
  },
19
18
  "shells": {
20
19
  "type": "string",
21
20
  "description": "Which shells to configure aliases in (bash, zsh, or both)",
22
21
  "default": "both",
23
- "enum": ["bash", "zsh", "both"],
24
- "proposals": ["bash", "zsh", "both"]
22
+ "enum": ["bash", "zsh", "both"]
25
23
  },
26
24
  "username": {
27
25
  "type": "string",
@@ -8,7 +8,7 @@ set -euo pipefail
8
8
 
9
9
  # === IMPORT OPTIONS ===
10
10
  DASHBOARD_VERSION="${VERSION:-latest}"
11
- PORT="${PORT:-3000}"
11
+ PORT="${PORT:-7847}"
12
12
  SHELLS="${SHELLS:-both}"
13
13
  USERNAME="${USERNAME:-automatic}"
14
14
 
@@ -112,7 +112,7 @@ chmod +x "${HOOK_SCRIPT}"
112
112
  echo "[claude-session-dashboard] Created poststart hook for settings persistence"
113
113
 
114
114
  # === SHELL ALIASES ===
115
- ALIAS_CMD="alias claude-dashboard=\"claude-dashboard --port ${PORT}\""
115
+ ALIAS_CMD="alias claude-dashboard=\"claude-dashboard --host 0.0.0.0 --port ${PORT}\""
116
116
 
117
117
  configure_shell() {
118
118
  local shell_rc="$1"
@@ -0,0 +1,32 @@
1
+ # kitty-terminfo
2
+
3
+ Installs xterm-kitty terminfo so Kitty terminal users get full color and capability support.
4
+
5
+ ## What It Does
6
+
7
+ Downloads and compiles the official kitty terminfo entry from the [Kitty terminal repository](https://github.com/kovidgoyal/kitty). This ensures Kitty terminal users connecting to the container get proper color rendering, cursor shapes, and terminal capabilities.
8
+
9
+ ## Options
10
+
11
+ | Option | Default | Description |
12
+ |--------|---------|-------------|
13
+ | `version` | `latest` | Set `"none"` to skip installation. |
14
+
15
+ ## Usage
16
+
17
+ No configuration needed. Once installed, containers automatically recognize `TERM=xterm-kitty` and provide full capability support.
18
+
19
+ ```bash
20
+ # Verify installation
21
+ infocmp xterm-kitty
22
+
23
+ # Check color support
24
+ tput colors # should return 256
25
+ ```
26
+
27
+ ## How It Works
28
+
29
+ 1. Checks if `xterm-kitty` terminfo is already present (skips if so)
30
+ 2. Installs `ncurses-bin` if `tic` compiler is not available
31
+ 3. Downloads the official kitty terminfo from GitHub
32
+ 4. Compiles and installs to `/usr/share/terminfo`
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "kitty-terminfo",
3
+ "version": "1.0.0",
4
+ "name": "Kitty Terminal Terminfo",
5
+ "description": "Installs xterm-kitty terminfo so Kitty terminal users get full color and capability support",
6
+ "options": {
7
+ "version": {
8
+ "type": "string",
9
+ "description": "'latest' to install, 'none' to skip",
10
+ "default": "latest"
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,72 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ # ==============================
5
+ # Kitty Terminfo DevContainer Feature
6
+ # Installs xterm-kitty terminfo entry
7
+ # ==============================
8
+
9
+ VERSION="${VERSION:-latest}"
10
+
11
+ # Skip installation if version is "none"
12
+ if [ "${VERSION}" = "none" ]; then
13
+ echo "[kitty-terminfo] Skipping installation (version=none)"
14
+ exit 0
15
+ fi
16
+
17
+ echo "[kitty-terminfo] Starting xterm-kitty terminfo installation..."
18
+
19
+ # ---------- CHECK EXISTING ----------
20
+ if infocmp xterm-kitty >/dev/null 2>&1; then
21
+ echo "[kitty-terminfo] xterm-kitty terminfo already installed — skipping"
22
+ exit 0
23
+ fi
24
+
25
+ # ---------- CHECK TIC ----------
26
+ if ! command -v tic >/dev/null 2>&1; then
27
+ echo "[kitty-terminfo] Installing ncurses-bin for tic compiler..."
28
+ apt-get update -qq && apt-get install -y -qq ncurses-bin
29
+ fi
30
+
31
+ # ---------- DOWNLOAD ----------
32
+ TERMINFO_URL="https://raw.githubusercontent.com/kovidgoyal/kitty/master/terminfo/kitty.terminfo"
33
+ TMPFILE="$(mktemp /tmp/kitty-terminfo.XXXXXX)"
34
+
35
+ cleanup() { rm -f "${TMPFILE}"; }
36
+ trap cleanup EXIT
37
+
38
+ echo "[kitty-terminfo] Downloading kitty terminfo from GitHub..."
39
+ if ! curl -fsSL "${TERMINFO_URL}" -o "${TMPFILE}"; then
40
+ echo "[kitty-terminfo] ERROR: Failed to download kitty terminfo" >&2
41
+ exit 1
42
+ fi
43
+
44
+ # ---------- COMPILE ----------
45
+ echo "[kitty-terminfo] Compiling terminfo entry..."
46
+ if ! tic -x -o /usr/share/terminfo "${TMPFILE}"; then
47
+ echo "[kitty-terminfo] ERROR: Failed to compile terminfo" >&2
48
+ exit 1
49
+ fi
50
+
51
+ # ---------- VERIFY ----------
52
+ if infocmp xterm-kitty >/dev/null 2>&1; then
53
+ echo "[kitty-terminfo] ✓ xterm-kitty terminfo installed successfully"
54
+ else
55
+ echo "[kitty-terminfo] ERROR: xterm-kitty terminfo not found after install" >&2
56
+ exit 1
57
+ fi
58
+
59
+ # ---------- SUMMARY ----------
60
+ echo ""
61
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
62
+ echo " Kitty Terminfo Installation Complete"
63
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
64
+ echo ""
65
+ echo " Kitty terminal users now get full color and"
66
+ echo " capability support when connecting to this"
67
+ echo " container."
68
+ echo ""
69
+ echo " Verify: infocmp xterm-kitty"
70
+ echo " Check: tput colors (should return 256)"
71
+ echo ""
72
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@@ -3,7 +3,6 @@
3
3
  "version": "1.0.0",
4
4
  "name": "LSP Servers for Claude Code",
5
5
  "description": "Installs language server binaries for Python (pyright), TypeScript (typescript-language-server), and Go (gopls)",
6
- "maintainer": "AnExiledDev",
7
6
  "documentationURL": "https://code.claude.com/docs/en/discover-plugins#code-intelligence",
8
7
  "options": {
9
8
  "version": {
@@ -3,7 +3,6 @@
3
3
  "version": "1.0.4",
4
4
  "name": "Qdrant MCP Server",
5
5
  "description": "Installs Qdrant MCP server for vector database integration with AI coding agents",
6
- "maintainer": "AnExiledDev",
7
6
  "documentationURL": "https://github.com/qdrant/mcp-server-qdrant",
8
7
  "options": {
9
8
  "version": {
@@ -40,12 +39,6 @@
40
39
  "BAAI/bge-small-en-v1.5",
41
40
  "sentence-transformers/all-mpnet-base-v2",
42
41
  "BAAI/bge-base-en-v1.5"
43
- ],
44
- "proposals": [
45
- "all-MiniLM-L6-v2",
46
- "BAAI/bge-small-en-v1.5",
47
- "sentence-transformers/all-mpnet-base-v2",
48
- "BAAI/bge-base-en-v1.5"
49
42
  ]
50
43
  },
51
44
  "username": {
@@ -16,9 +16,13 @@ fi
16
16
 
17
17
  echo "[shellcheck] Starting installation..."
18
18
 
19
+ cleanup() {
20
+ apt-get clean -y 2>/dev/null || true
21
+ rm -rf /var/lib/apt/lists/*
22
+ }
23
+ trap cleanup EXIT
24
+
19
25
  apt-get update -y
20
26
  apt-get install -y --no-install-recommends shellcheck
21
- apt-get clean -y
22
- rm -rf /var/lib/apt/lists/*
23
27
 
24
28
  echo "[shellcheck] Installed: $(shellcheck --version 2>/dev/null | head -2 || echo 'unknown')"
@@ -3,7 +3,6 @@
3
3
  "version": "1.1.0",
4
4
  "name": "Tree-sitter Parser",
5
5
  "description": "Installs tree-sitter CLI (via npm) and parsing library with Node.js and Python bindings",
6
- "maintainer": "AnExiledDev",
7
6
  "documentationURL": "https://tree-sitter.github.io/tree-sitter/",
8
7
  "options": {
9
8
  "version": {
@@ -20,12 +19,6 @@
20
19
  "python",
21
20
  "both",
22
21
  "none"
23
- ],
24
- "proposals": [
25
- "node",
26
- "python",
27
- "both",
28
- "none"
29
22
  ]
30
23
  },
31
24
  "installCli": {