rhachet-roles-ehmpathy 1.13.6 → 1.13.8

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 (355) hide show
  1. package/dist/logic/roles/architect/.briefs/criteria.given_when_then.[seed].v3.md +87 -0
  2. package/dist/logic/roles/architect/.briefs/practices/prefer.env_access.prep_over_dev.md +12 -0
  3. package/dist/logic/roles/architect/.briefs/ubiqlang.ambiguous-from-overload.md +1 -0
  4. package/dist/logic/roles/bhrain/.briefs/cognition/cog000.overview.and.premise.md +115 -0
  5. package/dist/logic/roles/bhrain/.briefs/cognition/cog021.coordinates.spherical.md +69 -0
  6. package/dist/logic/roles/bhrain/.briefs/cognition/cog021.metaphor.cauliflorous.md +44 -0
  7. package/dist/logic/roles/bhrain/.briefs/cognition/cog021.metaphor.galactic_spacetravel.[article].md +42 -0
  8. package/dist/logic/roles/bhrain/.briefs/cognition/cog021.metaphor.galactic_spacetravel.[lesson].md +60 -0
  9. package/dist/logic/roles/bhrain/.briefs/cognition/cog021.structs.catalog.md +51 -0
  10. package/dist/logic/roles/bhrain/.briefs/cognition/cog021.structs.treestruct.md +85 -0
  11. package/dist/logic/roles/bhrain/.briefs/cognition/cog021.structs.vector.md +112 -0
  12. package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.definition.md +115 -0
  13. package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct._.md +112 -0
  14. package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.coords.1.spherical.md +80 -0
  15. package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.coords.2.abstractive.md +59 -0
  16. package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.coords.3.descriptive.md +64 -0
  17. package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.persp.1.perspectives.md +88 -0
  18. package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.persp.2.universal.md +82 -0
  19. package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.persp.3.relative.md +106 -0
  20. package/dist/logic/roles/bhrain/.briefs/cognition/cog101.concept.treestruct.persp.4.fractal.md +83 -0
  21. package/dist/logic/roles/bhrain/.briefs/cognition/cog151.concept.treestruct.gravity.md +89 -0
  22. package/dist/logic/roles/bhrain/.briefs/cognition/cog201.cortal.focus.p1.definition.md +231 -0
  23. package/dist/logic/roles/bhrain/.briefs/cognition/cog201.cortal.focus.p1.examples.cont.md +82 -0
  24. package/dist/logic/roles/bhrain/.briefs/cognition/cog201.cortal.focus.p2.acuity.md +134 -0
  25. package/dist/logic/roles/bhrain/.briefs/cognition/cog201.cortal.focus.p2.breadth.md +151 -0
  26. package/dist/logic/roles/bhrain/.briefs/cognition/cog201.cortal.focus.p2.depth.md +147 -0
  27. package/dist/logic/roles/bhrain/.briefs/cognition/cog251.cortal.focus.p3.fabric.md +96 -0
  28. package/dist/logic/roles/bhrain/.briefs/cognition/cog251.cortal.focus.p3.mode.md +68 -0
  29. package/dist/logic/roles/bhrain/.briefs/cognition/cog251.cortal.focus.p3.rythm.md +56 -0
  30. package/dist/logic/roles/bhrain/.briefs/cognition/cog251.cortal.focus.p3.usecases.md +76 -0
  31. package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.1.motion.primitives._.md +155 -0
  32. package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.1.motion.primitives.acuity.md +94 -0
  33. package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.1.motion.primitives.breadth.md +114 -0
  34. package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.1.motion.primitives.breadth.vary.md +105 -0
  35. package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.1.motion.primitives.depth.md +132 -0
  36. package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.2.motion.composites._.md +106 -0
  37. package/dist/logic/roles/bhrain/.briefs/cognition/cog301.traversal.2.motion.composites.grammar.md +105 -0
  38. package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.._.md +209 -0
  39. package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.1.persp.as.berries.md +168 -0
  40. package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.1.persp.as.vectors.md +74 -0
  41. package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.1.persp.has.precision.tunable.md +80 -0
  42. package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.2.1.primitives.rough._.md +99 -0
  43. package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.2.1.primitives.rough.interrogative.md +108 -0
  44. package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.2.1.primitives.rough.why.[article].md +55 -0
  45. package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.2.2.composite.smooth._.md +83 -0
  46. package/dist/logic/roles/bhrain/.briefs/cognition/cog401.questions.2.2.composite.smooth.examples.md +101 -0
  47. package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.1.primitives._.md +134 -0
  48. package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.1.primitives.recall.md +149 -0
  49. package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.1.primitives.steer.md +146 -0
  50. package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.1.primitives.think.md +141 -0
  51. package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.2.composites.zoom.md +127 -0
  52. package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.3.catalogs.md +107 -0
  53. package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang.3.grammar.md +124 -0
  54. package/dist/logic/roles/bhrain/.briefs/cognition/cog501.cortal.assemblylang_.md +0 -0
  55. package/dist/logic/roles/bhrain/.briefs/cognition/inflight/concept.vs.idea.md +70 -0
  56. package/dist/logic/roles/bhrain/.briefs/cognition/inflight/core.concept.adjectives.md +8 -0
  57. package/dist/logic/roles/bhrain/.briefs/distilisys.grammar.compressed.md +19 -0
  58. package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.1.why.common.[article].md +32 -0
  59. package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.1.why.term_smells.[article].md +36 -0
  60. package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.1.why.term_smells.detection.[lesson].md +73 -0
  61. package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.2.tactic.eliminate.[article].md +55 -0
  62. package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.2.tactic.eliminate.[lesson].md +41 -0
  63. package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.3.eliminator.[trait]._.md +66 -0
  64. package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.3.eliminator.[trait].balance.md +36 -0
  65. package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.3.eliminator.[trait].bane.md +34 -0
  66. package/dist/logic/roles/bhrain/.briefs/grammar/gerunds.3.eliminator.[trait].boon.md +35 -0
  67. package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.1.ontology.[article].frame.docs_as_materializations.md +63 -0
  68. package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.1.ontology.[article].frame.docs_as_references.md +45 -0
  69. package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.2.rel.many_to_many.[article].md +37 -0
  70. package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.3.instances.[article].md +39 -0
  71. package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.4.documents.[article].md +37 -0
  72. package/dist/logic/roles/bhrain/.briefs/knowledge/kno101.primitives.5.concepts.[article].md +39 -0
  73. package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents._.[article].md +48 -0
  74. package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents._.[catalog].md +52 -0
  75. package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents.articles.[article].md +40 -0
  76. package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents.catalogs.[article].md +41 -0
  77. package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents.demos.[article].md +42 -0
  78. package/dist/logic/roles/bhrain/.briefs/knowledge/kno201.documents.lessons.[article].md +42 -0
  79. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.compression.1.refs._.[article].md +41 -0
  80. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.compression.2.kernels._.[article].i1.md +50 -0
  81. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.compression.3.briefs._.[article].md +40 -0
  82. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.compression._.[article].md +90 -0
  83. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.compression._.[catalog].persp.garden.md +64 -0
  84. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[article].md +45 -0
  85. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].algorithm.md +54 -0
  86. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].color.md +56 -0
  87. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].empathy.md +54 -0
  88. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].entropy.md +54 -0
  89. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].gravity.md +54 -0
  90. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].joke.md +56 -0
  91. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.1.from_instances.[demo].value.md +54 -0
  92. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2._.[catalog].md +43 -0
  93. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.articulate.[article].md +27 -0
  94. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.articulate.[lesson].md +49 -0
  95. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.catalogize.[article].md +27 -0
  96. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.catalogize.[lesson].md +54 -0
  97. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.demonstrate.[article].md +26 -0
  98. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.demonstrate.[lesson].md +49 -0
  99. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.lessonize.[article].md +26 -0
  100. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.enbrief.2.lessonize.[lesson].md +54 -0
  101. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.kernelize._.[article].md +58 -0
  102. package/dist/logic/roles/bhrain/.briefs/knowledge/kno301.doc.kernelize._.[lesson].md +88 -0
  103. package/dist/logic/roles/bhrain/.briefs/knowledge/kno351.docs.are_instances.[article].md +34 -0
  104. package/dist/logic/roles/bhrain/.briefs/knowledge/kno351.docs.recursion.[catalog].md +44 -0
  105. package/dist/logic/roles/bhrain/.briefs/knowledge/kno401.actors.1.role.author.[article].md +36 -0
  106. package/dist/logic/roles/bhrain/.briefs/knowledge/kno401.actors.1.role.librarian.[article].md +40 -0
  107. package/dist/logic/roles/bhrain/.briefs/knowledge/kno401.actors.2.interdependence.[article].md +52 -0
  108. package/dist/logic/roles/bhrain/.briefs/knowledge/kno501.doc.enbrief.catalog.structure1.[article].md +53 -0
  109. package/dist/logic/roles/bhrain/.briefs/knowledge/kno501.doc.enbrief.catalog.structure1.[lesson].template.md +101 -0
  110. package/dist/logic/roles/bhrain/.briefs/librarian.context/article.variant.vision.[article].md +60 -0
  111. package/dist/logic/roles/bhrain/.briefs/librarian.context/term.expectation.vs_assumption._.md +60 -0
  112. package/dist/logic/roles/bhrain/.briefs/librarian.context/term.frame.vs_perspective.[article].md +96 -0
  113. package/dist/logic/roles/bhrain/.briefs/librarian.context/term.invariant.[article].md +29 -0
  114. package/dist/logic/roles/bhrain/.briefs/librarian.context/term.lesson._vs_article.[article].md +36 -0
  115. package/dist/logic/roles/bhrain/.briefs/librarian.context/term.ref._vs_brief.md +90 -0
  116. package/dist/logic/roles/bhrain/.briefs/librarian.context/term.referent.[article].md +43 -0
  117. package/dist/logic/roles/bhrain/.briefs/librarian.context/usage.lesson_vs_article.[lesson].md +31 -0
  118. package/dist/logic/roles/bhrain/.briefs/librarian.context/usage.lesson_vs_article_vs_demo.[lesson].md +37 -0
  119. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/.readme.md +12 -0
  120. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>._.[article].frame.cognitive.md +33 -0
  121. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>._.[article].frame.tactical.md +45 -0
  122. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.[catalog].md +83 -0
  123. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.concept_dimension.examples.[article][seed].md +4 -0
  124. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.concept_dimension.invariants.[article].md +36 -0
  125. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.from.examples.md +44 -0
  126. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.from.seed.md +48 -0
  127. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.with.templates.[article].md +57 -0
  128. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tactic.with.templates.[gallery][review].effective.md +1 -0
  129. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<articulate>.tone.bluecollar.[article][seed].md +5 -0
  130. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<catalogize>._.[article][seed].md +3 -0
  131. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<catalogize>.observation.via_clusterage_over_via_imagination.[seed].md +6 -0
  132. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<catalogize>.vs_diverge.[article].persp.save_compute.md +46 -0
  133. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>._.[article].frame.colloquial.i2.by_grok.md +64 -0
  134. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.[catalog].md +106 -0
  135. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.contrast.[demo].usecase.vs_userjourney.by_chatgpt.md +45 -0
  136. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.counter.[demo].usecase.flyer.by_chargpt.md +38 -0
  137. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.counter.[demo].walkability.phoenix.by_chargpt.md +41 -0
  138. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].shear_force.scissors.by_grok.md +52 -0
  139. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].tea.darjeeling.by_grok.md +50 -0
  140. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].usecase.book_flight.by_grok.md +54 -0
  141. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].usecase.order_food.by_chatgpt.md +40 -0
  142. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].walkability.portland.by_chatgpt.i3.md +42 -0
  143. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[demo].walkability.portland.by_grok.i2.md +49 -0
  144. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.[lesson].howto.md +28 -0
  145. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.example.structure.[article].i2.md +73 -0
  146. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.narrative.[demo].usecase.order_online.by_chatgpt.md +34 -0
  147. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/<demonstrate>.variants.walkthrough.[demo].usecase.book_online.by_chatgpt.md +47 -0
  148. package/dist/logic/roles/bhrain/.briefs/librarian.tactics/[brief].verbiage.outline.over.narrative.md +55 -0
  149. package/dist/logic/roles/bhrain/.briefs/logistics/term.logistics.[article].md +21 -0
  150. package/dist/logic/roles/bhrain/.briefs/logistics/term.logistics.of_information.[article].md +22 -0
  151. package/dist/logic/roles/bhrain/.briefs/logistics/term.logistics.of_knowledge.[article].md +29 -0
  152. package/dist/logic/roles/bhrain/.briefs/physics/optics.focal.acuity.md +77 -0
  153. package/dist/logic/roles/bhrain/.briefs/physics/optics.focal.breadth.md +74 -0
  154. package/dist/logic/roles/bhrain/.briefs/physics/optics.focal.depth.md +77 -0
  155. package/dist/logic/roles/bhrain/.briefs/physics/optics.focal.distance.md +92 -0
  156. package/dist/logic/roles/bhrain/.briefs/physics/optics.focal.tradeoffs.md +107 -0
  157. package/dist/logic/roles/bhrain/.briefs/tactician/tactics.compose.traits_and_skills.[article].md +76 -0
  158. package/dist/logic/roles/bhrain/.briefs/tactician/trait.articulation.[article].md +67 -0
  159. package/dist/logic/roles/bhrain/.briefs/tactician/trait.purpose.[article].md +56 -0
  160. package/dist/logic/roles/bhrain/.briefs/tactician/trait.vs_skill.[article].md +55 -0
  161. package/dist/logic/roles/bhrain/.briefs/tactician/trait.vs_tactic.[article].md +70 -0
  162. package/dist/logic/roles/bhrain/.briefs/terms.motive.intent.goal.md +46 -0
  163. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<cluster>._.[article].frame.tactical._.md +85 -0
  164. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<cluster>.vs_<diverge>.duality.[article].md +43 -0
  165. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<diverge>._.[article].frame.cognitive.[seed].md +4 -0
  166. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<diverge>._.[article].frame.tactical.md +89 -0
  167. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<elaborate>_vs_<elucidate>.[seed].md +1 -0
  168. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<enquestion>._.[article].md +113 -0
  169. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<enquestion>._.[gallery].plumber.diagnose.md +130 -0
  170. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<enquestion>._.[gallery].thinker.enquestion.md +125 -0
  171. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<enquestion>.tactic.perspectives.[article].md +36 -0
  172. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<triage>._.[article].frame.tactical.md +85 -0
  173. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<triage>.persp.grades_from_context.[article].md +48 -0
  174. package/dist/logic/roles/bhrain/.briefs/thinker.tactics/<triage>.persp.implicit_question.[article].md +65 -0
  175. package/dist/logic/roles/bhrain/.briefs/trait.chillnature.md +14 -0
  176. package/dist/logic/roles/bhrain/.briefs/trait.ocd.md +5 -0
  177. package/dist/logic/roles/bhrain/.briefs/worders/core.matmuls_vecmuls_elemuls.md +93 -0
  178. package/dist/logic/roles/bhrain/.briefs/worders/core.transformers.as_origin.md +62 -0
  179. package/dist/logic/roles/bhrain/.briefs/worders/core.transformers.self_attention.[article].md +93 -0
  180. package/dist/logic/roles/bhrain/.briefs/worders/core.transformers.self_attention.[demo].ambig.bank.md +80 -0
  181. package/dist/logic/roles/bhrain/.briefs/worders/core.transformers.self_attention.[demo].cat_sat.md +67 -0
  182. package/dist/logic/roles/bhrain/.briefs/worders/force.repeat_input_structures.md +48 -0
  183. package/dist/logic/roles/bhrain/.briefs/worders/knowledge.interdependence.[article].md +37 -0
  184. package/dist/logic/roles/bhrain/.briefs/worders/knowledge.interdependence.[demo].domain.physics.md +30 -0
  185. package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internal_vs_external.[article].artist_vs_librarian.md +44 -0
  186. package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internal_vs_external.[demo].artist_vs_librarian.md +37 -0
  187. package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internal_vs_external.[demo].domain.physics.md +39 -0
  188. package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internalized.[article].md +35 -0
  189. package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internalized.[demo].artist.md +36 -0
  190. package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internalized.[demo].neural.md +37 -0
  191. package/dist/logic/roles/bhrain/.briefs/worders/knowledge.internalized.[demo].pianist.md +34 -0
  192. package/dist/logic/roles/bhrain/.briefs/worders/limits.rhyme.md +46 -0
  193. package/dist/logic/roles/bhrain/.briefs/worders/limits.spell.md +49 -0
  194. package/dist/logic/roles/bhrain/.briefs/worders/teach.via.library.examples.md +28 -0
  195. package/dist/logic/roles/bhrain/.briefs/worders/teach.via.library.explanations_vs_examples.md +40 -0
  196. package/dist/logic/roles/bhrain/.briefs/worders/trend.prefer_reuse.[seed].md +10 -0
  197. package/dist/logic/roles/bhrain/brief.articulate/stepArticulate.template.md +120 -0
  198. package/dist/logic/roles/bhrain/brief.demonstrate/stepDemonstrate.template.md +135 -0
  199. package/dist/logic/roles/bhrain/khue.cluster/stepCluster.template.md +134 -0
  200. package/dist/logic/roles/bhrain/khue.diverge/stepDiverge.template.md +110 -0
  201. package/dist/logic/roles/bhrain/khue.instantiate/stepInstantiate.template.md +73 -0
  202. package/dist/logic/roles/bhrain/khue.triage/stepTriage.template.md +128 -0
  203. package/dist/logic/roles/coach/.briefs/claude.context-caching.md +76 -0
  204. package/dist/logic/roles/designer/.briefs/declarative-over-imperative.md +79 -0
  205. package/dist/logic/roles/designer/.briefs/declarative-over-imperative.stub.md +14 -0
  206. package/dist/logic/roles/designer/.briefs/pit-of-success.md +70 -0
  207. package/dist/logic/roles/designer/.briefs/pit-of-success.stub.md +3 -0
  208. package/dist/logic/roles/designer/outlineDistilisys/stepOutlineDistilisys.template.md +173 -0
  209. package/dist/logic/roles/designer/outlineRoadmap/stepOutlineRoadmap.template.md +88 -0
  210. package/dist/logic/roles/designer/outlineVision/stepOutlineVision.template.md +47 -0
  211. package/dist/logic/roles/ecologist/.briefs/.readme.md +17 -0
  212. package/dist/logic/roles/ecologist/.briefs/distilisys/sys101.distilisys.grammar.md +221 -0
  213. package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive._.summary.md +82 -0
  214. package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive.p1.reversibility.entropy.md +39 -0
  215. package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive.p2.option.chance.choice.md +140 -0
  216. package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive.p3.chance.motive.polarity.threat.md +72 -0
  217. package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive.p4.motive.horizon.md +101 -0
  218. package/dist/logic/roles/ecologist/.briefs/distilisys/sys201.actor.motive.p5.motive.grammar.md +131 -0
  219. package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources._.primitives.summary.md +108 -0
  220. package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources.pt1.primitive.time.md +56 -0
  221. package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources.pt2.primitive.energy.md +69 -0
  222. package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources.pt3.primitive.space.md +85 -0
  223. package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources.pt4.primitive.claim.md +113 -0
  224. package/dist/logic/roles/ecologist/.briefs/distilisys/sys211.actor.resources.pt5.composites.md +146 -0
  225. package/dist/logic/roles/ecologist/.briefs/distilisys/sys231.actor.claims.p1.primitive.exchange.md +130 -0
  226. package/dist/logic/roles/ecologist/.briefs/ecology/.eco001.origin.prompt.md +11 -0
  227. package/dist/logic/roles/ecologist/.briefs/ecology/eco001.overview.md +44 -0
  228. package/dist/logic/roles/ecologist/.briefs/ecology/eco101.core-system-understanding.md +70 -0
  229. package/dist/logic/roles/ecologist/.briefs/ecology/eco101.p1.ecosystem-structure.md +62 -0
  230. package/dist/logic/roles/ecologist/.briefs/ecology/eco101.p2.trophic-dynamics.md +59 -0
  231. package/dist/logic/roles/ecologist/.briefs/ecology/eco101.p3.population-ecology.md +71 -0
  232. package/dist/logic/roles/ecologist/.briefs/ecology/eco101.p4.community-interactions.md +78 -0
  233. package/dist/logic/roles/ecologist/.briefs/ecology/eco505.systems-thinking.md +62 -0
  234. package/dist/logic/roles/ecologist/.briefs/economy/econ001.overview.md +65 -0
  235. package/dist/logic/roles/ecologist/.briefs/economy/econ101.core-mechanics.md +65 -0
  236. package/dist/logic/roles/ecologist/.briefs/economy/econ101.p1.supply-and-demand.md +76 -0
  237. package/dist/logic/roles/ecologist/.briefs/economy/econ101.p2.opportunity-cost.md +106 -0
  238. package/dist/logic/roles/ecologist/.briefs/economy/econ101.p3.marginal-analysis.md +79 -0
  239. package/dist/logic/roles/ecologist/.briefs/economy/econ101.p4.rational-choice.md +81 -0
  240. package/dist/logic/roles/ecologist/.briefs/economy/econ201.market-structures-and-failures.md +81 -0
  241. package/dist/logic/roles/ecologist/.briefs/economy/econ301.production-and-growth.md +71 -0
  242. package/dist/logic/roles/ecologist/.briefs/economy/econ401.macro-systems.md +92 -0
  243. package/dist/logic/roles/ecologist/.briefs/economy/econ501.global-and-institutional.md +85 -0
  244. package/dist/logic/roles/ecologist/.briefs/economy/econ501.p1.game-theory.md +142 -0
  245. package/dist/logic/roles/ecologist/.briefs/economy/econ501.p4.behavioral-economics.md +146 -0
  246. package/dist/logic/roles/ecologist/.briefs/product/user.journey._.[article].i1.md +68 -0
  247. package/dist/logic/roles/ecologist/.briefs/product/user.journey._.[article].md +0 -0
  248. package/dist/logic/roles/ecologist/.briefs/product/user.journey.purpose.[article].i1.md +52 -0
  249. package/dist/logic/roles/ecologist/.briefs/product/user.journey.purpose.[article].md +52 -0
  250. package/dist/logic/roles/ecologist/.briefs/term.distillation.md +93 -0
  251. package/dist/logic/roles/mechanic/.briefs/architecture/bounded-contexts.md +61 -0
  252. package/dist/logic/roles/mechanic/.briefs/architecture/directional-dependencies.md +82 -0
  253. package/dist/logic/roles/mechanic/.briefs/architecture/domain-driven-design.md +61 -0
  254. package/dist/logic/roles/mechanic/.briefs/architecture/ubiqlang.md +37 -0
  255. package/dist/logic/roles/mechanic/.briefs/codestyle/_mech.compressed.md +57 -0
  256. package/dist/logic/roles/mechanic/.briefs/codestyle/_mech.compressed.prompt.md +5 -0
  257. package/dist/logic/roles/mechanic/.briefs/codestyle/flow.failfast.md +37 -0
  258. package/dist/logic/roles/mechanic/.briefs/codestyle/flow.idempotency.md +63 -0
  259. package/dist/logic/roles/mechanic/.briefs/codestyle/flow.immutability.md +48 -0
  260. package/dist/logic/roles/mechanic/.briefs/codestyle/flow.narratives.md +74 -0
  261. package/dist/logic/roles/mechanic/.briefs/codestyle/flow.single-responsibility.md +67 -0
  262. package/dist/logic/roles/mechanic/.briefs/codestyle/flow.transformers_over_conditionals.[lesson].md +97 -0
  263. package/dist/logic/roles/mechanic/.briefs/codestyle/mech.args.input-context.md +61 -0
  264. package/dist/logic/roles/mechanic/.briefs/codestyle/mech.args.input-inline.md +63 -0
  265. package/dist/logic/roles/mechanic/.briefs/codestyle/mech.arrowonly.md +47 -0
  266. package/dist/logic/roles/mechanic/.briefs/codestyle/mech.clear-contracts.md +53 -0
  267. package/dist/logic/roles/mechanic/.briefs/codestyle/mech.tests.given-when-then.md +62 -0
  268. package/dist/logic/roles/mechanic/.briefs/codestyle/mech.what-why.md +88 -0
  269. package/dist/logic/roles/mechanic/.briefs/codestyle/mech.what-why.v2.md +98 -0
  270. package/dist/logic/roles/mechanic/.briefs/codestyle/pit-of-success.via.minimize-surface-area.md +58 -0
  271. package/dist/logic/roles/mechanic/.briefs/criteria.practices/never.term.script.md +7 -0
  272. package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.emojis.chill_nature.md +24 -0
  273. package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.jq.over_alt.[demo].md +29 -0
  274. package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.terraform.[criteria].md +4 -0
  275. package/dist/logic/roles/mechanic/.briefs/criteria.practices/prefer.terraform.[seed].md +17 -0
  276. package/dist/logic/roles/mechanic/.briefs/criteria.practices/require.dependency.pinned_versions.md +3 -0
  277. package/dist/logic/roles/mechanic/.briefs/criteria.practices/require.idempotency.md +33 -0
  278. package/dist/logic/roles/mechanic/.briefs/criteria.practices/require.knowledge.externalized.md +17 -0
  279. package/dist/logic/roles/mechanic/.briefs/engineer/dependency-injection.md +118 -0
  280. package/dist/logic/roles/mechanic/.briefs/engineer/dependency-injection.stub.md +11 -0
  281. package/dist/logic/roles/mechanic/.briefs/lessons/code.prod.typescript.types/bivariance_vs_contravariance.[lesson].md +95 -0
  282. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.contract.inputs.nameargs/bad-practice/forbid.positional-args.md +43 -0
  283. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.contract.inputs.nameargs/best-practice/require.namedargs.md +6 -0
  284. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.declarative/.readme.md +0 -0
  285. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.declarative/best-practice/declastruct.[demo].md +485 -0
  286. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.domain.objects/bad-practices/blocker.has.attributes.nullable.md +13 -0
  287. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.domain.objects/bad-practices/blocker.has.attributes.undefined.md +15 -0
  288. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.domain.objects/bad-practices/blocker.refs.immuatble.md +9 -0
  289. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.domain.objects/best-practice/ref.package.domain-objects.[readme].md +585 -0
  290. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.domain.operations/best-practice/require.sync.names.md +14 -0
  291. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.errors.failfast/bad-practices/forbid.failhide.md +19 -0
  292. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.errors.failfast/bad-practices/forbid.hide_errors.md +13 -0
  293. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.errors.failfast/best-practice/prefer.HelpfulError.wrap.md +54 -0
  294. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.errors.failfast/best-practice/require.fail_fast.[demo].shell.md +17 -0
  295. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.errors.failfast/best-practice/require.fail_fast.md +28 -0
  296. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.narrative/bad-practices/forbid.else.md +54 -0
  297. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.narrative/bad-practices/forbid.else.v2.md +9 -0
  298. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.narrative/best-practice/early-returns.named-checks.[demo].md +181 -0
  299. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.repo.structure/bad-practices/forbid.barrel.exports.ts.md +41 -0
  300. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.repo.structure/bad-practices/forbid.index.ts.md +3 -0
  301. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.repo.structure/best-practice/directional-dependencies.md +82 -0
  302. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.repo.structure/best-practice/dot-test-and-dot-temp.md +20 -0
  303. package/dist/logic/roles/mechanic/.briefs/patterns/code.prod.typescript.utils/best-practice/ref.package.as-command.[tips].md +7 -0
  304. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.acceptance/best-practice/blackbox.md +5 -0
  305. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.diagnose.[lesson].md +14 -0
  306. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.run.[lesson].md +18 -0
  307. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.use.[lesson].md +20 -0
  308. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.write.[lesson].md +3 -0
  309. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.write.[lesson].on_scope.for_integ.md +8 -0
  310. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.write.[lesson].on_scope.for_units.md +9 -0
  311. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/howto.write.bdd.[lesson].md +280 -0
  312. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/prefer.datadriven.md +41 -0
  313. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/ref.test-fns.[readme].md +185 -0
  314. package/dist/logic/roles/mechanic/.briefs/patterns/code.test.howto/best-practice/whento.snapshots.[lesson].md +23 -0
  315. package/dist/logic/roles/mechanic/.briefs/patterns/lang.terms/.readme.md +1 -0
  316. package/dist/logic/roles/mechanic/.briefs/patterns/lang.terms/bad-practices/forbid.term=existing.md +10 -0
  317. package/dist/logic/roles/mechanic/.briefs/patterns/lang.terms/best-practice/require.order.noun_adj.md +39 -0
  318. package/dist/logic/roles/mechanic/.briefs/patterns/lang.terms/domain=practices.terms=forbid_prefer_desire_require.md +13 -0
  319. package/dist/logic/roles/mechanic/.briefs/patterns/lang.terms/domain=software.terms=prodcode_vs_testcode.md +7 -0
  320. package/dist/logic/roles/mechanic/.briefs/patterns/lang.tones/.readme.md +3 -0
  321. package/dist/logic/roles/mechanic/.briefs/patterns/lang.tones/prefer.chill-nature.md +0 -0
  322. package/dist/logic/roles/mechanic/.briefs/patterns/lang.tones/prefer.lowercase.md +0 -0
  323. package/dist/logic/roles/mechanic/.briefs/style.compressed.md +29 -0
  324. package/dist/logic/roles/mechanic/.briefs/style.compressed.prompt.md +5 -0
  325. package/dist/logic/roles/mechanic/.briefs/style.names.treestruct.md +48 -0
  326. package/dist/logic/roles/mechanic/.briefs/style.names.ubiqlang.md +37 -0
  327. package/dist/logic/roles/mechanic/.briefs/style.words.lowercase.md +36 -0
  328. package/dist/logic/roles/mechanic/.briefs/terms/badpractice/script.md +9 -0
  329. package/dist/logic/roles/mechanic/.briefs/terms/plan.exec_vs_apply.md +45 -0
  330. package/dist/logic/roles/mechanic/.skills/claude.hooks/check.pretooluse.permissions.sh +346 -0
  331. package/dist/logic/roles/mechanic/.skills/claude.hooks/forbid.stderr.redirect.sh +57 -0
  332. package/dist/logic/roles/mechanic/.skills/claude.tools/mvsafe.sh +75 -0
  333. package/dist/logic/roles/mechanic/.skills/declapract.upgrade.sh +50 -0
  334. package/dist/logic/roles/mechanic/.skills/git.worktree.common.sh +58 -0
  335. package/dist/logic/roles/mechanic/.skills/git.worktree.del.sh +51 -0
  336. package/dist/logic/roles/mechanic/.skills/git.worktree.get.sh +51 -0
  337. package/dist/logic/roles/mechanic/.skills/git.worktree.set.sh +108 -0
  338. package/dist/logic/roles/mechanic/.skills/git.worktree.sh +46 -0
  339. package/dist/logic/roles/mechanic/.skills/init.bhuild.sh +260 -0
  340. package/dist/logic/roles/mechanic/.skills/init.claude.hooks.forbid.stderr.redirect.sh +116 -0
  341. package/dist/logic/roles/mechanic/.skills/init.claude.hooks.pretooluse.sh +118 -0
  342. package/dist/logic/roles/mechanic/.skills/init.claude.hooks.sessionstart.sh +113 -0
  343. package/dist/logic/roles/mechanic/.skills/init.claude.hooks.sh +25 -0
  344. package/dist/logic/roles/mechanic/.skills/init.claude.permissions.sh +159 -0
  345. package/dist/logic/roles/mechanic/.skills/init.claude.sh +47 -0
  346. package/dist/logic/roles/mechanic/.skills/link.claude.transcripts.sh +43 -0
  347. package/dist/logic/roles/mechanic/.skills/test.integration.sh +50 -0
  348. package/dist/logic/roles/mechanic/codediff/routeArtistCodeDiff.template.md +46 -0
  349. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewArchitecture.template.md +78 -0
  350. package/dist/logic/roles/mechanic/codediff/routeCriticCodeReviewCodestyle.template.md +75 -0
  351. package/dist/logic/roles/mechanic/codediff/routeJudgeReleasable.template.md +67 -0
  352. package/dist/logic/roles/mechanic/study/routeStudyAsk.template.md +73 -0
  353. package/dist/logic/roles/mechanic/write/.test/prior.template.md +21 -0
  354. package/dist/logic/roles/mechanic/write/stepWrite.template.md +38 -0
  355. package/package.json +2 -2
@@ -0,0 +1,116 @@
1
+ #!/usr/bin/env bash
2
+ ######################################################################
3
+ # .what = bind forbid.stderr.redirect hook to Claude settings
4
+ #
5
+ # .why = when Claude uses 2>&1, error messages are hidden and
6
+ # debugging becomes harder. this hook blocks such commands.
7
+ #
8
+ # .how = uses jq to findsert the PreToolUse hook configuration
9
+ # into .claude/settings.local.json
10
+ #
11
+ # guarantee:
12
+ # ✔ creates .claude/settings.local.json if missing
13
+ # ✔ preserves existing settings (permissions, other hooks)
14
+ # ✔ idempotent: no-op if hook already present
15
+ # ✔ prepends to hooks array (runs before other Bash hooks)
16
+ # ✔ fail-fast on errors
17
+ ######################################################################
18
+
19
+ set -euo pipefail
20
+
21
+ PROJECT_ROOT="$PWD"
22
+ SETTINGS_FILE="$PROJECT_ROOT/.claude/settings.local.json"
23
+ SKILLS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
24
+ HOOK_SCRIPT="$SKILLS_DIR/claude.hooks/forbid.stderr.redirect.sh"
25
+
26
+ # Verify hook script exists
27
+ if [[ ! -f "$HOOK_SCRIPT" ]]; then
28
+ echo "❌ hook script not found: $HOOK_SCRIPT" >&2
29
+ exit 1
30
+ fi
31
+
32
+ # Define the hook configuration to findsert
33
+ HOOK_CONFIG=$(cat <<EOF
34
+ {
35
+ "hooks": {
36
+ "PreToolUse": [
37
+ {
38
+ "matcher": "Bash",
39
+ "hooks": [
40
+ {
41
+ "type": "command",
42
+ "command": "$HOOK_SCRIPT",
43
+ "timeout": 5
44
+ }
45
+ ]
46
+ }
47
+ ]
48
+ }
49
+ }
50
+ EOF
51
+ )
52
+
53
+ # Ensure .claude directory exists
54
+ mkdir -p "$(dirname "$SETTINGS_FILE")"
55
+
56
+ # Initialize settings file if it doesn't exist
57
+ if [[ ! -f "$SETTINGS_FILE" ]]; then
58
+ echo "{}" > "$SETTINGS_FILE"
59
+ fi
60
+
61
+ # Findsert: ensure hook is at the front of the hooks array
62
+ jq --argjson hook "$HOOK_CONFIG" '
63
+ # Define the target command for comparison
64
+ def targetCmd: $hook.hooks.PreToolUse[0].hooks[0].command;
65
+
66
+ # Check if hook is already first in the Bash matcher
67
+ def hookIsFirst:
68
+ (.hooks.PreToolUse // [])
69
+ | map(select(.matcher == "Bash") | .hooks // [])
70
+ | flatten
71
+ | first
72
+ | .command == targetCmd;
73
+
74
+ # If hook is already first, return unchanged
75
+ if hookIsFirst then
76
+ .
77
+ else
78
+ # Ensure .hooks exists
79
+ .hooks //= {} |
80
+
81
+ # Ensure .hooks.PreToolUse exists
82
+ .hooks.PreToolUse //= [] |
83
+
84
+ # Check if our matcher already exists
85
+ if (.hooks.PreToolUse | map(.matcher) | index("Bash")) then
86
+ # Matcher exists - remove our hook if present, then prepend it
87
+ .hooks.PreToolUse |= map(
88
+ if .matcher == "Bash" then
89
+ # Remove existing instance of our hook, then prepend
90
+ .hooks = $hook.hooks.PreToolUse[0].hooks + (.hooks | map(select(.command != targetCmd)))
91
+ else
92
+ .
93
+ end
94
+ )
95
+ else
96
+ # Matcher does not exist, add the entire entry
97
+ .hooks.PreToolUse += $hook.hooks.PreToolUse
98
+ end
99
+ end
100
+ ' "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp"
101
+
102
+ # Check if any changes were made
103
+ if diff -q "$SETTINGS_FILE" "$SETTINGS_FILE.tmp" >/dev/null 2>&1; then
104
+ rm "$SETTINGS_FILE.tmp"
105
+ echo "👌 forbid.stderr.redirect hook already bound"
106
+ echo " $SETTINGS_FILE"
107
+ exit 0
108
+ fi
109
+
110
+ # Atomic replace
111
+ mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE"
112
+
113
+ echo "🔗 forbid.stderr.redirect hook bound successfully!"
114
+ echo " $SETTINGS_FILE"
115
+ echo ""
116
+ echo "✨ Claude will now be blocked from using 2>&1 in commands"
@@ -0,0 +1,118 @@
1
+ #!/usr/bin/env bash
2
+ ######################################################################
3
+ # .what = bind mechanic PreToolUse hook to Claude settings
4
+ #
5
+ # .why = when Claude attempts a Bash command not covered by existing
6
+ # permissions, this hook provides feedback asking it to
7
+ # reconsider whether a pre-approved command could work instead.
8
+ #
9
+ # this reduces unnecessary permission prompts and encourages
10
+ # consistent command patterns across the project.
11
+ #
12
+ # .how = uses jq to findsert the PreToolUse hook configuration
13
+ # into .claude/settings.local.json
14
+ #
15
+ # guarantee:
16
+ # ✔ creates .claude/settings.local.json if missing
17
+ # ✔ preserves existing settings (permissions, other hooks)
18
+ # ✔ idempotent: no-op if hook already present
19
+ # ✔ fail-fast on errors
20
+ ######################################################################
21
+
22
+ set -euo pipefail
23
+
24
+ PROJECT_ROOT="$PWD"
25
+ SETTINGS_FILE="$PROJECT_ROOT/.claude/settings.local.json"
26
+ SKILLS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
27
+ HOOK_SCRIPT="$SKILLS_DIR/claude.hooks/check.pretooluse.permissions.sh"
28
+
29
+ # Verify hook script exists
30
+ if [[ ! -f "$HOOK_SCRIPT" ]]; then
31
+ echo "❌ hook script not found: $HOOK_SCRIPT" >&2
32
+ exit 1
33
+ fi
34
+
35
+ # Define the hook configuration to findsert
36
+ HOOK_CONFIG=$(cat <<EOF
37
+ {
38
+ "hooks": {
39
+ "PreToolUse": [
40
+ {
41
+ "matcher": "Bash",
42
+ "hooks": [
43
+ {
44
+ "type": "command",
45
+ "command": "$HOOK_SCRIPT",
46
+ "timeout": 5
47
+ }
48
+ ]
49
+ }
50
+ ]
51
+ }
52
+ }
53
+ EOF
54
+ )
55
+
56
+ # Ensure .claude directory exists
57
+ mkdir -p "$(dirname "$SETTINGS_FILE")"
58
+
59
+ # Initialize settings file if it doesn't exist
60
+ if [[ ! -f "$SETTINGS_FILE" ]]; then
61
+ echo "{}" > "$SETTINGS_FILE"
62
+ fi
63
+
64
+ # Findsert: merge the hook configuration if not already present
65
+ jq --argjson hook "$HOOK_CONFIG" '
66
+ # Define the target command for comparison
67
+ def targetCmd: $hook.hooks.PreToolUse[0].hooks[0].command;
68
+
69
+ # Check if hook already exists
70
+ def hookExists:
71
+ (.hooks.PreToolUse // [])
72
+ | map(select(.matcher == "Bash") | .hooks // [])
73
+ | flatten
74
+ | map(.command)
75
+ | any(. == targetCmd);
76
+
77
+ # If hook already exists, return unchanged
78
+ if hookExists then
79
+ .
80
+ else
81
+ # Ensure .hooks exists
82
+ .hooks //= {} |
83
+
84
+ # Ensure .hooks.PreToolUse exists
85
+ .hooks.PreToolUse //= [] |
86
+
87
+ # Check if our matcher already exists
88
+ if (.hooks.PreToolUse | map(.matcher) | index("Bash")) then
89
+ # Matcher exists, add our hook to its hooks array
90
+ .hooks.PreToolUse |= map(
91
+ if .matcher == "Bash" then
92
+ .hooks += $hook.hooks.PreToolUse[0].hooks
93
+ else
94
+ .
95
+ end
96
+ )
97
+ else
98
+ # Matcher does not exist, add the entire entry
99
+ .hooks.PreToolUse += $hook.hooks.PreToolUse
100
+ end
101
+ end
102
+ ' "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp"
103
+
104
+ # Check if any changes were made
105
+ if diff -q "$SETTINGS_FILE" "$SETTINGS_FILE.tmp" >/dev/null 2>&1; then
106
+ rm "$SETTINGS_FILE.tmp"
107
+ echo "👌 mechanic PreToolUse hook already bound"
108
+ echo " $SETTINGS_FILE"
109
+ exit 0
110
+ fi
111
+
112
+ # Atomic replace
113
+ mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE"
114
+
115
+ echo "🔗 mechanic PreToolUse hook bound successfully!"
116
+ echo " $SETTINGS_FILE"
117
+ echo ""
118
+ echo "✨ Claude will now be reminded to check existing permissions before requesting new ones"
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env bash
2
+ ######################################################################
3
+ # .what = bind mechanic SessionStart hook to Claude settings
4
+ #
5
+ # .why = the mechanic role needs to boot on every Claude session
6
+ # to ensure project context and briefs are loaded.
7
+ #
8
+ # this script "findserts" (find-or-insert) the SessionStart
9
+ # hook into .claude/settings.local.json, ensuring:
10
+ # • the hook is present after running this skill
11
+ # • no duplication if already present
12
+ # • idempotent: safe to rerun
13
+ #
14
+ # .how = uses jq to merge the SessionStart hook configuration
15
+ # into the existing hooks structure, creating it if absent.
16
+ #
17
+ # guarantee:
18
+ # ✔ creates .claude/settings.local.json if missing
19
+ # ✔ preserves existing settings (permissions, other hooks)
20
+ # ✔ idempotent: no-op if hook already present
21
+ # ✔ fail-fast on errors
22
+ ######################################################################
23
+
24
+ set -euo pipefail
25
+
26
+ PROJECT_ROOT="$PWD"
27
+ SETTINGS_FILE="$PROJECT_ROOT/.claude/settings.local.json"
28
+
29
+ # Define the hook configuration to findsert
30
+ HOOK_CONFIG=$(cat <<'EOF'
31
+ {
32
+ "hooks": {
33
+ "SessionStart": [
34
+ {
35
+ "matcher": "*",
36
+ "hooks": [
37
+ {
38
+ "type": "command",
39
+ "command": "npx rhachet roles boot --repo ehmpathy --role mechanic",
40
+ "timeout": 60
41
+ }
42
+ ]
43
+ }
44
+ ]
45
+ }
46
+ }
47
+ EOF
48
+ )
49
+
50
+ # Ensure .claude directory exists
51
+ mkdir -p "$(dirname "$SETTINGS_FILE")"
52
+
53
+ # Initialize settings file if it doesn't exist
54
+ if [[ ! -f "$SETTINGS_FILE" ]]; then
55
+ echo "{}" > "$SETTINGS_FILE"
56
+ fi
57
+
58
+ # Findsert: merge the hook configuration if not already present
59
+ # Strategy: deep merge with existing hooks, creating structure if needed
60
+ jq --argjson hook "$HOOK_CONFIG" '
61
+ # Define the target command for comparison
62
+ def targetCmd: "npx rhachet roles boot --repo ehmpathy --role mechanic";
63
+
64
+ # Check if hook already exists
65
+ def hookExists:
66
+ (.hooks.SessionStart // [])
67
+ | map(select(.matcher == "*") | .hooks // [])
68
+ | flatten
69
+ | map(.command)
70
+ | index(targetCmd) != null;
71
+
72
+ # If hook already exists, return unchanged
73
+ if hookExists then
74
+ .
75
+ else
76
+ # Ensure .hooks exists
77
+ .hooks //= {} |
78
+
79
+ # Ensure .hooks.SessionStart exists
80
+ .hooks.SessionStart //= [] |
81
+
82
+ # Check if our matcher already exists
83
+ if (.hooks.SessionStart | map(.matcher) | index("*")) then
84
+ # Matcher exists, add our hook to its hooks array
85
+ .hooks.SessionStart |= map(
86
+ if .matcher == "*" then
87
+ .hooks += $hook.hooks.SessionStart[0].hooks
88
+ else
89
+ .
90
+ end
91
+ )
92
+ else
93
+ # Matcher does not exist, add the entire entry
94
+ .hooks.SessionStart += $hook.hooks.SessionStart
95
+ end
96
+ end
97
+ ' "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp"
98
+
99
+ # Check if any changes were made
100
+ if diff -q "$SETTINGS_FILE" "$SETTINGS_FILE.tmp" >/dev/null 2>&1; then
101
+ rm "$SETTINGS_FILE.tmp"
102
+ echo "👌 mechanic SessionStart hook already bound"
103
+ echo " $SETTINGS_FILE"
104
+ exit 0
105
+ fi
106
+
107
+ # Atomic replace
108
+ mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE"
109
+
110
+ echo "🔗 mechanic SessionStart hook bound successfully!"
111
+ echo " $SETTINGS_FILE"
112
+ echo ""
113
+ echo "✨ next time you start a Claude session, the mechanic will boot automatically"
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env bash
2
+ ######################################################################
3
+ # .what = bind all mechanic hooks to Claude settings
4
+ #
5
+ # .why = the mechanic role uses multiple hooks:
6
+ # • SessionStart: boot mechanic on every session
7
+ # • PreToolUse: check existing permissions before new requests
8
+ #
9
+ # this script dispatches to each hook initializer.
10
+ #
11
+ # .how = runs each init.claude.hooks.*.sh script in sequence
12
+ #
13
+ # guarantee:
14
+ # ✔ idempotent: safe to rerun
15
+ # ✔ fail-fast on errors
16
+ ######################################################################
17
+
18
+ set -euo pipefail
19
+
20
+ SKILLS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
21
+
22
+ # Dispatch to each hook initializer
23
+ "$SKILLS_DIR/init.claude.hooks.sessionstart.sh"
24
+ "$SKILLS_DIR/init.claude.hooks.forbid.stderr.redirect.sh"
25
+ "$SKILLS_DIR/init.claude.hooks.pretooluse.sh"
@@ -0,0 +1,159 @@
1
+ #!/usr/bin/env bash
2
+ ######################################################################
3
+ # .what = bind mechanic permissions to Claude settings
4
+ #
5
+ # .why = the mechanic role needs conservative permissions to operate
6
+ # safely while still being productive.
7
+ #
8
+ # this script manages permissions in .claude/settings.local.json:
9
+ # • replaces existing allows entirely (conservative)
10
+ # • extends denies by appending new entries (conservative)
11
+ # • extends asks by appending new entries (conservative)
12
+ # • idempotent: safe to rerun
13
+ #
14
+ # .how = uses jq to merge the permissions configuration
15
+ # into the existing settings structure, creating it if absent.
16
+ #
17
+ # guarantee:
18
+ # ✔ creates .claude/settings.local.json if missing
19
+ # ✔ preserves existing settings (hooks, other configs)
20
+ # ✔ replaces allow list entirely
21
+ # ✔ appends to deny list (no duplicates)
22
+ # ✔ appends to ask list (no duplicates)
23
+ # ✔ idempotent: safe to rerun
24
+ # ✔ fail-fast on errors
25
+ ######################################################################
26
+
27
+ set -euo pipefail
28
+
29
+ PROJECT_ROOT="$PWD"
30
+ SETTINGS_FILE="$PROJECT_ROOT/.claude/settings.local.json"
31
+
32
+ # define the permissions configuration to apply
33
+ PERMISSIONS_CONFIG=$(cat <<'EOF'
34
+ {
35
+ "permissions": {
36
+ "deny": [
37
+ "Bash(git commit:*)",
38
+ "Bash(sed:*)",
39
+ "Bash(tee:*)",
40
+ "Bash(find:*)",
41
+ "Bash(echo:*)",
42
+ "Bash(mv:*)",
43
+ "Bash(npx biome:*)",
44
+ "Bash(npx jest:*)"
45
+ ],
46
+ "ask": [
47
+ "Bash(bash:*)",
48
+ "Bash(chmod:*)",
49
+ "Bash(npm install:*)",
50
+ "Bash(pnpm install:*)",
51
+ "Bash(pnpm add:*)"
52
+ ],
53
+ "allow": [
54
+ "WebSearch",
55
+ "WebFetch(domain:github.com)",
56
+ "WebFetch(domain:www.npmjs.com)",
57
+ "WebFetch(domain:hub.docker.com)",
58
+ "WebFetch(domain:raw.githubusercontent.com)",
59
+ "WebFetch(domain:biomejs.dev)",
60
+
61
+ "Bash(ls:*)",
62
+ "Bash(tree:*)",
63
+ "Bash(cat:*)",
64
+ "Bash(head:*)",
65
+ "Bash(tail:*)",
66
+ "Bash(grep:*)",
67
+ "Bash(wc:*)",
68
+ "Bash(diff:*)",
69
+ "Bash(which:*)",
70
+ "Bash(file:*)",
71
+ "Bash(mkdir:*)",
72
+ "Bash(pwd)",
73
+ "Bash(bash src/logic/roles/mechanic/.skills/claude.tools/mvsafe.sh:*)",
74
+ "Bash(npm view:*)",
75
+ "Bash(npm list:*)",
76
+ "Bash(npm remove:*)",
77
+
78
+ "Bash(npx rhachet roles boot --repo ehmpathy --role mechanic)",
79
+ "Bash(npx tsx ./bin/run:*)",
80
+
81
+ "Bash(npm run build:*)",
82
+ "Bash(npm run build:compile)",
83
+ "Bash(npm run start:testdb:*)",
84
+
85
+
86
+ "Bash(npm run test:*)",
87
+ "Bash(npm run test:types:*)",
88
+ "Bash(npm run test:format:*)",
89
+ "Bash(npm run test:lint:*)",
90
+ "Bash(npm run test:unit:*)",
91
+ "Bash(npm run test:integration:*)",
92
+ "Bash(npm run test:acceptance:*)",
93
+
94
+ "Bash(THOROUGH=true npm run test:*)",
95
+ "Bash(THOROUGH=true npm run test:types:*)",
96
+ "Bash(THOROUGH=true npm run test:format:*)",
97
+ "Bash(THOROUGH=true npm run test:lint:*)",
98
+ "Bash(THOROUGH=true npm run test:unit:*)",
99
+ "Bash(THOROUGH=true npm run test:integration:*)",
100
+ "Bash(THOROUGH=true npm run test:acceptance:*)",
101
+
102
+ "Bash(npm run fix:*)",
103
+ "Bash(npm run fix:format:*)",
104
+ "Bash(npm run fix:lint:*)",
105
+
106
+ "Bash(gh pr checks:*)",
107
+ "Bash(gh pr status:*)",
108
+
109
+ "Bash(source .agent/repo=.this/skills/*)"
110
+ ]
111
+ }
112
+ }
113
+ EOF
114
+ )
115
+
116
+ # ensure .claude directory exists
117
+ mkdir -p "$(dirname "$SETTINGS_FILE")"
118
+
119
+ # initialize settings file if it doesn't exist
120
+ if [[ ! -f "$SETTINGS_FILE" ]]; then
121
+ echo "{}" > "$SETTINGS_FILE"
122
+ fi
123
+
124
+ # apply permissions:
125
+ # - replace allow entirely
126
+ # - append to deny (unique)
127
+ # - append to ask (unique)
128
+ jq --argjson perms "$PERMISSIONS_CONFIG" '
129
+ # ensure .permissions exists
130
+ .permissions //= {} |
131
+
132
+ # replace allow entirely with our config
133
+ .permissions.allow = $perms.permissions.allow |
134
+
135
+ # append to deny (unique entries only)
136
+ .permissions.deny = ((.permissions.deny // []) + $perms.permissions.deny | unique) |
137
+
138
+ # append to ask (unique entries only)
139
+ .permissions.ask = ((.permissions.ask // []) + $perms.permissions.ask | unique)
140
+ ' "$SETTINGS_FILE" > "$SETTINGS_FILE.tmp"
141
+
142
+ # check if any changes were made
143
+ if diff -q "$SETTINGS_FILE" "$SETTINGS_FILE.tmp" >/dev/null 2>&1; then
144
+ rm "$SETTINGS_FILE.tmp"
145
+ echo "👌 mechanic permissions already configured"
146
+ echo " $SETTINGS_FILE"
147
+ exit 0
148
+ fi
149
+
150
+ # atomic replace
151
+ mv "$SETTINGS_FILE.tmp" "$SETTINGS_FILE"
152
+
153
+ echo "🔐 mechanic permissions configured successfully!"
154
+ echo " $SETTINGS_FILE"
155
+ echo ""
156
+ echo "✨ permissions applied:"
157
+ echo " • allow: replaced entirely"
158
+ echo " • deny: extended (no duplicates)"
159
+ echo " • ask: extended (no duplicates)"
@@ -0,0 +1,47 @@
1
+ #!/usr/bin/env bash
2
+ ######################################################################
3
+ # .what = initialize Claude settings for mechanic role
4
+ #
5
+ # .why = mechanic needs both hooks and permissions configured to
6
+ # operate effectively. this script dispatches to both:
7
+ # • init.claude.hooks.sh - binds SessionStart hook
8
+ # • init.claude.permissions.sh - configures permissions
9
+ #
10
+ # single entry point for full Claude configuration.
11
+ #
12
+ # .how = runs both init scripts in sequence from the same directory.
13
+ #
14
+ # guarantee:
15
+ # ✔ backs up settings.local.json before changes (if exists)
16
+ # ✔ runs both hooks and permissions initialization
17
+ # ✔ fail-fast on any error
18
+ # ✔ idempotent: safe to rerun
19
+ ######################################################################
20
+
21
+ set -euo pipefail
22
+
23
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
24
+ GITROOT="$(git rev-parse --show-toplevel)"
25
+ SETTINGS_FILE="$GITROOT/.claude/settings.local.json"
26
+
27
+ echo "🔧 init claude config for mechanic role..."
28
+ echo ""
29
+
30
+ # backup existing settings before changes
31
+ if [[ -f "$SETTINGS_FILE" ]]; then
32
+ ISODATETIME="$(date -u +%Y-%m-%dT%H-%M-%SZ)"
33
+ BACKUP_FILE="$GITROOT/.claude/settings.$ISODATETIME.bak.local.json"
34
+ cp "$SETTINGS_FILE" "$BACKUP_FILE"
35
+ echo "📦 backed up settings to: ${BACKUP_FILE#$GITROOT/}"
36
+ echo ""
37
+ fi
38
+
39
+ # initialize hooks
40
+ "$SCRIPT_DIR/init.claude.hooks.sh"
41
+ echo ""
42
+
43
+ # initialize permissions
44
+ "$SCRIPT_DIR/init.claude.permissions.sh"
45
+ echo ""
46
+
47
+ echo "👌 claude config ready"
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env bash
2
+ ######################################################################
3
+ # .what = link Claude transcripts into project-local structure
4
+ #
5
+ # .why = Claude stores transcripts in ~/.claude/projects/<encoded-path>
6
+ # which makes them hard to browse, version-control, and sync.
7
+ #
8
+ # this script creates a symlink so transcripts appear under:
9
+ # <project>/.rhachet/claude/transcripts
10
+ #
11
+ # without altering, moving, or creating files in Claude storage.
12
+ #
13
+ # guarantee:
14
+ # ✔ zero mutation to Claude's storage
15
+ # ✔ fail-fast if transcripts don't exist yet
16
+ # ✔ safe to rerun (idempotent)
17
+ ######################################################################
18
+
19
+ set -euo pipefail
20
+
21
+ PROJECT_ROOT="$PWD"
22
+ DEST="$PROJECT_ROOT/.rhachet/claude/transcripts"
23
+
24
+ # Resolve where Claude stores transcripts for this project’s cwd
25
+ ENCODED_PATH="$(echo "$PROJECT_ROOT" | sed 's#/#-#g')"
26
+ CLAUDE_STORAGE="$HOME/.claude/projects/$ENCODED_PATH"
27
+
28
+ # Fail if Claude hasn't created the storage dir yet
29
+ if [[ ! -d "$CLAUDE_STORAGE" ]]; then
30
+ echo "❌ no Claude transcripts found for this project:"
31
+ echo " $CLAUDE_STORAGE"
32
+ echo "➡️ first run 'claude' once in this directory to create them"
33
+ exit 1
34
+ fi
35
+
36
+ # Ensure our local parent folder exists (not Claude’s)
37
+ mkdir -p "$(dirname "$DEST")"
38
+
39
+ # Create symlink pointing into Claude-managed storage
40
+ ln -sfn "$CLAUDE_STORAGE" "$DEST"
41
+
42
+ echo "🔗 linked:"
43
+ echo " $DEST → $CLAUDE_STORAGE"
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env bash
2
+ ######################################################################
3
+ # .what = run integration tests thoroughly with optional scope filter
4
+ #
5
+ # .why = integration tests verify interactions between components
6
+ # and external systems. running them thoroughly (without
7
+ # --changedSince) ensures all tests pass, not just changed ones.
8
+ #
9
+ # this is critical before releases, after major changes, or
10
+ # when verifying the entire test suite.
11
+ #
12
+ # usage for agents:
13
+ # - run all integration tests:
14
+ # ./test.integration.sh
15
+ #
16
+ # - run tests matching a specific scope/pattern:
17
+ # ./test.integration.sh <pattern>
18
+ # example: ./test.integration.sh "user.*auth"
19
+ # example: ./test.integration.sh "database"
20
+ #
21
+ # - the THOROUGH=true flag forces ALL tests to run, not just
22
+ # those changed since main branch
23
+ #
24
+ # guarantee:
25
+ # ✔ runs ALL integration tests (ignores --changedSince)
26
+ # ✔ supports optional jest pattern/scope filtering
27
+ # ✔ uses verbose output for debugging
28
+ # ✔ passes with no tests if scope matches nothing
29
+ # ✔ fail-fast on test failures
30
+ ######################################################################
31
+
32
+ set -euo pipefail
33
+
34
+ SCOPE="${1:-}"
35
+
36
+ echo "🧪 running integration tests thoroughly..."
37
+ echo ""
38
+
39
+ if [[ -n "$SCOPE" ]]; then
40
+ echo "📍 scope filter: $SCOPE"
41
+ echo ""
42
+ THOROUGH=true npm run test:integration -- "$SCOPE"
43
+ else
44
+ echo "📍 scope: all tests"
45
+ echo ""
46
+ THOROUGH=true npm run test:integration
47
+ fi
48
+
49
+ echo ""
50
+ echo "✅ integration tests complete!"