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,6 +66,34 @@ The Bash guard parses commands for write-indicating patterns and extracts the ta
66
66
 
67
67
  Both hooks have a 5-second timeout.
68
68
 
69
+ ## Installation
70
+
71
+ ### CodeForge DevContainer
72
+
73
+ Pre-installed and activated automatically — no setup needed.
74
+
75
+ ### From GitHub
76
+
77
+ Use this plugin in any Claude Code setup:
78
+
79
+ 1. Clone the [CodeForge](https://github.com/AnExiledDev/CodeForge) repository:
80
+
81
+ ```bash
82
+ git clone https://github.com/AnExiledDev/CodeForge.git
83
+ ```
84
+
85
+ 2. Enable the plugin in your `.claude/settings.json`:
86
+
87
+ ```json
88
+ {
89
+ "enabledPlugins": {
90
+ "protected-files-guard@<clone-path>/.devcontainer/plugins/devs-marketplace": true
91
+ }
92
+ }
93
+ ```
94
+
95
+ Replace `<clone-path>` with the absolute path to your CodeForge clone.
96
+
69
97
  ## Plugin Structure
70
98
 
71
99
  ```
@@ -104,7 +104,7 @@ def main():
104
104
  for target in targets:
105
105
  is_protected, message = check_path(target)
106
106
  if is_protected:
107
- print(json.dumps({"error": f"{message} (via bash command)"}))
107
+ print(f"{message} (via bash command)", file=sys.stderr)
108
108
  sys.exit(2)
109
109
 
110
110
  sys.exit(0)
@@ -89,8 +89,8 @@ def main():
89
89
  is_protected, message = check_path(file_path)
90
90
 
91
91
  if is_protected:
92
- # Output error message and exit 2 to block
93
- print(json.dumps({"error": message}))
92
+ # Output error to stderr (exit 2 ignores stdout)
93
+ print(message, file=sys.stderr)
94
94
  sys.exit(2)
95
95
 
96
96
  # Allow edit to proceed
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "session-context",
3
3
  "description": "Session lifecycle hooks: git state injection, TODO harvesting, and commit reminders",
4
- "version": "1.0.0",
5
4
  "author": {
6
5
  "name": "AnExiledDev"
7
6
  }
@@ -0,0 +1,140 @@
1
+ # session-context
2
+
3
+ Claude Code plugin that injects contextual information at session boundaries. Provides git state awareness at session start, surfaces TODO/FIXME markers, and reminds about uncommitted changes when Claude finishes responding.
4
+
5
+ ## What It Does
6
+
7
+ Three hooks that run automatically at session lifecycle boundaries:
8
+
9
+ | Phase | Script | What It Injects |
10
+ |-------|--------|-----------------|
11
+ | Session start | `git-state-injector.py` | Current branch, status, recent commits, uncommitted changes |
12
+ | Session start | `todo-harvester.py` | Count and top 10 TODO/FIXME/HACK/XXX markers in the codebase |
13
+ | Stop | `commit-reminder.py` | Advisory about staged/unstaged changes that should be committed |
14
+
15
+ All hooks are non-blocking and cap their output to prevent context bloat.
16
+
17
+ ### Git State Injection
18
+
19
+ Runs at session start and injects:
20
+ - Current branch name
21
+ - Working tree status (up to 20 lines)
22
+ - Recent commit log
23
+ - Diff stat of uncommitted changes (up to 15 lines)
24
+ - Total output capped at 2000 characters
25
+
26
+ ### TODO Harvesting
27
+
28
+ Scans source files for tech debt markers and injects a summary:
29
+ - Searches for `TODO`, `FIXME`, `HACK`, `XXX` comments
30
+ - File types: `.py`, `.ts`, `.tsx`, `.js`, `.jsx`, `.go`, `.rs`, `.sh`, `.svelte`, `.vue`, `.rb`, `.java`, `.kt`
31
+ - Shows total count plus top 10 items
32
+ - Output capped at 800 characters
33
+
34
+ ### Commit Reminder
35
+
36
+ Fires when Claude stops responding and checks for uncommitted work:
37
+ - Detects staged and unstaged changes
38
+ - Injects an advisory so Claude can naturally ask if the user wants to commit
39
+ - Uses a guard flag to prevent infinite loops (the reminder itself is a Stop event)
40
+
41
+ ## How It Works
42
+
43
+ ### Hook Lifecycle
44
+
45
+ ```
46
+ Session starts
47
+ |
48
+ +-> SessionStart fires
49
+ | |
50
+ | +-> git-state-injector.py
51
+ | | |
52
+ | | +-> Runs git branch, status, log, diff --stat
53
+ | | +-> Caps output, injects as additionalContext
54
+ | |
55
+ | +-> todo-harvester.py
56
+ | |
57
+ | +-> Greps codebase for TODO/FIXME/HACK/XXX
58
+ | +-> Injects count + top 10 as additionalContext
59
+ |
60
+ | ... Claude works ...
61
+ |
62
+ Claude stops responding
63
+ |
64
+ +-> Stop fires
65
+ |
66
+ +-> commit-reminder.py
67
+ |
68
+ +-> Checks git status for changes
69
+ +-> Has changes? -> Inject commit advisory
70
+ +-> No changes? -> Silent (no output)
71
+ ```
72
+
73
+ ### Exit Code Behavior
74
+
75
+ All three scripts exit 0 (advisory only). They never block operations.
76
+
77
+ ### Error Handling
78
+
79
+ | Scenario | Behavior |
80
+ |----------|----------|
81
+ | Not a git repository | Silent exit (no output) |
82
+ | Git command failure | Silent exit (no output) |
83
+ | JSON parse failure | Silent exit |
84
+
85
+ ### Timeouts
86
+
87
+ | Hook | Timeout |
88
+ |------|---------|
89
+ | Git state injection | 10s |
90
+ | TODO harvesting | 8s |
91
+ | Commit reminder | 8s |
92
+
93
+ ## Installation
94
+
95
+ ### CodeForge DevContainer
96
+
97
+ Pre-installed and activated automatically — no setup needed.
98
+
99
+ ### From GitHub
100
+
101
+ Use this plugin in any Claude Code setup:
102
+
103
+ 1. Clone the [CodeForge](https://github.com/AnExiledDev/CodeForge) repository:
104
+
105
+ ```bash
106
+ git clone https://github.com/AnExiledDev/CodeForge.git
107
+ ```
108
+
109
+ 2. Enable the plugin in your `.claude/settings.json`:
110
+
111
+ ```json
112
+ {
113
+ "enabledPlugins": {
114
+ "session-context@<clone-path>/.devcontainer/plugins/devs-marketplace": true
115
+ }
116
+ }
117
+ ```
118
+
119
+ Replace `<clone-path>` with the absolute path to your CodeForge clone.
120
+
121
+ ## Plugin Structure
122
+
123
+ ```
124
+ session-context/
125
+ +-- .claude-plugin/
126
+ | +-- plugin.json # Plugin metadata
127
+ +-- hooks/
128
+ | +-- hooks.json # Hook registrations (SessionStart + Stop)
129
+ +-- scripts/
130
+ | +-- git-state-injector.py # Git state context (SessionStart)
131
+ | +-- todo-harvester.py # Tech debt markers (SessionStart)
132
+ | +-- commit-reminder.py # Uncommitted changes advisory (Stop)
133
+ +-- README.md # This file
134
+ ```
135
+
136
+ ## Requirements
137
+
138
+ - Python 3.11+
139
+ - Git (for git state injection and commit reminders)
140
+ - Claude Code with plugin hook support
@@ -20,7 +20,6 @@
20
20
  ],
21
21
  "Stop": [
22
22
  {
23
- "matcher": "",
24
23
  "hooks": [
25
24
  {
26
25
  "type": "command",
@@ -7,7 +7,8 @@ an advisory reminder as additionalContext. Claude sees it and can
7
7
  naturally ask the user if they want to commit.
8
8
 
9
9
  Reads hook input from stdin (JSON). Returns JSON on stdout.
10
- Always exits 0 (advisory, never blocking).
10
+ Blocks with decision/reason so Claude addresses uncommitted changes
11
+ before finishing. The stop_hook_active guard prevents infinite loops.
11
12
  """
12
13
 
13
14
  import json
@@ -82,7 +83,7 @@ def main():
82
83
  "Consider asking the user if they'd like to commit before finishing."
83
84
  )
84
85
 
85
- json.dump({"additionalContext": message}, sys.stdout)
86
+ json.dump({"decision": "block", "reason": message}, sys.stdout)
86
87
  sys.exit(0)
87
88
 
88
89
 
@@ -64,7 +64,15 @@ def main():
64
64
  f"Working Directory: {cwd} — restrict all file operations to this "
65
65
  f"directory unless explicitly instructed otherwise."
66
66
  )
67
- json.dump({"additionalContext": output}, sys.stdout)
67
+ json.dump(
68
+ {
69
+ "hookSpecificOutput": {
70
+ "hookEventName": "SessionStart",
71
+ "additionalContext": output,
72
+ }
73
+ },
74
+ sys.stdout,
75
+ )
68
76
  sys.exit(0)
69
77
 
70
78
  sections = []
@@ -117,7 +125,15 @@ def main():
117
125
  if len(output) > TOTAL_OUTPUT_CAP:
118
126
  output = output[:TOTAL_OUTPUT_CAP] + "\n...(truncated)"
119
127
 
120
- json.dump({"additionalContext": output}, sys.stdout)
128
+ json.dump(
129
+ {
130
+ "hookSpecificOutput": {
131
+ "hookEventName": "SessionStart",
132
+ "additionalContext": output,
133
+ }
134
+ },
135
+ sys.stdout,
136
+ )
121
137
  sys.exit(0)
122
138
 
123
139
 
@@ -122,7 +122,15 @@ def main():
122
122
  if len(body) > TOTAL_OUTPUT_CAP:
123
123
  body = body[:TOTAL_OUTPUT_CAP] + "\n...(truncated)"
124
124
 
125
- json.dump({"additionalContext": body}, sys.stdout)
125
+ json.dump(
126
+ {
127
+ "hookSpecificOutput": {
128
+ "hookEventName": "SessionStart",
129
+ "additionalContext": body,
130
+ }
131
+ },
132
+ sys.stdout,
133
+ )
126
134
  sys.exit(0)
127
135
 
128
136
 
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "skill-engine",
3
3
  "description": "21 coding knowledge packs with auto-suggestion for frameworks, tools, and patterns",
4
- "version": "1.0.0",
5
4
  "author": {
6
5
  "name": "AnExiledDev"
7
6
  }
@@ -0,0 +1,158 @@
1
+ # skill-engine
2
+
3
+ Claude Code plugin that provides 21 coding knowledge packs (skills) with automatic suggestion based on user prompts. Each skill contains domain-specific instructions and reference material that Claude loads on demand via the `/skill` command.
4
+
5
+ ## What It Does
6
+
7
+ Two capabilities:
8
+
9
+ 1. **Skill library** — 21 skills covering frameworks, tools, and development patterns. Each skill is a structured knowledge pack with a `SKILL.md` entrypoint and `references/` subdirectory containing detailed reference docs.
10
+
11
+ 2. **Auto-suggestion** — A `UserPromptSubmit` hook watches user prompts for keyword matches and suggests relevant skills as context, so Claude can proactively load the right knowledge.
12
+
13
+ ### Skill Catalog
14
+
15
+ | Skill | Domain |
16
+ |-------|--------|
17
+ | api-design | REST conventions, error handling, API patterns |
18
+ | ast-grep-patterns | Semantic code search patterns by language |
19
+ | claude-agent-sdk | Building custom agents with the Agent SDK (TypeScript) |
20
+ | claude-code-headless | CLI flags, output parsing, SDK and MCP integration |
21
+ | debugging | Error patterns, log locations, diagnosis procedures |
22
+ | dependency-management | Package managers, ecosystem commands, license compliance |
23
+ | docker | Dockerfile patterns, docker-compose services |
24
+ | docker-py | Docker SDK for Python, container lifecycle |
25
+ | documentation-patterns | API doc templates, docstring formats |
26
+ | fastapi | Routing, Pydantic v2, SSE streaming, middleware, dependencies |
27
+ | git-forensics | Advanced git commands, blame history, investigation playbooks |
28
+ | migration-patterns | Framework/version migrations for JavaScript and Python |
29
+ | performance-profiling | Profiling tools, interpreting results, optimization |
30
+ | pydantic-ai | Building AI agents with Pydantic, tools, models, streaming |
31
+ | refactoring-patterns | Safe transformations, code smell catalog |
32
+ | security-checklist | OWASP patterns, secrets management, vulnerability detection |
33
+ | skill-building | How to author skills, patterns and anti-patterns |
34
+ | sqlite | Schema, pragmas, advanced queries, FTS5, JS/Python patterns |
35
+ | svelte5 | Runes, reactivity, components, SPA routing, LayerCake |
36
+ | team | Agent team orchestration, parallel workstreams, task coordination |
37
+ | testing | Testing frameworks, FastAPI testing, Svelte testing |
38
+
39
+ ### Auto-Suggestion
40
+
41
+ The `skill-suggester.py` hook matches user prompts against keyword maps defined in each skill. When a match is found, it injects a suggestion via `additionalContext` so Claude knows a relevant skill is available.
42
+
43
+ Keywords are defined per skill as:
44
+ - **Phrases** — Multi-word patterns (e.g., "docker compose", "REST API")
45
+ - **Terms** — Single keywords (e.g., "FastAPI", "pytest")
46
+
47
+ ## How It Works
48
+
49
+ ### Hook Lifecycle
50
+
51
+ ```
52
+ User submits a prompt
53
+ |
54
+ +-> UserPromptSubmit fires
55
+ |
56
+ +-> skill-suggester.py
57
+ |
58
+ +-> Scan prompt against all skill keyword maps
59
+ +-> Match found? -> Inject skill suggestion as additionalContext
60
+ +-> No match? -> Silent (no output)
61
+ ```
62
+
63
+ ### Skill Structure
64
+
65
+ Each skill follows a standard layout:
66
+
67
+ ```
68
+ skills/
69
+ +-- skill-name/
70
+ +-- SKILL.md # Entrypoint: instructions, patterns, key concepts
71
+ +-- references/ # Detailed reference material
72
+ +-- topic-a.md
73
+ +-- topic-b.md
74
+ ```
75
+
76
+ Skills are loaded via Claude Code's `/skill` slash command (e.g., `/skill fastapi`). The `SKILL.md` file is the primary document Claude reads; references are loaded as needed for deeper detail.
77
+
78
+ ### Exit Code Behavior
79
+
80
+ | Exit Code | Meaning |
81
+ |-----------|---------|
82
+ | 0 | Suggestion injected (or no match — silent) |
83
+
84
+ The hook never blocks operations.
85
+
86
+ ### Timeouts
87
+
88
+ | Hook | Timeout |
89
+ |------|---------|
90
+ | Skill suggestion (UserPromptSubmit) | 3s |
91
+
92
+ ## Installation
93
+
94
+ ### CodeForge DevContainer
95
+
96
+ Pre-installed and activated automatically — no setup needed.
97
+
98
+ ### From GitHub
99
+
100
+ Use this plugin in any Claude Code setup:
101
+
102
+ 1. Clone the [CodeForge](https://github.com/AnExiledDev/CodeForge) repository:
103
+
104
+ ```bash
105
+ git clone https://github.com/AnExiledDev/CodeForge.git
106
+ ```
107
+
108
+ 2. Enable the plugin in your `.claude/settings.json`:
109
+
110
+ ```json
111
+ {
112
+ "enabledPlugins": {
113
+ "skill-engine@<clone-path>/.devcontainer/plugins/devs-marketplace": true
114
+ }
115
+ }
116
+ ```
117
+
118
+ Replace `<clone-path>` with the absolute path to your CodeForge clone.
119
+
120
+ ## Plugin Structure
121
+
122
+ ```
123
+ skill-engine/
124
+ +-- .claude-plugin/
125
+ | +-- plugin.json # Plugin metadata
126
+ +-- hooks/
127
+ | +-- hooks.json # UserPromptSubmit hook registration
128
+ +-- scripts/
129
+ | +-- skill-suggester.py # Keyword-based skill auto-suggestion
130
+ +-- skills/
131
+ | +-- api-design/ # 21 skill directories
132
+ | +-- ast-grep-patterns/
133
+ | +-- claude-agent-sdk/
134
+ | +-- claude-code-headless/
135
+ | +-- debugging/
136
+ | +-- dependency-management/
137
+ | +-- docker/
138
+ | +-- docker-py/
139
+ | +-- documentation-patterns/
140
+ | +-- fastapi/
141
+ | +-- git-forensics/
142
+ | +-- migration-patterns/
143
+ | +-- performance-profiling/
144
+ | +-- pydantic-ai/
145
+ | +-- refactoring-patterns/
146
+ | +-- security-checklist/
147
+ | +-- skill-building/
148
+ | +-- sqlite/
149
+ | +-- svelte5/
150
+ | +-- team/
151
+ | +-- testing/
152
+ +-- README.md # This file
153
+ ```
154
+
155
+ ## Requirements
156
+
157
+ - Python 3.11+
158
+ - Claude Code with plugin hook support (skills)
@@ -1,21 +1,8 @@
1
1
  {
2
- "description": "Skill auto-suggestion on user prompts and Plan agent starts",
2
+ "description": "Skill auto-suggestion on user prompts",
3
3
  "hooks": {
4
4
  "UserPromptSubmit": [
5
5
  {
6
- "matcher": "*",
7
- "hooks": [
8
- {
9
- "type": "command",
10
- "command": "python3 ${CLAUDE_PLUGIN_ROOT}/scripts/skill-suggester.py",
11
- "timeout": 3
12
- }
13
- ]
14
- }
15
- ],
16
- "SubagentStart": [
17
- {
18
- "matcher": "Plan",
19
6
  "hooks": [
20
7
  {
21
8
  "type": "command",