codeforge-dev 1.5.8 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/.devcontainer/.env +4 -5
  2. package/.devcontainer/.env.example +29 -0
  3. package/.devcontainer/.gitignore +8 -0
  4. package/.devcontainer/.secrets.example +12 -0
  5. package/.devcontainer/CHANGELOG.md +186 -0
  6. package/.devcontainer/CLAUDE.md +108 -21
  7. package/.devcontainer/README.md +173 -57
  8. package/.devcontainer/config/defaults/keybindings.json +5 -0
  9. package/.devcontainer/config/{main-system-prompt.md → defaults/main-system-prompt.md} +135 -2
  10. package/.devcontainer/config/{settings.json → defaults/settings.json} +25 -6
  11. package/.devcontainer/config/file-manifest.json +20 -0
  12. package/.devcontainer/devcontainer.json +38 -2
  13. package/.devcontainer/docs/configuration-reference.md +90 -0
  14. package/.devcontainer/docs/keybindings.md +100 -0
  15. package/.devcontainer/docs/optional-features.md +129 -0
  16. package/.devcontainer/docs/plugins.md +154 -0
  17. package/.devcontainer/docs/troubleshooting.md +128 -0
  18. package/.devcontainer/features/README.md +21 -7
  19. package/.devcontainer/features/agent-browser/install.sh +6 -0
  20. package/.devcontainer/features/ast-grep/install.sh +6 -0
  21. package/.devcontainer/features/biome/README.md +27 -0
  22. package/.devcontainer/features/biome/install.sh +6 -0
  23. package/.devcontainer/features/ccburn/README.md +60 -0
  24. package/.devcontainer/features/ccburn/devcontainer-feature.json +38 -0
  25. package/.devcontainer/features/ccburn/install.sh +180 -0
  26. package/.devcontainer/features/ccstatusline/README.md +22 -21
  27. package/.devcontainer/features/ccstatusline/devcontainer-feature.json +6 -1
  28. package/.devcontainer/features/ccstatusline/install.sh +55 -16
  29. package/.devcontainer/features/ccusage/install.sh +6 -0
  30. package/.devcontainer/features/claude-monitor/install.sh +6 -0
  31. package/.devcontainer/features/dprint/README.md +30 -0
  32. package/.devcontainer/features/dprint/devcontainer-feature.json +18 -0
  33. package/.devcontainer/features/dprint/install.sh +131 -0
  34. package/.devcontainer/features/hadolint/README.md +35 -0
  35. package/.devcontainer/features/hadolint/devcontainer-feature.json +13 -0
  36. package/.devcontainer/features/hadolint/install.sh +86 -0
  37. package/.devcontainer/features/lsp-servers/devcontainer-feature.json +5 -0
  38. package/.devcontainer/features/lsp-servers/install.sh +7 -0
  39. package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +6 -1
  40. package/.devcontainer/features/mcp-qdrant/install.sh +13 -6
  41. package/.devcontainer/features/mcp-reasoner/devcontainer-feature.json +6 -1
  42. package/.devcontainer/features/mcp-reasoner/install.sh +8 -1
  43. package/.devcontainer/features/notify-hook/devcontainer-feature.json +5 -0
  44. package/.devcontainer/features/notify-hook/install.sh +7 -0
  45. package/.devcontainer/features/ruff/README.md +26 -0
  46. package/.devcontainer/features/ruff/devcontainer-feature.json +21 -0
  47. package/.devcontainer/features/ruff/install.sh +74 -0
  48. package/.devcontainer/features/shellcheck/README.md +38 -0
  49. package/.devcontainer/features/shellcheck/devcontainer-feature.json +13 -0
  50. package/.devcontainer/features/shellcheck/install.sh +24 -0
  51. package/.devcontainer/features/shfmt/README.md +37 -0
  52. package/.devcontainer/features/shfmt/devcontainer-feature.json +13 -0
  53. package/.devcontainer/features/shfmt/install.sh +85 -0
  54. package/.devcontainer/features/splitrail/devcontainer-feature.json +5 -0
  55. package/.devcontainer/features/splitrail/install.sh +7 -0
  56. package/.devcontainer/features/tmux/install.sh +8 -0
  57. package/.devcontainer/features/tree-sitter/install.sh +6 -0
  58. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +3 -10
  59. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +1 -1
  60. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/__pycache__/format-on-stop.cpython-314.pyc +0 -0
  61. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +133 -13
  62. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/.claude-plugin/plugin.json +1 -1
  63. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +4 -5
  64. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/__pycache__/lint-file.cpython-314.pyc +0 -0
  65. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/lint-file.py +477 -78
  66. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/plugin.json +1 -1
  67. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/AGENT-REDIRECTION.md +226 -0
  68. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/REVIEW-RUBRIC.md +440 -0
  69. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/architect.md +207 -0
  70. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/bash-exec.md +173 -0
  71. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/claude-guide.md +146 -0
  72. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +2 -0
  73. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/dependency-analyst.md +250 -0
  74. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/doc-writer.md +246 -0
  75. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/explorer.md +237 -0
  76. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/generalist.md +134 -0
  77. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/git-archaeologist.md +242 -0
  78. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/migrator.md +201 -0
  79. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/perf-profiler.md +265 -0
  80. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/refactorer.md +213 -0
  81. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/researcher.md +195 -0
  82. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/security-auditor.md +289 -0
  83. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/spec-writer.md +297 -0
  84. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/statusline-config.md +188 -0
  85. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/test-writer.md +248 -0
  86. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +51 -0
  87. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/advisory-test-runner.cpython-314.pyc +0 -0
  88. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/collect-edited-files.cpython-314.pyc +0 -0
  89. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/commit-reminder.cpython-314.pyc +0 -0
  90. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/git-state-injector.cpython-314.pyc +0 -0
  91. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/guard-readonly-bash.cpython-314.pyc +0 -0
  92. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/redirect-builtin-agents.cpython-314.pyc +0 -0
  93. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/skill-suggester.cpython-314.pyc +0 -0
  94. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/syntax-validator.cpython-314.pyc +0 -0
  95. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/ticket-linker.cpython-314.pyc +0 -0
  96. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/todo-harvester.cpython-314.pyc +0 -0
  97. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-no-regression.cpython-314.pyc +0 -0
  98. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-tests-pass.cpython-314.pyc +0 -0
  99. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/advisory-test-runner.py +174 -0
  100. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +8 -6
  101. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/commit-reminder.py +90 -0
  102. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/git-state-injector.py +114 -0
  103. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/guard-readonly-bash.py +611 -0
  104. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/redirect-builtin-agents.py +83 -0
  105. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/skill-suggester.py +146 -2
  106. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/syntax-validator.py +9 -4
  107. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/ticket-linker.py +137 -0
  108. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/todo-harvester.py +130 -0
  109. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/verify-no-regression.py +221 -0
  110. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/verify-tests-pass.py +176 -0
  111. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/SKILL.md +224 -0
  112. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/references/error-handling.md +166 -0
  113. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/api-design/references/rest-conventions.md +215 -0
  114. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/ast-grep-patterns/SKILL.md +211 -0
  115. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/ast-grep-patterns/references/language-patterns.md +327 -0
  116. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/claude-agent-sdk/SKILL.md +599 -0
  117. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/claude-agent-sdk/references/sdk-typescript-reference.md +954 -0
  118. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/SKILL.md +134 -0
  119. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/references/ecosystem-commands.md +264 -0
  120. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/dependency-management/references/license-compliance.md +80 -0
  121. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/SKILL.md +153 -0
  122. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/references/api-doc-templates.md +221 -0
  123. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/references/docstring-formats.md +296 -0
  124. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/git-forensics/SKILL.md +276 -0
  125. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/git-forensics/references/advanced-commands.md +332 -0
  126. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/git-forensics/references/investigation-playbooks.md +319 -0
  127. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/SKILL.md +150 -0
  128. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/references/javascript-migrations.md +179 -0
  129. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/migration-patterns/references/python-migrations.md +141 -0
  130. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/performance-profiling/SKILL.md +341 -0
  131. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/performance-profiling/references/interpreting-results.md +235 -0
  132. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/performance-profiling/references/tool-commands.md +395 -0
  133. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/refactoring-patterns/SKILL.md +344 -0
  134. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/refactoring-patterns/references/safe-transformations.md +247 -0
  135. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/refactoring-patterns/references/smell-catalog.md +332 -0
  136. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/security-checklist/SKILL.md +277 -0
  137. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/security-checklist/references/owasp-patterns.md +269 -0
  138. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/security-checklist/references/secrets-patterns.md +253 -0
  139. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/SKILL.md +320 -0
  140. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/references/criteria-patterns.md +245 -0
  141. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/references/ears-templates.md +239 -0
  142. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/__pycache__/block-dangerous.cpython-314.pyc +0 -0
  143. package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/hooks/hooks.json +1 -1
  144. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/__pycache__/guard-protected.cpython-314.pyc +0 -0
  145. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +40 -39
  146. package/.devcontainer/scripts/check-setup.sh +72 -0
  147. package/.devcontainer/scripts/setup-aliases.sh +51 -6
  148. package/.devcontainer/scripts/setup-auth.sh +74 -0
  149. package/.devcontainer/scripts/setup-config.sh +112 -20
  150. package/.devcontainer/scripts/setup-plugins.sh +38 -46
  151. package/.devcontainer/scripts/setup-projects.sh +175 -0
  152. package/.devcontainer/scripts/setup-symlink-claude.sh +36 -0
  153. package/.devcontainer/scripts/setup-update-claude.sh +19 -8
  154. package/.devcontainer/scripts/setup.sh +49 -14
  155. package/README.md +23 -190
  156. package/package.json +1 -1
  157. package/setup.js +245 -71
  158. package/.devcontainer/features/claude-code/README.md +0 -498
  159. package/.devcontainer/features/claude-code/config/settings.json +0 -36
  160. package/.devcontainer/features/claude-code/config/system-prompt.md +0 -118
  161. package/.devcontainer/features/claude-code/config/world-building-sp.md +0 -1432
  162. package/.devcontainer/features/claude-code/devcontainer-feature.json +0 -42
  163. package/.devcontainer/features/claude-code/install.sh +0 -466
  164. package/.devcontainer/plugins/devs-marketplace/plugins/planning-reminder/.claude-plugin/plugin.json +0 -7
  165. package/.devcontainer/plugins/devs-marketplace/plugins/planning-reminder/hooks/hooks.json +0 -17
  166. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/.claude-plugin/plugin.json +0 -6
  167. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/config/planning-instructions.md +0 -14
  168. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/functional-conjuring-map.md +0 -989
  169. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/hooks/hooks.json +0 -33
  170. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/__pycache__/post-enhance-task.cpython-314.pyc +0 -0
  171. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhance-planning.py +0 -71
  172. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhancers/enhance-plan.sh +0 -68
  173. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/enhancers/enhance-task.sh +0 -120
  174. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/post-enhance-plan.py +0 -133
  175. package/.devcontainer/plugins/devs-marketplace/plugins/workflow-enhancer/scripts/post-enhance-task.py +0 -253
  176. package/.devcontainer/scripts/setup-irie-claude.sh +0 -32
@@ -0,0 +1,27 @@
1
+ # Biome
2
+
3
+ Fast JavaScript/TypeScript/JSON/CSS formatter and linter.
4
+
5
+ ## What It Does
6
+
7
+ Installs [Biome](https://biomejs.dev/) globally via npm. Biome is an all-in-one toolchain for web projects, replacing ESLint and Prettier for JS/TS/CSS/JSON formatting and linting.
8
+
9
+ ## Options
10
+
11
+ | Option | Default | Description |
12
+ |--------|---------|-------------|
13
+ | `version` | `latest` | Biome version to install. Set `"none"` to skip. |
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ biome format --write src/
19
+ biome lint src/
20
+ biome check --write src/ # format + lint
21
+ ```
22
+
23
+ ## Configuration
24
+
25
+ Biome is used by the `auto-formatter` and `auto-linter` plugins for JS/TS/CSS/JSON/GraphQL/HTML files. No additional configuration required for basic usage.
26
+
27
+ For project-specific config, create a `biome.json` in your project root. See [Biome docs](https://biomejs.dev/reference/configuration/).
@@ -3,6 +3,12 @@ set -euo pipefail
3
3
 
4
4
  VERSION="${VERSION:-latest}"
5
5
 
6
+ # Skip installation if version is "none"
7
+ if [ "${VERSION}" = "none" ]; then
8
+ echo "[biome] Skipping installation (version=none)"
9
+ exit 0
10
+ fi
11
+
6
12
  echo "[biome] Starting installation..."
7
13
  echo "[biome] Version: ${VERSION}"
8
14
 
@@ -0,0 +1,60 @@
1
+ # ccburn - Visual Token Burn Rate Tracker
2
+
3
+ Real-time burn-up charts and pace tracking for Claude Code usage limits.
4
+
5
+ ## Quick Start
6
+
7
+ ```bash
8
+ # Full TUI dashboard (auto-detects active limit)
9
+ ccburn
10
+
11
+ # 5-hour rolling session limit
12
+ ccburn session
13
+
14
+ # 7-day weekly limit
15
+ ccburn weekly
16
+
17
+ # Single-line output for status bars
18
+ ccburn --compact --once
19
+
20
+ # JSON output for scripting
21
+ ccburn --json --once
22
+ ```
23
+
24
+ ## Features
25
+
26
+ - **Burn-up charts** — Live-updating terminal graphics showing usage over time
27
+ - **Pace indicators** — 🧊 Cool (behind pace) | 🔥 On pace | 🚨 Too hot (ahead)
28
+ - **Burn rate** — %/hour via linear regression, with trend classification
29
+ - **Predictions** — Time-to-100% estimates and projection lines
30
+ - **Multiple limits** — Session (5h), Weekly (7d), Weekly Sonnet, Monthly
31
+ - **SQLite history** — 7-day retention at `~/.ccburn/history.db`
32
+ - **Compact mode** — Single-line output for embedding in statuslines
33
+
34
+ ## Display Modes
35
+
36
+ | Mode | Flag | Description |
37
+ |------|------|-------------|
38
+ | Full TUI | (default) | Interactive dashboard with charts and gauges |
39
+ | Compact | `--compact` | Single line: `Session: 🧊 45% (2h14m) \| Weekly: 🔥 12%` |
40
+ | JSON | `--json` | Structured output with all metrics |
41
+ | Once | `--once` | Single snapshot, no live updates |
42
+
43
+ ## Statusline Integration
44
+
45
+ This feature installs a wrapper at `/usr/local/bin/ccburn-statusline` for use with
46
+ ccstatusline's `custom-command` widget. The wrapper handles:
47
+
48
+ - Missing OAuth credentials (shows "awaiting auth")
49
+ - First-run npx caching (shows "unavailable" if download fails)
50
+ - API errors (graceful fallback messages)
51
+
52
+ ## Requirements
53
+
54
+ - Node.js (via devcontainer node feature)
55
+ - Claude Code OAuth credentials at `~/.claude/.credentials.json`
56
+
57
+ ## Documentation
58
+
59
+ - [GitHub Repository](https://github.com/JuanjoFuchs/ccburn)
60
+ - [ccburn Specification](https://github.com/JuanjoFuchs/ccburn/blob/main/docs/ccburn-spec.md)
@@ -0,0 +1,38 @@
1
+ {
2
+ "id": "ccburn",
3
+ "version": "1.0.0",
4
+ "name": "ccburn - Visual Token Burn Rate Tracker",
5
+ "description": "Installs ccburn CLI for real-time burn-up charts and pace tracking of Claude Code usage limits",
6
+ "maintainer": "AnExiledDev",
7
+ "documentationURL": "https://github.com/JuanjoFuchs/ccburn",
8
+ "options": {
9
+ "version": {
10
+ "type": "string",
11
+ "description": "ccburn version to use (e.g., 'latest', '0.4.2')",
12
+ "default": "latest"
13
+ },
14
+ "shells": {
15
+ "type": "string",
16
+ "description": "Which shells to configure (bash, zsh, or both)",
17
+ "default": "both",
18
+ "enum": [
19
+ "bash",
20
+ "zsh",
21
+ "both"
22
+ ],
23
+ "proposals": [
24
+ "bash",
25
+ "zsh",
26
+ "both"
27
+ ]
28
+ },
29
+ "username": {
30
+ "type": "string",
31
+ "description": "Container user to install for",
32
+ "default": "automatic"
33
+ }
34
+ },
35
+ "installsAfter": [
36
+ "ghcr.io/devcontainers/features/node:1"
37
+ ]
38
+ }
@@ -0,0 +1,180 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ # === SETUP ===
5
+ cleanup() {
6
+ :
7
+ }
8
+ trap cleanup EXIT
9
+
10
+ # === IMPORT OPTIONS ===
11
+ # NOTE: DevContainer converts camelCase options to UPPERCASE without underscores
12
+ CCBURN_VERSION="${VERSION:-latest}"
13
+ SHELLS="${SHELLS:-both}"
14
+ USERNAME="${USERNAME:-automatic}"
15
+
16
+ # Skip installation if version is "none"
17
+ if [ "${CCBURN_VERSION}" = "none" ]; then
18
+ echo "[ccburn] Skipping installation (version=none)"
19
+ exit 0
20
+ fi
21
+
22
+ echo "[ccburn] Starting ccburn installation..."
23
+
24
+ # === SOURCE NVM ===
25
+ if [ -f /usr/local/share/nvm/nvm.sh ]; then
26
+ source /usr/local/share/nvm/nvm.sh
27
+ fi
28
+
29
+ # === VALIDATE DEPENDENCIES ===
30
+ if ! command -v npx &>/dev/null; then
31
+ echo "[ccburn] ERROR: npx is not available"
32
+ echo " Ensure node feature is installed first"
33
+ echo " NVM path: /usr/local/share/nvm/nvm.sh"
34
+ exit 1
35
+ fi
36
+
37
+ # === VALIDATE INPUT ===
38
+ if [[ ! "${SHELLS}" =~ ^(bash|zsh|both)$ ]]; then
39
+ echo "[ccburn] ERROR: shells must be 'bash', 'zsh', or 'both'"
40
+ echo " Provided: ${SHELLS}"
41
+ exit 1
42
+ fi
43
+
44
+ if [[ ! "${CCBURN_VERSION}" =~ ^[a-zA-Z0-9.-]+$ ]]; then
45
+ echo "[ccburn] ERROR: version contains invalid characters"
46
+ echo " Provided: ${CCBURN_VERSION}"
47
+ exit 1
48
+ fi
49
+
50
+ # === DETECT USER ===
51
+ if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then
52
+ USERNAME=""
53
+ for CURRENT_USER in vscode node codespace; do
54
+ if id -u "${CURRENT_USER}" >/dev/null 2>&1; then
55
+ USERNAME=${CURRENT_USER}
56
+ break
57
+ fi
58
+ done
59
+ [ -z "${USERNAME}" ] && USERNAME=root
60
+ elif [ "${USERNAME}" = "none" ] || ! id -u "${USERNAME}" >/dev/null 2>&1; then
61
+ USERNAME=root
62
+ fi
63
+
64
+ echo "[ccburn] Installing for user: ${USERNAME}"
65
+
66
+ # === GET USER HOME ===
67
+ USER_HOME=$(eval echo "~${USERNAME}")
68
+ if [ ! -d "${USER_HOME}" ]; then
69
+ echo "[ccburn] ERROR: Home directory not found for user ${USERNAME}"
70
+ exit 1
71
+ fi
72
+
73
+ # === INSTALL (CREATE ALIASES) ===
74
+ ALIAS_CMD="alias ccburn=\"npx -y ccburn@${CCBURN_VERSION}\""
75
+
76
+ configure_shell() {
77
+ local shell_rc="$1"
78
+ local shell_name="$2"
79
+
80
+ if [ ! -f "${shell_rc}" ]; then
81
+ echo "[ccburn] Creating ${shell_name} config file: ${shell_rc}"
82
+ sudo -u "${USERNAME}" touch "${shell_rc}"
83
+ fi
84
+
85
+ if grep -q "alias ccburn=" "${shell_rc}"; then
86
+ echo "[ccburn] ${shell_name} alias already configured. Skipping..."
87
+ else
88
+ echo "[ccburn] Adding ccburn alias to ${shell_name}"
89
+ echo "${ALIAS_CMD}" >> "${shell_rc}"
90
+ if ! chown "${USERNAME}:${USERNAME}" "${shell_rc}" 2>/dev/null; then
91
+ echo "[ccburn] WARNING: Could not set ownership on ${shell_rc}"
92
+ echo " Fix: sudo chown ${USERNAME}:${USERNAME} ${shell_rc}"
93
+ fi
94
+ fi
95
+ }
96
+
97
+ if [ "${SHELLS}" = "bash" ] || [ "${SHELLS}" = "both" ]; then
98
+ configure_shell "${USER_HOME}/.bashrc" "bash"
99
+ fi
100
+
101
+ if [ "${SHELLS}" = "zsh" ] || [ "${SHELLS}" = "both" ]; then
102
+ configure_shell "${USER_HOME}/.zshrc" "zsh"
103
+ fi
104
+
105
+ # === INSTALL STATUSLINE WRAPPER ===
106
+ # Creates a wrapper script for embedding ccburn compact output in ccstatusline
107
+ # Handles missing credentials, npx availability, and first-run caching gracefully
108
+ echo "[ccburn] Creating statusline wrapper script..."
109
+
110
+ cat > /usr/local/bin/ccburn-statusline <<'WRAPPER_EOF'
111
+ #!/bin/bash
112
+ # ccburn-statusline: Compact output wrapper for ccstatusline custom-command widget
113
+ # Handles missing credentials, first-run npx cache, and errors gracefully
114
+ # Always outputs something useful — never errors in the statusline
115
+
116
+ # Source NVM if available (npx may not be on PATH without it)
117
+ if [ -f /usr/local/share/nvm/nvm.sh ]; then
118
+ source /usr/local/share/nvm/nvm.sh 2>/dev/null
119
+ fi
120
+
121
+ if ! command -v npx &>/dev/null; then
122
+ echo "ccburn: npx unavailable"
123
+ exit 0
124
+ fi
125
+
126
+ # Check if credentials exist (ccburn needs OAuth token)
127
+ CRED_FILE="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/.credentials.json"
128
+ if [ ! -f "$CRED_FILE" ]; then
129
+ echo "ccburn: awaiting auth"
130
+ exit 0
131
+ fi
132
+
133
+ # Run ccburn compact (suppress stderr, capture output)
134
+ OUTPUT=$(npx -y ccburn --compact --once 2>/dev/null)
135
+ if [ $? -eq 0 ] && [ -n "$OUTPUT" ]; then
136
+ echo "$OUTPUT"
137
+ else
138
+ echo "ccburn: unavailable"
139
+ fi
140
+ WRAPPER_EOF
141
+
142
+ chmod +x /usr/local/bin/ccburn-statusline
143
+ echo "[ccburn] ✓ Statusline wrapper installed at /usr/local/bin/ccburn-statusline"
144
+
145
+ # === VERIFICATION ===
146
+ echo "[ccburn] Verifying npx can access ccburn..."
147
+ if sudo -u "${USERNAME}" bash -c "npx -y ccburn@${CCBURN_VERSION} --version" &>/dev/null; then
148
+ echo "[ccburn] ✓ ccburn is accessible"
149
+ else
150
+ echo "[ccburn] WARNING: Could not verify ccburn installation"
151
+ echo " This may be due to network connectivity"
152
+ echo " The alias will still work once ccburn is available"
153
+ fi
154
+
155
+ # === SUMMARY ===
156
+ echo ""
157
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
158
+ echo " ccburn Installation Complete"
159
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
160
+ echo ""
161
+ echo "Configuration:"
162
+ echo " • User: ${USERNAME}"
163
+ echo " • Version: ${CCBURN_VERSION}"
164
+ echo " • Shells: ${SHELLS}"
165
+ echo ""
166
+ echo "Usage:"
167
+ echo " ccburn # Full TUI dashboard (auto-detect limit)"
168
+ echo " ccburn session # 5-hour rolling session limit"
169
+ echo " ccburn weekly # 7-day limit (all models)"
170
+ echo " ccburn weekly-sonnet # 7-day Sonnet-only limit"
171
+ echo " ccburn --compact # Single-line for status bars"
172
+ echo " ccburn --json # JSON output for scripting"
173
+ echo " ccburn --help # Full options"
174
+ echo ""
175
+ echo "Statusline Integration:"
176
+ echo " • Wrapper: /usr/local/bin/ccburn-statusline"
177
+ echo " • Used by ccstatusline custom-command widget"
178
+ echo " • Shows: Session 🧊/🔥/🚨 % | Weekly % | Sonnet %"
179
+ echo ""
180
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@@ -24,26 +24,22 @@ A DevContainer Feature that installs and configures [ccstatusline](https://githu
24
24
 
25
25
  ## Display Format
26
26
 
27
- ### Line 1: Core Metrics
28
- ```
29
- Model: Opus 4.1 ▶ Ctx: 58.5k ▶ main ▶ (+19, -2) ▶ v1.0.86
30
- ```
27
+ ### 6-Line Powerline Layout
31
28
 
32
- - **Model** (maroon bg, white text, bold): Current AI model
33
- - **Context** (gold bg, black text, bold): Context window size
34
- - **Git Branch** (blue bg, white text): Active branch
35
- - **Git Changes** (pink bg, white text): Lines added/removed
36
- - **Version** (light pink bg, white text): Claude Code version
37
-
38
- ### Line 2: Location & Cost
39
29
  ```
40
- cwd: .../workspaces/projectCost: $0.39
30
+ Line 1: Context Length Context % ▶ Model
31
+ Line 2: Tokens In ▶ Tokens Out ▶ Tokens Cached
32
+ Line 3: Git Branch ▶ Git Changes ▶ Git Worktree
33
+ Line 4: Session Clock ▶ Session Cost ▶ Block Timer
34
+ Line 5: Tokens Total ▶ Version ▶ cc --resume {sessionId}
35
+ Line 6: Session: 🧊 45% (2h14m) | Weekly: 🔥 12% | Sonnet: 🧊 3%
41
36
  ```
42
37
 
43
- - **Working Directory** (gold bg, black text): Current directory path
44
- - **Session Cost** (gold bg, black text, bold): Total session cost in USD
38
+ - **Lines 1-4**: Core session metrics, token tracking, git status, and cost
39
+ - **Line 5**: Totals + copyable session resume command for `cc --resume`
40
+ - **Line 6**: Live burn rate from [ccburn](https://github.com/JuanjoFuchs/ccburn) with pace indicators
45
41
 
46
- All widgets connected with powerline arrows for a seamless, professional appearance.
42
+ All widgets connected with powerline arrows (monokai theme).
47
43
 
48
44
  ## What This Feature Installs
49
45
 
@@ -74,10 +70,11 @@ The feature will validate these are present and exit with an error if missing.
74
70
 
75
71
  ## Features
76
72
 
77
- - ✅ **Powerline Mode**: Seamless arrow separators between widgets
78
- - ✅ **Compact Layout**: 2 clean lines with essential metrics
79
- - ✅ **7 Key Widgets**: Model, context, git status, version, directory, cost
80
- - ✅ **Vibrant Colors**: High-contrast truecolor (24-bit hex) optimized for dark terminals
73
+ - ✅ **Powerline Mode**: Seamless arrow separators between widgets (monokai theme)
74
+ - ✅ **6-Line Layout**: 16 widgets covering context, tokens, git, cost, session ID, and burn rate
75
+ - ✅ **Session Resume**: Copyable `cc --resume {sessionId}` command via custom-command widget
76
+ - ✅ **Burn Rate Tracking**: Live ccburn compact output showing pace indicators (🧊/🔥/🚨)
77
+ - ✅ **ANSI Colors**: High-contrast colors optimized for dark terminals
81
78
  - ✅ **Automatic Integration**: Auto-configures `.claude/settings.json`
82
79
  - ✅ **Idempotent**: Safe to run multiple times
83
80
  - ✅ **Multi-user**: Automatically detects container user
@@ -151,7 +148,7 @@ Widgets are configured in the `lines` array:
151
148
  - `session-clock` - Session elapsed time
152
149
  - `session-cost` - Total session cost (USD)
153
150
  - `block-timer` - Block execution time
154
- - `output-style` - Current output style
151
+ - `claude-session-id` - Session ID (raw or with label)
155
152
 
156
153
  **Context Tracking:**
157
154
  - `context-length` - Context window size
@@ -169,11 +166,15 @@ Widgets are configured in the `lines` array:
169
166
  - `git-changes` - Lines added/removed
170
167
  - `git-worktree` - Git worktree info
171
168
 
169
+ **External Metrics (custom-command):**
170
+ - `custom-command` → `/usr/local/bin/ccstatusline-session-resume` - Copyable resume command
171
+ - `custom-command` → `/usr/local/bin/ccburn-statusline` - Burn rate with pace indicators
172
+
172
173
  **Other:**
173
174
  - `cwd` - Current working directory
174
175
  - `version` - Claude Code version
175
176
  - `custom-text` - Static text
176
- - `custom-command` - Command output
177
+ - `custom-command` - Arbitrary command output (receives Claude Code JSON via stdin)
177
178
 
178
179
  ### Color Scheme
179
180
 
@@ -1,11 +1,16 @@
1
1
  {
2
2
  "id": "ccstatusline",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "name": "ccstatusline",
5
5
  "description": "Compact powerline status line for Claude Code with essential metrics",
6
6
  "maintainer": "AnExiledDev",
7
7
  "documentationURL": "https://github.com/sirmalloc/ccstatusline",
8
8
  "options": {
9
+ "version": {
10
+ "type": "string",
11
+ "description": "Version to install (or 'none' to skip installation)",
12
+ "default": "latest"
13
+ },
9
14
  "username": {
10
15
  "type": "string",
11
16
  "description": "Container user to install for",
@@ -3,14 +3,21 @@ set -euo pipefail
3
3
 
4
4
  # Cleanup on exit
5
5
  cleanup() {
6
- rm -f /tmp/ccstatusline-*.json 2>/dev/null || true
6
+ rm -f "${TMPDIR:-/tmp}"/ccstatusline-*.json 2>/dev/null || true
7
7
  }
8
8
  trap cleanup EXIT
9
9
 
10
10
  # Import options from devcontainer-feature.json
11
11
  # NOTE: DevContainer converts camelCase options to UPPERCASE without underscores
12
+ VERSION="${VERSION:-latest}"
12
13
  USERNAME="${USERNAME:-automatic}"
13
14
 
15
+ # Skip installation if version is "none"
16
+ if [ "${VERSION}" = "none" ]; then
17
+ echo "[ccstatusline] Skipping installation (version=none)"
18
+ exit 0
19
+ fi
20
+
14
21
  echo "[ccstatusline] Starting installation..."
15
22
 
16
23
  # Source NVM (Node is installed via NVM by the node feature)
@@ -62,29 +69,39 @@ fi
62
69
  echo "[ccstatusline] Generating powerline configuration..."
63
70
 
64
71
  # Generate powerline configuration using jq (ANSI colors - same as module)
72
+ # 6-line layout with session resume command and ccburn burn rate tracking
65
73
  CONFIG_JSON=$(jq -n '{
66
74
  version: 3,
67
75
  lines: [
68
76
  [
69
77
  {id: "1", type: "context-length", color: "cyan"},
70
- {id: "3", type: "git-branch", color: "brightBlack"},
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
+ [
71
82
  {id: "5", type: "tokens-input", color: "magenta"},
72
- {id: "7", type: "session-clock", color: "yellow"},
73
- {id: "1eafc42e-f222-4090-a463-46de6ba81849", type: "output-style", backgroundColor: "bgBrightBlack"}
83
+ {id: "ac094d46-3673-4d41-84e3-dc8c5bcf639f", type: "tokens-output", backgroundColor: "bgMagenta"},
84
+ {id: "2ad12147-05fd-45fb-8336-53ba2e7df56c", type: "tokens-cached", backgroundColor: "bgBrightRed"}
74
85
  ],
75
86
  [
76
- {id: "db519d5a-80a7-4b44-8a9c-2c7d8c0a7176", type: "context-percentage-usable", backgroundColor: "bgRed"},
87
+ {id: "3", type: "git-branch", color: "brightBlack"},
77
88
  {id: "a529e50e-b9f3-4150-a812-937ab81545e8", type: "git-changes", backgroundColor: "bgBrightBlue"},
78
- {id: "ac094d46-3673-4d41-84e3-dc8c5bcf639f", type: "tokens-output", backgroundColor: "bgMagenta"},
79
- {id: "90aae111-3d3f-4bb0-8336-230f322cc2e8", type: "block-timer", backgroundColor: "bgYellow"},
80
- {id: "d904cca6-ade8-41c1-a4f5-ddea30607a5e", type: "model", backgroundColor: "bgMagenta"}
89
+ {id: "a9eaae3f-7f91-459c-833a-fbc9f01a09ae", type: "git-worktree", backgroundColor: "bgBrightBlue"}
81
90
  ],
82
91
  [
83
- {id: "9bacbdb4-2e01-45de-a0c0-ee6ec30fa3c2", type: "tokens-total", backgroundColor: "bgGreen"},
84
- {id: "a9eaae3f-7f91-459c-833a-fbc9f01a09ae", type: "git-worktree", backgroundColor: "bgBrightBlue"},
85
- {id: "2ad12147-05fd-45fb-8336-53ba2e7df56c", type: "tokens-cached", backgroundColor: "bgBrightRed"},
92
+ {id: "7", type: "session-clock", color: "yellow"},
86
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"},
87
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: "ccburn-compact", type: "custom-command", commandPath: "/usr/local/bin/ccburn-statusline", timeout: 8000, preserveColors: true, maxWidth: 80, color: "green", backgroundColor: "bgBlack"}
88
105
  ]
89
106
  ],
90
107
  flexMode: "full-minus-40",
@@ -95,7 +112,7 @@ CONFIG_JSON=$(jq -n '{
95
112
  powerline: {
96
113
  enabled: true,
97
114
  separators: ["\ue0b0"],
98
- separatorInvertBackground: [true],
115
+ separatorInvertBackground: [false],
99
116
  startCaps: ["\ue0b6"],
100
117
  endCaps: ["\ue0b4"],
101
118
  autoAlign: false,
@@ -146,6 +163,24 @@ echo "${CONFIG_JSON}" | jq . > "${TEMPLATE_FILE}"
146
163
  chmod 644 "${TEMPLATE_FILE}"
147
164
  echo "[ccstatusline] ✓ Template saved to ${TEMPLATE_FILE}"
148
165
 
166
+ # Create session resume helper script for custom-command widget
167
+ # Reads Claude Code JSON from stdin, outputs the session ID
168
+ echo "[ccstatusline] Creating session resume helper..."
169
+ cat > /usr/local/bin/ccstatusline-session-resume <<'SESSION_EOF'
170
+ #!/bin/bash
171
+ # Reads Claude Code JSON from stdin, outputs just the session ID
172
+ # Used by ccstatusline custom-command widget on line 6
173
+ SESSION_ID=$(jq -r '.session_id // empty' 2>/dev/null)
174
+ if [ -n "$SESSION_ID" ]; then
175
+ echo "$SESSION_ID"
176
+ else
177
+ echo "..."
178
+ fi
179
+ SESSION_EOF
180
+
181
+ chmod +x /usr/local/bin/ccstatusline-session-resume
182
+ echo "[ccstatusline] ✓ Session resume helper installed at /usr/local/bin/ccstatusline-session-resume"
183
+
149
184
  # Create wrapper script to protect configuration
150
185
  echo "[ccstatusline] Creating wrapper script..."
151
186
  cat > /usr/local/bin/ccstatusline-wrapper <<'WRAPPER_EOF'
@@ -267,13 +302,17 @@ echo ""
267
302
  echo "Configuration:"
268
303
  echo " • Config file: ${CONFIG_FILE}"
269
304
  echo " • User: ${USERNAME}"
270
- echo " • Theme: Powerline (3 lines, 13 widgets, ANSI colors)"
305
+ echo " • Theme: Powerline (7 lines, 16 widgets, ANSI colors)"
271
306
  echo " • Protected by: /usr/local/bin/ccstatusline-wrapper"
272
307
  echo ""
273
308
  echo "Display:"
274
- echo " Line 1: Context | Git Branch | Tokens In | Clock | Output Style"
275
- echo " Line 2: Context % | Git Changes | Tokens Out | Block Timer | Model"
276
- echo " Line 3: Tokens Total | Git Worktree | Cached | Cost | Version"
309
+ echo " Line 1: Context Length | Context % | Model"
310
+ echo " Line 2: Tokens In | Tokens Out | Tokens Cached"
311
+ echo " Line 3: Git Branch | Git Changes | Git Worktree"
312
+ echo " Line 4: Session Clock | Session Cost | Block Timer"
313
+ echo " Line 5: Tokens Total | Version"
314
+ echo " Line 6: Session ID"
315
+ echo " Line 7: Burn Rate (ccburn compact)"
277
316
  echo ""
278
317
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
279
318
  echo " Next Steps"
@@ -15,6 +15,12 @@ CCUSAGE_VERSION="${VERSION:-latest}"
15
15
  SHELLS="${SHELLS:-both}"
16
16
  USERNAME="${USERNAME:-automatic}"
17
17
 
18
+ # Skip installation if version is "none"
19
+ if [ "${CCUSAGE_VERSION}" = "none" ]; then
20
+ echo "[ccusage] Skipping installation (version=none)"
21
+ exit 0
22
+ fi
23
+
18
24
  echo "[ccusage] Starting ccusage installation..."
19
25
 
20
26
  # === SOURCE NVM ===
@@ -10,6 +10,12 @@ MONITOR_VERSION="${VERSION:-latest}"
10
10
  INSTALLER="${INSTALLER:-uv}"
11
11
  USERNAME="${USERNAME:-automatic}"
12
12
 
13
+ # Skip installation if version is "none"
14
+ if [ "${MONITOR_VERSION}" = "none" ]; then
15
+ echo "[claude-monitor] Skipping installation (version=none)"
16
+ exit 0
17
+ fi
18
+
13
19
  echo "[claude-monitor] Starting installation..."
14
20
 
15
21
  # ---------- USER ----------
@@ -0,0 +1,30 @@
1
+ # dprint
2
+
3
+ Pluggable code formatter for Markdown, YAML, TOML, and Dockerfile.
4
+
5
+ ## What It Does
6
+
7
+ Installs [dprint](https://dprint.dev/) with a global config covering Markdown, YAML, TOML, and Dockerfile formatting. Used by the `auto-formatter` plugin for these file types.
8
+
9
+ ## Options
10
+
11
+ | Option | Default | Description |
12
+ |--------|---------|-------------|
13
+ | `version` | `0.51.1` | dprint version to install. Set `"latest"` for newest, `"none"` to skip. |
14
+ | `username` | `automatic` | Container user to install for. |
15
+
16
+ ## Usage
17
+
18
+ ```bash
19
+ dprint fmt # format files in current directory
20
+ dprint fmt --config /usr/local/share/dprint/dprint.json # use global config
21
+ dprint check # check without modifying
22
+ ```
23
+
24
+ ## Configuration
25
+
26
+ A global config is installed at `/usr/local/share/dprint/dprint.json` with plugins for Markdown, YAML, TOML, and Dockerfile. For project-specific config, create a `dprint.json` in your project root.
27
+
28
+ ## Checksum Verification
29
+
30
+ Downloads are verified against SHA256 checksums published with each GitHub release. If checksums can't be fetched, installation proceeds with a warning.
@@ -0,0 +1,18 @@
1
+ {
2
+ "id": "dprint",
3
+ "version": "1.0.0",
4
+ "name": "dprint",
5
+ "description": "Pluggable code formatter for Markdown, YAML, TOML, and Dockerfile",
6
+ "options": {
7
+ "version": {
8
+ "type": "string",
9
+ "default": "0.51.1",
10
+ "description": "dprint version to install. Set 'latest' to always get newest."
11
+ },
12
+ "username": {
13
+ "type": "string",
14
+ "default": "automatic",
15
+ "description": "Container user to install for"
16
+ }
17
+ }
18
+ }