codeforge-dev 1.8.0 → 1.10.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 (55) hide show
  1. package/.devcontainer/.env +3 -0
  2. package/.devcontainer/CHANGELOG.md +107 -0
  3. package/.devcontainer/CLAUDE.md +30 -9
  4. package/.devcontainer/README.md +61 -2
  5. package/.devcontainer/config/defaults/main-system-prompt.md +162 -128
  6. package/.devcontainer/config/defaults/rules/spec-workflow.md +75 -0
  7. package/.devcontainer/config/defaults/rules/workspace-scope.md +7 -0
  8. package/.devcontainer/config/defaults/settings.json +63 -66
  9. package/.devcontainer/config/file-manifest.json +30 -18
  10. package/.devcontainer/connect-external-terminal.sh +17 -17
  11. package/.devcontainer/devcontainer.json +143 -144
  12. package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +104 -97
  13. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/.claude-plugin/plugin.json +7 -0
  14. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/README.md +158 -0
  15. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/hooks/hooks.json +39 -0
  16. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/collect-edited-files.py +47 -0
  17. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/format-on-stop.py +297 -0
  18. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/lint-file.py +536 -0
  19. package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/syntax-validator.py +146 -0
  20. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/architect.md +81 -4
  21. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +18 -0
  22. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/dependency-analyst.md +18 -0
  23. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/doc-writer.md +89 -4
  24. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/explorer.md +18 -0
  25. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/generalist.md +142 -8
  26. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/git-archaeologist.md +18 -0
  27. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/migrator.md +108 -1
  28. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/perf-profiler.md +24 -0
  29. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/refactorer.md +97 -1
  30. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/researcher.md +33 -1
  31. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/security-auditor.md +24 -0
  32. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/spec-writer.md +50 -12
  33. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/test-writer.md +96 -1
  34. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +100 -95
  35. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/advisory-test-runner.py +186 -13
  36. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/spec-reminder.py +122 -0
  37. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/SKILL.md +1 -1
  38. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-check/SKILL.md +98 -0
  39. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/SKILL.md +99 -0
  40. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/references/backlog-template.md +23 -0
  41. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/references/roadmap-template.md +33 -0
  42. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-new/SKILL.md +110 -0
  43. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-new/references/template.md +129 -0
  44. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-refine/SKILL.md +194 -0
  45. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-update/SKILL.md +142 -0
  46. package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/SKILL.md +19 -12
  47. package/.devcontainer/scripts/check-setup.sh +24 -25
  48. package/.devcontainer/scripts/setup-aliases.sh +88 -76
  49. package/.devcontainer/scripts/setup-config.sh +86 -83
  50. package/.devcontainer/scripts/setup-projects.sh +172 -131
  51. package/.devcontainer/scripts/setup-terminal.sh +48 -0
  52. package/.devcontainer/scripts/setup-update-claude.sh +49 -107
  53. package/.devcontainer/scripts/setup.sh +4 -17
  54. package/README.md +2 -2
  55. package/package.json +42 -42
@@ -30,15 +30,15 @@ echo "Searching for running devcontainer..."
30
30
  CONTAINER_ID=$(docker ps --filter "label=$CONTAINER_LABEL" --format "{{.ID}}" | head -n1)
31
31
 
32
32
  if [ -z "$CONTAINER_ID" ]; then
33
- echo ""
34
- echo "ERROR: No running devcontainer found."
35
- echo ""
36
- echo "Make sure your devcontainer is running:"
37
- echo " 1. Open VS Code"
38
- echo " 2. Open the folder containing .devcontainer/"
39
- echo " 3. Use 'Dev Containers: Reopen in Container'"
40
- echo ""
41
- exit 1
33
+ echo ""
34
+ echo "ERROR: No running devcontainer found."
35
+ echo ""
36
+ echo "Make sure your devcontainer is running:"
37
+ echo " 1. Open VS Code"
38
+ echo " 2. Open the folder containing .devcontainer/"
39
+ echo " 3. Use 'Dev Containers: Reopen in Container'"
40
+ echo ""
41
+ exit 1
42
42
  fi
43
43
 
44
44
  # Get container name for display
@@ -47,10 +47,10 @@ echo "Found container: $CONTAINER_NAME ($CONTAINER_ID)"
47
47
  echo ""
48
48
 
49
49
  # Check if tmux is available in the container
50
- if ! docker exec "$CONTAINER_ID" which tmux > /dev/null 2>&1; then
51
- echo "ERROR: tmux is not installed in the container."
52
- echo "Rebuild the devcontainer to install the tmux feature."
53
- exit 1
50
+ if ! docker exec "$CONTAINER_ID" which tmux >/dev/null 2>&1; then
51
+ echo "ERROR: tmux is not installed in the container."
52
+ echo "Rebuild the devcontainer to install the tmux feature."
53
+ exit 1
54
54
  fi
55
55
 
56
56
  echo "Connecting to tmux session '$TMUX_SESSION'..."
@@ -68,14 +68,14 @@ echo ""
68
68
  # Pass UTF-8 locale so tmux renders Unicode correctly (not as underscores)
69
69
  # Use tmux -u to force UTF-8 mode as a belt-and-suspenders measure
70
70
  exec docker exec -it \
71
- -e LANG=en_US.UTF-8 \
72
- -e LC_ALL=en_US.UTF-8 \
73
- --user vscode "$CONTAINER_ID" bash -c "
71
+ -e LANG=en_US.UTF-8 \
72
+ -e LC_ALL=en_US.UTF-8 \
73
+ --user vscode "$CONTAINER_ID" bash -c "
74
74
  export LANG=en_US.UTF-8 LC_ALL=en_US.UTF-8
75
75
  if tmux has-session -t '$TMUX_SESSION' 2>/dev/null; then
76
76
  tmux -u attach-session -t '$TMUX_SESSION'
77
77
  else
78
- tmux -u new-session -d -s '$TMUX_SESSION' -c /workspaces
78
+ tmux -u new-session -d -s '$TMUX_SESSION' -c \"\${WORKSPACE_ROOT:-/workspaces}\"
79
79
  sleep 0.5
80
80
  tmux send-keys -t '$TMUX_SESSION' 'cc' Enter
81
81
  tmux -u attach-session -t '$TMUX_SESSION'
@@ -1,144 +1,143 @@
1
- {
2
- "name": "CodeForge - ${localWorkspaceFolderBasename}",
3
- "image": "mcr.microsoft.com/devcontainers/python:3.14",
4
-
5
- "workspaceFolder": "/workspaces",
6
- "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces,type=bind",
7
-
8
- "remoteEnv": {
9
- "WORKSPACE_ROOT": "/workspaces",
10
- "CLAUDE_CONFIG_DIR": "/workspaces/.claude",
11
- "GH_CONFIG_DIR": "/workspaces/.gh",
12
- "TMPDIR": "/workspaces/.tmp"
13
- },
14
-
15
- // Feature install order: external runtimes first (Node, uv, Go, Bun),
16
- // then Claude Code (needs Node), then custom features.
17
- // npm-dependent features (agent-browser, ccusage, ccburn, biome, lsp-servers)
18
- // must come after Node. uv-dependent features (ruff, claude-monitor) must
19
- // come after uv. notify-hook is last (lightweight, no dependencies).
20
- "overrideFeatureInstallOrder": [
21
- "ghcr.io/devcontainers/features/node",
22
- "ghcr.io/devcontainers/features/github-cli",
23
- "ghcr.io/devcontainers/features/docker-outside-of-docker",
24
- "ghcr.io/devcontainers-extra/features/uv",
25
- "ghcr.io/devcontainers/features/go",
26
- "ghcr.io/rails/devcontainer/features/bun",
27
- "ghcr.io/anthropics/devcontainer-features/claude-code",
28
- "./features/tmux",
29
- "./features/agent-browser",
30
- "./features/claude-monitor",
31
- "./features/ccusage",
32
- "./features/ccburn",
33
- "./features/ccstatusline",
34
- "./features/ast-grep",
35
- "./features/tree-sitter",
36
- "./features/lsp-servers",
37
- "./features/ruff",
38
- "./features/shfmt",
39
- "./features/dprint",
40
- "./features/shellcheck",
41
- "./features/hadolint",
42
- "./features/biome",
43
- "./features/notify-hook"
44
- ],
45
-
46
- "features": {
47
- "ghcr.io/devcontainers/features/node:1": {
48
- "version": "lts",
49
- "nodeGypDependencies": true
50
- },
51
- "ghcr.io/devcontainers/features/github-cli:1": {},
52
- "ghcr.io/devcontainers/features/docker-outside-of-docker:1":
53
- {
54
- "moby": false
55
- },
56
- "ghcr.io/devcontainers-extra/features/uv:1": {},
57
- "ghcr.io/rails/devcontainer/features/bun:1.0.2": {},
58
- "ghcr.io/anthropics/devcontainer-features/claude-code:1": {},
59
- "./features/tmux": {},
60
- "./features/ccusage": {
61
- "version": "latest",
62
- "shells": "both",
63
- "username": "automatic"
64
- },
65
- "./features/claude-monitor": {
66
- "version": "latest",
67
- "installer": "uv",
68
- "username": "automatic"
69
- },
70
- "./features/ccburn": {
71
- "version": "latest",
72
- "shells": "both",
73
- "username": "automatic"
74
- },
75
- "./features/ccstatusline": {
76
- "username": "automatic"
77
- },
78
- "./features/ast-grep": {},
79
- "./features/tree-sitter": {},
80
- "./features/lsp-servers": {},
81
- "./features/agent-browser": {},
82
- "./features/ruff": {
83
- "version": "latest",
84
- "username": "automatic"
85
- },
86
- "./features/shfmt": {},
87
- "./features/dprint": {
88
- "username": "automatic"
89
- },
90
- "./features/shellcheck": {},
91
- "./features/hadolint": {},
92
- "./features/biome": {},
93
- "./features/notify-hook": {
94
- "enableBell": true,
95
- "enableOsc": true
96
- }
97
- },
98
-
99
- "postStartCommand": "bash ${containerWorkspaceFolder}/.devcontainer/scripts/setup.sh",
100
-
101
- "remoteUser": "vscode",
102
- "containerUser": "vscode",
103
-
104
- "customizations": {
105
- "vscode": {
106
- "settings": {
107
- "terminal.integrated.profiles.linux": {
108
- "bash": {
109
- "path": "bash"
110
- },
111
- "Claude Teams (tmux)": {
112
- "path": "bash",
113
- "args": ["-c", "if tmux has-session -t claude-teams 2>/dev/null; then exec tmux -u new-session -t claude-teams; else exec tmux -u new-session -s claude-teams; fi"]
114
- }
115
- },
116
- "terminal.integrated.defaultProfile.linux": "bash",
117
- "terminal.integrated.enableBell": true,
118
- "terminal.integrated.commandsToSkipShell": [
119
- "-workbench.action.quickOpen",
120
- "-workbench.action.terminal.focusFind"
121
- ],
122
- "remote.extensionKind": {
123
- "wenbopan.vscode-terminal-osc-notifier": ["ui"]
124
- },
125
- "projectManager.git.baseFolders": ["/workspaces"],
126
- "projectManager.git.maxDepthRecursion": 1,
127
- "projectManager.showProjectNameInStatusBar": true,
128
- "projectManager.openInNewWindowWhenClickingInStatusBar": false,
129
- "projectManager.projectsLocation": "/workspaces/.config/project-manager"
130
- },
131
- "extensions": [
132
- "wenbopan.vscode-terminal-osc-notifier",
133
- "GitHub.vscode-github-actions",
134
- "fabiospampinato.vscode-todo-plus",
135
- "alefragnani.project-manager"
136
- ]
137
- }
138
- },
139
-
140
- "runArgs": [
141
- "--memory=4g",
142
- "--memory-swap=8g"
143
- ]
144
- }
1
+ {
2
+ "name": "CodeForge - ${localWorkspaceFolderBasename}",
3
+ "image": "mcr.microsoft.com/devcontainers/python:3.14",
4
+
5
+ "workspaceFolder": "/workspaces",
6
+ "workspaceMount": "source=${localWorkspaceFolder},target=/workspaces,type=bind",
7
+
8
+ "remoteEnv": {
9
+ "WORKSPACE_ROOT": "/workspaces",
10
+ "CLAUDE_CONFIG_DIR": "/workspaces/.claude",
11
+ "GH_CONFIG_DIR": "/workspaces/.gh",
12
+ "TMPDIR": "/workspaces/.tmp"
13
+ },
14
+
15
+ // Feature install order: external runtimes first (Node, uv, Go, Bun),
16
+ // then Claude Code (needs Node), then custom features.
17
+ // npm-dependent features (agent-browser, ccusage, ccburn, biome, lsp-servers)
18
+ // must come after Node. uv-dependent features (ruff, claude-monitor) must
19
+ // come after uv. notify-hook is last (lightweight, no dependencies).
20
+ "overrideFeatureInstallOrder": [
21
+ "ghcr.io/devcontainers/features/node",
22
+ "ghcr.io/devcontainers/features/github-cli",
23
+ "ghcr.io/devcontainers/features/docker-outside-of-docker",
24
+ "ghcr.io/devcontainers-extra/features/uv",
25
+ "ghcr.io/rails/devcontainer/features/bun",
26
+ "ghcr.io/anthropics/devcontainer-features/claude-code",
27
+ "./features/tmux",
28
+ "./features/agent-browser",
29
+ "./features/claude-monitor",
30
+ "./features/ccusage",
31
+ "./features/ccburn",
32
+ "./features/ccstatusline",
33
+ "./features/ast-grep",
34
+ "./features/tree-sitter",
35
+ "./features/lsp-servers",
36
+ "./features/ruff",
37
+ "./features/shfmt",
38
+ "./features/dprint",
39
+ "./features/shellcheck",
40
+ "./features/hadolint",
41
+ "./features/biome",
42
+ "./features/notify-hook"
43
+ ],
44
+
45
+ "features": {
46
+ "ghcr.io/devcontainers/features/node:1": {
47
+ "version": "lts",
48
+ "nodeGypDependencies": true
49
+ },
50
+ "ghcr.io/devcontainers/features/github-cli:1": {},
51
+ "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {
52
+ "moby": false
53
+ },
54
+ "ghcr.io/devcontainers-extra/features/uv:1": {},
55
+ "ghcr.io/rails/devcontainer/features/bun:1.0.2": {},
56
+ "ghcr.io/anthropics/devcontainer-features/claude-code:1": {},
57
+ "./features/tmux": {},
58
+ "./features/ccusage": {
59
+ "version": "latest",
60
+ "shells": "both",
61
+ "username": "automatic"
62
+ },
63
+ "./features/claude-monitor": {
64
+ "version": "latest",
65
+ "installer": "uv",
66
+ "username": "automatic"
67
+ },
68
+ "./features/ccburn": {
69
+ "version": "latest",
70
+ "shells": "both",
71
+ "username": "automatic"
72
+ },
73
+ "./features/ccstatusline": {
74
+ "username": "automatic"
75
+ },
76
+ "./features/ast-grep": {},
77
+ "./features/tree-sitter": {},
78
+ "./features/lsp-servers": {},
79
+ "./features/agent-browser": {},
80
+ "./features/ruff": {
81
+ "version": "latest",
82
+ "username": "automatic"
83
+ },
84
+ "./features/shfmt": { "version": "none" },
85
+ "./features/dprint": {
86
+ "version": "none",
87
+ "username": "automatic"
88
+ },
89
+ "./features/shellcheck": { "version": "none" },
90
+ "./features/hadolint": { "version": "none" },
91
+ "./features/biome": {},
92
+ "./features/notify-hook": {
93
+ "enableBell": true,
94
+ "enableOsc": true
95
+ }
96
+ },
97
+
98
+ "postStartCommand": "bash ${containerWorkspaceFolder}/.devcontainer/scripts/setup.sh",
99
+
100
+ "remoteUser": "vscode",
101
+ "containerUser": "vscode",
102
+
103
+ "customizations": {
104
+ "vscode": {
105
+ "settings": {
106
+ "terminal.integrated.profiles.linux": {
107
+ "bash": {
108
+ "path": "bash"
109
+ },
110
+ "Claude Teams (tmux)": {
111
+ "path": "bash",
112
+ "args": [
113
+ "-c",
114
+ "if tmux has-session -t claude-teams 2>/dev/null; then exec tmux -u new-session -t claude-teams; else exec tmux -u new-session -s claude-teams; fi"
115
+ ]
116
+ }
117
+ },
118
+ "terminal.integrated.defaultProfile.linux": "bash",
119
+ "terminal.integrated.enableBell": true,
120
+ "terminal.integrated.commandsToSkipShell": [
121
+ "-workbench.action.quickOpen",
122
+ "-workbench.action.terminal.focusFind"
123
+ ],
124
+ "remote.extensionKind": {
125
+ "wenbopan.vscode-terminal-osc-notifier": ["ui"]
126
+ },
127
+ "projectManager.git.baseFolders": ["/workspaces"],
128
+ "projectManager.git.maxDepthRecursion": 2,
129
+ "projectManager.showProjectNameInStatusBar": true,
130
+ "projectManager.openInNewWindowWhenClickingInStatusBar": false,
131
+ "projectManager.projectsLocation": "/workspaces/.config/project-manager"
132
+ },
133
+ "extensions": [
134
+ "wenbopan.vscode-terminal-osc-notifier",
135
+ "GitHub.vscode-github-actions",
136
+ "fabiospampinato.vscode-todo-plus",
137
+ "alefragnani.project-manager"
138
+ ]
139
+ }
140
+ },
141
+
142
+ "runArgs": ["--memory=6g", "--memory-swap=12g"]
143
+ }
@@ -1,99 +1,106 @@
1
1
  {
2
- "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
- "name": "devs-marketplace",
4
- "description": "CodeForge plugin marketplace for development tools",
5
- "owner": {
6
- "name": "AnExiledDev"
7
- },
8
- "plugins": [
9
- {
10
- "name": "codeforge-lsp",
11
- "description": "LSP servers for CodeForge (Python, TypeScript, Go)",
12
- "version": "1.0.0",
13
- "source": "./plugins/codeforge-lsp",
14
- "category": "development",
15
- "lspServers": {
16
- "pyright": {
17
- "command": "pyright-langserver",
18
- "args": ["--stdio"],
19
- "extensionToLanguage": {
20
- ".py": "python",
21
- ".pyi": "python"
22
- }
23
- },
24
- "typescript": {
25
- "command": "typescript-language-server",
26
- "args": ["--stdio"],
27
- "extensionToLanguage": {
28
- ".ts": "typescript",
29
- ".tsx": "typescriptreact",
30
- ".js": "javascript",
31
- ".jsx": "javascriptreact",
32
- ".mts": "typescript",
33
- ".cts": "typescript",
34
- ".mjs": "javascript",
35
- ".cjs": "javascript"
36
- }
37
- },
38
- "gopls": {
39
- "command": "gopls",
40
- "args": ["serve"],
41
- "extensionToLanguage": {
42
- ".go": "go",
43
- ".mod": "go.mod",
44
- ".sum": "go.sum"
45
- }
46
- }
47
- }
48
- },
49
- {
50
- "name": "ticket-workflow",
51
- "description": "EARS-based ticket workflow with GitHub integration",
52
- "version": "1.0.0",
53
- "source": "./plugins/ticket-workflow",
54
- "category": "workflow"
55
- },
56
- {
57
- "name": "notify-hook",
58
- "description": "Desktop notifications and audio chime when Claude finishes responding",
59
- "version": "1.0.0",
60
- "source": "./plugins/notify-hook",
61
- "category": "productivity"
62
- },
63
- {
64
- "name": "dangerous-command-blocker",
65
- "description": "Blocks dangerous bash commands (rm -rf, sudo rm, chmod 777, force push)",
66
- "version": "1.0.0",
67
- "source": "./plugins/dangerous-command-blocker",
68
- "category": "safety"
69
- },
70
- {
71
- "name": "protected-files-guard",
72
- "description": "Blocks modifications to .env, lock files, .git/, and credentials",
73
- "version": "1.0.0",
74
- "source": "./plugins/protected-files-guard",
75
- "category": "safety"
76
- },
77
- {
78
- "name": "auto-formatter",
79
- "description": "Batch-formats edited files at Stop (Ruff for Python, gofmt for Go, Biome for JS/TS/CSS/JSON/GraphQL/HTML, shfmt for Shell, dprint for Markdown/YAML/TOML/Dockerfile, rustfmt for Rust)",
80
- "version": "1.0.0",
81
- "source": "./plugins/auto-formatter",
82
- "category": "development"
83
- },
84
- {
85
- "name": "auto-linter",
86
- "description": "Auto-lints edited files at Stop (Pyright + Ruff for Python, Biome for JS/TS/CSS/GraphQL, ShellCheck for Shell, go vet for Go, hadolint for Dockerfile, clippy for Rust)",
87
- "version": "1.0.0",
88
- "source": "./plugins/auto-linter",
89
- "category": "development"
90
- },
91
- {
92
- "name": "code-directive",
93
- "description": "17 custom agents, 16 coding skills, agent redirection, syntax validation, and skill auto-suggestion",
94
- "version": "1.0.0",
95
- "source": "./plugins/code-directive",
96
- "category": "development"
97
- }
98
- ]
2
+ "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
+ "name": "devs-marketplace",
4
+ "description": "CodeForge plugin marketplace for development tools",
5
+ "owner": {
6
+ "name": "AnExiledDev"
7
+ },
8
+ "plugins": [
9
+ {
10
+ "name": "codeforge-lsp",
11
+ "description": "LSP servers for CodeForge (Python, TypeScript, Go)",
12
+ "version": "1.0.0",
13
+ "source": "./plugins/codeforge-lsp",
14
+ "category": "development",
15
+ "lspServers": {
16
+ "pyright": {
17
+ "command": "pyright-langserver",
18
+ "args": ["--stdio"],
19
+ "extensionToLanguage": {
20
+ ".py": "python",
21
+ ".pyi": "python"
22
+ }
23
+ },
24
+ "typescript": {
25
+ "command": "typescript-language-server",
26
+ "args": ["--stdio"],
27
+ "extensionToLanguage": {
28
+ ".ts": "typescript",
29
+ ".tsx": "typescriptreact",
30
+ ".js": "javascript",
31
+ ".jsx": "javascriptreact",
32
+ ".mts": "typescript",
33
+ ".cts": "typescript",
34
+ ".mjs": "javascript",
35
+ ".cjs": "javascript"
36
+ }
37
+ },
38
+ "gopls": {
39
+ "command": "gopls",
40
+ "args": ["serve"],
41
+ "extensionToLanguage": {
42
+ ".go": "go",
43
+ ".mod": "go.mod",
44
+ ".sum": "go.sum"
45
+ }
46
+ }
47
+ }
48
+ },
49
+ {
50
+ "name": "ticket-workflow",
51
+ "description": "EARS-based ticket workflow with GitHub integration",
52
+ "version": "1.0.0",
53
+ "source": "./plugins/ticket-workflow",
54
+ "category": "workflow"
55
+ },
56
+ {
57
+ "name": "notify-hook",
58
+ "description": "Desktop notifications and audio chime when Claude finishes responding",
59
+ "version": "1.0.0",
60
+ "source": "./plugins/notify-hook",
61
+ "category": "productivity"
62
+ },
63
+ {
64
+ "name": "dangerous-command-blocker",
65
+ "description": "Blocks dangerous bash commands (rm -rf, sudo rm, chmod 777, force push)",
66
+ "version": "1.0.0",
67
+ "source": "./plugins/dangerous-command-blocker",
68
+ "category": "safety"
69
+ },
70
+ {
71
+ "name": "protected-files-guard",
72
+ "description": "Blocks modifications to .env, lock files, .git/, and credentials",
73
+ "version": "1.0.0",
74
+ "source": "./plugins/protected-files-guard",
75
+ "category": "safety"
76
+ },
77
+ {
78
+ "name": "auto-formatter",
79
+ "description": "Batch-formats edited files at Stop (Ruff for Python, gofmt for Go, Biome for JS/TS/CSS/JSON/GraphQL/HTML, shfmt for Shell, dprint for Markdown/YAML/TOML/Dockerfile, rustfmt for Rust)",
80
+ "version": "1.0.0",
81
+ "source": "./plugins/auto-formatter",
82
+ "category": "development"
83
+ },
84
+ {
85
+ "name": "auto-linter",
86
+ "description": "Auto-lints edited files at Stop (Pyright + Ruff for Python, Biome for JS/TS/CSS/GraphQL, ShellCheck for Shell, go vet for Go, hadolint for Dockerfile, clippy for Rust)",
87
+ "version": "1.0.0",
88
+ "source": "./plugins/auto-linter",
89
+ "category": "development"
90
+ },
91
+ {
92
+ "name": "code-directive",
93
+ "description": "17 custom agents, 16 coding skills, agent redirection, syntax validation, and skill auto-suggestion",
94
+ "version": "1.0.0",
95
+ "source": "./plugins/code-directive",
96
+ "category": "development"
97
+ },
98
+ {
99
+ "name": "auto-code-quality",
100
+ "description": "Self-contained code quality: auto-format + auto-lint edited files (Ruff/Black, Biome, gofmt, shfmt, dprint, rustfmt, Pyright, ShellCheck, go vet, hadolint, clippy)",
101
+ "version": "1.0.0",
102
+ "source": "./plugins/auto-code-quality",
103
+ "category": "development"
104
+ }
105
+ ]
99
106
  }
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "auto-code-quality",
3
+ "description": "Self-contained code quality plugin: collects edited files, batch-formats at Stop (Ruff/Black for Python, gofmt for Go, Biome for JS/TS/CSS/JSON/GraphQL/HTML, shfmt for Shell, dprint for Markdown/YAML/TOML/Dockerfile, rustfmt for Rust), batch-lints at Stop (Pyright + Ruff for Python, Biome for JS/TS/CSS/GraphQL, ShellCheck for Shell, go vet for Go, hadolint for Dockerfile, clippy for Rust), and validates JSON/JSONC/YAML/TOML syntax on edit",
4
+ "author": {
5
+ "name": "AnExiledDev"
6
+ }
7
+ }