@heytherevibin/skillforge 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/CODE_OF_CONDUCT.md +34 -0
- package/CONTRIBUTING.md +38 -0
- package/LICENSE +21 -0
- package/README.md +337 -0
- package/RELEASING.md +93 -0
- package/SECURITY.md +31 -0
- package/STRATEGY.md +26 -0
- package/bin/cli.js +547 -0
- package/lib/packs.js +184 -0
- package/package.json +38 -0
- package/python/app/__init__.py +0 -0
- package/python/app/__pycache__/__init__.cpython-312.pyc +0 -0
- package/python/app/__pycache__/auth.cpython-312.pyc +0 -0
- package/python/app/__pycache__/main.cpython-312.pyc +0 -0
- package/python/app/auth.py +63 -0
- package/python/app/cli.py +78 -0
- package/python/app/db_paths.py +26 -0
- package/python/app/events_cli.py +175 -0
- package/python/app/main.py +647 -0
- package/python/app/materialize.py +138 -0
- package/python/app/mcp_server.py +610 -0
- package/python/app/route_cli.py +117 -0
- package/python/requirements-dev.txt +1 -0
- package/python/requirements.txt +7 -0
- package/python/tests/test_db_paths.py +41 -0
- package/skills/accessibility/SKILL.md +145 -0
- package/skills/agent-architecture-audit/SKILL.md +256 -0
- package/skills/agent-eval/SKILL.md +144 -0
- package/skills/agent-harness-construction/SKILL.md +72 -0
- package/skills/agent-introspection-debugging/SKILL.md +152 -0
- package/skills/agent-payment-x402/SKILL.md +224 -0
- package/skills/agent-sort/SKILL.md +214 -0
- package/skills/agentic-engineering/SKILL.md +62 -0
- package/skills/agentic-os/SKILL.md +386 -0
- package/skills/ai-first-engineering/SKILL.md +50 -0
- package/skills/ai-regression-testing/SKILL.md +384 -0
- package/skills/android-clean-architecture/SKILL.md +338 -0
- package/skills/angular-developer/SKILL.md +153 -0
- package/skills/angular-developer/references/angular-animations.md +160 -0
- package/skills/angular-developer/references/angular-aria.md +410 -0
- package/skills/angular-developer/references/cli.md +86 -0
- package/skills/angular-developer/references/component-harnesses.md +59 -0
- package/skills/angular-developer/references/component-styling.md +91 -0
- package/skills/angular-developer/references/components.md +117 -0
- package/skills/angular-developer/references/creating-services.md +97 -0
- package/skills/angular-developer/references/data-resolvers.md +69 -0
- package/skills/angular-developer/references/define-routes.md +67 -0
- package/skills/angular-developer/references/defining-providers.md +72 -0
- package/skills/angular-developer/references/di-fundamentals.md +120 -0
- package/skills/angular-developer/references/e2e-testing.md +56 -0
- package/skills/angular-developer/references/effects.md +83 -0
- package/skills/angular-developer/references/hierarchical-injectors.md +43 -0
- package/skills/angular-developer/references/host-elements.md +80 -0
- package/skills/angular-developer/references/injection-context.md +63 -0
- package/skills/angular-developer/references/inputs.md +101 -0
- package/skills/angular-developer/references/linked-signal.md +59 -0
- package/skills/angular-developer/references/loading-strategies.md +61 -0
- package/skills/angular-developer/references/mcp.md +108 -0
- package/skills/angular-developer/references/navigate-to-routes.md +69 -0
- package/skills/angular-developer/references/outputs.md +86 -0
- package/skills/angular-developer/references/reactive-forms.md +122 -0
- package/skills/angular-developer/references/rendering-strategies.md +44 -0
- package/skills/angular-developer/references/resource.md +77 -0
- package/skills/angular-developer/references/route-animations.md +56 -0
- package/skills/angular-developer/references/route-guards.md +52 -0
- package/skills/angular-developer/references/router-lifecycle.md +45 -0
- package/skills/angular-developer/references/router-testing.md +87 -0
- package/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/skills/angular-developer/references/signal-forms.md +795 -0
- package/skills/angular-developer/references/signals-overview.md +94 -0
- package/skills/angular-developer/references/tailwind-css.md +69 -0
- package/skills/angular-developer/references/template-driven-forms.md +114 -0
- package/skills/angular-developer/references/testing-fundamentals.md +65 -0
- package/skills/api-connector-builder/SKILL.md +120 -0
- package/skills/api-design/SKILL.md +522 -0
- package/skills/architecture-decision-records/SKILL.md +178 -0
- package/skills/article-writing/SKILL.md +78 -0
- package/skills/automation-audit-ops/SKILL.md +141 -0
- package/skills/autonomous-agent-harness/SKILL.md +272 -0
- package/skills/autonomous-loops/SKILL.md +609 -0
- package/skills/backend-patterns/SKILL.md +560 -0
- package/skills/benchmark/SKILL.md +92 -0
- package/skills/blueprint/SKILL.md +104 -0
- package/skills/browser-qa/SKILL.md +86 -0
- package/skills/bun-runtime/SKILL.md +83 -0
- package/skills/canary-watch/SKILL.md +98 -0
- package/skills/carrier-relationship-management/SKILL.md +211 -0
- package/skills/cisco-ios-patterns/SKILL.md +163 -0
- package/skills/ck/SKILL.md +147 -0
- package/skills/ck/commands/forget.mjs +44 -0
- package/skills/ck/commands/info.mjs +24 -0
- package/skills/ck/commands/init.mjs +143 -0
- package/skills/ck/commands/list.mjs +40 -0
- package/skills/ck/commands/migrate.mjs +202 -0
- package/skills/ck/commands/resume.mjs +36 -0
- package/skills/ck/commands/save.mjs +210 -0
- package/skills/ck/commands/shared.mjs +387 -0
- package/skills/ck/hooks/session-start.mjs +224 -0
- package/skills/claude-devfleet/SKILL.md +103 -0
- package/skills/click-path-audit/SKILL.md +244 -0
- package/skills/clickhouse-io/SKILL.md +438 -0
- package/skills/code-tour/SKILL.md +235 -0
- package/skills/codebase-onboarding/SKILL.md +232 -0
- package/skills/coding-standards/SKILL.md +548 -0
- package/skills/compose-multiplatform-patterns/SKILL.md +298 -0
- package/skills/connections-optimizer/SKILL.md +188 -0
- package/skills/content-engine/SKILL.md +126 -0
- package/skills/content-hash-cache-pattern/SKILL.md +160 -0
- package/skills/context-budget/SKILL.md +134 -0
- package/skills/continuous-agent-loop/SKILL.md +44 -0
- package/skills/continuous-learning/SKILL.md +129 -0
- package/skills/continuous-learning/config.json +18 -0
- package/skills/continuous-learning/evaluate-session.sh +69 -0
- package/skills/continuous-learning-v2/SKILL.md +358 -0
- package/skills/continuous-learning-v2/agents/observer-loop.sh +322 -0
- package/skills/continuous-learning-v2/agents/observer.md +198 -0
- package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
- package/skills/continuous-learning-v2/agents/start-observer.sh +248 -0
- package/skills/continuous-learning-v2/config.json +8 -0
- package/skills/continuous-learning-v2/hooks/observe.sh +476 -0
- package/skills/continuous-learning-v2/scripts/detect-project.sh +288 -0
- package/skills/continuous-learning-v2/scripts/instinct-cli.py +1519 -0
- package/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
- package/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
- package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -0
- package/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
- package/skills/cost-tracking/SKILL.md +147 -0
- package/skills/council/SKILL.md +202 -0
- package/skills/cpp-coding-standards/SKILL.md +722 -0
- package/skills/cpp-testing/SKILL.md +323 -0
- package/skills/crosspost/SKILL.md +110 -0
- package/skills/csharp-testing/SKILL.md +320 -0
- package/skills/customer-billing-ops/SKILL.md +139 -0
- package/skills/customs-trade-compliance/SKILL.md +262 -0
- package/skills/dart-flutter-patterns/SKILL.md +562 -0
- package/skills/dashboard-builder/SKILL.md +108 -0
- package/skills/data-scraper-agent/SKILL.md +764 -0
- package/skills/database-migrations/SKILL.md +428 -0
- package/skills/deep-research/SKILL.md +158 -0
- package/skills/defi-amm-security/SKILL.md +166 -0
- package/skills/deployment-patterns/SKILL.md +426 -0
- package/skills/design-system/SKILL.md +81 -0
- package/skills/django-celery/SKILL.md +456 -0
- package/skills/django-patterns/SKILL.md +733 -0
- package/skills/django-security/SKILL.md +592 -0
- package/skills/django-tdd/SKILL.md +728 -0
- package/skills/django-verification/SKILL.md +468 -0
- package/skills/dmux-workflows/SKILL.md +190 -0
- package/skills/docker-patterns/SKILL.md +363 -0
- package/skills/documentation-lookup/SKILL.md +89 -0
- package/skills/dotnet-patterns/SKILL.md +320 -0
- package/skills/e2e-testing/SKILL.md +325 -0
- package/skills/email-ops/SKILL.md +120 -0
- package/skills/energy-procurement/SKILL.md +227 -0
- package/skills/enterprise-agent-ops/SKILL.md +49 -0
- package/skills/error-handling/SKILL.md +375 -0
- package/skills/eval-harness/SKILL.md +269 -0
- package/skills/evm-token-decimals/SKILL.md +130 -0
- package/skills/exa-search/SKILL.md +106 -0
- package/skills/fal-ai-media/SKILL.md +287 -0
- package/skills/fastapi-patterns/SKILL.md +327 -0
- package/skills/finance-billing-ops/SKILL.md +126 -0
- package/skills/flox-environments/SKILL.md +496 -0
- package/skills/flutter-dart-code-review/SKILL.md +434 -0
- package/skills/foundation-models-on-device/SKILL.md +243 -0
- package/skills/frontend-design-direction/SKILL.md +92 -0
- package/skills/frontend-patterns/SKILL.md +641 -0
- package/skills/frontend-slides/SKILL.md +183 -0
- package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
- package/skills/frontend-slides/animation-patterns.md +122 -0
- package/skills/frontend-slides/html-template.md +419 -0
- package/skills/frontend-slides/scripts/export-pdf.sh +418 -0
- package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/skills/frontend-slides/viewport-base.css +153 -0
- package/skills/fsharp-testing/SKILL.md +279 -0
- package/skills/gan-style-harness/SKILL.md +278 -0
- package/skills/gateguard/SKILL.md +125 -0
- package/skills/git-workflow/SKILL.md +714 -0
- package/skills/github-ops/SKILL.md +143 -0
- package/skills/golang-patterns/SKILL.md +673 -0
- package/skills/golang-testing/SKILL.md +719 -0
- package/skills/google-workspace-ops/SKILL.md +94 -0
- package/skills/healthcare-cdss-patterns/SKILL.md +245 -0
- package/skills/healthcare-emr-patterns/SKILL.md +159 -0
- package/skills/healthcare-eval-harness/SKILL.md +207 -0
- package/skills/healthcare-phi-compliance/SKILL.md +145 -0
- package/skills/hermes-imports/SKILL.md +87 -0
- package/skills/hexagonal-architecture/SKILL.md +275 -0
- package/skills/hipaa-compliance/SKILL.md +78 -0
- package/skills/homelab-network-readiness/SKILL.md +169 -0
- package/skills/homelab-network-setup/SKILL.md +129 -0
- package/skills/homelab-pihole-dns/SKILL.md +274 -0
- package/skills/homelab-vlan-segmentation/SKILL.md +311 -0
- package/skills/homelab-wireguard-vpn/SKILL.md +305 -0
- package/skills/hookify-rules/SKILL.md +128 -0
- package/skills/inventory-demand-planning/SKILL.md +246 -0
- package/skills/investor-materials/SKILL.md +95 -0
- package/skills/investor-outreach/SKILL.md +90 -0
- package/skills/ios-icon-gen/SKILL.md +157 -0
- package/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
- package/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
- package/skills/iterative-retrieval/SKILL.md +209 -0
- package/skills/java-coding-standards/SKILL.md +382 -0
- package/skills/jira-integration/SKILL.md +292 -0
- package/skills/jpa-patterns/SKILL.md +150 -0
- package/skills/knowledge-ops/SKILL.md +153 -0
- package/skills/kotlin-coroutines-flows/SKILL.md +283 -0
- package/skills/kotlin-exposed-patterns/SKILL.md +718 -0
- package/skills/kotlin-ktor-patterns/SKILL.md +688 -0
- package/skills/kotlin-patterns/SKILL.md +710 -0
- package/skills/kotlin-testing/SKILL.md +823 -0
- package/skills/laravel-patterns/SKILL.md +414 -0
- package/skills/laravel-plugin-discovery/SKILL.md +228 -0
- package/skills/laravel-security/SKILL.md +284 -0
- package/skills/laravel-tdd/SKILL.md +282 -0
- package/skills/laravel-verification/SKILL.md +178 -0
- package/skills/lead-intelligence/SKILL.md +320 -0
- package/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
- package/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
- package/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
- package/skills/lead-intelligence/agents/signal-scorer.md +60 -0
- package/skills/liquid-glass-design/SKILL.md +279 -0
- package/skills/llm-trading-agent-security/SKILL.md +146 -0
- package/skills/logistics-exception-management/SKILL.md +221 -0
- package/skills/make-interfaces-feel-better/SKILL.md +151 -0
- package/skills/manim-video/SKILL.md +88 -0
- package/skills/manim-video/assets/network_graph_scene.py +52 -0
- package/skills/market-research/SKILL.md +74 -0
- package/skills/mcp-server-patterns/SKILL.md +68 -0
- package/skills/messages-ops/SKILL.md +103 -0
- package/skills/mle-workflow/SKILL.md +345 -0
- package/skills/motion-advanced/SKILL.md +596 -0
- package/skills/motion-foundations/SKILL.md +299 -0
- package/skills/motion-patterns/SKILL.md +435 -0
- package/skills/motion-ui/SKILL.md +574 -0
- package/skills/mysql-patterns/SKILL.md +411 -0
- package/skills/nanoclaw-repl/SKILL.md +32 -0
- package/skills/nestjs-patterns/SKILL.md +229 -0
- package/skills/netmiko-ssh-automation/SKILL.md +173 -0
- package/skills/network-bgp-diagnostics/SKILL.md +167 -0
- package/skills/network-config-validation/SKILL.md +210 -0
- package/skills/network-interface-health/SKILL.md +152 -0
- package/skills/nextjs-turbopack/SKILL.md +43 -0
- package/skills/nodejs-keccak256/SKILL.md +102 -0
- package/skills/nutrient-document-processing/SKILL.md +166 -0
- package/skills/nuxt4-patterns/SKILL.md +99 -0
- package/skills/openclaw-persona-forge/SKILL.md +288 -0
- package/skills/openclaw-persona-forge/gacha.py +224 -0
- package/skills/openclaw-persona-forge/gacha.sh +5 -0
- package/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
- package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
- package/skills/openclaw-persona-forge/references/error-handling.md +53 -0
- package/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
- package/skills/openclaw-persona-forge/references/naming-system.md +39 -0
- package/skills/openclaw-persona-forge/references/output-template.md +166 -0
- package/skills/opensource-pipeline/SKILL.md +254 -0
- package/skills/perl-patterns/SKILL.md +503 -0
- package/skills/perl-security/SKILL.md +502 -0
- package/skills/perl-testing/SKILL.md +474 -0
- package/skills/plan-orchestrate/SKILL.md +253 -0
- package/skills/plankton-code-quality/SKILL.md +236 -0
- package/skills/postgres-patterns/SKILL.md +146 -0
- package/skills/product-capability/SKILL.md +140 -0
- package/skills/product-lens/SKILL.md +91 -0
- package/skills/production-audit/SKILL.md +206 -0
- package/skills/production-scheduling/SKILL.md +237 -0
- package/skills/project-flow-ops/SKILL.md +110 -0
- package/skills/prompt-optimizer/SKILL.md +398 -0
- package/skills/python-patterns/SKILL.md +749 -0
- package/skills/python-testing/SKILL.md +815 -0
- package/skills/pytorch-patterns/SKILL.md +395 -0
- package/skills/quality-nonconformance/SKILL.md +259 -0
- package/skills/quarkus-patterns/SKILL.md +721 -0
- package/skills/quarkus-security/SKILL.md +466 -0
- package/skills/quarkus-tdd/SKILL.md +810 -0
- package/skills/quarkus-verification/SKILL.md +478 -0
- package/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
- package/skills/redis-patterns/SKILL.md +402 -0
- package/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
- package/skills/remotion-video-creation/SKILL.md +43 -0
- package/skills/remotion-video-creation/rules/3d.md +86 -0
- package/skills/remotion-video-creation/rules/animations.md +29 -0
- package/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
- package/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
- package/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/skills/remotion-video-creation/rules/assets.md +78 -0
- package/skills/remotion-video-creation/rules/audio.md +172 -0
- package/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
- package/skills/remotion-video-creation/rules/can-decode.md +75 -0
- package/skills/remotion-video-creation/rules/charts.md +58 -0
- package/skills/remotion-video-creation/rules/compositions.md +146 -0
- package/skills/remotion-video-creation/rules/display-captions.md +126 -0
- package/skills/remotion-video-creation/rules/extract-frames.md +229 -0
- package/skills/remotion-video-creation/rules/fonts.md +152 -0
- package/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
- package/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
- package/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
- package/skills/remotion-video-creation/rules/gifs.md +138 -0
- package/skills/remotion-video-creation/rules/images.md +130 -0
- package/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
- package/skills/remotion-video-creation/rules/lottie.md +67 -0
- package/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
- package/skills/remotion-video-creation/rules/measuring-text.md +143 -0
- package/skills/remotion-video-creation/rules/sequencing.md +106 -0
- package/skills/remotion-video-creation/rules/tailwind.md +11 -0
- package/skills/remotion-video-creation/rules/text-animations.md +20 -0
- package/skills/remotion-video-creation/rules/timing.md +179 -0
- package/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
- package/skills/remotion-video-creation/rules/transitions.md +122 -0
- package/skills/remotion-video-creation/rules/trimming.md +52 -0
- package/skills/remotion-video-creation/rules/videos.md +171 -0
- package/skills/repo-scan/SKILL.md +78 -0
- package/skills/research-ops/SKILL.md +111 -0
- package/skills/returns-reverse-logistics/SKILL.md +239 -0
- package/skills/rules-distill/SKILL.md +263 -0
- package/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/skills/rust-patterns/SKILL.md +498 -0
- package/skills/rust-testing/SKILL.md +499 -0
- package/skills/safety-guard/SKILL.md +74 -0
- package/skills/santa-method/SKILL.md +306 -0
- package/skills/scientific-db-pubmed-database/SKILL.md +175 -0
- package/skills/scientific-db-uspto-database/SKILL.md +177 -0
- package/skills/scientific-pkg-gget/SKILL.md +166 -0
- package/skills/scientific-thinking-literature-review/SKILL.md +192 -0
- package/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
- package/skills/search-first/SKILL.md +181 -0
- package/skills/security-bounty-hunter/SKILL.md +99 -0
- package/skills/security-review/SKILL.md +502 -0
- package/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/skills/seo/SKILL.md +153 -0
- package/skills/skill-comply/SKILL.md +57 -0
- package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
- package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
- package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
- package/skills/skill-comply/prompts/classifier.md +24 -0
- package/skills/skill-comply/prompts/scenario_generator.md +62 -0
- package/skills/skill-comply/prompts/spec_generator.md +42 -0
- package/skills/skill-comply/pyproject.toml +15 -0
- package/skills/skill-comply/scripts/__init__.py +0 -0
- package/skills/skill-comply/scripts/classifier.py +85 -0
- package/skills/skill-comply/scripts/grader.py +124 -0
- package/skills/skill-comply/scripts/parser.py +107 -0
- package/skills/skill-comply/scripts/report.py +170 -0
- package/skills/skill-comply/scripts/run.py +127 -0
- package/skills/skill-comply/scripts/runner.py +186 -0
- package/skills/skill-comply/scripts/scenario_generator.py +70 -0
- package/skills/skill-comply/scripts/spec_generator.py +72 -0
- package/skills/skill-comply/scripts/utils.py +13 -0
- package/skills/skill-comply/tests/test_grader.py +197 -0
- package/skills/skill-comply/tests/test_parser.py +90 -0
- package/skills/skill-comply/tests/test_runner.py +172 -0
- package/skills/skill-scout/SKILL.md +139 -0
- package/skills/skill-stocktake/SKILL.md +193 -0
- package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
- package/skills/skill-stocktake/scripts/save-results.sh +56 -0
- package/skills/skill-stocktake/scripts/scan.sh +170 -0
- package/skills/social-graph-ranker/SKILL.md +153 -0
- package/skills/springboot-patterns/SKILL.md +313 -0
- package/skills/springboot-security/SKILL.md +271 -0
- package/skills/springboot-tdd/SKILL.md +157 -0
- package/skills/springboot-verification/SKILL.md +230 -0
- package/skills/strategic-compact/SKILL.md +129 -0
- package/skills/strategic-compact/suggest-compact.sh +54 -0
- package/skills/swift-actor-persistence/SKILL.md +142 -0
- package/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/skills/swift-protocol-di-testing/SKILL.md +189 -0
- package/skills/swiftui-patterns/SKILL.md +259 -0
- package/skills/tdd-workflow/SKILL.md +462 -0
- package/skills/team-builder/SKILL.md +166 -0
- package/skills/terminal-ops/SKILL.md +108 -0
- package/skills/tinystruct-patterns/SKILL.md +130 -0
- package/skills/tinystruct-patterns/references/architecture.md +77 -0
- package/skills/tinystruct-patterns/references/data-handling.md +35 -0
- package/skills/tinystruct-patterns/references/routing.md +57 -0
- package/skills/tinystruct-patterns/references/system-usage.md +74 -0
- package/skills/tinystruct-patterns/references/testing.md +59 -0
- package/skills/token-budget-advisor/SKILL.md +133 -0
- package/skills/ui-demo/SKILL.md +464 -0
- package/skills/ui-to-vue/SKILL.md +134 -0
- package/skills/unified-notifications-ops/SKILL.md +186 -0
- package/skills/verification-loop/SKILL.md +125 -0
- package/skills/video-editing/SKILL.md +309 -0
- package/skills/videodb/SKILL.md +373 -0
- package/skills/videodb/reference/api-reference.md +550 -0
- package/skills/videodb/reference/capture-reference.md +407 -0
- package/skills/videodb/reference/capture.md +101 -0
- package/skills/videodb/reference/editor.md +443 -0
- package/skills/videodb/reference/generative.md +331 -0
- package/skills/videodb/reference/rtstream-reference.md +564 -0
- package/skills/videodb/reference/rtstream.md +65 -0
- package/skills/videodb/reference/search.md +230 -0
- package/skills/videodb/reference/streaming.md +406 -0
- package/skills/videodb/reference/use-cases.md +118 -0
- package/skills/videodb/scripts/ws_listener.py +282 -0
- package/skills/visa-doc-translate/README.md +86 -0
- package/skills/visa-doc-translate/SKILL.md +117 -0
- package/skills/vite-patterns/SKILL.md +448 -0
- package/skills/windows-desktop-e2e/SKILL.md +787 -0
- package/skills/workspace-surface-audit/SKILL.md +124 -0
- package/skills/x-api/SKILL.md +233 -0
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: motion-foundations
|
|
3
|
+
description: Motion tokens, spring presets, performance rules, device adaptation, accessibility enforcement, and SSR safety for React / Next.js using motion/react. Foundation layer — all other motion skills depend on this.
|
|
4
|
+
version: 1.0
|
|
5
|
+
tags: [motion, animation, performance, accessibility]
|
|
6
|
+
category: frontend
|
|
7
|
+
author: jeff
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Motion Foundations
|
|
11
|
+
|
|
12
|
+
The base layer of the motion system. Defines every value, constraint, and
|
|
13
|
+
rule that downstream skills (`motion-patterns`, `motion-advanced`) inherit.
|
|
14
|
+
Load this skill before any animation work begins.
|
|
15
|
+
|
|
16
|
+
## When to Activate
|
|
17
|
+
|
|
18
|
+
- Starting any animated component from scratch
|
|
19
|
+
- Setting up tokens, spring presets, or easing values
|
|
20
|
+
- Implementing `prefers-reduced-motion` support
|
|
21
|
+
- Debugging hydration mismatches from animation initial states
|
|
22
|
+
- Evaluating whether an animation should exist at all
|
|
23
|
+
|
|
24
|
+
## Outputs
|
|
25
|
+
|
|
26
|
+
This skill produces:
|
|
27
|
+
|
|
28
|
+
- A shared `motionTokens` object (duration, easing, distance, scale)
|
|
29
|
+
- A shared `springs` preset map (5 named configs)
|
|
30
|
+
- A `shouldAnimate()` gate used by all components
|
|
31
|
+
- Accessibility-compliant animation defaults via `useReducedMotion`
|
|
32
|
+
- SSR-safe initial states with zero hydration warnings
|
|
33
|
+
|
|
34
|
+
## Principles
|
|
35
|
+
|
|
36
|
+
Motion must do at least one of the following or it must be removed:
|
|
37
|
+
|
|
38
|
+
- Guide attention
|
|
39
|
+
- Communicate state
|
|
40
|
+
- Preserve spatial continuity
|
|
41
|
+
|
|
42
|
+
Responsiveness always outranks smoothness. A 60 fps animation that causes
|
|
43
|
+
input delay is worse than no animation.
|
|
44
|
+
|
|
45
|
+
## Rules
|
|
46
|
+
|
|
47
|
+
These are non-negotiable. They apply to every component in the system.
|
|
48
|
+
|
|
49
|
+
1. **Use `motion/react` only.** Never import from `framer-motion`. Never mix the two in the same tree.
|
|
50
|
+
2. **`initial` must match server output.** If the server renders `opacity: 1`, the `initial` prop must also be `opacity: 1`. No exceptions.
|
|
51
|
+
3. **Reduced motion overrides everything.** When `useReducedMotion()` returns `true` or `prefersReduced` is `true`, all transforms are disabled. Opacity-only fades at ≤ 0.2s are the only permitted fallback.
|
|
52
|
+
4. **Never animate layout properties.** `width`, `height`, `top`, `left`, `margin`, `padding` are banned from `animate`. Use `transform` and `opacity` only.
|
|
53
|
+
5. **All token values come from `motionTokens`.** Hardcoded durations and easings in component files are forbidden.
|
|
54
|
+
6. **All spring configs come from the `springs` map.** Inline `stiffness`/`damping` values are forbidden.
|
|
55
|
+
7. **`"use client"` is required** on every file that imports from `motion/react`.
|
|
56
|
+
8. **Never read `window` or `navigator` at module level.** Always guard with `typeof window !== "undefined"`.
|
|
57
|
+
|
|
58
|
+
## Decision Guidance
|
|
59
|
+
|
|
60
|
+
### Choosing a duration
|
|
61
|
+
|
|
62
|
+
| Token | Use when |
|
|
63
|
+
| --------- | -------------------------------------------- |
|
|
64
|
+
| `instant` | Tooltip show/hide, focus ring, badge update |
|
|
65
|
+
| `fast` | Button feedback, icon swap, chip toggle |
|
|
66
|
+
| `normal` | Modal open, card expand, page element enter |
|
|
67
|
+
| `slow` | Hero entrance, full-page transition |
|
|
68
|
+
| `crawl` | Deliberate storytelling; use sparingly |
|
|
69
|
+
|
|
70
|
+
### Choosing a spring
|
|
71
|
+
|
|
72
|
+
| Preset | Use when |
|
|
73
|
+
| --------- | ------------------------------------------ |
|
|
74
|
+
| `snappy` | Default UI — buttons, chips, nav items |
|
|
75
|
+
| `gentle` | Cards, modals, panels landing softly |
|
|
76
|
+
| `bouncy` | Playful moments — empty states, onboarding |
|
|
77
|
+
| `instant` | Tooltips, popovers, dropdowns |
|
|
78
|
+
| `release` | Drag release — natural physics feel |
|
|
79
|
+
|
|
80
|
+
### When to disable animation entirely
|
|
81
|
+
|
|
82
|
+
Disable (make `shouldAnimate()` return `false`) when:
|
|
83
|
+
|
|
84
|
+
- `prefersReduced` is `true`
|
|
85
|
+
- `isLowEnd` is `true` and the animation is non-essential
|
|
86
|
+
- The element is off-screen and will never enter the viewport
|
|
87
|
+
- The animation is purely decorative with no UX purpose
|
|
88
|
+
|
|
89
|
+
## Core Concepts
|
|
90
|
+
|
|
91
|
+
### Token system
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
// lib/motion-tokens.ts
|
|
95
|
+
export const motionTokens = {
|
|
96
|
+
duration: {
|
|
97
|
+
instant: 0.08,
|
|
98
|
+
fast: 0.18,
|
|
99
|
+
normal: 0.35,
|
|
100
|
+
slow: 0.6,
|
|
101
|
+
crawl: 1.0,
|
|
102
|
+
},
|
|
103
|
+
easing: {
|
|
104
|
+
smooth: [0.22, 1, 0.36, 1],
|
|
105
|
+
sharp: [0.4, 0, 0.2, 1],
|
|
106
|
+
bounce: [0.34, 1.56, 0.64, 1],
|
|
107
|
+
linear: [0, 0, 1, 1],
|
|
108
|
+
},
|
|
109
|
+
distance: {
|
|
110
|
+
xs: 4,
|
|
111
|
+
sm: 8,
|
|
112
|
+
md: 16,
|
|
113
|
+
lg: 24,
|
|
114
|
+
xl: 48,
|
|
115
|
+
},
|
|
116
|
+
scale: {
|
|
117
|
+
subtle: 0.98,
|
|
118
|
+
press: 0.95,
|
|
119
|
+
pop: 1.04,
|
|
120
|
+
},
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export const springs = {
|
|
124
|
+
snappy: { type: "spring", stiffness: 300, damping: 30 },
|
|
125
|
+
gentle: { type: "spring", stiffness: 120, damping: 14 },
|
|
126
|
+
bouncy: { type: "spring", stiffness: 400, damping: 10 },
|
|
127
|
+
instant: { type: "spring", stiffness: 600, damping: 35 },
|
|
128
|
+
release: { type: "spring", stiffness: 200, damping: 20, restDelta: 0.001 },
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Runtime flags
|
|
133
|
+
|
|
134
|
+
```ts
|
|
135
|
+
// lib/motion-config.ts
|
|
136
|
+
export const motionConfig = {
|
|
137
|
+
isLowEnd() {
|
|
138
|
+
return (
|
|
139
|
+
typeof navigator !== "undefined" &&
|
|
140
|
+
navigator.hardwareConcurrency <= 4
|
|
141
|
+
)
|
|
142
|
+
},
|
|
143
|
+
|
|
144
|
+
prefersReduced() {
|
|
145
|
+
return (
|
|
146
|
+
typeof window !== "undefined" &&
|
|
147
|
+
window.matchMedia("(prefers-reduced-motion: reduce)").matches
|
|
148
|
+
)
|
|
149
|
+
},
|
|
150
|
+
|
|
151
|
+
shouldAnimate({ essential = false } = {}) {
|
|
152
|
+
if (this.prefersReduced()) return false
|
|
153
|
+
if (!essential && this.isLowEnd()) return false
|
|
154
|
+
return true
|
|
155
|
+
},
|
|
156
|
+
|
|
157
|
+
duration() {
|
|
158
|
+
return this.isLowEnd() || this.prefersReduced()
|
|
159
|
+
? motionTokens.duration.instant
|
|
160
|
+
: motionTokens.duration.normal
|
|
161
|
+
},
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Accessibility
|
|
166
|
+
|
|
167
|
+
**Priority order (highest to lowest):**
|
|
168
|
+
|
|
169
|
+
1. `prefers-reduced-motion: reduce` — disables all transforms, limits opacity transitions to ≤ 0.2s
|
|
170
|
+
2. Low-end device detection — reduces duration, removes non-essential animations
|
|
171
|
+
3. Design preference — everything else
|
|
172
|
+
|
|
173
|
+
Motion must degrade gracefully. It must never disappear abruptly in a way
|
|
174
|
+
that causes layout shift or confuses orientation.
|
|
175
|
+
|
|
176
|
+
```tsx
|
|
177
|
+
// hooks/use-reduced-motion.tsx
|
|
178
|
+
"use client"
|
|
179
|
+
import { useReducedMotion } from "motion/react"
|
|
180
|
+
|
|
181
|
+
export function useSafeMotion(fullY: number = 16) {
|
|
182
|
+
const reduce = useReducedMotion()
|
|
183
|
+
return {
|
|
184
|
+
initial: { opacity: 0, y: reduce ? 0 : fullY },
|
|
185
|
+
animate: { opacity: 1, y: 0 },
|
|
186
|
+
exit: { opacity: 0, y: reduce ? 0 : -fullY },
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
```css
|
|
192
|
+
/* globals.css */
|
|
193
|
+
@media (prefers-reduced-motion: reduce) {
|
|
194
|
+
.motion-safe-transition { transition: opacity 0.15s; }
|
|
195
|
+
.motion-reduce-transform { transform: none !important; }
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
```html
|
|
200
|
+
<!-- Tailwind -->
|
|
201
|
+
<div class="motion-safe:animate-fade motion-reduce:opacity-100"></div>
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### SSR / hydration safety
|
|
205
|
+
|
|
206
|
+
**Rule: `initial` must always match what the server renders.**
|
|
207
|
+
|
|
208
|
+
```tsx
|
|
209
|
+
// WRONG — server renders opacity:1 but initial says 0 → hydration mismatch
|
|
210
|
+
<motion.div initial={{ opacity: 0 }} animate={{ opacity: 1 }} />
|
|
211
|
+
|
|
212
|
+
// CORRECT — use AnimatePresence or defer to client mount
|
|
213
|
+
"use client"
|
|
214
|
+
const [mounted, setMounted] = useState(false)
|
|
215
|
+
useEffect(() => setMounted(true), [])
|
|
216
|
+
|
|
217
|
+
<motion.div
|
|
218
|
+
initial={{ opacity: mounted ? 0 : 1 }}
|
|
219
|
+
animate={{ opacity: 1 }}
|
|
220
|
+
/>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
## Code Examples
|
|
224
|
+
|
|
225
|
+
### End-to-end: tokens + springs + accessibility + SSR guard
|
|
226
|
+
|
|
227
|
+
```tsx
|
|
228
|
+
// components/fade-in-card.tsx
|
|
229
|
+
"use client"
|
|
230
|
+
|
|
231
|
+
import { useState, useEffect } from "react"
|
|
232
|
+
import { motion } from "motion/react"
|
|
233
|
+
import { motionTokens, springs } from "@/lib/motion-tokens"
|
|
234
|
+
import { useSafeMotion } from "@/hooks/use-reduced-motion"
|
|
235
|
+
import { motionConfig } from "@/lib/motion-config"
|
|
236
|
+
|
|
237
|
+
interface FadeInCardProps {
|
|
238
|
+
children: React.ReactNode
|
|
239
|
+
delay?: number
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export function FadeInCard({ children, delay = 0 }: FadeInCardProps) {
|
|
243
|
+
// SSR guard — initial must match server output (opacity: 1)
|
|
244
|
+
const [mounted, setMounted] = useState(false)
|
|
245
|
+
useEffect(() => setMounted(true), [])
|
|
246
|
+
|
|
247
|
+
// Accessibility — disables transform when reduced motion is preferred
|
|
248
|
+
const safeMotion = useSafeMotion(motionTokens.distance.md)
|
|
249
|
+
|
|
250
|
+
// Device gate — skip animation on low-end hardware
|
|
251
|
+
if (!motionConfig.shouldAnimate() || !mounted) {
|
|
252
|
+
return <div>{children}</div>
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return (
|
|
256
|
+
<motion.div
|
|
257
|
+
initial={safeMotion.initial}
|
|
258
|
+
animate={safeMotion.animate}
|
|
259
|
+
exit={safeMotion.exit}
|
|
260
|
+
transition={{
|
|
261
|
+
...springs.gentle,
|
|
262
|
+
delay,
|
|
263
|
+
}}
|
|
264
|
+
whileHover={{ scale: motionTokens.scale.pop }}
|
|
265
|
+
whileTap={{ scale: motionTokens.scale.press }}
|
|
266
|
+
>
|
|
267
|
+
{children}
|
|
268
|
+
</motion.div>
|
|
269
|
+
)
|
|
270
|
+
}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## Constraints / Non-Goals
|
|
274
|
+
|
|
275
|
+
This skill does **not** cover:
|
|
276
|
+
|
|
277
|
+
- UI component patterns (button, modal, stagger) → see `motion-patterns`
|
|
278
|
+
- Drag, gestures, SVG, text animations, custom hooks → see `motion-advanced`
|
|
279
|
+
- CSS-only animations or Tailwind `animate-*` classes without `motion/react`
|
|
280
|
+
- Third-party animation libraries (GSAP, anime.js, etc.)
|
|
281
|
+
- Motion design decisions (when to animate, what to emphasize) — that is a design concern, not a code constraint
|
|
282
|
+
|
|
283
|
+
## Anti-Patterns
|
|
284
|
+
|
|
285
|
+
| Anti-pattern | Rule violated | Fix |
|
|
286
|
+
| --------------------------------------- | ------- | ------------------------------- |
|
|
287
|
+
| `import { motion } from "framer-motion"` | Rule 1 | Use `motion/react` |
|
|
288
|
+
| `initial={{ opacity: 0 }}` on SSR component | Rule 2 | Add mount guard |
|
|
289
|
+
| Skipping `useReducedMotion` check | Rule 3 | Use `useSafeMotion` hook |
|
|
290
|
+
| `animate={{ width: "100%" }}` | Rule 4 | Use `scaleX` transform instead |
|
|
291
|
+
| `transition={{ duration: 0.4 }}` inline | Rule 5 | Use `motionTokens.duration.normal` |
|
|
292
|
+
| `{ stiffness: 300, damping: 30 }` inline | Rule 6 | Use `springs.snappy` |
|
|
293
|
+
| Missing `"use client"` directive | Rule 7 | Add to top of file |
|
|
294
|
+
| `navigator.hardwareConcurrency` at module level | Rule 8 | Wrap in `typeof navigator !== "undefined"` |
|
|
295
|
+
|
|
296
|
+
## Related Skills
|
|
297
|
+
|
|
298
|
+
- **`motion-patterns`** — consumes tokens and springs defined here to build button, modal, stagger, page transition, and scroll patterns. Does not redefine any values.
|
|
299
|
+
- **`motion-advanced`** — consumes tokens and springs defined here for drag, SVG, text, and gesture patterns. Adds `useAnimate` sequences and custom hooks on top of this foundation.
|