claudecode-omc 5.6.5 → 5.6.7
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/.local/commands/code-review.md +416 -0
- package/.local/commands/pr.md +250 -0
- package/.local/commands/prp-pr.md +244 -0
- package/.local/guidelines/CLAUDE.md +47 -0
- package/.local/skills/h5-to-swiftui/SKILL.md +201 -0
- package/.local/skills/h5-to-swiftui/assets/calibration/README.md +176 -0
- package/.local/skills/h5-to-swiftui/assets/calibration/h5-twin/index.html +52 -0
- package/.local/skills/h5-to-swiftui/assets/calibration/h5-twin/style.css +133 -0
- package/.local/skills/h5-to-swiftui/assets/calibration/swiftui-twin/Package.swift +26 -0
- package/.local/skills/h5-to-swiftui/assets/calibration/swiftui-twin/Sources/CalibrationScreen/CalibrationScreen.swift +142 -0
- package/.local/skills/h5-to-swiftui/assets/calibration/swiftui-twin-divergent/Package.swift +32 -0
- package/.local/skills/h5-to-swiftui/assets/calibration/swiftui-twin-divergent/Sources/CalibrationScreenDivergent/CalibrationScreenDivergent.swift +122 -0
- package/.local/skills/h5-to-swiftui/assets/calibration/tokens.json +42 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/index.html +14 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/package.json +20 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/public/api/articles/001.json +96 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/public/api/articles/index.json +89 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/App.jsx +22 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/App.module.css +11 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/ArticleCard.jsx +53 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/ArticleCard.module.css +139 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/NavBar.jsx +37 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/NavBar.module.css +72 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/TagCloud.jsx +30 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/TagCloud.module.css +50 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/TrendChart.jsx +159 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/components/TrendChart.module.css +21 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/main.jsx +12 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/screens/ArticleScreen.jsx +182 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/screens/ArticleScreen.module.css +294 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/screens/FeedScreen.jsx +147 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/screens/FeedScreen.module.css +161 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/styles/global.css +50 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/src/styles/tokens.css +103 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-react/vite.config.js +6 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/data/tasks.js +67 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/index.html +26 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/router.js +73 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/screens/detail.js +164 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/screens/home.js +53 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/screens/list.js +87 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/styles/app.css +342 -0
- package/.local/skills/h5-to-swiftui/assets/sample-h5-vanilla/styles/tokens.css +68 -0
- package/.local/skills/h5-to-swiftui/references/css-to-swiftui-map.md +205 -0
- package/.local/skills/h5-to-swiftui/references/design-token-extraction.md +209 -0
- package/.local/skills/h5-to-swiftui/references/high-risk-triage.md +209 -0
- package/.local/skills/h5-to-swiftui/references/render-equivalence-calibration.md +193 -0
- package/.local/skills/h5-to-swiftui/references/stack-detection.md +160 -0
- package/.local/skills/h5-to-swiftui/references/visual-diff-loop-protocol.md +365 -0
- package/.local/skills/h5-to-swiftui/scripts/_calib-consts.mjs +150 -0
- package/.local/skills/h5-to-swiftui/scripts/_imglib.mjs +547 -0
- package/.local/skills/h5-to-swiftui/scripts/_provenance.mjs +123 -0
- package/.local/skills/h5-to-swiftui/scripts/calibrate-render.mjs +625 -0
- package/.local/skills/h5-to-swiftui/scripts/capture-reference.mjs +386 -0
- package/.local/skills/h5-to-swiftui/scripts/detect-stack.mjs +305 -0
- package/.local/skills/h5-to-swiftui/scripts/evaluate-convergence.mjs +1093 -0
- package/.local/skills/h5-to-swiftui/scripts/extract-tokens.mjs +600 -0
- package/.local/skills/h5-to-swiftui/scripts/mark-overlay.mjs +379 -0
- package/.local/skills/h5-to-swiftui/scripts/pixel-diff.mjs +530 -0
- package/.local/skills/h5-to-swiftui/scripts/sim-screenshot.sh +544 -0
- package/bundled/manifest.json +4 -4
- package/bundled/upstream/anthropic-skills/skills/algorithmic-art/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/brand-guidelines/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/canvas-design/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/SKILL.md +120 -58
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/examples.md +9 -9
- package/bundled/upstream/anthropic-skills/skills/claude-api/curl/managed-agents.md +336 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/go/managed-agents/README.md +561 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/claude-api.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/java/managed-agents/README.md +442 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/claude-api.md +10 -10
- package/bundled/upstream/anthropic-skills/skills/claude-api/php/managed-agents/README.md +435 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/README.md +16 -16
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/batches.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/files-api.md +3 -3
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/streaming.md +7 -7
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/claude-api/tool-use.md +19 -19
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/managed-agents/README.md +332 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/claude-api.md +4 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/ruby/managed-agents/README.md +389 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/agent-design.md +101 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/error-codes.md +11 -4
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/live-sources.md +60 -48
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-api-reference.md +372 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-client-patterns.md +209 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-core.md +220 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-environments.md +211 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-events.md +195 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-memory.md +197 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-multiagent.md +99 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-onboarding.md +114 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-outcomes.md +106 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-overview.md +67 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-tools.md +315 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/managed-agents-webhooks.md +110 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/model-migration.md +779 -0
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/models.md +16 -14
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/prompt-caching.md +45 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/shared/tool-use-concepts.md +28 -6
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/README.md +15 -15
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/batches.md +2 -2
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/files-api.md +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/streaming.md +5 -5
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/claude-api/tool-use.md +15 -15
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/managed-agents/README.md +359 -0
- package/bundled/upstream/anthropic-skills/skills/internal-comms/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/mcp-builder/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/skill-creator/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/slack-gif-creator/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/theme-factory/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/web-artifacts-builder/LICENSE.txt +1 -1
- package/bundled/upstream/anthropic-skills/skills/webapp-testing/LICENSE.txt +1 -1
- package/bundled/upstream/ecc/.omc-source/bundle.json +2 -3
- package/bundled/upstream/ecc/.omc-source/manifests/.claude-plugin/marketplace.json +4 -4
- package/bundled/upstream/ecc/agents/a11y-architect.md +10 -2
- package/bundled/upstream/ecc/agents/architect.md +9 -0
- package/bundled/upstream/ecc/agents/build-error-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/chief-of-staff.md +9 -0
- package/bundled/upstream/ecc/agents/code-architect.md +9 -0
- package/bundled/upstream/ecc/agents/code-explorer.md +10 -1
- package/bundled/upstream/ecc/agents/code-reviewer.md +87 -1
- package/bundled/upstream/ecc/agents/code-simplifier.md +9 -0
- package/bundled/upstream/ecc/agents/comment-analyzer.md +10 -1
- package/bundled/upstream/ecc/agents/conversation-analyzer.md +9 -0
- package/bundled/upstream/ecc/agents/cpp-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/cpp-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/csharp-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/dart-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/database-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/django-build-resolver.md +252 -0
- package/bundled/upstream/ecc/agents/django-reviewer.md +169 -0
- package/bundled/upstream/ecc/agents/doc-updater.md +9 -0
- package/bundled/upstream/ecc/agents/docs-lookup.md +9 -0
- package/bundled/upstream/ecc/agents/e2e-runner.md +9 -0
- package/bundled/upstream/ecc/agents/fastapi-reviewer.md +79 -0
- package/bundled/upstream/ecc/agents/flutter-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/fsharp-reviewer.md +109 -0
- package/bundled/upstream/ecc/agents/gan-evaluator.md +9 -0
- package/bundled/upstream/ecc/agents/gan-generator.md +9 -0
- package/bundled/upstream/ecc/agents/gan-planner.md +9 -0
- package/bundled/upstream/ecc/agents/go-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/go-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/harmonyos-app-resolver.md +182 -0
- package/bundled/upstream/ecc/agents/harness-optimizer.md +9 -0
- package/bundled/upstream/ecc/agents/healthcare-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/homelab-architect.md +107 -0
- package/bundled/upstream/ecc/agents/java-build-resolver.md +133 -11
- package/bundled/upstream/ecc/agents/java-reviewer.md +130 -32
- package/bundled/upstream/ecc/agents/kotlin-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/kotlin-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/loop-operator.md +9 -0
- package/bundled/upstream/ecc/agents/mle-reviewer.md +162 -0
- package/bundled/upstream/ecc/agents/network-architect.md +106 -0
- package/bundled/upstream/ecc/agents/network-config-reviewer.md +106 -0
- package/bundled/upstream/ecc/agents/network-troubleshooter.md +128 -0
- package/bundled/upstream/ecc/agents/opensource-forker.md +9 -0
- package/bundled/upstream/ecc/agents/opensource-packager.md +9 -0
- package/bundled/upstream/ecc/agents/opensource-sanitizer.md +9 -0
- package/bundled/upstream/ecc/agents/performance-optimizer.md +9 -0
- package/bundled/upstream/ecc/agents/planner.md +9 -0
- package/bundled/upstream/ecc/agents/pr-test-analyzer.md +9 -0
- package/bundled/upstream/ecc/agents/python-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/pytorch-build-resolver.md +12 -3
- package/bundled/upstream/ecc/agents/refactor-cleaner.md +9 -0
- package/bundled/upstream/ecc/agents/rust-build-resolver.md +9 -0
- package/bundled/upstream/ecc/agents/rust-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/security-reviewer.md +9 -0
- package/bundled/upstream/ecc/agents/seo-specialist.md +10 -1
- package/bundled/upstream/ecc/agents/silent-failure-hunter.md +9 -0
- package/bundled/upstream/ecc/agents/swift-build-resolver.md +170 -0
- package/bundled/upstream/ecc/agents/swift-reviewer.md +116 -0
- package/bundled/upstream/ecc/agents/tdd-guide.md +9 -0
- package/bundled/upstream/ecc/agents/type-design-analyzer.md +10 -1
- package/bundled/upstream/ecc/agents/typescript-reviewer.md +9 -0
- package/bundled/upstream/ecc/commands/auto-update.md +28 -0
- package/bundled/upstream/ecc/commands/build-fix.md +4 -0
- package/bundled/upstream/ecc/commands/checkpoint.md +4 -0
- package/bundled/upstream/ecc/commands/code-review.md +3 -3
- package/bundled/upstream/ecc/commands/cost-report.md +107 -0
- package/bundled/upstream/ecc/commands/cpp-build.md +1 -1
- package/bundled/upstream/ecc/commands/cpp-test.md +1 -1
- package/bundled/upstream/ecc/commands/ecc-guide.md +93 -0
- package/bundled/upstream/ecc/commands/fastapi-review.md +39 -0
- package/bundled/upstream/ecc/commands/flutter-build.md +1 -1
- package/bundled/upstream/ecc/commands/flutter-test.md +1 -1
- package/bundled/upstream/ecc/commands/gan-build.md +4 -0
- package/bundled/upstream/ecc/commands/gan-design.md +4 -0
- package/bundled/upstream/ecc/commands/go-build.md +1 -1
- package/bundled/upstream/ecc/commands/go-test.md +1 -1
- package/bundled/upstream/ecc/commands/harness-audit.md +4 -0
- package/bundled/upstream/ecc/commands/jira.md +2 -2
- package/bundled/upstream/ecc/commands/kotlin-build.md +1 -1
- package/bundled/upstream/ecc/commands/kotlin-test.md +1 -1
- package/bundled/upstream/ecc/commands/learn.md +4 -0
- package/bundled/upstream/ecc/commands/loop-start.md +4 -0
- package/bundled/upstream/ecc/commands/loop-status.md +54 -1
- package/bundled/upstream/ecc/commands/model-route.md +4 -0
- package/bundled/upstream/ecc/commands/multi-backend.md +4 -0
- package/bundled/upstream/ecc/commands/multi-execute.md +4 -0
- package/bundled/upstream/ecc/commands/multi-frontend.md +4 -0
- package/bundled/upstream/ecc/commands/multi-plan.md +4 -0
- package/bundled/upstream/ecc/commands/multi-workflow.md +4 -0
- package/bundled/upstream/ecc/commands/plan-prd.md +160 -0
- package/bundled/upstream/ecc/commands/plan.md +96 -13
- package/bundled/upstream/ecc/commands/pm2.md +4 -0
- package/bundled/upstream/ecc/commands/pr.md +184 -0
- package/bundled/upstream/ecc/commands/project-init.md +86 -0
- package/bundled/upstream/ecc/commands/python-review.md +1 -1
- package/bundled/upstream/ecc/commands/quality-gate.md +4 -0
- package/bundled/upstream/ecc/commands/refactor-clean.md +4 -0
- package/bundled/upstream/ecc/commands/rust-build.md +1 -1
- package/bundled/upstream/ecc/commands/rust-test.md +1 -1
- package/bundled/upstream/ecc/commands/security-scan.md +92 -0
- package/bundled/upstream/ecc/commands/sessions.md +6 -6
- package/bundled/upstream/ecc/commands/skill-health.md +3 -3
- package/bundled/upstream/ecc/commands/test-coverage.md +4 -0
- package/bundled/upstream/ecc/commands/update-codemaps.md +4 -0
- package/bundled/upstream/ecc/commands/update-docs.md +4 -0
- package/bundled/upstream/ecc/skills/accessibility/SKILL.md +1 -1
- package/bundled/upstream/ecc/skills/agent-architecture-audit/SKILL.md +256 -0
- package/bundled/upstream/ecc/skills/agent-payment-x402/SKILL.md +49 -3
- package/bundled/upstream/ecc/skills/agentic-os/SKILL.md +387 -0
- package/bundled/upstream/ecc/skills/angular-developer/SKILL.md +154 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/angular-animations.md +160 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/angular-aria.md +410 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/cli.md +86 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/component-harnesses.md +59 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/component-styling.md +91 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/components.md +117 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/creating-services.md +97 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/data-resolvers.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/define-routes.md +67 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/defining-providers.md +72 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/di-fundamentals.md +120 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/e2e-testing.md +56 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/effects.md +83 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/hierarchical-injectors.md +43 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/host-elements.md +80 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/injection-context.md +63 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/inputs.md +101 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/linked-signal.md +59 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/loading-strategies.md +61 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/mcp.md +108 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/navigate-to-routes.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/outputs.md +86 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/reactive-forms.md +122 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/rendering-strategies.md +44 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/resource.md +77 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/route-animations.md +56 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/route-guards.md +52 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/router-lifecycle.md +45 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/router-testing.md +87 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/signal-forms.md +795 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/signals-overview.md +94 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/tailwind-css.md +69 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/template-driven-forms.md +114 -0
- package/bundled/upstream/ecc/skills/angular-developer/references/testing-fundamentals.md +65 -0
- package/bundled/upstream/ecc/skills/autonomous-agent-harness/SKILL.md +6 -0
- package/bundled/upstream/ecc/skills/backend-patterns/SKILL.md +8 -45
- package/bundled/upstream/ecc/skills/cisco-ios-patterns/SKILL.md +163 -0
- package/bundled/upstream/ecc/skills/configure-ecc/SKILL.md +31 -14
- package/bundled/upstream/ecc/skills/continuous-learning/SKILL.md +10 -2
- package/bundled/upstream/ecc/skills/continuous-learning-v2/SKILL.md +19 -5
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +44 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/observer.md +4 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/agents/start-observer.sh +5 -1
- package/bundled/upstream/ecc/skills/continuous-learning-v2/hooks/observe.sh +21 -5
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +58 -13
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +97 -4
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
- package/bundled/upstream/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +34 -0
- package/bundled/upstream/ecc/skills/cost-tracking/SKILL.md +147 -0
- package/bundled/upstream/ecc/skills/deep-research/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/defi-amm-security/SKILL.md +6 -0
- package/bundled/upstream/ecc/skills/django-celery/SKILL.md +457 -0
- package/bundled/upstream/ecc/skills/ecc-guide/SKILL.md +189 -0
- package/bundled/upstream/ecc/skills/error-handling/SKILL.md +376 -0
- package/bundled/upstream/ecc/skills/exa-search/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/fal-ai-media/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/fastapi-patterns/SKILL.md +327 -0
- package/bundled/upstream/ecc/skills/flox-environments/SKILL.md +496 -0
- package/bundled/upstream/ecc/skills/frontend-design-direction/SKILL.md +92 -0
- package/bundled/upstream/ecc/skills/frontend-slides/animation-patterns.md +122 -0
- package/bundled/upstream/ecc/skills/frontend-slides/html-template.md +419 -0
- package/bundled/upstream/ecc/skills/frontend-slides/scripts/export-pdf.sh +418 -0
- package/bundled/upstream/ecc/skills/frontend-slides/scripts/extract-pptx.py +96 -0
- package/bundled/upstream/ecc/skills/frontend-slides/viewport-base.css +153 -0
- package/bundled/upstream/ecc/skills/fsharp-testing/SKILL.md +280 -0
- package/bundled/upstream/ecc/skills/gateguard/SKILL.md +4 -0
- package/bundled/upstream/ecc/skills/hermes-imports/SKILL.md +88 -0
- package/bundled/upstream/ecc/skills/homelab-network-readiness/SKILL.md +169 -0
- package/bundled/upstream/ecc/skills/homelab-network-setup/SKILL.md +129 -0
- package/bundled/upstream/ecc/skills/homelab-pihole-dns/SKILL.md +274 -0
- package/bundled/upstream/ecc/skills/homelab-vlan-segmentation/SKILL.md +311 -0
- package/bundled/upstream/ecc/skills/homelab-wireguard-vpn/SKILL.md +305 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/SKILL.md +157 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
- package/bundled/upstream/ecc/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
- package/bundled/upstream/ecc/skills/java-coding-standards/SKILL.md +241 -5
- package/bundled/upstream/ecc/skills/make-interfaces-feel-better/SKILL.md +151 -0
- package/bundled/upstream/ecc/skills/mle-workflow/SKILL.md +346 -0
- package/bundled/upstream/ecc/skills/motion-advanced/SKILL.md +596 -0
- package/bundled/upstream/ecc/skills/motion-foundations/SKILL.md +299 -0
- package/bundled/upstream/ecc/skills/motion-patterns/SKILL.md +435 -0
- package/bundled/upstream/ecc/skills/motion-ui/SKILL.md +575 -0
- package/bundled/upstream/ecc/skills/mysql-patterns/SKILL.md +412 -0
- package/bundled/upstream/ecc/skills/netmiko-ssh-automation/SKILL.md +173 -0
- package/bundled/upstream/ecc/skills/network-bgp-diagnostics/SKILL.md +167 -0
- package/bundled/upstream/ecc/skills/network-config-validation/SKILL.md +210 -0
- package/bundled/upstream/ecc/skills/network-interface-health/SKILL.md +152 -0
- package/bundled/upstream/ecc/skills/openclaw-persona-forge/SKILL.md +1 -9
- package/bundled/upstream/ecc/skills/plan-orchestrate/SKILL.md +262 -0
- package/bundled/upstream/ecc/skills/prisma-patterns/SKILL.md +371 -0
- package/bundled/upstream/ecc/skills/production-audit/SKILL.md +206 -0
- package/bundled/upstream/ecc/skills/prompt-optimizer/SKILL.md +24 -400
- package/bundled/upstream/ecc/skills/quarkus-patterns/SKILL.md +722 -0
- package/bundled/upstream/ecc/skills/quarkus-security/SKILL.md +467 -0
- package/bundled/upstream/ecc/skills/quarkus-tdd/SKILL.md +811 -0
- package/bundled/upstream/ecc/skills/quarkus-verification/SKILL.md +479 -0
- package/bundled/upstream/ecc/skills/redis-patterns/SKILL.md +403 -0
- package/bundled/upstream/ecc/skills/scientific-db-pubmed-database/SKILL.md +175 -0
- package/bundled/upstream/ecc/skills/scientific-db-uspto-database/SKILL.md +177 -0
- package/bundled/upstream/ecc/skills/scientific-pkg-gget/SKILL.md +166 -0
- package/bundled/upstream/ecc/skills/scientific-thinking-literature-review/SKILL.md +192 -0
- package/bundled/upstream/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
- package/bundled/upstream/ecc/skills/search-first/SKILL.md +23 -2
- package/bundled/upstream/ecc/skills/security-review/SKILL.md +10 -2
- package/bundled/upstream/ecc/skills/skill-comply/scripts/runner.py +28 -3
- package/bundled/upstream/ecc/skills/skill-comply/tests/test_runner.py +172 -0
- package/bundled/upstream/ecc/skills/skill-scout/SKILL.md +140 -0
- package/bundled/upstream/ecc/skills/skill-stocktake/SKILL.md +1 -0
- package/bundled/upstream/ecc/skills/strategic-compact/SKILL.md +2 -2
- package/bundled/upstream/ecc/skills/tinystruct-patterns/SKILL.md +203 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/architecture.md +90 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/data-handling.md +60 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/database.md +99 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/routing.md +64 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/system-usage.md +97 -0
- package/bundled/upstream/ecc/skills/tinystruct-patterns/references/testing.md +72 -0
- package/bundled/upstream/ecc/skills/ui-to-vue/SKILL.md +134 -0
- package/bundled/upstream/ecc/skills/vite-patterns/SKILL.md +449 -0
- package/bundled/upstream/ecc/skills/windows-desktop-e2e/SKILL.md +788 -0
- package/bundled/upstream/ecc/skills/x-api/SKILL.md +4 -0
- package/bundled/upstream/oh-my-claudecode/.omc-source/bundle.json +20 -0
- package/bundled/upstream/oh-my-claudecode/agents/analyst.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/architect.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/code-reviewer.md +26 -7
- package/bundled/upstream/oh-my-claudecode/agents/critic.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/debugger.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/designer.md +14 -1
- package/bundled/upstream/oh-my-claudecode/agents/document-specialist.md +1 -1
- package/bundled/upstream/oh-my-claudecode/agents/executor.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/explore.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/git-master.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/planner.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/qa-tester.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/scientist.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/security-reviewer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/test-engineer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/tracer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/verifier.md +2 -1
- package/bundled/upstream/oh-my-claudecode/agents/writer.md +2 -1
- package/bundled/upstream/oh-my-claudecode/skills/AGENTS.md +4 -3
- package/bundled/upstream/oh-my-claudecode/skills/ai-slop-cleaner/SKILL.md +12 -0
- package/bundled/upstream/oh-my-claudecode/skills/deep-dive/SKILL.md +69 -13
- package/bundled/upstream/oh-my-claudecode/skills/deep-interview/SKILL.md +176 -63
- package/bundled/upstream/oh-my-claudecode/skills/learner/SKILL.md +3 -1
- package/bundled/upstream/oh-my-claudecode/skills/omc-doctor/SKILL.md +22 -3
- package/bundled/upstream/oh-my-claudecode/skills/omc-reference/SKILL.md +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/01-install-claude-md.md +2 -2
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/02-configure.md +45 -2
- package/bundled/upstream/oh-my-claudecode/skills/omc-setup/phases/03-integrations.md +46 -5
- package/bundled/upstream/oh-my-claudecode/skills/plan/SKILL.md +19 -17
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/config.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/parse.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/azure-devops.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/bitbucket.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitea.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/github.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/gitlab.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/interface.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/providers/jira.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/session.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/tmux.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/lib/worktree.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/psm.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/project-session-manager/tests/test-psm-prompt-injection.sh +1 -1
- package/bundled/upstream/oh-my-claudecode/skills/ralph/SKILL.md +8 -8
- package/bundled/upstream/oh-my-claudecode/skills/ralplan/SKILL.md +9 -5
- package/bundled/upstream/oh-my-claudecode/skills/skill/SKILL.md +6 -6
- package/bundled/upstream/oh-my-claudecode/skills/skillify/SKILL.md +19 -3
- package/bundled/upstream/oh-my-claudecode/skills/trace/SKILL.md +3 -1
- package/bundled/upstream/oh-my-claudecode/skills/ultrawork/SKILL.md +20 -7
- package/bundled/upstream/superpowers/.omc-source/bundle.json +21 -0
- package/bundled/upstream/superpowers/hooks/hooks-cursor.json +1 -1
- package/bundled/upstream/superpowers/skills/executing-plans/SKILL.md +1 -1
- package/bundled/upstream/superpowers/skills/finishing-a-development-branch/SKILL.md +93 -42
- package/bundled/upstream/superpowers/skills/requesting-code-review/SKILL.md +7 -9
- package/bundled/upstream/superpowers/skills/requesting-code-review/code-reviewer.md +107 -85
- package/bundled/upstream/superpowers/skills/subagent-driven-development/SKILL.md +3 -1
- package/bundled/upstream/superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +2 -3
- package/bundled/upstream/superpowers/skills/systematic-debugging/CREATION-LOG.md +1 -1
- package/bundled/upstream/superpowers/skills/systematic-debugging/root-cause-tracing.md +1 -1
- package/bundled/upstream/superpowers/skills/using-git-worktrees/SKILL.md +95 -98
- package/bundled/upstream/superpowers/skills/using-superpowers/references/codex-tools.md +7 -48
- package/bundled/upstream/superpowers/skills/using-superpowers/references/copilot-tools.md +1 -11
- package/bundled/upstream/superpowers/skills/using-superpowers/references/gemini-tools.md +21 -3
- package/bundled/upstream/superpowers/skills/writing-plans/SKILL.md +1 -1
- package/package.json +1 -1
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/README.md +0 -355
- package/bundled/upstream/anthropic-skills/skills/claude-api/python/agent-sdk/patterns.md +0 -359
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/README.md +0 -297
- package/bundled/upstream/anthropic-skills/skills/claude-api/typescript/agent-sdk/patterns.md +0 -209
- package/bundled/upstream/ecc/commands/agent-sort.md +0 -23
- package/bundled/upstream/ecc/commands/claw.md +0 -23
- package/bundled/upstream/ecc/commands/context-budget.md +0 -23
- package/bundled/upstream/ecc/commands/devfleet.md +0 -23
- package/bundled/upstream/ecc/commands/docs.md +0 -23
- package/bundled/upstream/ecc/commands/e2e.md +0 -268
- package/bundled/upstream/ecc/commands/eval.md +0 -23
- package/bundled/upstream/ecc/commands/orchestrate.md +0 -135
- package/bundled/upstream/ecc/commands/prompt-optimize.md +0 -23
- package/bundled/upstream/ecc/commands/rules-distill.md +0 -20
- package/bundled/upstream/ecc/commands/tdd.md +0 -231
- package/bundled/upstream/ecc/commands/verify.md +0 -23
- package/bundled/upstream/ecc/skills/claude-api/SKILL.md +0 -337
- package/bundled/upstream/ecc/skills/frontend-design/SKILL.md +0 -145
- package/bundled/upstream/superpowers/agents/code-reviewer.md +0 -48
- package/bundled/upstream/superpowers/commands/brainstorm.md +0 -5
- package/bundled/upstream/superpowers/commands/execute-plan.md +0 -5
- package/bundled/upstream/superpowers/commands/write-plan.md +0 -5
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<!--
|
|
3
|
+
Calibration Twin — h5-twin/index.html
|
|
4
|
+
Known-correct H5 side of the Stage 2.5 render-equivalence calibration pair.
|
|
5
|
+
Open directly as a static file — zero JS framework, zero build step.
|
|
6
|
+
|
|
7
|
+
IMPORTANT: every color, size, and spacing value here is driven by the CSS
|
|
8
|
+
custom properties in style.css, which must remain in sync with
|
|
9
|
+
tokens.json and swiftui-twin/Sources/CalibrationScreen/CalibrationScreen.swift.
|
|
10
|
+
-->
|
|
11
|
+
<html lang="en">
|
|
12
|
+
<head>
|
|
13
|
+
<meta charset="UTF-8" />
|
|
14
|
+
<!--
|
|
15
|
+
Viewport: fixed 393px logical width, no user scaling.
|
|
16
|
+
Matches iPhone 15 Pro logical resolution used in the SwiftUI twin.
|
|
17
|
+
-->
|
|
18
|
+
<meta name="viewport" content="width=393, initial-scale=1.0, user-scalable=no" />
|
|
19
|
+
<title>Calibration Twin</title>
|
|
20
|
+
<link rel="stylesheet" href="style.css" />
|
|
21
|
+
</head>
|
|
22
|
+
<body>
|
|
23
|
+
<div class="screen">
|
|
24
|
+
|
|
25
|
+
<!-- TEXT BLOCK: heading + body paragraph -->
|
|
26
|
+
<section class="text-block" aria-label="text-block">
|
|
27
|
+
<h1 class="text-block__heading">Calibration Screen</h1>
|
|
28
|
+
<p class="text-block__body">
|
|
29
|
+
This screen is the known-correct H5 twin used to measure the
|
|
30
|
+
cross-renderer fidelity floor. It is not a conversion target.
|
|
31
|
+
</p>
|
|
32
|
+
</section>
|
|
33
|
+
|
|
34
|
+
<!-- SHAPE BLOCK: structured (multi-color stripes) card + circle.
|
|
35
|
+
Deliberately NOT a flat solid block — SSIM is insensitive to a
|
|
36
|
+
uniform mean shift on flat content, so the calibration region must
|
|
37
|
+
carry structure for the floor to be meaningful. -->
|
|
38
|
+
<section class="shape-block" aria-label="shape-block">
|
|
39
|
+
<div class="shape-block__card" aria-label="card">
|
|
40
|
+
<div class="shape-block__stripe shape-block__stripe--a"></div>
|
|
41
|
+
<div class="shape-block__stripe shape-block__stripe--b"></div>
|
|
42
|
+
<div class="shape-block__stripe shape-block__stripe--c"></div>
|
|
43
|
+
<div class="shape-block__stripe shape-block__stripe--d"></div>
|
|
44
|
+
</div>
|
|
45
|
+
<div class="shape-block__circle-row">
|
|
46
|
+
<div class="shape-block__circle" aria-label="circle"></div>
|
|
47
|
+
</div>
|
|
48
|
+
</section>
|
|
49
|
+
|
|
50
|
+
</div>
|
|
51
|
+
</body>
|
|
52
|
+
</html>
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/* Calibration Twin — style.css
|
|
2
|
+
Design tokens as CSS custom properties.
|
|
3
|
+
Every value here MUST match tokens.json and CalibrationScreen.swift exactly.
|
|
4
|
+
Do NOT add, remove, or change values without updating all three files.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* ── Design Tokens ──────────────────────────────────────────────── */
|
|
8
|
+
:root {
|
|
9
|
+
/* colors */
|
|
10
|
+
--color-background: #F2F2F7;
|
|
11
|
+
--color-card: #4A90D9;
|
|
12
|
+
--color-circle: #E8744F;
|
|
13
|
+
--color-text-heading: #1C1C1E;
|
|
14
|
+
--color-text-body: #636366;
|
|
15
|
+
|
|
16
|
+
/* card stripes — structured multi-color region (NOT a flat block) so the
|
|
17
|
+
measured SSIM floor is meaningful (flat content makes SSIM blind to a
|
|
18
|
+
uniform mean shift). */
|
|
19
|
+
--color-stripe-a: #4A90D9; /* blue */
|
|
20
|
+
--color-stripe-b: #7E57C2; /* purple */
|
|
21
|
+
--color-stripe-c: #26A69A; /* teal */
|
|
22
|
+
--color-stripe-d: #F4B400; /* amber */
|
|
23
|
+
|
|
24
|
+
/* spacing */
|
|
25
|
+
--space-safe-top: 59px; /* iPhone 15 Pro top safe-area inset */
|
|
26
|
+
--space-page-h: 20px; /* horizontal page padding */
|
|
27
|
+
--space-section-gap: 24px; /* gap between text block and shape block */
|
|
28
|
+
--space-card-padding: 20px; /* inner padding of the blue card */
|
|
29
|
+
--space-card-gap: 16px; /* gap between card and circle row */
|
|
30
|
+
|
|
31
|
+
/* radii */
|
|
32
|
+
--radius-card: 16px;
|
|
33
|
+
|
|
34
|
+
/* typography */
|
|
35
|
+
--font-family: -apple-system, system-ui, BlinkMacSystemFont, sans-serif;
|
|
36
|
+
--font-size-heading: 22px;
|
|
37
|
+
--font-weight-heading: 600; /* semibold */
|
|
38
|
+
--line-height-heading: 1.27; /* ~28px → matches SF heading leading */
|
|
39
|
+
--font-size-body: 15px;
|
|
40
|
+
--font-weight-body: 400; /* regular */
|
|
41
|
+
--line-height-body: 1.47; /* ~22px → matches SF body leading */
|
|
42
|
+
|
|
43
|
+
/* shape */
|
|
44
|
+
--size-circle: 64px;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* ── Reset / Base ───────────────────────────────────────────────── */
|
|
48
|
+
*, *::before, *::after {
|
|
49
|
+
box-sizing: border-box;
|
|
50
|
+
margin: 0;
|
|
51
|
+
padding: 0;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
html, body {
|
|
55
|
+
width: 393px; /* iPhone 15 Pro logical width */
|
|
56
|
+
min-height: 852px; /* iPhone 15 Pro logical height */
|
|
57
|
+
background-color: var(--color-background);
|
|
58
|
+
font-family: var(--font-family);
|
|
59
|
+
-webkit-font-smoothing: antialiased;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/* ── Screen container ───────────────────────────────────────────── */
|
|
63
|
+
.screen {
|
|
64
|
+
width: 393px;
|
|
65
|
+
min-height: 852px;
|
|
66
|
+
background-color: var(--color-background);
|
|
67
|
+
padding-top: var(--space-safe-top);
|
|
68
|
+
padding-left: var(--space-page-h);
|
|
69
|
+
padding-right: var(--space-page-h);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* ── Text block ─────────────────────────────────────────────────── */
|
|
73
|
+
.text-block {
|
|
74
|
+
/* sits immediately below safe-area inset, no extra top margin */
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.text-block__heading {
|
|
78
|
+
font-family: var(--font-family);
|
|
79
|
+
font-size: var(--font-size-heading);
|
|
80
|
+
font-weight: var(--font-weight-heading);
|
|
81
|
+
line-height: var(--line-height-heading);
|
|
82
|
+
color: var(--color-text-heading);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.text-block__body {
|
|
86
|
+
margin-top: 8px;
|
|
87
|
+
font-family: var(--font-family);
|
|
88
|
+
font-size: var(--font-size-body);
|
|
89
|
+
font-weight: var(--font-weight-body);
|
|
90
|
+
line-height: var(--line-height-body);
|
|
91
|
+
color: var(--color-text-body);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* ── Shape block ────────────────────────────────────────────────── */
|
|
95
|
+
.shape-block {
|
|
96
|
+
margin-top: var(--space-section-gap);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.shape-block__card {
|
|
100
|
+
background-color: var(--color-card);
|
|
101
|
+
border-radius: var(--radius-card);
|
|
102
|
+
/* fixed height instead of padding-only so the stripes have a stable box;
|
|
103
|
+
2 × card padding (40px) keeps the same overall card height as before. */
|
|
104
|
+
height: calc(var(--space-card-padding) * 2);
|
|
105
|
+
overflow: hidden;
|
|
106
|
+
display: flex;
|
|
107
|
+
flex-direction: row;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* 4 equal-width vertical stripes — a structured, multi-color region. */
|
|
111
|
+
.shape-block__stripe {
|
|
112
|
+
flex: 1 1 25%;
|
|
113
|
+
height: 100%;
|
|
114
|
+
}
|
|
115
|
+
.shape-block__stripe--a { background-color: var(--color-stripe-a); }
|
|
116
|
+
.shape-block__stripe--b { background-color: var(--color-stripe-b); }
|
|
117
|
+
.shape-block__stripe--c { background-color: var(--color-stripe-c); }
|
|
118
|
+
.shape-block__stripe--d { background-color: var(--color-stripe-d); }
|
|
119
|
+
|
|
120
|
+
.shape-block__circle-row {
|
|
121
|
+
margin-top: var(--space-card-gap);
|
|
122
|
+
display: flex;
|
|
123
|
+
flex-direction: row;
|
|
124
|
+
align-items: center;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.shape-block__circle {
|
|
128
|
+
width: var(--size-circle);
|
|
129
|
+
height: var(--size-circle);
|
|
130
|
+
border-radius: 50%;
|
|
131
|
+
background-color: var(--color-circle);
|
|
132
|
+
flex-shrink: 0;
|
|
133
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// swift-tools-version: 5.9
|
|
2
|
+
// Calibration Twin — SwiftUI Package
|
|
3
|
+
// Zero third-party dependencies. Requires Xcode 15+ / Swift 5.9+.
|
|
4
|
+
|
|
5
|
+
import PackageDescription
|
|
6
|
+
|
|
7
|
+
let package = Package(
|
|
8
|
+
name: "CalibrationScreen",
|
|
9
|
+
platforms: [
|
|
10
|
+
.iOS(.v17),
|
|
11
|
+
.macOS(.v14)
|
|
12
|
+
],
|
|
13
|
+
products: [
|
|
14
|
+
.library(
|
|
15
|
+
name: "CalibrationScreen",
|
|
16
|
+
targets: ["CalibrationScreen"]
|
|
17
|
+
)
|
|
18
|
+
],
|
|
19
|
+
targets: [
|
|
20
|
+
.target(
|
|
21
|
+
name: "CalibrationScreen",
|
|
22
|
+
dependencies: [],
|
|
23
|
+
path: "Sources/CalibrationScreen"
|
|
24
|
+
)
|
|
25
|
+
]
|
|
26
|
+
)
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// CalibrationScreen.swift
|
|
2
|
+
// Calibration Twin — SwiftUI side of the Stage 2.5 render-equivalence pair.
|
|
3
|
+
//
|
|
4
|
+
// IMPORTANT: every color, size, and spacing constant here derives from the
|
|
5
|
+
// same design-token values in tokens.json and h5-twin/style.css.
|
|
6
|
+
// Do NOT change any value without updating all three files.
|
|
7
|
+
//
|
|
8
|
+
// Layout target: iPhone 15 Pro logical viewport 393×852 pt,
|
|
9
|
+
// with a 59 pt top safe-area inset equivalent.
|
|
10
|
+
|
|
11
|
+
import SwiftUI
|
|
12
|
+
|
|
13
|
+
// ── Design Tokens ────────────────────────────────────────────────────────── //
|
|
14
|
+
// Hex → Color(red:green:blue:) conversions use the formula r/255, g/255, b/255
|
|
15
|
+
// with sRGB color space (matching the CSS hex values in style.css).
|
|
16
|
+
|
|
17
|
+
private enum Tokens {
|
|
18
|
+
// Colors
|
|
19
|
+
// #F2F2F7 → r=0xF2/255=0.9490 g=0xF2/255=0.9490 b=0xF7/255=0.9686
|
|
20
|
+
static let colorBackground = Color(red: 0xF2/255.0, green: 0xF2/255.0, blue: 0xF7/255.0)
|
|
21
|
+
// #4A90D9 → r=0x4A/255=0.2902 g=0x90/255=0.5647 b=0xD9/255=0.8510
|
|
22
|
+
static let colorCard = Color(red: 0x4A/255.0, green: 0x90/255.0, blue: 0xD9/255.0)
|
|
23
|
+
// #E8744F → r=0xE8/255=0.9098 g=0x74/255=0.4549 b=0x4F/255=0.3098
|
|
24
|
+
static let colorCircle = Color(red: 0xE8/255.0, green: 0x74/255.0, blue: 0x4F/255.0)
|
|
25
|
+
|
|
26
|
+
// Card stripes — structured multi-color region (NOT a flat block) so the
|
|
27
|
+
// measured SSIM floor is meaningful.
|
|
28
|
+
// #4A90D9 blue / #7E57C2 purple / #26A69A teal / #F4B400 amber
|
|
29
|
+
static let colorStripeA = Color(red: 0x4A/255.0, green: 0x90/255.0, blue: 0xD9/255.0)
|
|
30
|
+
static let colorStripeB = Color(red: 0x7E/255.0, green: 0x57/255.0, blue: 0xC2/255.0)
|
|
31
|
+
static let colorStripeC = Color(red: 0x26/255.0, green: 0xA6/255.0, blue: 0x9A/255.0)
|
|
32
|
+
static let colorStripeD = Color(red: 0xF4/255.0, green: 0xB4/255.0, blue: 0x00/255.0)
|
|
33
|
+
// #1C1C1E → r=0x1C/255=0.1098 g=0x1C/255=0.1098 b=0x1E/255=0.1176
|
|
34
|
+
static let colorTextHeading = Color(red: 0x1C/255.0, green: 0x1C/255.0, blue: 0x1E/255.0)
|
|
35
|
+
// #636366 → r=0x63/255=0.3882 g=0x63/255=0.3882 b=0x66/255=0.4000
|
|
36
|
+
static let colorTextBody = Color(red: 0x63/255.0, green: 0x63/255.0, blue: 0x66/255.0)
|
|
37
|
+
|
|
38
|
+
// Spacing (pt — 1 pt = 1 CSS px at 1× logical scale)
|
|
39
|
+
static let spaceSafeTop: CGFloat = 59 // top safe-area equivalent
|
|
40
|
+
static let spacePageH: CGFloat = 20 // horizontal page padding
|
|
41
|
+
static let spaceSectionGap: CGFloat = 24 // gap: text block → shape block
|
|
42
|
+
static let spaceCardPadding: CGFloat = 20 // inner card padding
|
|
43
|
+
static let spaceCardGap: CGFloat = 16 // gap: card → circle row
|
|
44
|
+
|
|
45
|
+
// Radii
|
|
46
|
+
static let radiusCard: CGFloat = 16
|
|
47
|
+
|
|
48
|
+
// Typography (SF System font — closest match to -apple-system CSS)
|
|
49
|
+
static let fontSizeHeading: CGFloat = 22
|
|
50
|
+
static let fontWeightHeading: Font.Weight = .semibold // CSS 600
|
|
51
|
+
static let fontSizeBody: CGFloat = 15
|
|
52
|
+
static let fontWeightBody: Font.Weight = .regular // CSS 400
|
|
53
|
+
|
|
54
|
+
// Shape
|
|
55
|
+
static let sizeCircle: CGFloat = 64
|
|
56
|
+
|
|
57
|
+
// Screen frame (iPhone 15 Pro logical size)
|
|
58
|
+
static let screenWidth: CGFloat = 393
|
|
59
|
+
static let screenHeight: CGFloat = 852
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// ── CalibrationScreenView ─────────────────────────────────────────────────── //
|
|
63
|
+
|
|
64
|
+
public struct CalibrationScreenView: View {
|
|
65
|
+
|
|
66
|
+
public init() {}
|
|
67
|
+
|
|
68
|
+
public var body: some View {
|
|
69
|
+
ZStack(alignment: .topLeading) {
|
|
70
|
+
// Background fills the entire 393×852 frame
|
|
71
|
+
Tokens.colorBackground
|
|
72
|
+
.ignoresSafeArea()
|
|
73
|
+
|
|
74
|
+
VStack(alignment: .leading, spacing: 0) {
|
|
75
|
+
|
|
76
|
+
// Safe-area top inset (59 pt) — mirrors --space-safe-top in CSS
|
|
77
|
+
Spacer()
|
|
78
|
+
.frame(height: Tokens.spaceSafeTop)
|
|
79
|
+
|
|
80
|
+
// ── Text Block ──────────────────────────────────────────── //
|
|
81
|
+
VStack(alignment: .leading, spacing: 8) {
|
|
82
|
+
// Heading: 22pt semibold, color #1C1C1E
|
|
83
|
+
Text("Calibration Screen")
|
|
84
|
+
.font(.system(size: Tokens.fontSizeHeading,
|
|
85
|
+
weight: Tokens.fontWeightHeading))
|
|
86
|
+
.foregroundColor(Tokens.colorTextHeading)
|
|
87
|
+
.lineSpacing(Tokens.fontSizeHeading * (1.27 - 1))
|
|
88
|
+
// line-height ≈ 1.27 × 22 ≈ 28 pt — matches CSS line-height
|
|
89
|
+
|
|
90
|
+
// Body: 15pt regular, color #636366
|
|
91
|
+
Text("This screen is the known-correct SwiftUI twin used to measure the cross-renderer fidelity floor. It is not a conversion target.")
|
|
92
|
+
.font(.system(size: Tokens.fontSizeBody,
|
|
93
|
+
weight: Tokens.fontWeightBody))
|
|
94
|
+
.foregroundColor(Tokens.colorTextBody)
|
|
95
|
+
.lineSpacing(Tokens.fontSizeBody * (1.47 - 1))
|
|
96
|
+
// line-height ≈ 1.47 × 15 ≈ 22 pt — matches CSS line-height
|
|
97
|
+
.fixedSize(horizontal: false, vertical: true)
|
|
98
|
+
}
|
|
99
|
+
.padding(.horizontal, Tokens.spacePageH)
|
|
100
|
+
|
|
101
|
+
// Gap between text block and shape block (24 pt)
|
|
102
|
+
Spacer()
|
|
103
|
+
.frame(height: Tokens.spaceSectionGap)
|
|
104
|
+
|
|
105
|
+
// ── Shape Block ─────────────────────────────────────────── //
|
|
106
|
+
VStack(alignment: .leading, spacing: Tokens.spaceCardGap) {
|
|
107
|
+
|
|
108
|
+
// Structured (4-stripe) rounded-rect card, radius 16pt.
|
|
109
|
+
// Deliberately NOT a flat solid block — a flat region makes
|
|
110
|
+
// SSIM blind to a uniform mean shift, so the measured floor
|
|
111
|
+
// would be unreliable. Height = 2 × card padding = 40pt
|
|
112
|
+
// (same overall card height as the original solid block).
|
|
113
|
+
HStack(spacing: 0) {
|
|
114
|
+
Tokens.colorStripeA
|
|
115
|
+
Tokens.colorStripeB
|
|
116
|
+
Tokens.colorStripeC
|
|
117
|
+
Tokens.colorStripeD
|
|
118
|
+
}
|
|
119
|
+
.frame(height: Tokens.spaceCardPadding * 2)
|
|
120
|
+
.clipShape(RoundedRectangle(cornerRadius: Tokens.radiusCard))
|
|
121
|
+
// width = full content width (set by horizontal padding below)
|
|
122
|
+
|
|
123
|
+
// Circle (#E8744F, 64×64 pt)
|
|
124
|
+
Circle()
|
|
125
|
+
.fill(Tokens.colorCircle)
|
|
126
|
+
.frame(width: Tokens.sizeCircle, height: Tokens.sizeCircle)
|
|
127
|
+
}
|
|
128
|
+
.padding(.horizontal, Tokens.spacePageH)
|
|
129
|
+
|
|
130
|
+
Spacer()
|
|
131
|
+
}
|
|
132
|
+
.frame(width: Tokens.screenWidth, alignment: .topLeading)
|
|
133
|
+
}
|
|
134
|
+
.frame(width: Tokens.screenWidth, height: Tokens.screenHeight)
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// ── Preview ──────────────────────────────────────────────────────────────── //
|
|
139
|
+
|
|
140
|
+
#Preview("Calibration Screen — 393×852") {
|
|
141
|
+
CalibrationScreenView()
|
|
142
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// swift-tools-version: 5.9
|
|
2
|
+
// Calibration DIVERGENT Twin — SwiftUI Package (NEGATIVE CONTROL)
|
|
3
|
+
//
|
|
4
|
+
// This package is the deliberately-WRONG SwiftUI screen used as the Stage 5
|
|
5
|
+
// judge negative control. The independent judge MUST reject this vs the H5
|
|
6
|
+
// twin; if it does not, its YES is voided for that run (see
|
|
7
|
+
// references/visual-diff-loop-protocol.md and evaluate-convergence.mjs).
|
|
8
|
+
//
|
|
9
|
+
// Zero third-party dependencies. Requires Xcode 15+ / Swift 5.9+.
|
|
10
|
+
|
|
11
|
+
import PackageDescription
|
|
12
|
+
|
|
13
|
+
let package = Package(
|
|
14
|
+
name: "CalibrationScreenDivergent",
|
|
15
|
+
platforms: [
|
|
16
|
+
.iOS(.v17),
|
|
17
|
+
.macOS(.v14)
|
|
18
|
+
],
|
|
19
|
+
products: [
|
|
20
|
+
.library(
|
|
21
|
+
name: "CalibrationScreenDivergent",
|
|
22
|
+
targets: ["CalibrationScreenDivergent"]
|
|
23
|
+
)
|
|
24
|
+
],
|
|
25
|
+
targets: [
|
|
26
|
+
.target(
|
|
27
|
+
name: "CalibrationScreenDivergent",
|
|
28
|
+
dependencies: [],
|
|
29
|
+
path: "Sources/CalibrationScreenDivergent"
|
|
30
|
+
)
|
|
31
|
+
]
|
|
32
|
+
)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// CalibrationScreenDivergent.swift
|
|
2
|
+
// NEGATIVE CONTROL — the deliberately-WRONG SwiftUI side of the Stage 5
|
|
3
|
+
// judge negative control.
|
|
4
|
+
//
|
|
5
|
+
// This screen is INTENTIONALLY divergent from the H5 twin
|
|
6
|
+
// (assets/calibration/h5-twin/index.html):
|
|
7
|
+
// • WRONG colors — background green not grey, card stripes recolored,
|
|
8
|
+
// circle blue not coral, text colors inverted.
|
|
9
|
+
// • SHIFTED layout — larger top inset, different padding, the circle is
|
|
10
|
+
// moved to the trailing edge, the card is taller and
|
|
11
|
+
// narrower, section gap doubled.
|
|
12
|
+
// • WRONG copy — heading/body text differs.
|
|
13
|
+
//
|
|
14
|
+
// The independent judge MUST reject this pair (H5 twin vs this) under the
|
|
15
|
+
// adversarial forced-difference-3 framing. If the judge fails to reject it,
|
|
16
|
+
// `judge.negative_control` is recorded as "failed" and any YES verdict is
|
|
17
|
+
// VOID for that run (enforced mechanically by evaluate-convergence.mjs).
|
|
18
|
+
//
|
|
19
|
+
// It is still TEXTURED (text + a multi-color stripe region) so the contrast
|
|
20
|
+
// with the correct twin is structural, not just a flat mean shift.
|
|
21
|
+
|
|
22
|
+
import SwiftUI
|
|
23
|
+
|
|
24
|
+
private enum WrongTokens {
|
|
25
|
+
// WRONG colors (intentionally divergent from tokens.json)
|
|
26
|
+
static let colorBackground = Color(red: 0x2E/255.0, green: 0x7D/255.0, blue: 0x32/255.0) // green, should be #F2F2F7
|
|
27
|
+
static let colorCircle = Color(red: 0x15/255.0, green: 0x65/255.0, blue: 0xC0/255.0) // blue, should be #E8744F
|
|
28
|
+
static let colorTextHeading = Color(red: 0xFF/255.0, green: 0xFF/255.0, blue: 0xFF/255.0) // white, should be #1C1C1E
|
|
29
|
+
static let colorTextBody = Color(red: 0xFF/255.0, green: 0xEB/255.0, blue: 0x3B/255.0) // yellow, should be #636366
|
|
30
|
+
|
|
31
|
+
// WRONG stripe colors (recolored + reordered)
|
|
32
|
+
static let colorStripeA = Color(red: 0xD3/255.0, green: 0x2F/255.0, blue: 0x2F/255.0) // red
|
|
33
|
+
static let colorStripeB = Color(red: 0xFB/255.0, green: 0x8C/255.0, blue: 0x00/255.0) // orange
|
|
34
|
+
static let colorStripeC = Color(red: 0x00/255.0, green: 0x00/255.0, blue: 0x00/255.0) // black
|
|
35
|
+
static let colorStripeD = Color(red: 0xFF/255.0, green: 0xFF/255.0, blue: 0xFF/255.0) // white
|
|
36
|
+
|
|
37
|
+
// SHIFTED layout (intentionally divergent spacing)
|
|
38
|
+
static let spaceSafeTop: CGFloat = 140 // should be 59 — large shift
|
|
39
|
+
static let spacePageH: CGFloat = 48 // should be 20
|
|
40
|
+
static let spaceSectionGap: CGFloat = 48 // should be 24 — doubled
|
|
41
|
+
static let spaceCardPadding: CGFloat = 20
|
|
42
|
+
static let spaceCardGap: CGFloat = 16
|
|
43
|
+
|
|
44
|
+
static let radiusCard: CGFloat = 2 // should be 16 — nearly square
|
|
45
|
+
static let fontSizeHeading: CGFloat = 34 // should be 22
|
|
46
|
+
static let fontSizeBody: CGFloat = 11 // should be 15
|
|
47
|
+
static let sizeCircle: CGFloat = 110 // should be 64 — much larger
|
|
48
|
+
|
|
49
|
+
static let screenWidth: CGFloat = 393
|
|
50
|
+
static let screenHeight: CGFloat = 852
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// ── CalibrationScreenDivergentView ────────────────────────────────────────── //
|
|
54
|
+
|
|
55
|
+
public struct CalibrationScreenDivergentView: View {
|
|
56
|
+
|
|
57
|
+
public init() {}
|
|
58
|
+
|
|
59
|
+
public var body: some View {
|
|
60
|
+
ZStack(alignment: .topLeading) {
|
|
61
|
+
WrongTokens.colorBackground
|
|
62
|
+
.ignoresSafeArea()
|
|
63
|
+
|
|
64
|
+
VStack(alignment: .leading, spacing: 0) {
|
|
65
|
+
|
|
66
|
+
Spacer()
|
|
67
|
+
.frame(height: WrongTokens.spaceSafeTop)
|
|
68
|
+
|
|
69
|
+
// WRONG copy + WRONG type sizes + WRONG colors
|
|
70
|
+
VStack(alignment: .leading, spacing: 8) {
|
|
71
|
+
Text("WRONG SCREEN — negative control")
|
|
72
|
+
.font(.system(size: WrongTokens.fontSizeHeading,
|
|
73
|
+
weight: .bold))
|
|
74
|
+
.foregroundColor(WrongTokens.colorTextHeading)
|
|
75
|
+
|
|
76
|
+
Text("If a judge calls this equivalent to the H5 twin, its verdict is void.")
|
|
77
|
+
.font(.system(size: WrongTokens.fontSizeBody,
|
|
78
|
+
weight: .regular))
|
|
79
|
+
.foregroundColor(WrongTokens.colorTextBody)
|
|
80
|
+
.fixedSize(horizontal: false, vertical: true)
|
|
81
|
+
}
|
|
82
|
+
.padding(.horizontal, WrongTokens.spacePageH)
|
|
83
|
+
|
|
84
|
+
Spacer()
|
|
85
|
+
.frame(height: WrongTokens.spaceSectionGap)
|
|
86
|
+
|
|
87
|
+
VStack(alignment: .leading, spacing: WrongTokens.spaceCardGap) {
|
|
88
|
+
|
|
89
|
+
// Taller, near-square, recolored stripe card
|
|
90
|
+
HStack(spacing: 0) {
|
|
91
|
+
WrongTokens.colorStripeA
|
|
92
|
+
WrongTokens.colorStripeB
|
|
93
|
+
WrongTokens.colorStripeC
|
|
94
|
+
WrongTokens.colorStripeD
|
|
95
|
+
}
|
|
96
|
+
.frame(height: WrongTokens.spaceCardPadding * 5) // much taller
|
|
97
|
+
.clipShape(RoundedRectangle(cornerRadius: WrongTokens.radiusCard))
|
|
98
|
+
|
|
99
|
+
// Circle moved to the TRAILING edge, wrong color, much bigger
|
|
100
|
+
HStack {
|
|
101
|
+
Spacer()
|
|
102
|
+
Circle()
|
|
103
|
+
.fill(WrongTokens.colorCircle)
|
|
104
|
+
.frame(width: WrongTokens.sizeCircle,
|
|
105
|
+
height: WrongTokens.sizeCircle)
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
.padding(.horizontal, WrongTokens.spacePageH)
|
|
109
|
+
|
|
110
|
+
Spacer()
|
|
111
|
+
}
|
|
112
|
+
.frame(width: WrongTokens.screenWidth, alignment: .topLeading)
|
|
113
|
+
}
|
|
114
|
+
.frame(width: WrongTokens.screenWidth, height: WrongTokens.screenHeight)
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// ── Preview ──────────────────────────────────────────────────────────────── //
|
|
119
|
+
|
|
120
|
+
#Preview("DIVERGENT (negative control) — 393×852") {
|
|
121
|
+
CalibrationScreenDivergentView()
|
|
122
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "h5-to-swiftui/calibration-tokens@1",
|
|
3
|
+
"$comment": "Ground-truth design tokens for the Stage 2.5 calibration pair. Both h5-twin/style.css and swiftui-twin/Sources/CalibrationScreen/CalibrationScreen.swift MUST implement every value here exactly. Any measured rendering difference between the two sides is the irreducible cross-renderer floor.",
|
|
4
|
+
|
|
5
|
+
"color": {
|
|
6
|
+
"background": { "$value": "#F2F2F7", "$type": "color", "$comment": "iOS systemGroupedBackground equivalent" },
|
|
7
|
+
"card": { "$value": "#4A90D9", "$type": "color", "$comment": "blue card base; carries multi-color stripes (textured, not flat)" },
|
|
8
|
+
"circle": { "$value": "#E8744F", "$type": "color", "$comment": "coral orange circle" },
|
|
9
|
+
"textHeading": { "$value": "#1C1C1E", "$type": "color", "$comment": "iOS label equivalent" },
|
|
10
|
+
"textBody": { "$value": "#636366", "$type": "color", "$comment": "iOS secondaryLabel equivalent" },
|
|
11
|
+
"stripeA": { "$value": "#4A90D9", "$type": "color", "$comment": "card stripe 1 (blue) — structured region so SSIM is meaningful" },
|
|
12
|
+
"stripeB": { "$value": "#7E57C2", "$type": "color", "$comment": "card stripe 2 (purple)" },
|
|
13
|
+
"stripeC": { "$value": "#26A69A", "$type": "color", "$comment": "card stripe 3 (teal)" },
|
|
14
|
+
"stripeD": { "$value": "#F4B400", "$type": "color", "$comment": "card stripe 4 (amber)" }
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
"space": {
|
|
18
|
+
"safeTop": { "$value": 59, "$unit": "px_pt", "$comment": "iPhone 15 Pro top safe-area inset, CSS px = Swift pt at 1× logical scale" },
|
|
19
|
+
"pageH": { "$value": 20, "$unit": "px_pt", "$comment": "horizontal page padding" },
|
|
20
|
+
"sectionGap": { "$value": 24, "$unit": "px_pt", "$comment": "vertical gap between text block and shape block" },
|
|
21
|
+
"cardPadding": { "$value": 20, "$unit": "px_pt", "$comment": "inner padding of the blue card" },
|
|
22
|
+
"cardGap": { "$value": 16, "$unit": "px_pt", "$comment": "gap between card and circle row" }
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
"radius": {
|
|
26
|
+
"card": { "$value": 16, "$unit": "px_pt", "$comment": "border-radius of the blue card" }
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
"font": {
|
|
30
|
+
"family": { "$value": "-apple-system", "$type": "fontFamily", "$comment": "CSS: -apple-system / system-ui; Swift: .system(size:weight:)" },
|
|
31
|
+
"sizeHeading": { "$value": 22, "$unit": "px_pt" },
|
|
32
|
+
"weightHeading": { "$value": 600, "$comment": "CSS 600 = semibold; Swift .semibold" },
|
|
33
|
+
"lineHeightHeading":{ "$value": 1.27, "$unit": "multiplier", "$comment": "unitless multiplier; 22 × 1.27 ≈ 28 pt" },
|
|
34
|
+
"sizeBody": { "$value": 15, "$unit": "px_pt" },
|
|
35
|
+
"weightBody": { "$value": 400, "$comment": "CSS 400 = regular; Swift .regular" },
|
|
36
|
+
"lineHeightBody": { "$value": 1.47, "$unit": "multiplier", "$comment": "unitless multiplier; 15 × 1.47 ≈ 22 pt" }
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
"shape": {
|
|
40
|
+
"circleSize": { "$value": 64, "$unit": "px_pt", "$comment": "diameter of the coral circle" }
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>Chronicle Feed</title>
|
|
7
|
+
<link rel="stylesheet" href="/src/styles/tokens.css" />
|
|
8
|
+
<link rel="stylesheet" href="/src/styles/global.css" />
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="root"></div>
|
|
12
|
+
<script type="module" src="/src/main.jsx"></script>
|
|
13
|
+
</body>
|
|
14
|
+
</html>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "chronicle-feed",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"dev": "vite",
|
|
8
|
+
"build": "vite build",
|
|
9
|
+
"preview": "vite preview"
|
|
10
|
+
},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"react": "^18.3.1",
|
|
13
|
+
"react-dom": "^18.3.1",
|
|
14
|
+
"react-router-dom": "^6.26.1"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@vitejs/plugin-react": "^4.3.1",
|
|
18
|
+
"vite": "^5.4.2"
|
|
19
|
+
}
|
|
20
|
+
}
|