rhachet-roles-ehmpathy 1.15.2 → 1.15.4
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/dist/logic/roles/mechanic/.briefs/patterns/flow.refact.questions/best-practice/require.testchange.review.md +33 -0
- package/dist/logic/roles/mechanic/.skills/init.bhuild.sh +3 -0
- package/dist/logic/roles/mechanic/.skills/init.claude.hooks.cleanup.sh +4 -1
- package/dist/logic/roles/mechanic/.skills/init.claude.hooks.findsert.sh +3 -0
- package/dist/logic/roles/mechanic/.skills/init.claude.hooks.sh +3 -0
- package/dist/logic/roles/mechanic/.skills/init.claude.permissions.jsonc +21 -4
- package/dist/logic/roles/mechanic/.skills/init.claude.permissions.sh +3 -0
- package/dist/logic/roles/mechanic/.skills/init.claude.sh +3 -0
- package/package.json +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
if your refactor produces a change in behavior that was not explicitly asked for, it should always be questioned and reviewed with the asker
|
|
2
|
+
|
|
3
|
+
if your refactor produces a change in behavior that was not explicitly asked for && requires the change of tests that covered the old behavior, this is an even bigger red flag, and should especially be questioned and reviewed with the asker
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
for example
|
|
8
|
+
|
|
9
|
+
"ignore other files, only bootup briefs and skills"
|
|
10
|
+
|
|
11
|
+
IF
|
|
12
|
+
- the concept of "other files" is new since the last commit on main (i.e., its a staged or unstaged change, or committed on the branch but not main)
|
|
13
|
+
- the fulfillment of that ask requries you to remove assertions against "bootup readme.md"
|
|
14
|
+
|
|
15
|
+
THEN
|
|
16
|
+
- should you just blindly remove the "bootup readme.md" behavior assertions from the test files to comply?
|
|
17
|
+
- OR
|
|
18
|
+
- should you just blindly assume that the user only meant the new changes?
|
|
19
|
+
- OR
|
|
20
|
+
- should you ask the caller to review the two options, since their requset might cause a change to new behavior
|
|
21
|
+
|
|
22
|
+
?
|
|
23
|
+
|
|
24
|
+
Ideally, ask the caller explicitly to clarify their request
|
|
25
|
+
- did they mean to revert the new behavior but keep the old?
|
|
26
|
+
- or
|
|
27
|
+
- did they mean to revert the new behavior AND change to old?
|
|
28
|
+
|
|
29
|
+
If you're unable to ask though, always assume they intended to preserve the old behavior when there is new behavior they could be asking about - unless they explicitly mentioned the old behavior with the same terms the test spoke about it with.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
but never blindly degrade prior behavior without explicit confirmation
|
|
@@ -22,6 +22,9 @@
|
|
|
22
22
|
|
|
23
23
|
set -euo pipefail
|
|
24
24
|
|
|
25
|
+
# fail loud: print what failed
|
|
26
|
+
trap 'echo "❌ init.claude.hooks.cleanup.sh failed at line $LINENO" >&2' ERR
|
|
27
|
+
|
|
25
28
|
SKILLS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
26
29
|
HOOKS_DIR="$SKILLS_DIR/claude.hooks"
|
|
27
30
|
|
|
@@ -38,7 +41,7 @@ fi
|
|
|
38
41
|
STALE_COMMANDS=$(jq -r '
|
|
39
42
|
.hooks // {} | to_entries[] |
|
|
40
43
|
.value[] | .hooks[] | .command // empty
|
|
41
|
-
' "$SETTINGS_FILE"
|
|
44
|
+
' "$SETTINGS_FILE" | { grep -E "claude\.hooks/" || true; } | while read -r cmd; do
|
|
42
45
|
# Extract the path - it might be absolute or relative
|
|
43
46
|
# Look for the claude.hooks/ part and check if the file exists
|
|
44
47
|
if [[ "$cmd" == /* ]]; then
|
|
@@ -20,6 +20,9 @@
|
|
|
20
20
|
|
|
21
21
|
set -euo pipefail
|
|
22
22
|
|
|
23
|
+
# fail loud: print what failed
|
|
24
|
+
trap 'echo "❌ init.claude.hooks.sh failed at line $LINENO" >&2' ERR
|
|
25
|
+
|
|
23
26
|
SKILLS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
24
27
|
FINDSERT="$SKILLS_DIR/init.claude.hooks.findsert.sh"
|
|
25
28
|
CLEANUP="$SKILLS_DIR/init.claude.hooks.cleanup.sh"
|
|
@@ -9,11 +9,20 @@
|
|
|
9
9
|
"permissions": {
|
|
10
10
|
// commands that should never be auto-approved
|
|
11
11
|
"deny": [
|
|
12
|
-
// git write operations - require explicit user
|
|
12
|
+
// git write operations - require explicit user request for audit trail
|
|
13
13
|
"Bash(git commit:*)",
|
|
14
14
|
"Bash(git add:*)",
|
|
15
15
|
"Bash(git stash:*)",
|
|
16
16
|
"Bash(git checkout:*)",
|
|
17
|
+
"Bash(git branch -d:*)",
|
|
18
|
+
"Bash(git branch -D:*)",
|
|
19
|
+
"Bash(git tag -d:*)",
|
|
20
|
+
"Bash(git remote add:*)",
|
|
21
|
+
"Bash(git remote remove:*)",
|
|
22
|
+
"Bash(git remote set-url:*)",
|
|
23
|
+
"Bash(git reflog expire:*)",
|
|
24
|
+
"Bash(git reflog delete:*)",
|
|
25
|
+
"Bash(git config:*)",
|
|
17
26
|
|
|
18
27
|
// "anywrite" commands - CRITICAL SECURITY RISK
|
|
19
28
|
//
|
|
@@ -118,9 +127,6 @@
|
|
|
118
127
|
"WebFetch(domain:raw.githubusercontent.com)",
|
|
119
128
|
"WebFetch(domain:biomejs.dev)",
|
|
120
129
|
|
|
121
|
-
// git read-only
|
|
122
|
-
"Bash(git log:*)",
|
|
123
|
-
|
|
124
130
|
// filesystem read operations
|
|
125
131
|
"Bash(ls:*)",
|
|
126
132
|
"Bash(tree:*)",
|
|
@@ -139,6 +145,17 @@
|
|
|
139
145
|
"Bash(git mv:*)",
|
|
140
146
|
"Bash(git rm:*)",
|
|
141
147
|
|
|
148
|
+
// git read-only - all have no write variants
|
|
149
|
+
"Bash(git log:*)",
|
|
150
|
+
"Bash(git status:*)",
|
|
151
|
+
"Bash(git diff:*)",
|
|
152
|
+
"Bash(git show:*)",
|
|
153
|
+
"Bash(git blame:*)",
|
|
154
|
+
"Bash(git describe:*)",
|
|
155
|
+
"Bash(git ls-files:*)",
|
|
156
|
+
"Bash(git ls-tree:*)",
|
|
157
|
+
"Bash(git cat-file:*)",
|
|
158
|
+
|
|
142
159
|
// sedreplace - safe bulk find-and-replace on git-tracked files only
|
|
143
160
|
"Bash(bash .agent/repo=ehmpathy/role=mechanic/skills/.skills/claude.tools/sedreplace.sh:*)",
|
|
144
161
|
|
|
@@ -20,6 +20,9 @@
|
|
|
20
20
|
|
|
21
21
|
set -euo pipefail
|
|
22
22
|
|
|
23
|
+
# fail loud: print what failed
|
|
24
|
+
trap 'echo "❌ init.claude.sh failed at line $LINENO" >&2' ERR
|
|
25
|
+
|
|
23
26
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
24
27
|
GITROOT="$(git rev-parse --show-toplevel)"
|
|
25
28
|
SETTINGS_FILE="$GITROOT/.claude/settings.local.json"
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "rhachet-roles-ehmpathy",
|
|
3
3
|
"author": "ehmpathy",
|
|
4
4
|
"description": "empathetic software construction roles and skills, via rhachet",
|
|
5
|
-
"version": "1.15.
|
|
5
|
+
"version": "1.15.4",
|
|
6
6
|
"repository": "ehmpathy/rhachet-roles-ehmpathy",
|
|
7
7
|
"homepage": "https://github.com/ehmpathy/rhachet-roles-ehmpathy",
|
|
8
8
|
"keywords": [
|