dsh-ecc-skills 0.4.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 (278) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +99 -0
  3. package/cordis.patch.yml +5 -0
  4. package/lib/index.js +195 -0
  5. package/package.json +46 -0
  6. package/skills/accessibility/SKILL.md +147 -0
  7. package/skills/agent-architecture-audit/SKILL.md +257 -0
  8. package/skills/agent-eval/SKILL.md +147 -0
  9. package/skills/agent-harness-construction/SKILL.md +74 -0
  10. package/skills/agent-introspection-debugging/SKILL.md +154 -0
  11. package/skills/agent-payment-x402/SKILL.md +225 -0
  12. package/skills/agent-self-evaluation/SKILL.md +182 -0
  13. package/skills/agent-sort/SKILL.md +216 -0
  14. package/skills/agentic-engineering/SKILL.md +64 -0
  15. package/skills/agentic-os/SKILL.md +388 -0
  16. package/skills/ai-first-engineering/SKILL.md +52 -0
  17. package/skills/ai-regression-testing/SKILL.md +386 -0
  18. package/skills/android-clean-architecture/SKILL.md +340 -0
  19. package/skills/angular-developer/SKILL.md +155 -0
  20. package/skills/api-connector-builder/SKILL.md +121 -0
  21. package/skills/api-design/SKILL.md +524 -0
  22. package/skills/architecture-decision-records/SKILL.md +180 -0
  23. package/skills/article-writing/SKILL.md +80 -0
  24. package/skills/automation-audit-ops/SKILL.md +143 -0
  25. package/skills/autonomous-agent-harness/SKILL.md +274 -0
  26. package/skills/autonomous-loops/SKILL.md +611 -0
  27. package/skills/backend-patterns/SKILL.md +562 -0
  28. package/skills/benchmark/SKILL.md +95 -0
  29. package/skills/benchmark-methodology/SKILL.md +191 -0
  30. package/skills/benchmark-optimization-loop/SKILL.md +71 -0
  31. package/skills/blender-motion-state-inspection/SKILL.md +165 -0
  32. package/skills/blueprint/SKILL.md +106 -0
  33. package/skills/brand-discovery/SKILL.md +145 -0
  34. package/skills/brand-voice/SKILL.md +98 -0
  35. package/skills/browser-qa/SKILL.md +105 -0
  36. package/skills/bun-runtime/SKILL.md +85 -0
  37. package/skills/canary-watch/SKILL.md +108 -0
  38. package/skills/carrier-relationship-management/SKILL.md +212 -0
  39. package/skills/cisco-ios-patterns/SKILL.md +164 -0
  40. package/skills/ck/SKILL.md +148 -0
  41. package/skills/claude-devfleet/SKILL.md +112 -0
  42. package/skills/click-path-audit/SKILL.md +245 -0
  43. package/skills/clickhouse-io/SKILL.md +445 -0
  44. package/skills/code-tour/SKILL.md +254 -0
  45. package/skills/codebase-onboarding/SKILL.md +234 -0
  46. package/skills/codehealth-mcp/SKILL.md +167 -0
  47. package/skills/coding-standards/SKILL.md +551 -0
  48. package/skills/competitive-platform-analysis/SKILL.md +214 -0
  49. package/skills/competitive-report-structure/SKILL.md +162 -0
  50. package/skills/compose-multiplatform-patterns/SKILL.md +300 -0
  51. package/skills/config-gc/SKILL.md +120 -0
  52. package/skills/configure-ecc/SKILL.md +206 -0
  53. package/skills/connections-optimizer/SKILL.md +190 -0
  54. package/skills/content-engine/SKILL.md +132 -0
  55. package/skills/content-hash-cache-pattern/SKILL.md +162 -0
  56. package/skills/context-budget/SKILL.md +136 -0
  57. package/skills/continuous-agent-loop/SKILL.md +46 -0
  58. package/skills/contract-first/SKILL.md +287 -0
  59. package/skills/cost-aware-llm-pipeline/SKILL.md +184 -0
  60. package/skills/cost-tracking/SKILL.md +97 -0
  61. package/skills/council/SKILL.md +204 -0
  62. package/skills/council-multi-model/SKILL.md +167 -0
  63. package/skills/cpp-coding-standards/SKILL.md +724 -0
  64. package/skills/cpp-testing/SKILL.md +325 -0
  65. package/skills/crosspost/SKILL.md +112 -0
  66. package/skills/csharp-testing/SKILL.md +322 -0
  67. package/skills/customer-billing-ops/SKILL.md +141 -0
  68. package/skills/customs-trade-compliance/SKILL.md +263 -0
  69. package/skills/dart-flutter-patterns/SKILL.md +564 -0
  70. package/skills/dashboard-builder/SKILL.md +109 -0
  71. package/skills/data-scraper-agent/SKILL.md +765 -0
  72. package/skills/data-throughput-accelerator/SKILL.md +74 -0
  73. package/skills/database-migrations/SKILL.md +430 -0
  74. package/skills/deep-research/SKILL.md +160 -0
  75. package/skills/defi-amm-security/SKILL.md +167 -0
  76. package/skills/delivery-gate/SKILL.md +126 -0
  77. package/skills/deployment-patterns/SKILL.md +428 -0
  78. package/skills/design-system/SKILL.md +83 -0
  79. package/skills/dev-team/SKILL.md +203 -0
  80. package/skills/django-celery/SKILL.md +458 -0
  81. package/skills/django-patterns/SKILL.md +735 -0
  82. package/skills/django-security/SKILL.md +644 -0
  83. package/skills/django-tdd/SKILL.md +730 -0
  84. package/skills/django-verification/SKILL.md +470 -0
  85. package/skills/dmux-workflows/SKILL.md +192 -0
  86. package/skills/docker-patterns/SKILL.md +520 -0
  87. package/skills/documentation-lookup/SKILL.md +91 -0
  88. package/skills/dotnet-patterns/SKILL.md +322 -0
  89. package/skills/dynamic-workflow-mode/SKILL.md +124 -0
  90. package/skills/e2e-testing/SKILL.md +327 -0
  91. package/skills/ecc-tools-cost-audit/SKILL.md +161 -0
  92. package/skills/email-ops/SKILL.md +122 -0
  93. package/skills/energy-procurement/SKILL.md +228 -0
  94. package/skills/enterprise-agent-ops/SKILL.md +51 -0
  95. package/skills/error-handling/SKILL.md +377 -0
  96. package/skills/eval-harness/SKILL.md +271 -0
  97. package/skills/evm-token-decimals/SKILL.md +131 -0
  98. package/skills/exa-search/SKILL.md +108 -0
  99. package/skills/fal-ai-media/SKILL.md +289 -0
  100. package/skills/fastapi-patterns/SKILL.md +514 -0
  101. package/skills/finance-billing-ops/SKILL.md +128 -0
  102. package/skills/flox-environments/SKILL.md +497 -0
  103. package/skills/flutter-dart-code-review/SKILL.md +436 -0
  104. package/skills/foundation-models-on-device/SKILL.md +243 -0
  105. package/skills/frontend-a11y/SKILL.md +446 -0
  106. package/skills/frontend-design-direction/SKILL.md +93 -0
  107. package/skills/frontend-patterns/SKILL.md +657 -0
  108. package/skills/fsharp-testing/SKILL.md +281 -0
  109. package/skills/gan-style-harness/SKILL.md +279 -0
  110. package/skills/generating-python-installer/SKILL.md +820 -0
  111. package/skills/git-workflow/SKILL.md +716 -0
  112. package/skills/github-ops/SKILL.md +145 -0
  113. package/skills/golang-patterns/SKILL.md +676 -0
  114. package/skills/golang-testing/SKILL.md +721 -0
  115. package/skills/google-workspace-ops/SKILL.md +96 -0
  116. package/skills/growth-log/SKILL.md +128 -0
  117. package/skills/healthcare-cdss-patterns/SKILL.md +246 -0
  118. package/skills/healthcare-emr-patterns/SKILL.md +160 -0
  119. package/skills/healthcare-eval-harness/SKILL.md +208 -0
  120. package/skills/healthcare-phi-compliance/SKILL.md +146 -0
  121. package/skills/hermes-imports/SKILL.md +89 -0
  122. package/skills/hexagonal-architecture/SKILL.md +277 -0
  123. package/skills/hipaa-compliance/SKILL.md +79 -0
  124. package/skills/homelab-network-readiness/SKILL.md +170 -0
  125. package/skills/homelab-network-setup/SKILL.md +130 -0
  126. package/skills/homelab-pihole-dns/SKILL.md +275 -0
  127. package/skills/homelab-vlan-segmentation/SKILL.md +312 -0
  128. package/skills/homelab-wireguard-vpn/SKILL.md +306 -0
  129. package/skills/hookify-rules/SKILL.md +128 -0
  130. package/skills/inherit-legacy-style/SKILL.md +157 -0
  131. package/skills/intent-driven-development/SKILL.md +360 -0
  132. package/skills/inventory-demand-planning/SKILL.md +247 -0
  133. package/skills/investor-materials/SKILL.md +97 -0
  134. package/skills/investor-outreach/SKILL.md +92 -0
  135. package/skills/ios-icon-gen/SKILL.md +158 -0
  136. package/skills/iterative-retrieval/SKILL.md +212 -0
  137. package/skills/ito-baskets/SKILL.md +263 -0
  138. package/skills/ito-compute/SKILL.md +151 -0
  139. package/skills/ito-inference/SKILL.md +119 -0
  140. package/skills/ito-training/SKILL.md +123 -0
  141. package/skills/java-coding-standards/SKILL.md +384 -0
  142. package/skills/jira-integration/SKILL.md +303 -0
  143. package/skills/jpa-patterns/SKILL.md +152 -0
  144. package/skills/knowledge-ops/SKILL.md +155 -0
  145. package/skills/kotlin-coroutines-flows/SKILL.md +285 -0
  146. package/skills/kotlin-exposed-patterns/SKILL.md +720 -0
  147. package/skills/kotlin-ktor-patterns/SKILL.md +690 -0
  148. package/skills/kotlin-patterns/SKILL.md +712 -0
  149. package/skills/kotlin-testing/SKILL.md +825 -0
  150. package/skills/kubernetes-patterns/SKILL.md +756 -0
  151. package/skills/laravel-patterns/SKILL.md +416 -0
  152. package/skills/laravel-plugin-discovery/SKILL.md +230 -0
  153. package/skills/laravel-security/SKILL.md +948 -0
  154. package/skills/laravel-tdd/SKILL.md +675 -0
  155. package/skills/laravel-verification/SKILL.md +180 -0
  156. package/skills/latency-critical-systems/SKILL.md +75 -0
  157. package/skills/lead-intelligence/SKILL.md +322 -0
  158. package/skills/liquid-glass-design/SKILL.md +279 -0
  159. package/skills/living-docs-governance/SKILL.md +137 -0
  160. package/skills/llm-trading-agent-security/SKILL.md +147 -0
  161. package/skills/logistics-exception-management/SKILL.md +222 -0
  162. package/skills/loop-design-check/SKILL.md +143 -0
  163. package/skills/mailtrap-email-integration/SKILL.md +77 -0
  164. package/skills/make-interfaces-feel-better/SKILL.md +152 -0
  165. package/skills/manim-video/SKILL.md +90 -0
  166. package/skills/market-research/SKILL.md +76 -0
  167. package/skills/marketing-campaign/SKILL.md +114 -0
  168. package/skills/mcp-server-patterns/SKILL.md +70 -0
  169. package/skills/messages-ops/SKILL.md +105 -0
  170. package/skills/ml-adoption-playbook/SKILL.md +57 -0
  171. package/skills/mle-workflow/SKILL.md +348 -0
  172. package/skills/motion-advanced/SKILL.md +597 -0
  173. package/skills/motion-foundations/SKILL.md +300 -0
  174. package/skills/motion-patterns/SKILL.md +435 -0
  175. package/skills/motion-ui/SKILL.md +576 -0
  176. package/skills/mysql-patterns/SKILL.md +413 -0
  177. package/skills/nanoclaw-repl/SKILL.md +34 -0
  178. package/skills/nasiko-control-plane/SKILL.md +49 -0
  179. package/skills/nestjs-patterns/SKILL.md +231 -0
  180. package/skills/netmiko-ssh-automation/SKILL.md +174 -0
  181. package/skills/network-bgp-diagnostics/SKILL.md +168 -0
  182. package/skills/network-config-validation/SKILL.md +211 -0
  183. package/skills/network-interface-health/SKILL.md +153 -0
  184. package/skills/nextjs-turbopack/SKILL.md +58 -0
  185. package/skills/nodejs-keccak256/SKILL.md +103 -0
  186. package/skills/nutrient-document-processing/SKILL.md +168 -0
  187. package/skills/nuxt4-patterns/SKILL.md +101 -0
  188. package/skills/opensource-pipeline/SKILL.md +256 -0
  189. package/skills/orch-add-feature/SKILL.md +45 -0
  190. package/skills/orch-build-mvp/SKILL.md +49 -0
  191. package/skills/orch-change-feature/SKILL.md +43 -0
  192. package/skills/orch-fix-defect/SKILL.md +43 -0
  193. package/skills/orch-pipeline/SKILL.md +121 -0
  194. package/skills/orch-refine-code/SKILL.md +44 -0
  195. package/skills/parallel-execution-optimizer/SKILL.md +74 -0
  196. package/skills/perl-patterns/SKILL.md +505 -0
  197. package/skills/perl-security/SKILL.md +504 -0
  198. package/skills/perl-testing/SKILL.md +476 -0
  199. package/skills/plan-canvas/SKILL.md +196 -0
  200. package/skills/plankton-code-quality/SKILL.md +237 -0
  201. package/skills/postgres-patterns/SKILL.md +148 -0
  202. package/skills/prediction-market-oracle-research/SKILL.md +64 -0
  203. package/skills/prediction-market-risk-review/SKILL.md +61 -0
  204. package/skills/prisma-patterns/SKILL.md +401 -0
  205. package/skills/product-capability/SKILL.md +142 -0
  206. package/skills/product-lens/SKILL.md +93 -0
  207. package/skills/production-audit/SKILL.md +207 -0
  208. package/skills/production-scheduling/SKILL.md +238 -0
  209. package/skills/project-flow-ops/SKILL.md +112 -0
  210. package/skills/prompt-optimizer/SKILL.md +398 -0
  211. package/skills/python-patterns/SKILL.md +751 -0
  212. package/skills/python-testing/SKILL.md +817 -0
  213. package/skills/pytorch-patterns/SKILL.md +397 -0
  214. package/skills/quality-nonconformance/SKILL.md +260 -0
  215. package/skills/quarkus-patterns/SKILL.md +723 -0
  216. package/skills/quarkus-security/SKILL.md +468 -0
  217. package/skills/quarkus-tdd/SKILL.md +812 -0
  218. package/skills/quarkus-verification/SKILL.md +481 -0
  219. package/skills/ralphinho-rfc-pipeline/SKILL.md +68 -0
  220. package/skills/react-native-patterns/SKILL.md +326 -0
  221. package/skills/react-patterns/SKILL.md +342 -0
  222. package/skills/react-performance/SKILL.md +575 -0
  223. package/skills/react-testing/SKILL.md +424 -0
  224. package/skills/recsys-pipeline-architect/SKILL.md +115 -0
  225. package/skills/recursive-decision-ledger/SKILL.md +81 -0
  226. package/skills/redis-patterns/SKILL.md +404 -0
  227. package/skills/regex-vs-llm-structured-text/SKILL.md +221 -0
  228. package/skills/remotion-video-creation/SKILL.md +43 -0
  229. package/skills/repo-scan/SKILL.md +170 -0
  230. package/skills/research-ops/SKILL.md +113 -0
  231. package/skills/returns-reverse-logistics/SKILL.md +240 -0
  232. package/skills/rules-distill/SKILL.md +265 -0
  233. package/skills/rust-patterns/SKILL.md +500 -0
  234. package/skills/rust-testing/SKILL.md +501 -0
  235. package/skills/safety-guard/SKILL.md +76 -0
  236. package/skills/santa-method/SKILL.md +307 -0
  237. package/skills/scientific-db-pubmed-database/SKILL.md +176 -0
  238. package/skills/scientific-db-uspto-database/SKILL.md +178 -0
  239. package/skills/scientific-pkg-gget/SKILL.md +167 -0
  240. package/skills/scientific-thinking-literature-review/SKILL.md +193 -0
  241. package/skills/scientific-thinking-scholar-evaluation/SKILL.md +161 -0
  242. package/skills/search-first/SKILL.md +183 -0
  243. package/skills/security-bounty-hunter/SKILL.md +100 -0
  244. package/skills/security-scan/SKILL.md +166 -0
  245. package/skills/seo/SKILL.md +155 -0
  246. package/skills/skill-scout/SKILL.md +141 -0
  247. package/skills/skill-stocktake/SKILL.md +195 -0
  248. package/skills/social-graph-ranker/SKILL.md +155 -0
  249. package/skills/social-publisher/SKILL.md +130 -0
  250. package/skills/springboot-patterns/SKILL.md +315 -0
  251. package/skills/springboot-security/SKILL.md +273 -0
  252. package/skills/springboot-tdd/SKILL.md +159 -0
  253. package/skills/springboot-verification/SKILL.md +232 -0
  254. package/skills/swift-actor-persistence/SKILL.md +144 -0
  255. package/skills/swift-concurrency-6-2/SKILL.md +216 -0
  256. package/skills/swift-protocol-di-testing/SKILL.md +191 -0
  257. package/skills/swiftui-patterns/SKILL.md +259 -0
  258. package/skills/taste/SKILL.md +264 -0
  259. package/skills/tdd-workflow/SKILL.md +583 -0
  260. package/skills/team-agent-orchestration/SKILL.md +111 -0
  261. package/skills/team-builder/SKILL.md +169 -0
  262. package/skills/terminal-opener/SKILL.md +55 -0
  263. package/skills/terminal-ops/SKILL.md +110 -0
  264. package/skills/tinystruct-patterns/SKILL.md +279 -0
  265. package/skills/token-budget-advisor/SKILL.md +134 -0
  266. package/skills/ui-demo/SKILL.md +466 -0
  267. package/skills/ui-to-vue/SKILL.md +135 -0
  268. package/skills/uncloud/SKILL.md +344 -0
  269. package/skills/unified-memory/SKILL.md +170 -0
  270. package/skills/unified-notifications-ops/SKILL.md +188 -0
  271. package/skills/verification-loop/SKILL.md +129 -0
  272. package/skills/video-editing/SKILL.md +311 -0
  273. package/skills/videodb/SKILL.md +375 -0
  274. package/skills/vite-patterns/SKILL.md +450 -0
  275. package/skills/vue-patterns/SKILL.md +471 -0
  276. package/skills/windows-desktop-e2e/SKILL.md +888 -0
  277. package/skills/workspace-surface-audit/SKILL.md +126 -0
  278. package/skills/x-api/SKILL.md +235 -0
@@ -0,0 +1,120 @@
1
+ ---
2
+ name: config-gc
3
+ description: Garbage collection for your Claude Code configuration. Periodically scans ~/.claude (skills, memory, hooks, permissions, MCP servers, caches) for redundant, stale, orphaned, or low-value items, then walks the user through a confirm-each-deletion cleanup. Use when the user says "clean up my config", "config GC", "too many skills", "audit my setup", "my .claude is bloated", or asks for a periodic config review.
4
+ metadata:
5
+ origin: ECC
6
+ ---
7
+
8
+ # Config GC — Garbage Collection for Claude Code Setups
9
+
10
+ Borrowed from runtime garbage collection: periodically scan for objects that are no longer referenced, redundant, expired, or low-value, and reclaim the space. The critical difference: **here, collection requires a human in the loop. Never delete autonomously.**
11
+
12
+ ## When to Activate
13
+
14
+ - The user asks to clean up, audit, or slim down their Claude Code configuration
15
+ - The user complains about too many skills, noisy hooks, or slow session startup
16
+ - A monthly/periodic config review is due
17
+ - After installing a large skill pack (e.g. this repo), to reconcile overlaps with existing setup
18
+
19
+ Do NOT activate for: cleaning project source code (that's refactoring), clearing chat history, or uninstalling Claude Code itself.
20
+
21
+ ## Design Philosophy
22
+
23
+ 1. **Append-only configs leak.** Skills, memory files, hooks, and permission entries only ever get added. Without periodic review they rot silently.
24
+ 2. **Regular audits beat one-time purges.** Scan every ~30 days, propose a small batch of candidates each time.
25
+ 3. **Per-channel strategies.** Each accumulation type (skills, hooks, permissions, ...) has its own staleness signals — don't apply one rule everywhere.
26
+ 4. **Soft-delete first.** Rename to `.disabled` > move to `~/.claude/_gc_trash/` > real deletion. Always keep an undo path.
27
+ 5. **Forced human-in-the-loop.** Every candidate gets its own `[y/n/skip]` confirmation. No "yes to all" shortcut.
28
+ 6. **Keep a log.** Every GC run appends to `~/.claude/gc_log.md`: what was touched, why, and how to undo it.
29
+
30
+ ## Scan Channels
31
+
32
+ | # | Channel | Path | Staleness / redundancy signals |
33
+ |---|---------|------|--------------------------------|
34
+ | 1 | Skills | `~/.claude/skills/*/` | Heavily overlapping names; never triggered in recent transcripts; domain mismatch with the user's actual work; broken or empty SKILL.md |
35
+ | 2 | Memory | `~/.claude/**/memory/*.md` + its index | Multiple index entries for one topic; contents contradicting newer entries; dates that have passed; orphan files missing from the index; sub-100-word fragments that should merge |
36
+ | 3 | Hooks | `~/.claude/hooks/` + settings | Scripts present on disk but referenced by no hook config; old versions superseded by rewrites |
37
+ | 4 | Permissions | `permissions.allow` in `settings.json` / `settings.local.json` | Duplicate entries; specific entries already covered by a wildcard (e.g. `Bash(git push)` when `Bash(*)` is allowed); one-off grants from past experiments |
38
+ | 5 | MCP servers | `~/.claude.json` or project `.mcp.json` | Servers that fail to connect; functional duplicates; long-unused |
39
+ | 6 | Scheduled reminders / jobs | wherever the user keeps them | Fired one-shots older than 30 days; jobs whose target scripts no longer exist |
40
+ | 7 | Project history | `~/.claude/projects/*/` | Stale handoff snapshots; session records superseded by newer state |
41
+ | 8 | Runtime caches | `cache/`, `file-history/`, `logs/`, `shell-snapshots/` | Sort by size and mtime; propose items >30 days old and large |
42
+
43
+ ## Workflow
44
+
45
+ 1. **Scan** all channels (or the subset the user names). Collect candidates with: path, channel, signal that flagged it, size, last-modified.
46
+ 2. **Rank** by confidence (broken/orphaned = high; merely old = low) and present as a numbered table. Cap each run at ~20 candidates — GC is periodic, not exhaustive.
47
+ 3. **Confirm one by one.** For each candidate show the evidence, then ask `[y/n/skip]`. The user can stop at any point.
48
+ 4. **Soft-delete confirmed items**: prefer `.disabled` rename for skills/hooks and `_gc_trash/<date>/` move for files. Permission entries live in JSON (no comments possible): back up the settings file, record each removed entry verbatim in `gc_log.md`, then remove it from the `allow` array with `jq`. Only hard-delete when the user explicitly asks.
49
+ 5. **Log** the run to `~/.claude/gc_log.md`: timestamp, items actioned, undo instructions.
50
+ 6. **Report**: reclaimed size, channels still healthy, suggested next review date.
51
+
52
+ ## Example Scan Commands
53
+
54
+ Orphaned hook scripts (channel 3) — scripts on disk that no hook config references:
55
+
56
+ ```bash
57
+ for f in ~/.claude/hooks/*; do
58
+ name=$(basename "$f")
59
+ grep -rq "$name" ~/.claude/settings.json ~/.claude/settings.local.json 2>/dev/null \
60
+ || echo "ORPHAN: $f"
61
+ done
62
+ ```
63
+
64
+ Redundant permission entries (channel 4) — duplicates, and specific grants shadowed by a wildcard:
65
+
66
+ ```bash
67
+ jq -r '.permissions.allow[]' ~/.claude/settings.local.json | sort | uniq -d
68
+ if jq -e '.permissions.allow | index("Bash(*)")' ~/.claude/settings.local.json >/dev/null; then
69
+ jq -r '.permissions.allow[]' ~/.claude/settings.local.json \
70
+ | grep '^Bash(' | grep -vF 'Bash(*)'
71
+ fi
72
+ ```
73
+
74
+ Largest stale caches (channel 8) — `du -k` instead of GNU-only `find -printf`, so it works on macOS/BSD too:
75
+
76
+ ```bash
77
+ find ~/.claude/file-history ~/.claude/shell-snapshots -type f -mtime +30 \
78
+ -exec du -k {} + 2>/dev/null | sort -rn | head -20
79
+ ```
80
+
81
+ Soft-delete with undo path (capture the date once so the log can't disagree with the directory):
82
+
83
+ ```bash
84
+ gc_date=$(date +%Y-%m-%d)
85
+ mkdir -p ~/.claude/_gc_trash/$gc_date
86
+ mv ~/.claude/skills/dead-skill ~/.claude/_gc_trash/$gc_date/
87
+ echo "$(date -Iseconds) moved skills/dead-skill -> _gc_trash/$gc_date/ (undo: mv back)" >> ~/.claude/gc_log.md
88
+ ```
89
+
90
+ Removing a confirmed-redundant permission entry (JSON has no comments — back up, log, then edit):
91
+
92
+ ```bash
93
+ cp ~/.claude/settings.local.json ~/.claude/settings.local.json.bak
94
+ echo "$(date -Iseconds) removed permission entry: Bash(git push) (undo: restore from .bak or re-add)" >> ~/.claude/gc_log.md
95
+ jq '.permissions.allow -= ["Bash(git push)"]' ~/.claude/settings.local.json.bak \
96
+ > ~/.claude/settings.local.json
97
+ ```
98
+
99
+ ## Anti-Patterns
100
+
101
+ - **Bulk approval.** Asking "delete all 15? [y/n]" defeats the design. One item, one decision.
102
+ - **Hard-deleting on first pass.** If there's no `_gc_trash/` copy or `.disabled` rename, you did it wrong.
103
+ - **Treating "old" as "dead".** A skill untouched for 60 days may be seasonal (tax season, quarterly reviews). Age is a signal, not a verdict — that's why a human confirms.
104
+ - **Cleaning memory by truncation.** Merging two contradicting memory files requires reading both and keeping the newer truth, not deleting the longer one.
105
+ - **Touching anything outside `~/.claude`** (or the project's `.claude/`). Config GC never wanders into source trees.
106
+
107
+ ## Best Practices
108
+
109
+ - Run after big additions, not just on a calendar: installing a 50-skill pack is exactly when overlap with existing skills appears.
110
+ - When two skills overlap, prefer disabling the one with the weaker trigger description — it's the one that was probably never firing anyway.
111
+ - Permission cleanup is the highest-value channel per minute spent: redundant allow-entries make security review harder.
112
+ - Keep `gc_log.md` forever. It's tiny, and "when did I disable that hook and why" comes up more often than you'd think.
113
+
114
+ ## Related Skills
115
+
116
+ - `skill-stocktake` — audits skill *quality*; config-gc audits skill *existence*. Run stocktake on what survives GC.
117
+ - `workspace-surface-audit` — the additive counterpart: recommends what to install. config-gc is the subtractive half of the same lifecycle.
118
+ - `configure-ecc` — after installing skills with it, run config-gc to reconcile overlaps with your pre-existing setup.
119
+ - `continuous-learning` — produces the memory files this skill later audits.
120
+ - `security-review` — pairs well with the permissions channel.
@@ -0,0 +1,206 @@
1
+ ---
2
+ name: configure-ecc
3
+ description: Guide ECC installation, update, or reconfiguration from inside Claude Code, Codex, or Kimi while respecting each harness's real plugin, scope, and hook capabilities.
4
+ metadata:
5
+ origin: ECC
6
+ ---
7
+
8
+ # Configure Everything Claude Code
9
+
10
+ Run a conversational wizard inside the current harness. Inventory first, collect
11
+ only supported choices, preview, confirm once, apply non-interactively, verify,
12
+ and show the welcome only after success. Never clone ECC into a temporary
13
+ directory or copy plugin components by hand.
14
+
15
+ For a human-operated terminal, the canonical entry points are `ecc setup` and
16
+ `npx ecc-universal setup`. Inside a harness, use the explicit non-interactive
17
+ commands below instead.
18
+
19
+ ## Route by the current harness
20
+
21
+ - In Claude Code, use the full scope-and-hook wizard below.
22
+ - In Codex, use Codex's native plugin lifecycle. Do not offer Claude scopes or
23
+ map ECC's four Claude hook profiles onto Codex.
24
+ - In Kimi, install the project surface under `./.kimi-code`. Kimi does not
25
+ provide ECC's Claude lifecycle-hook profiles.
26
+ - If the harness is uncertain, state the detected evidence and ask which
27
+ harness to configure before running a mutating command.
28
+
29
+ This skill is a post-install reconfiguration path. It cannot intercept or
30
+ replace a provider's built-in first-install UI.
31
+
32
+ ## Claude Code: run the full conversational wizard
33
+
34
+ ### 1. Inventory without changing anything
35
+
36
+ Run both commands and summarize the installed ECC scope, enabled state, and
37
+ marketplace source:
38
+
39
+ ```bash
40
+ claude plugin list --json
41
+ claude plugin marketplace list --json
42
+ ```
43
+
44
+ Treat a single existing `ecc@ecc` installation as a reconfiguration. Do not
45
+ interpret Claude's provider-owned "Open home page" control as installation
46
+ evidence. Stop and report the recovery returned by setup for multiple ECC
47
+ scopes, a legacy/manual install, malformed settings, or a marketplace collision;
48
+ never guess which state to delete.
49
+
50
+ ### 2. Collect exactly two choices
51
+
52
+ Ask exactly one scope question and require one value:
53
+
54
+ - `user | project | local`
55
+ - `user` is global for this user.
56
+ - `project` is shared through repository settings.
57
+ - `local` is private to the current project.
58
+
59
+ Visually mark only the selected scope as selected or installing. If the user
60
+ chooses a different scope from a single existing install, describe it as a
61
+ scope migration and include `--move-scope` in the commands below.
62
+
63
+ Ask exactly one hook-mode question and require one value:
64
+
65
+ - `off | minimal | standard | strict`
66
+ - `off` keeps skills and commands but disables ECC hook automation.
67
+ - `minimal` enables the lightest lifecycle and safety automation.
68
+ - `standard` balances quality and safety automation.
69
+ - `strict` enables the strongest checks and reminders.
70
+
71
+ Hook preference is personal Claude plugin configuration; it does not follow
72
+ the selected install scope.
73
+
74
+ ### 3. Preview and confirm once
75
+
76
+ Prefer the plugin-bundled setup script. Substitute the two selected values and
77
+ include `--move-scope` only for a scope migration:
78
+
79
+ ```bash
80
+ node "$CLAUDE_PLUGIN_ROOT/scripts/setup.js" --mode claude-plugin \
81
+ --scope <scope> --hooks <hooks> [--move-scope] --dry-run --json
82
+ ```
83
+
84
+ If `$CLAUDE_PLUGIN_ROOT` is unavailable, use the published npm package:
85
+
86
+ ```bash
87
+ npx --yes --package ecc-universal ecc setup --mode claude-plugin \
88
+ --scope <scope> --hooks <hooks> [--move-scope] --dry-run --json
89
+ ```
90
+
91
+ Show exactly one confirmation summary containing the planned action, one scope,
92
+ one hook mode, marketplace action, and any source-to-destination migration.
93
+ Ask one yes/no question. Do not run a bare interactive `ecc setup` through a
94
+ harness shell tool because that shell is commonly non-TTY.
95
+
96
+ ### 4. Apply the explicit choices
97
+
98
+ After confirmation, rerun the same route without `--dry-run`. Keep every choice
99
+ explicit and request JSON so success can be checked deterministically:
100
+
101
+ ```bash
102
+ node "$CLAUDE_PLUGIN_ROOT/scripts/setup.js" --mode claude-plugin \
103
+ --scope <scope> --hooks <hooks> [--move-scope] --yes --json
104
+ ```
105
+
106
+ Fallback:
107
+
108
+ ```bash
109
+ npx --yes --package ecc-universal ecc setup --mode claude-plugin \
110
+ --scope <scope> --hooks <hooks> [--move-scope] --yes --json
111
+ ```
112
+
113
+ ### 5. Verify, then render the welcome
114
+
115
+ Require a zero exit status and a setup result whose `scope` and `hooks` equal
116
+ the selected values. Then independently run:
117
+
118
+ ```bash
119
+ claude plugin list --json
120
+ ```
121
+
122
+ Continue only when exactly one enabled `ecc@ecc` entry exists at the selected
123
+ scope. When `$CLAUDE_PLUGIN_ROOT` is available, pass the successful setup
124
+ `action` (`installed`, `updated`, `migrated`, `resumed`, or
125
+ `already-migrated`) to the bundled renderer:
126
+
127
+ Before invoking it, require the provider-reported version to match
128
+ `ECC_VERSION_PATTERN` from `scripts/lib/terminal-welcome.js`. Reject unexpected
129
+ version text instead of interpolating it into a shell command.
130
+
131
+ ```bash
132
+ node -e 'const { renderTerminalWelcome } = require(process.env.CLAUDE_PLUGIN_ROOT + "/scripts/lib/terminal-welcome"); process.stdout.write(renderTerminalWelcome({ action: process.argv[1], version: process.argv[2], color: process.stdout.isTTY }));' "<action>" "<installed-version>"
133
+ ```
134
+
135
+ Render the welcome exactly once. On failure, dry-run, cancellation, a scope or
136
+ hook mismatch, or unverifiable state, do not render it; report the error and
137
+ recovery instead. After verified changes, tell the user to run
138
+ `/reload-plugins` or restart Claude Code.
139
+
140
+ ## Codex: use the native plugin lifecycle
141
+
142
+ Inventory with `codex plugin marketplace list --json` and
143
+ `codex plugin list --available --json`. Codex's native plugin command has no
144
+ Claude-style `user | project | local` selector. Codex native plugins do support
145
+ provider-specific hooks, but Codex requires explicit trust for them. Let Codex
146
+ show that trust decision; do not ask the Claude four-profile hook question or
147
+ claim those profiles map to Codex.
148
+
149
+ If the ECC marketplace is missing, add it. Otherwise refresh its snapshot:
150
+
151
+ ```bash
152
+ codex plugin marketplace add affaan-m/ECC
153
+ codex plugin marketplace upgrade ecc --json
154
+ ```
155
+
156
+ Ask for one confirmation, then install or idempotently refresh the installed
157
+ cache and verify it:
158
+
159
+ ```bash
160
+ codex plugin add ecc@ecc --json
161
+ codex plugin list --json
162
+ ```
163
+
164
+ Continue only when the JSON reports ECC installed and provides its
165
+ `installedPath`. Then render the verified bundle's welcome:
166
+
167
+ Use only the exact absolute `installedPath` returned by Codex JSON. Reject
168
+ control characters and require the installed version to match
169
+ `ECC_VERSION_PATTERN`. Invoke `node` directly with this argument array; this is
170
+ a tool API invocation, not a shell command:
171
+
172
+ ```text
173
+ ["<installedPath>/scripts/welcome.js", "--action", "configured", "--version", "<installed-version>"]
174
+ ```
175
+
176
+ If the current harness cannot invoke an executable with a separate argument
177
+ array, skip the welcome. Never construct a shell command from Codex JSON values.
178
+
179
+ Never claim that Claude's `off | minimal | standard | strict` profiles were
180
+ applied to Codex.
181
+
182
+ ## Kimi: install the project surface
183
+
184
+ State the capability summary before confirmation: destination
185
+ `./.kimi-code`; `hooks=unsupported` for ECC lifecycle hooks. Do not ask the
186
+ Claude scope or hook-mode questions. Preview first:
187
+
188
+ ```bash
189
+ npx --yes --package ecc-universal ecc install --profile core --target kimi --dry-run
190
+ ```
191
+
192
+ Show one confirmation for that project destination, then apply the identical
193
+ command without `--dry-run`. Verify with:
194
+
195
+ ```bash
196
+ npx --yes --package ecc-universal ecc doctor --target kimi
197
+ ```
198
+
199
+ Only after doctor succeeds and the installed instructions and skills remain
200
+ inside `./.kimi-code`, render:
201
+
202
+ ```bash
203
+ npx --yes --package ecc-universal ecc welcome --action configured
204
+ ```
205
+
206
+ Do not claim that Kimi installed or configured ECC lifecycle hooks.
@@ -0,0 +1,190 @@
1
+ ---
2
+ name: connections-optimizer
3
+ description: Reorganize the user's X and LinkedIn network with review-first pruning, add/follow recommendations, and channel-specific warm outreach drafted in the user's real voice. Use when the user wants to clean up following lists, grow toward current priorities, or rebalance a social graph around higher-signal relationships.
4
+ metadata:
5
+ origin: ECC
6
+ ---
7
+
8
+ # Connections Optimizer
9
+
10
+ Reorganize the user's network instead of treating outbound as a one-way prospecting list.
11
+
12
+ This skill handles:
13
+
14
+ - X following cleanup and expansion
15
+ - LinkedIn follow and connection analysis
16
+ - review-first prune queues
17
+ - add and follow recommendations
18
+ - warm-path identification
19
+ - Apple Mail, X DM, and LinkedIn draft generation in the user's real voice
20
+
21
+ ## When to Activate
22
+
23
+ - the user wants to prune their X following
24
+ - the user wants to rebalance who they follow or stay connected to
25
+ - the user says "clean up my network", "who should I unfollow", "who should I follow", "who should I reconnect with"
26
+ - outreach quality depends on network structure, not just cold list generation
27
+
28
+ ## Required Inputs
29
+
30
+ Collect or infer:
31
+
32
+ - current priorities and active work
33
+ - target roles, industries, geos, or ecosystems
34
+ - platform selection: X, LinkedIn, or both
35
+ - do-not-touch list
36
+ - mode: `light-pass`, `default`, or `aggressive`
37
+
38
+ If the user does not specify a mode, use `default`.
39
+
40
+ ## Tool Requirements
41
+
42
+ ### Preferred
43
+
44
+ - `x-api` for X graph inspection and recent activity
45
+ - `lead-intelligence` for target discovery and warm-path ranking
46
+ - `social-graph-ranker` when the user wants bridge value scored independently of the broader lead workflow
47
+ - Exa / deep research for person and company enrichment
48
+ - `brand-voice` before drafting outbound
49
+
50
+ ### Fallbacks
51
+
52
+ - browser control for LinkedIn analysis and drafting
53
+ - browser control for X if API coverage is constrained
54
+ - Apple Mail or Mail.app drafting via desktop automation when email is the right channel
55
+
56
+ ## Safety Defaults
57
+
58
+ - default is review-first, never blind auto-pruning
59
+ - X: prune only accounts the user follows, never followers
60
+ - LinkedIn: treat 1st-degree connection removal as manual-review-first
61
+ - do not auto-send DMs, invites, or emails
62
+ - emit a ranked action plan and drafts before any apply step
63
+
64
+ ## Platform Rules
65
+
66
+ ### X
67
+
68
+ - mutuals are stickier than one-way follows
69
+ - non-follow-backs can be pruned more aggressively
70
+ - heavily inactive or disappeared accounts should surface quickly
71
+ - engagement, signal quality, and bridge value matter more than raw follower count
72
+
73
+ ### LinkedIn
74
+
75
+ - API-first if the user actually has LinkedIn API access
76
+ - browser workflow must work when API access is missing
77
+ - distinguish outbound follows from accepted 1st-degree connections
78
+ - outbound follows can be pruned more freely
79
+ - accepted 1st-degree connections should default to review, not auto-remove
80
+
81
+ ## Modes
82
+
83
+ ### `light-pass`
84
+
85
+ - prune only high-confidence low-value one-way follows
86
+ - surface the rest for review
87
+ - generate a small add/follow list
88
+
89
+ ### `default`
90
+
91
+ - balanced prune queue
92
+ - balanced keep list
93
+ - ranked add/follow queue
94
+ - draft warm intros or direct outreach where useful
95
+
96
+ ### `aggressive`
97
+
98
+ - larger prune queue
99
+ - lower tolerance for stale non-follow-backs
100
+ - still review-gated before apply
101
+
102
+ ## Scoring Model
103
+
104
+ Use these positive signals:
105
+
106
+ - reciprocity
107
+ - recent activity
108
+ - alignment to current priorities
109
+ - network bridge value
110
+ - role relevance
111
+ - real engagement history
112
+ - recent presence and responsiveness
113
+
114
+ Use these negative signals:
115
+
116
+ - disappeared or abandoned account
117
+ - stale one-way follow
118
+ - off-priority topic cluster
119
+ - low-value noise
120
+ - repeated non-response
121
+ - no follow-back when many better replacements exist
122
+
123
+ Mutuals and real warm-path bridges should be penalized less aggressively than one-way follows.
124
+
125
+ ## Workflow
126
+
127
+ 1. Capture priorities, do-not-touch constraints, and selected platforms.
128
+ 2. Pull the current following / connection inventory.
129
+ 3. Score prune candidates with explicit reasons.
130
+ 4. Score keep candidates with explicit reasons.
131
+ 5. Use `lead-intelligence` plus research surfaces to rank expansion candidates.
132
+ 6. Match the right channel:
133
+ - X DM for warm, fast social touch points
134
+ - LinkedIn message for professional graph adjacency
135
+ - Apple Mail draft for higher-context intros or outreach
136
+ 7. Run `brand-voice` before drafting messages.
137
+ 8. Return a review pack before any apply step.
138
+
139
+ ## Review Pack Format
140
+
141
+ ```text
142
+ CONNECTIONS OPTIMIZER REPORT
143
+ ============================
144
+
145
+ Mode:
146
+ Platforms:
147
+ Priority Set:
148
+
149
+ Prune Queue
150
+ - handle / profile
151
+ reason:
152
+ confidence:
153
+ action:
154
+
155
+ Review Queue
156
+ - handle / profile
157
+ reason:
158
+ risk:
159
+
160
+ Keep / Protect
161
+ - handle / profile
162
+ bridge value:
163
+
164
+ Add / Follow Targets
165
+ - person
166
+ why now:
167
+ warm path:
168
+ preferred channel:
169
+
170
+ Drafts
171
+ - X DM:
172
+ - LinkedIn:
173
+ - Apple Mail:
174
+ ```
175
+
176
+ ## Outbound Rules
177
+
178
+ - Default email path is Apple Mail / Mail.app draft creation.
179
+ - Do not send automatically.
180
+ - Choose the channel based on warmth, relevance, and context depth.
181
+ - Do not force a DM when an email or no outreach is the right move.
182
+ - Drafts should sound like the user, not like automated sales copy.
183
+
184
+ ## Related Skills
185
+
186
+ - `brand-voice` for the reusable voice profile
187
+ - `social-graph-ranker` for the standalone bridge-scoring and warm-path math
188
+ - `lead-intelligence` for weighted target and warm-path discovery
189
+ - `x-api` for X graph access, drafting, and optional apply flows
190
+ - `content-engine` when the user also wants public launch content around network moves
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: content-engine
3
+ description: Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.
4
+ metadata:
5
+ origin: ECC
6
+ ---
7
+
8
+ # Content Engine
9
+
10
+ Build platform-native content without flattening the author's real voice into platform slop.
11
+
12
+ ## When to Activate
13
+
14
+ - writing X posts or threads
15
+ - drafting LinkedIn posts or launch updates
16
+ - scripting short-form video or YouTube explainers
17
+ - repurposing articles, podcasts, demos, docs, or internal notes into public content
18
+ - building a launch sequence or ongoing content system around a product, insight, or narrative
19
+
20
+ ## Non-Negotiables
21
+
22
+ 1. Start from source material, not generic post formulas.
23
+ 2. Adapt the format for the platform, not the persona.
24
+ 3. One post should carry one actual claim.
25
+ 4. Specificity beats adjectives.
26
+ 5. No engagement bait unless the user explicitly asks for it.
27
+
28
+ ## Source-First Workflow
29
+
30
+ Before drafting, identify the source set:
31
+ - published articles
32
+ - notes or internal memos
33
+ - product demos
34
+ - docs or changelogs
35
+ - transcripts
36
+ - screenshots
37
+ - prior posts from the same author
38
+
39
+ If the user wants a specific voice, build a voice profile from real examples before writing.
40
+ Use `brand-voice` as the canonical workflow when voice consistency matters across more than one output.
41
+
42
+ ## Voice Handling
43
+
44
+ `brand-voice` is the canonical voice layer.
45
+
46
+ Run it first when:
47
+
48
+ - there are multiple downstream outputs
49
+ - the user explicitly cares about writing style
50
+ - the content is launch, outreach, or reputation-sensitive
51
+
52
+ Reuse the resulting `VOICE PROFILE` here instead of rebuilding a second voice model.
53
+ If the user wants Affaan / ECC voice specifically, still treat `brand-voice` as the source of truth and feed it the best live or source-derived material available.
54
+
55
+ ## Hard Bans
56
+
57
+ Delete and rewrite any of these:
58
+ - "In today's rapidly evolving landscape"
59
+ - "game-changer", "revolutionary", "cutting-edge"
60
+ - "here's why this matters" unless it is followed immediately by something concrete
61
+ - ending with a LinkedIn-style question just to farm replies
62
+ - forced casualness on LinkedIn
63
+ - fake engagement padding that was not present in the source material
64
+
65
+ ## Platform Adaptation Rules
66
+
67
+ ### X
68
+
69
+ - open with the strongest claim, artifact, or tension
70
+ - keep the compression if the source voice is compressed
71
+ - if writing a thread, each post must advance the argument
72
+ - do not pad with context the audience does not need
73
+
74
+ ### LinkedIn
75
+
76
+ - expand only enough for people outside the immediate niche to follow
77
+ - do not turn it into a fake lesson post unless the source material actually is reflective
78
+ - no corporate inspiration cadence
79
+ - no praise-stacking, no "journey" filler
80
+
81
+ ### Short Video
82
+
83
+ - script around the visual sequence and proof points
84
+ - first seconds should show the result, problem, or punch
85
+ - do not write narration that sounds better on paper than on screen
86
+
87
+ ### YouTube
88
+
89
+ - show the result or tension early
90
+ - organize by argument or progression, not filler sections
91
+ - use chaptering only when it helps clarity
92
+
93
+ ### Newsletter
94
+
95
+ - open with the point, conflict, or artifact
96
+ - do not spend the first paragraph warming up
97
+ - every section needs to add something new
98
+
99
+ ## Repurposing Flow
100
+
101
+ 1. Pick the anchor asset.
102
+ 2. Extract 3 to 7 atomic claims or scenes.
103
+ 3. Rank them by sharpness, novelty, and proof.
104
+ 4. Assign one strong idea per output.
105
+ 5. Adapt structure for each platform.
106
+ 6. Strip platform-shaped filler.
107
+ 7. Run the quality gate.
108
+
109
+ ## Deliverables
110
+
111
+ When asked for a campaign, return:
112
+ - a short voice profile if voice matching matters
113
+ - the core angle
114
+ - platform-native drafts
115
+ - posting order only if it helps execution
116
+ - gaps that must be filled before publishing
117
+
118
+ ## Quality Gate
119
+
120
+ Before delivering:
121
+ - every draft sounds like the intended author, not the platform stereotype
122
+ - every draft contains a real claim, proof point, or concrete observation
123
+ - no generic hype language remains
124
+ - no fake engagement bait remains
125
+ - no duplicated copy across platforms unless requested
126
+ - any CTA is earned and user-approved
127
+
128
+ ## Related Skills
129
+
130
+ - `brand-voice` for source-derived voice profiles
131
+ - `crosspost` for platform-specific distribution
132
+ - `x-api` for sourcing recent posts and publishing approved X output