opencode-skills-collection 3.0.51 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -12
- package/bundled-skills/.antigravity-install-manifest.json +84 -1
- package/bundled-skills/android-ui-journey-testing/SKILL.md +191 -0
- package/bundled-skills/ask-matt/SKILL.md +92 -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/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 +194 -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 +1 -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/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/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 +205 -0
- package/bundled-skills/loop-library/agents/openai.yaml +4 -0
- package/bundled-skills/loop-library/references/catalog.md +270 -0
- 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/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 +173 -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/dist/skill-pointer/config-loader.d.ts +14 -0
- package/dist/skill-pointer/config-loader.js +30 -3
- package/dist/skill-pointer/content-scanner.d.ts +38 -0
- package/dist/skill-pointer/content-scanner.js +118 -0
- package/dist/skill-pointer/index.d.ts +7 -2
- package/dist/skill-pointer/index.js +14 -4
- package/dist/skill-pointer/pointer-generator.js +2 -0
- package/dist/skill-pointer/skill-patcher.d.ts +13 -0
- package/dist/skill-pointer/skill-patcher.js +99 -0
- package/package.json +1 -1
- package/skills_index.json +1956 -286
- 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,310 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: holographic-ui
|
|
3
|
+
description: Web and App implementation guide for Holographic UI. Trigger when user wants light-based appearance, projected interfaces, and transparent floating elements.
|
|
4
|
+
date_added: "2026-06-17"
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Holographic UI
|
|
11
|
+
|
|
12
|
+
> "Made of light. Interfaces projected into thin air, visible but completely translucent."
|
|
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. **Zero Opacity Backgrounds**: Elements are never fully solid. Everything is semi-transparent, allowing the background to show through.
|
|
20
|
+
2. **Scanlines and Interference**: The illusion of a projection is sold by horizontal scanlines, slight chromatic aberration, or flickering.
|
|
21
|
+
3. **Luminous Edges**: The borders of elements are brighter than the centers, mimicking how lasers or light projections focus at the edges.
|
|
22
|
+
|
|
23
|
+
## Visual DNA
|
|
24
|
+
- **Colors**: Almost exclusively monochrome Cyan, Blue, or Green, with white core highlights.
|
|
25
|
+
- **Typography**: Thin, technical sans-serifs. Must have a glowing `text-shadow`.
|
|
26
|
+
- **Styling**: Intensive use of `rgba()`, `mix-blend-mode: screen` or `add`, and CSS filters.
|
|
27
|
+
|
|
28
|
+
## Web Implementation
|
|
29
|
+
- **CSS Example**:
|
|
30
|
+
```css
|
|
31
|
+
body {
|
|
32
|
+
background-color: #020202; /* Must be dark for holograms to show */
|
|
33
|
+
background-image: url('dark-lab-background.jpg');
|
|
34
|
+
background-size: cover;
|
|
35
|
+
color: #88ffff;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.hologram-panel {
|
|
39
|
+
background: rgba(0, 200, 255, 0.05); /* Extremely sheer */
|
|
40
|
+
border: 1px solid rgba(136, 255, 255, 0.5);
|
|
41
|
+
border-radius: 4px;
|
|
42
|
+
padding: 30px;
|
|
43
|
+
|
|
44
|
+
/* The glowing edge */
|
|
45
|
+
box-shadow:
|
|
46
|
+
inset 0 0 20px rgba(0, 200, 255, 0.2),
|
|
47
|
+
0 0 15px rgba(0, 200, 255, 0.3);
|
|
48
|
+
|
|
49
|
+
/* Scanline effect */
|
|
50
|
+
background-image: linear-gradient(
|
|
51
|
+
rgba(136, 255, 255, 0.1) 1px,
|
|
52
|
+
transparent 1px
|
|
53
|
+
);
|
|
54
|
+
background-size: 100% 4px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.holo-text {
|
|
58
|
+
font-family: 'Rajdhani', sans-serif;
|
|
59
|
+
text-transform: uppercase;
|
|
60
|
+
text-shadow: 0 0 8px rgba(136, 255, 255, 0.8);
|
|
61
|
+
mix-blend-mode: screen;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Subtle flicker */
|
|
65
|
+
.holo-flicker {
|
|
66
|
+
animation: hologramFlicker 4s infinite;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
@keyframes hologramFlicker {
|
|
70
|
+
0%, 100% { opacity: 1; }
|
|
71
|
+
92% { opacity: 1; }
|
|
72
|
+
93% { opacity: 0.4; }
|
|
73
|
+
94% { opacity: 0.9; }
|
|
74
|
+
96% { opacity: 0.2; }
|
|
75
|
+
98% { opacity: 1; }
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## App Implementation
|
|
80
|
+
|
|
81
|
+
### SwiftUI
|
|
82
|
+
```swift
|
|
83
|
+
struct HolographicUIView: View {
|
|
84
|
+
@State private var isFlickering = false
|
|
85
|
+
|
|
86
|
+
var body: some View {
|
|
87
|
+
ZStack {
|
|
88
|
+
Color.black.ignoresSafeArea()
|
|
89
|
+
|
|
90
|
+
VStack {
|
|
91
|
+
Text("HOLOGRAM ACTIVE")
|
|
92
|
+
.font(.custom("Courier", size: 24))
|
|
93
|
+
.foregroundColor(Color(hex: "88FFFF"))
|
|
94
|
+
.shadow(color: Color(hex: "88FFFF"), radius: 10)
|
|
95
|
+
.blendMode(.screen) // Critical for light UI
|
|
96
|
+
|
|
97
|
+
Spacer().frame(height: 40)
|
|
98
|
+
|
|
99
|
+
VStack {
|
|
100
|
+
Text("SYSTEM DIAGNOSTICS")
|
|
101
|
+
.foregroundColor(Color(hex: "88FFFF"))
|
|
102
|
+
}
|
|
103
|
+
.padding(30)
|
|
104
|
+
.frame(maxWidth: .infinity)
|
|
105
|
+
.background(Color(hex: "88FFFF").opacity(0.05))
|
|
106
|
+
.border(Color(hex: "88FFFF").opacity(0.5), width: 1)
|
|
107
|
+
// The glowing edge effect
|
|
108
|
+
.shadow(color: Color(hex: "88FFFF").opacity(0.5), radius: 15)
|
|
109
|
+
.blendMode(.screen)
|
|
110
|
+
.opacity(isFlickering ? 0.4 : 1.0)
|
|
111
|
+
}
|
|
112
|
+
.padding()
|
|
113
|
+
|
|
114
|
+
// Scanline Overlay
|
|
115
|
+
LinearGradient(
|
|
116
|
+
stops: [
|
|
117
|
+
.init(color: Color(hex: "88FFFF").opacity(0.1), location: 0),
|
|
118
|
+
.init(color: .clear, location: 0.5)
|
|
119
|
+
],
|
|
120
|
+
startPoint: .top, endPoint: .bottom
|
|
121
|
+
)
|
|
122
|
+
.frame(height: 4)
|
|
123
|
+
.background(Color.clear)
|
|
124
|
+
// You would tile this in a real app using an Image or custom shape
|
|
125
|
+
.blendMode(.screen)
|
|
126
|
+
}
|
|
127
|
+
.onAppear {
|
|
128
|
+
// Simulate flicker
|
|
129
|
+
Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true) { _ in
|
|
130
|
+
if Int.random(in: 1...100) > 95 {
|
|
131
|
+
isFlickering.toggle()
|
|
132
|
+
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
|
|
133
|
+
isFlickering = false
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
- `.blendMode(.screen)` is absolutely critical. It makes elements act like projected light.
|
|
142
|
+
- Stack multiple `.shadow()` modifiers to create a bloom effect around text and borders.
|
|
143
|
+
|
|
144
|
+
### Flutter
|
|
145
|
+
```dart
|
|
146
|
+
class HolographicScreen extends StatelessWidget {
|
|
147
|
+
@override
|
|
148
|
+
Widget build(BuildContext context) {
|
|
149
|
+
return Scaffold(
|
|
150
|
+
backgroundColor: Colors.black, // Dark lab background
|
|
151
|
+
body: Stack(
|
|
152
|
+
children: [
|
|
153
|
+
Padding(
|
|
154
|
+
padding: const EdgeInsets.all(24.0),
|
|
155
|
+
child: Column(
|
|
156
|
+
mainAxisAlignment: MainAxisAlignment.center,
|
|
157
|
+
children: [
|
|
158
|
+
// Glowing Text
|
|
159
|
+
const Text(
|
|
160
|
+
'HOLOGRAM ACTIVE',
|
|
161
|
+
style: TextStyle(
|
|
162
|
+
fontFamily: 'Courier',
|
|
163
|
+
fontSize: 24,
|
|
164
|
+
color: Color(0xFF88FFFF),
|
|
165
|
+
shadows: [Shadow(color: Color(0xFF88FFFF), blurRadius: 10)],
|
|
166
|
+
),
|
|
167
|
+
),
|
|
168
|
+
const SizedBox(height: 40),
|
|
169
|
+
|
|
170
|
+
// Hologram Panel
|
|
171
|
+
Container(
|
|
172
|
+
width: double.infinity,
|
|
173
|
+
padding: const EdgeInsets.all(30),
|
|
174
|
+
decoration: BoxDecoration(
|
|
175
|
+
color: const Color(0xFF88FFFF).withOpacity(0.05),
|
|
176
|
+
border: Border.all(color: const Color(0xFF88FFFF).withOpacity(0.5)),
|
|
177
|
+
boxShadow: [
|
|
178
|
+
BoxShadow(color: const Color(0xFF88FFFF).withOpacity(0.2), blurRadius: 15, spreadRadius: 5),
|
|
179
|
+
],
|
|
180
|
+
),
|
|
181
|
+
child: const Text(
|
|
182
|
+
'SYSTEM DIAGNOSTICS',
|
|
183
|
+
textAlign: TextAlign.center,
|
|
184
|
+
style: TextStyle(color: Color(0xFF88FFFF)),
|
|
185
|
+
),
|
|
186
|
+
),
|
|
187
|
+
],
|
|
188
|
+
),
|
|
189
|
+
),
|
|
190
|
+
// Scanlines (IgnorePointer so it doesn't block taps)
|
|
191
|
+
IgnorePointer(
|
|
192
|
+
child: ShaderMask(
|
|
193
|
+
blendMode: BlendMode.screen, // Makes it act like light
|
|
194
|
+
shaderCallback: (bounds) => const LinearGradient(
|
|
195
|
+
begin: Alignment.topCenter, end: Alignment.bottomCenter,
|
|
196
|
+
stops: [0.0, 0.5, 0.5, 1.0],
|
|
197
|
+
colors: [Colors.black12, Colors.black12, Colors.transparent, Colors.transparent],
|
|
198
|
+
).createShader(bounds),
|
|
199
|
+
// To actually tile in Flutter, you often need a CustomPainter.
|
|
200
|
+
// Here we simulate the blend mode.
|
|
201
|
+
child: Container(color: const Color(0xFF88FFFF).withOpacity(0.1)),
|
|
202
|
+
),
|
|
203
|
+
),
|
|
204
|
+
],
|
|
205
|
+
),
|
|
206
|
+
);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
- The `Shadow` array inside `TextStyle` creates the glowing text.
|
|
211
|
+
- `BoxShadow` with `spreadRadius` creates the glowing panel border.
|
|
212
|
+
- `ShaderMask` with `BlendMode.screen` layered over the UI gives it that light-projection quality.
|
|
213
|
+
|
|
214
|
+
### React Native
|
|
215
|
+
```jsx
|
|
216
|
+
const HolographicScreen = () => {
|
|
217
|
+
return (
|
|
218
|
+
<View style={{ flex: 1, backgroundColor: '#020202', padding: 24, justifyContent: 'center' }}>
|
|
219
|
+
|
|
220
|
+
<Text style={{
|
|
221
|
+
fontFamily: 'monospace', fontSize: 24, textAlign: 'center', color: '#88FFFF',
|
|
222
|
+
textShadowColor: '#88FFFF', textShadowRadius: 10, marginBottom: 40
|
|
223
|
+
}}>
|
|
224
|
+
HOLOGRAM ACTIVE
|
|
225
|
+
</Text>
|
|
226
|
+
|
|
227
|
+
<View style={{
|
|
228
|
+
backgroundColor: 'rgba(0, 200, 255, 0.05)',
|
|
229
|
+
borderWidth: 1, borderColor: 'rgba(136, 255, 255, 0.5)',
|
|
230
|
+
padding: 30, borderRadius: 4,
|
|
231
|
+
// The glowing edge
|
|
232
|
+
shadowColor: '#88FFFF', shadowOffset: { width: 0, height: 0 },
|
|
233
|
+
shadowOpacity: 0.5, shadowRadius: 15, elevation: 10
|
|
234
|
+
}}>
|
|
235
|
+
<Text style={{ color: '#88FFFF', textAlign: 'center', fontFamily: 'monospace' }}>
|
|
236
|
+
SYSTEM DIAGNOSTICS
|
|
237
|
+
</Text>
|
|
238
|
+
</View>
|
|
239
|
+
|
|
240
|
+
{/* Pseudo-scanlines overlay. In a real app, use an repeating Image background. */}
|
|
241
|
+
<View pointerEvents="none" style={{
|
|
242
|
+
position: 'absolute', top: 0, left: 0, right: 0, bottom: 0,
|
|
243
|
+
backgroundColor: 'rgba(136, 255, 255, 0.03)',
|
|
244
|
+
}} />
|
|
245
|
+
|
|
246
|
+
</View>
|
|
247
|
+
);
|
|
248
|
+
};
|
|
249
|
+
```
|
|
250
|
+
- React Native doesn't support `mix-blend-mode` out of the box, so you must rely heavily on low-opacity backgrounds and intense `textShadow` / `shadowRadius`.
|
|
251
|
+
- Use `pointerEvents="none"` on scanline overlays so they don't block user interactions.
|
|
252
|
+
|
|
253
|
+
### Jetpack Compose
|
|
254
|
+
```kotlin
|
|
255
|
+
@Composable
|
|
256
|
+
fun HolographicScreen() {
|
|
257
|
+
Box(modifier = Modifier.fillMaxSize().background(Color(0xFF020202))) {
|
|
258
|
+
Column(
|
|
259
|
+
modifier = Modifier.fillMaxSize().padding(24.dp),
|
|
260
|
+
verticalArrangement = Arrangement.Center,
|
|
261
|
+
horizontalAlignment = Alignment.CenterHorizontally
|
|
262
|
+
) {
|
|
263
|
+
// Glowing Text
|
|
264
|
+
Text(
|
|
265
|
+
text = "HOLOGRAM ACTIVE",
|
|
266
|
+
fontFamily = FontFamily.Monospace,
|
|
267
|
+
fontSize = 24.sp,
|
|
268
|
+
color = Color(0xFF88FFFF),
|
|
269
|
+
style = TextStyle(
|
|
270
|
+
shadow = Shadow(color = Color(0xFF88FFFF), blurRadius = 10f)
|
|
271
|
+
),
|
|
272
|
+
modifier = Modifier.graphicsLayer { blendMode = BlendMode.Screen }
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
Spacer(Modifier.height(40.dp))
|
|
276
|
+
|
|
277
|
+
// Glowing Panel
|
|
278
|
+
Box(
|
|
279
|
+
modifier = Modifier
|
|
280
|
+
.fillMaxWidth()
|
|
281
|
+
.graphicsLayer { blendMode = BlendMode.Screen }
|
|
282
|
+
.shadow(15.dp, ambientColor = Color(0xFF88FFFF), spotColor = Color(0xFF88FFFF))
|
|
283
|
+
.background(Color(0xFF88FFFF).copy(alpha = 0.05f))
|
|
284
|
+
.border(1.dp, Color(0xFF88FFFF).copy(alpha = 0.5f))
|
|
285
|
+
.padding(30.dp),
|
|
286
|
+
contentAlignment = Alignment.Center
|
|
287
|
+
) {
|
|
288
|
+
Text("SYSTEM DIAGNOSTICS", color = Color(0xFF88FFFF), fontFamily = FontFamily.Monospace)
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// Simulating scanlines overlay
|
|
293
|
+
Box(
|
|
294
|
+
modifier = Modifier
|
|
295
|
+
.fillMaxSize()
|
|
296
|
+
.background(Color(0xFF88FFFF).copy(alpha = 0.03f))
|
|
297
|
+
)
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
- `Modifier.graphicsLayer { blendMode = BlendMode.Screen }` is exactly what you need in Compose to make elements act like projected light.
|
|
302
|
+
- Use Compose's `shadow` modifier with `ambientColor` and `spotColor` set to cyan to make the panels emit light.
|
|
303
|
+
|
|
304
|
+
## Do's and Don'ts
|
|
305
|
+
- **DO**: Use `mix-blend-mode: screen` (web) or additive blending so overlapping holographic panels get brighter where they intersect.
|
|
306
|
+
- **DON'T**: Use any dark colors or drop shadows for the UI elements. Shadows don't exist in light projections.
|
|
307
|
+
|
|
308
|
+
## Limitations
|
|
309
|
+
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
|
|
310
|
+
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: isometric-design
|
|
3
|
+
description: Web and App implementation guide for Isometric Design. Trigger when user wants angled 3D appearances without vanishing points, often used for technical illustrations.
|
|
4
|
+
date_added: "2026-06-17"
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Isometric Design
|
|
11
|
+
|
|
12
|
+
> "The architect's view. A parallel projection where depth is constant and parallel lines never converge."
|
|
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. **Parallel Lines**: Unlike true 3D, isometric projection has no vanishing point. Everything is viewed from an exact 30-degree angle.
|
|
20
|
+
2. **Top-Down, Angled View**: The classic "SimCity" perspective.
|
|
21
|
+
3. **Blocky Architecture**: UI elements often look like city blocks or stacked tiles.
|
|
22
|
+
|
|
23
|
+
## Visual DNA
|
|
24
|
+
- **Colors**: **Warm Tech** or **Earth-Grounded Elegance**. Isometric designs often look like physical models, so slightly muted, realistic colors work well.
|
|
25
|
+
- **Typography**: Keep text flat to the screen, or map it perfectly to the isometric planes (top, left, right).
|
|
26
|
+
- **Shadows**: Hard, long drop shadows cast at an exact angle (usually -45 or 45 degrees).
|
|
27
|
+
|
|
28
|
+
## Web Implementation
|
|
29
|
+
- CSS transforms are perfect for this. Combine `rotateX(60deg)` and `rotateZ(-45deg)`.
|
|
30
|
+
- **CSS Example**:
|
|
31
|
+
```css
|
|
32
|
+
.isometric-grid {
|
|
33
|
+
/* The foundation */
|
|
34
|
+
transform-style: preserve-3d;
|
|
35
|
+
transform: rotateX(60deg) rotateZ(-45deg);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.iso-block {
|
|
39
|
+
width: 100px;
|
|
40
|
+
height: 100px;
|
|
41
|
+
background-color: var(--secondary-base);
|
|
42
|
+
position: relative;
|
|
43
|
+
transition: transform 0.3s;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* Creating the 3D block with pseudo-elements */
|
|
47
|
+
.iso-block::before {
|
|
48
|
+
content: '';
|
|
49
|
+
position: absolute;
|
|
50
|
+
width: 20px; /* Depth */
|
|
51
|
+
height: 100%;
|
|
52
|
+
background-color: var(--primary-text); /* Darker shade for side */
|
|
53
|
+
right: 100%;
|
|
54
|
+
transform-origin: right;
|
|
55
|
+
transform: skewY(-45deg);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.iso-block::after {
|
|
59
|
+
content: '';
|
|
60
|
+
position: absolute;
|
|
61
|
+
width: 100%;
|
|
62
|
+
height: 20px; /* Depth */
|
|
63
|
+
background-color: var(--cta-highlight); /* Lightest shade for top/bottom */
|
|
64
|
+
top: 100%;
|
|
65
|
+
transform-origin: top;
|
|
66
|
+
transform: skewX(-45deg);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.iso-block:hover {
|
|
70
|
+
transform: translateZ(20px) translate(-10px, -10px);
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## App Implementation
|
|
75
|
+
|
|
76
|
+
### SwiftUI
|
|
77
|
+
```swift
|
|
78
|
+
struct IsometricView: View {
|
|
79
|
+
var body: some View {
|
|
80
|
+
ZStack {
|
|
81
|
+
Color.white.ignoresSafeArea()
|
|
82
|
+
|
|
83
|
+
// Isometric Stack
|
|
84
|
+
VStack(spacing: 0) {
|
|
85
|
+
// Top layer
|
|
86
|
+
Rectangle()
|
|
87
|
+
.fill(Color.blue)
|
|
88
|
+
.frame(width: 150, height: 150)
|
|
89
|
+
.overlay(Text("TOP").foregroundColor(.white))
|
|
90
|
+
|
|
91
|
+
// Shadow simulation
|
|
92
|
+
Rectangle()
|
|
93
|
+
.fill(Color.black.opacity(0.2))
|
|
94
|
+
.frame(width: 150, height: 20)
|
|
95
|
+
}
|
|
96
|
+
// The exact 3D transformations for Isometric projection
|
|
97
|
+
.rotationEffect(.degrees(-45))
|
|
98
|
+
.rotation3DEffect(.degrees(60), axis: (x: 1, y: 0, z: 0))
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
- SwiftUI's `.rotation3DEffect` makes this surprisingly easy. Rotate Z by -45 degrees first (via `.rotationEffect`), then rotate X by 60 degrees.
|
|
104
|
+
- You can stack multiple views along the Z-axis (or simulate it with Y offsets before the 3D rotation) to create towering isometric city blocks.
|
|
105
|
+
|
|
106
|
+
### Flutter
|
|
107
|
+
```dart
|
|
108
|
+
import 'dart:math';
|
|
109
|
+
|
|
110
|
+
class IsometricScreen extends StatelessWidget {
|
|
111
|
+
@override
|
|
112
|
+
Widget build(BuildContext context) {
|
|
113
|
+
return Scaffold(
|
|
114
|
+
backgroundColor: Colors.white,
|
|
115
|
+
body: Center(
|
|
116
|
+
child: Transform(
|
|
117
|
+
// The Isometric Matrix Math
|
|
118
|
+
alignment: FractionalOffset.center,
|
|
119
|
+
transform: Matrix4.identity()
|
|
120
|
+
..setEntry(3, 2, 0.001) // perspective
|
|
121
|
+
..rotateX(pi / 3) // 60 degrees
|
|
122
|
+
..rotateZ(-pi / 4), // -45 degrees
|
|
123
|
+
child: Container(
|
|
124
|
+
width: 150,
|
|
125
|
+
height: 150,
|
|
126
|
+
decoration: BoxDecoration(
|
|
127
|
+
color: Colors.blue,
|
|
128
|
+
boxShadow: [
|
|
129
|
+
// Hard isometric drop shadow
|
|
130
|
+
BoxShadow(
|
|
131
|
+
color: Colors.black.withOpacity(0.3),
|
|
132
|
+
offset: const Offset(20, 20),
|
|
133
|
+
blurRadius: 0, // No blur for isometric
|
|
134
|
+
),
|
|
135
|
+
],
|
|
136
|
+
),
|
|
137
|
+
child: const Center(child: Text('ISO BLOCK', style: TextStyle(color: Colors.white))),
|
|
138
|
+
),
|
|
139
|
+
),
|
|
140
|
+
),
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
- `Transform` with `Matrix4` is required in Flutter. Applying `rotateX` and `rotateZ` yields the classic isometric grid.
|
|
146
|
+
- Isometric shadows are usually completely hard (0 `blurRadius`) and offset perfectly along the grid axes.
|
|
147
|
+
|
|
148
|
+
### React Native
|
|
149
|
+
```jsx
|
|
150
|
+
const IsometricScreen = () => {
|
|
151
|
+
return (
|
|
152
|
+
<View style={{ flex: 1, backgroundColor: '#FFF', justifyContent: 'center', alignItems: 'center' }}>
|
|
153
|
+
|
|
154
|
+
<View style={{
|
|
155
|
+
width: 150,
|
|
156
|
+
height: 150,
|
|
157
|
+
backgroundColor: '#2196F3',
|
|
158
|
+
justifyContent: 'center',
|
|
159
|
+
alignItems: 'center',
|
|
160
|
+
|
|
161
|
+
// Isometric Transforms
|
|
162
|
+
transform: [
|
|
163
|
+
{ rotateX: '60deg' },
|
|
164
|
+
{ rotateZ: '-45deg' }
|
|
165
|
+
],
|
|
166
|
+
|
|
167
|
+
// Hard isometric shadow
|
|
168
|
+
shadowColor: '#000',
|
|
169
|
+
shadowOffset: { width: 20, height: 20 },
|
|
170
|
+
shadowOpacity: 0.3,
|
|
171
|
+
shadowRadius: 0, // Hard edge
|
|
172
|
+
elevation: 10,
|
|
173
|
+
}}>
|
|
174
|
+
<Text style={{ color: '#FFF', fontWeight: 'bold' }}>ISO BLOCK</Text>
|
|
175
|
+
</View>
|
|
176
|
+
|
|
177
|
+
</View>
|
|
178
|
+
);
|
|
179
|
+
};
|
|
180
|
+
```
|
|
181
|
+
- The `transform` array processes in order. Apply `rotateX` then `rotateZ`.
|
|
182
|
+
- Hard shadows (`shadowRadius: 0`) sell the illustration look.
|
|
183
|
+
|
|
184
|
+
### Jetpack Compose
|
|
185
|
+
```kotlin
|
|
186
|
+
@Composable
|
|
187
|
+
fun IsometricScreen() {
|
|
188
|
+
Box(
|
|
189
|
+
modifier = Modifier.fillMaxSize().background(Color.White),
|
|
190
|
+
contentAlignment = Alignment.Center
|
|
191
|
+
) {
|
|
192
|
+
Box(
|
|
193
|
+
modifier = Modifier
|
|
194
|
+
.graphicsLayer {
|
|
195
|
+
// Isometric Transforms
|
|
196
|
+
rotationX = 60f
|
|
197
|
+
rotationZ = -45f
|
|
198
|
+
// Add subtle scale if it gets clipped
|
|
199
|
+
scaleX = 0.8f
|
|
200
|
+
scaleY = 0.8f
|
|
201
|
+
}
|
|
202
|
+
.size(150.dp)
|
|
203
|
+
// Draw a hard shadow behind the box
|
|
204
|
+
.drawBehind {
|
|
205
|
+
drawRect(
|
|
206
|
+
color = Color.Black.copy(alpha = 0.3f),
|
|
207
|
+
topLeft = Offset(40f, 40f), // Isometric offset
|
|
208
|
+
size = size
|
|
209
|
+
)
|
|
210
|
+
}
|
|
211
|
+
.background(Color(0xFF2196F3)),
|
|
212
|
+
contentAlignment = Alignment.Center
|
|
213
|
+
) {
|
|
214
|
+
Text("ISO BLOCK", color = Color.White, fontWeight = FontWeight.Bold)
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
- Use `Modifier.graphicsLayer` to apply `rotationX` and `rotationZ`.
|
|
220
|
+
- To get a true hard isometric drop shadow in Compose without elevation blurring, use `Modifier.drawBehind` to manually draw a dark rectangle offset from the main content.
|
|
221
|
+
|
|
222
|
+
## Do's and Don'ts
|
|
223
|
+
- **DO**: Use it for infographics, feature diagrams, or hero sections.
|
|
224
|
+
- **DON'T**: Build your entire app's functional UI in isometric projection. It's too hard to interact with.
|
|
225
|
+
|
|
226
|
+
## Limitations
|
|
227
|
+
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
|
|
228
|
+
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
|