opencode-skills-collection 3.1.0 → 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/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/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,312 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cyber-y2k
|
|
3
|
+
description: Web and App implementation guide for Cyber Y2K. Trigger when user wants modern Y2K, holographic visuals, and glitch aesthetics.
|
|
4
|
+
date_added: "2026-06-17"
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Cyber Y2K
|
|
11
|
+
|
|
12
|
+
> "Y2K, but seen through a distorted, modern lens. Darker, glitchier, and highly holographic."
|
|
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. **Holographic Gradients**: Iridescent, oil-slick color palettes that shift as you move.
|
|
20
|
+
2. **Glitch Art**: Text or images that appear corrupted, split into RGB channels, or stutter.
|
|
21
|
+
3. **Tribal & Tribal-Tech Vectors**: Sharp, aggressive vector graphics (think early 2000s tribal tattoos mixed with circuit boards).
|
|
22
|
+
|
|
23
|
+
## Visual DNA
|
|
24
|
+
- **Colors**: Deep black background. Highlights are holographic (purple, cyan, lime green, hot pink all mixed into fluid gradients).
|
|
25
|
+
- **Typography**: Extremely bold, stretched fonts, or highly technical monospace fonts.
|
|
26
|
+
- **Visuals**: CD-ROM reflections, barbed wire graphics, and heavy chromatic aberration.
|
|
27
|
+
|
|
28
|
+
## Web Implementation
|
|
29
|
+
- Use CSS animations for glitching and animated background gradients.
|
|
30
|
+
- **CSS Example**:
|
|
31
|
+
```css
|
|
32
|
+
body {
|
|
33
|
+
background-color: #050505;
|
|
34
|
+
color: #fff;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* Holographic button */
|
|
38
|
+
.cyber-y2k-btn {
|
|
39
|
+
background: linear-gradient(124deg, #ff2400, #e81d1d, #e8b71d, #e3e81d, #1de840, #1ddde8, #2b1de8, #dd00f3, #dd00f3);
|
|
40
|
+
background-size: 1800% 1800%;
|
|
41
|
+
animation: rainbow 18s ease infinite;
|
|
42
|
+
|
|
43
|
+
color: #fff;
|
|
44
|
+
font-weight: 900;
|
|
45
|
+
text-transform: uppercase;
|
|
46
|
+
border: 1px solid rgba(255,255,255,0.5);
|
|
47
|
+
border-radius: 30px;
|
|
48
|
+
padding: 16px 32px;
|
|
49
|
+
mix-blend-mode: screen; /* Makes it interact with background */
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
@keyframes rainbow {
|
|
53
|
+
0%{background-position:0% 82%}
|
|
54
|
+
50%{background-position:100% 19%}
|
|
55
|
+
100%{background-position:0% 82%}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* RGB Split text effect */
|
|
59
|
+
.glitch-text {
|
|
60
|
+
position: relative;
|
|
61
|
+
font-family: 'Courier New', monospace;
|
|
62
|
+
font-size: 3rem;
|
|
63
|
+
font-weight: bold;
|
|
64
|
+
}
|
|
65
|
+
.glitch-text::before, .glitch-text::after {
|
|
66
|
+
content: attr(data-text);
|
|
67
|
+
position: absolute;
|
|
68
|
+
top: 0; left: 0;
|
|
69
|
+
opacity: 0.8;
|
|
70
|
+
}
|
|
71
|
+
.glitch-text::before {
|
|
72
|
+
color: #0ff;
|
|
73
|
+
z-index: -1;
|
|
74
|
+
transform: translate(-3px, 2px);
|
|
75
|
+
}
|
|
76
|
+
.glitch-text::after {
|
|
77
|
+
color: #f0f;
|
|
78
|
+
z-index: -2;
|
|
79
|
+
transform: translate(3px, -2px);
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## App Implementation
|
|
84
|
+
|
|
85
|
+
### SwiftUI
|
|
86
|
+
```swift
|
|
87
|
+
struct CyberY2KView: View {
|
|
88
|
+
@State private var rotation: Double = 0
|
|
89
|
+
|
|
90
|
+
var body: some View {
|
|
91
|
+
ZStack {
|
|
92
|
+
Color.black.ignoresSafeArea()
|
|
93
|
+
|
|
94
|
+
VStack(spacing: 40) {
|
|
95
|
+
// Glitch Text
|
|
96
|
+
ZStack {
|
|
97
|
+
Text("SYSTEM.ERROR")
|
|
98
|
+
.font(.custom("Courier New", size: 40).bold())
|
|
99
|
+
.foregroundColor(.cyan)
|
|
100
|
+
.offset(x: -3, y: 2) // RGB split channel 1
|
|
101
|
+
|
|
102
|
+
Text("SYSTEM.ERROR")
|
|
103
|
+
.font(.custom("Courier New", size: 40).bold())
|
|
104
|
+
.foregroundColor(.pink)
|
|
105
|
+
.offset(x: 3, y: -2) // RGB split channel 2
|
|
106
|
+
|
|
107
|
+
Text("SYSTEM.ERROR")
|
|
108
|
+
.font(.custom("Courier New", size: 40).bold())
|
|
109
|
+
.foregroundColor(.white)
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Holographic Button
|
|
113
|
+
Button(action: {}) {
|
|
114
|
+
Text("ENTER MATRIX")
|
|
115
|
+
.font(.headline.weight(.black))
|
|
116
|
+
.foregroundColor(.white)
|
|
117
|
+
.padding(.horizontal, 32)
|
|
118
|
+
.padding(.vertical, 16)
|
|
119
|
+
.background(
|
|
120
|
+
AngularGradient(
|
|
121
|
+
gradient: Gradient(colors: [.red, .yellow, .green, .cyan, .blue, .purple, .red]),
|
|
122
|
+
center: .center,
|
|
123
|
+
angle: .degrees(rotation)
|
|
124
|
+
)
|
|
125
|
+
)
|
|
126
|
+
.cornerRadius(30)
|
|
127
|
+
.overlay(RoundedRectangle(cornerRadius: 30).stroke(Color.white.opacity(0.5), lineWidth: 1))
|
|
128
|
+
}
|
|
129
|
+
.onAppear {
|
|
130
|
+
withAnimation(.linear(duration: 5).repeatForever(autoreverses: false)) {
|
|
131
|
+
rotation = 360
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
- The RGB Glitch effect is incredibly simple in SwiftUI: stack three identical `Text` views in a `ZStack`. Give the bottom ones `.cyan` and `.pink` colors and slightly `.offset()` them.
|
|
140
|
+
- Use an `AngularGradient` bound to a rotating `@State` variable to achieve the iridescent CD-ROM holographic effect.
|
|
141
|
+
|
|
142
|
+
### Flutter
|
|
143
|
+
```dart
|
|
144
|
+
class CyberY2KScreen extends StatefulWidget {
|
|
145
|
+
@override
|
|
146
|
+
State<CyberY2KScreen> createState() => _CyberY2KScreenState();
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
class _CyberY2KScreenState extends State<CyberY2KScreen> with SingleTickerProviderStateMixin {
|
|
150
|
+
late AnimationController _controller;
|
|
151
|
+
|
|
152
|
+
@override
|
|
153
|
+
void initState() {
|
|
154
|
+
super.initState();
|
|
155
|
+
_controller = AnimationController(vsync: this, duration: const Duration(seconds: 5))..repeat();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
@override
|
|
159
|
+
Widget build(BuildContext context) {
|
|
160
|
+
return Scaffold(
|
|
161
|
+
backgroundColor: Colors.black,
|
|
162
|
+
body: Center(
|
|
163
|
+
child: Column(
|
|
164
|
+
mainAxisAlignment: MainAxisAlignment.center,
|
|
165
|
+
children: [
|
|
166
|
+
// Glitch Text
|
|
167
|
+
Stack(
|
|
168
|
+
children: [
|
|
169
|
+
Transform.translate(offset: const Offset(-3, 2), child: const Text('SYSTEM.ERROR', style: TextStyle(color: Colors.cyan, fontSize: 40, fontFamily: 'Courier', fontWeight: FontWeight.bold))),
|
|
170
|
+
Transform.translate(offset: const Offset(3, -2), child: const Text('SYSTEM.ERROR', style: TextStyle(color: Colors.pinkAccent, fontSize: 40, fontFamily: 'Courier', fontWeight: FontWeight.bold))),
|
|
171
|
+
const Text('SYSTEM.ERROR', style: TextStyle(color: Colors.white, fontSize: 40, fontFamily: 'Courier', fontWeight: FontWeight.bold)),
|
|
172
|
+
],
|
|
173
|
+
),
|
|
174
|
+
const SizedBox(height: 60),
|
|
175
|
+
// Holographic Button via ShaderMask
|
|
176
|
+
AnimatedBuilder(
|
|
177
|
+
animation: _controller,
|
|
178
|
+
builder: (context, child) {
|
|
179
|
+
return ShaderMask(
|
|
180
|
+
shaderCallback: (Rect bounds) {
|
|
181
|
+
return SweepGradient(
|
|
182
|
+
colors: const [Colors.red, Colors.yellow, Colors.green, Colors.cyan, Colors.blue, Colors.purple, Colors.red],
|
|
183
|
+
transform: GradientRotation(_controller.value * 2 * 3.14159), // Rotate through 360 degrees
|
|
184
|
+
).createShader(bounds);
|
|
185
|
+
},
|
|
186
|
+
child: Container(
|
|
187
|
+
decoration: BoxDecoration(
|
|
188
|
+
color: Colors.white, // Color to be masked by shader
|
|
189
|
+
borderRadius: BorderRadius.circular(30),
|
|
190
|
+
border: Border.all(color: Colors.white.withOpacity(0.5)),
|
|
191
|
+
),
|
|
192
|
+
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16),
|
|
193
|
+
child: const Text('ENTER MATRIX', style: TextStyle(color: Colors.black, fontWeight: FontWeight.w900)),
|
|
194
|
+
),
|
|
195
|
+
);
|
|
196
|
+
},
|
|
197
|
+
),
|
|
198
|
+
],
|
|
199
|
+
),
|
|
200
|
+
),
|
|
201
|
+
);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
- In Flutter, a `ShaderMask` with a `SweepGradient` attached to an `AnimationController` creates a perfect, performant oil-slick holographic effect over any widget.
|
|
206
|
+
- Use `Stack` and `Transform.translate` to build the RGB glitch text.
|
|
207
|
+
|
|
208
|
+
### React Native
|
|
209
|
+
```jsx
|
|
210
|
+
// Requires react-native-linear-gradient for complex gradients
|
|
211
|
+
import LinearGradient from 'react-native-linear-gradient';
|
|
212
|
+
|
|
213
|
+
const GlitchText = ({ text }) => {
|
|
214
|
+
const baseStyle = { fontSize: 40, fontFamily: 'Courier', fontWeight: 'bold', position: 'absolute' };
|
|
215
|
+
return (
|
|
216
|
+
<View style={{ alignItems: 'center', height: 50, justifyContent: 'center' }}>
|
|
217
|
+
<Text style={[baseStyle, { color: '#00FFFF', transform: [{ translateX: -3 }, { translateY: 2 }] }]}>{text}</Text>
|
|
218
|
+
<Text style={[baseStyle, { color: '#FF00FF', transform: [{ translateX: 3 }, { translateY: -2 }] }]}>{text}</Text>
|
|
219
|
+
<Text style={[baseStyle, { color: '#FFF' }]}>{text}</Text>
|
|
220
|
+
</View>
|
|
221
|
+
);
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
const CyberY2KScreen = () => {
|
|
225
|
+
return (
|
|
226
|
+
<View style={{ flex: 1, backgroundColor: '#050505', justifyContent: 'center', alignItems: 'center' }}>
|
|
227
|
+
<GlitchText text="SYSTEM.ERROR" />
|
|
228
|
+
|
|
229
|
+
<View style={{ marginTop: 60 }}>
|
|
230
|
+
{/* React Native cannot easily animate gradient angles natively.
|
|
231
|
+
Use a complex LinearGradient to simulate the iridescent shine. */}
|
|
232
|
+
<LinearGradient
|
|
233
|
+
colors={['#ff2400', '#e8b71d', '#1de840', '#1ddde8', '#dd00f3']}
|
|
234
|
+
start={{ x: 0, y: 0 }} end={{ x: 1, y: 1 }}
|
|
235
|
+
style={{
|
|
236
|
+
borderRadius: 30, padding: 16, paddingHorizontal: 32,
|
|
237
|
+
borderWidth: 1, borderColor: 'rgba(255,255,255,0.5)'
|
|
238
|
+
}}
|
|
239
|
+
>
|
|
240
|
+
<Text style={{ color: '#FFF', fontWeight: '900' }}>ENTER MATRIX</Text>
|
|
241
|
+
</LinearGradient>
|
|
242
|
+
</View>
|
|
243
|
+
</View>
|
|
244
|
+
);
|
|
245
|
+
};
|
|
246
|
+
```
|
|
247
|
+
- Stacked absolute `<Text>` nodes handle the RGB split glitch well.
|
|
248
|
+
- True animating holographic gradients (like Sweep/Angular) require `@shopify/react-native-skia`. If Skia is unavailable, use a static multi-stop `LinearGradient` as a fallback.
|
|
249
|
+
|
|
250
|
+
### Jetpack Compose
|
|
251
|
+
```kotlin
|
|
252
|
+
@Composable
|
|
253
|
+
fun GlitchText(text: String) {
|
|
254
|
+
Box(contentAlignment = Alignment.Center) {
|
|
255
|
+
Text(text, color = Color.Cyan, fontSize = 40.sp, fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold,
|
|
256
|
+
modifier = Modifier.offset(x = (-3).dp, y = 2.dp))
|
|
257
|
+
Text(text, color = Color.Magenta, fontSize = 40.sp, fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold,
|
|
258
|
+
modifier = Modifier.offset(x = 3.dp, y = (-2).dp))
|
|
259
|
+
Text(text, color = Color.White, fontSize = 40.sp, fontFamily = FontFamily.Monospace, fontWeight = FontWeight.Bold)
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
@Composable
|
|
264
|
+
fun CyberY2KScreen() {
|
|
265
|
+
val infiniteTransition = rememberInfiniteTransition()
|
|
266
|
+
val rotation by infiniteTransition.animateFloat(
|
|
267
|
+
initialValue = 0f,
|
|
268
|
+
targetValue = 360f,
|
|
269
|
+
animationSpec = infiniteRepeatable(
|
|
270
|
+
animation = tween(5000, easing = LinearEasing)
|
|
271
|
+
)
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
Column(
|
|
275
|
+
modifier = Modifier.fillMaxSize().background(Color.Black),
|
|
276
|
+
horizontalAlignment = Alignment.CenterHorizontally,
|
|
277
|
+
verticalArrangement = Arrangement.Center
|
|
278
|
+
) {
|
|
279
|
+
GlitchText("SYSTEM.ERROR")
|
|
280
|
+
|
|
281
|
+
Spacer(Modifier.height(60.dp))
|
|
282
|
+
|
|
283
|
+
// Holographic Button
|
|
284
|
+
Box(
|
|
285
|
+
modifier = Modifier
|
|
286
|
+
.background(
|
|
287
|
+
brush = Brush.sweepGradient(
|
|
288
|
+
colors = listOf(Color.Red, Color.Yellow, Color.Green, Color.Cyan, Color.Blue, Color.Magenta, Color.Red),
|
|
289
|
+
center = Offset.Unspecified
|
|
290
|
+
),
|
|
291
|
+
shape = RoundedCornerShape(30.dp)
|
|
292
|
+
)
|
|
293
|
+
.graphicsLayer { rotationZ = rotation } // Note: This rotates the whole button.
|
|
294
|
+
// To rotate ONLY the gradient brush requires custom ShaderBrush or drawing the rect manually in drawBehind with a rotating matrix.
|
|
295
|
+
.border(1.dp, Color.White.copy(alpha = 0.5f), RoundedCornerShape(30.dp))
|
|
296
|
+
.padding(horizontal = 32.dp, vertical = 16.dp)
|
|
297
|
+
) {
|
|
298
|
+
Text("ENTER MATRIX", color = Color.White, fontWeight = FontWeight.Black)
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
- Like other frameworks, use a `Box` to stack text with `Modifier.offset()` for glitches.
|
|
304
|
+
- A `Brush.sweepGradient` creates the holographic CD-ROM colors, though rotating the brush *itself* (not the whole widget) in Compose requires a bit of advanced `Matrix` manipulation inside a `ShaderBrush`.
|
|
305
|
+
|
|
306
|
+
## Do's and Don'ts
|
|
307
|
+
- **DO**: Incorporate UI elements that look like raw HTML/CSS (like visible tables or marquee tags) as an ironic nod to early web.
|
|
308
|
+
- **DON'T**: Use clean, modern geometric layouts. Cyber Y2K is chaotic and rebellious.
|
|
309
|
+
|
|
310
|
+
## Limitations
|
|
311
|
+
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
|
|
312
|
+
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cyberpunk-ui
|
|
3
|
+
description: Web and App implementation guide for Cyberpunk UI. Trigger when user wants neon colors, dark backgrounds, high-tech dystopian aesthetics, and hacking interfaces.
|
|
4
|
+
date_added: "2026-06-17"
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Cyberpunk UI
|
|
11
|
+
|
|
12
|
+
> "High tech, low life. Neon signs cutting through the smog of a dystopian megacity."
|
|
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. **Neon on Black**: The foundation is absolute black (`#000000`) or deep charcoal, cut by searingly bright neon accents.
|
|
20
|
+
2. **Angled Geometries**: Clipped corners (chamfers) rather than rounded corners. UI elements often look like they were cut from metal plates.
|
|
21
|
+
3. **Glitch and Data**: Random streams of hexadecimal data, barcode accents, and intentional visual tearing.
|
|
22
|
+
|
|
23
|
+
## Visual DNA
|
|
24
|
+
- **Colors**: Acid Yellow (`#FCE205`), Cyan (`#00FFFF`), Hot Pink (`#FF003C`), against Black.
|
|
25
|
+
- **Typography**: Industrial, squared-off sans-serifs (like `Rajdhani`, `Blender Pro`, or `Teko`), mixed with small monospace fonts for data.
|
|
26
|
+
- **Styling**: Diagonal stripes, warning tape patterns, and heavy outer glows.
|
|
27
|
+
|
|
28
|
+
## Web Implementation
|
|
29
|
+
- Rely on `clip-path` for the angled cuts.
|
|
30
|
+
- **CSS Example**:
|
|
31
|
+
```css
|
|
32
|
+
body {
|
|
33
|
+
background-color: #050505;
|
|
34
|
+
color: #00FFFF;
|
|
35
|
+
font-family: 'Rajdhani', sans-serif;
|
|
36
|
+
background-image: repeating-linear-gradient(
|
|
37
|
+
45deg,
|
|
38
|
+
#050505,
|
|
39
|
+
#050505 10px,
|
|
40
|
+
#0a0a0a 10px,
|
|
41
|
+
#0a0a0a 20px
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.cyberpunk-button {
|
|
46
|
+
background-color: #FF003C; /* Cyberpunk Red/Pink */
|
|
47
|
+
color: #FFF;
|
|
48
|
+
font-size: 1.5rem;
|
|
49
|
+
font-weight: bold;
|
|
50
|
+
text-transform: uppercase;
|
|
51
|
+
border: none;
|
|
52
|
+
padding: 16px 32px;
|
|
53
|
+
|
|
54
|
+
/* The signature clipped corner */
|
|
55
|
+
clip-path: polygon(
|
|
56
|
+
0 0,
|
|
57
|
+
calc(100% - 15px) 0,
|
|
58
|
+
100% 15px,
|
|
59
|
+
100% 100%,
|
|
60
|
+
15px 100%,
|
|
61
|
+
0 calc(100% - 15px)
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
position: relative;
|
|
65
|
+
transition: all 0.2s ease;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* The glitch/shadow effect */
|
|
69
|
+
.cyberpunk-button:hover {
|
|
70
|
+
background-color: #FCE205; /* Acid Yellow */
|
|
71
|
+
color: #000;
|
|
72
|
+
box-shadow:
|
|
73
|
+
-4px 0 0 #00FFFF,
|
|
74
|
+
4px 0 0 #FF003C;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.data-stream {
|
|
78
|
+
font-family: monospace;
|
|
79
|
+
font-size: 0.8rem;
|
|
80
|
+
color: rgba(0, 255, 255, 0.5);
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## App Implementation
|
|
85
|
+
|
|
86
|
+
### SwiftUI
|
|
87
|
+
```swift
|
|
88
|
+
struct CyberpunkShape: Shape {
|
|
89
|
+
let cutSize: CGFloat = 15
|
|
90
|
+
func path(in rect: CGRect) -> Path {
|
|
91
|
+
var path = Path()
|
|
92
|
+
// Top left
|
|
93
|
+
path.move(to: CGPoint(x: 0, y: 0))
|
|
94
|
+
// Top right (cut)
|
|
95
|
+
path.addLine(to: CGPoint(x: rect.maxX - cutSize, y: 0))
|
|
96
|
+
path.addLine(to: CGPoint(x: rect.maxX, y: cutSize))
|
|
97
|
+
// Bottom right
|
|
98
|
+
path.addLine(to: CGPoint(x: rect.maxX, y: rect.maxY))
|
|
99
|
+
// Bottom left (cut)
|
|
100
|
+
path.addLine(to: CGPoint(x: cutSize, y: rect.maxY))
|
|
101
|
+
path.addLine(to: CGPoint(x: 0, y: rect.maxY - cutSize))
|
|
102
|
+
path.closeSubpath()
|
|
103
|
+
return path
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
struct CyberButton: View {
|
|
108
|
+
var body: some View {
|
|
109
|
+
Button(action: {}) {
|
|
110
|
+
Text("SYS.OVERRIDE")
|
|
111
|
+
.font(.custom("Rajdhani", size: 24))
|
|
112
|
+
.fontWeight(.bold)
|
|
113
|
+
.foregroundColor(.white)
|
|
114
|
+
.padding(.horizontal, 32)
|
|
115
|
+
.padding(.vertical, 16)
|
|
116
|
+
}
|
|
117
|
+
.background(Color(red: 1.0, green: 0.0, blue: 0.24)) // Cyberpunk Red
|
|
118
|
+
.clipShape(CyberpunkShape())
|
|
119
|
+
.overlay(
|
|
120
|
+
CyberpunkShape()
|
|
121
|
+
.stroke(Color(red: 0.0, green: 1.0, blue: 1.0), lineWidth: 2) // Cyan border
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
- Define a custom `Shape` that physically cuts off the corners, bypassing standard `cornerRadius`.
|
|
127
|
+
- Use `.clipShape()` for the background, and `.overlay()` with `.stroke()` for high-tech borders.
|
|
128
|
+
|
|
129
|
+
### Flutter
|
|
130
|
+
```dart
|
|
131
|
+
class CyberpunkClipper extends CustomClipper<Path> {
|
|
132
|
+
final double cutSize = 15.0;
|
|
133
|
+
|
|
134
|
+
@override
|
|
135
|
+
Path getClip(Size size) {
|
|
136
|
+
Path path = Path();
|
|
137
|
+
path.lineTo(size.width - cutSize, 0); // Top right cut start
|
|
138
|
+
path.lineTo(size.width, cutSize); // Top right cut end
|
|
139
|
+
path.lineTo(size.width, size.height);
|
|
140
|
+
path.lineTo(cutSize, size.height); // Bottom left cut start
|
|
141
|
+
path.lineTo(0, size.height - cutSize);// Bottom left cut end
|
|
142
|
+
path.close();
|
|
143
|
+
return path;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@override
|
|
147
|
+
bool shouldReclip(CustomClipper<Path> oldClipper) => false;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
class CyberButton extends StatelessWidget {
|
|
151
|
+
@override
|
|
152
|
+
Widget build(BuildContext context) {
|
|
153
|
+
return ClipPath(
|
|
154
|
+
clipper: CyberpunkClipper(),
|
|
155
|
+
child: Container(
|
|
156
|
+
color: const Color(0xFFFF003C), // Cyberpunk Red
|
|
157
|
+
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16),
|
|
158
|
+
child: const Text(
|
|
159
|
+
'SYS.OVERRIDE',
|
|
160
|
+
style: TextStyle(
|
|
161
|
+
color: Colors.white,
|
|
162
|
+
fontSize: 24,
|
|
163
|
+
fontWeight: FontWeight.bold,
|
|
164
|
+
fontFamily: 'Rajdhani',
|
|
165
|
+
),
|
|
166
|
+
),
|
|
167
|
+
),
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
- Extend `CustomClipper<Path>` to calculate the precise angular cuts.
|
|
173
|
+
- Wrap your containers in `ClipPath`.
|
|
174
|
+
- For borders, you must use a `CustomPaint` with a `CustomPainter` that traces the exact same path.
|
|
175
|
+
|
|
176
|
+
### React Native
|
|
177
|
+
```jsx
|
|
178
|
+
import Svg, { Polygon } from 'react-native-svg';
|
|
179
|
+
|
|
180
|
+
const CyberButton = () => {
|
|
181
|
+
return (
|
|
182
|
+
<View style={{ alignItems: 'center', justifyContent: 'center', width: 200, height: 60 }}>
|
|
183
|
+
{/* Background SVG to achieve the clipped corner look */}
|
|
184
|
+
<View style={{ position: 'absolute', top: 0, bottom: 0, left: 0, right: 0 }}>
|
|
185
|
+
<Svg height="100%" width="100%" viewBox="0 0 200 60" preserveAspectRatio="none">
|
|
186
|
+
<Polygon
|
|
187
|
+
points="0,0 185,0 200,15 200,60 15,60 0,45"
|
|
188
|
+
fill="#FF003C"
|
|
189
|
+
stroke="#00FFFF"
|
|
190
|
+
strokeWidth="2"
|
|
191
|
+
/>
|
|
192
|
+
</Svg>
|
|
193
|
+
</View>
|
|
194
|
+
|
|
195
|
+
<Text style={{
|
|
196
|
+
color: '#FFF',
|
|
197
|
+
fontSize: 20,
|
|
198
|
+
fontWeight: 'bold',
|
|
199
|
+
fontFamily: 'Rajdhani-Bold'
|
|
200
|
+
}}>
|
|
201
|
+
SYS.OVERRIDE
|
|
202
|
+
</Text>
|
|
203
|
+
</View>
|
|
204
|
+
);
|
|
205
|
+
};
|
|
206
|
+
```
|
|
207
|
+
- React Native does not natively support clipping paths on views easily.
|
|
208
|
+
- **Solution**: Use `react-native-svg` to draw a `<Polygon>` that acts as the absolute-positioned background behind transparent text.
|
|
209
|
+
|
|
210
|
+
### Jetpack Compose
|
|
211
|
+
```kotlin
|
|
212
|
+
class CyberpunkShape(private val cutSize: Dp) : Shape {
|
|
213
|
+
override fun createOutline(
|
|
214
|
+
size: Size,
|
|
215
|
+
layoutDirection: LayoutDirection,
|
|
216
|
+
density: Density
|
|
217
|
+
): Outline {
|
|
218
|
+
val cutPx = with(density) { cutSize.toPx() }
|
|
219
|
+
val path = Path().apply {
|
|
220
|
+
moveTo(0f, 0f)
|
|
221
|
+
lineTo(size.width - cutPx, 0f)
|
|
222
|
+
lineTo(size.width, cutPx)
|
|
223
|
+
lineTo(size.width, size.height)
|
|
224
|
+
lineTo(cutPx, size.height)
|
|
225
|
+
lineTo(0f, size.height - cutPx)
|
|
226
|
+
close()
|
|
227
|
+
}
|
|
228
|
+
return Outline.Generic(path)
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
@Composable
|
|
233
|
+
fun CyberButton() {
|
|
234
|
+
Box(
|
|
235
|
+
modifier = Modifier
|
|
236
|
+
.clip(CyberpunkShape(15.dp))
|
|
237
|
+
.background(Color(0xFFFF003C))
|
|
238
|
+
.border(2.dp, Color(0xFF00FFFF), CyberpunkShape(15.dp))
|
|
239
|
+
.clickable { }
|
|
240
|
+
.padding(horizontal = 32.dp, vertical = 16.dp)
|
|
241
|
+
) {
|
|
242
|
+
Text(
|
|
243
|
+
text = "SYS.OVERRIDE",
|
|
244
|
+
color = Color.White,
|
|
245
|
+
fontSize = 24.sp,
|
|
246
|
+
fontWeight = FontWeight.Bold,
|
|
247
|
+
// Assuming custom font is loaded
|
|
248
|
+
)
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
- Create a custom `Shape` by overriding `createOutline` and tracing the `Path`.
|
|
253
|
+
- Pass this shape directly into `Modifier.clip()` and `Modifier.background()`.
|
|
254
|
+
- You can elegantly apply a border stroke directly to the custom shape using `Modifier.border()`.
|
|
255
|
+
|
|
256
|
+
## Do's and Don'ts
|
|
257
|
+
- **DO**: Include tiny, meaningless technical details (crosshairs, serial numbers, "SYS.OVERRIDE" text).
|
|
258
|
+
- **DON'T**: Use soft, organic curves or gradients. It must be sharp and aggressive.
|
|
259
|
+
|
|
260
|
+
## Limitations
|
|
261
|
+
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
|
|
262
|
+
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
|