@baselane/packs 0.1.5 → 0.1.6

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 (445) hide show
  1. package/package.json +2 -2
  2. package/packs/full-harness/pack.json +3093 -0
  3. package/packs/full-harness/rendered/.claude/agents/a11y-architect.md +138 -0
  4. package/packs/full-harness/rendered/.claude/agents/agent-evaluator.md +206 -0
  5. package/packs/full-harness/rendered/.claude/agents/architect.md +209 -0
  6. package/packs/full-harness/rendered/.claude/agents/build-error-resolver.md +114 -0
  7. package/packs/full-harness/rendered/.claude/agents/chief-of-staff.md +149 -0
  8. package/packs/full-harness/rendered/.claude/agents/code-architect.md +71 -0
  9. package/packs/full-harness/rendered/.claude/agents/code-explorer.md +69 -0
  10. package/packs/full-harness/rendered/.claude/agents/code-reviewer.md +312 -0
  11. package/packs/full-harness/rendered/.claude/agents/code-simplifier.md +47 -0
  12. package/packs/full-harness/rendered/.claude/agents/comment-analyzer.md +45 -0
  13. package/packs/full-harness/rendered/.claude/agents/conversation-analyzer.md +52 -0
  14. package/packs/full-harness/rendered/.claude/agents/cpp-build-resolver.md +90 -0
  15. package/packs/full-harness/rendered/.claude/agents/cpp-reviewer.md +64 -0
  16. package/packs/full-harness/rendered/.claude/agents/csharp-reviewer.md +93 -0
  17. package/packs/full-harness/rendered/.claude/agents/dart-build-resolver.md +201 -0
  18. package/packs/full-harness/rendered/.claude/agents/database-reviewer.md +91 -0
  19. package/packs/full-harness/rendered/.claude/agents/django-build-resolver.md +243 -0
  20. package/packs/full-harness/rendered/.claude/agents/django-reviewer.md +149 -0
  21. package/packs/full-harness/rendered/.claude/agents/doc-updater.md +107 -0
  22. package/packs/full-harness/rendered/.claude/agents/docs-lookup.md +64 -0
  23. package/packs/full-harness/rendered/.claude/agents/e2e-runner.md +107 -0
  24. package/packs/full-harness/rendered/.claude/agents/fastapi-reviewer.md +68 -0
  25. package/packs/full-harness/rendered/.claude/agents/flutter-reviewer.md +241 -0
  26. package/packs/full-harness/rendered/.claude/agents/fsharp-reviewer.md +92 -0
  27. package/packs/full-harness/rendered/.claude/agents/gan-evaluator.md +206 -0
  28. package/packs/full-harness/rendered/.claude/agents/gan-generator.md +128 -0
  29. package/packs/full-harness/rendered/.claude/agents/gan-planner.md +96 -0
  30. package/packs/full-harness/rendered/.claude/agents/go-build-resolver.md +94 -0
  31. package/packs/full-harness/rendered/.claude/agents/go-reviewer.md +68 -0
  32. package/packs/full-harness/rendered/.claude/agents/harmonyos-app-resolver.md +173 -0
  33. package/packs/full-harness/rendered/.claude/agents/harness-optimizer.md +32 -0
  34. package/packs/full-harness/rendered/.claude/agents/healthcare-reviewer.md +83 -0
  35. package/packs/full-harness/rendered/.claude/agents/homelab-architect.md +94 -0
  36. package/packs/full-harness/rendered/.claude/agents/java-build-resolver.md +266 -0
  37. package/packs/full-harness/rendered/.claude/agents/java-reviewer.md +179 -0
  38. package/packs/full-harness/rendered/.claude/agents/kotlin-build-resolver.md +118 -0
  39. package/packs/full-harness/rendered/.claude/agents/kotlin-reviewer.md +157 -0
  40. package/packs/full-harness/rendered/.claude/agents/loop-operator.md +33 -0
  41. package/packs/full-harness/rendered/.claude/agents/marketing-agent.md +141 -0
  42. package/packs/full-harness/rendered/.claude/agents/mle-reviewer.md +153 -0
  43. package/packs/full-harness/rendered/.claude/agents/network-architect.md +92 -0
  44. package/packs/full-harness/rendered/.claude/agents/network-config-reviewer.md +94 -0
  45. package/packs/full-harness/rendered/.claude/agents/network-troubleshooter.md +116 -0
  46. package/packs/full-harness/rendered/.claude/agents/opensource-forker.md +198 -0
  47. package/packs/full-harness/rendered/.claude/agents/opensource-packager.md +249 -0
  48. package/packs/full-harness/rendered/.claude/agents/opensource-sanitizer.md +188 -0
  49. package/packs/full-harness/rendered/.claude/agents/performance-optimizer.md +446 -0
  50. package/packs/full-harness/rendered/.claude/agents/php-reviewer.md +92 -0
  51. package/packs/full-harness/rendered/.claude/agents/planner.md +210 -0
  52. package/packs/full-harness/rendered/.claude/agents/pr-test-analyzer.md +45 -0
  53. package/packs/full-harness/rendered/.claude/agents/python-reviewer.md +90 -0
  54. package/packs/full-harness/rendered/.claude/agents/pytorch-build-resolver.md +120 -0
  55. package/packs/full-harness/rendered/.claude/agents/react-build-resolver.md +206 -0
  56. package/packs/full-harness/rendered/.claude/agents/react-reviewer.md +156 -0
  57. package/packs/full-harness/rendered/.claude/agents/refactor-cleaner.md +85 -0
  58. package/packs/full-harness/rendered/.claude/agents/rust-build-resolver.md +148 -0
  59. package/packs/full-harness/rendered/.claude/agents/rust-reviewer.md +85 -0
  60. package/packs/full-harness/rendered/.claude/agents/security-reviewer.md +108 -0
  61. package/packs/full-harness/rendered/.claude/agents/seo-specialist.md +54 -0
  62. package/packs/full-harness/rendered/.claude/agents/silent-failure-hunter.md +50 -0
  63. package/packs/full-harness/rendered/.claude/agents/spec-miner.md +207 -0
  64. package/packs/full-harness/rendered/.claude/agents/swift-build-resolver.md +161 -0
  65. package/packs/full-harness/rendered/.claude/agents/swift-reviewer.md +98 -0
  66. package/packs/full-harness/rendered/.claude/agents/tdd-guide.md +89 -0
  67. package/packs/full-harness/rendered/.claude/agents/type-design-analyzer.md +41 -0
  68. package/packs/full-harness/rendered/.claude/agents/typescript-reviewer.md +96 -0
  69. package/packs/full-harness/rendered/.claude/agents/vue-reviewer.md +195 -0
  70. package/packs/full-harness/rendered/.claude/commands/aside.md +6 -0
  71. package/packs/full-harness/rendered/.claude/commands/auto-update.md +6 -0
  72. package/packs/full-harness/rendered/.claude/commands/build-fix.md +6 -0
  73. package/packs/full-harness/rendered/.claude/commands/checkpoint.md +6 -0
  74. package/packs/full-harness/rendered/.claude/commands/code-review.md +6 -0
  75. package/packs/full-harness/rendered/.claude/commands/cost-report.md +6 -0
  76. package/packs/full-harness/rendered/.claude/commands/cpp-build.md +6 -0
  77. package/packs/full-harness/rendered/.claude/commands/cpp-review.md +6 -0
  78. package/packs/full-harness/rendered/.claude/commands/cpp-test.md +6 -0
  79. package/packs/full-harness/rendered/.claude/commands/ecc-guide.md +6 -0
  80. package/packs/full-harness/rendered/.claude/commands/epic-claim.md +6 -0
  81. package/packs/full-harness/rendered/.claude/commands/epic-decompose.md +6 -0
  82. package/packs/full-harness/rendered/.claude/commands/epic-publish.md +6 -0
  83. package/packs/full-harness/rendered/.claude/commands/epic-review.md +6 -0
  84. package/packs/full-harness/rendered/.claude/commands/epic-sync.md +6 -0
  85. package/packs/full-harness/rendered/.claude/commands/epic-unblock.md +6 -0
  86. package/packs/full-harness/rendered/.claude/commands/epic-validate.md +6 -0
  87. package/packs/full-harness/rendered/.claude/commands/evolve.md +6 -0
  88. package/packs/full-harness/rendered/.claude/commands/fastapi-review.md +6 -0
  89. package/packs/full-harness/rendered/.claude/commands/feature-dev.md +6 -0
  90. package/packs/full-harness/rendered/.claude/commands/flutter-build.md +6 -0
  91. package/packs/full-harness/rendered/.claude/commands/flutter-review.md +6 -0
  92. package/packs/full-harness/rendered/.claude/commands/flutter-test.md +6 -0
  93. package/packs/full-harness/rendered/.claude/commands/gan-build.md +6 -0
  94. package/packs/full-harness/rendered/.claude/commands/gan-design.md +6 -0
  95. package/packs/full-harness/rendered/.claude/commands/go-build.md +6 -0
  96. package/packs/full-harness/rendered/.claude/commands/go-review.md +6 -0
  97. package/packs/full-harness/rendered/.claude/commands/go-test.md +6 -0
  98. package/packs/full-harness/rendered/.claude/commands/gradle-build.md +6 -0
  99. package/packs/full-harness/rendered/.claude/commands/harness-audit.md +6 -0
  100. package/packs/full-harness/rendered/.claude/commands/hookify-configure.md +6 -0
  101. package/packs/full-harness/rendered/.claude/commands/hookify-help.md +6 -0
  102. package/packs/full-harness/rendered/.claude/commands/hookify-list.md +6 -0
  103. package/packs/full-harness/rendered/.claude/commands/hookify.md +6 -0
  104. package/packs/full-harness/rendered/.claude/commands/instinct-export.md +6 -0
  105. package/packs/full-harness/rendered/.claude/commands/instinct-import.md +6 -0
  106. package/packs/full-harness/rendered/.claude/commands/instinct-status.md +6 -0
  107. package/packs/full-harness/rendered/.claude/commands/jira.md +6 -0
  108. package/packs/full-harness/rendered/.claude/commands/kotlin-build.md +6 -0
  109. package/packs/full-harness/rendered/.claude/commands/kotlin-review.md +6 -0
  110. package/packs/full-harness/rendered/.claude/commands/kotlin-test.md +6 -0
  111. package/packs/full-harness/rendered/.claude/commands/learn-eval.md +6 -0
  112. package/packs/full-harness/rendered/.claude/commands/learn.md +6 -0
  113. package/packs/full-harness/rendered/.claude/commands/loop-start.md +6 -0
  114. package/packs/full-harness/rendered/.claude/commands/loop-status.md +6 -0
  115. package/packs/full-harness/rendered/.claude/commands/marketing-campaign.md +6 -0
  116. package/packs/full-harness/rendered/.claude/commands/model-route.md +6 -0
  117. package/packs/full-harness/rendered/.claude/commands/multi-backend.md +6 -0
  118. package/packs/full-harness/rendered/.claude/commands/multi-execute.md +6 -0
  119. package/packs/full-harness/rendered/.claude/commands/multi-frontend.md +6 -0
  120. package/packs/full-harness/rendered/.claude/commands/multi-plan.md +6 -0
  121. package/packs/full-harness/rendered/.claude/commands/multi-workflow.md +6 -0
  122. package/packs/full-harness/rendered/.claude/commands/orch-add-feature.md +6 -0
  123. package/packs/full-harness/rendered/.claude/commands/orch-build-mvp.md +6 -0
  124. package/packs/full-harness/rendered/.claude/commands/orch-change-feature.md +6 -0
  125. package/packs/full-harness/rendered/.claude/commands/orch-fix-defect.md +6 -0
  126. package/packs/full-harness/rendered/.claude/commands/orch-refine-code.md +6 -0
  127. package/packs/full-harness/rendered/.claude/commands/orch-review.md +6 -0
  128. package/packs/full-harness/rendered/.claude/commands/plan-canvas.md +6 -0
  129. package/packs/full-harness/rendered/.claude/commands/plan-prd.md +6 -0
  130. package/packs/full-harness/rendered/.claude/commands/plan.md +6 -0
  131. package/packs/full-harness/rendered/.claude/commands/pm2.md +6 -0
  132. package/packs/full-harness/rendered/.claude/commands/pr.md +6 -0
  133. package/packs/full-harness/rendered/.claude/commands/project-init.md +6 -0
  134. package/packs/full-harness/rendered/.claude/commands/projects.md +6 -0
  135. package/packs/full-harness/rendered/.claude/commands/promote.md +6 -0
  136. package/packs/full-harness/rendered/.claude/commands/prp-commit.md +6 -0
  137. package/packs/full-harness/rendered/.claude/commands/prp-implement.md +6 -0
  138. package/packs/full-harness/rendered/.claude/commands/prp-plan.md +6 -0
  139. package/packs/full-harness/rendered/.claude/commands/prp-pr.md +6 -0
  140. package/packs/full-harness/rendered/.claude/commands/prp-prd.md +6 -0
  141. package/packs/full-harness/rendered/.claude/commands/prune.md +6 -0
  142. package/packs/full-harness/rendered/.claude/commands/python-review.md +6 -0
  143. package/packs/full-harness/rendered/.claude/commands/quality-gate.md +6 -0
  144. package/packs/full-harness/rendered/.claude/commands/react-build.md +6 -0
  145. package/packs/full-harness/rendered/.claude/commands/react-review.md +6 -0
  146. package/packs/full-harness/rendered/.claude/commands/react-test.md +6 -0
  147. package/packs/full-harness/rendered/.claude/commands/refactor-clean.md +6 -0
  148. package/packs/full-harness/rendered/.claude/commands/resume-session.md +6 -0
  149. package/packs/full-harness/rendered/.claude/commands/review-pr.md +6 -0
  150. package/packs/full-harness/rendered/.claude/commands/rust-build.md +6 -0
  151. package/packs/full-harness/rendered/.claude/commands/rust-review.md +6 -0
  152. package/packs/full-harness/rendered/.claude/commands/rust-test.md +6 -0
  153. package/packs/full-harness/rendered/.claude/commands/santa-loop.md +6 -0
  154. package/packs/full-harness/rendered/.claude/commands/save-session.md +6 -0
  155. package/packs/full-harness/rendered/.claude/commands/security-scan.md +6 -0
  156. package/packs/full-harness/rendered/.claude/commands/sessions.md +6 -0
  157. package/packs/full-harness/rendered/.claude/commands/setup-pm.md +6 -0
  158. package/packs/full-harness/rendered/.claude/commands/skill-create.md +6 -0
  159. package/packs/full-harness/rendered/.claude/commands/skill-health.md +6 -0
  160. package/packs/full-harness/rendered/.claude/commands/test-coverage.md +6 -0
  161. package/packs/full-harness/rendered/.claude/commands/update-codemaps.md +6 -0
  162. package/packs/full-harness/rendered/.claude/commands/update-docs.md +6 -0
  163. package/packs/full-harness/rendered/.claude/commands/vue-review.md +6 -0
  164. package/packs/full-harness/rendered/.claude/skills/accessibility/SKILL.md +144 -0
  165. package/packs/full-harness/rendered/.claude/skills/agent-architecture-audit/SKILL.md +254 -0
  166. package/packs/full-harness/rendered/.claude/skills/agent-eval/SKILL.md +143 -0
  167. package/packs/full-harness/rendered/.claude/skills/agent-harness-construction/SKILL.md +72 -0
  168. package/packs/full-harness/rendered/.claude/skills/agent-introspection-debugging/SKILL.md +152 -0
  169. package/packs/full-harness/rendered/.claude/skills/agent-payment-x402/SKILL.md +223 -0
  170. package/packs/full-harness/rendered/.claude/skills/agent-self-evaluation/SKILL.md +181 -0
  171. package/packs/full-harness/rendered/.claude/skills/agent-sort/SKILL.md +214 -0
  172. package/packs/full-harness/rendered/.claude/skills/agentic-engineering/SKILL.md +62 -0
  173. package/packs/full-harness/rendered/.claude/skills/agentic-os/SKILL.md +386 -0
  174. package/packs/full-harness/rendered/.claude/skills/ai-first-engineering/SKILL.md +50 -0
  175. package/packs/full-harness/rendered/.claude/skills/ai-regression-testing/SKILL.md +384 -0
  176. package/packs/full-harness/rendered/.claude/skills/android-clean-architecture/SKILL.md +338 -0
  177. package/packs/full-harness/rendered/.claude/skills/angular-developer/SKILL.md +153 -0
  178. package/packs/full-harness/rendered/.claude/skills/api-connector-builder/SKILL.md +118 -0
  179. package/packs/full-harness/rendered/.claude/skills/api-design/SKILL.md +522 -0
  180. package/packs/full-harness/rendered/.claude/skills/architecture-decision-records/SKILL.md +178 -0
  181. package/packs/full-harness/rendered/.claude/skills/article-writing/SKILL.md +78 -0
  182. package/packs/full-harness/rendered/.claude/skills/automation-audit-ops/SKILL.md +141 -0
  183. package/packs/full-harness/rendered/.claude/skills/autonomous-agent-harness/SKILL.md +272 -0
  184. package/packs/full-harness/rendered/.claude/skills/autonomous-loops/SKILL.md +609 -0
  185. package/packs/full-harness/rendered/.claude/skills/backend-patterns/SKILL.md +560 -0
  186. package/packs/full-harness/rendered/.claude/skills/benchmark/SKILL.md +92 -0
  187. package/packs/full-harness/rendered/.claude/skills/benchmark-methodology/SKILL.md +185 -0
  188. package/packs/full-harness/rendered/.claude/skills/benchmark-optimization-loop/SKILL.md +67 -0
  189. package/packs/full-harness/rendered/.claude/skills/blender-motion-state-inspection/SKILL.md +162 -0
  190. package/packs/full-harness/rendered/.claude/skills/blueprint/SKILL.md +95 -0
  191. package/packs/full-harness/rendered/.claude/skills/brand-discovery/SKILL.md +140 -0
  192. package/packs/full-harness/rendered/.claude/skills/brand-voice/SKILL.md +96 -0
  193. package/packs/full-harness/rendered/.claude/skills/browser-qa/SKILL.md +103 -0
  194. package/packs/full-harness/rendered/.claude/skills/bun-runtime/SKILL.md +83 -0
  195. package/packs/full-harness/rendered/.claude/skills/canary-watch/SKILL.md +106 -0
  196. package/packs/full-harness/rendered/.claude/skills/carrier-relationship-management/SKILL.md +198 -0
  197. package/packs/full-harness/rendered/.claude/skills/cisco-ios-patterns/SKILL.md +162 -0
  198. package/packs/full-harness/rendered/.claude/skills/ck/SKILL.md +143 -0
  199. package/packs/full-harness/rendered/.claude/skills/claude-devfleet/SKILL.md +110 -0
  200. package/packs/full-harness/rendered/.claude/skills/click-path-audit/SKILL.md +243 -0
  201. package/packs/full-harness/rendered/.claude/skills/clickhouse-io/SKILL.md +443 -0
  202. package/packs/full-harness/rendered/.claude/skills/code-tour/SKILL.md +252 -0
  203. package/packs/full-harness/rendered/.claude/skills/codebase-onboarding/SKILL.md +232 -0
  204. package/packs/full-harness/rendered/.claude/skills/codehealth-mcp/SKILL.md +165 -0
  205. package/packs/full-harness/rendered/.claude/skills/coding-standards/SKILL.md +549 -0
  206. package/packs/full-harness/rendered/.claude/skills/competitive-platform-analysis/SKILL.md +209 -0
  207. package/packs/full-harness/rendered/.claude/skills/competitive-report-structure/SKILL.md +157 -0
  208. package/packs/full-harness/rendered/.claude/skills/compose-multiplatform-patterns/SKILL.md +298 -0
  209. package/packs/full-harness/rendered/.claude/skills/config-gc/SKILL.md +118 -0
  210. package/packs/full-harness/rendered/.claude/skills/configure-ecc/SKILL.md +383 -0
  211. package/packs/full-harness/rendered/.claude/skills/connections-optimizer/SKILL.md +188 -0
  212. package/packs/full-harness/rendered/.claude/skills/content-engine/SKILL.md +130 -0
  213. package/packs/full-harness/rendered/.claude/skills/content-hash-cache-pattern/SKILL.md +160 -0
  214. package/packs/full-harness/rendered/.claude/skills/context-budget/SKILL.md +134 -0
  215. package/packs/full-harness/rendered/.claude/skills/continuous-agent-loop/SKILL.md +44 -0
  216. package/packs/full-harness/rendered/.claude/skills/continuous-learning/SKILL.md +130 -0
  217. package/packs/full-harness/rendered/.claude/skills/continuous-learning-v2/SKILL.md +358 -0
  218. package/packs/full-harness/rendered/.claude/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
  219. package/packs/full-harness/rendered/.claude/skills/cost-tracking/SKILL.md +95 -0
  220. package/packs/full-harness/rendered/.claude/skills/council/SKILL.md +202 -0
  221. package/packs/full-harness/rendered/.claude/skills/cpp-coding-standards/SKILL.md +722 -0
  222. package/packs/full-harness/rendered/.claude/skills/cpp-testing/SKILL.md +323 -0
  223. package/packs/full-harness/rendered/.claude/skills/crosspost/SKILL.md +110 -0
  224. package/packs/full-harness/rendered/.claude/skills/csharp-testing/SKILL.md +320 -0
  225. package/packs/full-harness/rendered/.claude/skills/customer-billing-ops/SKILL.md +139 -0
  226. package/packs/full-harness/rendered/.claude/skills/customs-trade-compliance/SKILL.md +248 -0
  227. package/packs/full-harness/rendered/.claude/skills/dart-flutter-patterns/SKILL.md +562 -0
  228. package/packs/full-harness/rendered/.claude/skills/dashboard-builder/SKILL.md +106 -0
  229. package/packs/full-harness/rendered/.claude/skills/data-scraper-agent/SKILL.md +763 -0
  230. package/packs/full-harness/rendered/.claude/skills/data-throughput-accelerator/SKILL.md +70 -0
  231. package/packs/full-harness/rendered/.claude/skills/database-migrations/SKILL.md +428 -0
  232. package/packs/full-harness/rendered/.claude/skills/deep-research/SKILL.md +158 -0
  233. package/packs/full-harness/rendered/.claude/skills/defi-amm-security/SKILL.md +164 -0
  234. package/packs/full-harness/rendered/.claude/skills/delivery-gate/SKILL.md +123 -0
  235. package/packs/full-harness/rendered/.claude/skills/deployment-patterns/SKILL.md +426 -0
  236. package/packs/full-harness/rendered/.claude/skills/design-system/SKILL.md +81 -0
  237. package/packs/full-harness/rendered/.claude/skills/django-celery/SKILL.md +456 -0
  238. package/packs/full-harness/rendered/.claude/skills/django-patterns/SKILL.md +733 -0
  239. package/packs/full-harness/rendered/.claude/skills/django-security/SKILL.md +642 -0
  240. package/packs/full-harness/rendered/.claude/skills/django-tdd/SKILL.md +728 -0
  241. package/packs/full-harness/rendered/.claude/skills/django-verification/SKILL.md +468 -0
  242. package/packs/full-harness/rendered/.claude/skills/dmux-workflows/SKILL.md +190 -0
  243. package/packs/full-harness/rendered/.claude/skills/docker-patterns/SKILL.md +363 -0
  244. package/packs/full-harness/rendered/.claude/skills/documentation-lookup/SKILL.md +89 -0
  245. package/packs/full-harness/rendered/.claude/skills/dotnet-patterns/SKILL.md +320 -0
  246. package/packs/full-harness/rendered/.claude/skills/dynamic-workflow-mode/SKILL.md +122 -0
  247. package/packs/full-harness/rendered/.claude/skills/e2e-testing/SKILL.md +325 -0
  248. package/packs/full-harness/rendered/.claude/skills/ecc-guide/SKILL.md +188 -0
  249. package/packs/full-harness/rendered/.claude/skills/ecc-recipes/SKILL.md +145 -0
  250. package/packs/full-harness/rendered/.claude/skills/ecc-tools-cost-audit/SKILL.md +159 -0
  251. package/packs/full-harness/rendered/.claude/skills/email-ops/SKILL.md +120 -0
  252. package/packs/full-harness/rendered/.claude/skills/energy-procurement/SKILL.md +213 -0
  253. package/packs/full-harness/rendered/.claude/skills/enterprise-agent-ops/SKILL.md +49 -0
  254. package/packs/full-harness/rendered/.claude/skills/error-handling/SKILL.md +375 -0
  255. package/packs/full-harness/rendered/.claude/skills/eval-harness/SKILL.md +268 -0
  256. package/packs/full-harness/rendered/.claude/skills/evm-token-decimals/SKILL.md +128 -0
  257. package/packs/full-harness/rendered/.claude/skills/exa-search/SKILL.md +106 -0
  258. package/packs/full-harness/rendered/.claude/skills/fal-ai-media/SKILL.md +287 -0
  259. package/packs/full-harness/rendered/.claude/skills/fastapi-patterns/SKILL.md +512 -0
  260. package/packs/full-harness/rendered/.claude/skills/finance-billing-ops/SKILL.md +126 -0
  261. package/packs/full-harness/rendered/.claude/skills/flox-environments/SKILL.md +495 -0
  262. package/packs/full-harness/rendered/.claude/skills/flutter-dart-code-review/SKILL.md +434 -0
  263. package/packs/full-harness/rendered/.claude/skills/foundation-models-on-device/SKILL.md +243 -0
  264. package/packs/full-harness/rendered/.claude/skills/frontend-a11y/SKILL.md +441 -0
  265. package/packs/full-harness/rendered/.claude/skills/frontend-design-direction/SKILL.md +91 -0
  266. package/packs/full-harness/rendered/.claude/skills/frontend-patterns/SKILL.md +655 -0
  267. package/packs/full-harness/rendered/.claude/skills/frontend-slides/SKILL.md +183 -0
  268. package/packs/full-harness/rendered/.claude/skills/fsharp-testing/SKILL.md +279 -0
  269. package/packs/full-harness/rendered/.claude/skills/gan-style-harness/SKILL.md +276 -0
  270. package/packs/full-harness/rendered/.claude/skills/gateguard/SKILL.md +131 -0
  271. package/packs/full-harness/rendered/.claude/skills/generating-python-installer/SKILL.md +820 -0
  272. package/packs/full-harness/rendered/.claude/skills/gget/SKILL.md +165 -0
  273. package/packs/full-harness/rendered/.claude/skills/git-workflow/SKILL.md +714 -0
  274. package/packs/full-harness/rendered/.claude/skills/github-ops/SKILL.md +143 -0
  275. package/packs/full-harness/rendered/.claude/skills/golang-patterns/SKILL.md +674 -0
  276. package/packs/full-harness/rendered/.claude/skills/golang-testing/SKILL.md +719 -0
  277. package/packs/full-harness/rendered/.claude/skills/google-workspace-ops/SKILL.md +94 -0
  278. package/packs/full-harness/rendered/.claude/skills/growth-log/SKILL.md +125 -0
  279. package/packs/full-harness/rendered/.claude/skills/healthcare-cdss-patterns/SKILL.md +243 -0
  280. package/packs/full-harness/rendered/.claude/skills/healthcare-emr-patterns/SKILL.md +157 -0
  281. package/packs/full-harness/rendered/.claude/skills/healthcare-eval-harness/SKILL.md +205 -0
  282. package/packs/full-harness/rendered/.claude/skills/healthcare-phi-compliance/SKILL.md +143 -0
  283. package/packs/full-harness/rendered/.claude/skills/hermes-imports/SKILL.md +87 -0
  284. package/packs/full-harness/rendered/.claude/skills/hexagonal-architecture/SKILL.md +275 -0
  285. package/packs/full-harness/rendered/.claude/skills/hipaa-compliance/SKILL.md +76 -0
  286. package/packs/full-harness/rendered/.claude/skills/homelab-network-readiness/SKILL.md +168 -0
  287. package/packs/full-harness/rendered/.claude/skills/homelab-network-setup/SKILL.md +128 -0
  288. package/packs/full-harness/rendered/.claude/skills/homelab-pihole-dns/SKILL.md +273 -0
  289. package/packs/full-harness/rendered/.claude/skills/homelab-vlan-segmentation/SKILL.md +310 -0
  290. package/packs/full-harness/rendered/.claude/skills/homelab-wireguard-vpn/SKILL.md +304 -0
  291. package/packs/full-harness/rendered/.claude/skills/hookify-rules/SKILL.md +128 -0
  292. package/packs/full-harness/rendered/.claude/skills/inherit-legacy-style/SKILL.md +154 -0
  293. package/packs/full-harness/rendered/.claude/skills/intent-driven-development/SKILL.md +360 -0
  294. package/packs/full-harness/rendered/.claude/skills/inventory-demand-planning/SKILL.md +232 -0
  295. package/packs/full-harness/rendered/.claude/skills/investor-materials/SKILL.md +95 -0
  296. package/packs/full-harness/rendered/.claude/skills/investor-outreach/SKILL.md +90 -0
  297. package/packs/full-harness/rendered/.claude/skills/ios-icon-gen/SKILL.md +156 -0
  298. package/packs/full-harness/rendered/.claude/skills/iterative-retrieval/SKILL.md +210 -0
  299. package/packs/full-harness/rendered/.claude/skills/ito-basket-compare/SKILL.md +62 -0
  300. package/packs/full-harness/rendered/.claude/skills/ito-data-atlas-agent/SKILL.md +62 -0
  301. package/packs/full-harness/rendered/.claude/skills/ito-market-intelligence/SKILL.md +59 -0
  302. package/packs/full-harness/rendered/.claude/skills/ito-trade-planner/SKILL.md +66 -0
  303. package/packs/full-harness/rendered/.claude/skills/java-coding-standards/SKILL.md +382 -0
  304. package/packs/full-harness/rendered/.claude/skills/jira-integration/SKILL.md +301 -0
  305. package/packs/full-harness/rendered/.claude/skills/jpa-patterns/SKILL.md +150 -0
  306. package/packs/full-harness/rendered/.claude/skills/knowledge-ops/SKILL.md +153 -0
  307. package/packs/full-harness/rendered/.claude/skills/kotlin-coroutines-flows/SKILL.md +283 -0
  308. package/packs/full-harness/rendered/.claude/skills/kotlin-exposed-patterns/SKILL.md +718 -0
  309. package/packs/full-harness/rendered/.claude/skills/kotlin-ktor-patterns/SKILL.md +688 -0
  310. package/packs/full-harness/rendered/.claude/skills/kotlin-patterns/SKILL.md +710 -0
  311. package/packs/full-harness/rendered/.claude/skills/kotlin-testing/SKILL.md +823 -0
  312. package/packs/full-harness/rendered/.claude/skills/kubernetes-patterns/SKILL.md +754 -0
  313. package/packs/full-harness/rendered/.claude/skills/laravel-patterns/SKILL.md +414 -0
  314. package/packs/full-harness/rendered/.claude/skills/laravel-plugin-discovery/SKILL.md +228 -0
  315. package/packs/full-harness/rendered/.claude/skills/laravel-security/SKILL.md +946 -0
  316. package/packs/full-harness/rendered/.claude/skills/laravel-tdd/SKILL.md +673 -0
  317. package/packs/full-harness/rendered/.claude/skills/laravel-verification/SKILL.md +178 -0
  318. package/packs/full-harness/rendered/.claude/skills/latency-critical-systems/SKILL.md +71 -0
  319. package/packs/full-harness/rendered/.claude/skills/lead-intelligence/SKILL.md +320 -0
  320. package/packs/full-harness/rendered/.claude/skills/liquid-glass-design/SKILL.md +279 -0
  321. package/packs/full-harness/rendered/.claude/skills/literature-review/SKILL.md +191 -0
  322. package/packs/full-harness/rendered/.claude/skills/llm-trading-agent-security/SKILL.md +144 -0
  323. package/packs/full-harness/rendered/.claude/skills/logistics-exception-management/SKILL.md +208 -0
  324. package/packs/full-harness/rendered/.claude/skills/loop-design-check/SKILL.md +141 -0
  325. package/packs/full-harness/rendered/.claude/skills/mailtrap-email-integration/SKILL.md +76 -0
  326. package/packs/full-harness/rendered/.claude/skills/make-interfaces-feel-better/SKILL.md +150 -0
  327. package/packs/full-harness/rendered/.claude/skills/manim-video/SKILL.md +88 -0
  328. package/packs/full-harness/rendered/.claude/skills/market-research/SKILL.md +74 -0
  329. package/packs/full-harness/rendered/.claude/skills/marketing-campaign/SKILL.md +112 -0
  330. package/packs/full-harness/rendered/.claude/skills/mcp-server-patterns/SKILL.md +68 -0
  331. package/packs/full-harness/rendered/.claude/skills/messages-ops/SKILL.md +103 -0
  332. package/packs/full-harness/rendered/.claude/skills/ml-adoption-playbook/SKILL.md +56 -0
  333. package/packs/full-harness/rendered/.claude/skills/mle-workflow/SKILL.md +345 -0
  334. package/packs/full-harness/rendered/.claude/skills/motion-advanced/SKILL.md +592 -0
  335. package/packs/full-harness/rendered/.claude/skills/motion-foundations/SKILL.md +295 -0
  336. package/packs/full-harness/rendered/.claude/skills/motion-patterns/SKILL.md +430 -0
  337. package/packs/full-harness/rendered/.claude/skills/motion-ui/SKILL.md +574 -0
  338. package/packs/full-harness/rendered/.claude/skills/mysql-patterns/SKILL.md +411 -0
  339. package/packs/full-harness/rendered/.claude/skills/nanoclaw-repl/SKILL.md +32 -0
  340. package/packs/full-harness/rendered/.claude/skills/nestjs-patterns/SKILL.md +229 -0
  341. package/packs/full-harness/rendered/.claude/skills/netmiko-ssh-automation/SKILL.md +172 -0
  342. package/packs/full-harness/rendered/.claude/skills/network-bgp-diagnostics/SKILL.md +166 -0
  343. package/packs/full-harness/rendered/.claude/skills/network-config-validation/SKILL.md +209 -0
  344. package/packs/full-harness/rendered/.claude/skills/network-interface-health/SKILL.md +151 -0
  345. package/packs/full-harness/rendered/.claude/skills/nextjs-turbopack/SKILL.md +56 -0
  346. package/packs/full-harness/rendered/.claude/skills/nodejs-keccak256/SKILL.md +100 -0
  347. package/packs/full-harness/rendered/.claude/skills/nutrient-document-processing/SKILL.md +166 -0
  348. package/packs/full-harness/rendered/.claude/skills/nuxt4-patterns/SKILL.md +99 -0
  349. package/packs/full-harness/rendered/.claude/skills/openclaw-persona-forge/SKILL.md +287 -0
  350. package/packs/full-harness/rendered/.claude/skills/opensource-pipeline/SKILL.md +254 -0
  351. package/packs/full-harness/rendered/.claude/skills/orch-add-feature/SKILL.md +43 -0
  352. package/packs/full-harness/rendered/.claude/skills/orch-build-mvp/SKILL.md +47 -0
  353. package/packs/full-harness/rendered/.claude/skills/orch-change-feature/SKILL.md +41 -0
  354. package/packs/full-harness/rendered/.claude/skills/orch-fix-defect/SKILL.md +41 -0
  355. package/packs/full-harness/rendered/.claude/skills/orch-pipeline/SKILL.md +119 -0
  356. package/packs/full-harness/rendered/.claude/skills/orch-refine-code/SKILL.md +42 -0
  357. package/packs/full-harness/rendered/.claude/skills/parallel-execution-optimizer/SKILL.md +70 -0
  358. package/packs/full-harness/rendered/.claude/skills/perl-patterns/SKILL.md +503 -0
  359. package/packs/full-harness/rendered/.claude/skills/perl-security/SKILL.md +502 -0
  360. package/packs/full-harness/rendered/.claude/skills/perl-testing/SKILL.md +474 -0
  361. package/packs/full-harness/rendered/.claude/skills/plan-canvas/SKILL.md +150 -0
  362. package/packs/full-harness/rendered/.claude/skills/plan-orchestrate/SKILL.md +261 -0
  363. package/packs/full-harness/rendered/.claude/skills/plankton-code-quality/SKILL.md +235 -0
  364. package/packs/full-harness/rendered/.claude/skills/postgres-patterns/SKILL.md +146 -0
  365. package/packs/full-harness/rendered/.claude/skills/prediction-market-oracle-research/SKILL.md +62 -0
  366. package/packs/full-harness/rendered/.claude/skills/prediction-market-risk-review/SKILL.md +59 -0
  367. package/packs/full-harness/rendered/.claude/skills/prisma-patterns/SKILL.md +399 -0
  368. package/packs/full-harness/rendered/.claude/skills/product-capability/SKILL.md +140 -0
  369. package/packs/full-harness/rendered/.claude/skills/product-lens/SKILL.md +91 -0
  370. package/packs/full-harness/rendered/.claude/skills/production-audit/SKILL.md +205 -0
  371. package/packs/full-harness/rendered/.claude/skills/production-scheduling/SKILL.md +223 -0
  372. package/packs/full-harness/rendered/.claude/skills/project-flow-ops/SKILL.md +110 -0
  373. package/packs/full-harness/rendered/.claude/skills/prompt-optimizer/SKILL.md +383 -0
  374. package/packs/full-harness/rendered/.claude/skills/pubmed-database/SKILL.md +174 -0
  375. package/packs/full-harness/rendered/.claude/skills/python-patterns/SKILL.md +749 -0
  376. package/packs/full-harness/rendered/.claude/skills/python-testing/SKILL.md +815 -0
  377. package/packs/full-harness/rendered/.claude/skills/pytorch-patterns/SKILL.md +395 -0
  378. package/packs/full-harness/rendered/.claude/skills/quality-nonconformance/SKILL.md +245 -0
  379. package/packs/full-harness/rendered/.claude/skills/quarkus-patterns/SKILL.md +721 -0
  380. package/packs/full-harness/rendered/.claude/skills/quarkus-security/SKILL.md +466 -0
  381. package/packs/full-harness/rendered/.claude/skills/quarkus-tdd/SKILL.md +810 -0
  382. package/packs/full-harness/rendered/.claude/skills/quarkus-verification/SKILL.md +478 -0
  383. package/packs/full-harness/rendered/.claude/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
  384. package/packs/full-harness/rendered/.claude/skills/react-native-patterns/SKILL.md +325 -0
  385. package/packs/full-harness/rendered/.claude/skills/react-patterns/SKILL.md +340 -0
  386. package/packs/full-harness/rendered/.claude/skills/react-performance/SKILL.md +573 -0
  387. package/packs/full-harness/rendered/.claude/skills/react-testing/SKILL.md +422 -0
  388. package/packs/full-harness/rendered/.claude/skills/recsys-pipeline-architect/SKILL.md +113 -0
  389. package/packs/full-harness/rendered/.claude/skills/recursive-decision-ledger/SKILL.md +77 -0
  390. package/packs/full-harness/rendered/.claude/skills/redis-patterns/SKILL.md +402 -0
  391. package/packs/full-harness/rendered/.claude/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
  392. package/packs/full-harness/rendered/.claude/skills/remotion-video-creation/SKILL.md +41 -0
  393. package/packs/full-harness/rendered/.claude/skills/repo-scan/SKILL.md +77 -0
  394. package/packs/full-harness/rendered/.claude/skills/research-ops/SKILL.md +111 -0
  395. package/packs/full-harness/rendered/.claude/skills/returns-reverse-logistics/SKILL.md +225 -0
  396. package/packs/full-harness/rendered/.claude/skills/rules-distill/SKILL.md +263 -0
  397. package/packs/full-harness/rendered/.claude/skills/rust-patterns/SKILL.md +498 -0
  398. package/packs/full-harness/rendered/.claude/skills/rust-testing/SKILL.md +499 -0
  399. package/packs/full-harness/rendered/.claude/skills/safety-guard/SKILL.md +74 -0
  400. package/packs/full-harness/rendered/.claude/skills/santa-method/SKILL.md +305 -0
  401. package/packs/full-harness/rendered/.claude/skills/scholar-evaluation/SKILL.md +159 -0
  402. package/packs/full-harness/rendered/.claude/skills/search-first/SKILL.md +181 -0
  403. package/packs/full-harness/rendered/.claude/skills/security-bounty-hunter/SKILL.md +97 -0
  404. package/packs/full-harness/rendered/.claude/skills/security-review/SKILL.md +502 -0
  405. package/packs/full-harness/rendered/.claude/skills/security-scan/SKILL.md +164 -0
  406. package/packs/full-harness/rendered/.claude/skills/seo/SKILL.md +153 -0
  407. package/packs/full-harness/rendered/.claude/skills/skill-comply/SKILL.md +56 -0
  408. package/packs/full-harness/rendered/.claude/skills/skill-scout/SKILL.md +139 -0
  409. package/packs/full-harness/rendered/.claude/skills/skill-stocktake/SKILL.md +193 -0
  410. package/packs/full-harness/rendered/.claude/skills/social-graph-ranker/SKILL.md +153 -0
  411. package/packs/full-harness/rendered/.claude/skills/social-publisher/SKILL.md +128 -0
  412. package/packs/full-harness/rendered/.claude/skills/springboot-patterns/SKILL.md +313 -0
  413. package/packs/full-harness/rendered/.claude/skills/springboot-security/SKILL.md +271 -0
  414. package/packs/full-harness/rendered/.claude/skills/springboot-tdd/SKILL.md +157 -0
  415. package/packs/full-harness/rendered/.claude/skills/springboot-verification/SKILL.md +230 -0
  416. package/packs/full-harness/rendered/.claude/skills/strategic-compact/SKILL.md +136 -0
  417. package/packs/full-harness/rendered/.claude/skills/swift-actor-persistence/SKILL.md +142 -0
  418. package/packs/full-harness/rendered/.claude/skills/swift-concurrency-6-2/SKILL.md +216 -0
  419. package/packs/full-harness/rendered/.claude/skills/swift-protocol-di-testing/SKILL.md +189 -0
  420. package/packs/full-harness/rendered/.claude/skills/swiftui-patterns/SKILL.md +259 -0
  421. package/packs/full-harness/rendered/.claude/skills/taste/SKILL.md +263 -0
  422. package/packs/full-harness/rendered/.claude/skills/tdd-workflow/SKILL.md +580 -0
  423. package/packs/full-harness/rendered/.claude/skills/team-agent-orchestration/SKILL.md +109 -0
  424. package/packs/full-harness/rendered/.claude/skills/team-builder/SKILL.md +167 -0
  425. package/packs/full-harness/rendered/.claude/skills/terminal-ops/SKILL.md +108 -0
  426. package/packs/full-harness/rendered/.claude/skills/tinystruct-patterns/SKILL.md +277 -0
  427. package/packs/full-harness/rendered/.claude/skills/token-budget-advisor/SKILL.md +120 -0
  428. package/packs/full-harness/rendered/.claude/skills/ui-demo/SKILL.md +464 -0
  429. package/packs/full-harness/rendered/.claude/skills/ui-to-vue/SKILL.md +133 -0
  430. package/packs/full-harness/rendered/.claude/skills/uncloud/SKILL.md +342 -0
  431. package/packs/full-harness/rendered/.claude/skills/unified-notifications-ops/SKILL.md +186 -0
  432. package/packs/full-harness/rendered/.claude/skills/uspto-database/SKILL.md +176 -0
  433. package/packs/full-harness/rendered/.claude/skills/verification-loop/SKILL.md +126 -0
  434. package/packs/full-harness/rendered/.claude/skills/video-editing/SKILL.md +309 -0
  435. package/packs/full-harness/rendered/.claude/skills/videodb/SKILL.md +371 -0
  436. package/packs/full-harness/rendered/.claude/skills/visa-doc-translate/SKILL.md +117 -0
  437. package/packs/full-harness/rendered/.claude/skills/vite-patterns/SKILL.md +448 -0
  438. package/packs/full-harness/rendered/.claude/skills/vue-patterns/SKILL.md +470 -0
  439. package/packs/full-harness/rendered/.claude/skills/windows-desktop-e2e/SKILL.md +886 -0
  440. package/packs/full-harness/rendered/.claude/skills/workspace-surface-audit/SKILL.md +124 -0
  441. package/packs/full-harness/rendered/.claude/skills/x-api/SKILL.md +233 -0
  442. package/packs/full-harness/rendered/.github/copilot-instructions.md +89529 -0
  443. package/packs/full-harness/rendered/AGENTS.md +9663 -0
  444. package/packs/full-harness/rendered/CLAUDE.md +444 -0
  445. package/packs/full-harness/rendered/GEMINI.md +71959 -0
@@ -0,0 +1,273 @@
1
+ ---
2
+ name: homelab-pihole-dns
3
+ description: Pi-hole installation, blocklist management, DNS-over-HTTPS setup, DHCP integration, local DNS records, and troubleshooting broken DNS resolution on a home network.
4
+ ---
5
+
6
+ # Homelab Pi-hole DNS
7
+
8
+ Pi-hole is a network-wide DNS ad blocker that runs on a Raspberry Pi or any Linux host.
9
+ Every device on your network gets ad and malware domain blocking automatically — no browser
10
+ extension needed.
11
+
12
+ ## When to Use
13
+
14
+ - Installing Pi-hole on a Raspberry Pi or Linux host
15
+ - Configuring Pi-hole as the DNS server for a home network
16
+ - Adding or managing blocklists
17
+ - Setting up DNS-over-HTTPS (DoH) upstream resolvers
18
+ - Creating local DNS records (e.g. `nas.home.lan`, `pi.home.lan`)
19
+ - Troubleshooting devices that lose internet access after Pi-hole is installed
20
+ - Running Pi-hole alongside or instead of DHCP
21
+
22
+ ## How Pi-hole Works
23
+
24
+ ```
25
+ Normal flow (without Pi-hole):
26
+ Device → requests ads.tracker.com → ISP DNS → real IP → ads load
27
+
28
+ With Pi-hole:
29
+ Device → requests ads.tracker.com → Pi-hole DNS → blocked (returns 0.0.0.0) → no ad
30
+
31
+ All DNS queries go through Pi-hole first.
32
+ Pi-hole checks against blocklists.
33
+ Blocked domains return a null response — the ad/tracker never loads.
34
+ Allowed domains get forwarded to your upstream resolver (Cloudflare, Google, etc.).
35
+ ```
36
+
37
+ ## Installation
38
+
39
+ ### Docker (Recommended)
40
+
41
+ Docker is the easiest way to install Pi-hole and makes updates and backups
42
+ straightforward.
43
+
44
+ ```yaml
45
+ # docker-compose.yml
46
+ services:
47
+ pihole:
48
+ image: pihole/pihole:<pinned-release-tag>
49
+ container_name: pihole
50
+ ports:
51
+ - "53:53/tcp"
52
+ - "53:53/udp"
53
+ - "80:80/tcp" # Web admin
54
+ environment:
55
+ TZ: "America/New_York"
56
+ WEBPASSWORD: "${PIHOLE_WEBPASSWORD}" # set via .env file or secret
57
+ PIHOLE_DNS_: "1.1.1.1;1.0.0.1"
58
+ DNSMASQ_LISTENING: "all"
59
+ volumes:
60
+ - "./etc-pihole:/etc/pihole"
61
+ - "./etc-dnsmasq.d:/etc/dnsmasq.d"
62
+ restart: unless-stopped
63
+ cap_add:
64
+ - NET_ADMIN # only needed if Pi-hole will serve DHCP
65
+ ```
66
+
67
+ Replace `<pinned-release-tag>` with a current Pi-hole release tag before deploying.
68
+ Avoid `latest` for long-lived DNS infrastructure so upgrades are deliberate and
69
+ reviewable.
70
+
71
+ Set `PIHOLE_WEBPASSWORD` in a `.env` file next to `docker-compose.yml`, chmod it to
72
+ `600`, and keep it out of git — do not put the password directly in the compose file.
73
+
74
+ Access web admin at: `http://<pi-ip>/admin`
75
+
76
+ ### Bare-Metal Install (Raspberry Pi OS / Debian / Ubuntu)
77
+
78
+ Pi-hole requires a static IP before installing.
79
+
80
+ ```bash
81
+ # Step 1: Assign a static IP (edit /etc/dhcpcd.conf on Pi OS)
82
+ sudo nano /etc/dhcpcd.conf
83
+ # Add at the bottom:
84
+ interface eth0
85
+ static ip_address=192.168.3.2/24
86
+ static routers=192.168.3.1
87
+ static domain_name_servers=192.168.3.1
88
+
89
+ # Step 2: Download and inspect the installer before running it.
90
+ # Prefer the package or installer path documented by Pi-hole for your OS/version.
91
+ curl -sSL https://install.pi-hole.net -o pi-hole-install.sh
92
+ less pi-hole-install.sh # review before proceeding
93
+
94
+ # Step 3: Run
95
+ bash pi-hole-install.sh
96
+
97
+ # Follow the interactive installer:
98
+ # 1. Select network interface (eth0 for wired — recommended)
99
+ # 2. Select upstream DNS (Cloudflare or leave default — can change later)
100
+ # 3. Confirm static IP
101
+ # 4. Install the web admin interface (recommended)
102
+ # 5. Note the admin password shown at the end
103
+ ```
104
+
105
+ ## Pointing Your Network at Pi-hole
106
+
107
+ ```
108
+ # Method 1: Change DNS in your router DHCP settings (recommended)
109
+ Router admin UI → DHCP Settings → DNS Server
110
+ Primary DNS: 192.168.3.2 (Pi-hole IP)
111
+ Secondary DNS: leave blank for strict blocking, or use a second Pi-hole.
112
+ A public fallback such as 1.1.1.1 improves availability during
113
+ rollout but can bypass blocking because clients may query it.
114
+
115
+ All devices get Pi-hole as DNS automatically on next DHCP renewal.
116
+ Force renewal: reconnect Wi-Fi or run 'sudo dhclient -r && sudo dhclient' on Linux
117
+
118
+ # Method 2: Per-device DNS (useful for testing before network-wide rollout)
119
+ Windows: Control Panel → Network Adapter → IPv4 Properties → set DNS manually
120
+ macOS: System Settings → Network → Details → DNS → set manually
121
+ Linux: /etc/resolv.conf or NetworkManager
122
+
123
+ # Method 3: Pi-hole as DHCP server (replaces router DHCP)
124
+ Pi-hole admin → Settings → DHCP → Enable
125
+ Disable DHCP on your router first — two DHCP servers on the same network cause conflicts
126
+ Advantage: hostname resolution works automatically (devices register their names)
127
+ ```
128
+
129
+ ## Blocklist Management
130
+
131
+ ```
132
+ # Pi-hole admin → Adlists → Add new adlist
133
+
134
+ # Recommended blocklists:
135
+ https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
136
+ # default — 200k+ domains
137
+
138
+ https://blocklistproject.github.io/Lists/malware.txt
139
+ # malware domains
140
+
141
+ https://blocklistproject.github.io/Lists/tracking.txt
142
+ # tracking/telemetry
143
+
144
+ # After adding a list:
145
+ Tools → Update Gravity (downloads and compiles all blocklists)
146
+
147
+ # If a site is blocked that should not be (false positive):
148
+ Pi-hole admin → Whitelist → Add domain
149
+ Example: api.my-legitimate-service.com
150
+
151
+ # Check what is being blocked in real time:
152
+ Dashboard → Query Log (live DNS query stream with block/allow status)
153
+ ```
154
+
155
+ ## DNS-over-HTTPS Upstream
156
+
157
+ DNS-over-HTTPS encrypts your DNS queries so your ISP cannot see what sites you resolve.
158
+
159
+ ```bash
160
+ # Install cloudflared (Cloudflare's DoH proxy).
161
+ # Prefer Cloudflare's package repository for automatic signed package verification.
162
+ # If you download a binary directly, pin a release version and verify its checksum.
163
+ CLOUDFLARED_VERSION="<pinned-version>"
164
+ curl -LO "https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-arm64"
165
+ # Verify the checksum/signature from Cloudflare's release notes before installing.
166
+ sudo mv cloudflared-linux-arm64 /usr/local/bin/cloudflared
167
+ sudo chmod +x /usr/local/bin/cloudflared
168
+
169
+ # Create cloudflared config
170
+ sudo mkdir -p /etc/cloudflared
171
+ sudo tee /etc/cloudflared/config.yml << EOF
172
+ proxy-dns: true
173
+ proxy-dns-port: 5053
174
+ proxy-dns-upstream:
175
+ - https://1.1.1.1/dns-query
176
+ - https://1.0.0.1/dns-query
177
+ EOF
178
+
179
+ # Create systemd service
180
+ sudo cloudflared service install
181
+ sudo systemctl start cloudflared
182
+ sudo systemctl enable cloudflared
183
+
184
+ # Now point Pi-hole at the local DoH proxy:
185
+ # Pi-hole admin → Settings → DNS → Custom upstream DNS
186
+ # Set to: 127.0.0.1#5053
187
+ # Uncheck all other upstream resolvers
188
+ ```
189
+
190
+ ## Local DNS Records
191
+
192
+ Make your services reachable by name (e.g. `nas.home.lan`, `grafana.home.lan`).
193
+
194
+ > **Domain name note:** `.home.lan` is widely used in homelabs and works in practice.
195
+ > The IETF-reserved suffix for local use is `.home.arpa` (RFC 8375) — use that to
196
+ > follow the standard. Avoid `.local` for Pi-hole DNS records as it conflicts with
197
+ > mDNS/Bonjour.
198
+
199
+ ```
200
+ # Pi-hole admin → Local DNS → DNS Records
201
+
202
+ Domain IP
203
+ nas.home.lan 192.168.30.10
204
+ pi.home.lan 192.168.30.2
205
+ grafana.home.lan 192.168.30.3
206
+ proxmox.home.lan 192.168.30.4
207
+
208
+ # From any device on your network:
209
+ ping nas.home.lan → 192.168.30.10
210
+ http://grafana.home.lan → your Grafana dashboard
211
+
212
+ # For subdomains, add a CNAME:
213
+ Pi-hole admin → Local DNS → CNAME Records
214
+ Domain: portainer.home.lan → Target: pi.home.lan
215
+ ```
216
+
217
+ ## Troubleshooting
218
+
219
+ ```bash
220
+ # Pi-hole blocking something it should not
221
+ pihole -q example.com # Check if domain is blocked and which list
222
+ pihole -w example.com # Whitelist immediately
223
+
224
+ # DNS not resolving at all
225
+ pihole status # Check if pihole-FTL is running
226
+ dig @192.168.3.2 google.com # Test DNS directly against Pi-hole
227
+
228
+ # Restart Pi-hole DNS
229
+ pihole restartdns
230
+
231
+ # Check query logs for a specific device
232
+ pihole -t # Live tail of all queries
233
+ # Or filter by client in the web admin Query Log
234
+
235
+ # Pi-hole gravity update (refresh blocklists)
236
+ pihole -g
237
+ ```
238
+
239
+ ## Anti-Patterns
240
+
241
+ ```
242
+ # BAD: Depending on one Pi-hole without a recovery path
243
+ # If Pi-hole crashes or the Pi loses power, DNS can stop working
244
+ # GOOD: Keep a documented router fallback for rollback during setup
245
+ # BETTER: Run two Pi-hole instances for redundancy; avoid public fallback DNS for strict blocking
246
+
247
+ # BAD: Installing Pi-hole without a static IP
248
+ # If the Pi gets a new DHCP IP, all devices lose DNS
249
+ # GOOD: Set static IP first, then install Pi-hole
250
+
251
+ # BAD: Enabling Pi-hole DHCP without disabling the router's DHCP first
252
+ # Two DHCP servers on the same network hand out conflicting IPs
253
+ # GOOD: Disable router DHCP, then enable Pi-hole DHCP
254
+
255
+ # BAD: Never updating gravity (blocklists)
256
+ # New ad and malware domains accumulate — stale lists miss them
257
+ # GOOD: Schedule weekly gravity update: pihole -g (or enable in Settings → API)
258
+ ```
259
+
260
+ ## Best Practices
261
+
262
+ - Give the Pi a static IP or DHCP reservation before installing Pi-hole
263
+ - Use Pi-hole as primary DNS; for redundancy, add a second Pi-hole instead of a
264
+ public resolver if you need strict blocking
265
+ - Enable DoH (DNS-over-HTTPS) with cloudflared for encrypted upstream queries
266
+ - Set `home.lan` as your local domain and create DNS records for all your services
267
+ - Review the Query Log occasionally — blocked queries show you what devices are doing
268
+
269
+ ## Related Skills
270
+
271
+ - homelab-network-setup
272
+ - homelab-vlan-segmentation
273
+ - homelab-wireguard-vpn
@@ -0,0 +1,310 @@
1
+ ---
2
+ name: homelab-vlan-segmentation
3
+ description: Segmenting home networks into VLANs for IoT, guest, trusted, and server traffic using UniFi, pfSense/OPNsense, and MikroTik — including switch trunk config, firewall rules, and wireless SSID mapping.
4
+ ---
5
+
6
+ # Homelab VLAN Segmentation
7
+
8
+ How to split a home network into isolated VLANs so IoT devices, guests, and your main
9
+ PCs cannot talk to each other. The most impactful security upgrade for a home network.
10
+
11
+ All firewall rules shown here add isolation between segments — they do not remove
12
+ existing protections. Apply changes in a maintenance window and verify connectivity
13
+ between segments after each step before moving on.
14
+
15
+ ## When to Use
16
+
17
+ - Setting up VLANs on a home network for the first time
18
+ - Isolating IoT devices (smart bulbs, cameras, TVs) from trusted devices
19
+ - Creating a guest Wi-Fi network that cannot reach home devices
20
+ - Explaining how VLANs work to someone unfamiliar with the concept
21
+ - Configuring trunk ports, access ports, and SSID-to-VLAN mapping
22
+ - Troubleshooting inter-VLAN routing or firewall rule issues on pfSense/OPNsense/UniFi
23
+
24
+ ## How It Works
25
+
26
+ ```
27
+ Without VLANs — flat network:
28
+ All devices on 192.168.1.0/24
29
+ Smart TV (potential malware) → can reach your NAS, PCs, everything
30
+
31
+ With VLANs:
32
+ VLAN 10 — Trusted 192.168.10.0/24 (PCs, phones, laptops)
33
+ VLAN 20 — IoT 192.168.20.0/24 (smart TV, bulbs, cameras)
34
+ VLAN 30 — Servers 192.168.30.0/24 (NAS, Pi, VMs)
35
+ VLAN 40 — Guest 192.168.40.0/24 (visitor Wi-Fi)
36
+ VLAN 99 — Management 192.168.99.0/24 (switch/AP web UIs)
37
+
38
+ Smart TV → blocked from reaching 192.168.10.0/24 and 192.168.30.0/24
39
+ Guests → internet only, cannot see any home devices
40
+ ```
41
+
42
+ ## VLAN Design Template
43
+
44
+ ```
45
+ VLAN Name Subnet Gateway Purpose
46
+ 10 trusted 192.168.10.0/24 192.168.10.1 PCs, phones, laptops
47
+ 20 iot 192.168.20.0/24 192.168.20.1 Smart home devices
48
+ 30 servers 192.168.30.0/24 192.168.30.1 NAS, Pi, self-hosted
49
+ 40 guest 192.168.40.0/24 192.168.40.1 Visitor Wi-Fi
50
+ 99 management 192.168.99.0/24 192.168.99.1 Network gear web UIs
51
+ ```
52
+
53
+ ## Examples
54
+
55
+ **Typical homelab with UniFi AP and managed switch:**
56
+
57
+ ```
58
+ Scenario: 3-bedroom house, UniFi Dream Machine + UniFi 8-port switch + 2 APs
59
+
60
+ VLAN 10 — Trusted 192.168.10.0/24 MacBook, iPhones, iPad
61
+ VLAN 20 — IoT 192.168.20.0/24 Nest thermostat, Philips Hue, Ring doorbell, smart TVs
62
+ VLAN 30 — Servers 192.168.30.0/24 Synology NAS (192.168.30.10), Pi-hole (192.168.30.2)
63
+ VLAN 40 — Guest 192.168.40.0/24 Visitor Wi-Fi — internet only
64
+
65
+ SSID → VLAN mapping:
66
+ "Home" → VLAN 10 (WPA2, strong password, trusted devices only)
67
+ "IoT" → VLAN 20 (WPA2, separate password, printed on router for setup)
68
+ "Guest" → VLAN 40 (WPA2, simple password you can share freely)
69
+
70
+ Switch port behavior:
71
+ Port 1 → trunk to router (tagged VLANs 10,20,30,40,99)
72
+ Port 2 → trunk to APs (tagged VLANs 10,20,40; AP handles per-SSID tagging)
73
+ Port 3 → access VLAN 30 (NAS — untagged, no VLAN awareness needed)
74
+ Port 4 → access VLAN 30 (Pi-hole — untagged)
75
+ Port 5–8 → access VLAN 10 (wired workstations)
76
+
77
+ Firewall rules applied (all rules add isolation, none remove existing protections):
78
+ IoT → Trusted: BLOCK
79
+ IoT → Servers: BLOCK except 192.168.30.2:53 (Pi-hole DNS allowed)
80
+ IoT → Internet: ALLOW
81
+ Guest → Local networks: BLOCK
82
+ Guest → Internet: ALLOW
83
+ Trusted → everywhere: ALLOW
84
+ ```
85
+
86
+ ## UniFi Configuration
87
+
88
+ ### Create Networks in UniFi Controller
89
+
90
+ ```
91
+ Settings → Networks → Create New Network
92
+
93
+ For each VLAN:
94
+ Name: IoT
95
+ Purpose: Corporate (gives DHCP + routing)
96
+ VLAN ID: 20
97
+ Network: 192.168.20.0/24
98
+ Gateway IP: 192.168.20.1
99
+ DHCP: Enable
100
+ DHCP Range: 192.168.20.100 – 192.168.20.254
101
+ ```
102
+
103
+ ### Map SSIDs to VLANs (UniFi)
104
+
105
+ ```
106
+ Settings → WiFi → Create New WiFi
107
+
108
+ Name: IoT-Network
109
+ Password: <separate password>
110
+ Network: IoT ← select your VLAN here
111
+ # All devices connecting to this SSID land in VLAN 20
112
+
113
+ Name: Guest
114
+ Password: <guest password>
115
+ Network: Guest
116
+ Guest Policy: Enable ← isolates guests from each other too
117
+ ```
118
+
119
+ ### UniFi Firewall Rules (Traffic Rules)
120
+
121
+ ```
122
+ Settings → Traffic & Security → Traffic Rules
123
+
124
+ # Block IoT from reaching Trusted VLAN
125
+ Action: Block
126
+ Category: Local Network
127
+ Source: IoT (192.168.20.0/24)
128
+ Destination: Trusted (192.168.10.0/24)
129
+
130
+ # Allow IoT to reach internet only
131
+ Action: Allow
132
+ Source: IoT
133
+ Destination: Internet
134
+
135
+ # Block Guest from all local networks
136
+ Action: Block
137
+ Source: Guest
138
+ Destination: Local Networks
139
+ ```
140
+
141
+ ## pfSense / OPNsense Configuration
142
+
143
+ ### Create VLANs
144
+
145
+ ```
146
+ Interfaces → Assignments → VLANs → Add
147
+
148
+ Parent Interface: em1 (your LAN NIC)
149
+ VLAN Tag: 20
150
+ Description: IoT
151
+
152
+ # Repeat for each VLAN, then assign each VLAN to an interface:
153
+ Interfaces → Assignments → Add
154
+ Select the VLAN you created → click Add
155
+ Enable the interface, set IP to gateway address (192.168.20.1/24)
156
+ ```
157
+
158
+ ### DHCP for Each VLAN
159
+
160
+ ```
161
+ Services → DHCP Server → Select your VLAN interface
162
+
163
+ Enable DHCP
164
+ Range: 192.168.20.100 to 192.168.20.254
165
+ DNS Servers: 192.168.30.2 ← Pi-hole IP if you have one
166
+ ```
167
+
168
+ ### Firewall Rules (pfSense/OPNsense)
169
+
170
+ ```
171
+ # Rules are processed top-to-bottom, first match wins.
172
+
173
+ # On the IoT interface (VLAN 20):
174
+ Rule 1: Allow IoT → Pi-hole DNS ← MUST come before the RFC1918 block rule
175
+ Protocol: UDP/TCP
176
+ Source: IoT net
177
+ Destination: 192.168.30.2 port 53
178
+ Action: Allow
179
+
180
+ Rule 2: Block IoT → RFC1918 (all private IP ranges)
181
+ Protocol: any
182
+ Source: IoT net
183
+ Destination: RFC1918 (192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12)
184
+ Action: Block
185
+
186
+ Rule 3: Allow IoT → internet
187
+ Protocol: any
188
+ Source: IoT net
189
+ Destination: any
190
+ Action: Allow
191
+
192
+ # On the Trusted interface (VLAN 10):
193
+ Allow all (trusted devices can reach everything)
194
+ Source: Trusted net
195
+ Destination: any
196
+ Action: Allow
197
+
198
+ # Additional exceptions for IoT devices that need specific local services:
199
+ Insert before Rule 2 (the RFC1918 block):
200
+ Protocol: TCP
201
+ Source: IoT net
202
+ Destination: 192.168.30.x port 8123 ← Home Assistant
203
+ Action: Allow
204
+ ```
205
+
206
+ ## MikroTik Configuration
207
+
208
+ ```
209
+ # Step 1: Create a bridge with VLAN filtering enabled
210
+ /interface bridge
211
+ add name=bridge vlan-filtering=yes
212
+
213
+ # Step 2: Add physical ports to the bridge
214
+ # Trunk port to router/uplink (tagged for all VLANs)
215
+ /interface bridge port
216
+ add bridge=bridge interface=ether1 frame-types=admit-only-vlan-tagged
217
+
218
+ # Access port for trusted devices (untagged VLAN 10)
219
+ /interface bridge port
220
+ add bridge=bridge interface=ether2 pvid=10 frame-types=admit-only-untagged-and-priority-tagged
221
+
222
+ # Access port for IoT devices (untagged VLAN 20)
223
+ /interface bridge port
224
+ add bridge=bridge interface=ether3 pvid=20 frame-types=admit-only-untagged-and-priority-tagged
225
+
226
+ # Step 3: Define which VLANs are allowed on which ports
227
+ /interface bridge vlan
228
+ add bridge=bridge tagged=ether1 untagged=ether2 vlan-ids=10
229
+ add bridge=bridge tagged=ether1 untagged=ether3 vlan-ids=20
230
+
231
+ # Step 4: Create VLAN interfaces on the bridge (gateway IPs)
232
+ /interface vlan
233
+ add interface=bridge name=vlan10 vlan-id=10
234
+ add interface=bridge name=vlan20 vlan-id=20
235
+
236
+ # Step 5: Assign gateway IPs
237
+ /ip address
238
+ add interface=vlan10 address=192.168.10.1/24
239
+ add interface=vlan20 address=192.168.20.1/24
240
+
241
+ # Step 6: DHCP pools and servers
242
+ /ip pool
243
+ add name=pool-trusted ranges=192.168.10.100-192.168.10.254
244
+ add name=pool-iot ranges=192.168.20.100-192.168.20.254
245
+
246
+ /ip dhcp-server
247
+ add interface=vlan10 address-pool=pool-trusted name=dhcp-trusted
248
+ add interface=vlan20 address-pool=pool-iot name=dhcp-iot
249
+
250
+ /ip dhcp-server network
251
+ add address=192.168.10.0/24 gateway=192.168.10.1
252
+ add address=192.168.20.0/24 gateway=192.168.20.1
253
+
254
+ # Step 7: Firewall — block IoT from reaching trusted VLAN
255
+ /ip firewall filter
256
+ add chain=forward src-address=192.168.20.0/24 dst-address=192.168.10.0/24 \
257
+ action=drop comment="Block IoT to Trusted"
258
+ ```
259
+
260
+ ## Switch Trunk vs Access Ports
261
+
262
+ ```
263
+ # Trunk port: carries multiple VLANs (tagged) — connects switch-to-switch, switch-to-router, switch-to-AP
264
+ # Access port: carries one VLAN (untagged) — connects to end devices (PC, camera, NAS)
265
+
266
+ # A managed switch port connected to your router should be a trunk:
267
+ Allowed VLANs: 10, 20, 30, 40, 99
268
+
269
+ # A port connecting to a PC should be an access port:
270
+ VLAN: 10 (trusted)
271
+ No tagging — the PC does not know or care about VLANs
272
+
273
+ # A port connecting to an AP must be a trunk:
274
+ The AP tags traffic from each SSID with the right VLAN ID
275
+ Allowed VLANs: 10, 20, 40 (whichever SSIDs the AP serves)
276
+ ```
277
+
278
+ ## Anti-Patterns
279
+
280
+ ```
281
+ # BAD: Creating VLANs without adding firewall rules
282
+ # VLANs without firewall rules do not provide security — inter-VLAN routing is open by default
283
+ # GOOD: Add explicit block rules immediately after creating VLANs
284
+
285
+ # BAD: Putting the Pi-hole in the IoT VLAN
286
+ # IoT devices can reach it but trusted devices cannot (without extra rules)
287
+ # GOOD: Pi-hole in the Servers VLAN with a rule allowing all VLANs to reach port 53
288
+
289
+ # BAD: Native VLAN equals management VLAN
290
+ # Untagged traffic landing in your management VLAN enables VLAN hopping attacks
291
+ # GOOD: Use a dedicated unused VLAN as native (e.g. VLAN 999), keep management traffic tagged
292
+
293
+ # BAD: Same Wi-Fi password for IoT SSID and trusted SSID
294
+ # Anyone who learns the password can connect IoT devices to the wrong segment
295
+ ```
296
+
297
+ ## Best Practices
298
+
299
+ - Start with 4 VLANs: Trusted, IoT, Servers, Guest — add more as needed
300
+ - Put Pi-hole in the Servers VLAN (192.168.30.x)
301
+ - Add a firewall rule allowing DNS (port 53) from all VLANs to the Pi-hole IP — before any RFC1918 block rule
302
+ - Test isolation after every rule change: from the IoT VLAN, try to ping a trusted device — it should fail
303
+ - Use a management VLAN for switch and AP web UIs and restrict access to the Trusted VLAN only
304
+ - Document your VLAN design in a table (VLAN ID, name, subnet, purpose)
305
+
306
+ ## Related Skills
307
+
308
+ - homelab-network-setup
309
+ - homelab-pihole-dns
310
+ - homelab-wireguard-vpn