claude-dev-env 1.26.1 → 1.26.3
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/bin/install.mjs +2 -1
- package/hooks/hooks.json +0 -42
- package/hooks/lifecycle/config_change_guard.py +1 -0
- package/hooks/validators/git_checks.py +4 -1
- package/hooks/validators/test_output_formatter.py +7 -2
- package/package.json +1 -1
- package/skills/bugteam/SKILL.md +143 -309
- package/skills/bugteam/SKILL_EVALS.md +46 -46
- package/skills/bugteam/reference/README.md +13 -0
- package/skills/bugteam/reference/audit-and-teammates.md +127 -0
- package/skills/bugteam/reference/design-rationale.md +28 -0
- package/skills/bugteam/reference/github-pr-reviews.md +86 -0
- package/skills/bugteam/reference/team-setup.md +51 -0
- package/skills/bugteam/reference/teardown-publish-permissions.md +70 -0
- package/skills/bugteam/scripts/README.md +4 -0
- package/skills/bugteam/{_claude_permissions_common.py → scripts/_claude_permissions_common.py} +37 -33
- package/skills/bugteam/scripts/bugteam_code_rules_gate.py +55 -0
- package/skills/bugteam/{grant_project_claude_permissions.py → scripts/grant_project_claude_permissions.py} +10 -11
- package/skills/bugteam/{revoke_project_claude_permissions.py → scripts/revoke_project_claude_permissions.py} +13 -14
- package/skills/bugteam/sources.md +93 -0
- /package/hooks/validators/{config.py → validator_defaults.py} +0 -0
- /package/skills/bugteam/{test_claude_permissions_common.py → scripts/test_claude_permissions_common.py} +0 -0
package/bin/install.mjs
CHANGED
|
@@ -11,6 +11,7 @@ const CLAUDE_HOME = join(homedir(), '.claude');
|
|
|
11
11
|
const PACKAGE_ROOT = resolve(dirname(fileURLToPath(import.meta.url)), '..');
|
|
12
12
|
const MANIFEST_FILE = join(CLAUDE_HOME, '.claude-dev-env-manifest.json');
|
|
13
13
|
const PACKAGE_NAME = 'claude-dev-env';
|
|
14
|
+
const PACKAGE_VERSION = JSON.parse(readFileSync(join(PACKAGE_ROOT, 'package.json'), 'utf8')).version;
|
|
14
15
|
const packageRequire = createRequire(import.meta.url);
|
|
15
16
|
|
|
16
17
|
const CONTENT_DIRECTORIES = ['rules', 'docs', 'commands', 'agents', 'system-prompts', 'scripts'];
|
|
@@ -218,7 +219,7 @@ function mergeHooks(hooksSourceRoot, pythonCommand) {
|
|
|
218
219
|
}
|
|
219
220
|
|
|
220
221
|
function writeManifest(installedFiles) {
|
|
221
|
-
const manifest = { package: PACKAGE_NAME, version:
|
|
222
|
+
const manifest = { package: PACKAGE_NAME, version: PACKAGE_VERSION, installedAt: new Date().toISOString(), files: installedFiles };
|
|
222
223
|
writeFileSync(MANIFEST_FILE, JSON.stringify(manifest, null, 2) + '\n');
|
|
223
224
|
}
|
|
224
225
|
|
package/hooks/hooks.json
CHANGED
|
@@ -25,11 +25,6 @@
|
|
|
25
25
|
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/blocking/sensitive_file_protector.py",
|
|
26
26
|
"timeout": 10
|
|
27
27
|
},
|
|
28
|
-
{
|
|
29
|
-
"type": "command",
|
|
30
|
-
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/blocking/pyautogui_scroll_blocker.py",
|
|
31
|
-
"timeout": 10
|
|
32
|
-
},
|
|
33
28
|
{
|
|
34
29
|
"type": "command",
|
|
35
30
|
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/validation/hook_format_validator.py",
|
|
@@ -49,11 +44,6 @@
|
|
|
49
44
|
"type": "command",
|
|
50
45
|
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/blocking/tdd_enforcer.py",
|
|
51
46
|
"timeout": 10
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"type": "command",
|
|
55
|
-
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/validation/code_style_validator.py",
|
|
56
|
-
"timeout": 15
|
|
57
47
|
}
|
|
58
48
|
]
|
|
59
49
|
},
|
|
@@ -102,16 +92,6 @@
|
|
|
102
92
|
}
|
|
103
93
|
]
|
|
104
94
|
},
|
|
105
|
-
{
|
|
106
|
-
"matcher": "Task|Agent",
|
|
107
|
-
"hooks": [
|
|
108
|
-
{
|
|
109
|
-
"type": "command",
|
|
110
|
-
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/blocking/parallel_task_blocker.py",
|
|
111
|
-
"timeout": 10
|
|
112
|
-
}
|
|
113
|
-
]
|
|
114
|
-
},
|
|
115
95
|
{
|
|
116
96
|
"matcher": "AskUserQuestion",
|
|
117
97
|
"hooks": [
|
|
@@ -123,23 +103,6 @@
|
|
|
123
103
|
]
|
|
124
104
|
}
|
|
125
105
|
],
|
|
126
|
-
"UserPromptSubmit": [
|
|
127
|
-
{
|
|
128
|
-
"matcher": "",
|
|
129
|
-
"hooks": [
|
|
130
|
-
{
|
|
131
|
-
"type": "command",
|
|
132
|
-
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/session/bulk_edit_reminder.py",
|
|
133
|
-
"timeout": 15
|
|
134
|
-
},
|
|
135
|
-
{
|
|
136
|
-
"type": "command",
|
|
137
|
-
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/session/code_rules_reminder.py",
|
|
138
|
-
"timeout": 15
|
|
139
|
-
}
|
|
140
|
-
]
|
|
141
|
-
}
|
|
142
|
-
],
|
|
143
106
|
"SessionStart": [
|
|
144
107
|
{
|
|
145
108
|
"matcher": "",
|
|
@@ -202,11 +165,6 @@
|
|
|
202
165
|
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/validation/mypy_validator.py",
|
|
203
166
|
"timeout": 30
|
|
204
167
|
},
|
|
205
|
-
{
|
|
206
|
-
"type": "command",
|
|
207
|
-
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/validation/e2e-test-validator.py",
|
|
208
|
-
"timeout": 15
|
|
209
|
-
},
|
|
210
168
|
{
|
|
211
169
|
"type": "command",
|
|
212
170
|
"command": "python3 ${CLAUDE_PLUGIN_ROOT}/hooks/workflow/auto_formatter.py",
|
|
@@ -6,7 +6,10 @@ import sys
|
|
|
6
6
|
from dataclasses import dataclass
|
|
7
7
|
from typing import List
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
try:
|
|
10
|
+
from .validator_defaults import DEFAULT_BASE_BRANCH_WHEN_UNKNOWN
|
|
11
|
+
except ImportError:
|
|
12
|
+
from validator_defaults import DEFAULT_BASE_BRANCH_WHEN_UNKNOWN
|
|
10
13
|
|
|
11
14
|
|
|
12
15
|
SUBPROCESS_TIMEOUT_SECONDS = 30
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Tests for output formatting."""
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
|
+
import sys
|
|
4
5
|
|
|
5
6
|
import pytest
|
|
6
7
|
|
|
@@ -95,11 +96,15 @@ class TestJsonFlag:
|
|
|
95
96
|
import json
|
|
96
97
|
import subprocess
|
|
97
98
|
|
|
99
|
+
validators_directory = os.path.dirname(os.path.abspath(__file__))
|
|
100
|
+
hooks_directory = os.path.normpath(
|
|
101
|
+
os.path.join(validators_directory, os.pardir)
|
|
102
|
+
)
|
|
98
103
|
result = subprocess.run(
|
|
99
|
-
["
|
|
104
|
+
[sys.executable, "-m", "validators.run_all_validators", "--json"],
|
|
100
105
|
capture_output=True,
|
|
101
106
|
text=True,
|
|
102
|
-
cwd=
|
|
107
|
+
cwd=hooks_directory,
|
|
103
108
|
)
|
|
104
109
|
|
|
105
110
|
output = result.stdout.strip()
|