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,309 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gradient-design
|
|
3
|
+
description: Web and App implementation guide for Gradient Design. Trigger when user wants heavy gradient usage, vibrant transitions, and modern energetic feels.
|
|
4
|
+
date_added: "2026-06-17"
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Gradient Design
|
|
11
|
+
|
|
12
|
+
> "Color in motion. Fluid transitions that add energy and depth to flat surfaces."
|
|
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. **Gradients are the Primary Visual**: Backgrounds, buttons, text, and borders all use gradients instead of solid colors.
|
|
20
|
+
2. **Analogous or Complementary Blends**: Gradients must be carefully chosen so the transition colors don't become muddy (e.g., blending red to green creates a muddy brown in the middle. Blend red to yellow to green instead).
|
|
21
|
+
3. **Subtle Animation**: Background gradients should slowly shift and rotate.
|
|
22
|
+
|
|
23
|
+
## Visual DNA
|
|
24
|
+
- **Colors**: **Warm Tech** (blues to oranges) or create custom vibrant pairs (e.g., Purple to Coral, Deep Blue to Cyan).
|
|
25
|
+
- **Typography**: Clean, heavy sans-serifs that can be easily masked with a gradient fill.
|
|
26
|
+
- **Layout**: Keep the UI structure minimal (glass panels or white/black cards) to let the gradients breathe.
|
|
27
|
+
|
|
28
|
+
## Web Implementation
|
|
29
|
+
- **CSS Example**:
|
|
30
|
+
```css
|
|
31
|
+
body {
|
|
32
|
+
/* Complex mesh-like animated gradient */
|
|
33
|
+
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
|
|
34
|
+
background-size: 400% 400%;
|
|
35
|
+
animation: gradientBG 15s ease infinite;
|
|
36
|
+
color: #fff;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@keyframes gradientBG {
|
|
40
|
+
0% { background-position: 0% 50%; }
|
|
41
|
+
50% { background-position: 100% 50%; }
|
|
42
|
+
100% { background-position: 0% 50%; }
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.gradient-text {
|
|
46
|
+
background: linear-gradient(90deg, #F9D423 0%, #FF4E50 100%);
|
|
47
|
+
-webkit-background-clip: text;
|
|
48
|
+
-webkit-text-fill-color: transparent;
|
|
49
|
+
font-size: 4rem;
|
|
50
|
+
font-weight: 900;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.gradient-border-card {
|
|
54
|
+
background: #ffffff;
|
|
55
|
+
color: #333;
|
|
56
|
+
padding: 32px;
|
|
57
|
+
border-radius: 12px;
|
|
58
|
+
position: relative;
|
|
59
|
+
/* Use a pseudo-element for the gradient border */
|
|
60
|
+
}
|
|
61
|
+
.gradient-border-card::before {
|
|
62
|
+
content: '';
|
|
63
|
+
position: absolute;
|
|
64
|
+
top: -3px; left: -3px; right: -3px; bottom: -3px;
|
|
65
|
+
background: linear-gradient(90deg, #8A2387, #E94057, #F27121);
|
|
66
|
+
z-index: -1;
|
|
67
|
+
border-radius: 15px;
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## App Implementation
|
|
72
|
+
|
|
73
|
+
### SwiftUI
|
|
74
|
+
```swift
|
|
75
|
+
struct GradientDesignView: View {
|
|
76
|
+
@State private var animateGradient = false
|
|
77
|
+
|
|
78
|
+
var body: some View {
|
|
79
|
+
ZStack {
|
|
80
|
+
// Animated Background Gradient
|
|
81
|
+
LinearGradient(
|
|
82
|
+
colors: [Color(hex: "ee7752"), Color(hex: "e73c7e"), Color(hex: "23a6d5"), Color(hex: "23d5ab")],
|
|
83
|
+
startPoint: animateGradient ? .topLeading : .bottomLeading,
|
|
84
|
+
endPoint: animateGradient ? .bottomTrailing : .topTrailing
|
|
85
|
+
)
|
|
86
|
+
.ignoresSafeArea()
|
|
87
|
+
.onAppear {
|
|
88
|
+
withAnimation(.linear(duration: 5.0).repeatForever(autoreverses: true)) {
|
|
89
|
+
animateGradient.toggle()
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
VStack(spacing: 40) {
|
|
94
|
+
// Gradient Text
|
|
95
|
+
Text("VIBRANT")
|
|
96
|
+
.font(.system(size: 60, weight: .black))
|
|
97
|
+
.foregroundStyle(
|
|
98
|
+
LinearGradient(
|
|
99
|
+
colors: [Color(hex: "F9D423"), Color(hex: "FF4E50")],
|
|
100
|
+
startPoint: .leading,
|
|
101
|
+
endPoint: .trailing
|
|
102
|
+
)
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
// Gradient Border Card
|
|
106
|
+
Text("Gradient Border")
|
|
107
|
+
.padding()
|
|
108
|
+
.frame(width: 250, height: 150)
|
|
109
|
+
.background(Color.white)
|
|
110
|
+
.cornerRadius(12)
|
|
111
|
+
.overlay(
|
|
112
|
+
RoundedRectangle(cornerRadius: 12)
|
|
113
|
+
.stroke(
|
|
114
|
+
LinearGradient(
|
|
115
|
+
colors: [Color(hex: "8A2387"), Color(hex: "E94057"), Color(hex: "F27121")],
|
|
116
|
+
startPoint: .leading, endPoint: .trailing
|
|
117
|
+
),
|
|
118
|
+
lineWidth: 3
|
|
119
|
+
)
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
- `.foregroundStyle(LinearGradient(...))` makes gradient text incredibly easy in modern SwiftUI.
|
|
127
|
+
- Use `.stroke(LinearGradient(...))` inside an `.overlay` to create gradient borders.
|
|
128
|
+
|
|
129
|
+
### Flutter
|
|
130
|
+
```dart
|
|
131
|
+
class GradientDesignScreen extends StatefulWidget {
|
|
132
|
+
@override
|
|
133
|
+
State<GradientDesignScreen> createState() => _GradientDesignScreenState();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
class _GradientDesignScreenState extends State<GradientDesignScreen> with SingleTickerProviderStateMixin {
|
|
137
|
+
late AnimationController _controller;
|
|
138
|
+
late Animation<Alignment> _topAlignment;
|
|
139
|
+
late Animation<Alignment> _bottomAlignment;
|
|
140
|
+
|
|
141
|
+
@override
|
|
142
|
+
void initState() {
|
|
143
|
+
super.initState();
|
|
144
|
+
_controller = AnimationController(vsync: this, duration: const Duration(seconds: 5))..repeat(reverse: true);
|
|
145
|
+
_topAlignment = TweenSequence<Alignment>([
|
|
146
|
+
TweenSequenceItem(tween: AlignmentTween(begin: Alignment.topLeft, end: Alignment.topRight), weight: 1),
|
|
147
|
+
]).animate(_controller);
|
|
148
|
+
_bottomAlignment = TweenSequence<Alignment>([
|
|
149
|
+
TweenSequenceItem(tween: AlignmentTween(begin: Alignment.bottomRight, end: Alignment.bottomLeft), weight: 1),
|
|
150
|
+
]).animate(_controller);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
@override
|
|
154
|
+
Widget build(BuildContext context) {
|
|
155
|
+
return Scaffold(
|
|
156
|
+
body: AnimatedBuilder(
|
|
157
|
+
animation: _controller,
|
|
158
|
+
builder: (context, _) {
|
|
159
|
+
return Container(
|
|
160
|
+
width: double.infinity,
|
|
161
|
+
decoration: BoxDecoration(
|
|
162
|
+
// Animated Background Gradient
|
|
163
|
+
gradient: LinearGradient(
|
|
164
|
+
begin: _topAlignment.value,
|
|
165
|
+
end: _bottomAlignment.value,
|
|
166
|
+
colors: const [Color(0xFFee7752), Color(0xFFe73c7e), Color(0xFF23a6d5), Color(0xFF23d5ab)],
|
|
167
|
+
),
|
|
168
|
+
),
|
|
169
|
+
child: Column(
|
|
170
|
+
mainAxisAlignment: MainAxisAlignment.center,
|
|
171
|
+
children: [
|
|
172
|
+
// Gradient Text
|
|
173
|
+
ShaderMask(
|
|
174
|
+
blendMode: BlendMode.srcIn,
|
|
175
|
+
shaderCallback: (bounds) => const LinearGradient(
|
|
176
|
+
colors: [Color(0xFFF9D423), Color(0xFFFF4E50)],
|
|
177
|
+
).createShader(Rect.fromLTWH(0, 0, bounds.width, bounds.height)),
|
|
178
|
+
child: const Text('VIBRANT', style: TextStyle(fontSize: 60, fontWeight: FontWeight.w900, color: Colors.white)),
|
|
179
|
+
),
|
|
180
|
+
const SizedBox(height: 40),
|
|
181
|
+
// Gradient Border Card
|
|
182
|
+
Container(
|
|
183
|
+
width: 250, height: 150,
|
|
184
|
+
decoration: BoxDecoration(
|
|
185
|
+
borderRadius: BorderRadius.circular(15),
|
|
186
|
+
gradient: const LinearGradient(colors: [Color(0xFF8A2387), Color(0xFFE94057), Color(0xFFF27121)]),
|
|
187
|
+
),
|
|
188
|
+
padding: const EdgeInsets.all(3), // Border width
|
|
189
|
+
child: Container(
|
|
190
|
+
decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(12)),
|
|
191
|
+
alignment: Alignment.center,
|
|
192
|
+
child: const Text('Gradient Border'),
|
|
193
|
+
),
|
|
194
|
+
),
|
|
195
|
+
],
|
|
196
|
+
),
|
|
197
|
+
);
|
|
198
|
+
},
|
|
199
|
+
),
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
- Flutter text gradients require `ShaderMask` with `BlendMode.srcIn`.
|
|
205
|
+
- To animate a gradient background, animate the `Alignment` values of the `LinearGradient`.
|
|
206
|
+
|
|
207
|
+
### React Native
|
|
208
|
+
```jsx
|
|
209
|
+
// REQUIRES: expo-linear-gradient OR react-native-linear-gradient
|
|
210
|
+
import { LinearGradient } from 'expo-linear-gradient';
|
|
211
|
+
import MaskedView from '@react-native-masked-view/masked-view';
|
|
212
|
+
|
|
213
|
+
const GradientDesignScreen = () => {
|
|
214
|
+
return (
|
|
215
|
+
<LinearGradient
|
|
216
|
+
colors={['#ee7752', '#e73c7e', '#23a6d5', '#23d5ab']}
|
|
217
|
+
start={{ x: 0, y: 0 }} end={{ x: 1, y: 1 }}
|
|
218
|
+
style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}
|
|
219
|
+
>
|
|
220
|
+
{/* Gradient Text */}
|
|
221
|
+
<MaskedView
|
|
222
|
+
style={{ height: 80, width: '100%', flexDirection: 'row' }}
|
|
223
|
+
maskElement={
|
|
224
|
+
<View style={{ backgroundColor: 'transparent', flex: 1, justifyContent: 'center', alignItems: 'center' }}>
|
|
225
|
+
<Text style={{ fontSize: 60, fontWeight: '900', color: 'black' }}>VIBRANT</Text>
|
|
226
|
+
</View>
|
|
227
|
+
}
|
|
228
|
+
>
|
|
229
|
+
<LinearGradient
|
|
230
|
+
colors={['#F9D423', '#FF4E50']}
|
|
231
|
+
start={{ x: 0, y: 0 }} end={{ x: 1, y: 0 }}
|
|
232
|
+
style={{ flex: 1 }}
|
|
233
|
+
/>
|
|
234
|
+
</MaskedView>
|
|
235
|
+
|
|
236
|
+
<View style={{ marginTop: 40 }}>
|
|
237
|
+
{/* Gradient Border Card */}
|
|
238
|
+
<LinearGradient
|
|
239
|
+
colors={['#8A2387', '#E94057', '#F27121']}
|
|
240
|
+
start={{ x: 0, y: 0 }} end={{ x: 1, y: 0 }}
|
|
241
|
+
style={{ padding: 3, borderRadius: 15 }}
|
|
242
|
+
>
|
|
243
|
+
<View style={{ backgroundColor: '#FFF', width: 250, height: 150, borderRadius: 12, justifyContent: 'center', alignItems: 'center' }}>
|
|
244
|
+
<Text>Gradient Border</Text>
|
|
245
|
+
</View>
|
|
246
|
+
</LinearGradient>
|
|
247
|
+
</View>
|
|
248
|
+
</LinearGradient>
|
|
249
|
+
);
|
|
250
|
+
};
|
|
251
|
+
```
|
|
252
|
+
- Gradient text in React Native is notoriously annoying. You must use `@react-native-masked-view/masked-view` to mask a `LinearGradient` with a `<Text>` node.
|
|
253
|
+
- Gradient borders are achieved by nesting a solid view inside a `LinearGradient` with a small padding (e.g., `padding: 3`).
|
|
254
|
+
|
|
255
|
+
### Jetpack Compose
|
|
256
|
+
```kotlin
|
|
257
|
+
@Composable
|
|
258
|
+
fun GradientDesignScreen() {
|
|
259
|
+
// Animated Background
|
|
260
|
+
val infiniteTransition = rememberInfiniteTransition()
|
|
261
|
+
val offset by infiniteTransition.animateFloat(
|
|
262
|
+
initialValue = 0f, targetValue = 1000f,
|
|
263
|
+
animationSpec = infiniteRepeatable(tween(5000, easing = LinearEasing), RepeatMode.Reverse)
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
val bgBrush = Brush.linearGradient(
|
|
267
|
+
colors = listOf(Color(0xFFee7752), Color(0xFFe73c7e), Color(0xFF23a6d5), Color(0xFF23d5ab)),
|
|
268
|
+
start = Offset(offset, 0f), end = Offset(offset + 500f, 1000f)
|
|
269
|
+
)
|
|
270
|
+
|
|
271
|
+
Box(
|
|
272
|
+
modifier = Modifier.fillMaxSize().background(bgBrush),
|
|
273
|
+
contentAlignment = Alignment.Center
|
|
274
|
+
) {
|
|
275
|
+
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
|
276
|
+
// Gradient Text
|
|
277
|
+
val textBrush = Brush.horizontalGradient(listOf(Color(0xFFF9D423), Color(0xFFFF4E50)))
|
|
278
|
+
Text(
|
|
279
|
+
text = "VIBRANT",
|
|
280
|
+
style = TextStyle(brush = textBrush, fontSize = 60.sp, fontWeight = FontWeight.Black)
|
|
281
|
+
)
|
|
282
|
+
|
|
283
|
+
Spacer(Modifier.height(40.dp))
|
|
284
|
+
|
|
285
|
+
// Gradient Border Card
|
|
286
|
+
val borderBrush = Brush.horizontalGradient(listOf(Color(0xFF8A2387), Color(0xFFE94057), Color(0xFFF27121)))
|
|
287
|
+
Box(
|
|
288
|
+
modifier = Modifier
|
|
289
|
+
.size(250.dp, 150.dp)
|
|
290
|
+
.border(3.dp, borderBrush, RoundedCornerShape(12.dp))
|
|
291
|
+
.background(Color.White, RoundedCornerShape(12.dp)),
|
|
292
|
+
contentAlignment = Alignment.Center
|
|
293
|
+
) {
|
|
294
|
+
Text("Gradient Border")
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
- Compose handles gradients beautifully via `Brush`.
|
|
301
|
+
- You can pass a `Brush` directly into a `TextStyle` for gradient text, or into a `Modifier.border()` for gradient borders.
|
|
302
|
+
|
|
303
|
+
## Do's and Don'ts
|
|
304
|
+
- **DO**: Use multi-stop gradients (3 or 4 colors) rather than just simple A-to-B gradients for a more modern, rich look.
|
|
305
|
+
- **DON'T**: Apply gradients to tiny text or thin icons, they will lose legibility immediately.
|
|
306
|
+
|
|
307
|
+
## Limitations
|
|
308
|
+
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
|
|
309
|
+
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: high-contrast
|
|
3
|
+
description: Web and App implementation guide for High Contrast Design. Trigger when user wants accessibility-focused design, extreme legibility, or stark visual impact.
|
|
4
|
+
date_added: "2026-06-17"
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# High Contrast Design
|
|
11
|
+
|
|
12
|
+
> "Maximum legibility. Stark, powerful, and universally accessible."
|
|
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. **WCAG AAA Compliance**: Every color pairing must exceed a 7:1 contrast ratio.
|
|
20
|
+
2. **Clear Boundaries**: Interactive elements have highly visible borders and focus states.
|
|
21
|
+
3. **No Ambiguity**: Avoid subtle greys, low-opacity text, or purely decorative elements that distract from the core content.
|
|
22
|
+
|
|
23
|
+
## Visual DNA
|
|
24
|
+
- **Colors**: **Industrial Chic** (Black and White) or **Modern Editorial**. Often uses a single, highly luminous accent color (like pure Yellow `#FFFF00` or Cyan `#00FFFF`) against black.
|
|
25
|
+
- **Typography**: Highly legible, robust sans-serifs (`Atkinson Hyperlegible`, `Inter`, `Roboto`). Large base font sizes (18px+).
|
|
26
|
+
- **Styling**: Solid 2px borders around cards and buttons. Avoid drop shadows as they reduce edge clarity.
|
|
27
|
+
|
|
28
|
+
## Web Implementation
|
|
29
|
+
- Focus heavily on focus states (`:focus-visible`) and clear active states.
|
|
30
|
+
- **CSS Example**:
|
|
31
|
+
```css
|
|
32
|
+
:root {
|
|
33
|
+
--hc-bg: #ffffff;
|
|
34
|
+
--hc-text: #000000;
|
|
35
|
+
--hc-accent: #0000FF; /* Pure blue */
|
|
36
|
+
--hc-focus: #FF00FF; /* High visibility focus ring */
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
body {
|
|
40
|
+
background-color: var(--hc-bg);
|
|
41
|
+
color: var(--hc-text);
|
|
42
|
+
font-family: 'Atkinson Hyperlegible', sans-serif;
|
|
43
|
+
font-size: 18px; /* Larger default */
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.hc-card {
|
|
47
|
+
background-color: #ffffff;
|
|
48
|
+
border: 3px solid #000000; /* Unmissable boundary */
|
|
49
|
+
padding: 32px;
|
|
50
|
+
border-radius: 8px;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.hc-btn {
|
|
54
|
+
background-color: var(--hc-accent);
|
|
55
|
+
color: #ffffff;
|
|
56
|
+
border: 3px solid transparent; /* Reserve space for focus */
|
|
57
|
+
border-radius: 4px;
|
|
58
|
+
padding: 16px 32px;
|
|
59
|
+
font-weight: 700;
|
|
60
|
+
font-size: 1.1rem;
|
|
61
|
+
cursor: pointer;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* Crucial for high contrast / accessibility */
|
|
65
|
+
.hc-btn:focus-visible, a:focus-visible {
|
|
66
|
+
outline: 4px solid var(--hc-focus);
|
|
67
|
+
outline-offset: 4px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
a {
|
|
71
|
+
color: var(--hc-accent);
|
|
72
|
+
text-decoration: underline;
|
|
73
|
+
text-decoration-thickness: 2px;
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## App Implementation
|
|
78
|
+
|
|
79
|
+
### SwiftUI
|
|
80
|
+
```swift
|
|
81
|
+
struct HighContrastView: View {
|
|
82
|
+
var body: some View {
|
|
83
|
+
VStack(spacing: 32) {
|
|
84
|
+
// High Contrast Card
|
|
85
|
+
VStack(alignment: .leading, spacing: 16) {
|
|
86
|
+
Text("Maximum Legibility")
|
|
87
|
+
.font(.custom("Atkinson Hyperlegible", size: 24))
|
|
88
|
+
.fontWeight(.bold)
|
|
89
|
+
.foregroundColor(.black)
|
|
90
|
+
|
|
91
|
+
Text("Content is king. Borders are stark. Contrast ratios exceed 7:1.")
|
|
92
|
+
.font(.custom("Atkinson Hyperlegible", size: 18))
|
|
93
|
+
.foregroundColor(.black)
|
|
94
|
+
}
|
|
95
|
+
.padding(32)
|
|
96
|
+
.background(Color.white)
|
|
97
|
+
.overlay(
|
|
98
|
+
RoundedRectangle(cornerRadius: 8)
|
|
99
|
+
.stroke(Color.black, lineWidth: 3)
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
// High Contrast Action Button
|
|
103
|
+
Button(action: {}) {
|
|
104
|
+
Text("CONFIRM ACTION")
|
|
105
|
+
.font(.custom("Atkinson Hyperlegible", size: 18))
|
|
106
|
+
.fontWeight(.black)
|
|
107
|
+
.foregroundColor(.white)
|
|
108
|
+
.padding(.vertical, 16)
|
|
109
|
+
.padding(.horizontal, 32)
|
|
110
|
+
.background(Color.blue) // Must be a high-contrast blue, e.g., #0000FF
|
|
111
|
+
.cornerRadius(4)
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
.padding()
|
|
115
|
+
.frame(maxWidth: .infinity, maxHeight: .infinity)
|
|
116
|
+
.background(Color.white)
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
- Rely on thick `.stroke(Color.black, lineWidth: 3)` overlays.
|
|
121
|
+
- Ensure text is pure `.black` on pure `.white`. Do not use `.secondary` colors if they drop below a 7:1 contrast ratio.
|
|
122
|
+
- Use fonts specifically designed for legibility, like Atkinson Hyperlegible.
|
|
123
|
+
|
|
124
|
+
### Flutter
|
|
125
|
+
```dart
|
|
126
|
+
class HighContrastScreen extends StatelessWidget {
|
|
127
|
+
@override
|
|
128
|
+
Widget build(BuildContext context) {
|
|
129
|
+
return Scaffold(
|
|
130
|
+
backgroundColor: Colors.white,
|
|
131
|
+
body: Center(
|
|
132
|
+
child: Padding(
|
|
133
|
+
padding: const EdgeInsets.all(24.0),
|
|
134
|
+
child: Column(
|
|
135
|
+
mainAxisAlignment: MainAxisAlignment.center,
|
|
136
|
+
children: [
|
|
137
|
+
// High Contrast Card
|
|
138
|
+
Container(
|
|
139
|
+
width: double.infinity,
|
|
140
|
+
padding: const EdgeInsets.all(32),
|
|
141
|
+
decoration: BoxDecoration(
|
|
142
|
+
color: Colors.white,
|
|
143
|
+
borderRadius: BorderRadius.circular(8),
|
|
144
|
+
border: Border.all(color: Colors.black, width: 3), // Unmissable boundary
|
|
145
|
+
),
|
|
146
|
+
child: Column(
|
|
147
|
+
crossAxisAlignment: CrossAxisAlignment.start,
|
|
148
|
+
children: const [
|
|
149
|
+
Text('Maximum Legibility',
|
|
150
|
+
style: TextStyle(fontFamily: 'Atkinson', fontSize: 24, fontWeight: FontWeight.bold, color: Colors.black)),
|
|
151
|
+
SizedBox(height: 16),
|
|
152
|
+
Text('Content is king. Borders are stark. Contrast ratios exceed 7:1.',
|
|
153
|
+
style: TextStyle(fontFamily: 'Atkinson', fontSize: 18, color: Colors.black)),
|
|
154
|
+
],
|
|
155
|
+
),
|
|
156
|
+
),
|
|
157
|
+
const SizedBox(height: 32),
|
|
158
|
+
|
|
159
|
+
// High Contrast Button
|
|
160
|
+
ElevatedButton(
|
|
161
|
+
onPressed: () {},
|
|
162
|
+
style: ElevatedButton.styleFrom(
|
|
163
|
+
backgroundColor: const Color(0xFF0000FF), // Pure blue
|
|
164
|
+
foregroundColor: Colors.white,
|
|
165
|
+
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16),
|
|
166
|
+
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4)),
|
|
167
|
+
elevation: 0, // No shadows
|
|
168
|
+
),
|
|
169
|
+
child: const Text('CONFIRM ACTION',
|
|
170
|
+
style: TextStyle(fontFamily: 'Atkinson', fontSize: 18, fontWeight: FontWeight.w900)),
|
|
171
|
+
),
|
|
172
|
+
],
|
|
173
|
+
),
|
|
174
|
+
),
|
|
175
|
+
),
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
- Disable `elevation` on buttons; shadows blur the edges and reduce contrast.
|
|
181
|
+
- Use `Border.all(color: Colors.black, width: 3)` on containers to explicitly define spatial boundaries for users with low vision.
|
|
182
|
+
|
|
183
|
+
### React Native
|
|
184
|
+
```jsx
|
|
185
|
+
const HighContrastScreen = () => {
|
|
186
|
+
return (
|
|
187
|
+
<View style={{ flex: 1, backgroundColor: '#FFFFFF', padding: 24, justifyContent: 'center' }}>
|
|
188
|
+
|
|
189
|
+
{/* High Contrast Card */}
|
|
190
|
+
<View style={{
|
|
191
|
+
backgroundColor: '#FFFFFF',
|
|
192
|
+
borderColor: '#000000',
|
|
193
|
+
borderWidth: 3,
|
|
194
|
+
borderRadius: 8,
|
|
195
|
+
padding: 32,
|
|
196
|
+
marginBottom: 32
|
|
197
|
+
}}>
|
|
198
|
+
<Text style={{ fontFamily: 'Atkinson-Bold', fontSize: 24, color: '#000000', marginBottom: 16 }}>
|
|
199
|
+
Maximum Legibility
|
|
200
|
+
</Text>
|
|
201
|
+
<Text style={{ fontFamily: 'Atkinson-Regular', fontSize: 18, color: '#000000' }}>
|
|
202
|
+
Content is king. Borders are stark. Contrast ratios exceed 7:1.
|
|
203
|
+
</Text>
|
|
204
|
+
</View>
|
|
205
|
+
|
|
206
|
+
{/* High Contrast Button */}
|
|
207
|
+
<TouchableOpacity style={{
|
|
208
|
+
backgroundColor: '#0000FF',
|
|
209
|
+
paddingVertical: 16,
|
|
210
|
+
paddingHorizontal: 32,
|
|
211
|
+
borderRadius: 4,
|
|
212
|
+
alignItems: 'center'
|
|
213
|
+
}}>
|
|
214
|
+
<Text style={{ fontFamily: 'Atkinson-Bold', fontSize: 18, color: '#FFFFFF', fontWeight: '900' }}>
|
|
215
|
+
CONFIRM ACTION
|
|
216
|
+
</Text>
|
|
217
|
+
</TouchableOpacity>
|
|
218
|
+
|
|
219
|
+
</View>
|
|
220
|
+
);
|
|
221
|
+
};
|
|
222
|
+
```
|
|
223
|
+
- In React Native, accessibility relies heavily on high contrast. Ensure `borderWidth: 3` and explicit pure `#000000` text colors.
|
|
224
|
+
- Make sure to use accessible `<TouchableOpacity>` areas (minimum 48x48 padding for hit slop).
|
|
225
|
+
|
|
226
|
+
### Jetpack Compose
|
|
227
|
+
```kotlin
|
|
228
|
+
@Composable
|
|
229
|
+
fun HighContrastScreen() {
|
|
230
|
+
Column(
|
|
231
|
+
modifier = Modifier
|
|
232
|
+
.fillMaxSize()
|
|
233
|
+
.background(Color.White)
|
|
234
|
+
.padding(24.dp),
|
|
235
|
+
verticalArrangement = Arrangement.Center
|
|
236
|
+
) {
|
|
237
|
+
// High Contrast Card
|
|
238
|
+
Box(
|
|
239
|
+
modifier = Modifier
|
|
240
|
+
.fillMaxWidth()
|
|
241
|
+
.background(Color.White, RoundedCornerShape(8.dp))
|
|
242
|
+
.border(3.dp, Color.Black, RoundedCornerShape(8.dp))
|
|
243
|
+
.padding(32.dp)
|
|
244
|
+
) {
|
|
245
|
+
Column {
|
|
246
|
+
Text(
|
|
247
|
+
text = "Maximum Legibility",
|
|
248
|
+
fontSize = 24.sp,
|
|
249
|
+
fontWeight = FontWeight.Bold,
|
|
250
|
+
color = Color.Black
|
|
251
|
+
)
|
|
252
|
+
Spacer(Modifier.height(16.dp))
|
|
253
|
+
Text(
|
|
254
|
+
text = "Content is king. Borders are stark. Contrast ratios exceed 7:1.",
|
|
255
|
+
fontSize = 18.sp,
|
|
256
|
+
color = Color.Black
|
|
257
|
+
)
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
Spacer(Modifier.height(32.dp))
|
|
262
|
+
|
|
263
|
+
// High Contrast Button
|
|
264
|
+
Button(
|
|
265
|
+
onClick = { },
|
|
266
|
+
colors = ButtonDefaults.buttonColors(
|
|
267
|
+
containerColor = Color(0xFF0000FF),
|
|
268
|
+
contentColor = Color.White
|
|
269
|
+
),
|
|
270
|
+
shape = RoundedCornerShape(4.dp),
|
|
271
|
+
elevation = null, // Disable shadows for stark look
|
|
272
|
+
modifier = Modifier.fillMaxWidth().height(56.dp)
|
|
273
|
+
) {
|
|
274
|
+
Text("CONFIRM ACTION", fontSize = 18.sp, fontWeight = FontWeight.Black)
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
- Use `Modifier.border(3.dp, Color.Black)` around containers.
|
|
280
|
+
- Disable button elevations (`elevation = null`) to keep the design perfectly flat and sharp.
|
|
281
|
+
|
|
282
|
+
## Do's and Don'ts
|
|
283
|
+
- **DO**: Run your colors through a contrast checker. If it's below 7:1, adjust it.
|
|
284
|
+
- **DON'T**: Rely on color alone to convey meaning (e.g., don't just make an error state red; make it red AND add an error icon AND bold the text).
|
|
285
|
+
|
|
286
|
+
## Limitations
|
|
287
|
+
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
|
|
288
|
+
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
|