claudecode-omc 5.6.5 → 5.6.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.
- package/.local/commands/code-review.md +416 -0
- package/.local/commands/pr.md +250 -0
- package/.local/commands/prp-pr.md +244 -0
- package/.local/guidelines/CLAUDE.md +47 -0
- package/bundled/manifest.json +4 -4
- package/bundled/upstream/anthropic-skills/skills/algorithmic-art/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/brand-guidelines/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/canvas-design/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +120 -58
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +9 -9
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/managed-agents.md +336 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/go/managed-agents/README.md +561 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/managed-agents/README.md +442 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +10 -10
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/managed-agents/README.md +435 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +16 -16
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +7 -7
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +19 -19
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/managed-agents/README.md +332 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +4 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/managed-agents/README.md +389 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/agent-design.md +101 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +11 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +60 -48
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-api-reference.md +372 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-client-patterns.md +209 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-core.md +220 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-environments.md +211 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-events.md +195 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-memory.md +197 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-multiagent.md +99 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-onboarding.md +114 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-outcomes.md +106 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-overview.md +67 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-tools.md +315 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-webhooks.md +110 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/model-migration.md +779 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +16 -14
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +45 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +28 -6
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +15 -15
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +5 -5
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +15 -15
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/managed-agents/README.md +359 -0
- package/bundled/upstream/anthropic-skills/skills/internal-comms/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/skill-creator/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/theme-factory/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/webapp-testing/LICENSE.txt +1 -1
- package/bundled/upstream/ecc/.omc-source/bundle.json +2 -3
- package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +4 -4
- package/bundled/upstream/ecc/agents/a11y-architect.md +10 -2
- package/bundled/upstream/ecc/agents/architect.md +9 -0
- package/bundled/upstream/ecc/agents/build-error-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/chief-of-staff.md +9 -0
- package/bundled/upstream/ecc/agents/code-architect.md +9 -0
- package/bundled/upstream/ecc/agents/code-explorer.md +10 -1
- package/bundled/upstream/ecc/agents/code-reviewer.md +87 -1
- package/bundled/upstream/ecc/agents/code-simplifier.md +9 -0
- package/bundled/upstream/ecc/agents/comment-analyzer.md +10 -1
- package/bundled/upstream/ecc/agents/conversation-analyzer.md +9 -0
- package/bundled/upstream/ecc/agents/cpp-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/cpp-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/csharp-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/dart-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/database-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/django-build-resolver.md +252 -0
- package/bundled/upstream/ecc/agents/django-reviewer.md +169 -0
- package/bundled/upstream/ecc/agents/doc-updater.md +9 -0
- package/bundled/upstream/ecc/agents/docs-lookup.md +9 -0
- package/bundled/upstream/ecc/agents/e2e-runner.md +9 -0
- package/bundled/upstream/ecc/agents/fastapi-reviewer.md +79 -0
- package/bundled/upstream/ecc/agents/flutter-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/fsharp-reviewer.md +109 -0
- package/bundled/upstream/ecc/agents/gan-evaluator.md +9 -0
- package/bundled/upstream/ecc/agents/gan-generator.md +9 -0
- package/bundled/upstream/ecc/agents/gan-planner.md +9 -0
- package/bundled/upstream/ecc/agents/go-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/go-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/harmonyos-app-resolver.md +182 -0
- package/bundled/upstream/ecc/agents/harness-optimizer.md +9 -0
- package/bundled/upstream/ecc/agents/healthcare-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/homelab-architect.md +107 -0
- package/bundled/upstream/ecc/agents/java-build-resolver.md +133 -11
- package/bundled/upstream/ecc/agents/java-reviewer.md +130 -32
- package/bundled/upstream/ecc/agents/kotlin-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/kotlin-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/loop-operator.md +9 -0
- package/bundled/upstream/ecc/agents/mle-reviewer.md +162 -0
- package/bundled/upstream/ecc/agents/network-architect.md +106 -0
- package/bundled/upstream/ecc/agents/network-config-reviewer.md +106 -0
- package/bundled/upstream/ecc/agents/network-troubleshooter.md +128 -0
- package/bundled/upstream/ecc/agents/opensource-forker.md +9 -0
- package/bundled/upstream/ecc/agents/opensource-packager.md +9 -0
- package/bundled/upstream/ecc/agents/opensource-sanitizer.md +9 -0
- package/bundled/upstream/ecc/agents/performance-optimizer.md +9 -0
- package/bundled/upstream/ecc/agents/planner.md +9 -0
- package/bundled/upstream/ecc/agents/pr-test-analyzer.md +9 -0
- package/bundled/upstream/ecc/agents/python-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/pytorch-build-resolver.md +12 -3
- package/bundled/upstream/ecc/agents/refactor-cleaner.md +9 -0
- package/bundled/upstream/ecc/agents/rust-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/rust-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/security-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/seo-specialist.md +10 -1
- package/bundled/upstream/ecc/agents/silent-failure-hunter.md +9 -0
- package/bundled/upstream/ecc/agents/swift-build-resolver.md +170 -0
- package/bundled/upstream/ecc/agents/swift-reviewer.md +116 -0
- package/bundled/upstream/ecc/agents/tdd-guide.md +9 -0
- package/bundled/upstream/ecc/agents/type-design-analyzer.md +10 -1
- package/bundled/upstream/ecc/agents/typescript-reviewer.md +9 -0
- package/bundled/upstream/ecc/commands/auto-update.md +28 -0
- package/bundled/upstream/ecc/commands/build-fix.md +4 -0
- package/bundled/upstream/ecc/commands/checkpoint.md +4 -0
- package/bundled/upstream/ecc/commands/code-review.md +3 -3
- package/bundled/upstream/ecc/commands/cost-report.md +107 -0
- package/bundled/upstream/ecc/commands/cpp-build.md +1 -1
- package/bundled/upstream/ecc/commands/cpp-test.md +1 -1
- package/bundled/upstream/ecc/commands/ecc-guide.md +93 -0
- package/bundled/upstream/ecc/commands/fastapi-review.md +39 -0
- package/bundled/upstream/ecc/commands/flutter-build.md +1 -1
- package/bundled/upstream/ecc/commands/flutter-test.md +1 -1
- package/bundled/upstream/ecc/commands/gan-build.md +4 -0
- package/bundled/upstream/ecc/commands/gan-design.md +4 -0
- package/bundled/upstream/ecc/commands/go-build.md +1 -1
- package/bundled/upstream/ecc/commands/go-test.md +1 -1
- package/bundled/upstream/ecc/commands/harness-audit.md +4 -0
- package/bundled/upstream/ecc/commands/jira.md +2 -2
- package/bundled/upstream/ecc/commands/kotlin-build.md +1 -1
- package/bundled/upstream/ecc/commands/kotlin-test.md +1 -1
- package/bundled/upstream/ecc/commands/learn.md +4 -0
- package/bundled/upstream/ecc/commands/loop-start.md +4 -0
- package/bundled/upstream/ecc/commands/loop-status.md +54 -1
- package/bundled/upstream/ecc/commands/model-route.md +4 -0
- package/bundled/upstream/ecc/commands/multi-backend.md +4 -0
- package/bundled/upstream/ecc/commands/multi-execute.md +4 -0
- package/bundled/upstream/ecc/commands/multi-frontend.md +4 -0
- package/bundled/upstream/ecc/commands/multi-plan.md +4 -0
- package/bundled/upstream/ecc/commands/multi-workflow.md +4 -0
- package/bundled/upstream/ecc/commands/plan-prd.md +160 -0
- package/bundled/upstream/ecc/commands/plan.md +96 -13
- package/bundled/upstream/ecc/commands/pm2.md +4 -0
- package/bundled/upstream/ecc/commands/pr.md +184 -0
- package/bundled/upstream/ecc/commands/project-init.md +86 -0
- package/bundled/upstream/ecc/commands/python-review.md +1 -1
- package/bundled/upstream/ecc/commands/quality-gate.md +4 -0
- package/bundled/upstream/ecc/commands/refactor-clean.md +4 -0
- package/bundled/upstream/ecc/commands/rust-build.md +1 -1
- package/bundled/upstream/ecc/commands/rust-test.md +1 -1
- package/bundled/upstream/ecc/commands/security-scan.md +92 -0
- package/bundled/upstream/ecc/commands/sessions.md +6 -6
- package/bundled/upstream/ecc/commands/skill-health.md +3 -3
- package/bundled/upstream/ecc/commands/test-coverage.md +4 -0
- package/bundled/upstream/ecc/commands/update-codemaps.md +4 -0
- package/bundled/upstream/ecc/commands/update-docs.md +4 -0
- package/bundled/upstream/ecc/skills/accessibility/SKILL.md +1 -1
- package/bundled/upstream/ecc/skills/agent-architecture-audit/SKILL.md +256 -0
- package/bundled/upstream/ecc/skills/agent-payment-x402/SKILL.md +49 -3
- package/bundled/upstream/ecc/skills/agentic-os/SKILL.md +387 -0
- package/bundled/upstream/ecc/skills/angular-developer/SKILL.md +154 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/angular-animations.md +160 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/angular-aria.md +410 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/cli.md +86 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/component-harnesses.md +59 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/component-styling.md +91 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/components.md +117 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/creating-services.md +97 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/data-resolvers.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/define-routes.md +67 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/defining-providers.md +72 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/di-fundamentals.md +120 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/e2e-testing.md +56 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/effects.md +83 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/hierarchical-injectors.md +43 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/host-elements.md +80 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/injection-context.md +63 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/inputs.md +101 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/linked-signal.md +59 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/loading-strategies.md +61 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/mcp.md +108 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/navigate-to-routes.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/outputs.md +86 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/reactive-forms.md +122 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/rendering-strategies.md +44 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/resource.md +77 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/route-animations.md +56 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/route-guards.md +52 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/router-lifecycle.md +45 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/router-testing.md +87 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/signal-forms.md +795 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/signals-overview.md +94 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/tailwind-css.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/template-driven-forms.md +114 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/testing-fundamentals.md +65 -0
- package/bundled/upstream/ecc/skills/autonomous-agent-harness/SKILL.md +6 -0
- package/bundled/upstream/ecc/skills/backend-patterns/SKILL.md +8 -45
- package/bundled/upstream/ecc/skills/cisco-ios-patterns/SKILL.md +163 -0
- package/bundled/upstream/ecc/skills/configure-ecc/SKILL.md +31 -14
- package/bundled/upstream/ecc/skills/continuous-learning/SKILL.md +10 -2
- package/bundled/upstream/ecc/skills/continuous-learning-v2/SKILL.md +19 -5
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +44 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer.md +4 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/start-observer.sh +5 -1
- package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +21 -5
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +58 -13
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +97 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +34 -0
- package/bundled/upstream/ecc/skills/cost-tracking/SKILL.md +147 -0
- package/bundled/upstream/ecc/skills/deep-research/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/defi-amm-security/SKILL.md +6 -0
- package/bundled/upstream/ecc/skills/django-celery/SKILL.md +457 -0
- package/bundled/upstream/ecc/skills/ecc-guide/SKILL.md +189 -0
- package/bundled/upstream/ecc/skills/error-handling/SKILL.md +376 -0
- package/bundled/upstream/ecc/skills/exa-search/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/fal-ai-media/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/fastapi-patterns/SKILL.md +327 -0
- package/bundled/upstream/ecc/skills/flox-environments/SKILL.md +496 -0
- package/bundled/upstream/ecc/skills/frontend-design-direction/SKILL.md +92 -0
- package/bundled/upstream/ecc/skills/frontend-slides/animation-patterns.md +122 -0
- package/bundled/upstream/ecc/skills/frontend-slides/html-template.md +419 -0
- package/bundled/upstream/ecc/skills/frontend-slides/scripts/export-pdf.sh +418 -0
- package/bundled/upstream/ecc/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/bundled/upstream/ecc/skills/frontend-slides/viewport-base.css +153 -0
- package/bundled/upstream/ecc/skills/fsharp-testing/SKILL.md +280 -0
- package/bundled/upstream/ecc/skills/gateguard/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/hermes-imports/SKILL.md +88 -0
- package/bundled/upstream/ecc/skills/homelab-network-readiness/SKILL.md +169 -0
- package/bundled/upstream/ecc/skills/homelab-network-setup/SKILL.md +129 -0
- package/bundled/upstream/ecc/skills/homelab-pihole-dns/SKILL.md +274 -0
- package/bundled/upstream/ecc/skills/homelab-vlan-segmentation/SKILL.md +311 -0
- package/bundled/upstream/ecc/skills/homelab-wireguard-vpn/SKILL.md +305 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/SKILL.md +157 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
- package/bundled/upstream/ecc/skills/java-coding-standards/SKILL.md +241 -5
- package/bundled/upstream/ecc/skills/make-interfaces-feel-better/SKILL.md +151 -0
- package/bundled/upstream/ecc/skills/mle-workflow/SKILL.md +346 -0
- package/bundled/upstream/ecc/skills/motion-advanced/SKILL.md +596 -0
- package/bundled/upstream/ecc/skills/motion-foundations/SKILL.md +299 -0
- package/bundled/upstream/ecc/skills/motion-patterns/SKILL.md +435 -0
- package/bundled/upstream/ecc/skills/motion-ui/SKILL.md +575 -0
- package/bundled/upstream/ecc/skills/mysql-patterns/SKILL.md +412 -0
- package/bundled/upstream/ecc/skills/netmiko-ssh-automation/SKILL.md +173 -0
- package/bundled/upstream/ecc/skills/network-bgp-diagnostics/SKILL.md +167 -0
- package/bundled/upstream/ecc/skills/network-config-validation/SKILL.md +210 -0
- package/bundled/upstream/ecc/skills/network-interface-health/SKILL.md +152 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/SKILL.md +1 -9
- package/bundled/upstream/ecc/skills/plan-orchestrate/SKILL.md +262 -0
- package/bundled/upstream/ecc/skills/prisma-patterns/SKILL.md +371 -0
- package/bundled/upstream/ecc/skills/production-audit/SKILL.md +206 -0
- package/bundled/upstream/ecc/skills/prompt-optimizer/SKILL.md +24 -400
- package/bundled/upstream/ecc/skills/quarkus-patterns/SKILL.md +722 -0
- package/bundled/upstream/ecc/skills/quarkus-security/SKILL.md +467 -0
- package/bundled/upstream/ecc/skills/quarkus-tdd/SKILL.md +811 -0
- package/bundled/upstream/ecc/skills/quarkus-verification/SKILL.md +479 -0
- package/bundled/upstream/ecc/skills/redis-patterns/SKILL.md +403 -0
- package/bundled/upstream/ecc/skills/scientific-db-pubmed-database/SKILL.md +175 -0
- package/bundled/upstream/ecc/skills/scientific-db-uspto-database/SKILL.md +177 -0
- package/bundled/upstream/ecc/skills/scientific-pkg-gget/SKILL.md +166 -0
- package/bundled/upstream/ecc/skills/scientific-thinking-literature-review/SKILL.md +192 -0
- package/bundled/upstream/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
- package/bundled/upstream/ecc/skills/search-first/SKILL.md +23 -2
- package/bundled/upstream/ecc/skills/security-review/SKILL.md +10 -2
- package/bundled/upstream/ecc/skills/skill-comply/scripts/runner.py +28 -3
- package/bundled/upstream/ecc/skills/skill-comply/tests/test_runner.py +172 -0
- package/bundled/upstream/ecc/skills/skill-scout/SKILL.md +140 -0
- package/bundled/upstream/ecc/skills/skill-stocktake/SKILL.md +1 -0
- package/bundled/upstream/ecc/skills/strategic-compact/SKILL.md +2 -2
- package/bundled/upstream/ecc/skills/tinystruct-patterns/SKILL.md +203 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/architecture.md +90 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/data-handling.md +60 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/database.md +99 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/routing.md +64 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/system-usage.md +97 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/testing.md +72 -0
- package/bundled/upstream/ecc/skills/ui-to-vue/SKILL.md +134 -0
- package/bundled/upstream/ecc/skills/vite-patterns/SKILL.md +449 -0
- package/bundled/upstream/ecc/skills/windows-desktop-e2e/SKILL.md +788 -0
- package/bundled/upstream/ecc/skills/x-api/SKILL.md +4 -0
- package/bundled/upstream/oh-my-claudecode/.omc-source/bundle.json +20 -0
- package/bundled/upstream/oh-my-claudecode/agents/analyst.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/architect.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/code-reviewer.md +26 -7
- package/bundled/upstream/oh-my-claudecode/agents/critic.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/debugger.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/designer.md +14 -1
- package/bundled/upstream/oh-my-claudecode/agents/document-specialist.md +1 -1
- package/bundled/upstream/oh-my-claudecode/agents/executor.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/explore.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/git-master.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/planner.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/qa-tester.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/scientist.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/security-reviewer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/test-engineer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/tracer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/verifier.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/writer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/skills/AGENTS.md +4 -3
- package/bundled/upstream/oh-my-claudecode/skills/ai-slop-cleaner/SKILL.md +12 -0
- package/bundled/upstream/oh-my-claudecode/skills/deep-dive/SKILL.md +69 -13
- package/bundled/upstream/oh-my-claudecode/skills/deep-interview/SKILL.md +176 -63
- package/bundled/upstream/oh-my-claudecode/skills/learner/SKILL.md +3 -1
- package/bundled/upstream/oh-my-claudecode/skills/omc-doctor/SKILL.md +22 -3
- package/bundled/upstream/oh-my-claudecode/skills/omc-reference/SKILL.md +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/01-install-claude-md.md +2 -2
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/02-configure.md +45 -2
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/03-integrations.md +46 -5
- package/bundled/upstream/oh-my-claudecode/skills/plan/SKILL.md +19 -17
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/config.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/parse.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/azure-devops.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/bitbucket.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitea.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/github.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitlab.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/interface.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/jira.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/session.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/tmux.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/worktree.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/psm.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/tests/test-psm-prompt-injection.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/ralph/SKILL.md +8 -8
- package/bundled/upstream/oh-my-claudecode/skills/ralplan/SKILL.md +9 -5
- package/bundled/upstream/oh-my-claudecode/skills/skill/SKILL.md +6 -6
- package/bundled/upstream/oh-my-claudecode/skills/skillify/SKILL.md +19 -3
- package/bundled/upstream/oh-my-claudecode/skills/trace/SKILL.md +3 -1
- package/bundled/upstream/oh-my-claudecode/skills/ultrawork/SKILL.md +20 -7
- package/bundled/upstream/superpowers/.omc-source/bundle.json +21 -0
- package/bundled/upstream/superpowers/hooks/hooks-cursor.json +1 -1
- package/bundled/upstream/superpowers/skills/executing-plans/SKILL.md +1 -1
- package/bundled/upstream/superpowers/skills/finishing-a-development-branch/SKILL.md +93 -42
- package/bundled/upstream/superpowers/skills/requesting-code-review/SKILL.md +7 -9
- package/bundled/upstream/superpowers/skills/requesting-code-review/code-reviewer.md +107 -85
- package/bundled/upstream/superpowers/skills/subagent-driven-development/SKILL.md +3 -1
- package/bundled/upstream/superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +2 -3
- package/bundled/upstream/superpowers/skills/systematic-debugging/CREATION-LOG.md +1 -1
- package/bundled/upstream/superpowers/skills/systematic-debugging/root-cause-tracing.md +1 -1
- package/bundled/upstream/superpowers/skills/using-git-worktrees/SKILL.md +95 -98
- package/bundled/upstream/superpowers/skills/using-superpowers/references/codex-tools.md +7 -48
- package/bundled/upstream/superpowers/skills/using-superpowers/references/copilot-tools.md +1 -11
- package/bundled/upstream/superpowers/skills/using-superpowers/references/gemini-tools.md +21 -3
- package/bundled/upstream/superpowers/skills/writing-plans/SKILL.md +1 -1
- package/package.json +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/README.md +0 -355
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/patterns.md +0 -359
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/README.md +0 -297
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/patterns.md +0 -209
- package/bundled/upstream/ecc/commands/agent-sort.md +0 -23
- package/bundled/upstream/ecc/commands/claw.md +0 -23
- package/bundled/upstream/ecc/commands/context-budget.md +0 -23
- package/bundled/upstream/ecc/commands/devfleet.md +0 -23
- package/bundled/upstream/ecc/commands/docs.md +0 -23
- package/bundled/upstream/ecc/commands/e2e.md +0 -268
- package/bundled/upstream/ecc/commands/eval.md +0 -23
- package/bundled/upstream/ecc/commands/orchestrate.md +0 -135
- package/bundled/upstream/ecc/commands/prompt-optimize.md +0 -23
- package/bundled/upstream/ecc/commands/rules-distill.md +0 -20
- package/bundled/upstream/ecc/commands/tdd.md +0 -231
- package/bundled/upstream/ecc/commands/verify.md +0 -23
- package/bundled/upstream/ecc/skills/claude-api/SKILL.md +0 -337
- package/bundled/upstream/ecc/skills/frontend-design/SKILL.md +0 -145
- package/bundled/upstream/superpowers/agents/code-reviewer.md +0 -48
- package/bundled/upstream/superpowers/commands/brainstorm.md +0 -5
- package/bundled/upstream/superpowers/commands/execute-plan.md +0 -5
- package/bundled/upstream/superpowers/commands/write-plan.md +0 -5
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: homelab-wireguard-vpn
|
|
3
|
+
description: WireGuard VPN server setup, peer configuration, key generation, split tunneling vs full tunnel routing, and remote access to a home network from mobile and laptop clients.
|
|
4
|
+
origin: community
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Homelab WireGuard VPN
|
|
8
|
+
|
|
9
|
+
WireGuard is a fast, modern VPN protocol. It is the right choice for remote access to a
|
|
10
|
+
home network — simpler to configure than OpenVPN and faster than most alternatives.
|
|
11
|
+
|
|
12
|
+
All configuration examples show common setups. Review each command — especially the
|
|
13
|
+
iptables forwarding rules and key file permissions — before applying them to your
|
|
14
|
+
system, and make changes in a maintenance window.
|
|
15
|
+
|
|
16
|
+
## When to Use
|
|
17
|
+
|
|
18
|
+
- Setting up WireGuard server on a Raspberry Pi, Linux host, pfSense, or router
|
|
19
|
+
- Generating WireGuard keypairs and writing peer config files
|
|
20
|
+
- Configuring remote access from a phone or laptop to a home network
|
|
21
|
+
- Explaining split tunneling (route only home traffic) vs full tunnel (route all traffic)
|
|
22
|
+
- Troubleshooting WireGuard connections that will not come up
|
|
23
|
+
- Automating peer configuration generation for multiple clients
|
|
24
|
+
|
|
25
|
+
## How WireGuard Works
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Your phone (WireGuard client)
|
|
29
|
+
│
|
|
30
|
+
│ Encrypted UDP tunnel (port 51820)
|
|
31
|
+
│
|
|
32
|
+
Your home router (WireGuard server — needs a public IP or DDNS)
|
|
33
|
+
│
|
|
34
|
+
Your home network (192.168.1.0/24, NAS, Pi, etc.)
|
|
35
|
+
|
|
36
|
+
Every device has a keypair (public + private key).
|
|
37
|
+
The server knows each client's public key.
|
|
38
|
+
The client knows the server's public key + endpoint (IP:port).
|
|
39
|
+
Traffic is encrypted end-to-end with no central server or certificate authority.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Server Setup (Linux)
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Install WireGuard
|
|
46
|
+
sudo apt update && sudo apt install wireguard -y
|
|
47
|
+
|
|
48
|
+
# Generate server keypair — create files with private permissions from the start
|
|
49
|
+
sudo mkdir -p /etc/wireguard
|
|
50
|
+
sudo sh -c 'umask 077; wg genkey > /etc/wireguard/server_private.key'
|
|
51
|
+
sudo sh -c 'wg pubkey < /etc/wireguard/server_private.key > /etc/wireguard/server_public.key'
|
|
52
|
+
|
|
53
|
+
# Write server config — substitute the actual private key value
|
|
54
|
+
# Do not store private keys in version control or share them
|
|
55
|
+
sudo tee /etc/wireguard/wg0.conf << 'EOF'
|
|
56
|
+
[Interface]
|
|
57
|
+
Address = 10.8.0.1/24 # VPN subnet — server gets .1
|
|
58
|
+
ListenPort = 51820
|
|
59
|
+
PrivateKey = <paste_server_private_key_here>
|
|
60
|
+
|
|
61
|
+
# Scoped forwarding rules: allow VPN traffic in/out, not a blanket FORWARD ACCEPT
|
|
62
|
+
PostUp = iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT
|
|
63
|
+
PostUp = iptables -A FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
|
|
64
|
+
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
|
65
|
+
PostDown = iptables -D FORWARD -i wg0 -o eth0 -j ACCEPT
|
|
66
|
+
PostDown = iptables -D FORWARD -i eth0 -o wg0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
|
|
67
|
+
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
|
|
68
|
+
|
|
69
|
+
[Peer]
|
|
70
|
+
# Phone — replace with the actual phone public key
|
|
71
|
+
PublicKey = <phone_public_key>
|
|
72
|
+
AllowedIPs = 10.8.0.2/32
|
|
73
|
+
|
|
74
|
+
[Peer]
|
|
75
|
+
# Laptop — replace with the actual laptop public key
|
|
76
|
+
PublicKey = <laptop_public_key>
|
|
77
|
+
AllowedIPs = 10.8.0.3/32
|
|
78
|
+
EOF
|
|
79
|
+
sudo chmod 600 /etc/wireguard/wg0.conf
|
|
80
|
+
|
|
81
|
+
# Replace eth0 with your actual outbound interface name
|
|
82
|
+
# Check with: ip route show default
|
|
83
|
+
|
|
84
|
+
# Enable IP forwarding (required for routing traffic through the server)
|
|
85
|
+
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
|
|
86
|
+
sudo sysctl --system
|
|
87
|
+
|
|
88
|
+
# Start WireGuard and enable on boot
|
|
89
|
+
sudo wg-quick up wg0
|
|
90
|
+
sudo systemctl enable wg-quick@wg0
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Client Configuration
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Generate a unique keypair for each client device
|
|
97
|
+
# Run on the client, or on the server and transfer the private key securely — never in plaintext
|
|
98
|
+
umask 077
|
|
99
|
+
wg genkey | tee phone_private.key | wg pubkey > phone_public.key
|
|
100
|
+
|
|
101
|
+
# Client config file (phone_wg0.conf):
|
|
102
|
+
[Interface]
|
|
103
|
+
PrivateKey = <phone_private_key>
|
|
104
|
+
Address = 10.8.0.2/32
|
|
105
|
+
DNS = 192.168.1.2 # Optional: use Pi-hole for DNS over the tunnel
|
|
106
|
+
|
|
107
|
+
[Peer]
|
|
108
|
+
PublicKey = <server_public_key>
|
|
109
|
+
Endpoint = your-home-ip.ddns.net:51820 # Your public IP or DDNS hostname
|
|
110
|
+
AllowedIPs = 192.168.1.0/24 # Split tunnel: only home network traffic
|
|
111
|
+
# AllowedIPs = 0.0.0.0/0, ::/0 # Full tunnel: all traffic through VPN
|
|
112
|
+
|
|
113
|
+
PersistentKeepalive = 25 # Keep NAT hole open (required for mobile clients)
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Split Tunnel vs Full Tunnel
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
# Split tunnel: AllowedIPs = 192.168.1.0/24
|
|
120
|
+
Only traffic destined for your home network goes through the VPN.
|
|
121
|
+
Internet traffic (YouTube, Spotify) goes directly — better performance on mobile.
|
|
122
|
+
Best for: "I just want to reach my NAS and Pi from anywhere."
|
|
123
|
+
|
|
124
|
+
# Full tunnel: AllowedIPs = 0.0.0.0/0, ::/0
|
|
125
|
+
ALL traffic goes through your home internet connection.
|
|
126
|
+
Useful for: piggybacking home DNS/Pi-hole ad blocking.
|
|
127
|
+
Downside: home upload speed becomes your bottleneck everywhere.
|
|
128
|
+
|
|
129
|
+
# Multi-subnet split tunnel (most common homelab use case):
|
|
130
|
+
AllowedIPs = 192.168.10.0/24, 192.168.20.0/24, 192.168.30.0/24, 10.8.0.0/24
|
|
131
|
+
Routes all your VLANs through the tunnel; internet stays direct.
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Key Generation and Peer Management
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
import subprocess
|
|
138
|
+
|
|
139
|
+
def generate_keypair() -> tuple[str, str]:
|
|
140
|
+
"""Generate a WireGuard keypair. Returns (private_key, public_key)."""
|
|
141
|
+
private = subprocess.check_output(["wg", "genkey"]).decode().strip()
|
|
142
|
+
public = subprocess.run(
|
|
143
|
+
["wg", "pubkey"], input=private.encode(), capture_output=True
|
|
144
|
+
).stdout.decode().strip()
|
|
145
|
+
return private, public
|
|
146
|
+
|
|
147
|
+
def generate_preshared_key() -> str:
|
|
148
|
+
return subprocess.check_output(["wg", "genpsk"]).decode().strip()
|
|
149
|
+
|
|
150
|
+
def build_client_config(
|
|
151
|
+
client_private_key: str,
|
|
152
|
+
client_vpn_ip: str, # e.g. "10.8.0.3"
|
|
153
|
+
server_public_key: str,
|
|
154
|
+
server_endpoint: str, # e.g. "home.example.com:51820"
|
|
155
|
+
allowed_ips: str = "192.168.1.0/24",
|
|
156
|
+
dns: str = "",
|
|
157
|
+
) -> str:
|
|
158
|
+
dns_line = f"DNS = {dns}\n" if dns else ""
|
|
159
|
+
return f"""[Interface]
|
|
160
|
+
PrivateKey = {client_private_key}
|
|
161
|
+
Address = {client_vpn_ip}/32
|
|
162
|
+
{dns_line}
|
|
163
|
+
[Peer]
|
|
164
|
+
PublicKey = {server_public_key}
|
|
165
|
+
Endpoint = {server_endpoint}
|
|
166
|
+
AllowedIPs = {allowed_ips}
|
|
167
|
+
PersistentKeepalive = 25
|
|
168
|
+
"""
|
|
169
|
+
|
|
170
|
+
def build_server_peer_block(
|
|
171
|
+
client_public_key: str,
|
|
172
|
+
client_vpn_ip: str,
|
|
173
|
+
comment: str = "",
|
|
174
|
+
) -> str:
|
|
175
|
+
comment_line = f"# {comment}\n" if comment else ""
|
|
176
|
+
return f"""
|
|
177
|
+
{comment_line}[Peer]
|
|
178
|
+
PublicKey = {client_public_key}
|
|
179
|
+
AllowedIPs = {client_vpn_ip}/32
|
|
180
|
+
"""
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Keep private keys out of source control. If you use this script, write key material
|
|
184
|
+
to files with mode 600 and never log or print it.
|
|
185
|
+
|
|
186
|
+
## pfSense / OPNsense WireGuard
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
# pfSense: VPN → WireGuard → Add Tunnel
|
|
190
|
+
Interface Keys: Generate (creates keypair automatically)
|
|
191
|
+
Listen Port: 51820
|
|
192
|
+
Interface Address: 10.8.0.1/24
|
|
193
|
+
|
|
194
|
+
# Add Peer (one per client):
|
|
195
|
+
Public Key: <client public key>
|
|
196
|
+
Allowed IPs: 10.8.0.2/32
|
|
197
|
+
|
|
198
|
+
# Assign the WireGuard interface:
|
|
199
|
+
Interfaces → Assignments → Add (select wg0)
|
|
200
|
+
Enable interface, no IP needed (it is set in the tunnel config)
|
|
201
|
+
|
|
202
|
+
# Firewall rules:
|
|
203
|
+
WAN → Allow UDP port 51820 inbound (so clients can reach the server)
|
|
204
|
+
WireGuard interface → Allow traffic to LAN networks you want reachable
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## DDNS (Dynamic DNS) for Home Servers
|
|
208
|
+
|
|
209
|
+
Most home internet connections have a dynamic IP. Use DDNS so your VPN endpoint
|
|
210
|
+
stays reachable after an IP change.
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# Option 1: Cloudflare DDNS — store credentials in a secrets file, not inline
|
|
214
|
+
# docker-compose entry using an env file:
|
|
215
|
+
ddns-updater:
|
|
216
|
+
image: qmcgaw/ddns-updater
|
|
217
|
+
env_file: ./ddns.env # store zone_id and token here, not in compose
|
|
218
|
+
restart: unless-stopped
|
|
219
|
+
|
|
220
|
+
# ddns.env (chmod 600, not committed to git):
|
|
221
|
+
# SETTINGS_CLOUDFLARE_ZONE_ID=your_zone_id
|
|
222
|
+
# SETTINGS_CLOUDFLARE_TOKEN=your_api_token
|
|
223
|
+
|
|
224
|
+
# Option 2: DuckDNS (free, simple)
|
|
225
|
+
Sign up at duckdns.org → get a token and subdomain (myhome.duckdns.org)
|
|
226
|
+
Store token in /etc/ddns.env (mode 600), then use a small root-owned script:
|
|
227
|
+
|
|
228
|
+
# /usr/local/bin/update-duckdns
|
|
229
|
+
#!/bin/sh
|
|
230
|
+
set -eu
|
|
231
|
+
. /etc/ddns.env
|
|
232
|
+
curl --fail --silent --show-error --max-time 10 \
|
|
233
|
+
--get "https://www.duckdns.org/update" \
|
|
234
|
+
--data-urlencode "domains=myhome" \
|
|
235
|
+
--data-urlencode "token=${DUCKDNS_TOKEN}" \
|
|
236
|
+
--data-urlencode "ip="
|
|
237
|
+
|
|
238
|
+
# Cron job:
|
|
239
|
+
*/5 * * * * /usr/local/bin/update-duckdns >/dev/null 2>&1
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Troubleshooting
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
# Check WireGuard status and last handshake
|
|
246
|
+
sudo wg show
|
|
247
|
+
|
|
248
|
+
# If "latest handshake" is never or very old, the tunnel is not connected.
|
|
249
|
+
# Check:
|
|
250
|
+
# 1. Is UDP port 51820 open on the router/firewall?
|
|
251
|
+
sudo ufw status # or check pfSense/UniFi firewall rules
|
|
252
|
+
|
|
253
|
+
# 2. Is the server public key in the client config correct?
|
|
254
|
+
sudo wg show wg0 public-key # Compare to what is in the client config
|
|
255
|
+
|
|
256
|
+
# 3. Is IP forwarding enabled on the server?
|
|
257
|
+
cat /proc/sys/net/ipv4/ip_forward # Should be 1
|
|
258
|
+
|
|
259
|
+
# 4. Does the client AllowedIPs cover the IP you are trying to reach?
|
|
260
|
+
# If AllowedIPs = 192.168.1.0/24 and you are trying to reach 192.168.3.5, it will not route.
|
|
261
|
+
|
|
262
|
+
# Check kernel logs for WireGuard errors
|
|
263
|
+
dmesg | grep wireguard
|
|
264
|
+
|
|
265
|
+
# Restart WireGuard
|
|
266
|
+
sudo wg-quick down wg0 && sudo wg-quick up wg0
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
## Anti-Patterns
|
|
270
|
+
|
|
271
|
+
```
|
|
272
|
+
# BAD: Storing private keys in version control or sharing them
|
|
273
|
+
# Private keys are equivalent to passwords — never commit them to git
|
|
274
|
+
|
|
275
|
+
# BAD: Using AllowedIPs = 0.0.0.0/0 on mobile without considering the impact
|
|
276
|
+
# Full tunnel routes all mobile traffic through your home upload — usually slow
|
|
277
|
+
|
|
278
|
+
# BAD: Not setting PersistentKeepalive on mobile clients
|
|
279
|
+
# Mobile clients behind NAT drop idle tunnels without it
|
|
280
|
+
|
|
281
|
+
# BAD: Opening port 51820 in the firewall but forgetting IP forwarding on the server
|
|
282
|
+
# Tunnel connects but no traffic routes — confusing to debug
|
|
283
|
+
|
|
284
|
+
# BAD: Sharing a keypair across multiple client devices
|
|
285
|
+
# Each device must have its own unique keypair — shared keys break the security model
|
|
286
|
+
|
|
287
|
+
# BAD: Using a broad "FORWARD ACCEPT" iptables rule
|
|
288
|
+
# Scope forwarding rules to the wg0 interface and direction only
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
## Best Practices
|
|
292
|
+
|
|
293
|
+
- Generate a unique keypair per client device — never reuse keys
|
|
294
|
+
- Use split tunneling (`AllowedIPs = <home subnets>`) for mobile
|
|
295
|
+
- Set `PersistentKeepalive = 25` on all mobile clients
|
|
296
|
+
- Use DDNS if your ISP assigns a dynamic IP; store credentials in env files, not inline
|
|
297
|
+
- Use scoped iptables forwarding rules (inbound on wg0 only) rather than a blanket FORWARD ACCEPT
|
|
298
|
+
- Add Pi-hole's IP as `DNS =` in client configs to get ad blocking over the VPN
|
|
299
|
+
- Rotate the server keypair periodically and update all client configs
|
|
300
|
+
|
|
301
|
+
## Related Skills
|
|
302
|
+
|
|
303
|
+
- homelab-network-setup
|
|
304
|
+
- homelab-vlan-segmentation
|
|
305
|
+
- homelab-pihole-dns
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ios-icon-gen
|
|
3
|
+
description: Generate iOS app icons as PNG imagesets for Xcode asset catalogs from SF Symbols (5000+ Apple-native) or Iconify API (275k+ open source icons from 200+ collections). Use when generating icons, creating icon assets, adding icons to asset catalog, or searching for icons for iOS projects.
|
|
4
|
+
origin: community
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# iOS Icon Generator
|
|
8
|
+
|
|
9
|
+
Generate PNG icon imagesets for Xcode asset catalogs from two sources.
|
|
10
|
+
|
|
11
|
+
## When to Activate
|
|
12
|
+
|
|
13
|
+
- Generating icon assets for an iOS/macOS Xcode project
|
|
14
|
+
- Searching for icons across open source collections
|
|
15
|
+
- Creating PNG imagesets (1x, 2x, 3x) for asset catalogs
|
|
16
|
+
- Replacing placeholder icons with production-quality assets
|
|
17
|
+
- Matching existing icon styles in an Xcode project
|
|
18
|
+
|
|
19
|
+
## Core Principles
|
|
20
|
+
|
|
21
|
+
### 1. Two Sources, One Output Format
|
|
22
|
+
Both sources produce identical Xcode-compatible imagesets. Choose based on need:
|
|
23
|
+
|
|
24
|
+
| Source | Icons | Requires | Best for |
|
|
25
|
+
|--------|-------|----------|----------|
|
|
26
|
+
| **Iconify API** | 275,000+ from 200+ collections | Internet | Wide selection, specific styles, open source icons |
|
|
27
|
+
| **SF Symbols** | 5,000+ Apple symbols | macOS only | Apple-native style, offline use |
|
|
28
|
+
|
|
29
|
+
### 2. Always Match Existing Style
|
|
30
|
+
Before generating, check the project's existing icons for size, color, and weight consistency.
|
|
31
|
+
|
|
32
|
+
### 3. Output Structure
|
|
33
|
+
Both methods produce a complete Xcode imageset:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
<output-dir>/<asset-name>.imageset/
|
|
37
|
+
Contents.json
|
|
38
|
+
<asset-name>.png # 1x (68px default)
|
|
39
|
+
<asset-name>@2x.png # 2x (136px default)
|
|
40
|
+
<asset-name>@3x.png # 3x (204px default)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
### Step 1: Assess Requirements
|
|
46
|
+
|
|
47
|
+
Determine icon needs: what the icon represents, preferred style, target color, and size.
|
|
48
|
+
|
|
49
|
+
If the project already has icons, check existing style:
|
|
50
|
+
```bash
|
|
51
|
+
# Check dimensions of existing icon
|
|
52
|
+
sips -g pixelWidth -g pixelHeight path/to/existing@2x.png
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Step 2: Search for Icons
|
|
56
|
+
|
|
57
|
+
**Iconify API (recommended for wide selection):**
|
|
58
|
+
```bash
|
|
59
|
+
# Search all collections
|
|
60
|
+
$SKILL_DIR/scripts/iconify_gen.sh search "receipt"
|
|
61
|
+
|
|
62
|
+
# Search within a specific collection
|
|
63
|
+
$SKILL_DIR/scripts/iconify_gen.sh search "business card" --prefix mdi
|
|
64
|
+
|
|
65
|
+
# List available collections
|
|
66
|
+
$SKILL_DIR/scripts/iconify_gen.sh collections
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**SF Symbols (for Apple-native style):**
|
|
70
|
+
Browse the SF Symbols app or reference common names:
|
|
71
|
+
|
|
72
|
+
| Use Case | Symbol Name |
|
|
73
|
+
|----------|-------------|
|
|
74
|
+
| Document | `doc.text`, `doc.fill` |
|
|
75
|
+
| Receipt | `doc.text.below.ecg`, `receipt` |
|
|
76
|
+
| Person | `person.crop.rectangle`, `person.text.rectangle` |
|
|
77
|
+
| Camera | `camera`, `camera.fill` |
|
|
78
|
+
| Scan | `doc.viewfinder`, `qrcode.viewfinder` |
|
|
79
|
+
| Settings | `gearshape`, `slider.horizontal.3` |
|
|
80
|
+
|
|
81
|
+
### Step 3: Preview (Optional)
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
# Iconify preview
|
|
85
|
+
$SKILL_DIR/scripts/iconify_gen.sh preview mdi:receipt-text-outline
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Step 4: Generate
|
|
89
|
+
|
|
90
|
+
**Iconify API:**
|
|
91
|
+
```bash
|
|
92
|
+
# Basic generation
|
|
93
|
+
$SKILL_DIR/scripts/iconify_gen.sh mdi:receipt-text-outline editTool_expenseReport
|
|
94
|
+
|
|
95
|
+
# Custom color and output location
|
|
96
|
+
$SKILL_DIR/scripts/iconify_gen.sh mdi:receipt-text-outline myIcon --color 007AFF --output ./Assets.xcassets/icons
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Options: `--size <pt>` (default: 68), `--color <hex>` (default: 8E8E93), `--output <dir>` (default: /tmp/icons)
|
|
100
|
+
|
|
101
|
+
**SF Symbols:**
|
|
102
|
+
```bash
|
|
103
|
+
# Basic generation
|
|
104
|
+
swift $SKILL_DIR/scripts/generate_icons.swift doc.text.below.ecg editTool_expenseReport
|
|
105
|
+
|
|
106
|
+
# Custom color, weight, and output
|
|
107
|
+
swift $SKILL_DIR/scripts/generate_icons.swift person.crop.rectangle myIcon --color 007AFF --weight regular --output ./Assets.xcassets/icons
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Options: `--size <pt>` (default: 68), `--color <hex>` (default: 8E8E93), `--weight <name>` (default: thin), `--output <dir>` (default: /tmp/icons)
|
|
111
|
+
|
|
112
|
+
### Step 5: Verify and Integrate
|
|
113
|
+
|
|
114
|
+
1. Read the generated @2x PNG to verify visually
|
|
115
|
+
2. Copy to asset catalog if not output there directly:
|
|
116
|
+
```bash
|
|
117
|
+
cp -r /tmp/icons/<name>.imageset path/to/Assets.xcassets/<group>/
|
|
118
|
+
```
|
|
119
|
+
3. Build the project to verify Xcode picks up the new assets
|
|
120
|
+
|
|
121
|
+
## Popular Iconify Collections
|
|
122
|
+
|
|
123
|
+
| Prefix | Name | Count | Style |
|
|
124
|
+
|--------|------|-------|-------|
|
|
125
|
+
| `mdi` | Material Design Icons | 7400+ | Filled + outline variants |
|
|
126
|
+
| `ph` | Phosphor | 9000+ | 6 weights per icon |
|
|
127
|
+
| `solar` | Solar | 7400+ | Bold, linear, outline |
|
|
128
|
+
| `tabler` | Tabler Icons | 6000+ | Consistent stroke width |
|
|
129
|
+
| `lucide` | Lucide | 1700+ | Clean, minimal |
|
|
130
|
+
| `ri` | Remix Icon | 3100+ | Filled + line variants |
|
|
131
|
+
| `carbon` | Carbon | 2400+ | IBM design language |
|
|
132
|
+
| `heroicons` | HeroIcons | 1200+ | Tailwind CSS companion |
|
|
133
|
+
|
|
134
|
+
Browse all: <https://icon-sets.iconify.design/>
|
|
135
|
+
|
|
136
|
+
## Scripts Reference
|
|
137
|
+
|
|
138
|
+
| Script | Source | Path |
|
|
139
|
+
|--------|--------|------|
|
|
140
|
+
| `iconify_gen.sh` | Iconify API (275k+ icons) | `$SKILL_DIR/scripts/iconify_gen.sh` |
|
|
141
|
+
| `generate_icons.swift` | SF Symbols (5k+ icons) | `$SKILL_DIR/scripts/generate_icons.swift` |
|
|
142
|
+
|
|
143
|
+
## Best Practices
|
|
144
|
+
|
|
145
|
+
- **Search before generating** -- browse available icons to find the best match
|
|
146
|
+
- **Match existing project style** -- check dimensions, color, and weight of existing icons before generating new ones
|
|
147
|
+
- **Use Iconify for variety** -- 200+ collections means you can find the exact style you need
|
|
148
|
+
- **Use SF Symbols for Apple consistency** -- they match system UI perfectly
|
|
149
|
+
- **Generate directly to asset catalog** -- use `--output ./Assets.xcassets/icons` to skip manual copying
|
|
150
|
+
- **Verify visually** -- always preview the @2x PNG before committing
|
|
151
|
+
|
|
152
|
+
## Anti-Patterns
|
|
153
|
+
|
|
154
|
+
- Generating icons without checking existing project icon style
|
|
155
|
+
- Using default colors when the project has a defined color palette
|
|
156
|
+
- Generating at wrong sizes (check existing icons first)
|
|
157
|
+
- Committing generated icons without visual verification
|