@litfamily/litgrok 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.grok/agents/litgrok-executor.md +33 -0
- package/.grok/agents/litgrok-korean-prose-editor.md +32 -0
- package/.grok/agents/litgrok-korean-style-analyzer.md +30 -0
- package/.grok/agents/litgrok-librarian-researcher.md +31 -0
- package/.grok/agents/litgrok-meaning-preservation-auditor.md +30 -0
- package/.grok/agents/litgrok-native-flow-reviewer.md +30 -0
- package/.grok/agents/litgrok-planner.md +31 -0
- package/.grok/agents/litgrok-polish-orchestrator.md +30 -0
- package/.grok/agents/litgrok-qa-runner.md +33 -0
- package/.grok/agents/litgrok-quality-reviewer.md +33 -0
- package/.grok/agents/litgrok-verifier.md +32 -0
- package/.grok/hooks/deliverable-hedge-guard.json +16 -0
- package/.grok/hooks/deliverable-hedge-guard.mjs +148 -0
- package/.grok/hooks/lit-mark.mjs +142 -0
- package/.grok/hooks/plan-gate.mjs +81 -0
- package/.grok/hooks/post-compact.json +15 -0
- package/.grok/hooks/post-compact.mjs +6 -0
- package/.grok/hooks/post-tool-use-failure.json +15 -0
- package/.grok/hooks/post-tool-use-failure.mjs +6 -0
- package/.grok/hooks/post-tool-use.json +16 -0
- package/.grok/hooks/post-tool-use.mjs +7 -0
- package/.grok/hooks/pre-compact.json +15 -0
- package/.grok/hooks/pre-compact.mjs +6 -0
- package/.grok/hooks/record-passive-event.mjs +198 -0
- package/.grok/hooks/session-start.json +15 -0
- package/.grok/hooks/session-start.mjs +37 -0
- package/.grok/hooks/stop-failure.json +15 -0
- package/.grok/hooks/stop-failure.mjs +6 -0
- package/.grok/hooks/stop.json +15 -0
- package/.grok/hooks/stop.mjs +36 -0
- package/.grok/hooks/subagent-start.json +15 -0
- package/.grok/hooks/subagent-start.mjs +6 -0
- package/.grok/hooks/subagent-stop.json +15 -0
- package/.grok/hooks/subagent-stop.mjs +6 -0
- package/.grok/hooks/user-prompt-submit.json +15 -0
- package/.grok/hooks/user-prompt-submit.mjs +7 -0
- package/.grok/rules/00-litgrok.md +152 -0
- package/.grok/skills/autoconference/LICENSE +21 -0
- package/.grok/skills/autoconference/PROVENANCE.md +23 -0
- package/.grok/skills/autoconference/SKILL.md +140 -0
- package/.grok/skills/autoconference/assets/conference_template.md +76 -0
- package/.grok/skills/autoconference/assets/report_template.md +56 -0
- package/.grok/skills/autoconference/assets/synthesis_template.md +40 -0
- package/.grok/skills/autoconference/references/_canonical-corpus/manifest.json +138 -0
- package/.grok/skills/autoconference/references/agent-prompts.md +30 -0
- package/.grok/skills/autoconference/references/conference-protocol.md +21 -0
- package/.grok/skills/autoconference/references/core-principles.md +13 -0
- package/.grok/skills/autoconference/references/family-contract.md +26 -0
- package/.grok/skills/autoconference/references/modes/analyze.md +11 -0
- package/.grok/skills/autoconference/references/modes/core/convergence-guide.md +41 -0
- package/.grok/skills/autoconference/references/modes/core/crash-recovery.md +11 -0
- package/.grok/skills/autoconference/references/modes/core.md +26 -0
- package/.grok/skills/autoconference/references/modes/debate.md +11 -0
- package/.grok/skills/autoconference/references/modes/plan.md +12 -0
- package/.grok/skills/autoconference/references/modes/resume.md +11 -0
- package/.grok/skills/autoconference/references/modes/ship.md +11 -0
- package/.grok/skills/autoconference/references/modes/survey.md +11 -0
- package/.grok/skills/autoconference/references/results-logging.md +12 -0
- package/.grok/skills/autoconference/references/visualization-guide.md +10 -0
- package/.grok/skills/autoconference/scripts/init_conference.py +646 -0
- package/.grok/skills/autoconference/scripts/verify-canonical-corpus.mjs +177 -0
- package/.grok/skills/autoconference/templates/code-performance.md +59 -0
- package/.grok/skills/autoconference/templates/debate-mode.md +50 -0
- package/.grok/skills/autoconference/templates/prompt-optimization.md +58 -0
- package/.grok/skills/autoconference/templates/quick-conference.md +48 -0
- package/.grok/skills/autoconference/templates/research-synthesis.md +56 -0
- package/.grok/skills/autoconference/templates/survey-mode.md +63 -0
- package/.grok/skills/autoresearch/LICENSE +21 -0
- package/.grok/skills/autoresearch/PROVENANCE.md +22 -0
- package/.grok/skills/autoresearch/SKILL.md +149 -0
- package/.grok/skills/autoresearch/assets/report_template.md +52 -0
- package/.grok/skills/autoresearch/assets/research_template.md +38 -0
- package/.grok/skills/autoresearch/assets/results_template.tsv +2 -0
- package/.grok/skills/autoresearch/references/_canonical-corpus/manifest.json +148 -0
- package/.grok/skills/autoresearch/references/core-principles.md +16 -0
- package/.grok/skills/autoresearch/references/family-contract.md +36 -0
- package/.grok/skills/autoresearch/references/modes/core/evaluator-contract.md +12 -0
- package/.grok/skills/autoresearch/references/modes/core/stuck-detection.md +11 -0
- package/.grok/skills/autoresearch/references/modes/core.md +21 -0
- package/.grok/skills/autoresearch/references/modes/debug/investigation-techniques.md +11 -0
- package/.grok/skills/autoresearch/references/modes/debug.md +11 -0
- package/.grok/skills/autoresearch/references/modes/fix.md +11 -0
- package/.grok/skills/autoresearch/references/modes/learn.md +11 -0
- package/.grok/skills/autoresearch/references/modes/plan.md +14 -0
- package/.grok/skills/autoresearch/references/modes/predict/persona-templates.md +11 -0
- package/.grok/skills/autoresearch/references/modes/predict.md +11 -0
- package/.grok/skills/autoresearch/references/modes/reason.md +11 -0
- package/.grok/skills/autoresearch/references/modes/scenario/dimensions.md +11 -0
- package/.grok/skills/autoresearch/references/modes/scenario.md +11 -0
- package/.grok/skills/autoresearch/references/modes/security/owasp-checklist.md +11 -0
- package/.grok/skills/autoresearch/references/modes/security/stride-model.md +11 -0
- package/.grok/skills/autoresearch/references/modes/security.md +12 -0
- package/.grok/skills/autoresearch/references/modes/ship/type-checklists.md +12 -0
- package/.grok/skills/autoresearch/references/modes/ship.md +11 -0
- package/.grok/skills/autoresearch/references/results-logging.md +12 -0
- package/.grok/skills/autoresearch/references/visualization-guide.md +24 -0
- package/.grok/skills/autoresearch/scripts/init_research.py +391 -0
- package/.grok/skills/autoresearch/scripts/style_presets.py +123 -0
- package/.grok/skills/autoresearch/scripts/verify-canonical-corpus.mjs +179 -0
- package/.grok/skills/browser-drive/SKILL.md +194 -0
- package/.grok/skills/browser-drive/references/snapshot-act-loop.md +61 -0
- package/.grok/skills/comment-checker/SKILL.md +194 -0
- package/.grok/skills/debugging/SKILL.md +82 -0
- package/.grok/skills/debugging/references/methodology/00-setup.md +108 -0
- package/.grok/skills/debugging/references/methodology/02-investigate.md +126 -0
- package/.grok/skills/debugging/references/methodology/04-oracle-triple.md +106 -0
- package/.grok/skills/debugging/references/methodology/05-escalate.md +69 -0
- package/.grok/skills/debugging/references/methodology/06-fix.md +116 -0
- package/.grok/skills/debugging/references/methodology/08-qa.md +94 -0
- package/.grok/skills/debugging/references/methodology/09-cleanup.md +164 -0
- package/.grok/skills/debugging/references/methodology/partial-runtime-evidence.md +228 -0
- package/.grok/skills/debugging/references/post-tool-use-failure-taxonomy.md +55 -0
- package/.grok/skills/debugging/references/reproduction-recipes.md +182 -0
- package/.grok/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
- package/.grok/skills/debugging/references/runtimes/go.md +252 -0
- package/.grok/skills/debugging/references/runtimes/native-binary.md +484 -0
- package/.grok/skills/debugging/references/runtimes/node.md +260 -0
- package/.grok/skills/debugging/references/runtimes/python.md +248 -0
- package/.grok/skills/debugging/references/runtimes/rust.md +234 -0
- package/.grok/skills/debugging/references/tools/ghidra.md +212 -0
- package/.grok/skills/debugging/references/tools/playwright-cli.md +194 -0
- package/.grok/skills/debugging/references/tools/pwndbg.md +263 -0
- package/.grok/skills/debugging/references/tools/pwntools.md +265 -0
- package/.grok/skills/deep-interview/SKILL.md +216 -0
- package/.grok/skills/frontend-ui-ux/LICENSE +21 -0
- package/.grok/skills/frontend-ui-ux/PROVENANCE.json +38 -0
- package/.grok/skills/frontend-ui-ux/SKILL.md +58 -0
- package/.grok/skills/frontend-ui-ux/SOURCE-MANIFEST.json +1060 -0
- package/.grok/skills/frontend-ui-ux/THIRD-PARTY-NOTICE.txt +14 -0
- package/.grok/skills/frontend-ui-ux/data/design-intelligence.json +1 -0
- package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/frontend-ATTRIBUTION.md +217 -0
- package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/frontend-LICENSE-Apache-2.0.txt +201 -0
- package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/root-LICENSE +21 -0
- package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +873 -0
- package/.grok/skills/frontend-ui-ux/references/adaptive-layout.md +92 -0
- package/.grok/skills/frontend-ui-ux/references/brand-and-imagery.md +93 -0
- package/.grok/skills/frontend-ui-ux/references/complete-contract.md +557 -0
- package/.grok/skills/frontend-ui-ux/references/composition.md +85 -0
- package/.grok/skills/frontend-ui-ux/references/creative-directions.md +80 -0
- package/.grok/skills/frontend-ui-ux/references/design/README.md +248 -0
- package/.grok/skills/frontend-ui-ux/references/design/_INDEX.md +191 -0
- package/.grok/skills/frontend-ui-ux/references/design/airbnb.md +393 -0
- package/.grok/skills/frontend-ui-ux/references/design/airtable.md +92 -0
- package/.grok/skills/frontend-ui-ux/references/design/apple.md +250 -0
- package/.grok/skills/frontend-ui-ux/references/design/aside.md +209 -0
- package/.grok/skills/frontend-ui-ux/references/design/binance.md +348 -0
- package/.grok/skills/frontend-ui-ux/references/design/bmw.md +183 -0
- package/.grok/skills/frontend-ui-ux/references/design/brutalist-skill.md +92 -0
- package/.grok/skills/frontend-ui-ux/references/design/bugatti.md +271 -0
- package/.grok/skills/frontend-ui-ux/references/design/cal.md +262 -0
- package/.grok/skills/frontend-ui-ux/references/design/claude.md +315 -0
- package/.grok/skills/frontend-ui-ux/references/design/clay.md +307 -0
- package/.grok/skills/frontend-ui-ux/references/design/clickhouse.md +284 -0
- package/.grok/skills/frontend-ui-ux/references/design/clone-from-url.md +65 -0
- package/.grok/skills/frontend-ui-ux/references/design/cohere.md +269 -0
- package/.grok/skills/frontend-ui-ux/references/design/coinbase.md +132 -0
- package/.grok/skills/frontend-ui-ux/references/design/composio.md +310 -0
- package/.grok/skills/frontend-ui-ux/references/design/cursor.md +312 -0
- package/.grok/skills/frontend-ui-ux/references/design/design-system-architecture.md +244 -0
- package/.grok/skills/frontend-ui-ux/references/design/elevenlabs.md +268 -0
- package/.grok/skills/frontend-ui-ux/references/design/expo.md +284 -0
- package/.grok/skills/frontend-ui-ux/references/design/ferrari.md +317 -0
- package/.grok/skills/frontend-ui-ux/references/design/figma.md +223 -0
- package/.grok/skills/frontend-ui-ux/references/design/framer.md +249 -0
- package/.grok/skills/frontend-ui-ux/references/design/gpt-tasteskill.md +74 -0
- package/.grok/skills/frontend-ui-ux/references/design/hashicorp.md +281 -0
- package/.grok/skills/frontend-ui-ux/references/design/ibm.md +335 -0
- package/.grok/skills/frontend-ui-ux/references/design/image-to-code-skill.md +1228 -0
- package/.grok/skills/frontend-ui-ux/references/design/imagegen-brandkit.md +798 -0
- package/.grok/skills/frontend-ui-ux/references/design/imagegen-frontend-mobile.md +1465 -0
- package/.grok/skills/frontend-ui-ux/references/design/imagegen-frontend-web.md +987 -0
- package/.grok/skills/frontend-ui-ux/references/design/intercom.md +149 -0
- package/.grok/skills/frontend-ui-ux/references/design/kraken.md +128 -0
- package/.grok/skills/frontend-ui-ux/references/design/lamborghini.md +291 -0
- package/.grok/skills/frontend-ui-ux/references/design/layout-skill.md +107 -0
- package/.grok/skills/frontend-ui-ux/references/design/lazyweb.md +77 -0
- package/.grok/skills/frontend-ui-ux/references/design/linear.app.md +370 -0
- package/.grok/skills/frontend-ui-ux/references/design/lovable.md +301 -0
- package/.grok/skills/frontend-ui-ux/references/design/mastercard.md +368 -0
- package/.grok/skills/frontend-ui-ux/references/design/meta.md +369 -0
- package/.grok/skills/frontend-ui-ux/references/design/minimalist-skill.md +85 -0
- package/.grok/skills/frontend-ui-ux/references/design/minimax.md +260 -0
- package/.grok/skills/frontend-ui-ux/references/design/mintlify.md +329 -0
- package/.grok/skills/frontend-ui-ux/references/design/miro.md +111 -0
- package/.grok/skills/frontend-ui-ux/references/design/mistral.ai.md +264 -0
- package/.grok/skills/frontend-ui-ux/references/design/mongodb.md +269 -0
- package/.grok/skills/frontend-ui-ux/references/design/nike.md +366 -0
- package/.grok/skills/frontend-ui-ux/references/design/notion.md +312 -0
- package/.grok/skills/frontend-ui-ux/references/design/nvidia.md +296 -0
- package/.grok/skills/frontend-ui-ux/references/design/ollama.md +270 -0
- package/.grok/skills/frontend-ui-ux/references/design/opencode.ai.md +284 -0
- package/.grok/skills/frontend-ui-ux/references/design/output-skill.md +49 -0
- package/.grok/skills/frontend-ui-ux/references/design/pinterest.md +233 -0
- package/.grok/skills/frontend-ui-ux/references/design/playstation.md +367 -0
- package/.grok/skills/frontend-ui-ux/references/design/posthog.md +259 -0
- package/.grok/skills/frontend-ui-ux/references/design/raycast.md +271 -0
- package/.grok/skills/frontend-ui-ux/references/design/react-dev-tooling-skill.md +230 -0
- package/.grok/skills/frontend-ui-ux/references/design/redesign-skill.md +178 -0
- package/.grok/skills/frontend-ui-ux/references/design/renault.md +314 -0
- package/.grok/skills/frontend-ui-ux/references/design/replicate.md +264 -0
- package/.grok/skills/frontend-ui-ux/references/design/resend.md +306 -0
- package/.grok/skills/frontend-ui-ux/references/design/revolut.md +188 -0
- package/.grok/skills/frontend-ui-ux/references/design/runwayml.md +247 -0
- package/.grok/skills/frontend-ui-ux/references/design/sanity.md +360 -0
- package/.grok/skills/frontend-ui-ux/references/design/sentry.md +265 -0
- package/.grok/skills/frontend-ui-ux/references/design/shopify.md +353 -0
- package/.grok/skills/frontend-ui-ux/references/design/soft-skill.md +98 -0
- package/.grok/skills/frontend-ui-ux/references/design/spacex.md +197 -0
- package/.grok/skills/frontend-ui-ux/references/design/spotify.md +249 -0
- package/.grok/skills/frontend-ui-ux/references/design/starbucks.md +583 -0
- package/.grok/skills/frontend-ui-ux/references/design/stitch-design-example.md +121 -0
- package/.grok/skills/frontend-ui-ux/references/design/stitch-skill.md +184 -0
- package/.grok/skills/frontend-ui-ux/references/design/stripe.md +325 -0
- package/.grok/skills/frontend-ui-ux/references/design/supabase.md +258 -0
- package/.grok/skills/frontend-ui-ux/references/design/superhuman.md +255 -0
- package/.grok/skills/frontend-ui-ux/references/design/taste-skill.md +1206 -0
- package/.grok/skills/frontend-ui-ux/references/design/tesla.md +289 -0
- package/.grok/skills/frontend-ui-ux/references/design/theverge.md +342 -0
- package/.grok/skills/frontend-ui-ux/references/design/together.ai.md +266 -0
- package/.grok/skills/frontend-ui-ux/references/design/uber.md +298 -0
- package/.grok/skills/frontend-ui-ux/references/design/vercel.md +313 -0
- package/.grok/skills/frontend-ui-ux/references/design/vodafone.md +426 -0
- package/.grok/skills/frontend-ui-ux/references/design/voltagent.md +326 -0
- package/.grok/skills/frontend-ui-ux/references/design/warp.md +256 -0
- package/.grok/skills/frontend-ui-ux/references/design/webflow.md +95 -0
- package/.grok/skills/frontend-ui-ux/references/design/wired.md +281 -0
- package/.grok/skills/frontend-ui-ux/references/design/wise.md +176 -0
- package/.grok/skills/frontend-ui-ux/references/design/x.ai.md +260 -0
- package/.grok/skills/frontend-ui-ux/references/design/zapier.md +331 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/EVIDENCE.md +97 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/README.md +48 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/UPSTREAM.md +80 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/lane-a-direction.md +64 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/lane-b-execution.md +65 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/lane-c-review.md +65 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/lane-d-memory.md +83 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/orchestration.md +80 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/routing.md +79 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/LICENSE +21 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/content-writer.md +132 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-builder.md +109 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-critic.md +89 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-lead.md +113 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-scout.md +78 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-strategist.md +121 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/motion-designer.md +120 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/accessible-content/reference.md +101 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debate/reference.md +199 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-handoff/reference.md +125 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-md/reference.md +106 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-review/reference.md +123 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/interaction-design/reference.md +122 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/research-planning/reference.md +96 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-report/reference.md +78 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/token-architecture/reference.md +75 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/ui-composition/reference.md +117 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/usability-testing/reference.md +78 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
- package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
- package/.grok/skills/frontend-ui-ux/references/evidence-review.md +126 -0
- package/.grok/skills/frontend-ui-ux/references/implementation-platforms.md +109 -0
- package/.grok/skills/frontend-ui-ux/references/inclusive-interface.md +92 -0
- package/.grok/skills/frontend-ui-ux/references/interaction-motion.md +101 -0
- package/.grok/skills/frontend-ui-ux/references/operating-lanes.md +92 -0
- package/.grok/skills/frontend-ui-ux/references/perfection/README.md +160 -0
- package/.grok/skills/frontend-ui-ux/references/perfection/react-perf-tooling.md +127 -0
- package/.grok/skills/frontend-ui-ux/references/performance-delivery.md +93 -0
- package/.grok/skills/frontend-ui-ux/references/product-direction.md +84 -0
- package/.grok/skills/frontend-ui-ux/references/redesign-playbook.md +97 -0
- package/.grok/skills/frontend-ui-ux/references/system-foundations.md +84 -0
- package/.grok/skills/frontend-ui-ux/references/taste-direction.md +86 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/README.md +659 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/charts.csv +26 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/colors.csv +162 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/icons.csv +106 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/landing.csv +35 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/products.csv +162 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/react-performance.csv +45 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/astro.csv +54 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/flutter.csv +53 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nextjs.csv +53 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react-native.csv +52 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react.csv +54 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/shadcn.csv +61 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/svelte.csv +54 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/swiftui.csv +51 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/vue.csv +50 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/styles.csv +85 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/typography.csv +74 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/ui-reasoning.csv +162 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/ux-guidelines.csv +100 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/web-interface.csv +31 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/core.py +262 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/design_system.py +1148 -0
- package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/search.py +114 -0
- package/.grok/skills/frontend-ui-ux/references/visual-language.md +84 -0
- package/.grok/skills/frontend-ui-ux/references/visual-reconstruction.md +97 -0
- package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.schema.json +306 -0
- package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1beta1.schema.json +291 -0
- package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1beta2.schema.json +311 -0
- package/.grok/skills/frontend-ui-ux/scripts/design-contract-format.mjs +286 -0
- package/.grok/skills/frontend-ui-ux/scripts/design-contract-inventory-rules.mjs +354 -0
- package/.grok/skills/frontend-ui-ux/scripts/design-contract-rules.mjs +361 -0
- package/.grok/skills/frontend-ui-ux/scripts/design-contract-surface-rules.mjs +313 -0
- package/.grok/skills/frontend-ui-ux/scripts/design-data.mjs +68 -0
- package/.grok/skills/frontend-ui-ux/scripts/errors.mjs +12 -0
- package/.grok/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +124 -0
- package/.grok/skills/frontend-ui-ux/scripts/json-boundary.mjs +63 -0
- package/.grok/skills/frontend-ui-ux/scripts/query-design-intelligence.mjs +106 -0
- package/.grok/skills/frontend-ui-ux/scripts/search.mjs +43 -0
- package/.grok/skills/frontend-ui-ux/scripts/source-replay.mjs +153 -0
- package/.grok/skills/frontend-ui-ux/scripts/strict-json.mjs +143 -0
- package/.grok/skills/frontend-ui-ux/scripts/validate-design-contract.mjs +52 -0
- package/.grok/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +214 -0
- package/.grok/skills/lit-burnoff/SKILL.md +175 -0
- package/.grok/skills/lit-burnoff-file/SKILL.md +67 -0
- package/.grok/skills/lit-code/SKILL.md +531 -0
- package/.grok/skills/lit-code/references/go/README.md +90 -0
- package/.grok/skills/lit-code/references/go/backend-stack.md +641 -0
- package/.grok/skills/lit-code/references/go/bootstrap.md +328 -0
- package/.grok/skills/lit-code/references/go/bubbletea-v2.md +360 -0
- package/.grok/skills/lit-code/references/go/cobra-stack.md +468 -0
- package/.grok/skills/lit-code/references/go/concurrency.md +362 -0
- package/.grok/skills/lit-code/references/go/data-modeling.md +329 -0
- package/.grok/skills/lit-code/references/go/error-handling.md +359 -0
- package/.grok/skills/lit-code/references/go/golangci-strict.md +236 -0
- package/.grok/skills/lit-code/references/go/grpc-connect.md +375 -0
- package/.grok/skills/lit-code/references/go/libraries.md +337 -0
- package/.grok/skills/lit-code/references/go/one-liners.md +202 -0
- package/.grok/skills/lit-code/references/go/sqlc-pgx.md +471 -0
- package/.grok/skills/lit-code/references/go/testing.md +467 -0
- package/.grok/skills/lit-code/references/go/type-patterns.md +298 -0
- package/.grok/skills/lit-code/references/permission-sandbox-matrix.md +70 -0
- package/.grok/skills/lit-code/references/python/README.md +314 -0
- package/.grok/skills/lit-code/references/python/async-anyio.md +442 -0
- package/.grok/skills/lit-code/references/python/data-modeling.md +233 -0
- package/.grok/skills/lit-code/references/python/data-processing.md +133 -0
- package/.grok/skills/lit-code/references/python/error-handling.md +218 -0
- package/.grok/skills/lit-code/references/python/fastapi-stack.md +316 -0
- package/.grok/skills/lit-code/references/python/httpx2-optimization.md +360 -0
- package/.grok/skills/lit-code/references/python/libraries.md +307 -0
- package/.grok/skills/lit-code/references/python/one-liners.md +268 -0
- package/.grok/skills/lit-code/references/python/orjson-stack.md +378 -0
- package/.grok/skills/lit-code/references/python/pydantic-ai.md +285 -0
- package/.grok/skills/lit-code/references/python/pyproject-strict.md +232 -0
- package/.grok/skills/lit-code/references/python/textual-tui.md +201 -0
- package/.grok/skills/lit-code/references/python/type-patterns.md +176 -0
- package/.grok/skills/lit-code/references/rust/README.md +317 -0
- package/.grok/skills/lit-code/references/rust/async-tokio.md +299 -0
- package/.grok/skills/lit-code/references/rust/axum-stack.md +467 -0
- package/.grok/skills/lit-code/references/rust/cargo-strict.md +317 -0
- package/.grok/skills/lit-code/references/rust/clap-stack.md +409 -0
- package/.grok/skills/lit-code/references/rust/concurrency.md +375 -0
- package/.grok/skills/lit-code/references/rust/libraries.md +439 -0
- package/.grok/skills/lit-code/references/rust/one-liners.md +291 -0
- package/.grok/skills/lit-code/references/rust/proptest-insta.md +429 -0
- package/.grok/skills/lit-code/references/rust/type-state.md +354 -0
- package/.grok/skills/lit-code/references/rust/unsafe-discipline.md +250 -0
- package/.grok/skills/lit-code/references/rust/zero-cost-safety.md +527 -0
- package/.grok/skills/lit-code/references/rust-ub/README.md +289 -0
- package/.grok/skills/lit-code/references/rust-ub/miri-sanitizers-loom.md +411 -0
- package/.grok/skills/lit-code/references/rust-ub/ub-taxonomy.md +269 -0
- package/.grok/skills/lit-code/references/tool-boundaries.md +66 -0
- package/.grok/skills/lit-code/references/typescript/README.md +195 -0
- package/.grok/skills/lit-code/references/typescript/backend-hono.md +672 -0
- package/.grok/skills/lit-code/references/typescript/bootstrap.md +199 -0
- package/.grok/skills/lit-code/references/typescript/data-modeling.md +202 -0
- package/.grok/skills/lit-code/references/typescript/error-handling.md +169 -0
- package/.grok/skills/lit-code/references/typescript/tsconfig-strict.md +152 -0
- package/.grok/skills/lit-code/references/typescript/type-patterns.md +196 -0
- package/.grok/skills/lit-code/references/worked-cases.md +190 -0
- package/.grok/skills/lit-commit/SKILL.md +218 -0
- package/.grok/skills/lit-comprehend/SKILL.md +63 -0
- package/.grok/skills/lit-comprehend/references/artifact-format.md +58 -0
- package/.grok/skills/lit-comprehend/references/artifact-template.md +219 -0
- package/.grok/skills/lit-comprehend/references/honesty-ledger-contract.md +51 -0
- package/.grok/skills/lit-comprehend/references/micro-worlds.md +195 -0
- package/.grok/skills/lit-comprehend/references/worked-explainer.md +51 -0
- package/.grok/skills/lit-crucible/SKILL.md +231 -0
- package/.grok/skills/lit-handoff/SKILL.md +159 -0
- package/.grok/skills/lit-handoff/evals/evals.json +154 -0
- package/.grok/skills/lit-handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
- package/.grok/skills/lit-handoff/references/_canonical-corpus/manifest.json +17 -0
- package/.grok/skills/lit-handoff/references/source-pointer.md +31 -0
- package/.grok/skills/lit-handoff/scripts/verify-canonical-corpus.mjs +137 -0
- package/.grok/skills/lit-handoff/templates/HANDOFF.md +121 -0
- package/.grok/skills/lit-init/SKILL.md +244 -0
- package/.grok/skills/lit-korean/SKILL.md +176 -0
- package/.grok/skills/lit-plan/SKILL.md +71 -0
- package/.grok/skills/lit-plan/references/plan-schema.md +87 -0
- package/.grok/skills/lit-plan/references/start-work-handoff-contract.md +59 -0
- package/.grok/skills/lit-plan/scripts/scaffold-plan.mjs +259 -0
- package/.grok/skills/lit-plan/scripts/validate-plan.mjs +89 -0
- package/.grok/skills/lit-recap/SKILL.md +57 -0
- package/.grok/skills/lit-scientific-visualization/SKILL.md +213 -0
- package/.grok/skills/lit-scientific-visualization/scripts/verify-canonical-corpus.mjs +181 -0
- package/.grok/skills/lit-team/SKILL.md +73 -0
- package/.grok/skills/lit-team/references/explore-packet.md +70 -0
- package/.grok/skills/lit-team/references/general-purpose-packet.md +75 -0
- package/.grok/skills/lit-team/references/plan-packet.md +73 -0
- package/.grok/skills/litgoal/SKILL.md +98 -0
- package/.grok/skills/litgrok/SKILL.md +77 -0
- package/.grok/skills/litresearch/SKILL.md +60 -0
- package/.grok/skills/litresearch/references/mcp-tool-use-patterns.md +83 -0
- package/.grok/skills/litresearch/references/source-verdict-taxonomy.md +40 -0
- package/.grok/skills/litwork/SKILL.md +109 -0
- package/.grok/skills/lsp/SKILL.md +56 -0
- package/.grok/skills/lsp/references/built-in-lsp-contract.md +71 -0
- package/.grok/skills/lsp-setup/SKILL.md +82 -0
- package/.grok/skills/lsp-setup/references/bash/README.md +54 -0
- package/.grok/skills/lsp-setup/references/c-cpp/README.md +58 -0
- package/.grok/skills/lsp-setup/references/csharp/README.md +64 -0
- package/.grok/skills/lsp-setup/references/dart/README.md +48 -0
- package/.grok/skills/lsp-setup/references/elixir/README.md +51 -0
- package/.grok/skills/lsp-setup/references/go/README.md +53 -0
- package/.grok/skills/lsp-setup/references/haskell/README.md +57 -0
- package/.grok/skills/lsp-setup/references/java/README.md +55 -0
- package/.grok/skills/lsp-setup/references/julia/README.md +56 -0
- package/.grok/skills/lsp-setup/references/kotlin/README.md +58 -0
- package/.grok/skills/lsp-setup/references/lua/README.md +48 -0
- package/.grok/skills/lsp-setup/references/php/README.md +49 -0
- package/.grok/skills/lsp-setup/references/python/README.md +60 -0
- package/.grok/skills/lsp-setup/references/ruby/README.md +53 -0
- package/.grok/skills/lsp-setup/references/rust/README.md +55 -0
- package/.grok/skills/lsp-setup/references/swift/README.md +52 -0
- package/.grok/skills/lsp-setup/references/terraform/README.md +50 -0
- package/.grok/skills/lsp-setup/references/typescript/README.md +63 -0
- package/.grok/skills/lsp-setup/references/yaml/README.md +47 -0
- package/.grok/skills/lsp-setup/references/zig/README.md +49 -0
- package/.grok/skills/lsp-setup/scripts/detect-lsp.mjs +40 -0
- package/.grok/skills/lsp-setup/scripts/lsp-server-table.mjs +309 -0
- package/.grok/skills/lsp-setup/scripts/verify-lsp.mjs +54 -0
- package/.grok/skills/refactor/SKILL.md +210 -0
- package/.grok/skills/review-work/SKILL.md +515 -0
- package/.grok/skills/review-work/references/behavior-lane-contract.md +48 -0
- package/.grok/skills/review-work/references/documentation-lane-contract.md +49 -0
- package/.grok/skills/review-work/references/integration-lane-contract.md +51 -0
- package/.grok/skills/review-work/references/regression-lane-contract.md +48 -0
- package/.grok/skills/review-work/references/safety-lane-contract.md +48 -0
- package/.grok/skills/review-work/references/test-lane-contract.md +48 -0
- package/.grok/skills/review-work/scripts/check-lanes.mjs +63 -0
- package/.grok/skills/rules/SKILL.md +51 -0
- package/.grok/skills/rules/references/loading-order-contract.md +66 -0
- package/.grok/skills/rules/scripts/resolve-guidance.mjs +180 -0
- package/.grok/skills/skill-observer/SKILL.md +78 -0
- package/.grok/skills/skill-observer/references/review-contract.md +77 -0
- package/.grok/skills/skill-observer/scripts/curator.mjs +121 -0
- package/.grok/skills/skill-observer/scripts/review.mjs +347 -0
- package/.grok/skills/skill-observer/scripts/skill-loop.mjs +2087 -0
- package/.grok/skills/skill-observer/scripts/validate-skills.mjs +83 -0
- package/.grok/skills/start-work/SKILL.md +396 -0
- package/.grok/skills/structural-search/SKILL.md +195 -0
- package/.grok/skills/visual-qa/SKILL.md +50 -0
- package/.grok/skills/visual-qa/references/capture-playbook.md +47 -0
- package/.grok/skills/visual-qa/references/complete-contract.md +721 -0
- package/.grok/skills/visual-qa/references/verdict-taxonomy.md +34 -0
- package/.grok/skills/visual-qa/scripts/verify-evidence-manifest.mjs +91 -0
- package/.grok/skills/wikify/SKILL.md +65 -0
- package/.grok/skills/wikify/references/page-format.md +81 -0
- package/.grok/skills/wikify/references/provenance-contract.md +52 -0
- package/.grok/vendor/NOTICE.md +16 -0
- package/.grok/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
- package/.grok/vendor/provenance/045_scientific-visualization.md +37 -0
- package/.grok/vendor/scientific-visualization/assets/color_palettes.py +197 -0
- package/.grok/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
- package/.grok/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
- package/.grok/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
- package/.grok/vendor/scientific-visualization/evals/evals.json +158 -0
- package/.grok/vendor/scientific-visualization/references/_canonical-corpus/manifest.json +38 -0
- package/.grok/vendor/scientific-visualization/references/color_palettes.md +380 -0
- package/.grok/vendor/scientific-visualization/references/journal_requirements.md +359 -0
- package/.grok/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
- package/.grok/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
- package/.grok/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
- package/.grok/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
- package/.grok/vendor/scientific-visualization/scripts/figure_export.py +238 -0
- package/.grok/vendor/scientific-visualization/scripts/style_presets.py +467 -0
- package/.grok/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
- package/.grok/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
- package/CHANGELOG.md +131 -0
- package/CODE_OF_CONDUCT.md +9 -0
- package/CONTRIBUTING.md +22 -0
- package/LICENSE +21 -0
- package/README.md +228 -0
- package/README_ko-KR.md +228 -0
- package/SECURITY.md +11 -0
- package/SUPPORT.md +9 -0
- package/bin/litgrok.mjs +860 -0
- package/docs/assets/cover.webp +0 -0
- package/docs/assets/litgrok-clay-icon.png +0 -0
- package/docs/assets/litgrok-continuity-1600.webp +0 -0
- package/docs/assets/litgrok-ignition-1600.webp +0 -0
- package/docs/assets/litgrok-wordmark.svg +5 -0
- package/docs/assets/readme/README.md +31 -0
- package/docs/assets/readme/badge-license.svg +1 -0
- package/docs/assets/readme/badge-version.svg +1 -0
- package/docs/privacy.md +13 -0
- package/docs/reference.md +271 -0
- package/docs/reference_ko-KR.md +267 -0
- package/package.json +50 -0
- package/plugin.json +27 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""
|
|
4
|
+
UI/UX Pro Max Search - BM25 search engine for UI/UX style guides
|
|
5
|
+
Usage: python search.py "<query>" [--domain <domain>] [--stack <stack>] [--max-results 3]
|
|
6
|
+
python search.py "<query>" --design-system [-p "Project Name"]
|
|
7
|
+
python search.py "<query>" --design-system --persist [-p "Project Name"] [--page "dashboard"]
|
|
8
|
+
|
|
9
|
+
Domains: style, prompt, color, chart, landing, product, ux, typography, google-fonts
|
|
10
|
+
Stacks: react, nextjs, vue, svelte, astro, swiftui, react-native, flutter, nuxtjs, nuxt-ui, html-tailwind, shadcn, jetpack-compose, threejs
|
|
11
|
+
|
|
12
|
+
Persistence (Master + Overrides pattern):
|
|
13
|
+
--persist Save design system to design-system/MASTER.md
|
|
14
|
+
--page Also create a page-specific override file in design-system/pages/
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
import argparse
|
|
18
|
+
import sys
|
|
19
|
+
import io
|
|
20
|
+
from core import CSV_CONFIG, AVAILABLE_STACKS, MAX_RESULTS, search, search_stack
|
|
21
|
+
from design_system import generate_design_system, persist_design_system
|
|
22
|
+
|
|
23
|
+
# Force UTF-8 for stdout/stderr to handle emojis on Windows (cp1252 default)
|
|
24
|
+
if sys.stdout.encoding and sys.stdout.encoding.lower() != 'utf-8':
|
|
25
|
+
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
|
|
26
|
+
if sys.stderr.encoding and sys.stderr.encoding.lower() != 'utf-8':
|
|
27
|
+
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def format_output(result):
|
|
31
|
+
"""Format results for Claude consumption (token-optimized)"""
|
|
32
|
+
if "error" in result:
|
|
33
|
+
return f"Error: {result['error']}"
|
|
34
|
+
|
|
35
|
+
output = []
|
|
36
|
+
if result.get("stack"):
|
|
37
|
+
output.append(f"## UI Pro Max Stack Guidelines")
|
|
38
|
+
output.append(f"**Stack:** {result['stack']} | **Query:** {result['query']}")
|
|
39
|
+
else:
|
|
40
|
+
output.append(f"## UI Pro Max Search Results")
|
|
41
|
+
output.append(f"**Domain:** {result['domain']} | **Query:** {result['query']}")
|
|
42
|
+
output.append(f"**Source:** {result['file']} | **Found:** {result['count']} results\n")
|
|
43
|
+
|
|
44
|
+
for i, row in enumerate(result['results'], 1):
|
|
45
|
+
output.append(f"### Result {i}")
|
|
46
|
+
for key, value in row.items():
|
|
47
|
+
value_str = str(value)
|
|
48
|
+
if len(value_str) > 300:
|
|
49
|
+
value_str = value_str[:300] + "..."
|
|
50
|
+
output.append(f"- **{key}:** {value_str}")
|
|
51
|
+
output.append("")
|
|
52
|
+
|
|
53
|
+
return "\n".join(output)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
if __name__ == "__main__":
|
|
57
|
+
parser = argparse.ArgumentParser(description="UI Pro Max Search")
|
|
58
|
+
parser.add_argument("query", help="Search query")
|
|
59
|
+
parser.add_argument("--domain", "-d", choices=list(CSV_CONFIG.keys()), help="Search domain")
|
|
60
|
+
parser.add_argument("--stack", "-s", choices=AVAILABLE_STACKS, help=f"Stack-specific search. Available: {', '.join(AVAILABLE_STACKS)}")
|
|
61
|
+
parser.add_argument("--max-results", "-n", type=int, default=MAX_RESULTS, help="Max results (default: 3)")
|
|
62
|
+
parser.add_argument("--json", action="store_true", help="Output as JSON")
|
|
63
|
+
# Design system generation
|
|
64
|
+
parser.add_argument("--design-system", "-ds", action="store_true", help="Generate complete design system recommendation")
|
|
65
|
+
parser.add_argument("--project-name", "-p", type=str, default=None, help="Project name for design system output")
|
|
66
|
+
parser.add_argument("--format", "-f", choices=["ascii", "markdown"], default="ascii", help="Output format for design system")
|
|
67
|
+
# Persistence (Master + Overrides pattern)
|
|
68
|
+
parser.add_argument("--persist", action="store_true", help="Save design system to design-system/MASTER.md (creates hierarchical structure)")
|
|
69
|
+
parser.add_argument("--page", type=str, default=None, help="Create page-specific override file in design-system/pages/")
|
|
70
|
+
parser.add_argument("--output-dir", "-o", type=str, default=None, help="Output directory for persisted files (default: current directory)")
|
|
71
|
+
|
|
72
|
+
args = parser.parse_args()
|
|
73
|
+
|
|
74
|
+
# Design system takes priority
|
|
75
|
+
if args.design_system:
|
|
76
|
+
result = generate_design_system(
|
|
77
|
+
args.query,
|
|
78
|
+
args.project_name,
|
|
79
|
+
args.format,
|
|
80
|
+
persist=args.persist,
|
|
81
|
+
page=args.page,
|
|
82
|
+
output_dir=args.output_dir
|
|
83
|
+
)
|
|
84
|
+
print(result)
|
|
85
|
+
|
|
86
|
+
# Print persistence confirmation
|
|
87
|
+
if args.persist:
|
|
88
|
+
project_slug = args.project_name.lower().replace(' ', '-') if args.project_name else "default"
|
|
89
|
+
print("\n" + "=" * 60)
|
|
90
|
+
print(f"✅ Design system persisted to design-system/{project_slug}/")
|
|
91
|
+
print(f" 📄 design-system/{project_slug}/MASTER.md (Global Source of Truth)")
|
|
92
|
+
if args.page:
|
|
93
|
+
page_filename = args.page.lower().replace(' ', '-')
|
|
94
|
+
print(f" 📄 design-system/{project_slug}/pages/{page_filename}.md (Page Overrides)")
|
|
95
|
+
print("")
|
|
96
|
+
print(f"📖 Usage: When building a page, check design-system/{project_slug}/pages/[page].md first.")
|
|
97
|
+
print(f" If exists, its rules override MASTER.md. Otherwise, use MASTER.md.")
|
|
98
|
+
print("=" * 60)
|
|
99
|
+
# Stack search
|
|
100
|
+
elif args.stack:
|
|
101
|
+
result = search_stack(args.query, args.stack, args.max_results)
|
|
102
|
+
if args.json:
|
|
103
|
+
import json
|
|
104
|
+
print(json.dumps(result, indent=2, ensure_ascii=False))
|
|
105
|
+
else:
|
|
106
|
+
print(format_output(result))
|
|
107
|
+
# Domain search
|
|
108
|
+
else:
|
|
109
|
+
result = search(args.query, args.domain, args.max_results)
|
|
110
|
+
if args.json:
|
|
111
|
+
import json
|
|
112
|
+
print(json.dumps(result, indent=2, ensure_ascii=False))
|
|
113
|
+
else:
|
|
114
|
+
print(format_output(result))
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
Visual language is a closed set of named roles with fixed values. What a component cannot name in that set is drift, not creativity.
|
|
2
|
+
|
|
3
|
+
## Name type by role, not by family
|
|
4
|
+
|
|
5
|
+
Decide the roles the product needs, bind values to each, and choose a family last.
|
|
6
|
+
|
|
7
|
+
- Cap at 7 roles: display, page title, section title, body, body-strong, meta, label. Add mono only for code.
|
|
8
|
+
- Every role fixes size, weight, line height, tracking, and wrapping behavior.
|
|
9
|
+
- Line height 1.5 for body, 1.2-1.3 for headings, 1.6 for CJK body copy.
|
|
10
|
+
- Use tabular numerals anywhere a number updates in place.
|
|
11
|
+
- Two families plus one mono. A third family requires a named exception.
|
|
12
|
+
|
|
13
|
+
## Bind color to semantic roles
|
|
14
|
+
|
|
15
|
+
Components consume roles. A numbered palette scale is a foundation value, never a component decision.
|
|
16
|
+
|
|
17
|
+
- Roles: canvas, surface, surface-raised, text, text-muted, border, border-strong, accent, accent-text, positive, warning, negative, focus, selection, overlay.
|
|
18
|
+
- Ship each role as a foreground/background pair, so contrast belongs to the pair.
|
|
19
|
+
- Ship a state ladder for interactive roles: default, hover, active, disabled.
|
|
20
|
+
- Raw scales fail: `gray-500` carries no meaning, cannot invert per theme, cannot be audited, and multiplies one-offs.
|
|
21
|
+
|
|
22
|
+
## State contrast as numbers
|
|
23
|
+
|
|
24
|
+
Contrast is measured per theme against the painted background, never judged by eye.
|
|
25
|
+
|
|
26
|
+
- Body and small text: 4.5:1 minimum.
|
|
27
|
+
- Text at 24 px, or 19 px at bold and above: 3:1 minimum.
|
|
28
|
+
- Meaningful icons, chart marks, and control boundaries: 3:1 minimum.
|
|
29
|
+
- Focus indicator: 2 px minimum thickness at 3:1 against both adjacent colors.
|
|
30
|
+
- Measure placeholder, muted metadata, and disabled labels explicitly; those fail first.
|
|
31
|
+
|
|
32
|
+
## Keep one icon system
|
|
33
|
+
|
|
34
|
+
One geometry, one weight, one metaphor vocabulary. An icon sharpens a label; it never replaces one.
|
|
35
|
+
|
|
36
|
+
- Single grid at 24 px, one stroke weight, one corner and terminal treatment.
|
|
37
|
+
- Name every meaningful icon, hide decorative ones from assistive technology, and never leave a destructive action on an icon alone.
|
|
38
|
+
- Metaphor risk: obsolete objects, hand gestures, animals, and local symbols shift meaning by locale. Verify each shipped locale.
|
|
39
|
+
|
|
40
|
+
## Treat imagery as tokens
|
|
41
|
+
|
|
42
|
+
Imagery inherits system values. Undecided imagery becomes layout instability at load.
|
|
43
|
+
|
|
44
|
+
- Aspect-ratio tokens, a declared focal point, and a reserved box before the asset lands.
|
|
45
|
+
- Never bake text into an image; it cannot translate, zoom, or be announced.
|
|
46
|
+
- Text over imagery needs a scrim that restores the measured contrast minimum.
|
|
47
|
+
|
|
48
|
+
## Run surface, depth, and elevation as one ladder
|
|
49
|
+
|
|
50
|
+
Surface color, border, and shadow move together. Three systems produce three mismatched hierarchies.
|
|
51
|
+
|
|
52
|
+
- At most three levels above canvas: raised, overlay, modal.
|
|
53
|
+
- Each level defines its surface color, border, and shadow in one entry.
|
|
54
|
+
- Never nest more than two surfaces; a third means the structure is wrong.
|
|
55
|
+
- Radius is a system value with two or three options, not a per-component choice.
|
|
56
|
+
|
|
57
|
+
## Pick the data display from the question
|
|
58
|
+
|
|
59
|
+
Choose the form from the question, then check that the encoding carries it.
|
|
60
|
+
|
|
61
|
+
- Comparing a few categories: bar, ordered by value unless the axis is time.
|
|
62
|
+
- Change over time: line, one unit per axis, no second axis without a stated reason.
|
|
63
|
+
- Part of a whole: stacked bar; a circular form only at two or three parts.
|
|
64
|
+
- One value against a target: large numeral with the target and a signed delta.
|
|
65
|
+
- Add a non-hue channel — position, label, or pattern — to every color encoding.
|
|
66
|
+
|
|
67
|
+
## Catch drift before review
|
|
68
|
+
|
|
69
|
+
Drift is mechanically detectable. Run these before the independent review pass.
|
|
70
|
+
|
|
71
|
+
1. Search components for raw hex, `rgb(`, and hardcoded px spacing. Expect zero hits.
|
|
72
|
+
2. Count type roles, elevation levels, and radius values against the direction card.
|
|
73
|
+
3. Re-measure contrast in light theme, dark theme, and forced colors.
|
|
74
|
+
4. Record every accepted deviation in `accepted_exceptions` with an owner and expiry.
|
|
75
|
+
|
|
76
|
+
## Failure patterns
|
|
77
|
+
|
|
78
|
+
Reject:
|
|
79
|
+
|
|
80
|
+
- A component importing a palette scale directly.
|
|
81
|
+
- Status carried by hue alone.
|
|
82
|
+
- Contrast reported as "looks fine" with no ratio.
|
|
83
|
+
- Two icon families on one surface.
|
|
84
|
+
- A pie chart with seven slices, or a chart where a table answers the question.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
A reference shows one state at one width, produced by a stack you do not control. Rebuild it as
|
|
2
|
+
real markup with real semantics; never close the gap with a screenshot.
|
|
3
|
+
|
|
4
|
+
## Claim classes
|
|
5
|
+
|
|
6
|
+
Label every claim about the reference and carry the labels into its `references` entry.
|
|
7
|
+
|
|
8
|
+
- Observed: measurable in the image — a pixel distance, a sampled hex value, a glyph.
|
|
9
|
+
- Inferred: a reading the image does not prove, such as a scale behind three gaps.
|
|
10
|
+
- Unknown: not depicted — hover, focus, error, empty, loading, any other width.
|
|
11
|
+
|
|
12
|
+
Only observed claims are criteria; inferred claims need an owner, unknowns are user questions.
|
|
13
|
+
|
|
14
|
+
## Measurement pass
|
|
15
|
+
|
|
16
|
+
Measure before writing code. Guessed numbers cost the most to unwind.
|
|
17
|
+
|
|
18
|
+
1. Record pixel dimensions and device scale; divide the scale out before quoting.
|
|
19
|
+
2. Sample color at flat interior pixels, never on an edge or in a gradient.
|
|
20
|
+
3. Measure cap height and baseline-to-baseline distance per size; derive line height.
|
|
21
|
+
4. Fit every gap, gutter, and outer margin to the smallest plausible scale.
|
|
22
|
+
|
|
23
|
+
## Semantic reconstruction
|
|
24
|
+
|
|
25
|
+
Build the structure the content deserves, then style it toward the reference.
|
|
26
|
+
|
|
27
|
+
- Headings become heading elements in outline order; large and bold is not an `h1`.
|
|
28
|
+
- A row of links becomes a navigation list, not a flex row of `div`s.
|
|
29
|
+
- Text baked into the image becomes real, selectable, translatable text.
|
|
30
|
+
- Contrast failures and suppressed focus in the reference are not reproduced.
|
|
31
|
+
|
|
32
|
+
## Asset decisions
|
|
33
|
+
|
|
34
|
+
Decide per asset and record the decision.
|
|
35
|
+
|
|
36
|
+
- Recreate: geometric shapes, rules, dividers, simple icons, gradients.
|
|
37
|
+
- Extract: only assets you are permitted to use, at source resolution.
|
|
38
|
+
- Substitute: a placeholder at identical dimensions, marked as a placeholder.
|
|
39
|
+
- Omit: decoration carrying no information; record it in `omissions`.
|
|
40
|
+
|
|
41
|
+
Never recreate a logo, wordmark, or licensed photograph. Substitute and raise a hard stop.
|
|
42
|
+
|
|
43
|
+
## Metric-compatible font fallback
|
|
44
|
+
|
|
45
|
+
When the reference face is unavailable or unlicensed, choose the fallback by metrics.
|
|
46
|
+
|
|
47
|
+
1. Match units-per-em, cap height, x-height, and default advance width.
|
|
48
|
+
2. Hold line boxes with `size-adjust`, `ascent-override`, `descent-override`.
|
|
49
|
+
3. Verify the longest real label still fits at the fallback's advance.
|
|
50
|
+
4. Record the substitution and its metric delta as an owned inferred claim.
|
|
51
|
+
|
|
52
|
+
## Responsive inference from one frame
|
|
53
|
+
|
|
54
|
+
One frame proves one width. State every adaptation as an assumption until confirmed.
|
|
55
|
+
|
|
56
|
+
- Classify each region: fixed rail, fluid column, or centered maximum width.
|
|
57
|
+
- Break where your measured content breaks, not at the reference's width.
|
|
58
|
+
- Name what wraps, stacks, collapses, or scrolls below that width.
|
|
59
|
+
- Check the narrowest supported width and one width above each break.
|
|
60
|
+
|
|
61
|
+
## Iteration loop
|
|
62
|
+
|
|
63
|
+
Iterate on measured deltas, never on impressions.
|
|
64
|
+
|
|
65
|
+
1. Capture your build at the reference's exact dimensions and device scale.
|
|
66
|
+
2. Compare region by region in order: structure, spacing, type, then color.
|
|
67
|
+
3. Fix the single largest measured delta and recapture.
|
|
68
|
+
4. Stop after three passes that do not reduce total delta; report the remainder.
|
|
69
|
+
|
|
70
|
+
## Fidelity report
|
|
71
|
+
|
|
72
|
+
Report per region so no reviewer has to re-measure.
|
|
73
|
+
|
|
74
|
+
- Region name, measured delta per axis, both artifact paths compared.
|
|
75
|
+
- Every inferred claim with its owner, every unknown state still awaiting input.
|
|
76
|
+
- Substituted or omitted assets, with the reason.
|
|
77
|
+
- Verdict `PASS`, `FAIL`, or `BLOCKED`, handed to the independent review pass bound to the design
|
|
78
|
+
contract hash.
|
|
79
|
+
|
|
80
|
+
## The "pixel perfect" gate
|
|
81
|
+
|
|
82
|
+
Use the phrase only when all five hold. Otherwise state measured fidelity as a number.
|
|
83
|
+
|
|
84
|
+
1. Both captures share identical dimensions and device scale.
|
|
85
|
+
2. Every observed claim is checked, with zero unexplained delta.
|
|
86
|
+
3. No inferred claim is unowned and no unknown state unanswered.
|
|
87
|
+
4. The reference face is licensed and loaded, not a metric fallback.
|
|
88
|
+
5. The comparison covers every declared state, not one frame.
|
|
89
|
+
|
|
90
|
+
## Failure patterns
|
|
91
|
+
|
|
92
|
+
Reject:
|
|
93
|
+
|
|
94
|
+
- A screenshot used as a background, an overlay, or filler content.
|
|
95
|
+
- A spacing value chosen because it "looks right".
|
|
96
|
+
- A reproduced logo or licensed image with no permission recorded.
|
|
97
|
+
- "Pixel perfect" asserted from one width and one state.
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "litfamily.design-contract/v1alpha1",
|
|
4
|
+
"title": "LitFamily Design Contract v1alpha1",
|
|
5
|
+
"description": "Twelve-key finite design contract. This document mirrors the rules that scripts/design-contract-rules.mjs executes; typed identifier prefixes, referential integrity, auth safety coupling, global identifier uniqueness, strict UTC timestamps, duplicate-key rejection, and canonical form are enforced only in that runtime.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema_id", "contract_id", "source_hash", "intent", "direction", "inventory",
|
|
10
|
+
"accessibility", "localization", "performance", "evidence_policy", "omissions",
|
|
11
|
+
"accepted_exceptions"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"schema_id": { "const": "litfamily.design-contract/v1alpha1" },
|
|
15
|
+
"contract_id": { "type": "string", "pattern": "^contract:[a-z0-9][a-z0-9._/-]*$" },
|
|
16
|
+
"source_hash": { "$ref": "#/$defs/hash" },
|
|
17
|
+
"intent": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"additionalProperties": false,
|
|
20
|
+
"required": ["audiences", "tasks", "qualities", "constraints", "non_goals"],
|
|
21
|
+
"properties": {
|
|
22
|
+
"audiences": { "$ref": "#/$defs/requiredPhrases" },
|
|
23
|
+
"tasks": { "$ref": "#/$defs/requiredPhrases" },
|
|
24
|
+
"qualities": { "$ref": "#/$defs/requiredPhrases" },
|
|
25
|
+
"constraints": { "$ref": "#/$defs/optionalPhrases" },
|
|
26
|
+
"non_goals": { "$ref": "#/$defs/optionalPhrases" }
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"direction": {
|
|
30
|
+
"type": "object",
|
|
31
|
+
"additionalProperties": false,
|
|
32
|
+
"required": ["name", "principles", "token_strategy", "voice"],
|
|
33
|
+
"properties": {
|
|
34
|
+
"name": { "$ref": "#/$defs/text" },
|
|
35
|
+
"principles": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"minItems": 3,
|
|
38
|
+
"maxItems": 7,
|
|
39
|
+
"uniqueItems": true,
|
|
40
|
+
"items": { "$ref": "#/$defs/text" }
|
|
41
|
+
},
|
|
42
|
+
"token_strategy": { "enum": ["reuse", "extend", "create"] },
|
|
43
|
+
"voice": { "$ref": "#/$defs/text" }
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"inventory": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"additionalProperties": false,
|
|
49
|
+
"required": [
|
|
50
|
+
"routes", "regions", "components", "interactions", "states", "viewports",
|
|
51
|
+
"references", "authenticated_surfaces"
|
|
52
|
+
],
|
|
53
|
+
"properties": {
|
|
54
|
+
"routes": {
|
|
55
|
+
"type": "array",
|
|
56
|
+
"minItems": 1,
|
|
57
|
+
"maxItems": 128,
|
|
58
|
+
"items": { "$ref": "#/$defs/route" }
|
|
59
|
+
},
|
|
60
|
+
"regions": {
|
|
61
|
+
"type": "array",
|
|
62
|
+
"minItems": 1,
|
|
63
|
+
"maxItems": 256,
|
|
64
|
+
"items": { "$ref": "#/$defs/region" }
|
|
65
|
+
},
|
|
66
|
+
"components": {
|
|
67
|
+
"type": "array",
|
|
68
|
+
"minItems": 1,
|
|
69
|
+
"maxItems": 512,
|
|
70
|
+
"items": { "$ref": "#/$defs/component" }
|
|
71
|
+
},
|
|
72
|
+
"interactions": {
|
|
73
|
+
"type": "array",
|
|
74
|
+
"minItems": 1,
|
|
75
|
+
"maxItems": 256,
|
|
76
|
+
"items": { "$ref": "#/$defs/interaction" }
|
|
77
|
+
},
|
|
78
|
+
"states": {
|
|
79
|
+
"type": "array",
|
|
80
|
+
"maxItems": 512,
|
|
81
|
+
"items": { "$ref": "#/$defs/state" }
|
|
82
|
+
},
|
|
83
|
+
"viewports": {
|
|
84
|
+
"type": "array",
|
|
85
|
+
"maxItems": 32,
|
|
86
|
+
"items": { "$ref": "#/$defs/viewport" }
|
|
87
|
+
},
|
|
88
|
+
"references": {
|
|
89
|
+
"type": "array",
|
|
90
|
+
"maxItems": 64,
|
|
91
|
+
"items": { "$ref": "#/$defs/reference" }
|
|
92
|
+
},
|
|
93
|
+
"authenticated_surfaces": {
|
|
94
|
+
"type": "array",
|
|
95
|
+
"maxItems": 128,
|
|
96
|
+
"items": { "$ref": "#/$defs/authenticatedSurface" }
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"accessibility": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"additionalProperties": false,
|
|
103
|
+
"required": [
|
|
104
|
+
"target", "keyboard", "screen_reader", "reduced_motion", "forced_colors",
|
|
105
|
+
"zoom_percent"
|
|
106
|
+
],
|
|
107
|
+
"properties": {
|
|
108
|
+
"target": { "const": "WCAG 2.2 AA" },
|
|
109
|
+
"keyboard": { "type": "boolean" },
|
|
110
|
+
"screen_reader": { "type": "boolean" },
|
|
111
|
+
"reduced_motion": { "type": "boolean" },
|
|
112
|
+
"forced_colors": { "type": "boolean" },
|
|
113
|
+
"zoom_percent": { "type": "integer", "minimum": 200, "maximum": 400 }
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"localization": {
|
|
117
|
+
"type": "object",
|
|
118
|
+
"additionalProperties": false,
|
|
119
|
+
"required": [
|
|
120
|
+
"locales", "text_expansion_percent", "cjk_line_break_review",
|
|
121
|
+
"font_fallback_review", "ime_review", "rtl_review"
|
|
122
|
+
],
|
|
123
|
+
"properties": {
|
|
124
|
+
"locales": {
|
|
125
|
+
"type": "array",
|
|
126
|
+
"minItems": 1,
|
|
127
|
+
"maxItems": 32,
|
|
128
|
+
"uniqueItems": true,
|
|
129
|
+
"items": { "type": "string", "pattern": "^[a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-(?:[A-Z]{2}|[0-9]{3}))?$" }
|
|
130
|
+
},
|
|
131
|
+
"text_expansion_percent": { "type": "integer", "minimum": 0, "maximum": 300 },
|
|
132
|
+
"cjk_line_break_review": { "type": "boolean" },
|
|
133
|
+
"font_fallback_review": { "type": "boolean" },
|
|
134
|
+
"ime_review": { "type": "boolean" },
|
|
135
|
+
"rtl_review": { "type": "boolean" }
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
"performance": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"additionalProperties": false,
|
|
141
|
+
"required": ["lcp_ms", "cls", "inp_ms", "initial_js_kb", "initial_css_kb"],
|
|
142
|
+
"properties": {
|
|
143
|
+
"lcp_ms": { "type": "integer", "minimum": 1, "maximum": 60000 },
|
|
144
|
+
"cls": { "type": "number", "minimum": 0, "maximum": 1 },
|
|
145
|
+
"inp_ms": { "type": "integer", "minimum": 1, "maximum": 60000 },
|
|
146
|
+
"initial_js_kb": { "type": "integer", "minimum": 0, "maximum": 1048576 },
|
|
147
|
+
"initial_css_kb": { "type": "integer", "minimum": 0, "maximum": 1048576 }
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"evidence_policy": {
|
|
151
|
+
"type": "object",
|
|
152
|
+
"additionalProperties": false,
|
|
153
|
+
"required": ["independent_review_required", "required_channels", "cleanup_required"],
|
|
154
|
+
"properties": {
|
|
155
|
+
"independent_review_required": { "type": "boolean" },
|
|
156
|
+
"required_channels": {
|
|
157
|
+
"type": "array",
|
|
158
|
+
"minItems": 1,
|
|
159
|
+
"maxItems": 7,
|
|
160
|
+
"uniqueItems": true,
|
|
161
|
+
"items": {
|
|
162
|
+
"enum": [
|
|
163
|
+
"tests", "browser", "keyboard", "accessibility-tree", "screen-reader",
|
|
164
|
+
"performance", "localization"
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"cleanup_required": { "type": "boolean" }
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"omissions": { "$ref": "#/$defs/scopeRecords" },
|
|
172
|
+
"accepted_exceptions": { "$ref": "#/$defs/scopeRecords" }
|
|
173
|
+
},
|
|
174
|
+
"$defs": {
|
|
175
|
+
"hash": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
|
|
176
|
+
"text": { "type": "string", "minLength": 1, "maxLength": 512, "pattern": "^\\S(?:.*\\S)?$" },
|
|
177
|
+
"timestamp": {
|
|
178
|
+
"type": "string",
|
|
179
|
+
"format": "date-time",
|
|
180
|
+
"pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"
|
|
181
|
+
},
|
|
182
|
+
"requiredPhrases": {
|
|
183
|
+
"type": "array",
|
|
184
|
+
"minItems": 1,
|
|
185
|
+
"maxItems": 32,
|
|
186
|
+
"uniqueItems": true,
|
|
187
|
+
"items": { "$ref": "#/$defs/text" }
|
|
188
|
+
},
|
|
189
|
+
"optionalPhrases": {
|
|
190
|
+
"type": "array",
|
|
191
|
+
"maxItems": 32,
|
|
192
|
+
"uniqueItems": true,
|
|
193
|
+
"items": { "$ref": "#/$defs/text" }
|
|
194
|
+
},
|
|
195
|
+
"route": {
|
|
196
|
+
"type": "object",
|
|
197
|
+
"additionalProperties": false,
|
|
198
|
+
"required": ["id", "path", "primary", "auth_required"],
|
|
199
|
+
"properties": {
|
|
200
|
+
"id": { "type": "string", "pattern": "^route:[a-z0-9][a-z0-9._/-]*$" },
|
|
201
|
+
"path": { "$ref": "#/$defs/text" },
|
|
202
|
+
"primary": { "type": "boolean" },
|
|
203
|
+
"auth_required": { "type": "boolean" }
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
"region": {
|
|
207
|
+
"type": "object",
|
|
208
|
+
"additionalProperties": false,
|
|
209
|
+
"required": ["id", "route_id", "purpose"],
|
|
210
|
+
"properties": {
|
|
211
|
+
"id": { "type": "string", "pattern": "^region:[a-z0-9][a-z0-9._/-]*$" },
|
|
212
|
+
"route_id": { "type": "string", "pattern": "^route:[a-z0-9][a-z0-9._/-]*$" },
|
|
213
|
+
"purpose": { "$ref": "#/$defs/text" }
|
|
214
|
+
}
|
|
215
|
+
},
|
|
216
|
+
"component": {
|
|
217
|
+
"type": "object",
|
|
218
|
+
"additionalProperties": false,
|
|
219
|
+
"required": ["id", "region_id", "role"],
|
|
220
|
+
"properties": {
|
|
221
|
+
"id": { "type": "string", "pattern": "^component:[a-z0-9][a-z0-9._/-]*$" },
|
|
222
|
+
"region_id": { "type": "string", "pattern": "^region:[a-z0-9][a-z0-9._/-]*$" },
|
|
223
|
+
"role": { "$ref": "#/$defs/text" }
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
"interaction": {
|
|
227
|
+
"type": "object",
|
|
228
|
+
"additionalProperties": false,
|
|
229
|
+
"required": ["id", "route_id", "critical", "input_modes"],
|
|
230
|
+
"properties": {
|
|
231
|
+
"id": { "type": "string", "pattern": "^interaction:[a-z0-9][a-z0-9._/-]*$" },
|
|
232
|
+
"route_id": { "type": "string", "pattern": "^route:[a-z0-9][a-z0-9._/-]*$" },
|
|
233
|
+
"critical": { "type": "boolean" },
|
|
234
|
+
"input_modes": {
|
|
235
|
+
"type": "array",
|
|
236
|
+
"minItems": 1,
|
|
237
|
+
"maxItems": 5,
|
|
238
|
+
"uniqueItems": true,
|
|
239
|
+
"items": { "enum": ["keyboard", "pointer", "touch", "voice", "switch"] }
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
"state": {
|
|
244
|
+
"type": "object",
|
|
245
|
+
"additionalProperties": false,
|
|
246
|
+
"required": ["id", "route_id", "kind"],
|
|
247
|
+
"properties": {
|
|
248
|
+
"id": { "type": "string", "pattern": "^state:[a-z0-9][a-z0-9._/-]*$" },
|
|
249
|
+
"route_id": { "type": "string", "pattern": "^route:[a-z0-9][a-z0-9._/-]*$" },
|
|
250
|
+
"kind": {
|
|
251
|
+
"enum": [
|
|
252
|
+
"loading", "empty", "error", "success", "disabled", "permission", "offline",
|
|
253
|
+
"ready"
|
|
254
|
+
]
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
},
|
|
258
|
+
"viewport": {
|
|
259
|
+
"type": "object",
|
|
260
|
+
"additionalProperties": false,
|
|
261
|
+
"required": ["id", "category", "width_px", "height_px"],
|
|
262
|
+
"properties": {
|
|
263
|
+
"id": { "type": "string", "pattern": "^viewport:[a-z0-9][a-z0-9._/-]*$" },
|
|
264
|
+
"category": { "enum": ["compact", "medium", "expanded"] },
|
|
265
|
+
"width_px": { "type": "integer", "minimum": 240, "maximum": 7680 },
|
|
266
|
+
"height_px": { "type": "integer", "minimum": 240, "maximum": 4320 }
|
|
267
|
+
}
|
|
268
|
+
},
|
|
269
|
+
"reference": {
|
|
270
|
+
"type": "object",
|
|
271
|
+
"additionalProperties": false,
|
|
272
|
+
"required": ["id", "kind", "sha256", "provenance"],
|
|
273
|
+
"properties": {
|
|
274
|
+
"id": { "type": "string", "pattern": "^reference:[a-z0-9][a-z0-9._/-]*$" },
|
|
275
|
+
"kind": { "enum": ["user-provided", "repo-local", "generated", "measured"] },
|
|
276
|
+
"sha256": { "$ref": "#/$defs/hash" },
|
|
277
|
+
"provenance": { "$ref": "#/$defs/text" }
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
"authenticatedSurface": {
|
|
281
|
+
"type": "object",
|
|
282
|
+
"additionalProperties": false,
|
|
283
|
+
"required": ["route_id", "safe_test_account"],
|
|
284
|
+
"properties": {
|
|
285
|
+
"route_id": { "type": "string", "pattern": "^route:[a-z0-9][a-z0-9._/-]*$" },
|
|
286
|
+
"safe_test_account": { "const": true }
|
|
287
|
+
}
|
|
288
|
+
},
|
|
289
|
+
"scopeRecords": {
|
|
290
|
+
"type": "array",
|
|
291
|
+
"maxItems": 64,
|
|
292
|
+
"items": { "$ref": "#/$defs/scopeRecord" }
|
|
293
|
+
},
|
|
294
|
+
"scopeRecord": {
|
|
295
|
+
"type": "object",
|
|
296
|
+
"additionalProperties": false,
|
|
297
|
+
"required": ["id", "reason", "owner"],
|
|
298
|
+
"properties": {
|
|
299
|
+
"id": { "type": "string", "pattern": "^[a-z][a-z0-9-]*:[a-z0-9][a-z0-9._/-]*$" },
|
|
300
|
+
"reason": { "$ref": "#/$defs/text" },
|
|
301
|
+
"owner": { "$ref": "#/$defs/text" },
|
|
302
|
+
"expires_at": { "$ref": "#/$defs/timestamp" }
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|