opencode-skills-collection 3.1.0 → 3.1.2
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/bundled-skills/.antigravity-install-manifest.json +84 -1
- package/bundled-skills/2slides-ppt-generator/SKILL.md +8 -7
- package/bundled-skills/android-cli/SKILL.md +19 -7
- package/bundled-skills/android-ui-journey-testing/SKILL.md +191 -0
- package/bundled-skills/apple-notes-search/SKILL.md +12 -2
- package/bundled-skills/ask-matt/SKILL.md +92 -0
- package/bundled-skills/atlas-ledger/SKILL.md +8 -0
- package/bundled-skills/bugs-are-annoying/SKILL.md +137 -0
- package/bundled-skills/codebase-design/DEEPENING.md +37 -0
- package/bundled-skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/bundled-skills/codebase-design/SKILL.md +145 -0
- package/bundled-skills/codex-fable5/SKILL.md +10 -2
- package/bundled-skills/competitor-analysis/LICENSE.txt +21 -0
- package/bundled-skills/competitor-analysis/SKILL.md +434 -0
- package/bundled-skills/competitor-analysis/references/battle-card-subagent.md +127 -0
- package/bundled-skills/competitor-analysis/references/battle-card.md +91 -0
- package/bundled-skills/competitor-analysis/references/example-research.md +130 -0
- package/bundled-skills/competitor-analysis/references/report-template.html +127 -0
- package/bundled-skills/competitor-analysis/references/research-patterns.md +217 -0
- package/bundled-skills/competitor-analysis/references/workflow.md +434 -0
- package/bundled-skills/competitor-analysis/scripts/capture_screenshots.mjs +142 -0
- package/bundled-skills/competitor-analysis/scripts/compile_report.mjs +929 -0
- package/bundled-skills/competitor-analysis/scripts/extract_vs_names.mjs +140 -0
- package/bundled-skills/competitor-analysis/scripts/gate_candidates.mjs +224 -0
- package/bundled-skills/competitor-analysis/scripts/list_urls.mjs +90 -0
- package/bundled-skills/competitor-analysis/scripts/md_utils.mjs +50 -0
- package/bundled-skills/competitor-analysis/scripts/merge_partials.mjs +291 -0
- package/bundled-skills/competitor-analysis/scripts/package.json +6 -0
- package/bundled-skills/design-it/3d-ui/SKILL.md +259 -0
- package/bundled-skills/design-it/SKILL.md +170 -0
- package/bundled-skills/design-it/ai-native-ui/SKILL.md +295 -0
- package/bundled-skills/design-it/aurora-ui/SKILL.md +307 -0
- package/bundled-skills/design-it/bento-ui/SKILL.md +314 -0
- package/bundled-skills/design-it/brutalism/SKILL.md +270 -0
- package/bundled-skills/design-it/brutalist-typography/SKILL.md +287 -0
- package/bundled-skills/design-it/card-based-design/SKILL.md +262 -0
- package/bundled-skills/design-it/claymorphism/SKILL.md +287 -0
- package/bundled-skills/design-it/color-blocking/SKILL.md +278 -0
- package/bundled-skills/design-it/command-center-ui/SKILL.md +345 -0
- package/bundled-skills/design-it/cyber-y2k/SKILL.md +312 -0
- package/bundled-skills/design-it/cyberpunk-ui/SKILL.md +262 -0
- package/bundled-skills/design-it/dark-mode/SKILL.md +289 -0
- package/bundled-skills/design-it/dashboard-design/SKILL.md +331 -0
- package/bundled-skills/design-it/data-dense-design/SKILL.md +322 -0
- package/bundled-skills/design-it/duotone-design/SKILL.md +248 -0
- package/bundled-skills/design-it/editorial-design/SKILL.md +328 -0
- package/bundled-skills/design-it/flat-design/SKILL.md +221 -0
- package/bundled-skills/design-it/flat-design-2/SKILL.md +240 -0
- package/bundled-skills/design-it/floating-ui/SKILL.md +299 -0
- package/bundled-skills/design-it/frutiger-aero/SKILL.md +274 -0
- package/bundled-skills/design-it/glassmorphism/SKILL.md +272 -0
- package/bundled-skills/design-it/gradient-design/SKILL.md +309 -0
- package/bundled-skills/design-it/high-contrast/SKILL.md +288 -0
- package/bundled-skills/design-it/holographic-ui/SKILL.md +310 -0
- package/bundled-skills/design-it/isometric-design/SKILL.md +228 -0
- package/bundled-skills/design-it/layered-design/SKILL.md +247 -0
- package/bundled-skills/design-it/material-design/SKILL.md +275 -0
- package/bundled-skills/design-it/maximalism/SKILL.md +297 -0
- package/bundled-skills/design-it/minimalism/SKILL.md +267 -0
- package/bundled-skills/design-it/monochromatic-ui/SKILL.md +296 -0
- package/bundled-skills/design-it/neo-brutalism/SKILL.md +270 -0
- package/bundled-skills/design-it/neumorphism/SKILL.md +248 -0
- package/bundled-skills/design-it/retro-design/SKILL.md +283 -0
- package/bundled-skills/design-it/retro-futurism/SKILL.md +259 -0
- package/bundled-skills/design-it/sci-fi-interface/SKILL.md +309 -0
- package/bundled-skills/design-it/skeuomorphism/SKILL.md +280 -0
- package/bundled-skills/design-it/soft-pastel/SKILL.md +307 -0
- package/bundled-skills/design-it/spatial-computing-ui/SKILL.md +300 -0
- package/bundled-skills/design-it/spatial-design/SKILL.md +268 -0
- package/bundled-skills/design-it/swiss-design/SKILL.md +293 -0
- package/bundled-skills/design-it/synthwave/SKILL.md +257 -0
- package/bundled-skills/design-it/tile-design/SKILL.md +297 -0
- package/bundled-skills/design-it/typography-first/SKILL.md +247 -0
- package/bundled-skills/design-it/vaporwave/SKILL.md +331 -0
- package/bundled-skills/design-it/vibrant-maximalism/SKILL.md +291 -0
- package/bundled-skills/design-it/widget-based-design/SKILL.md +274 -0
- package/bundled-skills/design-it/y2k-design/SKILL.md +268 -0
- package/bundled-skills/diagnosing-bugs/SKILL.md +165 -0
- package/bundled-skills/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/bundled-skills/docs/contributors/skill-scoring.md +235 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/users/bundles.md +145 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/specialized-plugin-roadmap.md +11 -4
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/domain-modeling/ADR-FORMAT.md +47 -0
- package/bundled-skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/bundled-skills/domain-modeling/SKILL.md +105 -0
- package/bundled-skills/dos-verify-done-claims/SKILL.md +16 -4
- package/bundled-skills/ecl-harness-engineer/agents/creator-config.md +1 -1
- package/bundled-skills/ecl-harness-engineer/references/environment-config-guide.md +2 -2
- package/bundled-skills/ecl-harness-engineer/references/environment-detection-guide.md +4 -4
- package/bundled-skills/event-staffing-ordering/SKILL.md +4 -0
- package/bundled-skills/grill-me/SKILL.md +36 -0
- package/bundled-skills/grill-with-docs/SKILL.md +36 -0
- package/bundled-skills/grilling/SKILL.md +39 -0
- package/bundled-skills/handoff/SKILL.md +45 -0
- package/bundled-skills/image-generator/.env.example +7 -0
- package/bundled-skills/image-generator/SKILL.md +509 -0
- package/bundled-skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
- package/bundled-skills/improve-codebase-architecture/SKILL.md +97 -0
- package/bundled-skills/learn/SKILL.md +156 -0
- package/bundled-skills/lesson-generator/SKILL.md +90 -0
- package/bundled-skills/llm-council/.env.example +7 -0
- package/bundled-skills/llm-council/SKILL.md +602 -0
- package/bundled-skills/loop-library/SKILL.md +208 -0
- package/bundled-skills/loop-library/agents/openai.yaml +4 -0
- package/bundled-skills/loop-library/references/catalog.md +270 -0
- package/bundled-skills/lovable-cleanup/SKILL.md +9 -7
- package/bundled-skills/macos-screen-recorder/SKILL.md +9 -1
- package/bundled-skills/mailtrap-managing-contacts/SKILL.md +112 -0
- package/bundled-skills/mailtrap-sending-emails/SKILL.md +167 -0
- package/bundled-skills/mailtrap-setting-up-sending-domain/SKILL.md +77 -0
- package/bundled-skills/mailtrap-testing-with-sandbox/SKILL.md +110 -0
- package/bundled-skills/prototype/LOGIC.md +79 -0
- package/bundled-skills/prototype/SKILL.md +62 -0
- package/bundled-skills/prototype/UI.md +112 -0
- package/bundled-skills/screenstudio-alt/SKILL.md +9 -1
- package/bundled-skills/setup-matt-pocock-skills/SKILL.md +158 -0
- package/bundled-skills/setup-matt-pocock-skills/domain.md +51 -0
- package/bundled-skills/setup-matt-pocock-skills/issue-tracker-github.md +34 -0
- package/bundled-skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +35 -0
- package/bundled-skills/setup-matt-pocock-skills/issue-tracker-local.md +19 -0
- package/bundled-skills/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/bundled-skills/survey-generator/LICENSE +21 -0
- package/bundled-skills/survey-generator/SKILL.md +143 -0
- package/bundled-skills/survey-generator/build_artifact.py +208 -0
- package/bundled-skills/survey-generator/examples/agentic-engineering/research_bundle.json +1196 -0
- package/bundled-skills/survey-generator/examples/agentic-engineering/survey.html +706 -0
- package/bundled-skills/survey-generator/style_spec.json +85 -0
- package/bundled-skills/survey-generator/templates/research_bundle_template.json +69 -0
- package/bundled-skills/tdd/SKILL.md +139 -0
- package/bundled-skills/tdd/mocking.md +59 -0
- package/bundled-skills/tdd/refactoring.md +10 -0
- package/bundled-skills/tdd/tests.md +61 -0
- package/bundled-skills/teach/GLOSSARY-FORMAT.md +35 -0
- package/bundled-skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/bundled-skills/teach/MISSION-FORMAT.md +31 -0
- package/bundled-skills/teach/RESOURCES-FORMAT.md +32 -0
- package/bundled-skills/teach/SKILL.md +169 -0
- package/bundled-skills/to-issues/SKILL.md +115 -0
- package/bundled-skills/to-prd/SKILL.md +104 -0
- package/bundled-skills/tools-page-seo-optimizer/SKILL.md +616 -0
- package/bundled-skills/triage/AGENT-BRIEF.md +207 -0
- package/bundled-skills/triage/OUT-OF-SCOPE.md +105 -0
- package/bundled-skills/triage/SKILL.md +143 -0
- package/bundled-skills/vibecode-production-qa-validator/SKILL.md +371 -141
- package/bundled-skills/wiki-builder/SKILL.md +157 -0
- package/bundled-skills/wiki-builder/agents/openai.yaml +5 -0
- package/bundled-skills/wiki-builder/references/wiki-flavors.md +98 -0
- package/bundled-skills/wiki-builder/scripts/init_wiki.sh +105 -0
- package/bundled-skills/wiki-builder/templates/index.md +20 -0
- package/bundled-skills/wiki-builder/templates/maintenance-log.md +7 -0
- package/bundled-skills/wiki-builder/templates/prompts/compile-concept-page.md +12 -0
- package/bundled-skills/wiki-builder/templates/prompts/compile-index.md +11 -0
- package/bundled-skills/wiki-builder/templates/prompts/compile-source-page.md +12 -0
- package/bundled-skills/wiki-builder/templates/prompts/lint-wiki.md +10 -0
- package/bundled-skills/wiki-builder/templates/prompts/query-and-file.md +11 -0
- package/bundled-skills/wiki-builder/templates/sources.md +9 -0
- package/bundled-skills/wiki-builder/templates/wiki.config.md +53 -0
- package/bundled-skills/writing-great-skills/GLOSSARY.md +181 -0
- package/bundled-skills/writing-great-skills/SKILL.md +111 -0
- package/bundled-skills/yao-meta-skill/SKILL.md +86 -0
- package/bundled-skills/yao-meta-skill/agents/interface.yaml +26 -0
- package/bundled-skills/yao-meta-skill/manifest.json +24 -0
- package/bundled-skills/yao-meta-skill/references/artifact-design-doctrine.md +49 -0
- package/bundled-skills/yao-meta-skill/references/authoring-discipline.md +78 -0
- package/bundled-skills/yao-meta-skill/references/autonomous-adaptation.md +65 -0
- package/bundled-skills/yao-meta-skill/references/distribution-registry-method.md +60 -0
- package/bundled-skills/yao-meta-skill/references/eval-playbook.md +69 -0
- package/bundled-skills/yao-meta-skill/references/gate-selection.md +68 -0
- package/bundled-skills/yao-meta-skill/references/governance.md +134 -0
- package/bundled-skills/yao-meta-skill/references/human-review-template.md +54 -0
- package/bundled-skills/yao-meta-skill/references/intent-dialogue.md +138 -0
- package/bundled-skills/yao-meta-skill/references/iteration-philosophy.md +30 -0
- package/bundled-skills/yao-meta-skill/references/non-skill-decision-tree.md +39 -0
- package/bundled-skills/yao-meta-skill/references/operating-modes.md +107 -0
- package/bundled-skills/yao-meta-skill/references/output-eval-method.md +113 -0
- package/bundled-skills/yao-meta-skill/references/output-quality-risk.md +41 -0
- package/bundled-skills/yao-meta-skill/references/output-visual-quality.md +53 -0
- package/bundled-skills/yao-meta-skill/references/packaging-contracts.md +70 -0
- package/bundled-skills/yao-meta-skill/references/pattern-extraction-doctrine.md +76 -0
- package/bundled-skills/yao-meta-skill/references/platform-capability-matrix.md +49 -0
- package/bundled-skills/yao-meta-skill/references/prompt-engineering-doctrine.md +76 -0
- package/bundled-skills/yao-meta-skill/references/qa-ladder.md +57 -0
- package/bundled-skills/yao-meta-skill/references/reference-scan.md +126 -0
- package/bundled-skills/yao-meta-skill/references/regression-cause-taxonomy.md +80 -0
- package/bundled-skills/yao-meta-skill/references/resource-boundaries.md +120 -0
- package/bundled-skills/yao-meta-skill/references/review-studio-method.md +87 -0
- package/bundled-skills/yao-meta-skill/references/review-waiver-method.md +76 -0
- package/bundled-skills/yao-meta-skill/references/runtime-conformance-method.md +21 -0
- package/bundled-skills/yao-meta-skill/references/skill-archetypes.md +86 -0
- package/bundled-skills/yao-meta-skill/references/skill-atlas-method.md +35 -0
- package/bundled-skills/yao-meta-skill/references/skill-engineering-method.md +210 -0
- package/bundled-skills/yao-meta-skill/references/skill-ir-method.md +41 -0
- package/bundled-skills/yao-meta-skill/references/skillops-decision-policy.md +53 -0
- package/bundled-skills/yao-meta-skill/references/systems-thinking-doctrine.md +75 -0
- package/bundled-skills/yao-meta-skill/references/telemetry-drift-method.md +182 -0
- package/bundled-skills/yao-meta-skill/references/trust-security-method.md +79 -0
- package/bundled-skills/yao-meta-skill/references/user-memory-policy.md +35 -0
- package/bundled-skills/youtube-notetaker/SKILL.md +209 -0
- package/bundled-skills/youtube-notetaker/reference/artifact.html +269 -0
- package/bundled-skills/youtube-notetaker/scripts/contact_sheet.py +53 -0
- package/bundled-skills/youtube-notetaker/scripts/detect_slides.sh +19 -0
- package/bundled-skills/youtube-notetaker/scripts/download.sh +24 -0
- package/bundled-skills/youtube-notetaker/scripts/extract_slides.py +43 -0
- package/bundled-skills/youtube-notetaker/scripts/serve.py +222 -0
- package/bundled-skills/youtube-notetaker/scripts/setup.sh +27 -0
- package/bundled-skills/youtube-notetaker/scripts/verify.sh +31 -0
- package/bundled-skills/youtube-notetaker/scripts/vtt_to_transcript.py +59 -0
- package/bundled-skills/youtube-notetaker/scripts/write_library_item.py +69 -0
- package/package.json +1 -1
- package/skills_index.json +2013 -330
- package/bundled-skills/ai-md/SKILL.md +0 -523
- package/bundled-skills/atlas-contract/SKILL.md +0 -650
- package/bundled-skills/busybox-on-windows/SKILL.md +0 -40
- package/bundled-skills/monte-carlo-prevent/SKILL.md +0 -257
- package/bundled-skills/monte-carlo-prevent/references/TROUBLESHOOTING.md +0 -23
- package/bundled-skills/monte-carlo-prevent/references/parameters.md +0 -32
- package/bundled-skills/monte-carlo-prevent/references/workflows.md +0 -478
- package/bundled-skills/monte-carlo-push-ingestion/SKILL.md +0 -372
- package/bundled-skills/monte-carlo-push-ingestion/references/anomaly-detection.md +0 -87
- package/bundled-skills/monte-carlo-push-ingestion/references/custom-lineage.md +0 -203
- package/bundled-skills/monte-carlo-push-ingestion/references/direct-http-api.md +0 -207
- package/bundled-skills/monte-carlo-push-ingestion/references/prerequisites.md +0 -150
- package/bundled-skills/monte-carlo-push-ingestion/references/push-lineage.md +0 -160
- package/bundled-skills/monte-carlo-push-ingestion/references/push-metadata.md +0 -158
- package/bundled-skills/monte-carlo-push-ingestion/references/push-query-logs.md +0 -219
- package/bundled-skills/monte-carlo-push-ingestion/references/validation.md +0 -257
- package/bundled-skills/monte-carlo-push-ingestion/scripts/sample_verify.py +0 -357
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_lineage.py +0 -70
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_metadata.py +0 -65
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_and_push_query_logs.py +0 -70
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_lineage.py +0 -214
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_metadata.py +0 -160
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/collect_query_logs.py +0 -164
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_lineage.py +0 -198
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_metadata.py +0 -193
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery/push_query_logs.py +0 -207
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_and_push_metadata.py +0 -71
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_and_push_query_logs.py +0 -64
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_metadata.py +0 -253
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/collect_query_logs.py +0 -149
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/push_metadata.py +0 -190
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/bigquery-iceberg/push_query_logs.py +0 -208
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_lineage.py +0 -83
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_metadata.py +0 -77
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_and_push_query_logs.py +0 -83
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_lineage.py +0 -240
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_metadata.py +0 -212
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/collect_query_logs.py +0 -204
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_lineage.py +0 -192
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_metadata.py +0 -178
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/databricks/push_query_logs.py +0 -200
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_lineage.py +0 -119
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_metadata.py +0 -119
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_and_push_query_logs.py +0 -117
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_lineage.py +0 -265
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_metadata.py +0 -313
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/collect_query_logs.py +0 -284
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_lineage.py +0 -309
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_metadata.py +0 -245
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/hive/push_query_logs.py +0 -255
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_lineage.py +0 -78
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_metadata.py +0 -80
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_and_push_query_logs.py +0 -88
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_lineage.py +0 -235
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_metadata.py +0 -219
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/collect_query_logs.py +0 -239
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_lineage.py +0 -178
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_metadata.py +0 -178
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/redshift/push_query_logs.py +0 -196
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_lineage.py +0 -154
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_metadata.py +0 -137
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_and_push_query_logs.py +0 -137
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_lineage.py +0 -349
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_metadata.py +0 -329
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/collect_query_logs.py +0 -254
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_lineage.py +0 -307
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_metadata.py +0 -228
- package/bundled-skills/monte-carlo-push-ingestion/scripts/templates/snowflake/push_query_logs.py +0 -248
- package/bundled-skills/monte-carlo-push-ingestion/scripts/test_template_sdk_usage.py +0 -340
- package/bundled-skills/skill-optimizer/SKILL.md +0 -271
- package/bundled-skills/using-superpowers/SKILL.md +0 -98
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: frutiger-aero
|
|
3
|
+
description: Web and App implementation guide for Frutiger Aero. Trigger when user wants glossy gradients, early 2000s nature-inspired tech, glass, and water motifs.
|
|
4
|
+
date_added: "2026-06-17"
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Frutiger Aero
|
|
11
|
+
|
|
12
|
+
> "The aesthetic of mid-2000s optimism. Glossy plastic, clear water, blue skies, and eco-friendly technology."
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
Use this sub-style when the user's request matches the aesthetic described above. This is a child reference of the `design-it` skill and is not meant to be triggered directly.
|
|
17
|
+
|
|
18
|
+
## Core Principles
|
|
19
|
+
1. **Hyper-Glossy Textures**: Buttons look like polished glass or wet plastic. Extensive use of convex gradients and specular highlights.
|
|
20
|
+
2. **Skeuomorphic Nature**: Motifs of green grass, blue skies, water droplets, and bubbles intersecting with sleek glass technology (think Windows Aero or early iOS).
|
|
21
|
+
3. **Translucency**: Frosted glass effects, but much more saturated and reflective than modern glassmorphism.
|
|
22
|
+
|
|
23
|
+
## Visual DNA
|
|
24
|
+
- **Colors**: Cyan, sky blue, lime green, and pure white. Avoid dark themes entirely.
|
|
25
|
+
- **Typography**: Clean, highly legible humanist sans-serifs (like the font *Frutiger*, `Segoe UI`, or `Myriad Pro`).
|
|
26
|
+
- **Styling**: Drop shadows are deep. Highlights are bright, sharp white lines at the top of buttons.
|
|
27
|
+
|
|
28
|
+
## Web Implementation
|
|
29
|
+
- Use multiple box-shadows (inset for the gloss, outset for depth) and linear-gradients.
|
|
30
|
+
- **CSS Example**:
|
|
31
|
+
```css
|
|
32
|
+
body {
|
|
33
|
+
/* Classic blue sky / green grass gradient */
|
|
34
|
+
background: linear-gradient(to bottom, #87CEEB 0%, #E0F6FF 60%, #98FB98 100%);
|
|
35
|
+
font-family: 'Segoe UI', Tahoma, sans-serif;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.aero-btn {
|
|
39
|
+
background: linear-gradient(to bottom, #73c8f8 0%, #1583d7 50%, #0361a3 50%, #299eef 100%);
|
|
40
|
+
color: white;
|
|
41
|
+
border: 1px solid #024b7f;
|
|
42
|
+
border-radius: 20px;
|
|
43
|
+
padding: 12px 32px;
|
|
44
|
+
font-weight: 600;
|
|
45
|
+
text-shadow: 0 -1px 1px rgba(0,0,0,0.5);
|
|
46
|
+
|
|
47
|
+
/* The Glossy Highlight and Depth */
|
|
48
|
+
box-shadow:
|
|
49
|
+
inset 0 1px 1px rgba(255,255,255,0.8), /* Top edge highlight */
|
|
50
|
+
inset 0 15px 15px rgba(255,255,255,0.3), /* Convex plastic shine */
|
|
51
|
+
0 4px 6px rgba(0,0,0,0.2); /* Drop shadow */
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.aero-panel {
|
|
55
|
+
/* Windows Vista/7 Aero Glass */
|
|
56
|
+
background: rgba(255, 255, 255, 0.4);
|
|
57
|
+
backdrop-filter: blur(10px);
|
|
58
|
+
border: 1px solid rgba(255, 255, 255, 0.8);
|
|
59
|
+
border-top-color: #ffffff; /* Brighter top edge */
|
|
60
|
+
border-radius: 8px;
|
|
61
|
+
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## App Implementation
|
|
66
|
+
|
|
67
|
+
### SwiftUI
|
|
68
|
+
```swift
|
|
69
|
+
struct FrutigerAeroView: View {
|
|
70
|
+
var body: some View {
|
|
71
|
+
ZStack {
|
|
72
|
+
// Classic sky to grass gradient
|
|
73
|
+
LinearGradient(
|
|
74
|
+
colors: [Color(hex: "87CEEB"), Color(hex: "E0F6FF"), Color(hex: "98FB98")],
|
|
75
|
+
startPoint: .top, endPoint: .bottom
|
|
76
|
+
).ignoresSafeArea()
|
|
77
|
+
|
|
78
|
+
// Glossy Button
|
|
79
|
+
Button(action: {}) {
|
|
80
|
+
Text("Windows Vista")
|
|
81
|
+
.font(.headline)
|
|
82
|
+
.foregroundColor(.white)
|
|
83
|
+
.shadow(color: .black.opacity(0.5), radius: 1, y: -1) // Inset text shadow effect
|
|
84
|
+
.padding(.horizontal, 40)
|
|
85
|
+
.padding(.vertical, 16)
|
|
86
|
+
.background(
|
|
87
|
+
// Base gradient
|
|
88
|
+
LinearGradient(
|
|
89
|
+
stops: [
|
|
90
|
+
.init(color: Color(hex: "73c8f8"), location: 0.0),
|
|
91
|
+
.init(color: Color(hex: "1583d7"), location: 0.5),
|
|
92
|
+
.init(color: Color(hex: "0361a3"), location: 0.5), // Sharp color stop
|
|
93
|
+
.init(color: Color(hex: "299eef"), location: 1.0)
|
|
94
|
+
],
|
|
95
|
+
startPoint: .top, endPoint: .bottom
|
|
96
|
+
)
|
|
97
|
+
)
|
|
98
|
+
.cornerRadius(25)
|
|
99
|
+
.overlay(
|
|
100
|
+
// Top white specular highlight
|
|
101
|
+
RoundedRectangle(cornerRadius: 25)
|
|
102
|
+
.stroke(
|
|
103
|
+
LinearGradient(colors: [.white, .clear], startPoint: .top, endPoint: .bottom),
|
|
104
|
+
lineWidth: 1.5
|
|
105
|
+
)
|
|
106
|
+
)
|
|
107
|
+
.shadow(color: .black.opacity(0.3), radius: 5, y: 4)
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// Note: Color(hex:) requires a custom extension in SwiftUI.
|
|
113
|
+
```
|
|
114
|
+
- The signature Frutiger Aero "gel" look requires a sharp color transition right in the middle. Set two gradient stops at `0.5` with different colors.
|
|
115
|
+
- An `.overlay` with a top-down white-to-clear gradient stroke creates the glass highlight edge.
|
|
116
|
+
|
|
117
|
+
### Flutter
|
|
118
|
+
```dart
|
|
119
|
+
class FrutigerAeroScreen extends StatelessWidget {
|
|
120
|
+
@override
|
|
121
|
+
Widget build(BuildContext context) {
|
|
122
|
+
return Scaffold(
|
|
123
|
+
body: Container(
|
|
124
|
+
// Sky/Grass background
|
|
125
|
+
decoration: const BoxDecoration(
|
|
126
|
+
gradient: LinearGradient(
|
|
127
|
+
begin: Alignment.topCenter, end: Alignment.bottomCenter,
|
|
128
|
+
colors: [Color(0xFF87CEEB), Color(0xFFE0F6FF), Color(0xFF98FB98)],
|
|
129
|
+
),
|
|
130
|
+
),
|
|
131
|
+
child: Center(
|
|
132
|
+
child: Container(
|
|
133
|
+
decoration: BoxDecoration(
|
|
134
|
+
borderRadius: BorderRadius.circular(25),
|
|
135
|
+
boxShadow: const [BoxShadow(color: Colors.black38, blurRadius: 6, offset: Offset(0, 4))],
|
|
136
|
+
// Glossy Gel Button
|
|
137
|
+
gradient: const LinearGradient(
|
|
138
|
+
begin: Alignment.topCenter, end: Alignment.bottomCenter,
|
|
139
|
+
stops: [0.0, 0.5, 0.5, 1.0], // Sharp transition at 50%
|
|
140
|
+
colors: [
|
|
141
|
+
Color(0xFF73C8F8), // Light top
|
|
142
|
+
Color(0xFF1583D7), // Mid top
|
|
143
|
+
Color(0xFF0361A3), // Dark mid (creates the glass horizon)
|
|
144
|
+
Color(0xFF299EEF), // Bright bottom reflection
|
|
145
|
+
],
|
|
146
|
+
),
|
|
147
|
+
border: Border.all(color: Colors.white.withOpacity(0.5), width: 1),
|
|
148
|
+
),
|
|
149
|
+
child: Material(
|
|
150
|
+
color: Colors.transparent,
|
|
151
|
+
child: InkWell(
|
|
152
|
+
borderRadius: BorderRadius.circular(25),
|
|
153
|
+
onTap: () {},
|
|
154
|
+
child: const Padding(
|
|
155
|
+
padding: EdgeInsets.symmetric(horizontal: 40, vertical: 16),
|
|
156
|
+
child: Text(
|
|
157
|
+
'Media Player',
|
|
158
|
+
style: TextStyle(
|
|
159
|
+
color: Colors.white,
|
|
160
|
+
fontWeight: FontWeight.bold,
|
|
161
|
+
shadows: [Shadow(color: Colors.black54, offset: Offset(0, -1))],
|
|
162
|
+
),
|
|
163
|
+
),
|
|
164
|
+
),
|
|
165
|
+
),
|
|
166
|
+
),
|
|
167
|
+
),
|
|
168
|
+
),
|
|
169
|
+
),
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
- Flutter's `LinearGradient` `stops` array is perfect for this. Providing `0.5` twice creates a hard line that mimics a curved glass reflection.
|
|
175
|
+
- Use `Text` shadows with a negative `offset: Offset(0, -1)` to recreate the classic etched-text look of the 2000s.
|
|
176
|
+
|
|
177
|
+
### React Native
|
|
178
|
+
```jsx
|
|
179
|
+
import LinearGradient from 'react-native-linear-gradient';
|
|
180
|
+
|
|
181
|
+
const FrutigerAeroScreen = () => {
|
|
182
|
+
return (
|
|
183
|
+
<LinearGradient
|
|
184
|
+
colors={['#87CEEB', '#E0F6FF', '#98FB98']}
|
|
185
|
+
style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}
|
|
186
|
+
>
|
|
187
|
+
<View style={{
|
|
188
|
+
shadowColor: '#000', shadowOffset: { width: 0, height: 4 },
|
|
189
|
+
shadowOpacity: 0.3, shadowRadius: 5, elevation: 8
|
|
190
|
+
}}>
|
|
191
|
+
<LinearGradient
|
|
192
|
+
colors={['#73C8F8', '#1583D7', '#0361A3', '#299EEF']}
|
|
193
|
+
locations={[0, 0.5, 0.5, 1]} // The sharp glass horizon
|
|
194
|
+
style={{
|
|
195
|
+
borderRadius: 25,
|
|
196
|
+
paddingVertical: 16,
|
|
197
|
+
paddingHorizontal: 40,
|
|
198
|
+
borderWidth: 1,
|
|
199
|
+
borderColor: 'rgba(255,255,255,0.6)',
|
|
200
|
+
borderTopWidth: 2 // Stronger specular highlight on top
|
|
201
|
+
}}
|
|
202
|
+
>
|
|
203
|
+
<Text style={{
|
|
204
|
+
color: '#FFF',
|
|
205
|
+
fontWeight: 'bold',
|
|
206
|
+
textShadowColor: 'rgba(0,0,0,0.5)',
|
|
207
|
+
textShadowOffset: { width: 0, height: -1 },
|
|
208
|
+
textShadowRadius: 1
|
|
209
|
+
}}>
|
|
210
|
+
Glossy Button
|
|
211
|
+
</Text>
|
|
212
|
+
</LinearGradient>
|
|
213
|
+
</View>
|
|
214
|
+
</LinearGradient>
|
|
215
|
+
);
|
|
216
|
+
};
|
|
217
|
+
```
|
|
218
|
+
- `react-native-linear-gradient` supports `locations`. Set them to `[0, 0.5, 0.5, 1]` to create the two-tone convex reflection.
|
|
219
|
+
- Setting `borderTopWidth: 2` with a white border color effectively simulates the bright white top-edge highlight of a shiny plastic object.
|
|
220
|
+
|
|
221
|
+
### Jetpack Compose
|
|
222
|
+
```kotlin
|
|
223
|
+
@Composable
|
|
224
|
+
fun FrutigerAeroScreen() {
|
|
225
|
+
Box(
|
|
226
|
+
modifier = Modifier
|
|
227
|
+
.fillMaxSize()
|
|
228
|
+
.background(
|
|
229
|
+
Brush.verticalGradient(listOf(Color(0xFF87CEEB), Color(0xFFE0F6FF), Color(0xFF98FB98)))
|
|
230
|
+
),
|
|
231
|
+
contentAlignment = Alignment.Center
|
|
232
|
+
) {
|
|
233
|
+
// Glossy Button
|
|
234
|
+
val glassBrush = Brush.verticalGradient(
|
|
235
|
+
0.0f to Color(0xFF73C8F8),
|
|
236
|
+
0.49f to Color(0xFF1583D7),
|
|
237
|
+
0.5f to Color(0xFF0361A3), // Sharp reflection line
|
|
238
|
+
1.0f to Color(0xFF299EEF)
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
Box(
|
|
242
|
+
modifier = Modifier
|
|
243
|
+
.shadow(8.dp, RoundedCornerShape(25.dp))
|
|
244
|
+
.background(glassBrush, RoundedCornerShape(25.dp))
|
|
245
|
+
.border(
|
|
246
|
+
width = 1.dp,
|
|
247
|
+
brush = Brush.verticalGradient(listOf(Color.White, Color.Transparent)), // Top highlight
|
|
248
|
+
shape = RoundedCornerShape(25.dp)
|
|
249
|
+
)
|
|
250
|
+
.clickable { }
|
|
251
|
+
.padding(horizontal = 40.dp, vertical = 16.dp)
|
|
252
|
+
) {
|
|
253
|
+
Text(
|
|
254
|
+
text = "Eco Tech",
|
|
255
|
+
color = Color.White,
|
|
256
|
+
fontWeight = FontWeight.Bold,
|
|
257
|
+
style = TextStyle(
|
|
258
|
+
shadow = Shadow(color = Color.Black.copy(alpha = 0.5f), offset = Offset(0f, -2f), blurRadius = 2f)
|
|
259
|
+
)
|
|
260
|
+
)
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
- Compose's `Brush.verticalGradient` accepts `vararg colorStops: Pair<Float, Color>`. Use `0.49f` and `0.5f` to create the hard reflection line.
|
|
266
|
+
- A gradient border `Modifier.border(brush = ...)` transitioning from White to Transparent perfectly recreates the top-down specular highlight.
|
|
267
|
+
|
|
268
|
+
## Do's and Don'ts
|
|
269
|
+
- **DO**: Include imagery of lens flares, auroras, or water bubbles if appropriate.
|
|
270
|
+
- **DON'T**: Make it flat. Frutiger Aero is the ultimate antithesis of Flat Design. Everything must shine.
|
|
271
|
+
|
|
272
|
+
## Limitations
|
|
273
|
+
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
|
|
274
|
+
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: glassmorphism
|
|
3
|
+
description: Web and App implementation guide for Glassmorphism. Trigger when user wants a frosted glass effect, blurred backgrounds, transparency, or a sleek MacOS-like feel.
|
|
4
|
+
date_added: "2026-06-17"
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Glassmorphism
|
|
11
|
+
|
|
12
|
+
> "Looking through a frosted window. Interfaces that blend seamlessly with vibrant backgrounds."
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
Use this sub-style when the user's request matches the aesthetic described above. This is a child reference of the `design-it` skill and is not meant to be triggered directly.
|
|
17
|
+
|
|
18
|
+
## Core Principles
|
|
19
|
+
1. **Background Blur (Backdrop Filter)**: The defining characteristic. Elements blur whatever is underneath them.
|
|
20
|
+
2. **Semi-transparent White/Dark Backgrounds**: Panels use rgba() colors to let the background shine through.
|
|
21
|
+
3. **Subtle Light Borders**: A 1px semi-transparent white (or light) border to simulate the glass edge catching the light.
|
|
22
|
+
|
|
23
|
+
## Visual DNA
|
|
24
|
+
- **Colors**: Requires a vibrant or textured background to work (e.g., gradients, abstract meshes, or photos). Works beautifully over **Yacht Club** or **Earth-Grounded Elegance** if there is underlying visual texture.
|
|
25
|
+
- **Typography**: Clean, geometric sans-serifs. High contrast text (pure white or pure black) is required for legibility against the glass.
|
|
26
|
+
- **Shadows**: Soft, subtle drop shadows to detach the glass pane from the background.
|
|
27
|
+
|
|
28
|
+
## Web Implementation
|
|
29
|
+
- Rely heavily on `backdrop-filter: blur()`.
|
|
30
|
+
- **CSS Example**:
|
|
31
|
+
```css
|
|
32
|
+
body {
|
|
33
|
+
/* Requires a complex background to see the glass effect */
|
|
34
|
+
background: url('abstract-mesh.jpg') cover;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.glass-panel {
|
|
38
|
+
background: rgba(255, 255, 255, 0.15); /* Light glass */
|
|
39
|
+
/* OR background: rgba(0, 0, 0, 0.25); for Dark glass */
|
|
40
|
+
|
|
41
|
+
backdrop-filter: blur(16px);
|
|
42
|
+
-webkit-backdrop-filter: blur(16px);
|
|
43
|
+
|
|
44
|
+
border: 1px solid rgba(255, 255, 255, 0.3); /* The glass edge */
|
|
45
|
+
border-radius: 16px;
|
|
46
|
+
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.1);
|
|
47
|
+
|
|
48
|
+
padding: 32px;
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## App Implementation
|
|
53
|
+
|
|
54
|
+
### SwiftUI
|
|
55
|
+
```swift
|
|
56
|
+
struct GlassCard: View {
|
|
57
|
+
var body: some View {
|
|
58
|
+
ZStack {
|
|
59
|
+
// Vibrant background required for glass to show
|
|
60
|
+
LinearGradient(
|
|
61
|
+
colors: [.purple, .blue, .cyan],
|
|
62
|
+
startPoint: .topLeading,
|
|
63
|
+
endPoint: .bottomTrailing
|
|
64
|
+
)
|
|
65
|
+
.ignoresSafeArea()
|
|
66
|
+
|
|
67
|
+
// Glass panel
|
|
68
|
+
VStack(alignment: .leading, spacing: 16) {
|
|
69
|
+
Text("Glass Panel")
|
|
70
|
+
.font(.system(size: 22, weight: .semibold))
|
|
71
|
+
.foregroundColor(.white)
|
|
72
|
+
Text("Content floating on frosted glass.")
|
|
73
|
+
.font(.system(size: 15))
|
|
74
|
+
.foregroundColor(.white.opacity(0.8))
|
|
75
|
+
|
|
76
|
+
Button(action: {}) {
|
|
77
|
+
Text("Continue")
|
|
78
|
+
.font(.system(size: 15, weight: .semibold))
|
|
79
|
+
.foregroundColor(.white)
|
|
80
|
+
.padding(.horizontal, 24)
|
|
81
|
+
.padding(.vertical, 12)
|
|
82
|
+
.background(.ultraThinMaterial)
|
|
83
|
+
.cornerRadius(8)
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
.padding(24)
|
|
87
|
+
.background(.ultraThinMaterial) // Built-in frosted glass
|
|
88
|
+
.cornerRadius(16)
|
|
89
|
+
.overlay(
|
|
90
|
+
RoundedRectangle(cornerRadius: 16)
|
|
91
|
+
.stroke(.white.opacity(0.3), lineWidth: 1) // Glass edge highlight
|
|
92
|
+
)
|
|
93
|
+
.shadow(color: .black.opacity(0.1), radius: 20, x: 0, y: 10)
|
|
94
|
+
.padding(24)
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
- Use `.ultraThinMaterial`, `.thinMaterial`, `.regularMaterial`, `.thickMaterial` — Apple built glassmorphism natively.
|
|
100
|
+
- Add `.overlay(RoundedRectangle().stroke(.white.opacity(0.3)))` for the light edge catch.
|
|
101
|
+
- Glass only works if there's a vibrant background visible behind it.
|
|
102
|
+
|
|
103
|
+
### Flutter
|
|
104
|
+
```dart
|
|
105
|
+
class GlassCard extends StatelessWidget {
|
|
106
|
+
@override
|
|
107
|
+
Widget build(BuildContext context) {
|
|
108
|
+
return Stack(
|
|
109
|
+
children: [
|
|
110
|
+
// Vibrant background
|
|
111
|
+
Container(
|
|
112
|
+
decoration: const BoxDecoration(
|
|
113
|
+
gradient: LinearGradient(
|
|
114
|
+
colors: [Colors.purple, Colors.blue, Colors.cyan],
|
|
115
|
+
begin: Alignment.topLeft,
|
|
116
|
+
end: Alignment.bottomRight,
|
|
117
|
+
),
|
|
118
|
+
),
|
|
119
|
+
),
|
|
120
|
+
// Glass panel
|
|
121
|
+
Center(
|
|
122
|
+
child: ClipRRect(
|
|
123
|
+
borderRadius: BorderRadius.circular(16),
|
|
124
|
+
child: BackdropFilter(
|
|
125
|
+
filter: ImageFilter.blur(sigmaX: 16, sigmaY: 16),
|
|
126
|
+
child: Container(
|
|
127
|
+
padding: const EdgeInsets.all(24),
|
|
128
|
+
decoration: BoxDecoration(
|
|
129
|
+
color: Colors.white.withOpacity(0.15),
|
|
130
|
+
borderRadius: BorderRadius.circular(16),
|
|
131
|
+
border: Border.all(
|
|
132
|
+
color: Colors.white.withOpacity(0.3),
|
|
133
|
+
width: 1,
|
|
134
|
+
),
|
|
135
|
+
boxShadow: [
|
|
136
|
+
BoxShadow(
|
|
137
|
+
color: Colors.black.withOpacity(0.1),
|
|
138
|
+
blurRadius: 20,
|
|
139
|
+
offset: const Offset(0, 10),
|
|
140
|
+
),
|
|
141
|
+
],
|
|
142
|
+
),
|
|
143
|
+
child: Column(
|
|
144
|
+
mainAxisSize: MainAxisSize.min,
|
|
145
|
+
crossAxisAlignment: CrossAxisAlignment.start,
|
|
146
|
+
children: [
|
|
147
|
+
const Text('Glass Panel',
|
|
148
|
+
style: TextStyle(fontSize: 22, fontWeight: FontWeight.w600,
|
|
149
|
+
color: Colors.white)),
|
|
150
|
+
const SizedBox(height: 16),
|
|
151
|
+
Text('Content floating on frosted glass.',
|
|
152
|
+
style: TextStyle(fontSize: 15,
|
|
153
|
+
color: Colors.white.withOpacity(0.8))),
|
|
154
|
+
],
|
|
155
|
+
),
|
|
156
|
+
),
|
|
157
|
+
),
|
|
158
|
+
),
|
|
159
|
+
),
|
|
160
|
+
],
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
- **Critical**: `BackdropFilter` MUST be wrapped in `ClipRRect` — without clipping, the blur applies to the entire screen.
|
|
166
|
+
- Use `ImageFilter.blur(sigmaX: 10...20, sigmaY: 10...20)` for the frosted effect.
|
|
167
|
+
- Set the container color to `Colors.white.withOpacity(0.1...0.2)` — too opaque kills the glass look.
|
|
168
|
+
|
|
169
|
+
### React Native
|
|
170
|
+
```jsx
|
|
171
|
+
import { BlurView } from '@react-native-community/blur';
|
|
172
|
+
|
|
173
|
+
const GlassCard = () => (
|
|
174
|
+
<View style={{ flex: 1 }}>
|
|
175
|
+
{/* Vibrant background */}
|
|
176
|
+
<LinearGradient
|
|
177
|
+
colors={['#9B59B6', '#3498DB', '#1ABC9C']}
|
|
178
|
+
style={StyleSheet.absoluteFill}
|
|
179
|
+
/>
|
|
180
|
+
|
|
181
|
+
{/* Glass panel */}
|
|
182
|
+
<View style={{
|
|
183
|
+
margin: 24,
|
|
184
|
+
borderRadius: 16,
|
|
185
|
+
overflow: 'hidden', // Required for blur clipping
|
|
186
|
+
}}>
|
|
187
|
+
<BlurView
|
|
188
|
+
blurType="light"
|
|
189
|
+
blurAmount={16}
|
|
190
|
+
style={{ padding: 24 }}
|
|
191
|
+
>
|
|
192
|
+
<View style={{
|
|
193
|
+
// Glass border overlay
|
|
194
|
+
borderRadius: 16,
|
|
195
|
+
borderWidth: 1,
|
|
196
|
+
borderColor: 'rgba(255,255,255,0.3)',
|
|
197
|
+
}}>
|
|
198
|
+
<Text style={{
|
|
199
|
+
fontSize: 22, fontWeight: '600', color: '#FFF',
|
|
200
|
+
marginBottom: 16,
|
|
201
|
+
}}>
|
|
202
|
+
Glass Panel
|
|
203
|
+
</Text>
|
|
204
|
+
<Text style={{
|
|
205
|
+
fontSize: 15, color: 'rgba(255,255,255,0.8)',
|
|
206
|
+
}}>
|
|
207
|
+
Content floating on frosted glass.
|
|
208
|
+
</Text>
|
|
209
|
+
</View>
|
|
210
|
+
</BlurView>
|
|
211
|
+
</View>
|
|
212
|
+
</View>
|
|
213
|
+
);
|
|
214
|
+
```
|
|
215
|
+
- Install `@react-native-community/blur` — React Native has NO native blur support.
|
|
216
|
+
- Wrap the `BlurView` parent in a `View` with `overflow: 'hidden'` and `borderRadius` to clip the blur.
|
|
217
|
+
- Use `blurType: 'light'` for light glass, `'dark'` for dark glass, `'chromeMaterial'` for iOS Chrome effect.
|
|
218
|
+
- **Android limitation**: `BlurView` performance varies on Android. Test thoroughly.
|
|
219
|
+
|
|
220
|
+
### Jetpack Compose
|
|
221
|
+
```kotlin
|
|
222
|
+
@Composable
|
|
223
|
+
fun GlassCard() {
|
|
224
|
+
Box(modifier = Modifier.fillMaxSize()) {
|
|
225
|
+
// Vibrant background
|
|
226
|
+
Box(modifier = Modifier
|
|
227
|
+
.fillMaxSize()
|
|
228
|
+
.background(Brush.linearGradient(
|
|
229
|
+
colors = listOf(Color(0xFF9B59B6), Color(0xFF3498DB), Color(0xFF1ABC9C)),
|
|
230
|
+
start = Offset.Zero,
|
|
231
|
+
end = Offset.Infinite,
|
|
232
|
+
))
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
// Glass panel — Compose lacks native backdrop-filter,
|
|
236
|
+
// so use a semi-transparent surface with blur via Modifier.blur()
|
|
237
|
+
Card(
|
|
238
|
+
modifier = Modifier
|
|
239
|
+
.padding(24.dp)
|
|
240
|
+
.align(Alignment.Center),
|
|
241
|
+
shape = RoundedCornerShape(16.dp),
|
|
242
|
+
colors = CardDefaults.cardColors(
|
|
243
|
+
containerColor = Color.White.copy(alpha = 0.15f),
|
|
244
|
+
),
|
|
245
|
+
border = BorderStroke(1.dp, Color.White.copy(alpha = 0.3f)),
|
|
246
|
+
elevation = CardDefaults.cardElevation(defaultElevation = 0.dp),
|
|
247
|
+
) {
|
|
248
|
+
Column(modifier = Modifier.padding(24.dp)) {
|
|
249
|
+
Text("Glass Panel",
|
|
250
|
+
fontSize = 22.sp,
|
|
251
|
+
fontWeight = FontWeight.SemiBold,
|
|
252
|
+
color = Color.White)
|
|
253
|
+
Spacer(Modifier.height(16.dp))
|
|
254
|
+
Text("Content floating on frosted glass.",
|
|
255
|
+
fontSize = 15.sp,
|
|
256
|
+
color = Color.White.copy(alpha = 0.8f))
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
- **Compose limitation**: True `backdrop-filter` blur doesn't exist natively. Use `Modifier.blur()` (API 31+) on the background, or use `RenderEffect.createBlurEffect()` for lower APIs.
|
|
263
|
+
- Use the `haze` library (`dev.chrisbanes.haze`) for proper glassmorphism in Compose — it provides `Modifier.haze()` and `Modifier.hazeChild()`.
|
|
264
|
+
- Without native blur, fallback to `Color.White.copy(alpha = 0.15f)` with a strong `border` to simulate the glass edge.
|
|
265
|
+
|
|
266
|
+
## Do's and Don'ts
|
|
267
|
+
- **DO**: Ensure there is enough contrast between text and the blurred background. Accessibility is often a challenge with this style.
|
|
268
|
+
- **DON'T**: Use Glassmorphism on a solid white or solid black background—the effect will be completely invisible.
|
|
269
|
+
|
|
270
|
+
## Limitations
|
|
271
|
+
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
|
|
272
|
+
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
|