@oriro/orirocli 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ATTRIBUTION.md +45 -0
- package/README.md +26 -0
- package/dist/cli.js +4570 -0
- package/package.json +63 -0
- package/skills/1password/SKILL.md +118 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +21 -0
- package/skills/algorithmic-art/LICENSE +21 -0
- package/skills/algorithmic-art/SKILL.md +446 -0
- package/skills/algorithmic-art/templates/generator_template.js +223 -0
- package/skills/algorithmic-art/templates/viewer.html +599 -0
- package/skills/apple-notes/SKILL.md +81 -0
- package/skills/apple-reminders/SKILL.md +122 -0
- package/skills/bear-notes/SKILL.md +111 -0
- package/skills/blogwatcher/SKILL.md +73 -0
- package/skills/blucli/SKILL.md +51 -0
- package/skills/brand-guidelines/LICENSE +21 -0
- package/skills/brand-guidelines/SKILL.md +76 -0
- package/skills/business/biz-analysis/LICENSE +21 -0
- package/skills/business/biz-analysis/SKILL.md +103 -0
- package/skills/business/biz-corporate-strategy/LICENSE +21 -0
- package/skills/business/biz-corporate-strategy/SKILL.md +76 -0
- package/skills/business/biz-customer-success/LICENSE +21 -0
- package/skills/business/biz-customer-success/SKILL.md +55 -0
- package/skills/business/biz-entrepreneurship/LICENSE +21 -0
- package/skills/business/biz-entrepreneurship/SKILL.md +72 -0
- package/skills/business/biz-hr/LICENSE +21 -0
- package/skills/business/biz-hr/SKILL.md +67 -0
- package/skills/business/biz-international/LICENSE +21 -0
- package/skills/business/biz-international/SKILL.md +51 -0
- package/skills/business/biz-leadership/LICENSE +21 -0
- package/skills/business/biz-leadership/SKILL.md +106 -0
- package/skills/business/biz-marketing-strategy/LICENSE +21 -0
- package/skills/business/biz-marketing-strategy/SKILL.md +119 -0
- package/skills/business/biz-negotiation/LICENSE +21 -0
- package/skills/business/biz-negotiation/SKILL.md +152 -0
- package/skills/business/biz-operations/LICENSE +21 -0
- package/skills/business/biz-operations/SKILL.md +74 -0
- package/skills/business/biz-project/LICENSE +21 -0
- package/skills/business/biz-project/SKILL.md +203 -0
- package/skills/business/biz-risk/LICENSE +21 -0
- package/skills/business/biz-risk/SKILL.md +85 -0
- package/skills/business/biz-sales/LICENSE +21 -0
- package/skills/business/biz-sales/SKILL.md +92 -0
- package/skills/business/biz-startup-ops/LICENSE +21 -0
- package/skills/business/biz-startup-ops/SKILL.md +70 -0
- package/skills/business/biz-strategy/LICENSE +21 -0
- package/skills/business/biz-strategy/SKILL.md +233 -0
- package/skills/business/biz-supply-chain-advanced/LICENSE +21 -0
- package/skills/business/biz-supply-chain-advanced/SKILL.md +68 -0
- package/skills/business/fin-chartered-exams/LICENSE +21 -0
- package/skills/business/fin-chartered-exams/SKILL.md +69 -0
- package/skills/camsnap/SKILL.md +49 -0
- package/skills/canvas/SKILL.md +82 -0
- package/skills/canvas-design/LICENSE +21 -0
- package/skills/canvas-design/SKILL.md +140 -0
- package/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/coding-agent/SKILL.md +146 -0
- package/skills/communication/comm-business-writing/LICENSE +21 -0
- package/skills/communication/comm-business-writing/SKILL.md +67 -0
- package/skills/communication/comm-cross-cultural/LICENSE +21 -0
- package/skills/communication/comm-cross-cultural/SKILL.md +88 -0
- package/skills/communication/comm-journalism/LICENSE +21 -0
- package/skills/communication/comm-journalism/SKILL.md +81 -0
- package/skills/communication/comm-linguistics/LICENSE +21 -0
- package/skills/communication/comm-linguistics/SKILL.md +82 -0
- package/skills/communication/comm-negotiation/LICENSE +21 -0
- package/skills/communication/comm-negotiation/SKILL.md +120 -0
- package/skills/communication/comm-presentations/LICENSE +21 -0
- package/skills/communication/comm-presentations/SKILL.md +93 -0
- package/skills/communication/comm-public-speaking/LICENSE +21 -0
- package/skills/communication/comm-public-speaking/SKILL.md +68 -0
- package/skills/communication/comm-writing/LICENSE +21 -0
- package/skills/communication/comm-writing/SKILL.md +69 -0
- package/skills/craft/ai-engineering/LICENSE +21 -0
- package/skills/craft/ai-engineering/SKILL.md +828 -0
- package/skills/craft/app-builder-guide/LICENSE +21 -0
- package/skills/craft/app-builder-guide/SKILL.md +332 -0
- package/skills/craft/become-an-ai-engineer-26/CONTRIBUTING.md +46 -0
- package/skills/craft/become-an-ai-engineer-26/LICENSE +21 -0
- package/skills/craft/become-an-ai-engineer-26/README.md +270 -0
- package/skills/craft/become-an-ai-engineer-26/SKILL.md +667 -0
- package/skills/craft/become-an-ai-engineer-26/community/BUILDS.md +13 -0
- package/skills/craft/become-an-ai-engineer-26/community/DISCUSSIONS.md +8 -0
- package/skills/craft/become-an-ai-engineer-26/phases/phase-0-mental-models/README.md +14 -0
- package/skills/craft/become-an-ai-engineer-26/phases/phase-0-mental-models/project/TEMPLATE.md +33 -0
- package/skills/craft/become-an-ai-engineer-26/phases/phase-1-first-agent/README.md +25 -0
- package/skills/craft/become-an-ai-engineer-26/phases/phase-1-first-agent/code/raw_loop.py +126 -0
- package/skills/craft/become-an-ai-engineer-26/phases/phase-2-architecture/README.md +17 -0
- package/skills/craft/become-an-ai-engineer-26/phases/phase-3-harness/README.md +17 -0
- package/skills/craft/become-an-ai-engineer-26/phases/phase-4-evals/README.md +21 -0
- package/skills/craft/become-an-ai-engineer-26/phases/phase-4-evals/code/.github/workflows/eval.yml +40 -0
- package/skills/craft/become-an-ai-engineer-26/phases/phase-5-production/README.md +16 -0
- package/skills/craft/become-an-ai-engineer-26/projects/1-mobile-app-slm/README.md +11 -0
- package/skills/craft/become-an-ai-engineer-26/projects/2-self-improving-coder/README.md +11 -0
- package/skills/craft/become-an-ai-engineer-26/projects/3-video-editor-agent/README.md +11 -0
- package/skills/craft/become-an-ai-engineer-26/projects/4-personal-life-os/README.md +12 -0
- package/skills/craft/become-an-ai-engineer-26/projects/5-enterprise-workflow/README.md +12 -0
- package/skills/craft/become-an-ai-engineer-26/references/benchmark-numbers.md +41 -0
- package/skills/craft/become-an-ai-engineer-26/references/mhc-stable-training.md +73 -0
- package/skills/craft/become-an-ai-engineer-26/references/stack-decisions.md +37 -0
- package/skills/craft/become-an-ai-engineer-26/references/yarn-context-extension.md +123 -0
- package/skills/craft/codex-result-handling/LICENSE +21 -0
- package/skills/craft/codex-result-handling/SKILL.md +26 -0
- package/skills/craft/debug-and-build-methodology/LICENSE +21 -0
- package/skills/craft/debug-and-build-methodology/SKILL.md +432 -0
- package/skills/craft/design/LICENSE +21 -0
- package/skills/craft/design/SKILL.md +274 -0
- package/skills/craft/dev/LICENSE +21 -0
- package/skills/craft/dev/SKILL.md +12 -0
- package/skills/craft/dev/release.md +85 -0
- package/skills/craft/dev/roll.md +50 -0
- package/skills/craft/doc-coauthoring/LICENSE +21 -0
- package/skills/craft/doc-coauthoring/SKILL.md +397 -0
- package/skills/craft/focus/LICENSE +21 -0
- package/skills/craft/focus/SKILL.md +432 -0
- package/skills/craft/focus/UPSTREAM_README.md +233 -0
- package/skills/craft/gh/LICENSE +21 -0
- package/skills/craft/gh/SKILL.md +84 -0
- package/skills/craft/gh-skill/LICENSE +21 -0
- package/skills/craft/gh-skill/SKILL.md +121 -0
- package/skills/craft/godmode/LICENSE +21 -0
- package/skills/craft/godmode/SKILL.md +87 -0
- package/skills/craft/godmode/references/android-launch.md +680 -0
- package/skills/craft/godmode/references/data-gcp.md +1038 -0
- package/skills/craft/godmode/references/expo-eas.md +816 -0
- package/skills/craft/godmode/references/ios-launch.md +734 -0
- package/skills/craft/google-ai-latest/LICENSE +21 -0
- package/skills/craft/google-ai-latest/SKILL.md +682 -0
- package/skills/craft/gpt-5-4-prompting/LICENSE +21 -0
- package/skills/craft/gpt-5-4-prompting/SKILL.md +63 -0
- package/skills/craft/gpt-5-4-prompting/references/codex-prompt-antipatterns.md +101 -0
- package/skills/craft/gpt-5-4-prompting/references/codex-prompt-recipes.md +150 -0
- package/skills/craft/gpt-5-4-prompting/references/prompt-blocks.md +172 -0
- package/skills/craft/grill-me/LICENSE +21 -0
- package/skills/craft/grill-me/SKILL.md +13 -0
- package/skills/craft/idea-to-deploy/LICENSE +21 -0
- package/skills/craft/idea-to-deploy/SKILL.md +292 -0
- package/skills/craft/idea-to-deploy/references/auth-playbook.md +195 -0
- package/skills/craft/idea-to-deploy/references/gcp-deployment.md +268 -0
- package/skills/craft/idea-to-deploy/references/stack-selection.md +117 -0
- package/skills/craft/image-generation-engineer/LICENSE +21 -0
- package/skills/craft/image-generation-engineer/SKILL.md +183 -0
- package/skills/craft/image-generation-engineer/references/architectures.md +260 -0
- package/skills/craft/image-generation-engineer/references/foundations.md +107 -0
- package/skills/craft/image-generation-engineer/references/inference-and-serving.md +253 -0
- package/skills/craft/image-generation-engineer/references/training.md +149 -0
- package/skills/craft/marketing/LICENSE +21 -0
- package/skills/craft/marketing/SKILL.md +1954 -0
- package/skills/craft/master-architect/LICENSE +21 -0
- package/skills/craft/master-architect/SKILL.md +361 -0
- package/skills/craft/master-architect/references/ai-ml.md +317 -0
- package/skills/craft/master-architect/references/architecture.md +268 -0
- package/skills/craft/master-architect/references/auth-playbook.md +195 -0
- package/skills/craft/master-architect/references/cloud.md +323 -0
- package/skills/craft/master-architect/references/cyber.md +839 -0
- package/skills/craft/master-architect/references/data-eng.md +366 -0
- package/skills/craft/master-architect/references/devops.md +550 -0
- package/skills/craft/master-architect/references/gcp-deployment.md +268 -0
- package/skills/craft/master-architect/references/languages.md +748 -0
- package/skills/craft/master-architect/references/legacy.md +240 -0
- package/skills/craft/master-architect/references/mobile.md +447 -0
- package/skills/craft/master-architect/references/patterns.md +451 -0
- package/skills/craft/master-architect/references/saas-patterns.md +379 -0
- package/skills/craft/master-architect/references/sdlc.md +349 -0
- package/skills/craft/master-architect/references/stack-selection.md +117 -0
- package/skills/craft/oriro-ui-2026/LICENSE +21 -0
- package/skills/craft/oriro-ui-2026/SKILL.md +329 -0
- package/skills/craft/playwright-cli/LICENSE +21 -0
- package/skills/craft/playwright-cli/SKILL.md +393 -0
- package/skills/craft/playwright-cli/references/element-attributes.md +23 -0
- package/skills/craft/playwright-cli/references/playwright-tests.md +39 -0
- package/skills/craft/playwright-cli/references/request-mocking.md +87 -0
- package/skills/craft/playwright-cli/references/running-code.md +240 -0
- package/skills/craft/playwright-cli/references/session-management.md +226 -0
- package/skills/craft/playwright-cli/references/spec-driven-testing.md +312 -0
- package/skills/craft/playwright-cli/references/storage-state.md +275 -0
- package/skills/craft/playwright-cli/references/test-generation.md +134 -0
- package/skills/craft/playwright-cli/references/tracing.md +142 -0
- package/skills/craft/playwright-cli/references/video-recording.md +150 -0
- package/skills/craft/remotion-best-practices/LICENSE +21 -0
- package/skills/craft/remotion-best-practices/SKILL.md +345 -0
- package/skills/craft/remotion-best-practices/rules/3d.md +86 -0
- package/skills/craft/remotion-best-practices/rules/assets/charts-bar-chart.tsx +165 -0
- package/skills/craft/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +89 -0
- package/skills/craft/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +101 -0
- package/skills/craft/remotion-best-practices/rules/audio-visualization.md +195 -0
- package/skills/craft/remotion-best-practices/rules/audio.md +167 -0
- package/skills/craft/remotion-best-practices/rules/calculate-metadata.md +118 -0
- package/skills/craft/remotion-best-practices/rules/compositions.md +132 -0
- package/skills/craft/remotion-best-practices/rules/display-captions.md +176 -0
- package/skills/craft/remotion-best-practices/rules/ffmpeg.md +34 -0
- package/skills/craft/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/skills/craft/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/skills/craft/remotion-best-practices/rules/get-video-duration.md +60 -0
- package/skills/craft/remotion-best-practices/rules/gifs.md +135 -0
- package/skills/craft/remotion-best-practices/rules/google-fonts.md +72 -0
- package/skills/craft/remotion-best-practices/rules/html-in-canvas.md +122 -0
- package/skills/craft/remotion-best-practices/rules/images.md +67 -0
- package/skills/craft/remotion-best-practices/rules/import-srt-captions.md +69 -0
- package/skills/craft/remotion-best-practices/rules/light-leaks.md +73 -0
- package/skills/craft/remotion-best-practices/rules/local-fonts.md +65 -0
- package/skills/craft/remotion-best-practices/rules/lottie.md +67 -0
- package/skills/craft/remotion-best-practices/rules/maplibre.md +441 -0
- package/skills/craft/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/skills/craft/remotion-best-practices/rules/measuring-text.md +140 -0
- package/skills/craft/remotion-best-practices/rules/parameters.md +109 -0
- package/skills/craft/remotion-best-practices/rules/sequencing.md +144 -0
- package/skills/craft/remotion-best-practices/rules/sfx.md +30 -0
- package/skills/craft/remotion-best-practices/rules/silence-detection.md +73 -0
- package/skills/craft/remotion-best-practices/rules/subtitles.md +36 -0
- package/skills/craft/remotion-best-practices/rules/tailwind.md +11 -0
- package/skills/craft/remotion-best-practices/rules/text-animations.md +20 -0
- package/skills/craft/remotion-best-practices/rules/timing.md +130 -0
- package/skills/craft/remotion-best-practices/rules/transcribe-captions.md +70 -0
- package/skills/craft/remotion-best-practices/rules/transitions.md +193 -0
- package/skills/craft/remotion-best-practices/rules/transparent-videos.md +102 -0
- package/skills/craft/remotion-best-practices/rules/trimming.md +51 -0
- package/skills/craft/remotion-best-practices/rules/videos.md +169 -0
- package/skills/craft/remotion-best-practices/rules/voiceover.md +94 -0
- package/skills/craft/supabase-postgres-best-practices/CHANGELOG.md +25 -0
- package/skills/craft/supabase-postgres-best-practices/LICENSE +21 -0
- package/skills/craft/supabase-postgres-best-practices/SKILL.md +69 -0
- package/skills/craft/supabase-postgres-best-practices/references/_contributing.md +166 -0
- package/skills/craft/supabase-postgres-best-practices/references/_sections.md +47 -0
- package/skills/craft/supabase-postgres-best-practices/references/_template.md +34 -0
- package/skills/craft/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/skills/craft/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/skills/craft/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/skills/craft/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/skills/craft/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/skills/craft/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/skills/craft/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/skills/craft/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/skills/craft/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/skills/craft/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/skills/craft/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/skills/craft/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/skills/craft/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/skills/craft/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/skills/craft/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/skills/craft/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/skills/craft/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/skills/craft/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/skills/craft/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/skills/craft/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/skills/craft/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/skills/craft/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/skills/craft/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/skills/craft/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/skills/craft/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/skills/craft/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/skills/craft/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/skills/craft/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/skills/craft/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/skills/craft/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/skills/craft/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/skills/craft/uipm-banner-design/LICENSE +21 -0
- package/skills/craft/uipm-banner-design/SKILL.md +201 -0
- package/skills/craft/uipm-banner-design/references/banner-sizes-and-styles.md +129 -0
- package/skills/craft/uipm-brand/LICENSE +21 -0
- package/skills/craft/uipm-brand/SKILL.md +104 -0
- package/skills/craft/uipm-brand/references/approval-checklist.md +184 -0
- package/skills/craft/uipm-brand/references/asset-organization.md +167 -0
- package/skills/craft/uipm-brand/references/brand-guideline-template.md +161 -0
- package/skills/craft/uipm-brand/references/color-palette-management.md +203 -0
- package/skills/craft/uipm-brand/references/consistency-checklist.md +105 -0
- package/skills/craft/uipm-brand/references/logo-usage-rules.md +204 -0
- package/skills/craft/uipm-brand/references/messaging-framework.md +91 -0
- package/skills/craft/uipm-brand/references/typography-specifications.md +265 -0
- package/skills/craft/uipm-brand/references/update.md +128 -0
- package/skills/craft/uipm-brand/references/visual-identity.md +109 -0
- package/skills/craft/uipm-brand/references/voice-framework.md +99 -0
- package/skills/craft/uipm-brand/scripts/extract-colors.cjs +333 -0
- package/skills/craft/uipm-brand/scripts/inject-brand-context.cjs +324 -0
- package/skills/craft/uipm-brand/scripts/sync-brand-to-tokens.cjs +269 -0
- package/skills/craft/uipm-brand/scripts/validate-asset.cjs +361 -0
- package/skills/craft/uipm-brand/templates/brand-guidelines-starter.md +280 -0
- package/skills/craft/uipm-design/LICENSE +21 -0
- package/skills/craft/uipm-design/SKILL.md +305 -0
- package/skills/craft/uipm-design/data/cip/deliverables.csv +51 -0
- package/skills/craft/uipm-design/data/cip/industries.csv +21 -0
- package/skills/craft/uipm-design/data/cip/mockup-contexts.csv +21 -0
- package/skills/craft/uipm-design/data/cip/styles.csv +21 -0
- package/skills/craft/uipm-design/data/icon/styles.csv +16 -0
- package/skills/craft/uipm-design/data/logo/colors.csv +56 -0
- package/skills/craft/uipm-design/data/logo/industries.csv +56 -0
- package/skills/craft/uipm-design/data/logo/styles.csv +56 -0
- package/skills/craft/uipm-design/references/banner-sizes-and-styles.md +129 -0
- package/skills/craft/uipm-design/references/cip-deliverable-guide.md +111 -0
- package/skills/craft/uipm-design/references/cip-design.md +121 -0
- package/skills/craft/uipm-design/references/cip-prompt-engineering.md +94 -0
- package/skills/craft/uipm-design/references/cip-style-guide.md +76 -0
- package/skills/craft/uipm-design/references/design-routing.md +226 -0
- package/skills/craft/uipm-design/references/icon-design.md +122 -0
- package/skills/craft/uipm-design/references/logo-color-psychology.md +113 -0
- package/skills/craft/uipm-design/references/logo-design.md +92 -0
- package/skills/craft/uipm-design/references/logo-prompt-engineering.md +176 -0
- package/skills/craft/uipm-design/references/logo-style-guide.md +129 -0
- package/skills/craft/uipm-design/references/slides-copywriting-formulas.md +92 -0
- package/skills/craft/uipm-design/references/slides-create.md +5 -0
- package/skills/craft/uipm-design/references/slides-html-template.md +374 -0
- package/skills/craft/uipm-design/references/slides-layout-patterns.md +155 -0
- package/skills/craft/uipm-design/references/slides-strategies.md +97 -0
- package/skills/craft/uipm-design/references/slides.md +42 -0
- package/skills/craft/uipm-design/references/social-photos-design.md +353 -0
- package/skills/craft/uipm-design/scripts/cip/core.py +215 -0
- package/skills/craft/uipm-design/scripts/cip/generate.py +484 -0
- package/skills/craft/uipm-design/scripts/cip/render-html.py +424 -0
- package/skills/craft/uipm-design/scripts/cip/search.py +127 -0
- package/skills/craft/uipm-design/scripts/icon/generate.py +487 -0
- package/skills/craft/uipm-design/scripts/logo/core.py +175 -0
- package/skills/craft/uipm-design/scripts/logo/generate.py +362 -0
- package/skills/craft/uipm-design/scripts/logo/search.py +114 -0
- package/skills/craft/uipm-design-system/LICENSE +21 -0
- package/skills/craft/uipm-design-system/SKILL.md +255 -0
- package/skills/craft/uipm-design-system/data/slide-backgrounds.csv +11 -0
- package/skills/craft/uipm-design-system/data/slide-charts.csv +26 -0
- package/skills/craft/uipm-design-system/data/slide-color-logic.csv +14 -0
- package/skills/craft/uipm-design-system/data/slide-copy.csv +26 -0
- package/skills/craft/uipm-design-system/data/slide-layout-logic.csv +16 -0
- package/skills/craft/uipm-design-system/data/slide-layouts.csv +26 -0
- package/skills/craft/uipm-design-system/data/slide-strategies.csv +16 -0
- package/skills/craft/uipm-design-system/data/slide-typography.csv +15 -0
- package/skills/craft/uipm-design-system/references/component-specs.md +236 -0
- package/skills/craft/uipm-design-system/references/component-tokens.md +214 -0
- package/skills/craft/uipm-design-system/references/primitive-tokens.md +199 -0
- package/skills/craft/uipm-design-system/references/semantic-tokens.md +215 -0
- package/skills/craft/uipm-design-system/references/states-and-variants.md +243 -0
- package/skills/craft/uipm-design-system/references/tailwind-integration.md +257 -0
- package/skills/craft/uipm-design-system/references/token-architecture.md +226 -0
- package/skills/craft/uipm-design-system/scripts/embed-tokens.cjs +97 -0
- package/skills/craft/uipm-design-system/scripts/fetch-background.py +317 -0
- package/skills/craft/uipm-design-system/scripts/generate-slide.py +753 -0
- package/skills/craft/uipm-design-system/scripts/generate-tokens.cjs +213 -0
- package/skills/craft/uipm-design-system/scripts/html-token-validator.py +327 -0
- package/skills/craft/uipm-design-system/scripts/search-slides.py +218 -0
- package/skills/craft/uipm-design-system/scripts/slide-token-validator.py +35 -0
- package/skills/craft/uipm-design-system/scripts/slide_search_core.py +453 -0
- package/skills/craft/uipm-design-system/scripts/validate-tokens.cjs +254 -0
- package/skills/craft/uipm-design-system/templates/design-tokens-starter.json +143 -0
- package/skills/craft/uipm-slides/LICENSE +21 -0
- package/skills/craft/uipm-slides/SKILL.md +45 -0
- package/skills/craft/uipm-slides/references/copywriting-formulas.md +92 -0
- package/skills/craft/uipm-slides/references/create.md +5 -0
- package/skills/craft/uipm-slides/references/html-template.md +374 -0
- package/skills/craft/uipm-slides/references/layout-patterns.md +155 -0
- package/skills/craft/uipm-slides/references/slide-strategies.md +97 -0
- package/skills/craft/uipm-ui-ux-pro-max/LICENSE +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/SKILL.md +678 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/_sync_all.py +414 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/app-interface.csv +31 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/colors.csv +162 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/design.csv +1776 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/draft.csv +1779 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/google-fonts.csv +1924 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/icons.csv +106 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/landing.csv +35 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/products.csv +162 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/angular.csv +51 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/laravel.csv +51 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/threejs.csv +54 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/styles.csv +85 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/typography.csv +74 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/ui-reasoning.csv +162 -0
- package/skills/craft/uipm-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/craft/uipm-ui-ux-pro-max/scripts/core.py +262 -0
- package/skills/craft/uipm-ui-ux-pro-max/scripts/design_system.py +1148 -0
- package/skills/craft/uipm-ui-ux-pro-max/scripts/search.py +114 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/base/quick-reference.md +297 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/base/skill-content.md +375 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/agent.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/augment.json +18 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/claude.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/codebuddy.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/codex.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/continue.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/copilot.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/cursor.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/droid.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/gemini.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/kilocode.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/kiro.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/opencode.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/qoder.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/roocode.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/trae.json +21 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/warp.json +18 -0
- package/skills/craft/uipm-ui-ux-pro-max/templates/platforms/windsurf.json +21 -0
- package/skills/craft/vercel-optimize/AGENTS.md +48 -0
- package/skills/craft/vercel-optimize/CONTRIBUTING.md +41 -0
- package/skills/craft/vercel-optimize/LICENSE +21 -0
- package/skills/craft/vercel-optimize/README.md +91 -0
- package/skills/craft/vercel-optimize/SKILL.md +325 -0
- package/skills/craft/vercel-optimize/lib/auth-route.mjs +23 -0
- package/skills/craft/vercel-optimize/lib/budget-summary.mjs +208 -0
- package/skills/craft/vercel-optimize/lib/citations.mjs +147 -0
- package/skills/craft/vercel-optimize/lib/cost-coverage.mjs +162 -0
- package/skills/craft/vercel-optimize/lib/dedup-recs.mjs +340 -0
- package/skills/craft/vercel-optimize/lib/deep-dive.mjs +371 -0
- package/skills/craft/vercel-optimize/lib/display-labels.mjs +219 -0
- package/skills/craft/vercel-optimize/lib/extract-claims.mjs +640 -0
- package/skills/craft/vercel-optimize/lib/framework-support.mjs +69 -0
- package/skills/craft/vercel-optimize/lib/gates/build-minutes-fanout.mjs +73 -0
- package/skills/craft/vercel-optimize/lib/gates/cold-start.mjs +72 -0
- package/skills/craft/vercel-optimize/lib/gates/contract.mjs +82 -0
- package/skills/craft/vercel-optimize/lib/gates/cwv-poor.mjs +95 -0
- package/skills/craft/vercel-optimize/lib/gates/external-api-slow.mjs +60 -0
- package/skills/craft/vercel-optimize/lib/gates/hard-gates.mjs +70 -0
- package/skills/craft/vercel-optimize/lib/gates/index.mjs +45 -0
- package/skills/craft/vercel-optimize/lib/gates/isr-overrevalidation.mjs +62 -0
- package/skills/craft/vercel-optimize/lib/gates/middleware-heavy.mjs +53 -0
- package/skills/craft/vercel-optimize/lib/gates/observability-events-attribution.mjs +58 -0
- package/skills/craft/vercel-optimize/lib/gates/platform-bot-protection.mjs +123 -0
- package/skills/craft/vercel-optimize/lib/gates/platform-fluid-compute.mjs +94 -0
- package/skills/craft/vercel-optimize/lib/gates/region-misconfig.mjs +71 -0
- package/skills/craft/vercel-optimize/lib/gates/route-errors.mjs +95 -0
- package/skills/craft/vercel-optimize/lib/gates/scanner-driven.mjs +150 -0
- package/skills/craft/vercel-optimize/lib/gates/select-candidates.mjs +137 -0
- package/skills/craft/vercel-optimize/lib/gates/slow-route.mjs +97 -0
- package/skills/craft/vercel-optimize/lib/gates/types.d.ts +38 -0
- package/skills/craft/vercel-optimize/lib/gates/uncached-route.mjs +103 -0
- package/skills/craft/vercel-optimize/lib/gates/usage-spike-triage.mjs +122 -0
- package/skills/craft/vercel-optimize/lib/grade-recommendation.mjs +170 -0
- package/skills/craft/vercel-optimize/lib/impact-label.mjs +128 -0
- package/skills/craft/vercel-optimize/lib/impact-magnitude.mjs +66 -0
- package/skills/craft/vercel-optimize/lib/investigation-brief.mjs +751 -0
- package/skills/craft/vercel-optimize/lib/observation-safety.mjs +217 -0
- package/skills/craft/vercel-optimize/lib/project-facts.mjs +101 -0
- package/skills/craft/vercel-optimize/lib/queries.mjs +333 -0
- package/skills/craft/vercel-optimize/lib/reconcile-candidates.mjs +388 -0
- package/skills/craft/vercel-optimize/lib/render-report.mjs +1065 -0
- package/skills/craft/vercel-optimize/lib/repo-root.mjs +97 -0
- package/skills/craft/vercel-optimize/lib/route-normalize.mjs +224 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/bot-protection-certainty.mjs +56 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/cache-tag-invalidation-certainty.mjs +33 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/count-correct.mjs +53 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/function-duration-invocations.mjs +32 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/index.mjs +87 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/middleware-conflict.mjs +37 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/missing-citation.mjs +16 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/pre-release.mjs +75 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/rate-limit.mjs +73 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/rendering-mode-mislabel.mjs +42 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/undeclared-dep.mjs +110 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/vercel-directive-strip.mjs +37 -0
- package/skills/craft/vercel-optimize/lib/sanitizers/window-units.mjs +26 -0
- package/skills/craft/vercel-optimize/lib/scanners/cache-components-suspense-dedupe.mjs +114 -0
- package/skills/craft/vercel-optimize/lib/scanners/edge-heavy-import.mjs +102 -0
- package/skills/craft/vercel-optimize/lib/scanners/force-dynamic.mjs +39 -0
- package/skills/craft/vercel-optimize/lib/scanners/headers-in-page.mjs +43 -0
- package/skills/craft/vercel-optimize/lib/scanners/index.mjs +35 -0
- package/skills/craft/vercel-optimize/lib/scanners/large-static-asset.mjs +93 -0
- package/skills/craft/vercel-optimize/lib/scanners/max-age-without-s-maxage.mjs +47 -0
- package/skills/craft/vercel-optimize/lib/scanners/middleware-broad-matcher.mjs +53 -0
- package/skills/craft/vercel-optimize/lib/scanners/missing-cache-headers.mjs +97 -0
- package/skills/craft/vercel-optimize/lib/scanners/prisma-include-tree.mjs +39 -0
- package/skills/craft/vercel-optimize/lib/scanners/region-pin-in-config.mjs +89 -0
- package/skills/craft/vercel-optimize/lib/scanners/source-maps-production.mjs +33 -0
- package/skills/craft/vercel-optimize/lib/scanners/sveltekit-prerender-missing.mjs +47 -0
- package/skills/craft/vercel-optimize/lib/scanners/turbo-force-bypass.mjs +136 -0
- package/skills/craft/vercel-optimize/lib/scanners/unoptimized-image.mjs +127 -0
- package/skills/craft/vercel-optimize/lib/scanners/use-cache-date-stamp.mjs +112 -0
- package/skills/craft/vercel-optimize/lib/support-topics.mjs +365 -0
- package/skills/craft/vercel-optimize/lib/throttle.mjs +280 -0
- package/skills/craft/vercel-optimize/lib/util.mjs +17 -0
- package/skills/craft/vercel-optimize/lib/vercel.mjs +855 -0
- package/skills/craft/vercel-optimize/lib/verify-claim.mjs +1843 -0
- package/skills/craft/vercel-optimize/lib/workspace-resolver.mjs +552 -0
- package/skills/craft/vercel-optimize/metadata.json +14 -0
- package/skills/craft/vercel-optimize/references/candidates.md +176 -0
- package/skills/craft/vercel-optimize/references/data-collection.md +224 -0
- package/skills/craft/vercel-optimize/references/docs-library.json +683 -0
- package/skills/craft/vercel-optimize/references/doctrine.md +108 -0
- package/skills/craft/vercel-optimize/references/observability-plus.md +109 -0
- package/skills/craft/vercel-optimize/references/playbooks/README.md +57 -0
- package/skills/craft/vercel-optimize/references/playbooks/ai-application.md +32 -0
- package/skills/craft/vercel-optimize/references/playbooks/api-service.md +30 -0
- package/skills/craft/vercel-optimize/references/playbooks/content-site.md +30 -0
- package/skills/craft/vercel-optimize/references/playbooks/ecommerce.md +30 -0
- package/skills/craft/vercel-optimize/references/playbooks/marketing.md +30 -0
- package/skills/craft/vercel-optimize/references/playbooks/saas.md +31 -0
- package/skills/craft/vercel-optimize/references/playbooks/sveltekit.md +75 -0
- package/skills/craft/vercel-optimize/references/recommendations.md +214 -0
- package/skills/craft/vercel-optimize/references/scanner-patterns.md +266 -0
- package/skills/craft/vercel-optimize/references/scoring.md +208 -0
- package/skills/craft/vercel-optimize/references/support-topics/README.md +50 -0
- package/skills/craft/vercel-optimize/references/support-topics/astro-edge-middleware-scope.md +30 -0
- package/skills/craft/vercel-optimize/references/support-topics/astro-output-mode-and-isr.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/auth-preserving-parallelization.md +30 -0
- package/skills/craft/vercel-optimize/references/support-topics/bot-protection-product-guardrails.md +32 -0
- package/skills/craft/vercel-optimize/references/support-topics/build-minutes-monorepo-fanout.md +32 -0
- package/skills/craft/vercel-optimize/references/support-topics/cache-components-static-shell-boundaries.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/cache-components-suspense-dedupe-pitfall.md +32 -0
- package/skills/craft/vercel-optimize/references/support-topics/cdn-cache-auth-safety.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/cold-start-initialization-bundle.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/core-web-vitals-client-bottlenecks.md +33 -0
- package/skills/craft/vercel-optimize/references/support-topics/database-egress-pooling-region.md +32 -0
- package/skills/craft/vercel-optimize/references/support-topics/dynamic-rendering-traps.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/external-api-critical-path-platform.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/external-api-critical-path.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/fast-data-transfer-payloads.md +26 -0
- package/skills/craft/vercel-optimize/references/support-topics/fluid-compute-caveats.md +26 -0
- package/skills/craft/vercel-optimize/references/support-topics/function-duration-io-and-after.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/function-invocation-reduction.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/function-region-misconfiguration-ttfb.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/image-optimization-cost-control.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/isr-revalidation-static-generation.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/middleware-proxy-edge-cost.md +30 -0
- package/skills/craft/vercel-optimize/references/support-topics/next-fetch-revalidate-floor.md +30 -0
- package/skills/craft/vercel-optimize/references/support-topics/next-font-cls-self-hosting.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/next-heavy-ui-lazy-load-boundaries.md +28 -0
- package/skills/craft/vercel-optimize/references/support-topics/next-image-lcp-preload-sizes.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/next-route-handler-get-cache-defaults.md +30 -0
- package/skills/craft/vercel-optimize/references/support-topics/next-script-third-party-strategy.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/nextjs-version-cache-semantics.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/not-found-catchall-request-waste.md +33 -0
- package/skills/craft/vercel-optimize/references/support-topics/nuxt-route-rules-cache-isr.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/observability-events-cost-attribution.md +27 -0
- package/skills/craft/vercel-optimize/references/support-topics/post-response-work-waituntil.md +26 -0
- package/skills/craft/vercel-optimize/references/support-topics/route-error-durable-offload.md +33 -0
- package/skills/craft/vercel-optimize/references/support-topics/route-error-runtime-limits.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/runtime-cache-reusable-data.md +30 -0
- package/skills/craft/vercel-optimize/references/support-topics/sveltekit-isr-prerender-safety.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/sveltekit-split-cold-start-tradeoff.md +30 -0
- package/skills/craft/vercel-optimize/references/support-topics/usage-spike-triage.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/use-cache-date-stamp-isr-write-amplifier.md +31 -0
- package/skills/craft/vercel-optimize/references/support-topics/use-cache-remote-shared-origin-data.md +30 -0
- package/skills/craft/vercel-optimize/references/support-topics/workflow-resumable-stream-routes.md +32 -0
- package/skills/craft/vercel-optimize/references/verification.md +102 -0
- package/skills/craft/vercel-optimize/references/voice.md +76 -0
- package/skills/craft/vercel-optimize/scripts/budget-summary.mjs +58 -0
- package/skills/craft/vercel-optimize/scripts/build-docs.mjs +76 -0
- package/skills/craft/vercel-optimize/scripts/check-citations.mjs +91 -0
- package/skills/craft/vercel-optimize/scripts/check-docs-fresh.mjs +100 -0
- package/skills/craft/vercel-optimize/scripts/collect-signals.mjs +638 -0
- package/skills/craft/vercel-optimize/scripts/collect-sub-agent-outputs.mjs +306 -0
- package/skills/craft/vercel-optimize/scripts/deep-dive.mjs +358 -0
- package/skills/craft/vercel-optimize/scripts/gate-investigations.mjs +178 -0
- package/skills/craft/vercel-optimize/scripts/merge-signals.mjs +203 -0
- package/skills/craft/vercel-optimize/scripts/prepare-investigation-brief.mjs +249 -0
- package/skills/craft/vercel-optimize/scripts/reconcile-candidates.mjs +69 -0
- package/skills/craft/vercel-optimize/scripts/render-report.mjs +462 -0
- package/skills/craft/vercel-optimize/scripts/scan-codebase.mjs +361 -0
- package/skills/craft/vercel-optimize/scripts/verify-and-regen.mjs +379 -0
- package/skills/craft/vercel-optimize/scripts/verify-finding.mjs +21 -0
- package/skills/craft/web-design-guidelines/LICENSE +21 -0
- package/skills/craft/web-design-guidelines/SKILL.md +43 -0
- package/skills/craft/zero-to-live/LICENSE +21 -0
- package/skills/craft/zero-to-live/SKILL.md +422 -0
- package/skills/creative/creative-3d-modeling/LICENSE +21 -0
- package/skills/creative/creative-3d-modeling/SKILL.md +70 -0
- package/skills/creative/creative-architecture/LICENSE +21 -0
- package/skills/creative/creative-architecture/SKILL.md +94 -0
- package/skills/creative/creative-design-principles/LICENSE +21 -0
- package/skills/creative/creative-design-principles/SKILL.md +95 -0
- package/skills/creative/creative-fashion-advanced/LICENSE +21 -0
- package/skills/creative/creative-fashion-advanced/SKILL.md +68 -0
- package/skills/creative/creative-fashion-design/LICENSE +21 -0
- package/skills/creative/creative-fashion-design/SKILL.md +66 -0
- package/skills/creative/creative-game-design/LICENSE +21 -0
- package/skills/creative/creative-game-design/SKILL.md +77 -0
- package/skills/creative/creative-industrial-design/LICENSE +21 -0
- package/skills/creative/creative-industrial-design/SKILL.md +57 -0
- package/skills/creative/creative-interior-design/LICENSE +21 -0
- package/skills/creative/creative-interior-design/SKILL.md +59 -0
- package/skills/creative/creative-music-theory/LICENSE +21 -0
- package/skills/creative/creative-music-theory/SKILL.md +98 -0
- package/skills/creative/creative-photography/LICENSE +21 -0
- package/skills/creative/creative-photography/SKILL.md +87 -0
- package/skills/creative/creative-textile-science/LICENSE +21 -0
- package/skills/creative/creative-textile-science/SKILL.md +67 -0
- package/skills/creative/creative-ux/LICENSE +21 -0
- package/skills/creative/creative-ux/SKILL.md +81 -0
- package/skills/creative/creative-video/LICENSE +21 -0
- package/skills/creative/creative-video/SKILL.md +84 -0
- package/skills/creative/creative-writing-craft/LICENSE +21 -0
- package/skills/creative/creative-writing-craft/SKILL.md +91 -0
- package/skills/diagram-maker/SKILL.md +56 -0
- package/skills/diagram-maker/references/excalidraw-patterns.md +85 -0
- package/skills/diagram-maker/references/svg-template.md +112 -0
- package/skills/discord/SKILL.md +140 -0
- package/skills/education/edu-adult-learning/LICENSE +21 -0
- package/skills/education/edu-adult-learning/SKILL.md +81 -0
- package/skills/education/edu-africa-multilingual/LICENSE +21 -0
- package/skills/education/edu-africa-multilingual/SKILL.md +55 -0
- package/skills/education/edu-arabic/LICENSE +21 -0
- package/skills/education/edu-arabic/SKILL.md +60 -0
- package/skills/education/edu-australia-nz/LICENSE +21 -0
- package/skills/education/edu-australia-nz/SKILL.md +48 -0
- package/skills/education/edu-china-mandarin/LICENSE +21 -0
- package/skills/education/edu-china-mandarin/SKILL.md +58 -0
- package/skills/education/edu-critical-thinking/LICENSE +21 -0
- package/skills/education/edu-critical-thinking/SKILL.md +86 -0
- package/skills/education/edu-curriculum/LICENSE +21 -0
- package/skills/education/edu-curriculum/SKILL.md +87 -0
- package/skills/education/edu-ed-tech/LICENSE +21 -0
- package/skills/education/edu-ed-tech/SKILL.md +73 -0
- package/skills/education/edu-france/LICENSE +21 -0
- package/skills/education/edu-france/SKILL.md +42 -0
- package/skills/education/edu-germany/LICENSE +21 -0
- package/skills/education/edu-germany/SKILL.md +46 -0
- package/skills/education/edu-india-competitive/LICENSE +21 -0
- package/skills/education/edu-india-competitive/SKILL.md +159 -0
- package/skills/education/edu-india-east/LICENSE +21 -0
- package/skills/education/edu-india-east/SKILL.md +60 -0
- package/skills/education/edu-india-hindi/LICENSE +21 -0
- package/skills/education/edu-india-hindi/SKILL.md +107 -0
- package/skills/education/edu-india-south/LICENSE +21 -0
- package/skills/education/edu-india-south/SKILL.md +64 -0
- package/skills/education/edu-india-west/LICENSE +21 -0
- package/skills/education/edu-india-west/SKILL.md +68 -0
- package/skills/education/edu-indonesia-malay/LICENSE +21 -0
- package/skills/education/edu-indonesia-malay/SKILL.md +57 -0
- package/skills/education/edu-international-ib/LICENSE +21 -0
- package/skills/education/edu-international-ib/SKILL.md +61 -0
- package/skills/education/edu-japan/LICENSE +21 -0
- package/skills/education/edu-japan/SKILL.md +48 -0
- package/skills/education/edu-korea/LICENSE +21 -0
- package/skills/education/edu-korea/SKILL.md +48 -0
- package/skills/education/edu-learning-science/LICENSE +21 -0
- package/skills/education/edu-learning-science/SKILL.md +76 -0
- package/skills/education/edu-portuguese-brazil/LICENSE +21 -0
- package/skills/education/edu-portuguese-brazil/SKILL.md +51 -0
- package/skills/education/edu-russia/LICENSE +21 -0
- package/skills/education/edu-russia/SKILL.md +50 -0
- package/skills/education/edu-spain-latam/LICENSE +21 -0
- package/skills/education/edu-spain-latam/SKILL.md +55 -0
- package/skills/education/edu-special/LICENSE +21 -0
- package/skills/education/edu-special/SKILL.md +76 -0
- package/skills/education/edu-thailand/LICENSE +21 -0
- package/skills/education/edu-thailand/SKILL.md +55 -0
- package/skills/education/edu-turkey/LICENSE +21 -0
- package/skills/education/edu-turkey/SKILL.md +58 -0
- package/skills/education/edu-uk-gcse-alevel/LICENSE +21 -0
- package/skills/education/edu-uk-gcse-alevel/SKILL.md +51 -0
- package/skills/education/edu-usa-graduate/LICENSE +21 -0
- package/skills/education/edu-usa-graduate/SKILL.md +57 -0
- package/skills/education/edu-usa-sat-act/LICENSE +21 -0
- package/skills/education/edu-usa-sat-act/SKILL.md +55 -0
- package/skills/education/edu-vietnam/LICENSE +21 -0
- package/skills/education/edu-vietnam/SKILL.md +53 -0
- package/skills/eightctl/SKILL.md +54 -0
- package/skills/engineering/eng-aerospace/LICENSE +21 -0
- package/skills/engineering/eng-aerospace/SKILL.md +117 -0
- package/skills/engineering/eng-chemical/LICENSE +21 -0
- package/skills/engineering/eng-chemical/SKILL.md +63 -0
- package/skills/engineering/eng-civil/LICENSE +21 -0
- package/skills/engineering/eng-civil/SKILL.md +223 -0
- package/skills/engineering/eng-control-systems/LICENSE +21 -0
- package/skills/engineering/eng-control-systems/SKILL.md +158 -0
- package/skills/engineering/eng-cryogenics/LICENSE +21 -0
- package/skills/engineering/eng-cryogenics/SKILL.md +151 -0
- package/skills/engineering/eng-electrical/LICENSE +21 -0
- package/skills/engineering/eng-electrical/SKILL.md +70 -0
- package/skills/engineering/eng-electronics-embedded/LICENSE +21 -0
- package/skills/engineering/eng-electronics-embedded/SKILL.md +89 -0
- package/skills/engineering/eng-environmental/LICENSE +21 -0
- package/skills/engineering/eng-environmental/SKILL.md +66 -0
- package/skills/engineering/eng-manufacturing/LICENSE +21 -0
- package/skills/engineering/eng-manufacturing/SKILL.md +78 -0
- package/skills/engineering/eng-mechanical/LICENSE +21 -0
- package/skills/engineering/eng-mechanical/SKILL.md +66 -0
- package/skills/engineering/eng-project/LICENSE +21 -0
- package/skills/engineering/eng-project/SKILL.md +72 -0
- package/skills/engineering/eng-propulsion/LICENSE +21 -0
- package/skills/engineering/eng-propulsion/SKILL.md +133 -0
- package/skills/engineering/eng-robotics/LICENSE +21 -0
- package/skills/engineering/eng-robotics/SKILL.md +92 -0
- package/skills/engineering/eng-systems/LICENSE +21 -0
- package/skills/engineering/eng-systems/SKILL.md +81 -0
- package/skills/environment/env-biodiversity/LICENSE +21 -0
- package/skills/environment/env-biodiversity/SKILL.md +66 -0
- package/skills/environment/env-circular-economy/LICENSE +21 -0
- package/skills/environment/env-circular-economy/SKILL.md +71 -0
- package/skills/environment/env-climate-action/LICENSE +21 -0
- package/skills/environment/env-climate-action/SKILL.md +55 -0
- package/skills/environment/env-energy/LICENSE +21 -0
- package/skills/environment/env-energy/SKILL.md +83 -0
- package/skills/environment/env-sustainability-biz/LICENSE +21 -0
- package/skills/environment/env-sustainability-biz/SKILL.md +65 -0
- package/skills/environment/env-water/LICENSE +21 -0
- package/skills/environment/env-water/SKILL.md +67 -0
- package/skills/finance/finance-accounting/LICENSE +21 -0
- package/skills/finance/finance-accounting/SKILL.md +239 -0
- package/skills/finance/finance-banking/LICENSE +21 -0
- package/skills/finance/finance-banking/SKILL.md +54 -0
- package/skills/finance/finance-corporate/LICENSE +21 -0
- package/skills/finance/finance-corporate/SKILL.md +105 -0
- package/skills/finance/finance-crypto/LICENSE +21 -0
- package/skills/finance/finance-crypto/SKILL.md +94 -0
- package/skills/finance/finance-debt-management/LICENSE +21 -0
- package/skills/finance/finance-debt-management/SKILL.md +87 -0
- package/skills/finance/finance-insurance/LICENSE +21 -0
- package/skills/finance/finance-insurance/SKILL.md +91 -0
- package/skills/finance/finance-investing/LICENSE +21 -0
- package/skills/finance/finance-investing/SKILL.md +269 -0
- package/skills/finance/finance-options-derivatives/LICENSE +21 -0
- package/skills/finance/finance-options-derivatives/SKILL.md +68 -0
- package/skills/finance/finance-personal/LICENSE +21 -0
- package/skills/finance/finance-personal/SKILL.md +268 -0
- package/skills/finance/finance-real-estate/LICENSE +21 -0
- package/skills/finance/finance-real-estate/SKILL.md +110 -0
- package/skills/finance/finance-startup/LICENSE +21 -0
- package/skills/finance/finance-startup/SKILL.md +253 -0
- package/skills/finance/finance-tax-planning/LICENSE +21 -0
- package/skills/finance/finance-tax-planning/SKILL.md +89 -0
- package/skills/finance/finance-trading/LICENSE +21 -0
- package/skills/finance/finance-trading/SKILL.md +112 -0
- package/skills/gemini/SKILL.md +51 -0
- package/skills/gh-issues/SKILL.md +216 -0
- package/skills/gifgrep/SKILL.md +89 -0
- package/skills/github/SKILL.md +87 -0
- package/skills/gog/SKILL.md +120 -0
- package/skills/goplaces/SKILL.md +56 -0
- package/skills/health/health-aging/LICENSE +21 -0
- package/skills/health/health-aging/SKILL.md +82 -0
- package/skills/health/health-chronic/LICENSE +21 -0
- package/skills/health/health-chronic/SKILL.md +202 -0
- package/skills/health/health-dental/LICENSE +21 -0
- package/skills/health/health-dental/SKILL.md +41 -0
- package/skills/health/health-eye-care/LICENSE +21 -0
- package/skills/health/health-eye-care/SKILL.md +56 -0
- package/skills/health/health-first-aid/LICENSE +21 -0
- package/skills/health/health-first-aid/SKILL.md +201 -0
- package/skills/health/health-fitness/LICENSE +21 -0
- package/skills/health/health-fitness/SKILL.md +111 -0
- package/skills/health/health-general/LICENSE +21 -0
- package/skills/health/health-general/SKILL.md +277 -0
- package/skills/health/health-mens/LICENSE +21 -0
- package/skills/health/health-mens/SKILL.md +53 -0
- package/skills/health/health-mental/LICENSE +21 -0
- package/skills/health/health-mental/SKILL.md +221 -0
- package/skills/health/health-naturopathy-ayurveda/LICENSE +21 -0
- package/skills/health/health-naturopathy-ayurveda/SKILL.md +60 -0
- package/skills/health/health-nutrition/LICENSE +21 -0
- package/skills/health/health-nutrition/SKILL.md +262 -0
- package/skills/health/health-pediatric/LICENSE +21 -0
- package/skills/health/health-pediatric/SKILL.md +94 -0
- package/skills/health/health-pharmacology/LICENSE +21 -0
- package/skills/health/health-pharmacology/SKILL.md +87 -0
- package/skills/health/health-pregnancy/LICENSE +21 -0
- package/skills/health/health-pregnancy/SKILL.md +71 -0
- package/skills/health/health-skin/LICENSE +21 -0
- package/skills/health/health-skin/SKILL.md +71 -0
- package/skills/health/health-sleep/LICENSE +21 -0
- package/skills/health/health-sleep/SKILL.md +81 -0
- package/skills/health/health-womens/LICENSE +21 -0
- package/skills/health/health-womens/SKILL.md +72 -0
- package/skills/health/health-yoga-wellness/LICENSE +21 -0
- package/skills/health/health-yoga-wellness/SKILL.md +58 -0
- package/skills/healthcare-systems/health-sys-global/LICENSE +21 -0
- package/skills/healthcare-systems/health-sys-global/SKILL.md +69 -0
- package/skills/healthcare-systems/health-sys-management/LICENSE +21 -0
- package/skills/healthcare-systems/health-sys-management/SKILL.md +71 -0
- package/skills/healthcare-systems/health-sys-navigation/LICENSE +21 -0
- package/skills/healthcare-systems/health-sys-navigation/SKILL.md +60 -0
- package/skills/healthcare-systems/health-sys-public/LICENSE +21 -0
- package/skills/healthcare-systems/health-sys-public/SKILL.md +71 -0
- package/skills/healthcheck/SKILL.md +109 -0
- package/skills/himalaya/SKILL.md +84 -0
- package/skills/himalaya/references/configuration.md +184 -0
- package/skills/himalaya/references/message-composition.md +199 -0
- package/skills/humanities/humanities-history-world/LICENSE +21 -0
- package/skills/humanities/humanities-history-world/SKILL.md +59 -0
- package/skills/humanities/humanities-indian-classical/LICENSE +21 -0
- package/skills/humanities/humanities-indian-classical/SKILL.md +104 -0
- package/skills/humanities/humanities-philosophy/LICENSE +21 -0
- package/skills/humanities/humanities-philosophy/SKILL.md +105 -0
- package/skills/humanities/humanities-world-religions/LICENSE +21 -0
- package/skills/humanities/humanities-world-religions/SKILL.md +67 -0
- package/skills/imsg/SKILL.md +126 -0
- package/skills/industry/industry-construction/LICENSE +21 -0
- package/skills/industry/industry-construction/SKILL.md +81 -0
- package/skills/industry/industry-education-sector/LICENSE +21 -0
- package/skills/industry/industry-education-sector/SKILL.md +49 -0
- package/skills/industry/industry-fashion/LICENSE +21 -0
- package/skills/industry/industry-fashion/SKILL.md +82 -0
- package/skills/industry/industry-food/LICENSE +21 -0
- package/skills/industry/industry-food/SKILL.md +79 -0
- package/skills/industry/industry-government/LICENSE +21 -0
- package/skills/industry/industry-government/SKILL.md +80 -0
- package/skills/industry/industry-hospitality/LICENSE +21 -0
- package/skills/industry/industry-hospitality/SKILL.md +73 -0
- package/skills/industry/industry-insurance-sector/LICENSE +21 -0
- package/skills/industry/industry-insurance-sector/SKILL.md +57 -0
- package/skills/industry/industry-logistics/LICENSE +21 -0
- package/skills/industry/industry-logistics/SKILL.md +80 -0
- package/skills/industry/industry-media/LICENSE +21 -0
- package/skills/industry/industry-media/SKILL.md +66 -0
- package/skills/industry/industry-nonprofit/LICENSE +21 -0
- package/skills/industry/industry-nonprofit/SKILL.md +77 -0
- package/skills/industry/industry-pharma/LICENSE +21 -0
- package/skills/industry/industry-pharma/SKILL.md +69 -0
- package/skills/industry/industry-real-estate/LICENSE +21 -0
- package/skills/industry/industry-real-estate/SKILL.md +61 -0
- package/skills/industry/industry-sports/LICENSE +21 -0
- package/skills/industry/industry-sports/SKILL.md +71 -0
- package/skills/industry/industry-tech-startup/LICENSE +21 -0
- package/skills/industry/industry-tech-startup/SKILL.md +82 -0
- package/skills/internal-comms/LICENSE +21 -0
- package/skills/internal-comms/SKILL.md +38 -0
- package/skills/internal-comms/examples/3p-updates.md +49 -0
- package/skills/internal-comms/examples/company-newsletter.md +76 -0
- package/skills/internal-comms/examples/faq-answers.md +35 -0
- package/skills/internal-comms/examples/general-comms.md +19 -0
- package/skills/legal/legal-business/LICENSE +21 -0
- package/skills/legal/legal-business/SKILL.md +227 -0
- package/skills/legal/legal-consumer/LICENSE +21 -0
- package/skills/legal/legal-consumer/SKILL.md +155 -0
- package/skills/legal/legal-contracts/LICENSE +21 -0
- package/skills/legal/legal-contracts/SKILL.md +268 -0
- package/skills/legal/legal-corporate-governance/LICENSE +21 -0
- package/skills/legal/legal-corporate-governance/SKILL.md +53 -0
- package/skills/legal/legal-employment/LICENSE +21 -0
- package/skills/legal/legal-employment/SKILL.md +291 -0
- package/skills/legal/legal-immigration/LICENSE +21 -0
- package/skills/legal/legal-immigration/SKILL.md +146 -0
- package/skills/legal/legal-international/LICENSE +21 -0
- package/skills/legal/legal-international/SKILL.md +51 -0
- package/skills/legal/legal-ip/LICENSE +21 -0
- package/skills/legal/legal-ip/SKILL.md +264 -0
- package/skills/legal/legal-privacy/LICENSE +21 -0
- package/skills/legal/legal-privacy/SKILL.md +161 -0
- package/skills/legal/legal-real-estate/LICENSE +21 -0
- package/skills/legal/legal-real-estate/SKILL.md +142 -0
- package/skills/legal/legal-startup/LICENSE +21 -0
- package/skills/legal/legal-startup/SKILL.md +182 -0
- package/skills/legal/legal-tax/LICENSE +21 -0
- package/skills/legal/legal-tax/SKILL.md +156 -0
- package/skills/mcp-builder/LICENSE +21 -0
- package/skills/mcp-builder/SKILL.md +257 -0
- package/skills/mcp-builder/reference/evaluation.md +630 -0
- package/skills/mcp-builder/reference/mcp_best_practices.md +269 -0
- package/skills/mcp-builder/reference/node_mcp_server.md +980 -0
- package/skills/mcp-builder/reference/python_mcp_server.md +737 -0
- package/skills/mcp-builder/scripts/connections.py +151 -0
- package/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/skills/mcporter/SKILL.md +65 -0
- package/skills/meme-maker/SKILL.md +46 -0
- package/skills/meme-maker/references/templates.json +358 -0
- package/skills/meme-maker/scripts/meme.mjs +398 -0
- package/skills/mental-health/mental-health-cbt/LICENSE +21 -0
- package/skills/mental-health/mental-health-cbt/SKILL.md +254 -0
- package/skills/mental-health/psych-addiction/LICENSE +21 -0
- package/skills/mental-health/psych-addiction/SKILL.md +79 -0
- package/skills/mental-health/psych-behavioral-econ/LICENSE +21 -0
- package/skills/mental-health/psych-behavioral-econ/SKILL.md +84 -0
- package/skills/mental-health/psych-child/LICENSE +21 -0
- package/skills/mental-health/psych-child/SKILL.md +84 -0
- package/skills/mental-health/psych-grief/LICENSE +21 -0
- package/skills/mental-health/psych-grief/SKILL.md +85 -0
- package/skills/mental-health/psych-mindfulness/LICENSE +21 -0
- package/skills/mental-health/psych-mindfulness/SKILL.md +71 -0
- package/skills/mental-health/psych-org/LICENSE +21 -0
- package/skills/mental-health/psych-org/SKILL.md +115 -0
- package/skills/mental-health/psych-positive/LICENSE +21 -0
- package/skills/mental-health/psych-positive/SKILL.md +86 -0
- package/skills/mental-health/psych-relationships/LICENSE +21 -0
- package/skills/mental-health/psych-relationships/SKILL.md +100 -0
- package/skills/mental-health/psych-trauma/LICENSE +21 -0
- package/skills/mental-health/psych-trauma/SKILL.md +109 -0
- package/skills/model-usage/SKILL.md +75 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +319 -0
- package/skills/model-usage/scripts/test_model_usage.py +40 -0
- package/skills/nano-pdf/SKILL.md +42 -0
- package/skills/node-connect/SKILL.md +147 -0
- package/skills/node-inspect-debugger/SKILL.md +88 -0
- package/skills/notion/SKILL.md +154 -0
- package/skills/obsidian/SKILL.md +123 -0
- package/skills/openai-whisper/SKILL.md +42 -0
- package/skills/openai-whisper-api/SKILL.md +75 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +154 -0
- package/skills/openhue/SKILL.md +116 -0
- package/skills/oracle/SKILL.md +130 -0
- package/skills/ordercli/SKILL.md +82 -0
- package/skills/peekaboo/SKILL.md +217 -0
- package/skills/pyproject.toml +10 -0
- package/skills/python-debugpy/SKILL.md +76 -0
- package/skills/sag/SKILL.md +91 -0
- package/skills/science/sci-astronomy/LICENSE +21 -0
- package/skills/science/sci-astronomy/SKILL.md +80 -0
- package/skills/science/sci-biology/LICENSE +21 -0
- package/skills/science/sci-biology/SKILL.md +74 -0
- package/skills/science/sci-chemistry/LICENSE +21 -0
- package/skills/science/sci-chemistry/SKILL.md +89 -0
- package/skills/science/sci-climate/LICENSE +21 -0
- package/skills/science/sci-climate/SKILL.md +72 -0
- package/skills/science/sci-data-analysis/LICENSE +21 -0
- package/skills/science/sci-data-analysis/SKILL.md +87 -0
- package/skills/science/sci-environmental-science/LICENSE +21 -0
- package/skills/science/sci-environmental-science/SKILL.md +69 -0
- package/skills/science/sci-geology/LICENSE +21 -0
- package/skills/science/sci-geology/SKILL.md +56 -0
- package/skills/science/sci-method/LICENSE +21 -0
- package/skills/science/sci-method/SKILL.md +77 -0
- package/skills/science/sci-neuroscience/LICENSE +21 -0
- package/skills/science/sci-neuroscience/SKILL.md +79 -0
- package/skills/science/sci-physics/LICENSE +21 -0
- package/skills/science/sci-physics/SKILL.md +78 -0
- package/skills/science/sci-research-methods/LICENSE +21 -0
- package/skills/science/sci-research-methods/SKILL.md +83 -0
- package/skills/science/sci-statistics/LICENSE +21 -0
- package/skills/science/sci-statistics/SKILL.md +249 -0
- package/skills/session-logs/SKILL.md +155 -0
- package/skills/sherpa-onnx-tts/SKILL.md +113 -0
- package/skills/skill-creator/SKILL.md +81 -0
- package/skills/skill-creator/license.txt +202 -0
- package/skills/skill-creator/scripts/init_skill.py +378 -0
- package/skills/skill-creator/scripts/package_skill.py +144 -0
- package/skills/skill-creator/scripts/quick_validate.py +169 -0
- package/skills/skill-creator/scripts/test_init_skill.py +51 -0
- package/skills/skill-creator/scripts/test_package_skill.py +199 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +116 -0
- package/skills/slack/SKILL.md +82 -0
- package/skills/slack-gif-creator/LICENSE +21 -0
- package/skills/slack-gif-creator/SKILL.md +293 -0
- package/skills/slack-gif-creator/requirements.txt +4 -0
- package/skills/social-sciences/social-anthropology/LICENSE +21 -0
- package/skills/social-sciences/social-anthropology/SKILL.md +62 -0
- package/skills/social-sciences/social-economics/LICENSE +21 -0
- package/skills/social-sciences/social-economics/SKILL.md +88 -0
- package/skills/social-sciences/social-geography/LICENSE +21 -0
- package/skills/social-sciences/social-geography/SKILL.md +61 -0
- package/skills/social-sciences/social-international-dev/LICENSE +21 -0
- package/skills/social-sciences/social-international-dev/SKILL.md +76 -0
- package/skills/social-sciences/social-political-science/LICENSE +21 -0
- package/skills/social-sciences/social-political-science/SKILL.md +70 -0
- package/skills/social-sciences/social-public-policy/LICENSE +21 -0
- package/skills/social-sciences/social-public-policy/SKILL.md +73 -0
- package/skills/social-sciences/social-sociology/LICENSE +21 -0
- package/skills/social-sciences/social-sociology/SKILL.md +78 -0
- package/skills/songsee/SKILL.md +53 -0
- package/skills/sonoscli/SKILL.md +69 -0
- package/skills/spike/SKILL.md +55 -0
- package/skills/spotify-player/SKILL.md +68 -0
- package/skills/summarize/SKILL.md +90 -0
- package/skills/taskflow/SKILL.md +153 -0
- package/skills/taskflow/examples/inbox-triage.lobster +33 -0
- package/skills/taskflow/examples/pr-intake.lobster +32 -0
- package/skills/taskflow-inbox-triage/SKILL.md +123 -0
- package/skills/technical/ai-ethics/LICENSE +21 -0
- package/skills/technical/ai-ethics/SKILL.md +92 -0
- package/skills/technical/ai-product-builder/LICENSE +21 -0
- package/skills/technical/ai-product-builder/SKILL.md +180 -0
- package/skills/technical/analytics-setup/LICENSE +21 -0
- package/skills/technical/analytics-setup/SKILL.md +125 -0
- package/skills/technical/api-builder/LICENSE +21 -0
- package/skills/technical/api-builder/SKILL.md +202 -0
- package/skills/technical/architecture-decisions/LICENSE +21 -0
- package/skills/technical/architecture-decisions/SKILL.md +120 -0
- package/skills/technical/auth-security/LICENSE +21 -0
- package/skills/technical/auth-security/SKILL.md +209 -0
- package/skills/technical/blockchain-web3/LICENSE +21 -0
- package/skills/technical/blockchain-web3/SKILL.md +84 -0
- package/skills/technical/cloud-architecture/LICENSE +21 -0
- package/skills/technical/cloud-architecture/SKILL.md +85 -0
- package/skills/technical/content-platform/LICENSE +21 -0
- package/skills/technical/content-platform/SKILL.md +134 -0
- package/skills/technical/cybersecurity-advanced/LICENSE +21 -0
- package/skills/technical/cybersecurity-advanced/SKILL.md +99 -0
- package/skills/technical/data-engineering/LICENSE +21 -0
- package/skills/technical/data-engineering/SKILL.md +117 -0
- package/skills/technical/database-design/LICENSE +21 -0
- package/skills/technical/database-design/SKILL.md +185 -0
- package/skills/technical/devops-cicd/LICENSE +21 -0
- package/skills/technical/devops-cicd/SKILL.md +181 -0
- package/skills/technical/ecommerce-builder/LICENSE +21 -0
- package/skills/technical/ecommerce-builder/SKILL.md +123 -0
- package/skills/technical/email-marketing/LICENSE +21 -0
- package/skills/technical/email-marketing/SKILL.md +128 -0
- package/skills/technical/fintech-builder/LICENSE +21 -0
- package/skills/technical/fintech-builder/SKILL.md +141 -0
- package/skills/technical/full-stack-web/LICENSE +21 -0
- package/skills/technical/full-stack-web/SKILL.md +173 -0
- package/skills/technical/gdpr-basics/LICENSE +21 -0
- package/skills/technical/gdpr-basics/SKILL.md +145 -0
- package/skills/technical/launch-playbook/LICENSE +21 -0
- package/skills/technical/launch-playbook/SKILL.md +95 -0
- package/skills/technical/marketing-copy/LICENSE +21 -0
- package/skills/technical/marketing-copy/SKILL.md +126 -0
- package/skills/technical/marketplace-builder/LICENSE +21 -0
- package/skills/technical/marketplace-builder/SKILL.md +105 -0
- package/skills/technical/mobile-pwa/LICENSE +21 -0
- package/skills/technical/mobile-pwa/SKILL.md +191 -0
- package/skills/technical/no-code-tools/LICENSE +21 -0
- package/skills/technical/no-code-tools/SKILL.md +80 -0
- package/skills/technical/open-source/LICENSE +21 -0
- package/skills/technical/open-source/SKILL.md +71 -0
- package/skills/technical/performance-optimization/LICENSE +21 -0
- package/skills/technical/performance-optimization/SKILL.md +155 -0
- package/skills/technical/pricing-design/LICENSE +21 -0
- package/skills/technical/pricing-design/SKILL.md +87 -0
- package/skills/technical/product-management/LICENSE +21 -0
- package/skills/technical/product-management/SKILL.md +94 -0
- package/skills/technical/saas-builder/LICENSE +21 -0
- package/skills/technical/saas-builder/SKILL.md +138 -0
- package/skills/technical/scope-estimation/LICENSE +21 -0
- package/skills/technical/scope-estimation/SKILL.md +99 -0
- package/skills/technical/secrets-management/LICENSE +21 -0
- package/skills/technical/secrets-management/SKILL.md +135 -0
- package/skills/technical/seo-technical/LICENSE +21 -0
- package/skills/technical/seo-technical/SKILL.md +136 -0
- package/skills/technical/technical-writing/LICENSE +21 -0
- package/skills/technical/technical-writing/SKILL.md +149 -0
- package/skills/technical/ux-research-tools/LICENSE +21 -0
- package/skills/technical/ux-research-tools/SKILL.md +54 -0
- package/skills/theme-factory/LICENSE +21 -0
- package/skills/theme-factory/SKILL.md +65 -0
- package/skills/theme-factory/theme-showcase.pdf +0 -0
- package/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/theme-factory/themes/desert-rose.md +19 -0
- package/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/theme-factory/themes/golden-hour.md +19 -0
- package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/things-mac/SKILL.md +90 -0
- package/skills/tmux/SKILL.md +95 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trades/trades-agriculture/LICENSE +21 -0
- package/skills/trades/trades-agriculture/SKILL.md +80 -0
- package/skills/trades/trades-automotive/LICENSE +21 -0
- package/skills/trades/trades-automotive/SKILL.md +84 -0
- package/skills/trades/trades-carpentry/LICENSE +21 -0
- package/skills/trades/trades-carpentry/SKILL.md +71 -0
- package/skills/trades/trades-cooking-pro/LICENSE +21 -0
- package/skills/trades/trades-cooking-pro/SKILL.md +90 -0
- package/skills/trades/trades-electrical/LICENSE +21 -0
- package/skills/trades/trades-electrical/SKILL.md +146 -0
- package/skills/trades/trades-hvac/LICENSE +21 -0
- package/skills/trades/trades-hvac/SKILL.md +80 -0
- package/skills/trades/trades-landscaping/LICENSE +21 -0
- package/skills/trades/trades-landscaping/SKILL.md +60 -0
- package/skills/trades/trades-metalworking/LICENSE +21 -0
- package/skills/trades/trades-metalworking/SKILL.md +64 -0
- package/skills/trades/trades-painting/LICENSE +21 -0
- package/skills/trades/trades-painting/SKILL.md +70 -0
- package/skills/trades/trades-plumbing/LICENSE +21 -0
- package/skills/trades/trades-plumbing/SKILL.md +160 -0
- package/skills/trades/trades-welding/LICENSE +21 -0
- package/skills/trades/trades-welding/SKILL.md +82 -0
- package/skills/trello/SKILL.md +112 -0
- package/skills/video-frames/SKILL.md +50 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/voice-call/SKILL.md +49 -0
- package/skills/wacli/SKILL.md +76 -0
- package/skills/weather/SKILL.md +91 -0
- package/skills/web-artifacts-builder/LICENSE +21 -0
- package/skills/web-artifacts-builder/SKILL.md +82 -0
- package/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
- package/skills/xurl/SKILL.md +124 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# Legacy System Analysis & Modernization Reference
|
|
2
|
+
|
|
3
|
+
## LEGACY RISK SCORING FRAMEWORK
|
|
4
|
+
|
|
5
|
+
Score each dimension 1–5. Total determines strategy.
|
|
6
|
+
|
|
7
|
+
| Dimension | 1 (Low Risk) | 3 (Medium) | 5 (Critical) |
|
|
8
|
+
| ---------------------- | --------------- | ---------------- | ---------------------- |
|
|
9
|
+
| Codebase Age | <2 years | 5-10 years | >15 years |
|
|
10
|
+
| Test Coverage | >80% | 20-50% | 0% |
|
|
11
|
+
| Dependency Health | All current | Some outdated | EOL/abandoned |
|
|
12
|
+
| Documentation | Excellent | Partial/stale | None |
|
|
13
|
+
| Bus Factor | Full team knows | 2-3 people | 1 person (or gone) |
|
|
14
|
+
| Runtime Risk | Containerized | VM, maintained | Bare metal, no backups |
|
|
15
|
+
| Language Support | Active LTS | Maintenance mode | EOL |
|
|
16
|
+
| Business Logic Clarity | Well documented | Partially known | Black box |
|
|
17
|
+
|
|
18
|
+
**Score 8-14:** Targeted refactor (clean up, update deps, add tests)
|
|
19
|
+
**Score 15-22:** Phased modernization (strangler fig, module by module)
|
|
20
|
+
**Score 23-30:** Recommend full rewrite (with risk assessment and stakeholder buy-in)
|
|
21
|
+
**Score >30:** Emergency — assess business continuity risk immediately
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## MODERNIZATION PATTERNS
|
|
26
|
+
|
|
27
|
+
### 1. Strangler Fig (Most Recommended)
|
|
28
|
+
|
|
29
|
+
Best for: Large, complex legacy systems still in active use.
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
[Legacy System]
|
|
33
|
+
↑
|
|
34
|
+
[Facade / API Gateway] ← New traffic routed here
|
|
35
|
+
↓
|
|
36
|
+
[New Service] ← New features built here
|
|
37
|
+
|
|
38
|
+
Steps:
|
|
39
|
+
1. Put proxy/facade in front of legacy system
|
|
40
|
+
2. Build new module in modern stack
|
|
41
|
+
3. Route ONE feature's traffic to new module
|
|
42
|
+
4. Test, validate, monitor
|
|
43
|
+
5. Repeat for next feature
|
|
44
|
+
6. When all traffic migrated → decommission legacy
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. Branch by Abstraction
|
|
48
|
+
|
|
49
|
+
Best for: Internal refactoring without external API changes.
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
1. Create abstraction layer (interface/protocol) over legacy component
|
|
53
|
+
2. Create new implementation behind abstraction
|
|
54
|
+
3. Add feature flag to switch between old/new
|
|
55
|
+
4. Test new implementation under flag
|
|
56
|
+
5. Flip flag for 100% → remove old implementation
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 3. Database-First Migration
|
|
60
|
+
|
|
61
|
+
Best for: Data model is the real asset, application is thin.
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
1. Map legacy data model completely (even undocumented fields)
|
|
65
|
+
2. Design new data model
|
|
66
|
+
3. Build ETL pipeline: legacy DB → new DB (with validation)
|
|
67
|
+
4. Run in parallel (dual-write) for 30 days
|
|
68
|
+
5. Validate parity
|
|
69
|
+
6. Cut over application to new DB
|
|
70
|
+
7. Keep ETL running for 30-day rollback window
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 4. Big Bang Rewrite
|
|
74
|
+
|
|
75
|
+
Best for: Risk score ≥ 23 AND team can absorb downtime AND business agrees.
|
|
76
|
+
|
|
77
|
+
**WARNING:** Big bang rewrites fail 60-70% of the time. Use ONLY when:
|
|
78
|
+
|
|
79
|
+
- System is truly unmaintainable
|
|
80
|
+
- Business can fund 6-18 months of parallel development
|
|
81
|
+
- All stakeholders understand the risk
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Mitigation:
|
|
85
|
+
1. Comprehensive test suite on legacy BEFORE rewriting (golden master tests)
|
|
86
|
+
2. Feature parity list signed off by business stakeholders
|
|
87
|
+
3. Staged rollout with rollback plan at each stage
|
|
88
|
+
4. Never discard legacy until new system has 30+ days of production load
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## LANGUAGE-SPECIFIC LEGACY PATTERNS
|
|
94
|
+
|
|
95
|
+
### COBOL Modernization
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
Approach: Never fully rewrite first pass.
|
|
99
|
+
|
|
100
|
+
Phase 1 (Month 1-3):
|
|
101
|
+
- Map all COPYBOOKS (shared data structures)
|
|
102
|
+
- Document all CALL trees (entry points and dependencies)
|
|
103
|
+
- Identify all batch jobs, JCL scripts, VSAM files
|
|
104
|
+
- Wrap critical programs in REST API facade (use IBM CICS/MF REST bridge)
|
|
105
|
+
|
|
106
|
+
Phase 2 (Month 3-9):
|
|
107
|
+
- Extract business rules to documented specs
|
|
108
|
+
- Rebuild rules in modern language (Java/Python)
|
|
109
|
+
- Run COBOL and new system in parallel, compare outputs
|
|
110
|
+
|
|
111
|
+
Phase 3 (Month 9+):
|
|
112
|
+
- Cut over transaction by transaction
|
|
113
|
+
- VSAM → PostgreSQL data migration
|
|
114
|
+
- Decommission COBOL programs as new code validated
|
|
115
|
+
|
|
116
|
+
Tools: Micro Focus Enterprise Developer, IBM Rational Developer, OpenCOBOL
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### PHP Legacy (PHP 5.x / WordPress / Custom CMS)
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
Most common issues:
|
|
123
|
+
- mysql_* functions (deprecated, removed PHP 7) → PDO
|
|
124
|
+
- No namespaces → add PSR-4 autoloading
|
|
125
|
+
- Global state everywhere → dependency injection
|
|
126
|
+
- SQL injection via string concatenation → parameterized queries
|
|
127
|
+
- md5/sha1 passwords → bcrypt/argon2
|
|
128
|
+
|
|
129
|
+
Modernization path:
|
|
130
|
+
PHP 5 → PHP 7.4 → PHP 8.2 (step by step, run PHPStan at each step)
|
|
131
|
+
Add Composer if missing
|
|
132
|
+
Add PHPUnit tests for each module before refactoring
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### jQuery / Vanilla JS Legacy (Pre-framework)
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
Issues:
|
|
139
|
+
- Global namespace pollution
|
|
140
|
+
- DOM manipulation spaghetti
|
|
141
|
+
- No module system
|
|
142
|
+
- $.ajax everywhere
|
|
143
|
+
|
|
144
|
+
Migration path:
|
|
145
|
+
1. Add Vite build tool (zero config bundler)
|
|
146
|
+
2. Convert to ES modules (import/export)
|
|
147
|
+
3. Replace jQuery AJAX with fetch() or axios
|
|
148
|
+
4. Componentize DOM sections into React/Vue (island architecture)
|
|
149
|
+
5. Full framework migration last (not first)
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Java EE / Spring Legacy (Pre-Spring Boot)
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
Issues:
|
|
156
|
+
- XML configuration (applicationContext.xml, web.xml)
|
|
157
|
+
- EJBs / JEE container dependencies
|
|
158
|
+
- Java 6/7 idioms (no lambdas, no streams)
|
|
159
|
+
- WAR deployment to Tomcat/JBoss
|
|
160
|
+
|
|
161
|
+
Migration path:
|
|
162
|
+
1. Upgrade Java version (6→8→11→17→21, each increment)
|
|
163
|
+
2. Convert XML config to @Configuration classes
|
|
164
|
+
3. Replace EJBs with Spring @Service beans
|
|
165
|
+
4. Migrate from Spring MVC → Spring Boot (embedded Tomcat)
|
|
166
|
+
5. Containerize (Dockerfile → Cloud Run / EKS)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Oracle / PL/SQL Legacy → PostgreSQL
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
Key differences to handle:
|
|
173
|
+
- ROWNUM → LIMIT/OFFSET
|
|
174
|
+
- NVL() → COALESCE()
|
|
175
|
+
- DECODE() → CASE WHEN
|
|
176
|
+
- SYSDATE → NOW()
|
|
177
|
+
- Sequences (Oracle) → SERIAL or GENERATED ALWAYS AS IDENTITY (PG)
|
|
178
|
+
- PL/SQL stored procedures → PL/pgSQL or move logic to app layer
|
|
179
|
+
- VARCHAR2 → VARCHAR
|
|
180
|
+
- NUMBER → NUMERIC or INTEGER
|
|
181
|
+
|
|
182
|
+
Tools: ora2pg (automated conversion, handles most cases)
|
|
183
|
+
Always review: triggers, stored procedures, packages (manual conversion required)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## AUDIT FRAMEWORK FOR INHERITED CODEBASES
|
|
189
|
+
|
|
190
|
+
When handed an unfamiliar codebase, run this audit in order:
|
|
191
|
+
|
|
192
|
+
### Hour 1: Orient
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
1. README → understand what it does (if no README, that's a finding)
|
|
196
|
+
2. Directory structure → identify architectural pattern
|
|
197
|
+
3. package.json / pom.xml / requirements.txt → tech stack + dependency ages
|
|
198
|
+
4. Git log → "git log --oneline -50" → last 50 commits, understand activity level
|
|
199
|
+
5. "git shortlog -sn" → who wrote this code
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Hour 2: Find the Danger Zones
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
Search for:
|
|
206
|
+
- Hardcoded credentials (grep -r "password\|secret\|api_key" --include="*.{js,py,java}")
|
|
207
|
+
- TODO/FIXME comments (often mark known broken areas)
|
|
208
|
+
- Commented-out code blocks (usually hiding complexity)
|
|
209
|
+
- Files last modified >2 years ago that are still in hot path
|
|
210
|
+
- Any file >1000 lines (god classes/functions)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Hour 3: Run It
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
1. Get it running locally
|
|
217
|
+
2. Run existing tests (measure coverage)
|
|
218
|
+
3. Look for: build warnings, deprecation notices, failing tests ignored with skip
|
|
219
|
+
4. Check all environment variables needed — missing .env.example is a finding
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Deliverable: Technical Debt Register
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
| Item | Severity | Effort | Risk if Ignored | Owner | Sprint |
|
|
226
|
+
|------|----------|--------|-----------------|-------|--------|
|
|
227
|
+
| ... | P0-P3 | S/M/L | Low/Med/High | ... | ... |
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## DOCUMENTATION RECOVERY
|
|
233
|
+
|
|
234
|
+
When there's no documentation, create it in this order:
|
|
235
|
+
|
|
236
|
+
1. **Architecture Decision Records (ADRs):** Document WHY, not just what
|
|
237
|
+
2. **Data Dictionary:** Every table, every non-obvious column, what it means in business terms
|
|
238
|
+
3. **Runbook:** How to deploy, roll back, restart, debug the top 5 failure modes
|
|
239
|
+
4. **API Reference:** OpenAPI spec auto-generated from code (Swagger, FastAPI auto-docs)
|
|
240
|
+
5. **Onboarding Guide:** How to get a new developer productive in <1 day
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
# Mobile Development Reference
|
|
2
|
+
|
|
3
|
+
## FRAMEWORK SELECTION
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
React Native + Expo: ✓ JS/TS team, fast iteration, large ecosystem, good for B2B/SaaS
|
|
7
|
+
✓ <user>'s current choice (<project> Shield)
|
|
8
|
+
✗ Performance-intensive apps, deep native APIs
|
|
9
|
+
|
|
10
|
+
Flutter: ✓ Best cross-platform UI fidelity, fast rendering (Skia/Impeller)
|
|
11
|
+
✓ Single codebase for iOS/Android/Web/Desktop
|
|
12
|
+
✗ Dart learning curve, smaller ecosystem than RN
|
|
13
|
+
|
|
14
|
+
Swift (iOS native): ✓ Best iOS performance, all native APIs, latest Apple features
|
|
15
|
+
✗ iOS-only, no code sharing with Android
|
|
16
|
+
|
|
17
|
+
Kotlin (Android): ✓ Best Android performance, all native APIs, Jetpack Compose
|
|
18
|
+
✗ Android-only
|
|
19
|
+
|
|
20
|
+
Decision rule: Solo founder + existing JS/TS codebase → React Native + Expo
|
|
21
|
+
UI-intensive product (games, complex animations) → Flutter
|
|
22
|
+
Enterprise iOS-first → SwiftUI
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## REACT NATIVE + EXPO (Primary Stack)
|
|
28
|
+
|
|
29
|
+
### Project Setup (Production Grade)
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# New project with Expo SDK 51+
|
|
33
|
+
npx create-expo-app@latest MyApp --template
|
|
34
|
+
cd MyApp
|
|
35
|
+
|
|
36
|
+
# Essential packages
|
|
37
|
+
npx expo install expo-router # File-based routing (like Next.js)
|
|
38
|
+
npx expo install expo-secure-store # Secure token storage (not AsyncStorage)
|
|
39
|
+
npx expo install expo-notifications # Push notifications
|
|
40
|
+
npx expo install expo-updates # OTA updates
|
|
41
|
+
|
|
42
|
+
# EAS Setup
|
|
43
|
+
npm install -g eas-cli
|
|
44
|
+
eas build:configure # Creates eas.json
|
|
45
|
+
eas credentials # Sets up signing certs
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### eas.json (Production Config)
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"cli": { "version": ">= 9.0.0" },
|
|
53
|
+
"build": {
|
|
54
|
+
"development": {
|
|
55
|
+
"developmentClient": true,
|
|
56
|
+
"distribution": "internal"
|
|
57
|
+
},
|
|
58
|
+
"preview": {
|
|
59
|
+
"distribution": "internal",
|
|
60
|
+
"android": { "buildType": "apk" }
|
|
61
|
+
},
|
|
62
|
+
"production": {
|
|
63
|
+
"autoIncrement": true,
|
|
64
|
+
"android": { "buildType": "app-bundle" },
|
|
65
|
+
"ios": { "simulator": false }
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
"submit": {
|
|
69
|
+
"production": {
|
|
70
|
+
"android": { "serviceAccountKeyPath": "./service-account.json", "track": "production" },
|
|
71
|
+
"ios": { "appleId": "...", "ascAppId": "..." }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Navigation (Expo Router — App Directory Pattern)
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
app/
|
|
81
|
+
_layout.tsx ← Root layout (providers, global styles)
|
|
82
|
+
(auth)/
|
|
83
|
+
_layout.tsx ← Auth stack
|
|
84
|
+
login.tsx
|
|
85
|
+
signup.tsx
|
|
86
|
+
(tabs)/
|
|
87
|
+
_layout.tsx ← Tab navigator
|
|
88
|
+
index.tsx ← Home tab
|
|
89
|
+
dashboard.tsx
|
|
90
|
+
settings.tsx
|
|
91
|
+
modal.tsx ← Modal screen
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Secure Storage (Never Use AsyncStorage for Sensitive Data)
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
import * as SecureStore from "expo-secure-store";
|
|
98
|
+
|
|
99
|
+
// Store token — encrypted at rest using device keychain/keystore
|
|
100
|
+
await SecureStore.setItemAsync("auth_token", token, {
|
|
101
|
+
keychainAccessible: SecureStore.WHEN_UNLOCKED_THIS_DEVICE_ONLY,
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
// Retrieve
|
|
105
|
+
const token = await SecureStore.getItemAsync("auth_token");
|
|
106
|
+
|
|
107
|
+
// NEVER: AsyncStorage for tokens — it's plaintext on disk
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### State Management (2024 Best Practice)
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
// Server state: TanStack Query (React Query)
|
|
114
|
+
import { useQuery, useMutation } from "@tanstack/react-query";
|
|
115
|
+
|
|
116
|
+
function TransactionList() {
|
|
117
|
+
const { data, isLoading, error } = useQuery({
|
|
118
|
+
queryKey: ["transactions", userId],
|
|
119
|
+
queryFn: () => api.getTransactions(userId),
|
|
120
|
+
staleTime: 30_000, // 30s before refetch
|
|
121
|
+
retry: 3,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Global client state: Zustand (not Redux)
|
|
126
|
+
const useStore = create<AppState>()(
|
|
127
|
+
persist(
|
|
128
|
+
(set) => ({
|
|
129
|
+
user: null,
|
|
130
|
+
setUser: (user) => set({ user }),
|
|
131
|
+
}),
|
|
132
|
+
{ storage: createJSONStorage(() => AsyncStorage) },
|
|
133
|
+
),
|
|
134
|
+
);
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Performance — Critical Rules
|
|
138
|
+
|
|
139
|
+
```typescript
|
|
140
|
+
// 1. Memoize everything that crosses a component boundary
|
|
141
|
+
const Component = React.memo(({ data }) => ...)
|
|
142
|
+
const handlePress = useCallback(() => ..., [deps])
|
|
143
|
+
const computed = useMemo(() => expensiveCompute(data), [data])
|
|
144
|
+
|
|
145
|
+
// 2. FlashList over FlatList for lists >100 items
|
|
146
|
+
import { FlashList } from '@shopify/flash-list'
|
|
147
|
+
<FlashList data={items} renderItem={renderItem} estimatedItemSize={70} />
|
|
148
|
+
|
|
149
|
+
// 3. Lazy load heavy screens
|
|
150
|
+
const HeavyScreen = React.lazy(() => import('./HeavyScreen'))
|
|
151
|
+
|
|
152
|
+
// 4. Image optimization — always
|
|
153
|
+
import { Image } from 'expo-image' // Not React Native's Image
|
|
154
|
+
<Image source={{ uri }} contentFit="cover" transition={200} />
|
|
155
|
+
|
|
156
|
+
// 5. Hermes engine — always enabled (default in Expo SDK 48+)
|
|
157
|
+
// 6. New Architecture (Fabric + JSI) — enable in app.json for new projects
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Push Notifications (Expo + FCM/APNs)
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
// Register device token
|
|
164
|
+
const token = await Notifications.getExpoPushTokenAsync({
|
|
165
|
+
projectId: Constants.expoConfig.extra.eas.projectId,
|
|
166
|
+
});
|
|
167
|
+
await api.saveDeviceToken(userId, token.data);
|
|
168
|
+
|
|
169
|
+
// Handle notifications while app is open
|
|
170
|
+
Notifications.addNotificationReceivedListener((notification) => {
|
|
171
|
+
// Update UI, show badge, etc.
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Handle notification tap (background/killed state)
|
|
175
|
+
Notifications.addNotificationResponseReceivedListener((response) => {
|
|
176
|
+
const screen = response.notification.request.content.data.screen;
|
|
177
|
+
router.push(screen); // Deep link to relevant screen
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### OTA Updates (Critical for SaaS)
|
|
182
|
+
|
|
183
|
+
```typescript
|
|
184
|
+
// expo-updates — push JS bundle updates without App Store review
|
|
185
|
+
// Fixes bugs, updates content, tweaks UI — instantly
|
|
186
|
+
|
|
187
|
+
import * as Updates from "expo-updates";
|
|
188
|
+
|
|
189
|
+
async function checkForUpdate() {
|
|
190
|
+
const update = await Updates.checkForUpdateAsync();
|
|
191
|
+
if (update.isAvailable) {
|
|
192
|
+
await Updates.fetchUpdateAsync();
|
|
193
|
+
await Updates.reloadAsync(); // Restart app with new bundle
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// EAS Update channels: development → staging → production
|
|
198
|
+
// eas update --branch production --message "Fix crash on login"
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### App Store Submission Checklist
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
Android (Play Store):
|
|
205
|
+
□ AAB built with eas build --platform android --profile production
|
|
206
|
+
□ Version code incremented (autoIncrement: true in eas.json)
|
|
207
|
+
□ All permissions declared in AndroidManifest.xml with justification
|
|
208
|
+
□ Target SDK = current year's API level (required)
|
|
209
|
+
□ Privacy policy URL in store listing
|
|
210
|
+
□ Content rating questionnaire complete
|
|
211
|
+
□ Screenshots: phone + 7-inch tablet
|
|
212
|
+
□ eas submit --platform android
|
|
213
|
+
|
|
214
|
+
iOS (App Store):
|
|
215
|
+
□ IPA built with eas build --platform ios --profile production
|
|
216
|
+
□ Bundle version / build number incremented
|
|
217
|
+
□ All NSUsageDescription strings in Info.plist (camera, location, etc.)
|
|
218
|
+
□ Privacy manifest (PrivacyInfo.xcprivacy) — required since 2024
|
|
219
|
+
□ App Tracking Transparency (ATT) prompt if using IDFA
|
|
220
|
+
□ Screenshots: 6.7" + 6.5" + iPad (if iPad supported)
|
|
221
|
+
□ TestFlight tested by 5+ internal testers
|
|
222
|
+
□ eas submit --platform ios
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## SWIFT / SWIFTUI (iOS Native)
|
|
228
|
+
|
|
229
|
+
### Modern SwiftUI Patterns
|
|
230
|
+
|
|
231
|
+
```swift
|
|
232
|
+
// MVVM with @Observable (iOS 17+ — modern approach)
|
|
233
|
+
@Observable class TransactionViewModel {
|
|
234
|
+
var transactions: [Transaction] = []
|
|
235
|
+
var isLoading = false
|
|
236
|
+
var error: Error?
|
|
237
|
+
|
|
238
|
+
func fetchTransactions(userId: String) async {
|
|
239
|
+
isLoading = true
|
|
240
|
+
defer { isLoading = false }
|
|
241
|
+
do {
|
|
242
|
+
transactions = try await api.getTransactions(userId: userId)
|
|
243
|
+
} catch {
|
|
244
|
+
self.error = error
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
struct TransactionListView: View {
|
|
250
|
+
@State private var viewModel = TransactionViewModel()
|
|
251
|
+
|
|
252
|
+
var body: some View {
|
|
253
|
+
List(viewModel.transactions) { tx in
|
|
254
|
+
TransactionRow(transaction: tx)
|
|
255
|
+
}
|
|
256
|
+
.task { await viewModel.fetchTransactions(userId: currentUserId) }
|
|
257
|
+
.overlay { if viewModel.isLoading { ProgressView() } }
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Networking (Modern Swift Concurrency)
|
|
263
|
+
|
|
264
|
+
```swift
|
|
265
|
+
struct APIClient {
|
|
266
|
+
private let session = URLSession.shared
|
|
267
|
+
|
|
268
|
+
func get<T: Decodable>(_ path: String, as type: T.Type) async throws -> T {
|
|
269
|
+
guard let url = URL(string: baseURL + path) else { throw APIError.invalidURL }
|
|
270
|
+
var request = URLRequest(url: url)
|
|
271
|
+
request.setValue("Bearer \(AuthManager.shared.token)", forHTTPHeaderField: "Authorization")
|
|
272
|
+
|
|
273
|
+
let (data, response) = try await session.data(for: request)
|
|
274
|
+
guard let http = response as? HTTPURLResponse, 200..<300 ~= http.statusCode else {
|
|
275
|
+
throw APIError.httpError((response as? HTTPURLResponse)?.statusCode ?? 0)
|
|
276
|
+
}
|
|
277
|
+
return try JSONDecoder.iso8601Full.decode(T.self, from: data)
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Security (iOS)
|
|
283
|
+
|
|
284
|
+
```swift
|
|
285
|
+
// Keychain for sensitive data (NOT UserDefaults)
|
|
286
|
+
import Security
|
|
287
|
+
|
|
288
|
+
func saveToKeychain(key: String, value: String) throws {
|
|
289
|
+
let data = Data(value.utf8)
|
|
290
|
+
let query: [String: Any] = [
|
|
291
|
+
kSecClass as String: kSecClassGenericPassword,
|
|
292
|
+
kSecAttrAccount as String: key,
|
|
293
|
+
kSecValueData as String: data,
|
|
294
|
+
kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlockedThisDeviceOnly
|
|
295
|
+
]
|
|
296
|
+
SecItemDelete(query as CFDictionary)
|
|
297
|
+
let status = SecItemAdd(query as CFDictionary, nil)
|
|
298
|
+
guard status == errSecSuccess else { throw KeychainError.saveFailed(status) }
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
// Biometric auth
|
|
302
|
+
let context = LAContext()
|
|
303
|
+
context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics,
|
|
304
|
+
localizedReason: "Authenticate to view transactions") { success, error in ... }
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## KOTLIN / JETPACK COMPOSE (Android Native)
|
|
310
|
+
|
|
311
|
+
### Modern Architecture (MVVM + StateFlow)
|
|
312
|
+
|
|
313
|
+
```kotlin
|
|
314
|
+
// ViewModel with Kotlin Coroutines
|
|
315
|
+
@HiltViewModel
|
|
316
|
+
class TransactionViewModel @Inject constructor(
|
|
317
|
+
private val repository: TransactionRepository
|
|
318
|
+
) : ViewModel() {
|
|
319
|
+
|
|
320
|
+
private val _uiState = MutableStateFlow<TransactionUiState>(TransactionUiState.Loading)
|
|
321
|
+
val uiState: StateFlow<TransactionUiState> = _uiState.asStateFlow()
|
|
322
|
+
|
|
323
|
+
init { loadTransactions() }
|
|
324
|
+
|
|
325
|
+
private fun loadTransactions() {
|
|
326
|
+
viewModelScope.launch {
|
|
327
|
+
repository.getTransactions()
|
|
328
|
+
.catch { e -> _uiState.value = TransactionUiState.Error(e.message ?: "Error") }
|
|
329
|
+
.collect { transactions -> _uiState.value = TransactionUiState.Success(transactions) }
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// Compose UI
|
|
335
|
+
@Composable
|
|
336
|
+
fun TransactionScreen(viewModel: TransactionViewModel = hiltViewModel()) {
|
|
337
|
+
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
|
|
338
|
+
|
|
339
|
+
when (val state = uiState) {
|
|
340
|
+
is Loading -> CircularProgressIndicator()
|
|
341
|
+
is Success -> LazyColumn {
|
|
342
|
+
items(state.transactions, key = { it.id }) { TransactionItem(it) }
|
|
343
|
+
}
|
|
344
|
+
is Error -> ErrorView(state.message, onRetry = viewModel::loadTransactions)
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### Secure Storage (Android Keystore)
|
|
350
|
+
|
|
351
|
+
```kotlin
|
|
352
|
+
// EncryptedSharedPreferences — backed by Android Keystore
|
|
353
|
+
val masterKey = MasterKey.Builder(context)
|
|
354
|
+
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
|
|
355
|
+
.build()
|
|
356
|
+
|
|
357
|
+
val prefs = EncryptedSharedPreferences.create(
|
|
358
|
+
context,
|
|
359
|
+
"secure_prefs",
|
|
360
|
+
masterKey,
|
|
361
|
+
AES256_SIV, // key encryption
|
|
362
|
+
AES256_GCM // value encryption
|
|
363
|
+
)
|
|
364
|
+
prefs.edit().putString("auth_token", token).apply()
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## FLUTTER (Cross-Platform)
|
|
370
|
+
|
|
371
|
+
### Architecture (BLoC Pattern — Production Standard)
|
|
372
|
+
|
|
373
|
+
```dart
|
|
374
|
+
// BLoC: Business Logic Component separates UI from state
|
|
375
|
+
class TransactionBloc extends Bloc<TransactionEvent, TransactionState> {
|
|
376
|
+
final TransactionRepository _repo;
|
|
377
|
+
|
|
378
|
+
TransactionBloc(this._repo) : super(TransactionInitial()) {
|
|
379
|
+
on<LoadTransactions>(_onLoad);
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
Future<void> _onLoad(LoadTransactions event, Emitter<TransactionState> emit) async {
|
|
383
|
+
emit(TransactionLoading());
|
|
384
|
+
try {
|
|
385
|
+
final transactions = await _repo.getAll(userId: event.userId);
|
|
386
|
+
emit(TransactionLoaded(transactions));
|
|
387
|
+
} catch (e) {
|
|
388
|
+
emit(TransactionError(e.toString()));
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// UI
|
|
394
|
+
BlocBuilder<TransactionBloc, TransactionState>(
|
|
395
|
+
builder: (context, state) => switch(state) {
|
|
396
|
+
TransactionLoading() => const CircularProgressIndicator(),
|
|
397
|
+
TransactionLoaded(transactions: var txs) => TransactionList(txs),
|
|
398
|
+
TransactionError(message: var msg) => ErrorView(msg),
|
|
399
|
+
_ => const SizedBox.shrink(),
|
|
400
|
+
},
|
|
401
|
+
)
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
### Flutter Performance
|
|
405
|
+
|
|
406
|
+
```dart
|
|
407
|
+
// const constructors wherever possible — prevents rebuilds
|
|
408
|
+
const Padding(padding: EdgeInsets.all(16), child: MyWidget())
|
|
409
|
+
|
|
410
|
+
// ListView.builder for any list — never ListView with children: [...]
|
|
411
|
+
ListView.builder(
|
|
412
|
+
itemCount: items.length,
|
|
413
|
+
itemBuilder: (context, index) => ItemTile(items[index]),
|
|
414
|
+
)
|
|
415
|
+
|
|
416
|
+
// RepaintBoundary for complex widgets that shouldn't repaint with parent
|
|
417
|
+
RepaintBoundary(child: ComplexChart())
|
|
418
|
+
|
|
419
|
+
// Isolates for CPU-intensive work (parsing, crypto, image processing)
|
|
420
|
+
final result = await compute(parseJsonInBackground, rawJson)
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
## MOBILE SECURITY BASELINE
|
|
426
|
+
|
|
427
|
+
```
|
|
428
|
+
Storage: Keychain (iOS) / Keystore (Android) / SecureStore (Expo)
|
|
429
|
+
NEVER: UserDefaults, SharedPreferences, AsyncStorage for tokens
|
|
430
|
+
|
|
431
|
+
Transport: TLS 1.3. Certificate pinning for high-security apps.
|
|
432
|
+
iOS: ATS enforced. Android: network_security_config.xml
|
|
433
|
+
|
|
434
|
+
Auth tokens: Short-lived JWT (1h) + refresh in secure storage
|
|
435
|
+
Biometric unlock for refresh token access
|
|
436
|
+
|
|
437
|
+
Root/Jailbreak: Detect with SafetyNet/Play Integrity (Android) + jailbreak checks (iOS)
|
|
438
|
+
Warn user. Block for financial apps.
|
|
439
|
+
|
|
440
|
+
Code obfuscation: R8/ProGuard (Android) — always in production
|
|
441
|
+
iOS: binary is compiled, harder to reverse, but still obfuscate strings
|
|
442
|
+
|
|
443
|
+
Screenshot: FLAG_SECURE (Android) / preventScreenCapture (iOS) for sensitive screens
|
|
444
|
+
|
|
445
|
+
API keys: Never in mobile app bundle — even "private" ones get extracted
|
|
446
|
+
All secrets → your backend → mobile calls your backend
|
|
447
|
+
```
|