codeforge-dev 1.4.0 → 1.5.1

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 (71) hide show
  1. package/.devcontainer/.env +4 -1
  2. package/.devcontainer/CHANGELOG.md +117 -0
  3. package/.devcontainer/README.md +7 -3
  4. package/.devcontainer/config/main-system-prompt.md +10 -0
  5. package/.devcontainer/config/settings.json +9 -5
  6. package/.devcontainer/connect-external-terminal.ps1 +86 -0
  7. package/.devcontainer/connect-external-terminal.sh +78 -0
  8. package/.devcontainer/devcontainer.json +9 -4
  9. package/.devcontainer/features/agent-browser/install.sh +5 -5
  10. package/.devcontainer/features/biome/devcontainer-feature.json +16 -0
  11. package/.devcontainer/features/biome/install.sh +19 -0
  12. package/.devcontainer/features/tmux/README.md +75 -0
  13. package/.devcontainer/features/tmux/devcontainer-feature.json +17 -0
  14. package/.devcontainer/features/tmux/install.sh +52 -0
  15. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +2 -2
  16. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +1 -1
  17. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/hooks/hooks.json +5 -5
  18. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +177 -0
  19. package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +2 -1
  20. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/.claude-plugin/commands/debug.md +86 -0
  21. package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/.claude-plugin/plugin.json +1 -1
  22. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +149 -0
  23. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +46 -0
  24. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/collect-edited-files.py +44 -0
  25. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/skill-suggester.py +229 -0
  26. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/syntax-validator.py +141 -0
  27. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/SKILL.md +165 -0
  28. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/references/error-patterns.md +530 -0
  29. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/debugging/references/log-locations.md +430 -0
  30. package/.devcontainer/scripts/setup-update-claude.sh +123 -0
  31. package/.devcontainer/scripts/setup.sh +13 -1
  32. package/README.md +13 -9
  33. package/package.json +1 -1
  34. package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-file.py +0 -101
  35. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/SKILL.md +0 -0
  36. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/references/cli-flags-and-output.md +0 -0
  37. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/claude-code-headless/references/sdk-and-mcp.md +0 -0
  38. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/SKILL.md +0 -0
  39. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/references/compose-services.md +0 -0
  40. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker/references/dockerfile-patterns.md +0 -0
  41. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/SKILL.md +0 -0
  42. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/references/container-lifecycle.md +0 -0
  43. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/docker-py/references/resources-and-security.md +0 -0
  44. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/SKILL.md +0 -0
  45. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/middleware-and-lifespan.md +0 -0
  46. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/pydantic-models.md +0 -0
  47. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/routing-and-dependencies.md +0 -0
  48. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/fastapi/references/sse-and-streaming.md +0 -0
  49. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/SKILL.md +0 -0
  50. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/references/agents-and-tools.md +0 -0
  51. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/pydantic-ai/references/models-and-streaming.md +0 -0
  52. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/SKILL.md +0 -0
  53. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/cross-vendor-principles.md +0 -0
  54. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/patterns-and-antipatterns.md +0 -0
  55. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/skill-building/references/skill-authoring-patterns.md +0 -0
  56. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/SKILL.md +0 -0
  57. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/advanced-queries.md +0 -0
  58. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/javascript-patterns.md +0 -0
  59. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/python-patterns.md +0 -0
  60. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/sqlite/references/schema-and-pragmas.md +0 -0
  61. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/SKILL.md +0 -0
  62. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/ai-sdk-svelte.md +0 -0
  63. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/component-patterns.md +0 -0
  64. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/layercake.md +0 -0
  65. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/migration-guide.md +0 -0
  66. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/runes-and-reactivity.md +0 -0
  67. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/spa-and-routing.md +0 -0
  68. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/svelte5/references/svelte-dnd-action.md +0 -0
  69. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/SKILL.md +0 -0
  70. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/references/fastapi-testing.md +0 -0
  71. /package/.devcontainer/plugins/devs-marketplace/plugins/{codedirective-skills → code-directive}/skills/testing/references/svelte-testing.md +0 -0
@@ -1,101 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Auto-format files after editing.
4
-
5
- Reads tool input from stdin, detects file type by extension,
6
- runs appropriate formatter if available.
7
- Outputs JSON with additionalContext on success.
8
- Non-blocking: exit 0 regardless of formatting result.
9
- """
10
-
11
- import json
12
- import os
13
- import subprocess
14
- import sys
15
- from pathlib import Path
16
-
17
- # Formatter configuration: extension -> (command, args, name)
18
- FORMATTERS = {
19
- ".py": ("/usr/local/py-utils/bin/black", ["--quiet"], "Black"),
20
- ".pyi": ("/usr/local/py-utils/bin/black", ["--quiet"], "Black"),
21
- ".go": ("/usr/local/go/bin/gofmt", ["-w"], "gofmt"),
22
- }
23
-
24
-
25
- def get_formatter(file_path: str) -> tuple[str, list[str], str] | None:
26
- """Get formatter config for file extension."""
27
- ext = Path(file_path).suffix.lower()
28
- return FORMATTERS.get(ext)
29
-
30
-
31
- def format_file(file_path: str) -> tuple[bool, str]:
32
- """Run formatter on file.
33
-
34
- Returns:
35
- (success, message)
36
- """
37
- formatter = get_formatter(file_path)
38
- if formatter is None:
39
- return True, "" # No formatter available, that's OK
40
-
41
- cmd_path, args, name = formatter
42
-
43
- # Check if formatter exists
44
- if not os.path.exists(cmd_path):
45
- return True, f"[Auto-formatter] {name} not found, skipping"
46
-
47
- # Check if file exists
48
- if not os.path.exists(file_path):
49
- return True, ""
50
-
51
- try:
52
- # Run formatter
53
- cmd = [cmd_path] + args + [file_path]
54
- result = subprocess.run(
55
- cmd,
56
- capture_output=True,
57
- text=True,
58
- timeout=25
59
- )
60
-
61
- if result.returncode == 0:
62
- return True, f"[Auto-formatter] Formatted with {name}"
63
- else:
64
- # Formatting failed, but don't block
65
- error = result.stderr.strip() if result.stderr else "Unknown error"
66
- return True, f"[Auto-formatter] {name} warning: {error}"
67
-
68
- except subprocess.TimeoutExpired:
69
- return True, f"[Auto-formatter] {name} timed out"
70
- except Exception as e:
71
- return True, f"[Auto-formatter] Error: {e}"
72
-
73
-
74
- def main():
75
- try:
76
- input_data = json.load(sys.stdin)
77
- tool_input = input_data.get("tool_input", {})
78
- file_path = tool_input.get("file_path", "")
79
-
80
- if not file_path:
81
- sys.exit(0)
82
-
83
- _, message = format_file(file_path)
84
-
85
- if message:
86
- # Output context for Claude
87
- print(json.dumps({
88
- "additionalContext": message
89
- }))
90
-
91
- sys.exit(0)
92
-
93
- except json.JSONDecodeError:
94
- sys.exit(0)
95
- except Exception as e:
96
- print(f"Hook error: {e}", file=sys.stderr)
97
- sys.exit(0)
98
-
99
-
100
- if __name__ == "__main__":
101
- main()