@heytherevibin/skillforge 0.2.1

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 (402) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/CODE_OF_CONDUCT.md +34 -0
  3. package/CONTRIBUTING.md +38 -0
  4. package/LICENSE +21 -0
  5. package/README.md +337 -0
  6. package/RELEASING.md +93 -0
  7. package/SECURITY.md +31 -0
  8. package/STRATEGY.md +26 -0
  9. package/bin/cli.js +547 -0
  10. package/lib/packs.js +184 -0
  11. package/package.json +38 -0
  12. package/python/app/__init__.py +0 -0
  13. package/python/app/__pycache__/__init__.cpython-312.pyc +0 -0
  14. package/python/app/__pycache__/auth.cpython-312.pyc +0 -0
  15. package/python/app/__pycache__/main.cpython-312.pyc +0 -0
  16. package/python/app/auth.py +63 -0
  17. package/python/app/cli.py +78 -0
  18. package/python/app/db_paths.py +26 -0
  19. package/python/app/events_cli.py +175 -0
  20. package/python/app/main.py +647 -0
  21. package/python/app/materialize.py +138 -0
  22. package/python/app/mcp_server.py +610 -0
  23. package/python/app/route_cli.py +117 -0
  24. package/python/requirements-dev.txt +1 -0
  25. package/python/requirements.txt +7 -0
  26. package/python/tests/test_db_paths.py +41 -0
  27. package/skills/accessibility/SKILL.md +145 -0
  28. package/skills/agent-architecture-audit/SKILL.md +256 -0
  29. package/skills/agent-eval/SKILL.md +144 -0
  30. package/skills/agent-harness-construction/SKILL.md +72 -0
  31. package/skills/agent-introspection-debugging/SKILL.md +152 -0
  32. package/skills/agent-payment-x402/SKILL.md +224 -0
  33. package/skills/agent-sort/SKILL.md +214 -0
  34. package/skills/agentic-engineering/SKILL.md +62 -0
  35. package/skills/agentic-os/SKILL.md +386 -0
  36. package/skills/ai-first-engineering/SKILL.md +50 -0
  37. package/skills/ai-regression-testing/SKILL.md +384 -0
  38. package/skills/android-clean-architecture/SKILL.md +338 -0
  39. package/skills/angular-developer/SKILL.md +153 -0
  40. package/skills/angular-developer/references/angular-animations.md +160 -0
  41. package/skills/angular-developer/references/angular-aria.md +410 -0
  42. package/skills/angular-developer/references/cli.md +86 -0
  43. package/skills/angular-developer/references/component-harnesses.md +59 -0
  44. package/skills/angular-developer/references/component-styling.md +91 -0
  45. package/skills/angular-developer/references/components.md +117 -0
  46. package/skills/angular-developer/references/creating-services.md +97 -0
  47. package/skills/angular-developer/references/data-resolvers.md +69 -0
  48. package/skills/angular-developer/references/define-routes.md +67 -0
  49. package/skills/angular-developer/references/defining-providers.md +72 -0
  50. package/skills/angular-developer/references/di-fundamentals.md +120 -0
  51. package/skills/angular-developer/references/e2e-testing.md +56 -0
  52. package/skills/angular-developer/references/effects.md +83 -0
  53. package/skills/angular-developer/references/hierarchical-injectors.md +43 -0
  54. package/skills/angular-developer/references/host-elements.md +80 -0
  55. package/skills/angular-developer/references/injection-context.md +63 -0
  56. package/skills/angular-developer/references/inputs.md +101 -0
  57. package/skills/angular-developer/references/linked-signal.md +59 -0
  58. package/skills/angular-developer/references/loading-strategies.md +61 -0
  59. package/skills/angular-developer/references/mcp.md +108 -0
  60. package/skills/angular-developer/references/navigate-to-routes.md +69 -0
  61. package/skills/angular-developer/references/outputs.md +86 -0
  62. package/skills/angular-developer/references/reactive-forms.md +122 -0
  63. package/skills/angular-developer/references/rendering-strategies.md +44 -0
  64. package/skills/angular-developer/references/resource.md +77 -0
  65. package/skills/angular-developer/references/route-animations.md +56 -0
  66. package/skills/angular-developer/references/route-guards.md +52 -0
  67. package/skills/angular-developer/references/router-lifecycle.md +45 -0
  68. package/skills/angular-developer/references/router-testing.md +87 -0
  69. package/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
  70. package/skills/angular-developer/references/signal-forms.md +795 -0
  71. package/skills/angular-developer/references/signals-overview.md +94 -0
  72. package/skills/angular-developer/references/tailwind-css.md +69 -0
  73. package/skills/angular-developer/references/template-driven-forms.md +114 -0
  74. package/skills/angular-developer/references/testing-fundamentals.md +65 -0
  75. package/skills/api-connector-builder/SKILL.md +120 -0
  76. package/skills/api-design/SKILL.md +522 -0
  77. package/skills/architecture-decision-records/SKILL.md +178 -0
  78. package/skills/article-writing/SKILL.md +78 -0
  79. package/skills/automation-audit-ops/SKILL.md +141 -0
  80. package/skills/autonomous-agent-harness/SKILL.md +272 -0
  81. package/skills/autonomous-loops/SKILL.md +609 -0
  82. package/skills/backend-patterns/SKILL.md +560 -0
  83. package/skills/benchmark/SKILL.md +92 -0
  84. package/skills/blueprint/SKILL.md +104 -0
  85. package/skills/browser-qa/SKILL.md +86 -0
  86. package/skills/bun-runtime/SKILL.md +83 -0
  87. package/skills/canary-watch/SKILL.md +98 -0
  88. package/skills/carrier-relationship-management/SKILL.md +211 -0
  89. package/skills/cisco-ios-patterns/SKILL.md +163 -0
  90. package/skills/ck/SKILL.md +147 -0
  91. package/skills/ck/commands/forget.mjs +44 -0
  92. package/skills/ck/commands/info.mjs +24 -0
  93. package/skills/ck/commands/init.mjs +143 -0
  94. package/skills/ck/commands/list.mjs +40 -0
  95. package/skills/ck/commands/migrate.mjs +202 -0
  96. package/skills/ck/commands/resume.mjs +36 -0
  97. package/skills/ck/commands/save.mjs +210 -0
  98. package/skills/ck/commands/shared.mjs +387 -0
  99. package/skills/ck/hooks/session-start.mjs +224 -0
  100. package/skills/claude-devfleet/SKILL.md +103 -0
  101. package/skills/click-path-audit/SKILL.md +244 -0
  102. package/skills/clickhouse-io/SKILL.md +438 -0
  103. package/skills/code-tour/SKILL.md +235 -0
  104. package/skills/codebase-onboarding/SKILL.md +232 -0
  105. package/skills/coding-standards/SKILL.md +548 -0
  106. package/skills/compose-multiplatform-patterns/SKILL.md +298 -0
  107. package/skills/connections-optimizer/SKILL.md +188 -0
  108. package/skills/content-engine/SKILL.md +126 -0
  109. package/skills/content-hash-cache-pattern/SKILL.md +160 -0
  110. package/skills/context-budget/SKILL.md +134 -0
  111. package/skills/continuous-agent-loop/SKILL.md +44 -0
  112. package/skills/continuous-learning/SKILL.md +129 -0
  113. package/skills/continuous-learning/config.json +18 -0
  114. package/skills/continuous-learning/evaluate-session.sh +69 -0
  115. package/skills/continuous-learning-v2/SKILL.md +358 -0
  116. package/skills/continuous-learning-v2/agents/observer-loop.sh +322 -0
  117. package/skills/continuous-learning-v2/agents/observer.md +198 -0
  118. package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
  119. package/skills/continuous-learning-v2/agents/start-observer.sh +248 -0
  120. package/skills/continuous-learning-v2/config.json +8 -0
  121. package/skills/continuous-learning-v2/hooks/observe.sh +476 -0
  122. package/skills/continuous-learning-v2/scripts/detect-project.sh +288 -0
  123. package/skills/continuous-learning-v2/scripts/instinct-cli.py +1519 -0
  124. package/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  125. package/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
  126. package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -0
  127. package/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
  128. package/skills/cost-tracking/SKILL.md +147 -0
  129. package/skills/council/SKILL.md +202 -0
  130. package/skills/cpp-coding-standards/SKILL.md +722 -0
  131. package/skills/cpp-testing/SKILL.md +323 -0
  132. package/skills/crosspost/SKILL.md +110 -0
  133. package/skills/csharp-testing/SKILL.md +320 -0
  134. package/skills/customer-billing-ops/SKILL.md +139 -0
  135. package/skills/customs-trade-compliance/SKILL.md +262 -0
  136. package/skills/dart-flutter-patterns/SKILL.md +562 -0
  137. package/skills/dashboard-builder/SKILL.md +108 -0
  138. package/skills/data-scraper-agent/SKILL.md +764 -0
  139. package/skills/database-migrations/SKILL.md +428 -0
  140. package/skills/deep-research/SKILL.md +158 -0
  141. package/skills/defi-amm-security/SKILL.md +166 -0
  142. package/skills/deployment-patterns/SKILL.md +426 -0
  143. package/skills/design-system/SKILL.md +81 -0
  144. package/skills/django-celery/SKILL.md +456 -0
  145. package/skills/django-patterns/SKILL.md +733 -0
  146. package/skills/django-security/SKILL.md +592 -0
  147. package/skills/django-tdd/SKILL.md +728 -0
  148. package/skills/django-verification/SKILL.md +468 -0
  149. package/skills/dmux-workflows/SKILL.md +190 -0
  150. package/skills/docker-patterns/SKILL.md +363 -0
  151. package/skills/documentation-lookup/SKILL.md +89 -0
  152. package/skills/dotnet-patterns/SKILL.md +320 -0
  153. package/skills/e2e-testing/SKILL.md +325 -0
  154. package/skills/email-ops/SKILL.md +120 -0
  155. package/skills/energy-procurement/SKILL.md +227 -0
  156. package/skills/enterprise-agent-ops/SKILL.md +49 -0
  157. package/skills/error-handling/SKILL.md +375 -0
  158. package/skills/eval-harness/SKILL.md +269 -0
  159. package/skills/evm-token-decimals/SKILL.md +130 -0
  160. package/skills/exa-search/SKILL.md +106 -0
  161. package/skills/fal-ai-media/SKILL.md +287 -0
  162. package/skills/fastapi-patterns/SKILL.md +327 -0
  163. package/skills/finance-billing-ops/SKILL.md +126 -0
  164. package/skills/flox-environments/SKILL.md +496 -0
  165. package/skills/flutter-dart-code-review/SKILL.md +434 -0
  166. package/skills/foundation-models-on-device/SKILL.md +243 -0
  167. package/skills/frontend-design-direction/SKILL.md +92 -0
  168. package/skills/frontend-patterns/SKILL.md +641 -0
  169. package/skills/frontend-slides/SKILL.md +183 -0
  170. package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  171. package/skills/frontend-slides/animation-patterns.md +122 -0
  172. package/skills/frontend-slides/html-template.md +419 -0
  173. package/skills/frontend-slides/scripts/export-pdf.sh +418 -0
  174. package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  175. package/skills/frontend-slides/viewport-base.css +153 -0
  176. package/skills/fsharp-testing/SKILL.md +279 -0
  177. package/skills/gan-style-harness/SKILL.md +278 -0
  178. package/skills/gateguard/SKILL.md +125 -0
  179. package/skills/git-workflow/SKILL.md +714 -0
  180. package/skills/github-ops/SKILL.md +143 -0
  181. package/skills/golang-patterns/SKILL.md +673 -0
  182. package/skills/golang-testing/SKILL.md +719 -0
  183. package/skills/google-workspace-ops/SKILL.md +94 -0
  184. package/skills/healthcare-cdss-patterns/SKILL.md +245 -0
  185. package/skills/healthcare-emr-patterns/SKILL.md +159 -0
  186. package/skills/healthcare-eval-harness/SKILL.md +207 -0
  187. package/skills/healthcare-phi-compliance/SKILL.md +145 -0
  188. package/skills/hermes-imports/SKILL.md +87 -0
  189. package/skills/hexagonal-architecture/SKILL.md +275 -0
  190. package/skills/hipaa-compliance/SKILL.md +78 -0
  191. package/skills/homelab-network-readiness/SKILL.md +169 -0
  192. package/skills/homelab-network-setup/SKILL.md +129 -0
  193. package/skills/homelab-pihole-dns/SKILL.md +274 -0
  194. package/skills/homelab-vlan-segmentation/SKILL.md +311 -0
  195. package/skills/homelab-wireguard-vpn/SKILL.md +305 -0
  196. package/skills/hookify-rules/SKILL.md +128 -0
  197. package/skills/inventory-demand-planning/SKILL.md +246 -0
  198. package/skills/investor-materials/SKILL.md +95 -0
  199. package/skills/investor-outreach/SKILL.md +90 -0
  200. package/skills/ios-icon-gen/SKILL.md +157 -0
  201. package/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
  202. package/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  203. package/skills/iterative-retrieval/SKILL.md +209 -0
  204. package/skills/java-coding-standards/SKILL.md +382 -0
  205. package/skills/jira-integration/SKILL.md +292 -0
  206. package/skills/jpa-patterns/SKILL.md +150 -0
  207. package/skills/knowledge-ops/SKILL.md +153 -0
  208. package/skills/kotlin-coroutines-flows/SKILL.md +283 -0
  209. package/skills/kotlin-exposed-patterns/SKILL.md +718 -0
  210. package/skills/kotlin-ktor-patterns/SKILL.md +688 -0
  211. package/skills/kotlin-patterns/SKILL.md +710 -0
  212. package/skills/kotlin-testing/SKILL.md +823 -0
  213. package/skills/laravel-patterns/SKILL.md +414 -0
  214. package/skills/laravel-plugin-discovery/SKILL.md +228 -0
  215. package/skills/laravel-security/SKILL.md +284 -0
  216. package/skills/laravel-tdd/SKILL.md +282 -0
  217. package/skills/laravel-verification/SKILL.md +178 -0
  218. package/skills/lead-intelligence/SKILL.md +320 -0
  219. package/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
  220. package/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
  221. package/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
  222. package/skills/lead-intelligence/agents/signal-scorer.md +60 -0
  223. package/skills/liquid-glass-design/SKILL.md +279 -0
  224. package/skills/llm-trading-agent-security/SKILL.md +146 -0
  225. package/skills/logistics-exception-management/SKILL.md +221 -0
  226. package/skills/make-interfaces-feel-better/SKILL.md +151 -0
  227. package/skills/manim-video/SKILL.md +88 -0
  228. package/skills/manim-video/assets/network_graph_scene.py +52 -0
  229. package/skills/market-research/SKILL.md +74 -0
  230. package/skills/mcp-server-patterns/SKILL.md +68 -0
  231. package/skills/messages-ops/SKILL.md +103 -0
  232. package/skills/mle-workflow/SKILL.md +345 -0
  233. package/skills/motion-advanced/SKILL.md +596 -0
  234. package/skills/motion-foundations/SKILL.md +299 -0
  235. package/skills/motion-patterns/SKILL.md +435 -0
  236. package/skills/motion-ui/SKILL.md +574 -0
  237. package/skills/mysql-patterns/SKILL.md +411 -0
  238. package/skills/nanoclaw-repl/SKILL.md +32 -0
  239. package/skills/nestjs-patterns/SKILL.md +229 -0
  240. package/skills/netmiko-ssh-automation/SKILL.md +173 -0
  241. package/skills/network-bgp-diagnostics/SKILL.md +167 -0
  242. package/skills/network-config-validation/SKILL.md +210 -0
  243. package/skills/network-interface-health/SKILL.md +152 -0
  244. package/skills/nextjs-turbopack/SKILL.md +43 -0
  245. package/skills/nodejs-keccak256/SKILL.md +102 -0
  246. package/skills/nutrient-document-processing/SKILL.md +166 -0
  247. package/skills/nuxt4-patterns/SKILL.md +99 -0
  248. package/skills/openclaw-persona-forge/SKILL.md +288 -0
  249. package/skills/openclaw-persona-forge/gacha.py +224 -0
  250. package/skills/openclaw-persona-forge/gacha.sh +5 -0
  251. package/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
  252. package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
  253. package/skills/openclaw-persona-forge/references/error-handling.md +53 -0
  254. package/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
  255. package/skills/openclaw-persona-forge/references/naming-system.md +39 -0
  256. package/skills/openclaw-persona-forge/references/output-template.md +166 -0
  257. package/skills/opensource-pipeline/SKILL.md +254 -0
  258. package/skills/perl-patterns/SKILL.md +503 -0
  259. package/skills/perl-security/SKILL.md +502 -0
  260. package/skills/perl-testing/SKILL.md +474 -0
  261. package/skills/plan-orchestrate/SKILL.md +253 -0
  262. package/skills/plankton-code-quality/SKILL.md +236 -0
  263. package/skills/postgres-patterns/SKILL.md +146 -0
  264. package/skills/product-capability/SKILL.md +140 -0
  265. package/skills/product-lens/SKILL.md +91 -0
  266. package/skills/production-audit/SKILL.md +206 -0
  267. package/skills/production-scheduling/SKILL.md +237 -0
  268. package/skills/project-flow-ops/SKILL.md +110 -0
  269. package/skills/prompt-optimizer/SKILL.md +398 -0
  270. package/skills/python-patterns/SKILL.md +749 -0
  271. package/skills/python-testing/SKILL.md +815 -0
  272. package/skills/pytorch-patterns/SKILL.md +395 -0
  273. package/skills/quality-nonconformance/SKILL.md +259 -0
  274. package/skills/quarkus-patterns/SKILL.md +721 -0
  275. package/skills/quarkus-security/SKILL.md +466 -0
  276. package/skills/quarkus-tdd/SKILL.md +810 -0
  277. package/skills/quarkus-verification/SKILL.md +478 -0
  278. package/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
  279. package/skills/redis-patterns/SKILL.md +402 -0
  280. package/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
  281. package/skills/remotion-video-creation/SKILL.md +43 -0
  282. package/skills/remotion-video-creation/rules/3d.md +86 -0
  283. package/skills/remotion-video-creation/rules/animations.md +29 -0
  284. package/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
  285. package/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
  286. package/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
  287. package/skills/remotion-video-creation/rules/assets.md +78 -0
  288. package/skills/remotion-video-creation/rules/audio.md +172 -0
  289. package/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
  290. package/skills/remotion-video-creation/rules/can-decode.md +75 -0
  291. package/skills/remotion-video-creation/rules/charts.md +58 -0
  292. package/skills/remotion-video-creation/rules/compositions.md +146 -0
  293. package/skills/remotion-video-creation/rules/display-captions.md +126 -0
  294. package/skills/remotion-video-creation/rules/extract-frames.md +229 -0
  295. package/skills/remotion-video-creation/rules/fonts.md +152 -0
  296. package/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
  297. package/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
  298. package/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
  299. package/skills/remotion-video-creation/rules/gifs.md +138 -0
  300. package/skills/remotion-video-creation/rules/images.md +130 -0
  301. package/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
  302. package/skills/remotion-video-creation/rules/lottie.md +67 -0
  303. package/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
  304. package/skills/remotion-video-creation/rules/measuring-text.md +143 -0
  305. package/skills/remotion-video-creation/rules/sequencing.md +106 -0
  306. package/skills/remotion-video-creation/rules/tailwind.md +11 -0
  307. package/skills/remotion-video-creation/rules/text-animations.md +20 -0
  308. package/skills/remotion-video-creation/rules/timing.md +179 -0
  309. package/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
  310. package/skills/remotion-video-creation/rules/transitions.md +122 -0
  311. package/skills/remotion-video-creation/rules/trimming.md +52 -0
  312. package/skills/remotion-video-creation/rules/videos.md +171 -0
  313. package/skills/repo-scan/SKILL.md +78 -0
  314. package/skills/research-ops/SKILL.md +111 -0
  315. package/skills/returns-reverse-logistics/SKILL.md +239 -0
  316. package/skills/rules-distill/SKILL.md +263 -0
  317. package/skills/rules-distill/scripts/scan-rules.sh +58 -0
  318. package/skills/rules-distill/scripts/scan-skills.sh +129 -0
  319. package/skills/rust-patterns/SKILL.md +498 -0
  320. package/skills/rust-testing/SKILL.md +499 -0
  321. package/skills/safety-guard/SKILL.md +74 -0
  322. package/skills/santa-method/SKILL.md +306 -0
  323. package/skills/scientific-db-pubmed-database/SKILL.md +175 -0
  324. package/skills/scientific-db-uspto-database/SKILL.md +177 -0
  325. package/skills/scientific-pkg-gget/SKILL.md +166 -0
  326. package/skills/scientific-thinking-literature-review/SKILL.md +192 -0
  327. package/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  328. package/skills/search-first/SKILL.md +181 -0
  329. package/skills/security-bounty-hunter/SKILL.md +99 -0
  330. package/skills/security-review/SKILL.md +502 -0
  331. package/skills/security-review/cloud-infrastructure-security.md +361 -0
  332. package/skills/seo/SKILL.md +153 -0
  333. package/skills/skill-comply/SKILL.md +57 -0
  334. package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
  335. package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
  336. package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
  337. package/skills/skill-comply/prompts/classifier.md +24 -0
  338. package/skills/skill-comply/prompts/scenario_generator.md +62 -0
  339. package/skills/skill-comply/prompts/spec_generator.md +42 -0
  340. package/skills/skill-comply/pyproject.toml +15 -0
  341. package/skills/skill-comply/scripts/__init__.py +0 -0
  342. package/skills/skill-comply/scripts/classifier.py +85 -0
  343. package/skills/skill-comply/scripts/grader.py +124 -0
  344. package/skills/skill-comply/scripts/parser.py +107 -0
  345. package/skills/skill-comply/scripts/report.py +170 -0
  346. package/skills/skill-comply/scripts/run.py +127 -0
  347. package/skills/skill-comply/scripts/runner.py +186 -0
  348. package/skills/skill-comply/scripts/scenario_generator.py +70 -0
  349. package/skills/skill-comply/scripts/spec_generator.py +72 -0
  350. package/skills/skill-comply/scripts/utils.py +13 -0
  351. package/skills/skill-comply/tests/test_grader.py +197 -0
  352. package/skills/skill-comply/tests/test_parser.py +90 -0
  353. package/skills/skill-comply/tests/test_runner.py +172 -0
  354. package/skills/skill-scout/SKILL.md +139 -0
  355. package/skills/skill-stocktake/SKILL.md +193 -0
  356. package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  357. package/skills/skill-stocktake/scripts/save-results.sh +56 -0
  358. package/skills/skill-stocktake/scripts/scan.sh +170 -0
  359. package/skills/social-graph-ranker/SKILL.md +153 -0
  360. package/skills/springboot-patterns/SKILL.md +313 -0
  361. package/skills/springboot-security/SKILL.md +271 -0
  362. package/skills/springboot-tdd/SKILL.md +157 -0
  363. package/skills/springboot-verification/SKILL.md +230 -0
  364. package/skills/strategic-compact/SKILL.md +129 -0
  365. package/skills/strategic-compact/suggest-compact.sh +54 -0
  366. package/skills/swift-actor-persistence/SKILL.md +142 -0
  367. package/skills/swift-concurrency-6-2/SKILL.md +216 -0
  368. package/skills/swift-protocol-di-testing/SKILL.md +189 -0
  369. package/skills/swiftui-patterns/SKILL.md +259 -0
  370. package/skills/tdd-workflow/SKILL.md +462 -0
  371. package/skills/team-builder/SKILL.md +166 -0
  372. package/skills/terminal-ops/SKILL.md +108 -0
  373. package/skills/tinystruct-patterns/SKILL.md +130 -0
  374. package/skills/tinystruct-patterns/references/architecture.md +77 -0
  375. package/skills/tinystruct-patterns/references/data-handling.md +35 -0
  376. package/skills/tinystruct-patterns/references/routing.md +57 -0
  377. package/skills/tinystruct-patterns/references/system-usage.md +74 -0
  378. package/skills/tinystruct-patterns/references/testing.md +59 -0
  379. package/skills/token-budget-advisor/SKILL.md +133 -0
  380. package/skills/ui-demo/SKILL.md +464 -0
  381. package/skills/ui-to-vue/SKILL.md +134 -0
  382. package/skills/unified-notifications-ops/SKILL.md +186 -0
  383. package/skills/verification-loop/SKILL.md +125 -0
  384. package/skills/video-editing/SKILL.md +309 -0
  385. package/skills/videodb/SKILL.md +373 -0
  386. package/skills/videodb/reference/api-reference.md +550 -0
  387. package/skills/videodb/reference/capture-reference.md +407 -0
  388. package/skills/videodb/reference/capture.md +101 -0
  389. package/skills/videodb/reference/editor.md +443 -0
  390. package/skills/videodb/reference/generative.md +331 -0
  391. package/skills/videodb/reference/rtstream-reference.md +564 -0
  392. package/skills/videodb/reference/rtstream.md +65 -0
  393. package/skills/videodb/reference/search.md +230 -0
  394. package/skills/videodb/reference/streaming.md +406 -0
  395. package/skills/videodb/reference/use-cases.md +118 -0
  396. package/skills/videodb/scripts/ws_listener.py +282 -0
  397. package/skills/visa-doc-translate/README.md +86 -0
  398. package/skills/visa-doc-translate/SKILL.md +117 -0
  399. package/skills/vite-patterns/SKILL.md +448 -0
  400. package/skills/windows-desktop-e2e/SKILL.md +787 -0
  401. package/skills/workspace-surface-audit/SKILL.md +124 -0
  402. package/skills/x-api/SKILL.md +233 -0
@@ -0,0 +1,275 @@
1
+ ---
2
+ name: hexagonal-architecture
3
+ description: Design, implement, and refactor Ports & Adapters systems with clear domain boundaries, dependency inversion, and testable use-case orchestration across TypeScript, Java, Kotlin, and Go services.
4
+ ---
5
+
6
+ # Hexagonal Architecture
7
+
8
+ Hexagonal architecture (Ports and Adapters) keeps business logic independent from frameworks, transport, and persistence details. The core app depends on abstract ports, and adapters implement those ports at the edges.
9
+
10
+ ## When to Use
11
+
12
+ - Building new features where long-term maintainability and testability matter.
13
+ - Refactoring layered or framework-heavy code where domain logic is mixed with I/O concerns.
14
+ - Supporting multiple interfaces for the same use case (HTTP, CLI, queue workers, cron jobs).
15
+ - Replacing infrastructure (database, external APIs, message bus) without rewriting business rules.
16
+
17
+ Use this skill when the request involves boundaries, domain-centric design, refactoring tightly coupled services, or decoupling application logic from specific libraries.
18
+
19
+ ## Core Concepts
20
+
21
+ - **Domain model**: Business rules and entities/value objects. No framework imports.
22
+ - **Use cases (application layer)**: Orchestrate domain behavior and workflow steps.
23
+ - **Inbound ports**: Contracts describing what the application can do (commands/queries/use-case interfaces).
24
+ - **Outbound ports**: Contracts for dependencies the application needs (repositories, gateways, event publishers, clock, UUID, etc.).
25
+ - **Adapters**: Infrastructure and delivery implementations of ports (HTTP controllers, DB repositories, queue consumers, SDK wrappers).
26
+ - **Composition root**: Single wiring location where concrete adapters are bound to use cases.
27
+
28
+ Outbound port interfaces usually live in the application layer (or in domain only when the abstraction is truly domain-level), while infrastructure adapters implement them.
29
+
30
+ Dependency direction is always inward:
31
+
32
+ - Adapters -> application/domain
33
+ - Application -> port interfaces (inbound/outbound contracts)
34
+ - Domain -> domain-only abstractions (no framework or infrastructure dependencies)
35
+ - Domain -> nothing external
36
+
37
+ ## How It Works
38
+
39
+ ### Step 1: Model a use case boundary
40
+
41
+ Define a single use case with a clear input and output DTO. Keep transport details (Express `req`, GraphQL `context`, job payload wrappers) outside this boundary.
42
+
43
+ ### Step 2: Define outbound ports first
44
+
45
+ Identify every side effect as a port:
46
+
47
+ - persistence (`UserRepositoryPort`)
48
+ - external calls (`BillingGatewayPort`)
49
+ - cross-cutting (`LoggerPort`, `ClockPort`)
50
+
51
+ Ports should model capabilities, not technologies.
52
+
53
+ ### Step 3: Implement the use case with pure orchestration
54
+
55
+ Use case class/function receives ports via constructor/arguments. It validates application-level invariants, coordinates domain rules, and returns plain data structures.
56
+
57
+ ### Step 4: Build adapters at the edge
58
+
59
+ - Inbound adapter converts protocol input to use-case input.
60
+ - Outbound adapter maps app contracts to concrete APIs/ORM/query builders.
61
+ - Mapping stays in adapters, not inside use cases.
62
+
63
+ ### Step 5: Wire everything in a composition root
64
+
65
+ Instantiate adapters, then inject them into use cases. Keep this wiring centralized to avoid hidden service-locator behavior.
66
+
67
+ ### Step 6: Test per boundary
68
+
69
+ - Unit test use cases with fake ports.
70
+ - Integration test adapters with real infra dependencies.
71
+ - E2E test user-facing flows through inbound adapters.
72
+
73
+ ## Architecture Diagram
74
+
75
+ ```mermaid
76
+ flowchart LR
77
+ Client["Client (HTTP/CLI/Worker)"] --> InboundAdapter["Inbound Adapter"]
78
+ InboundAdapter -->|"calls"| UseCase["UseCase (Application Layer)"]
79
+ UseCase -->|"uses"| OutboundPort["OutboundPort (Interface)"]
80
+ OutboundAdapter["Outbound Adapter"] -->|"implements"| OutboundPort
81
+ OutboundAdapter --> ExternalSystem["DB/API/Queue"]
82
+ UseCase --> DomainModel["DomainModel"]
83
+ ```
84
+
85
+ ## Suggested Module Layout
86
+
87
+ Use feature-first organization with explicit boundaries:
88
+
89
+ ```text
90
+ src/
91
+ features/
92
+ orders/
93
+ domain/
94
+ Order.ts
95
+ OrderPolicy.ts
96
+ application/
97
+ ports/
98
+ inbound/
99
+ CreateOrder.ts
100
+ outbound/
101
+ OrderRepositoryPort.ts
102
+ PaymentGatewayPort.ts
103
+ use-cases/
104
+ CreateOrderUseCase.ts
105
+ adapters/
106
+ inbound/
107
+ http/
108
+ createOrderRoute.ts
109
+ outbound/
110
+ postgres/
111
+ PostgresOrderRepository.ts
112
+ stripe/
113
+ StripePaymentGateway.ts
114
+ composition/
115
+ ordersContainer.ts
116
+ ```
117
+
118
+ ## TypeScript Example
119
+
120
+ ### Port definitions
121
+
122
+ ```typescript
123
+ export interface OrderRepositoryPort {
124
+ save(order: Order): Promise<void>;
125
+ findById(orderId: string): Promise<Order | null>;
126
+ }
127
+
128
+ export interface PaymentGatewayPort {
129
+ authorize(input: { orderId: string; amountCents: number }): Promise<{ authorizationId: string }>;
130
+ }
131
+ ```
132
+
133
+ ### Use case
134
+
135
+ ```typescript
136
+ type CreateOrderInput = {
137
+ orderId: string;
138
+ amountCents: number;
139
+ };
140
+
141
+ type CreateOrderOutput = {
142
+ orderId: string;
143
+ authorizationId: string;
144
+ };
145
+
146
+ export class CreateOrderUseCase {
147
+ constructor(
148
+ private readonly orderRepository: OrderRepositoryPort,
149
+ private readonly paymentGateway: PaymentGatewayPort
150
+ ) {}
151
+
152
+ async execute(input: CreateOrderInput): Promise<CreateOrderOutput> {
153
+ const order = Order.create({ id: input.orderId, amountCents: input.amountCents });
154
+
155
+ const auth = await this.paymentGateway.authorize({
156
+ orderId: order.id,
157
+ amountCents: order.amountCents,
158
+ });
159
+
160
+ // markAuthorized returns a new Order instance; it does not mutate in place.
161
+ const authorizedOrder = order.markAuthorized(auth.authorizationId);
162
+ await this.orderRepository.save(authorizedOrder);
163
+
164
+ return {
165
+ orderId: order.id,
166
+ authorizationId: auth.authorizationId,
167
+ };
168
+ }
169
+ }
170
+ ```
171
+
172
+ ### Outbound adapter
173
+
174
+ ```typescript
175
+ export class PostgresOrderRepository implements OrderRepositoryPort {
176
+ constructor(private readonly db: SqlClient) {}
177
+
178
+ async save(order: Order): Promise<void> {
179
+ await this.db.query(
180
+ "insert into orders (id, amount_cents, status, authorization_id) values ($1, $2, $3, $4)",
181
+ [order.id, order.amountCents, order.status, order.authorizationId]
182
+ );
183
+ }
184
+
185
+ async findById(orderId: string): Promise<Order | null> {
186
+ const row = await this.db.oneOrNone("select * from orders where id = $1", [orderId]);
187
+ return row ? Order.rehydrate(row) : null;
188
+ }
189
+ }
190
+ ```
191
+
192
+ ### Composition root
193
+
194
+ ```typescript
195
+ export const buildCreateOrderUseCase = (deps: { db: SqlClient; stripe: StripeClient }) => {
196
+ const orderRepository = new PostgresOrderRepository(deps.db);
197
+ const paymentGateway = new StripePaymentGateway(deps.stripe);
198
+
199
+ return new CreateOrderUseCase(orderRepository, paymentGateway);
200
+ };
201
+ ```
202
+
203
+ ## Multi-Language Mapping
204
+
205
+ Use the same boundary rules across ecosystems; only syntax and wiring style change.
206
+
207
+ - **TypeScript/JavaScript**
208
+ - Ports: `application/ports/*` as interfaces/types.
209
+ - Use cases: classes/functions with constructor/argument injection.
210
+ - Adapters: `adapters/inbound/*`, `adapters/outbound/*`.
211
+ - Composition: explicit factory/container module (no hidden globals).
212
+ - **Java**
213
+ - Packages: `domain`, `application.port.in`, `application.port.out`, `application.usecase`, `adapter.in`, `adapter.out`.
214
+ - Ports: interfaces in `application.port.*`.
215
+ - Use cases: plain classes (Spring `@Service` is optional, not required).
216
+ - Composition: Spring config or manual wiring class; keep wiring out of domain/use-case classes.
217
+ - **Kotlin**
218
+ - Modules/packages mirror the Java split (`domain`, `application.port`, `application.usecase`, `adapter`).
219
+ - Ports: Kotlin interfaces.
220
+ - Use cases: classes with constructor injection (Koin/Dagger/Spring/manual).
221
+ - Composition: module definitions or dedicated composition functions; avoid service locator patterns.
222
+ - **Go**
223
+ - Packages: `internal/<feature>/domain`, `application`, `ports`, `adapters/inbound`, `adapters/outbound`.
224
+ - Ports: small interfaces owned by the consuming application package.
225
+ - Use cases: structs with interface fields plus explicit `New...` constructors.
226
+ - Composition: wire in `cmd/<app>/main.go` (or dedicated wiring package), keep constructors explicit.
227
+
228
+ ## Anti-Patterns to Avoid
229
+
230
+ - Domain entities importing ORM models, web framework types, or SDK clients.
231
+ - Use cases reading directly from `req`, `res`, or queue metadata.
232
+ - Returning database rows directly from use cases without domain/application mapping.
233
+ - Letting adapters call each other directly instead of flowing through use-case ports.
234
+ - Spreading dependency wiring across many files with hidden global singletons.
235
+
236
+ ## Migration Playbook
237
+
238
+ 1. Pick one vertical slice (single endpoint/job) with frequent change pain.
239
+ 2. Extract a use-case boundary with explicit input/output types.
240
+ 3. Introduce outbound ports around existing infrastructure calls.
241
+ 4. Move orchestration logic from controllers/services into the use case.
242
+ 5. Keep old adapters, but make them delegate to the new use case.
243
+ 6. Add tests around the new boundary (unit + adapter integration).
244
+ 7. Repeat slice-by-slice; avoid full rewrites.
245
+
246
+ ### Refactoring Existing Systems
247
+
248
+ - **Strangler approach**: keep current endpoints, route one use case at a time through new ports/adapters.
249
+ - **No big-bang rewrites**: migrate per feature slice and preserve behavior with characterization tests.
250
+ - **Facade first**: wrap legacy services behind outbound ports before replacing internals.
251
+ - **Composition freeze**: centralize wiring early so new dependencies do not leak into domain/use-case layers.
252
+ - **Slice selection rule**: prioritize high-churn, low-blast-radius flows first.
253
+ - **Rollback path**: keep a reversible toggle or route switch per migrated slice until production behavior is verified.
254
+
255
+ ## Testing Guidance (Same Hexagonal Boundaries)
256
+
257
+ - **Domain tests**: test entities/value objects as pure business rules (no mocks, no framework setup).
258
+ - **Use-case unit tests**: test orchestration with fakes/stubs for outbound ports; assert business outcomes and port interactions.
259
+ - **Outbound adapter contract tests**: define shared contract suites at port level and run them against each adapter implementation.
260
+ - **Inbound adapter tests**: verify protocol mapping (HTTP/CLI/queue payload to use-case input and output/error mapping back to protocol).
261
+ - **Adapter integration tests**: run against real infrastructure (DB/API/queue) for serialization, schema/query behavior, retries, and timeouts.
262
+ - **End-to-end tests**: cover critical user journeys through inbound adapter -> use case -> outbound adapter.
263
+ - **Refactor safety**: add characterization tests before extraction; keep them until new boundary behavior is stable and equivalent.
264
+
265
+ ## Best Practices Checklist
266
+
267
+ - Domain and use-case layers import only internal types and ports.
268
+ - Every external dependency is represented by an outbound port.
269
+ - Validation occurs at boundaries (inbound adapter + use-case invariants).
270
+ - Use immutable transformations (return new values/entities instead of mutating shared state).
271
+ - Errors are translated across boundaries (infra errors -> application/domain errors).
272
+ - Composition root is explicit and easy to audit.
273
+ - Use cases are testable with simple in-memory fakes for ports.
274
+ - Refactoring starts from one vertical slice with behavior-preserving tests.
275
+ - Language/framework specifics stay in adapters, never in domain rules.
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: hipaa-compliance
3
+ description: HIPAA-specific entrypoint for healthcare privacy and security work. Use when a task is explicitly framed around HIPAA, PHI handling, covered entities, BAAs, breach posture, or US healthcare compliance requirements.
4
+ origin: the toolset direct-port adaptation
5
+ version: "1.0.0"
6
+ ---
7
+
8
+ # HIPAA Compliance
9
+
10
+ Use this as the HIPAA-specific entrypoint when a task is clearly about US healthcare compliance. This skill intentionally stays thin and canonical:
11
+
12
+ - `healthcare-phi-compliance` remains the primary implementation skill for PHI/PII handling, data classification, audit logging, encryption, and leak prevention.
13
+ - `healthcare-reviewer` remains the specialized reviewer when code, architecture, or product behavior needs a healthcare-aware second pass.
14
+ - `security-review` still applies for general auth, input-handling, secrets, API, and deployment hardening.
15
+
16
+ ## When to Use
17
+
18
+ - The request explicitly mentions HIPAA, PHI, covered entities, business associates, or BAAs
19
+ - Building or reviewing US healthcare software that stores, processes, exports, or transmits PHI
20
+ - Assessing whether logging, analytics, LLM prompts, storage, or support workflows create HIPAA exposure
21
+ - Designing patient-facing or clinician-facing systems where minimum necessary access and auditability matter
22
+
23
+ ## How It Works
24
+
25
+ Treat HIPAA as an overlay on top of the broader healthcare privacy skill:
26
+
27
+ 1. Start with `healthcare-phi-compliance` for the concrete implementation rules.
28
+ 2. Apply HIPAA-specific decision gates:
29
+ - Is this data PHI?
30
+ - Is this actor a covered entity or business associate?
31
+ - Does a vendor or model provider require a BAA before touching the data?
32
+ - Is access limited to the minimum necessary scope?
33
+ - Are read/write/export events auditable?
34
+ 3. Escalate to `healthcare-reviewer` if the task affects patient safety, clinical workflows, or regulated production architecture.
35
+
36
+ ## HIPAA-Specific Guardrails
37
+
38
+ - Never place PHI in logs, analytics events, crash reports, prompts, or client-visible error strings.
39
+ - Never expose PHI in URLs, browser storage, screenshots, or copied example payloads.
40
+ - Require authenticated access, scoped authorization, and audit trails for PHI reads and writes.
41
+ - Treat third-party SaaS, observability, support tooling, and LLM providers as blocked-by-default until BAA status and data boundaries are clear.
42
+ - Follow minimum necessary access: the right user should only see the smallest PHI slice needed for the task.
43
+ - Prefer opaque internal IDs over names, MRNs, phone numbers, addresses, or other identifiers.
44
+
45
+ ## Examples
46
+
47
+ ### Example 1: Product request framed as HIPAA
48
+
49
+ User request:
50
+
51
+ > Add AI-generated visit summaries to our clinician dashboard. We serve US clinics and need to stay HIPAA compliant.
52
+
53
+ Response pattern:
54
+
55
+ - Activate `hipaa-compliance`
56
+ - Use `healthcare-phi-compliance` to review PHI movement, logging, storage, and prompt boundaries
57
+ - Verify whether the summarization provider is covered by a BAA before any PHI is sent
58
+ - Escalate to `healthcare-reviewer` if the summaries influence clinical decisions
59
+
60
+ ### Example 2: Vendor/tooling decision
61
+
62
+ User request:
63
+
64
+ > Can we send support transcripts and patient messages into our analytics stack?
65
+
66
+ Response pattern:
67
+
68
+ - Assume those messages may contain PHI
69
+ - Block the design unless the analytics vendor is approved for HIPAA-bound workloads and the data path is minimized
70
+ - Require redaction or a non-PHI event model when possible
71
+
72
+ ## Related Skills
73
+
74
+ - `healthcare-phi-compliance`
75
+ - `healthcare-reviewer`
76
+ - `healthcare-emr-patterns`
77
+ - `healthcare-eval-harness`
78
+ - `security-review`
@@ -0,0 +1,169 @@
1
+ ---
2
+ name: homelab-network-readiness
3
+ description: Readiness checklist for homelab VLAN segmentation, local DNS filtering, and WireGuard-style remote access before changing router, firewall, DHCP, or VPN configuration.
4
+ origin: community
5
+ ---
6
+
7
+ # Homelab Network Readiness
8
+
9
+ Use this skill before changing a home or small-lab network that mixes VLANs,
10
+ Pi-hole or another local DNS resolver, firewall rules, and remote VPN access.
11
+
12
+ This is a planning and review skill. Do not turn it into copy-paste router,
13
+ firewall, or VPN configuration unless the target platform, current topology,
14
+ rollback path, console access, and maintenance window are all known.
15
+
16
+ ## When to Use
17
+
18
+ - Preparing to split a flat network into trusted, IoT, guest, server, or
19
+ management VLANs.
20
+ - Moving DHCP clients to Pi-hole, AdGuard Home, Unbound, or another local DNS
21
+ resolver.
22
+ - Adding WireGuard, Tailscale, ZeroTier, OpenVPN, or router-native VPN access.
23
+ - Reviewing whether a homelab change can lock the operator out of the gateway,
24
+ switch, access point, DNS server, or VPN server.
25
+ - Turning an informal home-network idea into a staged migration plan with
26
+ validation evidence.
27
+
28
+ ## Safety Rules
29
+
30
+ - Keep the first answer read-only: inventory, risks, staged plan, validation,
31
+ and rollback.
32
+ - Do not expose gateway admin panels, DNS resolvers, SSH, NAS consoles, or VPN
33
+ management UIs directly to the public internet.
34
+ - Do not provide firewall, NAT, VLAN, DHCP, or VPN commands without a confirmed
35
+ platform and a rollback procedure.
36
+ - Require out-of-band or same-room console access before changing management
37
+ VLANs, trunk ports, firewall default policies, or DHCP/DNS settings.
38
+ - Keep a working path back to the internet before pointing the whole network at
39
+ a new DNS resolver or VPN route.
40
+ - Treat IoT, guest, camera, and lab-server networks as different trust zones
41
+ until the operator explicitly chooses otherwise.
42
+
43
+ ## Required Inventory
44
+
45
+ Collect this before giving implementation steps:
46
+
47
+ | Area | Questions |
48
+ | --- | --- |
49
+ | Internet edge | What is the modem or ONT? Is the ISP router bridged or still routing? |
50
+ | Gateway | What routes, firewalls, handles DHCP, and terminates VPNs? |
51
+ | Switching | Which switch ports are uplinks, access ports, trunks, or unmanaged? |
52
+ | Wi-Fi | Which SSIDs map to which networks, and are APs wired or mesh? |
53
+ | Addressing | What subnets exist today, and which ranges conflict with VPN sites? |
54
+ | DNS/DHCP | Which service currently hands out leases and resolver addresses? |
55
+ | Management | How will the operator reach the gateway, switch, and AP after changes? |
56
+ | Recovery | What can be reverted locally if DNS, DHCP, VLANs, or VPN routes break? |
57
+
58
+ ## VLAN And Trust-Zone Plan
59
+
60
+ Start with intent rather than vendor syntax.
61
+
62
+ | Zone | Typical contents | Default policy |
63
+ | --- | --- | --- |
64
+ | Trusted | Laptops, phones, admin workstations | Can reach shared services and management only when needed |
65
+ | Servers | NAS, Home Assistant, lab hosts, DNS resolver | Accepts narrow inbound flows from trusted clients |
66
+ | IoT | TVs, smart plugs, cameras, speakers | Internet access plus explicit exceptions only |
67
+ | Guest | Visitor devices | Internet-only, no LAN reachability |
68
+ | Management | Gateway, switches, APs, controllers | Reachable only from trusted admin devices |
69
+ | VPN | Remote clients | Same or narrower access than trusted clients |
70
+
71
+ Before recommending VLAN IDs or subnets, confirm:
72
+
73
+ 1. The gateway supports inter-VLAN routing and firewall rules.
74
+ 2. The switch supports the required tagged and untagged port behavior.
75
+ 3. The APs can map SSIDs to VLANs.
76
+ 4. The operator knows which port they are connected through during the change.
77
+ 5. The management network remains reachable after trunk and SSID changes.
78
+
79
+ ## DNS Filtering Readiness
80
+
81
+ Pi-hole or another local resolver should be introduced as a dependency, not as a
82
+ single point of failure.
83
+
84
+ 1. Give the resolver a reserved address before using it in DHCP options.
85
+ 2. Confirm it can resolve public DNS and local `home.arpa` names.
86
+ 3. Keep the gateway or a second resolver available as a temporary fallback.
87
+ 4. Test one client or one VLAN before changing every DHCP scope.
88
+ 5. Document which networks may bypass filtering and why.
89
+ 6. Check that blocking rules do not break captive portals, work VPNs, firmware
90
+ updates, or medical/security devices.
91
+
92
+ Useful validation evidence:
93
+
94
+ ```text
95
+ Client gets expected DHCP lease
96
+ Client receives expected DNS resolver
97
+ Public DNS lookup succeeds
98
+ Local home.arpa lookup succeeds
99
+ Blocked test domain is blocked only where intended
100
+ Gateway and DNS admin interfaces are not reachable from guest or IoT networks
101
+ ```
102
+
103
+ ## Remote Access Readiness
104
+
105
+ For WireGuard-style access, decide what the VPN is allowed to reach before
106
+ generating keys or opening ports.
107
+
108
+ | Mode | Use when | Risk notes |
109
+ | --- | --- | --- |
110
+ | Split tunnel to one subnet | Remote admin for NAS or lab hosts | Keep route list narrow |
111
+ | Split tunnel to trusted services | Access selected apps by IP or DNS | Requires precise firewall rules |
112
+ | Full tunnel | Untrusted networks or travel | More bandwidth and DNS responsibility |
113
+ | Overlay VPN | Simpler remote access with identity controls | Still needs ACL review |
114
+
115
+ Do not recommend port forwarding until the operator confirms:
116
+
117
+ - The VPN endpoint is patched and actively maintained.
118
+ - The forwarded port goes only to the VPN service, not an admin UI.
119
+ - Dynamic DNS, public IP behavior, and ISP CGNAT status are understood.
120
+ - Peer keys can be revoked without rebuilding the whole network.
121
+ - Logs or connection status can verify who connected and when.
122
+
123
+ ## Change Sequence
124
+
125
+ Prefer small, reversible changes:
126
+
127
+ 1. Snapshot the current topology, IP plan, DHCP settings, DNS settings, and
128
+ firewall rules.
129
+ 2. Reserve infrastructure addresses for gateway, DNS, controller, APs, NAS, and
130
+ VPN endpoint.
131
+ 3. Create the new zone or VLAN without moving critical devices.
132
+ 4. Move one test client and validate DHCP, DNS, routing, internet, and block
133
+ behavior.
134
+ 5. Add narrow firewall exceptions for required flows.
135
+ 6. Move one low-risk device group.
136
+ 7. Add VPN access with the narrowest route and firewall policy that satisfies
137
+ the use case.
138
+ 8. Document final state, known exceptions, and rollback commands or UI steps.
139
+
140
+ ## Review Checklist
141
+
142
+ - Each network has a reason to exist and a clear trust boundary.
143
+ - No management interface is reachable from guest, IoT, or the public internet.
144
+ - DNS failure does not take down the operator's ability to recover locally.
145
+ - DHCP scope changes were tested on one client before broad rollout.
146
+ - VPN clients receive only the routes and DNS settings they need.
147
+ - Firewall rules are default-deny between zones, with named exceptions.
148
+ - The operator can still reach gateway, switch, AP, DNS, and VPN admin surfaces.
149
+ - Rollback is documented in the same vocabulary as the chosen platform UI or
150
+ CLI.
151
+
152
+ ## Anti-Patterns
153
+
154
+ - Segmenting networks before knowing which switch ports and SSIDs carry which
155
+ VLANs.
156
+ - Moving the admin workstation off the only reachable management network.
157
+ - Pointing all DHCP scopes at a Pi-hole before testing fallback DNS.
158
+ - Publishing NAS, DNS, router, or hypervisor management directly to the
159
+ internet.
160
+ - Treating VPN access as equivalent to full trusted-LAN access.
161
+ - Adding allow-all firewall rules temporarily and forgetting to remove them.
162
+ - Copying commands from another vendor or firmware version without checking the
163
+ exact platform syntax.
164
+
165
+ ## See Also
166
+
167
+ - Skill: `homelab-network-setup`
168
+ - Skill: `network-config-validation`
169
+ - Skill: `network-interface-health`
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: homelab-network-setup
3
+ description: Practical home and homelab network planning for gateways, switches, access points, IP ranges, DHCP reservations, DNS, cabling, and common beginner mistakes.
4
+ origin: community
5
+ ---
6
+
7
+ # Homelab Network Setup
8
+
9
+ Use this skill to design a home or small-lab network that can grow without
10
+ needing a full rebuild.
11
+
12
+ ## When to Use
13
+
14
+ - Planning a new home network or redesigning an ISP-router-only setup.
15
+ - Choosing gateway, switch, and access point roles.
16
+ - Designing IP ranges, DHCP scopes, static reservations, and DNS.
17
+ - Preparing for future VLANs, Pi-hole, NAS, lab servers, or VPN access.
18
+ - Troubleshooting a new network that has double NAT, unstable Wi-Fi, or changing
19
+ server addresses.
20
+
21
+ ## How It Works
22
+
23
+ Start by separating device roles:
24
+
25
+ ```text
26
+ Internet
27
+ |
28
+ Modem or ONT
29
+ |
30
+ Gateway or router NAT, firewall, DHCP, DNS, inter-VLAN routing
31
+ |
32
+ Managed switch wired clients, AP uplinks, optional VLAN trunks
33
+ |
34
+ Access points Wi-Fi only; ideally wired backhaul
35
+ Servers and NAS stable addresses, DNS names, monitoring
36
+ Clients and IoT DHCP pools, isolated later if VLANs are available
37
+ ```
38
+
39
+ Pick a gateway that matches the operator, not just the feature checklist:
40
+
41
+ | Option | Best fit | Notes |
42
+ | --- | --- | --- |
43
+ | ISP router | Basic internet only | Limited control and often poor VLAN support |
44
+ | UniFi gateway | Managed home network | Good UI, ecosystem lock-in |
45
+ | OPNsense or pfSense | Flexible homelab | Strong VLAN, firewall, VPN, and DNS control |
46
+ | MikroTik | Advanced network users | Powerful, but easy to misconfigure |
47
+ | Linux router | Tinkerers | Document rollback before using as primary gateway |
48
+
49
+ ## IP Plan
50
+
51
+ Avoid the most common default, `192.168.1.0/24`, when you expect to use VPNs.
52
+ It often conflicts with hotels, offices, and ISP routers.
53
+
54
+ ```text
55
+ Example small homelab plan:
56
+
57
+ 192.168.10.0/24 trusted clients
58
+ 192.168.20.0/24 IoT and media devices
59
+ 192.168.30.0/24 servers and NAS
60
+ 192.168.40.0/24 guest Wi-Fi
61
+ 192.168.99.0/24 network management
62
+
63
+ Gateway convention: .1
64
+ Infrastructure reservations: .2 through .49
65
+ Dynamic DHCP pool: .50 through .240
66
+ Spare room: .241 through .254
67
+ ```
68
+
69
+ Use `home.arpa` for local names. It is reserved for home networks and avoids the
70
+ leakage/conflict problems of ad hoc names like `home.lan`.
71
+
72
+ ```text
73
+ nas.home.arpa
74
+ pihole.home.arpa
75
+ gateway.home.arpa
76
+ switch-01.home.arpa
77
+ ```
78
+
79
+ ## DHCP And DNS
80
+
81
+ - Use DHCP reservations for anything you SSH into, bookmark, monitor, or expose
82
+ as a service.
83
+ - Hand out the gateway as DNS until a local resolver is intentionally deployed.
84
+ - If using Pi-hole or another DNS filter, give it a reservation first, then point
85
+ DHCP DNS options at that address.
86
+ - Keep a small static/reserved range per subnet so replacements do not collide
87
+ with dynamic leases.
88
+
89
+ ## Cabling And Wi-Fi
90
+
91
+ - Prefer wired AP backhaul over mesh when you can run Ethernet.
92
+ - Use a PoE switch for APs and cameras if the budget allows it.
93
+ - Label both ends of each cable and keep a simple port map.
94
+ - Put the gateway, switch, DNS server, and NAS on UPS power if outages are common.
95
+
96
+ ## Examples
97
+
98
+ ### Beginner Upgrade
99
+
100
+ Goal: Keep the ISP router but stabilize a small lab.
101
+
102
+ 1. Set DHCP reservations for NAS, Pi, and any SSH hosts.
103
+ 2. Move local names to `home.arpa`.
104
+ 3. Disable duplicate DHCP servers on secondary routers or APs.
105
+ 4. Wire the main AP instead of relying on wireless backhaul.
106
+
107
+ ### VLAN-Ready Plan
108
+
109
+ Goal: Prepare for future segmentation without enabling it immediately.
110
+
111
+ 1. Choose non-overlapping /24 ranges for trusted, IoT, servers, guest, and
112
+ management.
113
+ 2. Reserve .1 for the gateway and .2-.49 for infrastructure on every subnet.
114
+ 3. Buy a gateway and switch that support VLANs and inter-VLAN firewall rules.
115
+ 4. Document which SSIDs and switch ports will eventually map to each network.
116
+
117
+ ## Anti-Patterns
118
+
119
+ - Double NAT without a reason or documentation.
120
+ - Using `192.168.1.0/24` when VPN access is planned.
121
+ - Dynamic addresses for NAS, Pi-hole, Home Assistant, or other service hosts.
122
+ - Consumer routers repurposed as APs while their DHCP servers are still enabled.
123
+ - Flat networks with cameras, smart plugs, laptops, and servers all sharing the
124
+ same trust boundary.
125
+
126
+ ## See Also
127
+
128
+ - Skill: `network-interface-health`
129
+ - Skill: `network-config-validation`