rhachet-roles-ehmpathy 1.13.11 → 1.13.13

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.
@@ -118,10 +118,37 @@ given()
118
118
  ...
119
119
  EOF
120
120
 
121
+ # findsert 2.criteria.src
122
+ findsert "$BEHAVIOR_DIR/2.criteria.src" << 'EOF'
123
+ declare the behavioral criteria required in order to fulfill
124
+ - this wish $BEHAVIOR_DIR_REL/0.wish.md
125
+ - this vision $BEHAVIOR_DIR_REL/1.vision.md (if declared)
126
+
127
+ via bdd declarations, per your briefs
128
+
129
+ via the template in $BEHAVIOR_DIR/2.criteria.md
130
+
131
+ emit into $BEHAVIOR_DIR/2.criteria.md
132
+
133
+ ---
134
+
135
+ focus on the behavioral requirements
136
+ - critical paths
137
+ - boundary paths
138
+
139
+ ignore infra or technical details
140
+
141
+ focus on behaviors
142
+
143
+ ensure to cover all of the criteria required to fulfill the full set of behaviors declared in the wish and vision
144
+ EOF
145
+
121
146
  # findsert 3.1.research.domain._.v1.src
122
147
  findsert "$BEHAVIOR_DIR/3.1.research.domain._.v1.src" << EOF
123
- research the domain available in order to fulfill the wish declared
124
- in $BEHAVIOR_DIR_REL/0.wish.md
148
+ research the domain available in order to fulfill
149
+ - this wish $BEHAVIOR_DIR_REL/0.wish.md
150
+ - this vision $BEHAVIOR_DIR_REL/1.vision.md (if declared)
151
+ - this criteria $BEHAVIOR_DIR_REL/2.criteria.md (if declared)
125
152
 
126
153
  specifically
127
154
  - what are the domain objects that are involved with this wish
@@ -134,7 +161,11 @@ specifically
134
161
  - setCreate
135
162
  - setUpdate
136
163
  - setDelete
137
- - ...
164
+ - what are the relationships between the domain objects?
165
+ - is there a treestruct of decoration?
166
+ - is there a treestruct of common subdomains?
167
+ - are there dependencies?
168
+ - how do the domain objects and operations compose to support wish?
138
169
 
139
170
  ---
140
171
 
@@ -154,8 +185,12 @@ EOF
154
185
  # findsert 3.2.distill.domain._.v1.src
155
186
  findsert "$BEHAVIOR_DIR/3.2.distill.domain._.v1.src" << EOF
156
187
  distill the declastruct domain.objects and domain.operations that would
157
- - enable fulfillment of this wish $BEHAVIOR_DIR_REL/0.wish.md
158
- - given the research declared here $BEHAVIOR_DIR_REL/3.1.research.domain._.v1.i1.md
188
+ - enable fulfillment of
189
+ - this wish $BEHAVIOR_DIR_REL/0.wish.md
190
+ - this vision $BEHAVIOR_DIR_REL/1.vision.md (if declared)
191
+ - this criteria $BEHAVIOR_DIR_REL/2.criteria.md (if declared)
192
+ - given the research declared here
193
+ - $BEHAVIOR_DIR_REL/3.1.research.domain._.v1.i1.md (if declared)
159
194
 
160
195
  procedure
161
196
  1. declare the usecases and envision the contract that would be used to fulfill the usecases
@@ -171,7 +206,7 @@ propose a blueprint for how we can implement the wish described
171
206
  - in $BEHAVIOR_DIR_REL/0.wish.md
172
207
 
173
208
  with the domain distillation declared
174
- - in $BEHAVIOR_DIR_REL/3.2.distill.domain._.v1.i1.md
209
+ - in $BEHAVIOR_DIR_REL/3.2.distill.domain._.v1.i1.md (if declared)
175
210
 
176
211
  follow the patterns already present in this repo
177
212
 
@@ -179,9 +214,10 @@ follow the patterns already present in this repo
179
214
 
180
215
  reference the below for full context
181
216
  - $BEHAVIOR_DIR_REL/0.wish.md
182
- - $BEHAVIOR_DIR_REL/3.1.research.domain._.v1.i1.md
183
- - $BEHAVIOR_DIR_REL/3.2.distill.domain._.v1.i1.md
184
-
217
+ - $BEHAVIOR_DIR_REL/1.vision.md (if declared)
218
+ - $BEHAVIOR_DIR_REL/2.criteria.md (if declared)
219
+ - $BEHAVIOR_DIR_REL/3.1.research.domain._.v1.i1.md (if declared)
220
+ - $BEHAVIOR_DIR_REL/3.2.distill.domain._.v1.i1.md (if declared)
185
221
 
186
222
  ---
187
223
 
@@ -199,6 +235,13 @@ declare a roadmap,
199
235
 
200
236
  for how to execute the blueprint specified in $BEHAVIOR_DIR_REL/3.3.blueprint.v1.i1.md
201
237
 
238
+ ref:
239
+ - $BEHAVIOR_DIR_REL/0.wish.md
240
+ - $BEHAVIOR_DIR_REL/1.vision.md (if declared)
241
+ - $BEHAVIOR_DIR_REL/2.criteria.md (if declared)
242
+ - $BEHAVIOR_DIR_REL/3.2.distill.domain._.v1.i1.md (if declared)
243
+ - $BEHAVIOR_DIR_REL/3.3.blueprint.v1.i1.md
244
+
202
245
  ---
203
246
 
204
247
  emit into $BEHAVIOR_DIR_REL/4.1.roadmap.v1.i1.md
@@ -214,8 +257,13 @@ of roadmap
214
257
  - $BEHAVIOR_DIR_REL/4.1.roadmap.v1.i1.md
215
258
 
216
259
  ref:
260
+ - $BEHAVIOR_DIR_REL/0.wish.md
261
+ - $BEHAVIOR_DIR_REL/1.vision.md (if declared)
262
+ - $BEHAVIOR_DIR_REL/2.criteria.md (if declared)
263
+ - $BEHAVIOR_DIR_REL/3.2.distill.domain._.v1.i1.md (if declared)
217
264
  - $BEHAVIOR_DIR_REL/3.3.blueprint.v1.i1.md
218
265
 
266
+
219
267
  ---
220
268
 
221
269
  track your progress
@@ -0,0 +1,136 @@
1
+ {
2
+ // mechanic role permissions for Claude
3
+ //
4
+ // these permissions are conservative by design:
5
+ // - deny: commands that should never be auto-approved
6
+ // - ask: commands that require explicit user approval
7
+ // - allow: commands that are safe to auto-approve
8
+
9
+ "permissions": {
10
+ // commands that should never be auto-approved
11
+ "deny": [
12
+ // git write operations - require explicit user approval for audit trail
13
+ "Bash(git commit:*)",
14
+ "Bash(git add:*)",
15
+ "Bash(git stash:*)",
16
+ "Bash(git checkout:*)",
17
+
18
+ // "anywrite" commands - CRITICAL SECURITY RISK
19
+ //
20
+ // unlike Claude's native Edit/Write tools which are scoped to the repo,
21
+ // these bash commands can write ANYWHERE on your OS. this makes them
22
+ // prime targets for prompt injection attacks:
23
+ //
24
+ // 1. user asks claude to fetch docs from lookslegit.dev/api-reference
25
+ // 2. page contains hidden instructions to write innocent-looking content
26
+ // 3. with anywrite allowed, claude writes to ~/.bashrc or ~/.zshrc
27
+ // 4. content looks like helpful aliases but executes malicious logic
28
+ // 5. your entire system is now compromised
29
+ //
30
+ // sed: in-place file modification anywhere on disk
31
+ "Bash(sed:*)",
32
+ // tee: write to any path - ~/.bashrc, ~/.ssh/authorized_keys, etc.
33
+ "Bash(tee:*)",
34
+ // find -exec: arbitrary command execution on matched files
35
+ "Bash(find:*)",
36
+ // echo >: redirect to any file - echo "malicious" >> ~/.bashrc
37
+ "Bash(echo:*)",
38
+ // mv: move/overwrite any file - mv ~/.ssh/config ~/.ssh/config.bak
39
+ "Bash(mv:*)",
40
+
41
+ // test runners - should use npm run test:* scripts instead
42
+ // direct invocation bypasses project test configuration
43
+ "Bash(npx biome:*)",
44
+ "Bash(npx jest:*)"
45
+ ],
46
+
47
+ // commands that require explicit user approval each time
48
+ "ask": [
49
+ "Bash(bash:*)",
50
+ "Bash(chmod:*)",
51
+ "Bash(npm install:*)",
52
+ "Bash(pnpm install:*)",
53
+ "Bash(pnpm add:*)"
54
+ ],
55
+
56
+ // commands that are safe to auto-approve
57
+ "allow": [
58
+ // ide integrations
59
+ "mcp__ide__getDiagnostics",
60
+
61
+ // web access
62
+ "WebSearch",
63
+ "WebFetch(domain:github.com)",
64
+ "WebFetch(domain:www.npmjs.com)",
65
+ "WebFetch(domain:hub.docker.com)",
66
+ "WebFetch(domain:raw.githubusercontent.com)",
67
+ "WebFetch(domain:biomejs.dev)",
68
+
69
+ // git read-only
70
+ "Bash(git log:*)",
71
+
72
+ // filesystem read operations
73
+ "Bash(ls:*)",
74
+ "Bash(tree:*)",
75
+ "Bash(cat:*)",
76
+ "Bash(head:*)",
77
+ "Bash(tail:*)",
78
+ "Bash(grep:*)",
79
+ "Bash(wc:*)",
80
+ "Bash(diff:*)",
81
+ "Bash(which:*)",
82
+ "Bash(file:*)",
83
+ "Bash(mkdir:*)",
84
+ "Bash(pwd)",
85
+
86
+ // safe custom tools
87
+ "Bash(bash src/logic/roles/mechanic/.skills/claude.tools/mvsafe.sh:*)",
88
+
89
+ // npm read operations
90
+ "Bash(npm view:*)",
91
+ "Bash(npm list:*)",
92
+ "Bash(npm remove:*)",
93
+
94
+ // rhachet operations
95
+ "Bash(npx rhachet roles boot --repo ehmpathy --role mechanic)",
96
+
97
+ // self execution of packages
98
+ "Bash(npx tsx ./bin/run:*)",
99
+
100
+ // build operations
101
+ "Bash(npm run build:*)",
102
+ "Bash(npm run build:compile)",
103
+ "Bash(npm run start:testdb:*)",
104
+
105
+ // test operations
106
+ "Bash(npm run test:*)",
107
+ "Bash(npm run test:types:*)",
108
+ "Bash(npm run test:format:*)",
109
+ "Bash(npm run test:lint:*)",
110
+ "Bash(npm run test:unit:*)",
111
+ "Bash(npm run test:integration:*)",
112
+ "Bash(npm run test:acceptance:*)",
113
+
114
+ // thorough test operations
115
+ "Bash(THOROUGH=true npm run test:*)",
116
+ "Bash(THOROUGH=true npm run test:types:*)",
117
+ "Bash(THOROUGH=true npm run test:format:*)",
118
+ "Bash(THOROUGH=true npm run test:lint:*)",
119
+ "Bash(THOROUGH=true npm run test:unit:*)",
120
+ "Bash(THOROUGH=true npm run test:integration:*)",
121
+ "Bash(THOROUGH=true npm run test:acceptance:*)",
122
+
123
+ // fix operations
124
+ "Bash(npm run fix:*)",
125
+ "Bash(npm run fix:format:*)",
126
+ "Bash(npm run fix:lint:*)",
127
+
128
+ // github cli read operations
129
+ "Bash(gh pr checks:*)",
130
+ "Bash(gh pr status:*)",
131
+
132
+ // skill sourcing
133
+ "Bash(source .agent/repo=.this/skills/*)"
134
+ ]
135
+ }
136
+ }
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.13.11",
5
+ "version": "1.13.13",
6
6
  "repository": "ehmpathy/rhachet-roles-ehmpathy",
7
7
  "homepage": "https://github.com/ehmpathy/rhachet-roles-ehmpathy",
8
8
  "keywords": [
@@ -27,7 +27,7 @@
27
27
  "fix": "npm run fix:format && npm run fix:lint",
28
28
  "build:clean": "rm dist/ -rf",
29
29
  "build:compile": "tsc -p ./tsconfig.build.json && tsc-alias -p ./tsconfig.build.json",
30
- "build:complete": "rsync -a --prune-empty-dirs --include='*/' --exclude='**/.route/**' --exclude='**/.scratch/**' --exclude='**/.behavior/**' --exclude='**/*.test.sh' --include='**/*.template.md' --include='**/.briefs/**/*.md' --include='**/.briefs/*.md' --include='**/.skills/**/*.sh' --include='**/.skills/*.sh' --include='**/.skills/**/*.json' --include='**/.skills/*.json' --exclude='*' src/ dist/",
30
+ "build:complete": "rsync -a --prune-empty-dirs --include='*/' --exclude='**/.route/**' --exclude='**/.scratch/**' --exclude='**/.behavior/**' --exclude='**/*.test.sh' --include='**/*.template.md' --include='**/.briefs/**/*.md' --include='**/.briefs/*.md' --include='**/.skills/**/*.sh' --include='**/.skills/*.sh' --include='**/.skills/**/*.jsonc' --include='**/.skills/*.jsonc' --exclude='*' src/ dist/",
31
31
  "build": "npm run build:clean && npm run build:compile && npm run build:complete --if-present",
32
32
  "test:commits": "LAST_TAG=$(git describe --tags --abbrev=0 @^ 2> /dev/null || git rev-list --max-parents=0 HEAD) && npx commitlint --from $LAST_TAG --to HEAD --verbose",
33
33
  "test:types": "tsc -p ./tsconfig.json --noEmit",