codeforge-dev 1.13.0 → 1.14.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.
- package/.devcontainer/CHANGELOG.md +140 -4
- package/.devcontainer/CLAUDE.md +61 -276
- package/.devcontainer/README.md +1 -1
- package/.devcontainer/config/defaults/ccstatusline-settings.json +147 -0
- package/.devcontainer/config/defaults/main-system-prompt.md +6 -1
- package/.devcontainer/config/defaults/rules/spec-workflow.md +1 -55
- package/.devcontainer/config/file-manifest.json +14 -0
- package/.devcontainer/devcontainer.json +19 -1
- package/.devcontainer/docs/optional-features.md +0 -65
- package/.devcontainer/docs/plugins.md +38 -23
- package/.devcontainer/features/ast-grep/devcontainer-feature.json +0 -1
- package/.devcontainer/features/biome/install.sh +13 -0
- package/.devcontainer/features/ccburn/devcontainer-feature.json +0 -1
- package/.devcontainer/features/ccms/devcontainer-feature.json +0 -1
- package/.devcontainer/features/ccms/install.sh +1 -1
- package/.devcontainer/features/ccstatusline/devcontainer-feature.json +0 -1
- package/.devcontainer/features/ccstatusline/install.sh +17 -115
- package/.devcontainer/features/ccusage/devcontainer-feature.json +0 -1
- package/.devcontainer/features/chromaterm/README.md +42 -0
- package/.devcontainer/features/chromaterm/chromaterm.yml +35 -0
- package/.devcontainer/features/chromaterm/devcontainer-feature.json +22 -0
- package/.devcontainer/features/chromaterm/install.sh +113 -0
- package/.devcontainer/features/claude-monitor/devcontainer-feature.json +0 -1
- package/.devcontainer/features/claude-session-dashboard/README.md +2 -2
- package/.devcontainer/features/claude-session-dashboard/devcontainer-feature.json +1 -2
- package/.devcontainer/features/claude-session-dashboard/install.sh +2 -2
- package/.devcontainer/features/kitty-terminfo/README.md +32 -0
- package/.devcontainer/features/kitty-terminfo/devcontainer-feature.json +13 -0
- package/.devcontainer/features/kitty-terminfo/install.sh +72 -0
- package/.devcontainer/features/lsp-servers/devcontainer-feature.json +0 -1
- package/.devcontainer/features/mcp-qdrant/devcontainer-feature.json +0 -1
- package/.devcontainer/features/shellcheck/install.sh +6 -2
- package/.devcontainer/features/tree-sitter/devcontainer-feature.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +37 -69
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/README.md +197 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/architect.md +3 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/bash-exec.md +3 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/claude-guide.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/debug-logs.md +6 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/dependency-analyst.md +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/doc-writer.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/explorer.md +3 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/generalist.md +9 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/git-archaeologist.md +3 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/migrator.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/perf-profiler.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/refactorer.md +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/researcher.md +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/security-auditor.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/spec-writer.md +3 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/statusline-config.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/agents/test-writer.md +4 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/hooks/hooks.json +23 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/guard-readonly-bash.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/inject-cwd.py +7 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/task-completed-check.py +166 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/teammate-idle-check.py +81 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/verify-no-regression.py +14 -10
- package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/scripts/verify-tests-pass.py +2 -14
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/README.md +17 -31
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/hooks/hooks.json +5 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/advisory-test-runner.py +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/codeforge-lsp/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/block-dangerous.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/notify-hook/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected-bash.py +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/guard-protected.py +2 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/README.md +140 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/commit-reminder.py +3 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/git-state-injector.py +18 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/todo-harvester.py +9 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/README.md +158 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/hooks/hooks.json +1 -14
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/scripts/skill-suggester.py +189 -100
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/api-design/SKILL.md +9 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/ast-grep-patterns/SKILL.md +7 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/claude-agent-sdk/SKILL.md +8 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/claude-code-headless/SKILL.md +8 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/debugging/SKILL.md +11 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/dependency-management/SKILL.md +10 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/docker/SKILL.md +8 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/docker-py/SKILL.md +9 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/documentation-patterns/SKILL.md +7 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/fastapi/SKILL.md +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/git-forensics/SKILL.md +11 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/migration-patterns/SKILL.md +7 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/performance-profiling/SKILL.md +10 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/pydantic-ai/SKILL.md +8 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/refactoring-patterns/SKILL.md +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/security-checklist/SKILL.md +9 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/skill-building/SKILL.md +7 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/sqlite/SKILL.md +9 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/svelte5/SKILL.md +7 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/team/SKILL.md +71 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/skill-engine/skills/testing/SKILL.md +10 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/.claude-plugin/plugin.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/README.md +192 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/scripts/spec-reminder.py +3 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-build/SKILL.md +9 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-check/SKILL.md +10 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-init/SKILL.md +8 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-new/SKILL.md +8 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-refine/SKILL.md +10 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-review/SKILL.md +10 -6
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/spec-update/SKILL.md +10 -5
- package/.devcontainer/plugins/devs-marketplace/plugins/spec-workflow/skills/specification-writing/SKILL.md +9 -9
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/plugin.json +1 -2
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/README.md +28 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/hooks/hooks.json +0 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/scripts/ticket-linker.py +9 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/README.md +104 -32
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/hooks/hooks.json +49 -3
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/guard-workspace-scope.py +269 -56
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/inject-workspace-cwd.py +44 -0
- package/.devcontainer/scripts/setup-aliases.sh +13 -5
- package/.devcontainer/scripts/setup-config.sh +1 -0
- package/README.md +5 -5
- package/package.json +6 -2
- package/setup.js +3 -2
- package/.devcontainer/.env +0 -33
- package/.devcontainer/features/README.md +0 -126
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/.claude-plugin/plugin.json +0 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/README.md +0 -81
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/hooks/hooks.json +0 -17
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/__pycache__/format-on-stop.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-formatter/scripts/format-on-stop.py +0 -297
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/.claude-plugin/plugin.json +0 -7
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/README.md +0 -92
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/hooks/hooks.json +0 -17
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/__pycache__/lint-file.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-linter/scripts/lint-file.py +0 -536
- package/.devcontainer/plugins/devs-marketplace/plugins/dangerous-command-blocker/scripts/__pycache__/block-dangerous.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/protected-files-guard/scripts/__pycache__/guard-protected.cpython-314.pyc +0 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/.claude-plugin/system-prompt.md +0 -184
- package/.devcontainer/plugins/devs-marketplace/plugins/workspace-scope-guard/scripts/__pycache__/guard-workspace-scope.cpython-314.pyc +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/agent-system/{.claude-plugin/commands/debug.md → skills/debug/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272create-pr.md" → skills/ticketcreate-pr/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272new.md" → skills/ticketnew/SKILL.md} +0 -0
- /package/.devcontainer/plugins/devs-marketplace/plugins/ticket-workflow/{.claude-plugin/commands/ticket/357/200/272review-commit.md" → skills/ticketreview-commit/SKILL.md} +0 -0
- /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(
|
|
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
|
|
93
|
-
print(
|
|
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
|
|
@@ -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
|
package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/commit-reminder.py
CHANGED
|
@@ -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
|
-
|
|
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({"
|
|
86
|
+
json.dump({"decision": "block", "reason": message}, sys.stdout)
|
|
86
87
|
sys.exit(0)
|
|
87
88
|
|
|
88
89
|
|
package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/git-state-injector.py
CHANGED
|
@@ -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(
|
|
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(
|
|
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
|
|
package/.devcontainer/plugins/devs-marketplace/plugins/session-context/scripts/todo-harvester.py
CHANGED
|
@@ -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(
|
|
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
|
|
|
@@ -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
|
|
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",
|