lithermes-ai 0.5.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.
Files changed (133) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +245 -0
  3. package/README_Ko-KR.md +245 -0
  4. package/assets/lithermes-plugin/NOTICE.md +37 -0
  5. package/assets/lithermes-plugin/README.md +40 -0
  6. package/assets/lithermes-plugin/__init__.py +179 -0
  7. package/assets/lithermes-plugin/core.py +853 -0
  8. package/assets/lithermes-plugin/litgoal/__init__.py +10 -0
  9. package/assets/lithermes-plugin/litgoal/cli.py +133 -0
  10. package/assets/lithermes-plugin/litgoal/hook.py +48 -0
  11. package/assets/lithermes-plugin/litgoal/model.py +171 -0
  12. package/assets/lithermes-plugin/litgoal/runtime.py +273 -0
  13. package/assets/lithermes-plugin/litgoal/store.py +93 -0
  14. package/assets/lithermes-plugin/litgoal/tools.py +228 -0
  15. package/assets/lithermes-plugin/payload-version.json +471 -0
  16. package/assets/lithermes-plugin/plugin.yaml +9 -0
  17. package/assets/lithermes-plugin/skills/ai-slop-remover/SKILL.md +142 -0
  18. package/assets/lithermes-plugin/skills/comment-checker/SKILL.md +50 -0
  19. package/assets/lithermes-plugin/skills/debugging/SKILL.md +116 -0
  20. package/assets/lithermes-plugin/skills/debugging/references/methodology/00-setup.md +108 -0
  21. package/assets/lithermes-plugin/skills/debugging/references/methodology/02-investigate.md +121 -0
  22. package/assets/lithermes-plugin/skills/debugging/references/methodology/04-oracle-triple.md +136 -0
  23. package/assets/lithermes-plugin/skills/debugging/references/methodology/05-escalate.md +69 -0
  24. package/assets/lithermes-plugin/skills/debugging/references/methodology/06-fix.md +116 -0
  25. package/assets/lithermes-plugin/skills/debugging/references/methodology/08-qa.md +94 -0
  26. package/assets/lithermes-plugin/skills/debugging/references/methodology/09-cleanup.md +164 -0
  27. package/assets/lithermes-plugin/skills/debugging/references/methodology/partial-runtime-evidence.md +229 -0
  28. package/assets/lithermes-plugin/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
  29. package/assets/lithermes-plugin/skills/debugging/references/runtimes/go.md +252 -0
  30. package/assets/lithermes-plugin/skills/debugging/references/runtimes/native-binary.md +484 -0
  31. package/assets/lithermes-plugin/skills/debugging/references/runtimes/node.md +260 -0
  32. package/assets/lithermes-plugin/skills/debugging/references/runtimes/python.md +248 -0
  33. package/assets/lithermes-plugin/skills/debugging/references/runtimes/rust.md +234 -0
  34. package/assets/lithermes-plugin/skills/debugging/references/tools/ghidra.md +212 -0
  35. package/assets/lithermes-plugin/skills/debugging/references/tools/playwright-cli.md +194 -0
  36. package/assets/lithermes-plugin/skills/debugging/references/tools/pwndbg.md +263 -0
  37. package/assets/lithermes-plugin/skills/debugging/references/tools/pwntools.md +265 -0
  38. package/assets/lithermes-plugin/skills/frontend-ui-ux/SKILL.md +77 -0
  39. package/assets/lithermes-plugin/skills/lit-plan/SKILL.md +374 -0
  40. package/assets/lithermes-plugin/skills/litgoal/.gitkeep +0 -0
  41. package/assets/lithermes-plugin/skills/litgoal/SKILL.md +207 -0
  42. package/assets/lithermes-plugin/skills/litwork/SKILL.md +262 -0
  43. package/assets/lithermes-plugin/skills/lsp/SKILL.md +53 -0
  44. package/assets/lithermes-plugin/skills/programming/SKILL.md +463 -0
  45. package/assets/lithermes-plugin/skills/programming/references/go/README.md +90 -0
  46. package/assets/lithermes-plugin/skills/programming/references/go/backend-stack.md +641 -0
  47. package/assets/lithermes-plugin/skills/programming/references/go/bootstrap.md +328 -0
  48. package/assets/lithermes-plugin/skills/programming/references/go/bubbletea-v2.md +360 -0
  49. package/assets/lithermes-plugin/skills/programming/references/go/cobra-stack.md +468 -0
  50. package/assets/lithermes-plugin/skills/programming/references/go/concurrency.md +362 -0
  51. package/assets/lithermes-plugin/skills/programming/references/go/data-modeling.md +329 -0
  52. package/assets/lithermes-plugin/skills/programming/references/go/error-handling.md +359 -0
  53. package/assets/lithermes-plugin/skills/programming/references/go/golangci-strict.md +236 -0
  54. package/assets/lithermes-plugin/skills/programming/references/go/grpc-connect.md +375 -0
  55. package/assets/lithermes-plugin/skills/programming/references/go/libraries.md +337 -0
  56. package/assets/lithermes-plugin/skills/programming/references/go/one-liners.md +202 -0
  57. package/assets/lithermes-plugin/skills/programming/references/go/sqlc-pgx.md +471 -0
  58. package/assets/lithermes-plugin/skills/programming/references/go/testing.md +467 -0
  59. package/assets/lithermes-plugin/skills/programming/references/go/type-patterns.md +298 -0
  60. package/assets/lithermes-plugin/skills/programming/references/python/README.md +314 -0
  61. package/assets/lithermes-plugin/skills/programming/references/python/async-anyio.md +442 -0
  62. package/assets/lithermes-plugin/skills/programming/references/python/data-modeling.md +233 -0
  63. package/assets/lithermes-plugin/skills/programming/references/python/data-processing.md +133 -0
  64. package/assets/lithermes-plugin/skills/programming/references/python/error-handling.md +218 -0
  65. package/assets/lithermes-plugin/skills/programming/references/python/fastapi-stack.md +316 -0
  66. package/assets/lithermes-plugin/skills/programming/references/python/httpx2-optimization.md +360 -0
  67. package/assets/lithermes-plugin/skills/programming/references/python/libraries.md +307 -0
  68. package/assets/lithermes-plugin/skills/programming/references/python/one-liners.md +268 -0
  69. package/assets/lithermes-plugin/skills/programming/references/python/orjson-stack.md +378 -0
  70. package/assets/lithermes-plugin/skills/programming/references/python/pydantic-ai.md +285 -0
  71. package/assets/lithermes-plugin/skills/programming/references/python/pyproject-strict.md +232 -0
  72. package/assets/lithermes-plugin/skills/programming/references/python/textual-tui.md +201 -0
  73. package/assets/lithermes-plugin/skills/programming/references/python/type-patterns.md +176 -0
  74. package/assets/lithermes-plugin/skills/programming/references/rust/README.md +317 -0
  75. package/assets/lithermes-plugin/skills/programming/references/rust/async-tokio.md +299 -0
  76. package/assets/lithermes-plugin/skills/programming/references/rust/axum-stack.md +467 -0
  77. package/assets/lithermes-plugin/skills/programming/references/rust/cargo-strict.md +317 -0
  78. package/assets/lithermes-plugin/skills/programming/references/rust/clap-stack.md +409 -0
  79. package/assets/lithermes-plugin/skills/programming/references/rust/concurrency.md +375 -0
  80. package/assets/lithermes-plugin/skills/programming/references/rust/libraries.md +439 -0
  81. package/assets/lithermes-plugin/skills/programming/references/rust/one-liners.md +291 -0
  82. package/assets/lithermes-plugin/skills/programming/references/rust/proptest-insta.md +429 -0
  83. package/assets/lithermes-plugin/skills/programming/references/rust/type-state.md +354 -0
  84. package/assets/lithermes-plugin/skills/programming/references/rust/unsafe-discipline.md +250 -0
  85. package/assets/lithermes-plugin/skills/programming/references/rust/zero-cost-safety.md +527 -0
  86. package/assets/lithermes-plugin/skills/programming/references/rust-ub/README.md +289 -0
  87. package/assets/lithermes-plugin/skills/programming/references/rust-ub/miri-sanitizers-loom.md +411 -0
  88. package/assets/lithermes-plugin/skills/programming/references/rust-ub/ub-taxonomy.md +269 -0
  89. package/assets/lithermes-plugin/skills/programming/references/typescript/README.md +195 -0
  90. package/assets/lithermes-plugin/skills/programming/references/typescript/backend-hono.md +672 -0
  91. package/assets/lithermes-plugin/skills/programming/references/typescript/bootstrap.md +199 -0
  92. package/assets/lithermes-plugin/skills/programming/references/typescript/data-modeling.md +202 -0
  93. package/assets/lithermes-plugin/skills/programming/references/typescript/error-handling.md +169 -0
  94. package/assets/lithermes-plugin/skills/programming/references/typescript/tsconfig-strict.md +152 -0
  95. package/assets/lithermes-plugin/skills/programming/references/typescript/type-patterns.md +196 -0
  96. package/assets/lithermes-plugin/skills/programming/scripts/go/check-no-excuse-rules.sh +173 -0
  97. package/assets/lithermes-plugin/skills/programming/scripts/go/new-project.py +138 -0
  98. package/assets/lithermes-plugin/skills/programming/scripts/go/templates/.editorconfig +13 -0
  99. package/assets/lithermes-plugin/skills/programming/scripts/go/templates/.golangci.yml +95 -0
  100. package/assets/lithermes-plugin/skills/programming/scripts/go/templates/AGENTS.md.tmpl +24 -0
  101. package/assets/lithermes-plugin/skills/programming/scripts/go/templates/README.md.tmpl +12 -0
  102. package/assets/lithermes-plugin/skills/programming/scripts/go/templates/Taskfile.yml +40 -0
  103. package/assets/lithermes-plugin/skills/programming/scripts/go/templates/ci.yml +37 -0
  104. package/assets/lithermes-plugin/skills/programming/scripts/go/templates/config.go +24 -0
  105. package/assets/lithermes-plugin/skills/programming/scripts/go/templates/gitignore +15 -0
  106. package/assets/lithermes-plugin/skills/programming/scripts/go/templates/main.go.tmpl +22 -0
  107. package/assets/lithermes-plugin/skills/programming/scripts/go/templates/run.go +15 -0
  108. package/assets/lithermes-plugin/skills/programming/scripts/python/check-no-excuse-rules.py +687 -0
  109. package/assets/lithermes-plugin/skills/programming/scripts/python/new-project.py +172 -0
  110. package/assets/lithermes-plugin/skills/programming/scripts/python/new-script.py +116 -0
  111. package/assets/lithermes-plugin/skills/programming/scripts/rust/check-no-excuse-rules.py +296 -0
  112. package/assets/lithermes-plugin/skills/programming/scripts/rust/check-no-excuse-rules.sh +158 -0
  113. package/assets/lithermes-plugin/skills/programming/scripts/rust/new-project.py +175 -0
  114. package/assets/lithermes-plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +282 -0
  115. package/assets/lithermes-plugin/skills/programming/scripts/typescript/new-project.ts +177 -0
  116. package/assets/lithermes-plugin/skills/refactor/SKILL.md +770 -0
  117. package/assets/lithermes-plugin/skills/remove-ai-slops/SKILL.md +335 -0
  118. package/assets/lithermes-plugin/skills/review-work/SKILL.md +562 -0
  119. package/assets/lithermes-plugin/skills/rules/SKILL.md +41 -0
  120. package/assets/lithermes-plugin/skills/start-work/SKILL.md +332 -0
  121. package/bin/lithermes.js +8 -0
  122. package/cover.png +0 -0
  123. package/package.json +39 -0
  124. package/src/cli.js +129 -0
  125. package/src/lib/check.js +94 -0
  126. package/src/lib/config.js +170 -0
  127. package/src/lib/files.js +65 -0
  128. package/src/lib/hermesDiscovery.js +50 -0
  129. package/src/lib/hud.js +121 -0
  130. package/src/lib/install.js +159 -0
  131. package/src/lib/patch.js +153 -0
  132. package/src/lib/skins.js +113 -0
  133. package/src/lib/spinner.js +104 -0
@@ -0,0 +1,471 @@
1
+ {
2
+ "syncedAt": "2026-06-13T16:21:37.412Z",
3
+ "source": "source-reference",
4
+ "sourceHash": "129ba598f850d45ed1e51aedcfc14122d63a032af0dacb32cba8eb750c779486",
5
+ "files": [
6
+ {
7
+ "path": "__init__.py",
8
+ "sha256": "3e6b2e469e0ff805391ee741e640274e58e15da330f6d7eec4b0e06618755cfd"
9
+ },
10
+ {
11
+ "path": "core.py",
12
+ "sha256": "8fa2e7263e99c16fbb337df468d769890df1d98e2683614646b243dbd23c3ff2"
13
+ },
14
+ {
15
+ "path": "litgoal/__init__.py",
16
+ "sha256": "193bc96b3767b6fd71b99c89aa8ad09852d015e6a119b1e9cbef487125d9747e"
17
+ },
18
+ {
19
+ "path": "litgoal/cli.py",
20
+ "sha256": "1da405d01b2ebe046b284b0bd4ca291097dc060d8f73fe9bc5889eeb8ae11447"
21
+ },
22
+ {
23
+ "path": "litgoal/hook.py",
24
+ "sha256": "82219b0777440f89fb85fb2f2a806304f58eaafd35f5ba22e995fb767f45f595"
25
+ },
26
+ {
27
+ "path": "litgoal/model.py",
28
+ "sha256": "c89dde1604792187377d01dec1309017089d8fccc8b5428926f2479ff5f7f4d7"
29
+ },
30
+ {
31
+ "path": "litgoal/runtime.py",
32
+ "sha256": "65738e1ab77ef0725c4a431886ea6d30f03abddacd968e544d9b212382900a52"
33
+ },
34
+ {
35
+ "path": "litgoal/store.py",
36
+ "sha256": "8f5f78fa78e7da2848c76ccc7e512d1a971b483b5de1c99cc79cc053354162b4"
37
+ },
38
+ {
39
+ "path": "litgoal/tools.py",
40
+ "sha256": "2e12124666c4dab32087af11c76c970656077e449cca1dbb4f299bab2efdd24a"
41
+ },
42
+ {
43
+ "path": "NOTICE.md",
44
+ "sha256": "452ad24ca1ecd65e2f2ab0f21ff6c1cefb13aacf0db875f327b62027106685ab"
45
+ },
46
+ {
47
+ "path": "plugin.yaml",
48
+ "sha256": "8ebb1c638cddc246445da9ee4485d624b017ab5ddb082984963e671633b2ee90"
49
+ },
50
+ {
51
+ "path": "README.md",
52
+ "sha256": "d67b9f8d74aa861483cc28144eefc417493a3d2ac3cf6a6204c77235886b6d6c"
53
+ },
54
+ {
55
+ "path": "skills/ai-slop-remover/SKILL.md",
56
+ "sha256": "072cfcfd669b1a602ac44f5db339d5ed3a55832f4f5c440059f5953b5de6571b"
57
+ },
58
+ {
59
+ "path": "skills/comment-checker/SKILL.md",
60
+ "sha256": "5e87a8f2b11f2a2068297cf77a1690b2eb9bc8ab45c4106668f2bdca1ca2f6db"
61
+ },
62
+ {
63
+ "path": "skills/debugging/references/methodology/00-setup.md",
64
+ "sha256": "dc05ca5d38d870359b2ab8304ae32b31430892d864723d87f846e7a41cf8ed7f"
65
+ },
66
+ {
67
+ "path": "skills/debugging/references/methodology/02-investigate.md",
68
+ "sha256": "047551670d10408b43a8abaa05f2f242d22a9216bf9e78f63ff7bd3ed359ac39"
69
+ },
70
+ {
71
+ "path": "skills/debugging/references/methodology/04-oracle-triple.md",
72
+ "sha256": "dff93abea2c0ed61bc49bfc944d6e43ed6e624671322ed890f42934f04b10493"
73
+ },
74
+ {
75
+ "path": "skills/debugging/references/methodology/05-escalate.md",
76
+ "sha256": "33e2eb6af5e33e2b19df0cdee97abc71dca50c82a7e401181d91795e54718b39"
77
+ },
78
+ {
79
+ "path": "skills/debugging/references/methodology/06-fix.md",
80
+ "sha256": "3b7c3d901edb6cd04022da54bbe6d48a552c67fe834d3c38e3d07e8426e078ed"
81
+ },
82
+ {
83
+ "path": "skills/debugging/references/methodology/08-qa.md",
84
+ "sha256": "09f668880bfb868a46d937aa57ad67397438e6333897b8c0cb50a9c8282ce032"
85
+ },
86
+ {
87
+ "path": "skills/debugging/references/methodology/09-cleanup.md",
88
+ "sha256": "5675b3e72c38b9d0c87ab1b473f9f303aaea24047c8ef8d96e069539c8125679"
89
+ },
90
+ {
91
+ "path": "skills/debugging/references/methodology/partial-runtime-evidence.md",
92
+ "sha256": "820c1ce061a9cbef3145d3ede253e4e21c3fa384935ac2e76008b391945feb2a"
93
+ },
94
+ {
95
+ "path": "skills/debugging/references/runtimes/bundled-js-binary.md",
96
+ "sha256": "f7f01bc4d95c24bd28d24a3ae240a037b0ded00d690d18a6900ddf63025fe4ec"
97
+ },
98
+ {
99
+ "path": "skills/debugging/references/runtimes/go.md",
100
+ "sha256": "284614797d02d1aee25f440a7daa145af59a3ff61e5ba79c28ad0542c28f4f00"
101
+ },
102
+ {
103
+ "path": "skills/debugging/references/runtimes/native-binary.md",
104
+ "sha256": "520a767fadbd4d0b1b59fb6c652ded7f47a0ff5d742563f927334ae4537c2be0"
105
+ },
106
+ {
107
+ "path": "skills/debugging/references/runtimes/node.md",
108
+ "sha256": "0b728b643ed89c318bb564e1137cf68bb6acb61c1774ed73dee04b5a70cf1058"
109
+ },
110
+ {
111
+ "path": "skills/debugging/references/runtimes/python.md",
112
+ "sha256": "7c69b34e0d1342900c566468828e8af5a688669b75803a5eb8f2f6e156d38490"
113
+ },
114
+ {
115
+ "path": "skills/debugging/references/runtimes/rust.md",
116
+ "sha256": "48fa55949ba60c42a1e9827af94122905ea82cb147262b1e044a27734b6a2958"
117
+ },
118
+ {
119
+ "path": "skills/debugging/references/tools/ghidra.md",
120
+ "sha256": "8d50534340eef3cd664458cade9d11d18cabff804979128d7107a5fdd36dbbf0"
121
+ },
122
+ {
123
+ "path": "skills/debugging/references/tools/playwright-cli.md",
124
+ "sha256": "1a56d1b4bea981d21362029af7275327855a26e34b47ec6d5ccc5d459ff43989"
125
+ },
126
+ {
127
+ "path": "skills/debugging/references/tools/pwndbg.md",
128
+ "sha256": "11bd4dbe9f8d08816ddc4d169eb84fdd21cbded3721c63d5fb0346e40b875030"
129
+ },
130
+ {
131
+ "path": "skills/debugging/references/tools/pwntools.md",
132
+ "sha256": "0123de928e1e88186487adfee0b69d7a886c596fdd0c5132256cf9319fea466e"
133
+ },
134
+ {
135
+ "path": "skills/debugging/SKILL.md",
136
+ "sha256": "aff2ca5765f490ed1e45d2eaa77c48db3ef98cec12fa10ebff3f91b82eab1254"
137
+ },
138
+ {
139
+ "path": "skills/frontend-ui-ux/SKILL.md",
140
+ "sha256": "914667044f135563658ceac733a085a6bbdd71a00a5f4030f73d43444e0388f7"
141
+ },
142
+ {
143
+ "path": "skills/lit-plan/SKILL.md",
144
+ "sha256": "1f09901f9bb8f19b92add59c3613231228c8b5b7adbefae1cb3eb5cf7c3c61dc"
145
+ },
146
+ {
147
+ "path": "skills/litgoal/.gitkeep",
148
+ "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
149
+ },
150
+ {
151
+ "path": "skills/litgoal/SKILL.md",
152
+ "sha256": "7a1fc23afe57f957a063a70b1bf810dc9c66fd44bcfd93b1ec739d59167e5ad9"
153
+ },
154
+ {
155
+ "path": "skills/litwork/SKILL.md",
156
+ "sha256": "625e8ed44365d5ebcab9b8a3a2e1db4ccd5d4b6a7cbff6710fabfa51fd8727ad"
157
+ },
158
+ {
159
+ "path": "skills/lsp/SKILL.md",
160
+ "sha256": "3e793aaa158156dd60ec11add7375050bbeeb7b3eb77497f1c432d0842abff5c"
161
+ },
162
+ {
163
+ "path": "skills/programming/references/go/backend-stack.md",
164
+ "sha256": "1ba7769bfe7cd7a001251fabf01133a9df7eaae700705eecb3261955e4cfbfa9"
165
+ },
166
+ {
167
+ "path": "skills/programming/references/go/bootstrap.md",
168
+ "sha256": "6fefd389c7565537a19c28477cc4f26c8902ffa0f6a61b58acac0beab10373c6"
169
+ },
170
+ {
171
+ "path": "skills/programming/references/go/bubbletea-v2.md",
172
+ "sha256": "acc002aa219895a292ea2d47e0a4b79a3a201341680a44f854d0e38594beff29"
173
+ },
174
+ {
175
+ "path": "skills/programming/references/go/cobra-stack.md",
176
+ "sha256": "80b95001f2fa38f630579a4475f165ff97a47bd9d3339797edd4841d4d6c1858"
177
+ },
178
+ {
179
+ "path": "skills/programming/references/go/concurrency.md",
180
+ "sha256": "b2a60f69a80497f090c78023432af9a6ea3fa974079dd2f72460f0075d26bc0b"
181
+ },
182
+ {
183
+ "path": "skills/programming/references/go/data-modeling.md",
184
+ "sha256": "9dac5a3debf5519053e36472fe5577d5f2f9e302d00a1f40a43f94589a525564"
185
+ },
186
+ {
187
+ "path": "skills/programming/references/go/error-handling.md",
188
+ "sha256": "fb67e9b98d7f07db2fc49dc310bab93102520e12592c733e880b6d8aa0d2958f"
189
+ },
190
+ {
191
+ "path": "skills/programming/references/go/golangci-strict.md",
192
+ "sha256": "63873c768df6215e6b9c4ea86c99e434a64b4749030e4fef2e7fe9aaa3ed2661"
193
+ },
194
+ {
195
+ "path": "skills/programming/references/go/grpc-connect.md",
196
+ "sha256": "0b2bab192ace681729954c05fba4c2d622019a69544c5628011cc6e22cb5c831"
197
+ },
198
+ {
199
+ "path": "skills/programming/references/go/libraries.md",
200
+ "sha256": "f1c4f46904035bcc91254ffb3f5559987694bcc4b89dfe8c0bd2e223835978d4"
201
+ },
202
+ {
203
+ "path": "skills/programming/references/go/one-liners.md",
204
+ "sha256": "ff354a8700a9987ad21f4fb0cf4d5695857cae093c42358bc3eef13826f8ddfb"
205
+ },
206
+ {
207
+ "path": "skills/programming/references/go/README.md",
208
+ "sha256": "faedb8ab4e13f4ff03ad3497f3ed44df1b5b71463b741a58ee61b60ddb68b188"
209
+ },
210
+ {
211
+ "path": "skills/programming/references/go/sqlc-pgx.md",
212
+ "sha256": "26243d7b26e3ffadce87b4f78739e6582c69d5c144af89f2ef55c076b5e1b399"
213
+ },
214
+ {
215
+ "path": "skills/programming/references/go/testing.md",
216
+ "sha256": "e9014b01d8cf3967ae2b022491a95f7955c3ace2624fbd8cbb1630921499dff9"
217
+ },
218
+ {
219
+ "path": "skills/programming/references/go/type-patterns.md",
220
+ "sha256": "87d930ed6cdc57b3c20aae802679a4f419f77b5fcf4a630a6973271cc62545c7"
221
+ },
222
+ {
223
+ "path": "skills/programming/references/python/async-anyio.md",
224
+ "sha256": "26e069cfc9debf45ff1629d0246a6831c64a33f8e595976f8cb19d4b5647ca95"
225
+ },
226
+ {
227
+ "path": "skills/programming/references/python/data-modeling.md",
228
+ "sha256": "eed848d993a4bbd30dca44fba0599a359e64596a18e305f06c5a76f4f65d9ebf"
229
+ },
230
+ {
231
+ "path": "skills/programming/references/python/data-processing.md",
232
+ "sha256": "1cee6ea8692c213f244070f69682b00b25ab763d64cd114c41b7ac84c7865ed9"
233
+ },
234
+ {
235
+ "path": "skills/programming/references/python/error-handling.md",
236
+ "sha256": "c8a31325999441f1890e9a35bcef02a316a930bf36bba992e376e6c6a742dcd5"
237
+ },
238
+ {
239
+ "path": "skills/programming/references/python/fastapi-stack.md",
240
+ "sha256": "56726249ec0ee805ef900ecdfa2b5939f829b06506aa2cb82ab9924d846ffa44"
241
+ },
242
+ {
243
+ "path": "skills/programming/references/python/httpx2-optimization.md",
244
+ "sha256": "68c6c96802ee3f5c66e948beff411a7bbb33c7f68de79c4b2ee9349e035dfa82"
245
+ },
246
+ {
247
+ "path": "skills/programming/references/python/libraries.md",
248
+ "sha256": "85847a200b8c0a509008662dae1b4f4dbd3934bac490e61097bf986f83c8f464"
249
+ },
250
+ {
251
+ "path": "skills/programming/references/python/one-liners.md",
252
+ "sha256": "17b459cfadbc7e81d2d196d2251191ee8f3b8e97f668cb61f5b02d3cf736fbd1"
253
+ },
254
+ {
255
+ "path": "skills/programming/references/python/orjson-stack.md",
256
+ "sha256": "5b4ad8732b2192542ed6ea603829635aba98a0449758fd572f172737b2a19792"
257
+ },
258
+ {
259
+ "path": "skills/programming/references/python/pydantic-ai.md",
260
+ "sha256": "453f83fed8a89114870177c31d5f4cf45838239087c72de3f5daf9c225eab9e1"
261
+ },
262
+ {
263
+ "path": "skills/programming/references/python/pyproject-strict.md",
264
+ "sha256": "655eb106a165d3730d656a9689ac98a00abf7d32cc89f2decaf33ddf43ac0e45"
265
+ },
266
+ {
267
+ "path": "skills/programming/references/python/README.md",
268
+ "sha256": "23ef4282a10fce99de314ddc3c8d93eca79c92f256c87cf8caa54a2ee703e738"
269
+ },
270
+ {
271
+ "path": "skills/programming/references/python/textual-tui.md",
272
+ "sha256": "bf59c001a76b30777882b2c729321d809a2a81bf75b720e72da1c38a3e7708d9"
273
+ },
274
+ {
275
+ "path": "skills/programming/references/python/type-patterns.md",
276
+ "sha256": "4fa0bf3c7e82c6a7141c54aac9e1703cd9ce86122903dbe2fe00700930ca4626"
277
+ },
278
+ {
279
+ "path": "skills/programming/references/rust-ub/miri-sanitizers-loom.md",
280
+ "sha256": "b3b56208978286dd975440fa1f28d01b9ed05b23d33a1faaa904e62ca310c4e8"
281
+ },
282
+ {
283
+ "path": "skills/programming/references/rust-ub/README.md",
284
+ "sha256": "25300ebe1a467f47695959b00964ded8c560e51bb5d92dffe178f9d3f24b87a9"
285
+ },
286
+ {
287
+ "path": "skills/programming/references/rust-ub/ub-taxonomy.md",
288
+ "sha256": "7c0b369732920f6e59e67fa2f7a9a10fa4ba5b0a23b95ddd1aa2c4011a661326"
289
+ },
290
+ {
291
+ "path": "skills/programming/references/rust/async-tokio.md",
292
+ "sha256": "48e54d0b4be71fe1765e9bc62e0073a767abd966e29d4b456ae1326d0dc7b760"
293
+ },
294
+ {
295
+ "path": "skills/programming/references/rust/axum-stack.md",
296
+ "sha256": "54500cdf3981235b6af178ec4868a8a320087fe18b0a6104c9f462091b1b081b"
297
+ },
298
+ {
299
+ "path": "skills/programming/references/rust/cargo-strict.md",
300
+ "sha256": "f156787df0f8ec551495a247b04d937d22d02a3d23af93599cb05a73ec51fdbf"
301
+ },
302
+ {
303
+ "path": "skills/programming/references/rust/clap-stack.md",
304
+ "sha256": "28a1fca06a892686b001f15a467c98b8ec55ae2bae93afbb55447919084158f4"
305
+ },
306
+ {
307
+ "path": "skills/programming/references/rust/concurrency.md",
308
+ "sha256": "d8043493eaf8572b4fd7899c46041bad39f6e321537d2fb8a533be919a01f04d"
309
+ },
310
+ {
311
+ "path": "skills/programming/references/rust/libraries.md",
312
+ "sha256": "a45ff769535abb54a486a019d3a38389e4be814425635801ab13a4f1cd787eac"
313
+ },
314
+ {
315
+ "path": "skills/programming/references/rust/one-liners.md",
316
+ "sha256": "b0cfffa76da01016c933d6d548f3d621546710a6a2d4d609fb185647b74cc455"
317
+ },
318
+ {
319
+ "path": "skills/programming/references/rust/proptest-insta.md",
320
+ "sha256": "be787a4e174f55062931b70c53027a6c46423e3473608b315ac800b52325c3d1"
321
+ },
322
+ {
323
+ "path": "skills/programming/references/rust/README.md",
324
+ "sha256": "7502ee277c86df00388ea7cdbc5b54fc743d4eacab8b4015cd00ad0483ead727"
325
+ },
326
+ {
327
+ "path": "skills/programming/references/rust/type-state.md",
328
+ "sha256": "3dc21686fa0b2f1cb0c6206e38b800aa8b9ecf482d02faa9c1c4fd925da051e5"
329
+ },
330
+ {
331
+ "path": "skills/programming/references/rust/unsafe-discipline.md",
332
+ "sha256": "81d1596842a6295a03f0f23c06307b8b0f3d45d33cedd355a499d8185bafe934"
333
+ },
334
+ {
335
+ "path": "skills/programming/references/rust/zero-cost-safety.md",
336
+ "sha256": "a03623f9e0d80cdb5c2addddb97b27932c84adb5232b2d659442ba5e74e37bbb"
337
+ },
338
+ {
339
+ "path": "skills/programming/references/typescript/backend-hono.md",
340
+ "sha256": "7df19dd33da142423412ad4a0fa67a8b800e79d200adc62e20d05bcb15ff8e4f"
341
+ },
342
+ {
343
+ "path": "skills/programming/references/typescript/bootstrap.md",
344
+ "sha256": "4e61ffdc1a5df3637a14766a846b12a2d57943d6b002081f53c8cbd6d679303e"
345
+ },
346
+ {
347
+ "path": "skills/programming/references/typescript/data-modeling.md",
348
+ "sha256": "14022cca137f1f92e81aa21b3ad9702ead535fccda8bf4f760235195a288c627"
349
+ },
350
+ {
351
+ "path": "skills/programming/references/typescript/error-handling.md",
352
+ "sha256": "5d99ea45d454723b1d8292357a7a20b434801101336863df89e000c67bf1e807"
353
+ },
354
+ {
355
+ "path": "skills/programming/references/typescript/README.md",
356
+ "sha256": "c54f997b70659b574ce805196aefd9978354da5f73d5fdb6defbce1abf11041e"
357
+ },
358
+ {
359
+ "path": "skills/programming/references/typescript/tsconfig-strict.md",
360
+ "sha256": "e844903aa4dcf9c5e45592eccbbf04d6146c602c70067c72be74f523b0e2134d"
361
+ },
362
+ {
363
+ "path": "skills/programming/references/typescript/type-patterns.md",
364
+ "sha256": "a21e27706f5d1e60be8f37d2d47949d0759158c999c4a08628f5f925b184d946"
365
+ },
366
+ {
367
+ "path": "skills/programming/scripts/go/check-no-excuse-rules.sh",
368
+ "sha256": "35ffeb7759a01419eb6a3eba1c6c51913aaf659b0549d45d74d230a5a087efa7"
369
+ },
370
+ {
371
+ "path": "skills/programming/scripts/go/new-project.py",
372
+ "sha256": "233d7521ae549bd271e4f621099adc8d12739fa9d7d0bb5743bc8d89a8747db1"
373
+ },
374
+ {
375
+ "path": "skills/programming/scripts/go/templates/.editorconfig",
376
+ "sha256": "9e17077786f55b097bcce4b8b40cb7c8a5fc0595c94a8688ca8d1d56112638ef"
377
+ },
378
+ {
379
+ "path": "skills/programming/scripts/go/templates/.golangci.yml",
380
+ "sha256": "e50ce5d579eedc10132436442672872ab72b26e33c41d4b996b9be929df90e4a"
381
+ },
382
+ {
383
+ "path": "skills/programming/scripts/go/templates/AGENTS.md.tmpl",
384
+ "sha256": "ac81f2614b1417dfc5b0ca21c40ee74c357b55a97c92cb02db84ac418587c744"
385
+ },
386
+ {
387
+ "path": "skills/programming/scripts/go/templates/ci.yml",
388
+ "sha256": "8403a5a4dd6d55773aa651600dc95d01bfc2462ce6756903ec3d2a4330371df7"
389
+ },
390
+ {
391
+ "path": "skills/programming/scripts/go/templates/config.go",
392
+ "sha256": "a0c27a75fa06cabf7bd0431524702fa5adc020a890710370ca65d6fae4998e44"
393
+ },
394
+ {
395
+ "path": "skills/programming/scripts/go/templates/gitignore",
396
+ "sha256": "f1c9290f151958ed89682eeb6a5358b92c1d23d63cbaf2ac9bacfdd63305e9f7"
397
+ },
398
+ {
399
+ "path": "skills/programming/scripts/go/templates/main.go.tmpl",
400
+ "sha256": "de00e3621a5e9e7c4639936f3822bdffc512c7fd04bc089144f0e3f49c8e31a5"
401
+ },
402
+ {
403
+ "path": "skills/programming/scripts/go/templates/README.md.tmpl",
404
+ "sha256": "b0780490defb300a8ec5cd46555074ab58f9147d298964ff5ce2a40d24dde066"
405
+ },
406
+ {
407
+ "path": "skills/programming/scripts/go/templates/run.go",
408
+ "sha256": "b59b73b7d0fe0122531d4523b8d72be3517bee015af41358e18edb18f183823f"
409
+ },
410
+ {
411
+ "path": "skills/programming/scripts/go/templates/Taskfile.yml",
412
+ "sha256": "eb59766ea776398a4109383dc279c13673dbad3645f1a2a4f70da92bd08f48b6"
413
+ },
414
+ {
415
+ "path": "skills/programming/scripts/python/check-no-excuse-rules.py",
416
+ "sha256": "2b2f629dcbbf05f2ab533d23ecab0825d5c6d091e5a5837090200e93afdc0767"
417
+ },
418
+ {
419
+ "path": "skills/programming/scripts/python/new-project.py",
420
+ "sha256": "3513d7e9d5817c9e1fd592edce227b57de33ed2c6eeac0e7b2790768c41cba4b"
421
+ },
422
+ {
423
+ "path": "skills/programming/scripts/python/new-script.py",
424
+ "sha256": "cc707edad564c142164847b514879fc9ed3a349b43c16f18f6fed616c69704be"
425
+ },
426
+ {
427
+ "path": "skills/programming/scripts/rust/check-no-excuse-rules.py",
428
+ "sha256": "f3bff5658e80a610990328dd8452665fffe4ea82f2bf5bae59c63b385624a458"
429
+ },
430
+ {
431
+ "path": "skills/programming/scripts/rust/check-no-excuse-rules.sh",
432
+ "sha256": "68fd0318b4fa85224a672a565d426560bf3c549a85553b14d83e6fe1320400c0"
433
+ },
434
+ {
435
+ "path": "skills/programming/scripts/rust/new-project.py",
436
+ "sha256": "a8d33ebe544aceb243a8432fa9e9baca95514f396af831628ade4db1fb4a8686"
437
+ },
438
+ {
439
+ "path": "skills/programming/scripts/typescript/check-no-excuse-rules.ts",
440
+ "sha256": "2416e1c1a49010e2c5284a6515b26404001d92178a22215410712de94d628d36"
441
+ },
442
+ {
443
+ "path": "skills/programming/scripts/typescript/new-project.ts",
444
+ "sha256": "495e5add86f0ca9819f537e51083c34b6480e1f7d147ded7c9cf93fdbe48ccc5"
445
+ },
446
+ {
447
+ "path": "skills/programming/SKILL.md",
448
+ "sha256": "ffb201197e7386c848f8efb9b90d0a024d7b8000e8bea1b13b0ed7a83627a56b"
449
+ },
450
+ {
451
+ "path": "skills/refactor/SKILL.md",
452
+ "sha256": "d4e160e256b5a5e1fae4170edeee7a6bc8e2338bbebec797e24f07ea70687a10"
453
+ },
454
+ {
455
+ "path": "skills/remove-ai-slops/SKILL.md",
456
+ "sha256": "994f052daaf9897be3b0f8bdc72a1b16c75a954671de2401faebfabc357ee2bc"
457
+ },
458
+ {
459
+ "path": "skills/review-work/SKILL.md",
460
+ "sha256": "1e30211324dfc09406db4cd9913bc9fe8c3d4d29407dd3d8a37392ddaf8ff06d"
461
+ },
462
+ {
463
+ "path": "skills/rules/SKILL.md",
464
+ "sha256": "7c56770fb7e62260c90db6d1d934a2c858e75418b8785f9eee031f0c8630c39f"
465
+ },
466
+ {
467
+ "path": "skills/start-work/SKILL.md",
468
+ "sha256": "194a1d719c00564959da99715c86424a5ecd76196a4db9ca60e64be062dc70b5"
469
+ }
470
+ ]
471
+ }
@@ -0,0 +1,9 @@
1
+ name: lithermes
2
+ version: 0.3.0
3
+ description: "Hermes-native workflow toolkit: litgoal durable runtime, 5-lane review orchestrator, Litwork commands, skills, and prompt steering."
4
+ author: "Hermes Agent"
5
+ kind: standalone
6
+ auto_load: true
7
+ hooks:
8
+ - pre_llm_call
9
+ - subagent_stop
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: ai-slop-remover
3
+ description: "Removes AI-generated code smells from a SINGLE file while preserving functionality. For multiple files, call in PARALLEL per file."
4
+ ---
5
+ You are an expert code refactorer specializing in removing AI-generated "slop" patterns while STRICTLY preserving functionality.
6
+
7
+ **INPUT**: Exactly ONE file path. If multiple paths provided, REJECT and instruct to call this agent in parallel.
8
+
9
+ ---
10
+
11
+ ## DETECTION CRITERIA (Specific)
12
+
13
+ ### 1. Obvious Comments (EXCLUDE: BDD comments like #given, #when, #then, #when/then)
14
+
15
+ **REMOVE**:
16
+ - Comments restating the code: `x += 1 # increment x`
17
+ - Docstrings on trivial methods: `"""Returns the name."""` for `def get_name(): return self.name`
18
+ - Section dividers: `# ===== HELPER FUNCTIONS =====`
19
+ - Commented-out code blocks
20
+ - `# TODO: future enhancement` without concrete plan
21
+ - `# Note: this is important` without explaining WHY
22
+
23
+ **KEEP**:
24
+ - Comments explaining WHY (business logic, edge cases, workarounds)
25
+ - Links to issues/tickets: `# See SPR-1234`
26
+ - Non-obvious algorithm explanations
27
+ - Regex explanations
28
+ - Matches to existing code style
29
+
30
+ ### 2. Over-Defensive Code
31
+
32
+ **REMOVE**:
33
+ - Null checks for values that CANNOT be None (e.g., Django request in view)
34
+ - `if x is not None and x.attr is not None:` when x is guaranteed
35
+ - Try-except around code that can't raise (e.g., dict literal access)
36
+ - `isinstance()` checks for statically typed parameters
37
+ - Default values for required parameters: `def foo(x: str = "")` when empty string is invalid
38
+ - Backward-compat shims: `_old_name = new_name # deprecated`
39
+ - `# removed` or `# deleted` comments for removed code
40
+ - Re-exports of unused items
41
+ - Verbose, duplicated, or redundant code / test cases
42
+
43
+ **KEEP**:
44
+ - Validation at system boundaries (user input, external API responses)
45
+ - Error handling for I/O operations
46
+ - Null checks for nullable DB fields
47
+ - assertions in test code to matching type expectations
48
+
49
+ ### 3. Spaghetti Nesting (2+ levels deep)
50
+
51
+ **REFACTOR**:
52
+ - Nested if-else chains -> early returns / guard clauses
53
+ - `if x: if y: if z:` -> `if not x: return` / `if not y: return`
54
+ - Nested loops with conditionals -> extract to helper OR use comprehensions
55
+ - Complex ternary `a if b else (c if d else e)` -> explicit if-else
56
+
57
+ ---
58
+
59
+ ## PROCESS
60
+
61
+ ### Step 1: Read & Analyze
62
+ Read the file. Identify ALL slop instances with line numbers.
63
+
64
+ ### Step 2: Deep Consideration (CRITICAL)
65
+ For EACH identified issue, think:
66
+ - **Functionality Impact**: Will removing this change behavior? If ANY doubt, SKIP.
67
+ - **Test Coverage**: Are there tests that might break? If uncertain, SKIP.
68
+ - **Context Dependency**: Is this "slop" actually necessary for this specific codebase? (e.g., defensive code for known flaky external API)
69
+ - **Readability Trade-off**: Will removal make code LESS readable? If yes, SKIP.
70
+
71
+ **RULE**: When in doubt, DO NOT CHANGE. False negatives are better than breaking code.
72
+
73
+ ### Step 3: Execute Changes
74
+ Make changes using Edit tool. One logical change at a time.
75
+
76
+ ### Step 4: Detailed Report
77
+
78
+ **OUTPUT FORMAT**:
79
+
80
+ ```
81
+ ## AI Slop Removed: {filename}
82
+
83
+ ### Analysis Summary
84
+ - Total issues found: N
85
+ - Issues fixed: M
86
+ - Issues skipped (safety): K
87
+
88
+ ### Changes Made
89
+
90
+ #### Change 1: [Category] Line X-Y
91
+ **Before**: [original code snippet]
92
+ **After**: [modified code snippet]
93
+ **Why this is slop**: [Explain why this pattern is problematic]
94
+ **Why safe to remove**: [Explain why functionality is preserved]
95
+ **Impact**: None - purely cosmetic improvement
96
+
97
+ ---
98
+
99
+ ### Skipped Issues (Preserved for Safety)
100
+
101
+ #### Skipped 1: Line X
102
+ **Reason**: [Why you chose not to change this]
103
+
104
+ ### Summary
105
+ - Removed N obvious comments
106
+ - Simplified M defensive patterns
107
+ - Flattened K nested structures
108
+ - Preserved L patterns that looked like slop but serve purpose
109
+ ```
110
+
111
+ ---
112
+
113
+ ## SAFETY RULES
114
+
115
+ 1. **NEVER remove error handling for I/O, network, or file operations**
116
+ 2. **NEVER simplify validation for user input or external data**
117
+ 3. **NEVER change public API signatures**
118
+ 4. **NEVER remove type hints (even redundant-looking ones)**
119
+ 5. **If a pattern appears in multiple places, it might be intentional - ASK before bulk removal**
120
+ 6. **Preserve all BDD test comments (#given, #when, #then)**
121
+
122
+ When finished, your report should be detailed enough that a reviewer can understand EXACTLY what changed and feel confident the changes are safe.
123
+
124
+ ---
125
+
126
+ ## WHEN NO SLOP FOUND
127
+
128
+ If the file is clean, report:
129
+
130
+ ```
131
+ ## AI Slop Analysis: {filename}
132
+
133
+ ### Result: No AI Slop Detected
134
+
135
+ This file is clean. Here's why:
136
+
137
+ **Comments**: N comments found, all explain WHY not WHAT
138
+ **Defensive Code**: Null checks present are appropriate (e.g., checks external API response)
139
+ **Code Structure**: Maximum nesting depth acceptable, early returns used appropriately
140
+
141
+ **Conclusion**: This code appears to be human-written or well-reviewed AI code. No changes needed.
142
+ ```
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: comment-checker
3
+ description: Use after edits to self-review the comments you just wrote or touched, so code lands with comments that explain intent (the "why") rather than restating the code, and so no stale or misleading comments slip in. Triggers - 'check comments', 'review comments', 'comment review', 'are these comments okay', or right after you write/edit/patch a file.
4
+ ---
5
+
6
+ # Comment Checker
7
+
8
+ Hermes plugins expose only `pre_llm_call`, `subagent_stop`, and `on_session_start`
9
+ hooks — there is **no** per-edit hook that fires after a write or edit. So this is not
10
+ an automatic gate; it is a discipline **you self-apply** immediately after you change a
11
+ file. Treat every successful write/edit/patch as the trigger to run the checklist below
12
+ on the comments in that diff before you move on.
13
+
14
+ ## When to run it
15
+
16
+ Run this pass right after you edit a file and it contains, or you just added/changed,
17
+ any of these:
18
+
19
+ - Code comments (line or block).
20
+ - Docstrings / module headers.
21
+ - TODO / FIXME / NOTE markers.
22
+
23
+ If the edit touched no comments at all, skip it.
24
+
25
+ ## What to check
26
+
27
+ For each comment in the diff you just produced, confirm:
28
+
29
+ 1. **It explains the "why", not the "what".** A comment that restates the code
30
+ (`# increment i by one`) is noise — delete it or replace it with the rationale.
31
+ 2. **It is still true.** After an edit, comments above or inside the changed lines often
32
+ go stale. A comment that contradicts the code is worse than no comment — fix it.
33
+ 3. **It is not a leftover.** Commented-out code, debugging notes, and scaffolding
34
+ comments you added while working should be removed before the change lands.
35
+ 4. **TODO/FIXME are actionable.** If you leave one, it should say what and (ideally) why,
36
+ not just `# TODO`.
37
+ 5. **It matches the surrounding style.** Match the file's existing comment conventions
38
+ rather than imposing a new format.
39
+
40
+ When a comment fails one of these checks, fix the comment (or the code) in the same edit,
41
+ or — if you are deliberately leaving it — state the reason briefly so the choice is
42
+ explicit rather than accidental.
43
+
44
+ ## Scope and limits
45
+
46
+ - This skill exposes no tool. It is guidance the model applies to its own output.
47
+ - It only concerns comments. It does not lint or reformat code; use Hermes-native LSP /
48
+ diagnostics for that.
49
+ - It is advisory, not blocking. Nothing in the harness will stop you — the discipline is
50
+ to run the check yourself and not skip it just because no gate forces you to.