codeforge-dev 1.11.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/.devcontainer/.env +7 -1
  2. package/.devcontainer/.gitignore +1 -0
  3. package/.devcontainer/CHANGELOG.md +106 -0
  4. package/.devcontainer/CLAUDE.md +93 -15
  5. package/.devcontainer/README.md +44 -10
  6. package/.devcontainer/config/defaults/main-system-prompt.md +28 -0
  7. package/.devcontainer/config/defaults/rules/workspace-scope.md +13 -4
  8. package/.devcontainer/config/defaults/settings.json +5 -3
  9. package/.devcontainer/config/defaults/writing-system-prompt.md +46 -4
  10. package/.devcontainer/connect-external-terminal.ps1 +1 -1
  11. package/.devcontainer/devcontainer.json +41 -11
  12. package/.devcontainer/docs/configuration-reference.md +3 -0
  13. package/.devcontainer/docs/plugins.md +9 -2
  14. package/.devcontainer/docs/troubleshooting.md +2 -2
  15. package/.devcontainer/features/README.md +8 -9
  16. package/.devcontainer/features/agent-browser/devcontainer-feature.json +21 -21
  17. package/.devcontainer/features/agent-browser/install.sh +0 -7
  18. package/.devcontainer/features/ast-grep/devcontainer-feature.json +22 -22
  19. package/.devcontainer/features/biome/devcontainer-feature.json +12 -14
  20. package/.devcontainer/features/ccms/install.sh +30 -13
  21. package/.devcontainer/features/claude-session-dashboard/README.md +40 -0
  22. package/.devcontainer/features/claude-session-dashboard/devcontainer-feature.json +35 -0
  23. package/.devcontainer/features/claude-session-dashboard/install.sh +172 -0
  24. package/.devcontainer/features/lsp-servers/devcontainer-feature.json +43 -43
  25. package/.devcontainer/features/mcp-qdrant/poststart-hook.sh +2 -1
  26. package/.devcontainer/features/ruff/devcontainer-feature.json +17 -19
  27. package/.devcontainer/features/tmux/install.sh +2 -2
  28. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +24 -3
  29. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/.claude-plugin/plugin.json +8 -0
  30. package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/AGENT-REDIRECTION.md +7 -12
  31. package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/REVIEW-RUBRIC.md +1 -1
  32. package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/hooks/hooks.json +29 -0
  33. package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/redirect-builtin-agents.py +17 -6
  34. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/README.md +81 -0
  35. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/README.md +92 -0
  36. package/.devcontainer/plugins/devs-marketplace/plugins/codeforge-lsp/README.md +41 -0
  37. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/README.md +72 -0
  38. package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py +73 -47
  39. package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/README.md +42 -0
  40. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/README.md +86 -0
  41. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/hooks/hooks.json +25 -15
  42. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected-bash.py +122 -0
  43. package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +3 -3
  44. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/.claude-plugin/plugin.json +8 -0
  45. package/.devcontainer/plugins/devs-marketplace/plugins/session-context/hooks/hooks.json +34 -0
  46. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/.claude-plugin/plugin.json +8 -0
  47. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/hooks/hooks.json +29 -0
  48. package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/team/SKILL.md +205 -0
  49. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/.claude-plugin/plugin.json +8 -0
  50. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/hooks/hooks.json +17 -0
  51. package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-init/references/roadmap-template.md +33 -0
  52. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/README.md +96 -0
  53. package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/hooks/hooks.json +17 -0
  54. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/README.md +94 -0
  55. package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py +1 -3
  56. package/.devcontainer/scripts/check-setup.sh +1 -1
  57. package/.devcontainer/scripts/setup-projects.sh +24 -17
  58. package/.devcontainer/scripts/setup.sh +48 -5
  59. package/README.md +17 -8
  60. package/package.json +1 -2
  61. package/.devcontainer/features/mcp-reasoner/README.md +0 -177
  62. package/.devcontainer/features/mcp-reasoner/devcontainer-feature.json +0 -25
  63. package/.devcontainer/features/mcp-reasoner/install.sh +0 -184
  64. package/.devcontainer/features/mcp-reasoner/poststart-hook.sh +0 -67
  65. package/.devcontainer/features/splitrail/README.md +0 -140
  66. package/.devcontainer/features/splitrail/devcontainer-feature.json +0 -39
  67. package/.devcontainer/features/splitrail/install.sh +0 -136
  68. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/plugin.json +0 -8
  69. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +0 -112
  70. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/advisory-test-runner.cpython-314.pyc +0 -0
  71. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/collect-edited-files.cpython-314.pyc +0 -0
  72. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/commit-reminder.cpython-314.pyc +0 -0
  73. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/git-state-injector.cpython-314.pyc +0 -0
  74. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/guard-readonly-bash.cpython-314.pyc +0 -0
  75. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/redirect-builtin-agents.cpython-314.pyc +0 -0
  76. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/skill-suggester.cpython-314.pyc +0 -0
  77. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/syntax-validator.cpython-314.pyc +0 -0
  78. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/ticket-linker.cpython-314.pyc +0 -0
  79. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/todo-harvester.cpython-314.pyc +0 -0
  80. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-no-regression.cpython-314.pyc +0 -0
  81. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/__pycache__/verify-tests-pass.cpython-314.pyc +0 -0
  82. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +0 -46
  83. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/syntax-validator.py +0 -146
  84. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/.claude-plugin/commands/debug.md +0 -0
  85. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/architect.md +0 -0
  86. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/bash-exec.md +0 -0
  87. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/claude-guide.md +0 -0
  88. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/debug-logs.md +0 -0
  89. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/dependency-analyst.md +0 -0
  90. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/doc-writer.md +0 -0
  91. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/explorer.md +0 -0
  92. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/generalist.md +0 -0
  93. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/git-archaeologist.md +0 -0
  94. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/migrator.md +0 -0
  95. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/perf-profiler.md +0 -0
  96. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/refactorer.md +0 -0
  97. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/researcher.md +0 -0
  98. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/security-auditor.md +0 -0
  99. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/spec-writer.md +0 -0
  100. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/statusline-config.md +0 -0
  101. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/agents/test-writer.md +0 -0
  102. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/guard-readonly-bash.py +0 -0
  103. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/inject-cwd.py +0 -0
  104. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/verify-no-regression.py +0 -0
  105. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → agent-system}/scripts/verify-tests-pass.py +0 -0
  106. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → auto-code-quality}/scripts/advisory-test-runner.py +0 -0
  107. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → session-context}/scripts/commit-reminder.py +0 -0
  108. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → session-context}/scripts/git-state-injector.py +0 -0
  109. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → session-context}/scripts/todo-harvester.py +0 -0
  110. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/scripts/skill-suggester.py +0 -0
  111. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/api-design/SKILL.md +0 -0
  112. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/api-design/references/error-handling.md +0 -0
  113. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/api-design/references/rest-conventions.md +0 -0
  114. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/ast-grep-patterns/SKILL.md +0 -0
  115. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/ast-grep-patterns/references/language-patterns.md +0 -0
  116. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-agent-sdk/SKILL.md +0 -0
  117. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-agent-sdk/references/sdk-typescript-reference.md +0 -0
  118. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-code-headless/SKILL.md +0 -0
  119. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-code-headless/references/cli-flags-and-output.md +0 -0
  120. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/claude-code-headless/references/sdk-and-mcp.md +0 -0
  121. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/debugging/SKILL.md +0 -0
  122. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/debugging/references/error-patterns.md +0 -0
  123. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/debugging/references/log-locations.md +0 -0
  124. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/dependency-management/SKILL.md +0 -0
  125. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/dependency-management/references/ecosystem-commands.md +0 -0
  126. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/dependency-management/references/license-compliance.md +0 -0
  127. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker/SKILL.md +0 -0
  128. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker/references/compose-services.md +0 -0
  129. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker/references/dockerfile-patterns.md +0 -0
  130. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker-py/SKILL.md +0 -0
  131. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker-py/references/container-lifecycle.md +0 -0
  132. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/docker-py/references/resources-and-security.md +0 -0
  133. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/documentation-patterns/SKILL.md +0 -0
  134. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/documentation-patterns/references/api-doc-templates.md +0 -0
  135. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/documentation-patterns/references/docstring-formats.md +0 -0
  136. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/SKILL.md +0 -0
  137. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/middleware-and-lifespan.md +0 -0
  138. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/pydantic-models.md +0 -0
  139. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/routing-and-dependencies.md +0 -0
  140. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/fastapi/references/sse-and-streaming.md +0 -0
  141. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/git-forensics/SKILL.md +0 -0
  142. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/git-forensics/references/advanced-commands.md +0 -0
  143. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/git-forensics/references/investigation-playbooks.md +0 -0
  144. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/migration-patterns/SKILL.md +0 -0
  145. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/migration-patterns/references/javascript-migrations.md +0 -0
  146. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/migration-patterns/references/python-migrations.md +0 -0
  147. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/performance-profiling/SKILL.md +0 -0
  148. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/performance-profiling/references/interpreting-results.md +0 -0
  149. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/performance-profiling/references/tool-commands.md +0 -0
  150. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/pydantic-ai/SKILL.md +0 -0
  151. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/pydantic-ai/references/agents-and-tools.md +0 -0
  152. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/pydantic-ai/references/models-and-streaming.md +0 -0
  153. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/refactoring-patterns/SKILL.md +0 -0
  154. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/refactoring-patterns/references/safe-transformations.md +0 -0
  155. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/refactoring-patterns/references/smell-catalog.md +0 -0
  156. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/security-checklist/SKILL.md +0 -0
  157. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/security-checklist/references/owasp-patterns.md +0 -0
  158. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/security-checklist/references/secrets-patterns.md +0 -0
  159. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/SKILL.md +0 -0
  160. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/references/cross-vendor-principles.md +0 -0
  161. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/references/patterns-and-antipatterns.md +0 -0
  162. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/skill-building/references/skill-authoring-patterns.md +0 -0
  163. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/SKILL.md +0 -0
  164. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/advanced-queries.md +0 -0
  165. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/javascript-patterns.md +0 -0
  166. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/python-patterns.md +0 -0
  167. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/sqlite/references/schema-and-pragmas.md +0 -0
  168. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/SKILL.md +0 -0
  169. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/ai-sdk-svelte.md +0 -0
  170. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/component-patterns.md +0 -0
  171. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/layercake.md +0 -0
  172. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/migration-guide.md +0 -0
  173. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/runes-and-reactivity.md +0 -0
  174. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/spa-and-routing.md +0 -0
  175. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/svelte5/references/svelte-dnd-action.md +0 -0
  176. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/testing/SKILL.md +0 -0
  177. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/testing/references/fastapi-testing.md +0 -0
  178. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → skill-engine}/skills/testing/references/svelte-testing.md +0 -0
  179. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/scripts/spec-reminder.py +0 -0
  180. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-build/SKILL.md +0 -0
  181. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-build/references/review-checklist.md +0 -0
  182. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-check/SKILL.md +0 -0
  183. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-init/SKILL.md +0 -0
  184. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-init/references/backlog-template.md +0 -0
  185. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-init/references/milestones-template.md +0 -0
  186. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-new/SKILL.md +0 -0
  187. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-new/references/template.md +0 -0
  188. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-refine/SKILL.md +0 -0
  189. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-review/SKILL.md +0 -0
  190. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/spec-update/SKILL.md +0 -0
  191. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/specification-writing/SKILL.md +0 -0
  192. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/specification-writing/references/criteria-patterns.md +0 -0
  193. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → spec-workflow}/skills/specification-writing/references/ears-templates.md +0 -0
  194. /package/.devcontainer/plugins/devs-marketplace/plugins/{code-directive → ticket-workflow}/scripts/ticket-linker.py +0 -0
@@ -1,39 +0,0 @@
1
- {
2
- "id": "splitrail",
3
- "version": "1.0.1",
4
- "name": "Splitrail Token Usage Tracker",
5
- "description": "Installs Splitrail - real-time AI token usage tracker and cost monitor",
6
- "maintainer": "AnExiledDev",
7
- "documentationURL": "https://github.com/Piebald-AI/splitrail",
8
- "options": {
9
- "version": {
10
- "type": "string",
11
- "description": "Version to install (or 'none' to skip installation)",
12
- "default": "latest"
13
- },
14
- "repoUrl": {
15
- "type": "string",
16
- "description": "Git repository URL for splitrail",
17
- "default": "https://github.com/Piebald-AI/splitrail.git"
18
- },
19
- "branch": {
20
- "type": "string",
21
- "description": "Git branch to checkout",
22
- "default": "main"
23
- },
24
- "username": {
25
- "type": "string",
26
- "description": "Container user to install for",
27
- "default": "automatic"
28
- }
29
- },
30
- "installsAfter": [
31
- "ghcr.io/devcontainers/features/rust:1",
32
- "ghcr.io/devcontainers/features/common-utils:2"
33
- ],
34
- "customizations": {
35
- "vscode": {
36
- "extensions": []
37
- }
38
- }
39
- }
@@ -1,136 +0,0 @@
1
- #!/bin/bash
2
- set -euo pipefail
3
-
4
- # Cleanup on exit
5
- cleanup() {
6
- rm -f /tmp/splitrail-* 2>/dev/null || true
7
- }
8
- trap cleanup EXIT
9
-
10
- # Import options
11
- # NOTE: DevContainer converts camelCase to UPPERCASE without underscores
12
- VERSION="${VERSION:-latest}"
13
- REPO_URL="${REPOURL:-https://github.com/Piebald-AI/splitrail.git}"
14
- BRANCH="${BRANCH:-main}"
15
- USERNAME="${USERNAME:-automatic}"
16
-
17
- # Skip installation if version is "none"
18
- if [ "${VERSION}" = "none" ]; then
19
- echo "[splitrail] Skipping installation (version=none)"
20
- exit 0
21
- fi
22
-
23
- echo "[splitrail] Starting Splitrail installation..."
24
-
25
- # Validate git is available
26
- if ! command -v git &>/dev/null; then
27
- echo "[splitrail] ERROR: git is not available"
28
- exit 1
29
- fi
30
-
31
- # Validate cargo is available
32
- if ! command -v cargo &>/dev/null; then
33
- echo "[splitrail] ERROR: cargo is not available. Please ensure Rust feature is installed first."
34
- echo " Expected cargo at: /usr/local/cargo/bin/cargo"
35
- exit 1
36
- fi
37
-
38
- # Validate input parameters
39
- if [ -n "${REPO_URL}" ]; then
40
- if [[ ! "${REPO_URL}" =~ ^https?:// ]] && [[ ! "${REPO_URL}" =~ ^git@.+:.+\.git$ ]]; then
41
- echo "[splitrail] ERROR: repoUrl must be a valid git URL"
42
- echo " Provided: ${REPO_URL}"
43
- echo " Expected: https://... or git@github.com:.../*.git"
44
- exit 1
45
- fi
46
- fi
47
-
48
- # Determine the user
49
- if [ "${USERNAME}" = "auto" ] || [ "${USERNAME}" = "automatic" ]; then
50
- USERNAME=""
51
- for CURRENT_USER in vscode node codespace; do
52
- if id -u "${CURRENT_USER}" >/dev/null 2>&1; then
53
- USERNAME=${CURRENT_USER}
54
- break
55
- fi
56
- done
57
- [ -z "${USERNAME}" ] && USERNAME=root
58
- elif [ "${USERNAME}" = "none" ] || ! id -u "${USERNAME}" >/dev/null 2>&1; then
59
- USERNAME=root
60
- fi
61
-
62
- echo "[splitrail] Installing for user: ${USERNAME}"
63
-
64
- INSTALL_DIR="/home/${USERNAME}/splitrail"
65
- BINARY="/home/${USERNAME}/.cargo/bin/splitrail"
66
-
67
- if [[ -f "$BINARY" ]]; then
68
- echo "[splitrail] Splitrail already installed at $BINARY. Skipping..."
69
- else
70
- echo "[splitrail] Installing Splitrail (Rust compilation - may take 2-3 minutes)..."
71
-
72
- # Use explicit cargo path and rustup home (global installation from devcontainer Rust feature)
73
- export PATH="/usr/local/cargo/bin:$PATH"
74
- export RUSTUP_HOME="/usr/local/rustup"
75
-
76
- # Fix permissions on rustup directories for non-root user access during build
77
- mkdir -p /usr/local/rustup/tmp
78
- chmod -R 777 /usr/local/rustup 2>/dev/null || true
79
-
80
- # Clone and build as detected user
81
- sudo -u "${USERNAME}" bash -c "
82
- # Use explicit cargo path and rustup home for user context
83
- export PATH=\"/usr/local/cargo/bin:\$PATH\"
84
- export RUSTUP_HOME=\"/usr/local/rustup\"
85
-
86
- cd /home/${USERNAME}
87
- rm -rf splitrail
88
-
89
- echo \"[splitrail] → Cloning splitrail repository...\"
90
- git clone -b \"${BRANCH}\" \"${REPO_URL}\" splitrail
91
- cd splitrail
92
-
93
- echo \"[splitrail] → Compiling splitrail (this will take a few minutes)...\"
94
- cargo build --release
95
-
96
- echo \"[splitrail] → Installing binary...\"
97
- cargo install --path .
98
- "
99
-
100
- # Verify installation
101
- if [[ ! -f "$BINARY" ]]; then
102
- echo "[splitrail] ERROR: Splitrail compilation failed - binary not found"
103
- echo " Expected location: $BINARY"
104
- echo " Check build output above for errors"
105
- exit 1
106
- fi
107
-
108
- echo "[splitrail] ✓ Splitrail installed successfully at $BINARY"
109
- fi
110
-
111
- echo ""
112
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
113
- echo " Splitrail Installation Complete"
114
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
115
- echo ""
116
- echo "Configuration:"
117
- echo " • Install Path: ${INSTALL_DIR}"
118
- echo " • Binary: ${BINARY}"
119
- echo " • Repository: ${REPO_URL}"
120
- echo " • Branch: ${BRANCH}"
121
- echo " • User: ${USERNAME}"
122
- echo ""
123
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
124
- echo " Next Steps"
125
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
126
- echo ""
127
- echo "1. Test the binary:"
128
- echo " splitrail --version"
129
- echo ""
130
- echo "2. Start monitoring:"
131
- echo " splitrail"
132
- echo ""
133
- echo "3. View help:"
134
- echo " splitrail --help"
135
- echo ""
136
- echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
@@ -1,8 +0,0 @@
1
- {
2
- "name": "code-directive",
3
- "description": "17 custom agents, 16 coding skills, agent redirection, syntax validation, and skill auto-suggestion",
4
- "version": "1.0.0",
5
- "author": {
6
- "name": "AnExiledDev"
7
- }
8
- }
@@ -1,112 +0,0 @@
1
- {
2
- "description": "Code quality hooks and skill suggestions for the CodeDirective project",
3
- "hooks": {
4
- "PreToolUse": [
5
- {
6
- "matcher": "Task",
7
- "hooks": [
8
- {
9
- "type": "command",
10
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/redirect-builtin-agents.py",
11
- "timeout": 5
12
- }
13
- ]
14
- }
15
- ],
16
- "UserPromptSubmit": [
17
- {
18
- "matcher": "*",
19
- "hooks": [
20
- {
21
- "type": "command",
22
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/skill-suggester.py",
23
- "timeout": 3
24
- },
25
- {
26
- "type": "command",
27
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/ticket-linker.py",
28
- "timeout": 12
29
- }
30
- ]
31
- }
32
- ],
33
- "SubagentStart": [
34
- {
35
- "matcher": "Plan",
36
- "hooks": [
37
- {
38
- "type": "command",
39
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/skill-suggester.py",
40
- "timeout": 3
41
- }
42
- ]
43
- },
44
- {
45
- "matcher": "",
46
- "hooks": [
47
- {
48
- "type": "command",
49
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/inject-cwd.py",
50
- "timeout": 3
51
- }
52
- ]
53
- }
54
- ],
55
- "Stop": [
56
- {
57
- "matcher": "",
58
- "hooks": [
59
- {
60
- "type": "command",
61
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/advisory-test-runner.py",
62
- "timeout": 20
63
- },
64
- {
65
- "type": "command",
66
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/commit-reminder.py",
67
- "timeout": 8
68
- },
69
- {
70
- "type": "command",
71
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/spec-reminder.py",
72
- "timeout": 8
73
- }
74
- ]
75
- }
76
- ],
77
- "SessionStart": [
78
- {
79
- "matcher": "",
80
- "hooks": [
81
- {
82
- "type": "command",
83
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/git-state-injector.py",
84
- "timeout": 10
85
- },
86
- {
87
- "type": "command",
88
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/todo-harvester.py",
89
- "timeout": 8
90
- }
91
- ]
92
- }
93
- ],
94
- "PostToolUse": [
95
- {
96
- "matcher": "Edit|Write",
97
- "hooks": [
98
- {
99
- "type": "command",
100
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/syntax-validator.py",
101
- "timeout": 5
102
- },
103
- {
104
- "type": "command",
105
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/collect-edited-files.py",
106
- "timeout": 3
107
- }
108
- ]
109
- }
110
- ]
111
- }
112
- }
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Collect edited file paths for batch formatting at Stop.
4
-
5
- Lightweight PostToolUse hook that appends the edited file path
6
- to a session-scoped temp file. The auto-formatter Stop hook
7
- reads this file to know which files need formatting.
8
-
9
- Non-blocking: always exits 0. Runs in <10ms.
10
- """
11
-
12
- import json
13
- import os
14
- import sys
15
-
16
-
17
- def main():
18
- try:
19
- input_data = json.load(sys.stdin)
20
- except (json.JSONDecodeError, ValueError):
21
- sys.exit(0)
22
-
23
- session_id = input_data.get("session_id", "")
24
- tool_input = input_data.get("tool_input", {})
25
- file_path = tool_input.get("file_path", "")
26
-
27
- if not file_path or not session_id:
28
- sys.exit(0)
29
-
30
- if not os.path.isfile(file_path):
31
- sys.exit(0)
32
-
33
- # Write to both formatter and linter temp files (independent pipelines)
34
- for prefix in ("claude-edited-files", "claude-lint-files"):
35
- tmp_path = f"/tmp/{prefix}-{session_id}"
36
- try:
37
- with open(tmp_path, "a") as f:
38
- f.write(file_path + "\n")
39
- except OSError:
40
- pass # non-critical, don't block Claude
41
-
42
- sys.exit(0)
43
-
44
-
45
- if __name__ == "__main__":
46
- main()
@@ -1,146 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Data file syntax validator.
4
-
5
- Validates JSON, JSONC, YAML, and TOML files after editing.
6
- Uses Python stdlib only (plus PyYAML if available).
7
-
8
- Reads tool input from stdin, validates syntax, reports errors.
9
- Non-blocking: always exits 0.
10
- """
11
-
12
- import json
13
- import os
14
- import re
15
- import sys
16
- from pathlib import Path
17
-
18
- EXTENSIONS = {".json", ".jsonc", ".yaml", ".yml", ".toml"}
19
-
20
-
21
- def strip_jsonc_comments(text: str) -> str:
22
- """Remove // and /* */ comments from JSONC text.
23
-
24
- Handles URLs (https://...) by only stripping // comments that are
25
- preceded by whitespace or appear at line start, not those inside strings.
26
- """
27
- # Remove multi-line comments first
28
- text = re.sub(r"/\*.*?\*/", "", text, flags=re.DOTALL)
29
- # Remove single-line comments: // preceded by start-of-line or whitespace
30
- # This avoids stripping :// in URLs
31
- text = re.sub(r"(^|[\s,\[\{])//.*$", r"\1", text, flags=re.MULTILINE)
32
- return text
33
-
34
-
35
- def validate_json(file_path: str, is_jsonc: bool) -> str:
36
- """Validate JSON/JSONC syntax.
37
-
38
- Returns:
39
- Error message string, or empty string if valid.
40
- """
41
- with open(file_path, "r", encoding="utf-8") as f:
42
- content = f.read()
43
-
44
- if is_jsonc:
45
- content = strip_jsonc_comments(content)
46
-
47
- try:
48
- json.loads(content)
49
- return ""
50
- except json.JSONDecodeError as e:
51
- return f"[Syntax] JSON error at line {e.lineno}, col {e.colno}: {e.msg}"
52
-
53
-
54
- def validate_yaml(file_path: str) -> str:
55
- """Validate YAML syntax.
56
-
57
- Returns:
58
- Error message string, or empty string if valid.
59
- """
60
- try:
61
- import yaml
62
- except ImportError:
63
- return "" # PyYAML not available, skip
64
-
65
- try:
66
- with open(file_path, "r", encoding="utf-8") as f:
67
- yaml.safe_load(f)
68
- return ""
69
- except yaml.YAMLError as e:
70
- if hasattr(e, "problem_mark"):
71
- mark = e.problem_mark
72
- return f"[Syntax] YAML error at line {mark.line + 1}, col {mark.column + 1}: {e.problem}"
73
- return f"[Syntax] YAML error: {e}"
74
-
75
-
76
- def validate_toml(file_path: str) -> str:
77
- """Validate TOML syntax.
78
-
79
- Returns:
80
- Error message string, or empty string if valid.
81
- """
82
- try:
83
- import tomllib
84
- except ImportError:
85
- return "" # Python < 3.11, skip
86
-
87
- try:
88
- with open(file_path, "rb") as f:
89
- tomllib.load(f)
90
- return ""
91
- except tomllib.TOMLDecodeError as e:
92
- return f"[Syntax] TOML error: {e}"
93
-
94
-
95
- def validate(file_path: str) -> str:
96
- """Validate file syntax based on extension.
97
-
98
- Returns:
99
- Error message string, or empty string if valid.
100
- """
101
- ext = Path(file_path).suffix.lower()
102
-
103
- if ext == ".jsonc":
104
- return validate_json(file_path, is_jsonc=True)
105
- elif ext == ".json":
106
- return validate_json(file_path, is_jsonc=False)
107
- elif ext in {".yaml", ".yml"}:
108
- return validate_yaml(file_path)
109
- elif ext == ".toml":
110
- return validate_toml(file_path)
111
-
112
- return ""
113
-
114
-
115
- def main():
116
- try:
117
- input_data = json.load(sys.stdin)
118
- tool_input = input_data.get("tool_input", {})
119
- file_path = tool_input.get("file_path", "")
120
-
121
- if not file_path:
122
- sys.exit(0)
123
-
124
- ext = Path(file_path).suffix.lower()
125
- if ext not in EXTENSIONS:
126
- sys.exit(0)
127
-
128
- if not os.path.isfile(file_path):
129
- sys.exit(0)
130
-
131
- message = validate(file_path)
132
-
133
- if message:
134
- print(json.dumps({"additionalContext": message}))
135
-
136
- sys.exit(0)
137
-
138
- except json.JSONDecodeError:
139
- sys.exit(0)
140
- except Exception as e:
141
- print(f"Hook error: {e}", file=sys.stderr)
142
- sys.exit(0)
143
-
144
-
145
- if __name__ == "__main__":
146
- main()