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.
- package/LICENSE +21 -0
- package/README.md +245 -0
- package/README_Ko-KR.md +245 -0
- package/assets/lithermes-plugin/NOTICE.md +37 -0
- package/assets/lithermes-plugin/README.md +40 -0
- package/assets/lithermes-plugin/__init__.py +179 -0
- package/assets/lithermes-plugin/core.py +853 -0
- package/assets/lithermes-plugin/litgoal/__init__.py +10 -0
- package/assets/lithermes-plugin/litgoal/cli.py +133 -0
- package/assets/lithermes-plugin/litgoal/hook.py +48 -0
- package/assets/lithermes-plugin/litgoal/model.py +171 -0
- package/assets/lithermes-plugin/litgoal/runtime.py +273 -0
- package/assets/lithermes-plugin/litgoal/store.py +93 -0
- package/assets/lithermes-plugin/litgoal/tools.py +228 -0
- package/assets/lithermes-plugin/payload-version.json +471 -0
- package/assets/lithermes-plugin/plugin.yaml +9 -0
- package/assets/lithermes-plugin/skills/ai-slop-remover/SKILL.md +142 -0
- package/assets/lithermes-plugin/skills/comment-checker/SKILL.md +50 -0
- package/assets/lithermes-plugin/skills/debugging/SKILL.md +116 -0
- package/assets/lithermes-plugin/skills/debugging/references/methodology/00-setup.md +108 -0
- package/assets/lithermes-plugin/skills/debugging/references/methodology/02-investigate.md +121 -0
- package/assets/lithermes-plugin/skills/debugging/references/methodology/04-oracle-triple.md +136 -0
- package/assets/lithermes-plugin/skills/debugging/references/methodology/05-escalate.md +69 -0
- package/assets/lithermes-plugin/skills/debugging/references/methodology/06-fix.md +116 -0
- package/assets/lithermes-plugin/skills/debugging/references/methodology/08-qa.md +94 -0
- package/assets/lithermes-plugin/skills/debugging/references/methodology/09-cleanup.md +164 -0
- package/assets/lithermes-plugin/skills/debugging/references/methodology/partial-runtime-evidence.md +229 -0
- package/assets/lithermes-plugin/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
- package/assets/lithermes-plugin/skills/debugging/references/runtimes/go.md +252 -0
- package/assets/lithermes-plugin/skills/debugging/references/runtimes/native-binary.md +484 -0
- package/assets/lithermes-plugin/skills/debugging/references/runtimes/node.md +260 -0
- package/assets/lithermes-plugin/skills/debugging/references/runtimes/python.md +248 -0
- package/assets/lithermes-plugin/skills/debugging/references/runtimes/rust.md +234 -0
- package/assets/lithermes-plugin/skills/debugging/references/tools/ghidra.md +212 -0
- package/assets/lithermes-plugin/skills/debugging/references/tools/playwright-cli.md +194 -0
- package/assets/lithermes-plugin/skills/debugging/references/tools/pwndbg.md +263 -0
- package/assets/lithermes-plugin/skills/debugging/references/tools/pwntools.md +265 -0
- package/assets/lithermes-plugin/skills/frontend-ui-ux/SKILL.md +77 -0
- package/assets/lithermes-plugin/skills/lit-plan/SKILL.md +374 -0
- package/assets/lithermes-plugin/skills/litgoal/.gitkeep +0 -0
- package/assets/lithermes-plugin/skills/litgoal/SKILL.md +207 -0
- package/assets/lithermes-plugin/skills/litwork/SKILL.md +262 -0
- package/assets/lithermes-plugin/skills/lsp/SKILL.md +53 -0
- package/assets/lithermes-plugin/skills/programming/SKILL.md +463 -0
- package/assets/lithermes-plugin/skills/programming/references/go/README.md +90 -0
- package/assets/lithermes-plugin/skills/programming/references/go/backend-stack.md +641 -0
- package/assets/lithermes-plugin/skills/programming/references/go/bootstrap.md +328 -0
- package/assets/lithermes-plugin/skills/programming/references/go/bubbletea-v2.md +360 -0
- package/assets/lithermes-plugin/skills/programming/references/go/cobra-stack.md +468 -0
- package/assets/lithermes-plugin/skills/programming/references/go/concurrency.md +362 -0
- package/assets/lithermes-plugin/skills/programming/references/go/data-modeling.md +329 -0
- package/assets/lithermes-plugin/skills/programming/references/go/error-handling.md +359 -0
- package/assets/lithermes-plugin/skills/programming/references/go/golangci-strict.md +236 -0
- package/assets/lithermes-plugin/skills/programming/references/go/grpc-connect.md +375 -0
- package/assets/lithermes-plugin/skills/programming/references/go/libraries.md +337 -0
- package/assets/lithermes-plugin/skills/programming/references/go/one-liners.md +202 -0
- package/assets/lithermes-plugin/skills/programming/references/go/sqlc-pgx.md +471 -0
- package/assets/lithermes-plugin/skills/programming/references/go/testing.md +467 -0
- package/assets/lithermes-plugin/skills/programming/references/go/type-patterns.md +298 -0
- package/assets/lithermes-plugin/skills/programming/references/python/README.md +314 -0
- package/assets/lithermes-plugin/skills/programming/references/python/async-anyio.md +442 -0
- package/assets/lithermes-plugin/skills/programming/references/python/data-modeling.md +233 -0
- package/assets/lithermes-plugin/skills/programming/references/python/data-processing.md +133 -0
- package/assets/lithermes-plugin/skills/programming/references/python/error-handling.md +218 -0
- package/assets/lithermes-plugin/skills/programming/references/python/fastapi-stack.md +316 -0
- package/assets/lithermes-plugin/skills/programming/references/python/httpx2-optimization.md +360 -0
- package/assets/lithermes-plugin/skills/programming/references/python/libraries.md +307 -0
- package/assets/lithermes-plugin/skills/programming/references/python/one-liners.md +268 -0
- package/assets/lithermes-plugin/skills/programming/references/python/orjson-stack.md +378 -0
- package/assets/lithermes-plugin/skills/programming/references/python/pydantic-ai.md +285 -0
- package/assets/lithermes-plugin/skills/programming/references/python/pyproject-strict.md +232 -0
- package/assets/lithermes-plugin/skills/programming/references/python/textual-tui.md +201 -0
- package/assets/lithermes-plugin/skills/programming/references/python/type-patterns.md +176 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/README.md +317 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/async-tokio.md +299 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/axum-stack.md +467 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/cargo-strict.md +317 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/clap-stack.md +409 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/concurrency.md +375 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/libraries.md +439 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/one-liners.md +291 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/proptest-insta.md +429 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/type-state.md +354 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/unsafe-discipline.md +250 -0
- package/assets/lithermes-plugin/skills/programming/references/rust/zero-cost-safety.md +527 -0
- package/assets/lithermes-plugin/skills/programming/references/rust-ub/README.md +289 -0
- package/assets/lithermes-plugin/skills/programming/references/rust-ub/miri-sanitizers-loom.md +411 -0
- package/assets/lithermes-plugin/skills/programming/references/rust-ub/ub-taxonomy.md +269 -0
- package/assets/lithermes-plugin/skills/programming/references/typescript/README.md +195 -0
- package/assets/lithermes-plugin/skills/programming/references/typescript/backend-hono.md +672 -0
- package/assets/lithermes-plugin/skills/programming/references/typescript/bootstrap.md +199 -0
- package/assets/lithermes-plugin/skills/programming/references/typescript/data-modeling.md +202 -0
- package/assets/lithermes-plugin/skills/programming/references/typescript/error-handling.md +169 -0
- package/assets/lithermes-plugin/skills/programming/references/typescript/tsconfig-strict.md +152 -0
- package/assets/lithermes-plugin/skills/programming/references/typescript/type-patterns.md +196 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/check-no-excuse-rules.sh +173 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/new-project.py +138 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/templates/.editorconfig +13 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/templates/.golangci.yml +95 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/templates/AGENTS.md.tmpl +24 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/templates/README.md.tmpl +12 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/templates/Taskfile.yml +40 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/templates/ci.yml +37 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/templates/config.go +24 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/templates/gitignore +15 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/templates/main.go.tmpl +22 -0
- package/assets/lithermes-plugin/skills/programming/scripts/go/templates/run.go +15 -0
- package/assets/lithermes-plugin/skills/programming/scripts/python/check-no-excuse-rules.py +687 -0
- package/assets/lithermes-plugin/skills/programming/scripts/python/new-project.py +172 -0
- package/assets/lithermes-plugin/skills/programming/scripts/python/new-script.py +116 -0
- package/assets/lithermes-plugin/skills/programming/scripts/rust/check-no-excuse-rules.py +296 -0
- package/assets/lithermes-plugin/skills/programming/scripts/rust/check-no-excuse-rules.sh +158 -0
- package/assets/lithermes-plugin/skills/programming/scripts/rust/new-project.py +175 -0
- package/assets/lithermes-plugin/skills/programming/scripts/typescript/check-no-excuse-rules.ts +282 -0
- package/assets/lithermes-plugin/skills/programming/scripts/typescript/new-project.ts +177 -0
- package/assets/lithermes-plugin/skills/refactor/SKILL.md +770 -0
- package/assets/lithermes-plugin/skills/remove-ai-slops/SKILL.md +335 -0
- package/assets/lithermes-plugin/skills/review-work/SKILL.md +562 -0
- package/assets/lithermes-plugin/skills/rules/SKILL.md +41 -0
- package/assets/lithermes-plugin/skills/start-work/SKILL.md +332 -0
- package/bin/lithermes.js +8 -0
- package/cover.png +0 -0
- package/package.json +39 -0
- package/src/cli.js +129 -0
- package/src/lib/check.js +94 -0
- package/src/lib/config.js +170 -0
- package/src/lib/files.js +65 -0
- package/src/lib/hermesDiscovery.js +50 -0
- package/src/lib/hud.js +121 -0
- package/src/lib/install.js +159 -0
- package/src/lib/patch.js +153 -0
- package/src/lib/skins.js +113 -0
- 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.
|