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.
- package/.devcontainer/.env +3 -0
- package/.devcontainer/CHANGELOG.md +107 -0
- package/.devcontainer/CLAUDE.md +30 -9
- package/.devcontainer/README.md +61 -2
- package/.devcontainer/config/defaults/main-system-prompt.md +162 -128
- package/.devcontainer/config/defaults/rules/spec-workflow.md +75 -0
- package/.devcontainer/config/defaults/rules/workspace-scope.md +7 -0
- package/.devcontainer/config/defaults/settings.json +63 -66
- package/.devcontainer/config/file-manifest.json +30 -18
- package/.devcontainer/connect-external-terminal.sh +17 -17
- package/.devcontainer/devcontainer.json +143 -144
- package/.devcontainer/plugins/devs-marketplace/.claude-plugin/marketplace.json +104 -97
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/.claude-plugin/plugin.json +7 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/README.md +158 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/hooks/hooks.json +39 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/collect-edited-files.py +47 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/format-on-stop.py +297 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/lint-file.py +536 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/scripts/syntax-validator.py +146 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/architect.md +81 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/debug-logs.md +18 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/dependency-analyst.md +18 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/doc-writer.md +89 -4
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/explorer.md +18 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/generalist.md +142 -8
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/git-archaeologist.md +18 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/migrator.md +108 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/perf-profiler.md +24 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/refactorer.md +97 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/researcher.md +33 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/security-auditor.md +24 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/spec-writer.md +50 -12
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/agents/test-writer.md +96 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/hooks/hooks.json +100 -95
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/advisory-test-runner.py +186 -13
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/scripts/spec-reminder.py +122 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/documentation-patterns/SKILL.md +1 -1
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-check/SKILL.md +98 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/SKILL.md +99 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/references/backlog-template.md +23 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-init/references/roadmap-template.md +33 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-new/SKILL.md +110 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-new/references/template.md +129 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-refine/SKILL.md +194 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/spec-update/SKILL.md +142 -0
- package/.devcontainer/plugins/devs-marketplace/plugins/code-directive/skills/specification-writing/SKILL.md +19 -12
- package/.devcontainer/scripts/check-setup.sh +24 -25
- package/.devcontainer/scripts/setup-aliases.sh +88 -76
- package/.devcontainer/scripts/setup-config.sh +86 -83
- package/.devcontainer/scripts/setup-projects.sh +172 -131
- package/.devcontainer/scripts/setup-terminal.sh +48 -0
- package/.devcontainer/scripts/setup-update-claude.sh +49 -107
- package/.devcontainer/scripts/setup.sh +4 -17
- package/README.md +2 -2
- 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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
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
|
}
|
package/.devcontainer/plugins/devs-marketplace/plugins/auto-code-quality/.claude-plugin/plugin.json
ADDED
|
@@ -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
|
+
}
|