@agentskillkit/agent-skills 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/core.cpython-313.pyc +0 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-313.pyc +0 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
- package/.agent/ARCHITECTURE.md +292 -0
- package/.agent/GEMINI.md +374 -0
- package/.agent/agents/backend-specialist.md +263 -0
- package/.agent/agents/code-archaeologist.md +106 -0
- package/.agent/agents/database-architect.md +226 -0
- package/.agent/agents/debugger.md +225 -0
- package/.agent/agents/devops-engineer.md +242 -0
- package/.agent/agents/documentation-writer.md +104 -0
- package/.agent/agents/explorer-agent.md +73 -0
- package/.agent/agents/frontend-specialist.md +556 -0
- package/.agent/agents/game-developer.md +162 -0
- package/.agent/agents/mobile-developer.md +377 -0
- package/.agent/agents/orchestrator.md +416 -0
- package/.agent/agents/penetration-tester.md +188 -0
- package/.agent/agents/performance-optimizer.md +187 -0
- package/.agent/agents/product-manager.md +112 -0
- package/.agent/agents/product-owner.md +95 -0
- package/.agent/agents/project-planner.md +406 -0
- package/.agent/agents/qa-automation-engineer.md +103 -0
- package/.agent/agents/security-auditor.md +170 -0
- package/.agent/agents/seo-specialist.md +111 -0
- package/.agent/agents/test-engineer.md +158 -0
- package/.agent/knowledge/lessons-learned.yaml +17 -0
- package/.agent/rules/GEMINI.md +253 -0
- package/.agent/scripts/auto_preview.py +148 -0
- package/.agent/scripts/checklist.py +217 -0
- package/.agent/scripts/session_manager.py +120 -0
- package/.agent/scripts/verify_all.py +327 -0
- package/.agent/skills/aesthetic/SKILL.md +121 -0
- package/.agent/skills/aesthetic/assets/design-guideline-template.md +163 -0
- package/.agent/skills/aesthetic/assets/design-story-template.md +135 -0
- package/.agent/skills/aesthetic/references/design-principles.md +62 -0
- package/.agent/skills/aesthetic/references/design-resources.md +75 -0
- package/.agent/skills/aesthetic/references/micro-interactions.md +53 -0
- package/.agent/skills/aesthetic/references/storytelling-design.md +50 -0
- package/.agent/skills/api-patterns/SKILL.md +81 -0
- package/.agent/skills/api-patterns/rules/api-style.md +42 -0
- package/.agent/skills/api-patterns/rules/auth.md +24 -0
- package/.agent/skills/api-patterns/rules/documentation.md +26 -0
- package/.agent/skills/api-patterns/rules/graphql.md +41 -0
- package/.agent/skills/api-patterns/rules/rate-limiting.md +31 -0
- package/.agent/skills/api-patterns/rules/response.md +37 -0
- package/.agent/skills/api-patterns/rules/rest.md +40 -0
- package/.agent/skills/api-patterns/rules/security-testing.md +122 -0
- package/.agent/skills/api-patterns/rules/trpc.md +41 -0
- package/.agent/skills/api-patterns/rules/versioning.md +22 -0
- package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +71 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +40 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
- package/.agent/skills/architecture/SKILL.md +55 -0
- package/.agent/skills/architecture/context-discovery.md +43 -0
- package/.agent/skills/architecture/examples.md +94 -0
- package/.agent/skills/architecture/pattern-selection.md +68 -0
- package/.agent/skills/architecture/patterns-reference.md +50 -0
- package/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/.agent/skills/bash-linux/SKILL.md +199 -0
- package/.agent/skills/behavioral-modes/SKILL.md +242 -0
- package/.agent/skills/brainstorming/SKILL.md +163 -0
- package/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
- package/.agent/skills/clean-code/SKILL.md +201 -0
- package/.agent/skills/code-review-checklist/SKILL.md +109 -0
- package/.agent/skills/code-reviewer/.skill-source.json +8 -0
- package/.agent/skills/code-reviewer/SKILL.md +32 -0
- package/.agent/skills/code-reviewer/enforcement/checklists/backend-api-review-checklist.md +5 -0
- package/.agent/skills/code-reviewer/examples/approved-pr/review-output.md +76 -0
- package/.agent/skills/code-reviewer/examples/rejected-pr/review-output.md +99 -0
- package/.agent/skills/code-reviewer/examples/scenarios.md +3 -0
- package/.agent/skills/code-reviewer/metadata/doctrine-mapping.yaml +167 -0
- package/.agent/skills/code-reviewer/metadata/intent-triggers.yaml +41 -0
- package/.agent/skills/code-reviewer/resources/links.md +59 -0
- package/.agent/skills/code-reviewer/scripts/audit_pr.js +8 -0
- package/.agent/skills/code-reviewer/scripts/audit_pr.v2.js +417 -0
- package/.agent/skills/code-reviewer/scripts/validate_doctrine.js +307 -0
- package/.agent/skills/context-engineering/SKILL.md +86 -0
- package/.agent/skills/context-engineering/references/context-compression.md +84 -0
- package/.agent/skills/context-engineering/references/context-degradation.md +93 -0
- package/.agent/skills/context-engineering/references/context-fundamentals.md +75 -0
- package/.agent/skills/context-engineering/references/context-optimization.md +82 -0
- package/.agent/skills/context-engineering/references/evaluation.md +89 -0
- package/.agent/skills/context-engineering/references/memory-systems.md +88 -0
- package/.agent/skills/context-engineering/references/multi-agent-patterns.md +90 -0
- package/.agent/skills/context-engineering/references/project-development.md +97 -0
- package/.agent/skills/context-engineering/references/tool-design.md +86 -0
- package/.agent/skills/context-engineering/scripts/compression_evaluator.py +329 -0
- package/.agent/skills/context-engineering/scripts/context_analyzer.py +294 -0
- package/.agent/skills/database-design/SKILL.md +52 -0
- package/.agent/skills/database-design/database-selection.md +43 -0
- package/.agent/skills/database-design/indexing.md +39 -0
- package/.agent/skills/database-design/migrations.md +48 -0
- package/.agent/skills/database-design/optimization.md +36 -0
- package/.agent/skills/database-design/orm-selection.md +30 -0
- package/.agent/skills/database-design/schema-design.md +56 -0
- package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agent/skills/debugging/SKILL.md +42 -0
- package/.agent/skills/debugging/defense-in-depth/SKILL.md +130 -0
- package/.agent/skills/debugging/root-cause-tracing/SKILL.md +177 -0
- package/.agent/skills/debugging/root-cause-tracing/find-polluter.sh +63 -0
- package/.agent/skills/debugging/verification-before-completion/SKILL.md +142 -0
- package/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/.agent/skills/doc.md +177 -0
- package/.agent/skills/document-skills/SKILL.md +49 -0
- package/.agent/skills/document-skills/docx/LICENSE.txt +30 -0
- package/.agent/skills/document-skills/docx/SKILL.md +197 -0
- package/.agent/skills/document-skills/docx/docx-js.md +350 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/.agent/skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/.agent/skills/document-skills/docx/ooxml/scripts/pack.py +159 -0
- package/.agent/skills/document-skills/docx/ooxml/scripts/unpack.py +29 -0
- package/.agent/skills/document-skills/docx/ooxml/scripts/validate.py +69 -0
- package/.agent/skills/document-skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/.agent/skills/document-skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/.agent/skills/document-skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/.agent/skills/document-skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/.agent/skills/document-skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/.agent/skills/document-skills/docx/ooxml.md +610 -0
- package/.agent/skills/document-skills/docx/scripts/__init__.py +1 -0
- package/.agent/skills/document-skills/docx/scripts/document.py +1276 -0
- package/.agent/skills/document-skills/docx/scripts/templates/comments.xml +3 -0
- package/.agent/skills/document-skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/.agent/skills/document-skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/.agent/skills/document-skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/.agent/skills/document-skills/docx/scripts/templates/people.xml +3 -0
- package/.agent/skills/document-skills/docx/scripts/utilities.py +374 -0
- package/.agent/skills/document-skills/pdf/LICENSE.txt +30 -0
- package/.agent/skills/document-skills/pdf/SKILL.md +294 -0
- package/.agent/skills/document-skills/pdf/forms.md +205 -0
- package/.agent/skills/document-skills/pdf/reference.md +612 -0
- package/.agent/skills/document-skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/.agent/skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/.agent/skills/document-skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/.agent/skills/document-skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/.agent/skills/document-skills/pdf/scripts/create_validation_image.py +41 -0
- package/.agent/skills/document-skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/.agent/skills/document-skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/.agent/skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/.agent/skills/document-skills/pptx/LICENSE.txt +30 -0
- package/.agent/skills/document-skills/pptx/SKILL.md +484 -0
- package/.agent/skills/document-skills/pptx/html2pptx.md +625 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/.agent/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/.agent/skills/document-skills/pptx/ooxml/scripts/pack.py +159 -0
- package/.agent/skills/document-skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/.agent/skills/document-skills/pptx/ooxml/scripts/validate.py +69 -0
- package/.agent/skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/.agent/skills/document-skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/.agent/skills/document-skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/.agent/skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/.agent/skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/.agent/skills/document-skills/pptx/ooxml.md +427 -0
- package/.agent/skills/document-skills/pptx/scripts/html2pptx.js +979 -0
- package/.agent/skills/document-skills/pptx/scripts/inventory.py +1020 -0
- package/.agent/skills/document-skills/pptx/scripts/rearrange.py +231 -0
- package/.agent/skills/document-skills/pptx/scripts/replace.py +385 -0
- package/.agent/skills/document-skills/pptx/scripts/thumbnail.py +450 -0
- package/.agent/skills/document-skills/xlsx/LICENSE.txt +30 -0
- package/.agent/skills/document-skills/xlsx/SKILL.md +289 -0
- package/.agent/skills/document-skills/xlsx/recalc.py +178 -0
- package/.agent/skills/documentation-templates/SKILL.md +194 -0
- package/.agent/skills/frontend/SKILL.md +38 -0
- package/.agent/skills/frontend/rules/_sections.md +46 -0
- package/.agent/skills/frontend/rules/_template.md +28 -0
- package/.agent/skills/frontend/rules/advanced-event-handler-refs.md +55 -0
- package/.agent/skills/frontend/rules/advanced-init-once.md +42 -0
- package/.agent/skills/frontend/rules/advanced-use-latest.md +39 -0
- package/.agent/skills/frontend/rules/async-api-routes.md +38 -0
- package/.agent/skills/frontend/rules/async-defer-await.md +80 -0
- package/.agent/skills/frontend/rules/async-dependencies.md +51 -0
- package/.agent/skills/frontend/rules/async-parallel.md +28 -0
- package/.agent/skills/frontend/rules/async-suspense-boundaries.md +99 -0
- package/.agent/skills/frontend/rules/bundle-barrel-imports.md +59 -0
- package/.agent/skills/frontend/rules/bundle-conditional.md +31 -0
- package/.agent/skills/frontend/rules/bundle-defer-third-party.md +49 -0
- package/.agent/skills/frontend/rules/bundle-dynamic-imports.md +35 -0
- package/.agent/skills/frontend/rules/bundle-preload.md +50 -0
- package/.agent/skills/frontend/rules/client-event-listeners.md +74 -0
- package/.agent/skills/frontend/rules/client-localstorage-schema.md +71 -0
- package/.agent/skills/frontend/rules/client-passive-event-listeners.md +48 -0
- package/.agent/skills/frontend/rules/client-swr-dedup.md +56 -0
- package/.agent/skills/frontend/rules/js-batch-dom-css.md +107 -0
- package/.agent/skills/frontend/rules/js-cache-function-results.md +80 -0
- package/.agent/skills/frontend/rules/js-cache-property-access.md +28 -0
- package/.agent/skills/frontend/rules/js-cache-storage.md +70 -0
- package/.agent/skills/frontend/rules/js-combine-iterations.md +32 -0
- package/.agent/skills/frontend/rules/js-early-exit.md +50 -0
- package/.agent/skills/frontend/rules/js-hoist-regexp.md +45 -0
- package/.agent/skills/frontend/rules/js-index-maps.md +37 -0
- package/.agent/skills/frontend/rules/js-length-check-first.md +49 -0
- package/.agent/skills/frontend/rules/js-min-max-loop.md +82 -0
- package/.agent/skills/frontend/rules/js-set-map-lookups.md +24 -0
- package/.agent/skills/frontend/rules/js-tosorted-immutable.md +57 -0
- package/.agent/skills/frontend/rules/rendering-activity.md +26 -0
- package/.agent/skills/frontend/rules/rendering-animate-svg-wrapper.md +47 -0
- package/.agent/skills/frontend/rules/rendering-conditional-render.md +40 -0
- package/.agent/skills/frontend/rules/rendering-content-visibility.md +38 -0
- package/.agent/skills/frontend/rules/rendering-hoist-jsx.md +46 -0
- package/.agent/skills/frontend/rules/rendering-hydration-no-flicker.md +82 -0
- package/.agent/skills/frontend/rules/rendering-hydration-suppress-warning.md +30 -0
- package/.agent/skills/frontend/rules/rendering-svg-precision.md +28 -0
- package/.agent/skills/frontend/rules/rendering-usetransition-loading.md +75 -0
- package/.agent/skills/frontend/rules/rerender-defer-reads.md +39 -0
- package/.agent/skills/frontend/rules/rerender-dependencies.md +45 -0
- package/.agent/skills/frontend/rules/rerender-derived-state-no-effect.md +40 -0
- package/.agent/skills/frontend/rules/rerender-derived-state.md +29 -0
- package/.agent/skills/frontend/rules/rerender-functional-setstate.md +74 -0
- package/.agent/skills/frontend/rules/rerender-lazy-state-init.md +58 -0
- package/.agent/skills/frontend/rules/rerender-memo-with-default-value.md +38 -0
- package/.agent/skills/frontend/rules/rerender-memo.md +44 -0
- package/.agent/skills/frontend/rules/rerender-move-effect-to-event.md +45 -0
- package/.agent/skills/frontend/rules/rerender-simple-expression-in-memo.md +35 -0
- package/.agent/skills/frontend/rules/rerender-transitions.md +40 -0
- package/.agent/skills/frontend/rules/rerender-use-ref-transient-values.md +73 -0
- package/.agent/skills/frontend/rules/schema.json +34 -0
- package/.agent/skills/frontend/rules/server-after-nonblocking.md +73 -0
- package/.agent/skills/frontend/rules/server-auth-actions.md +96 -0
- package/.agent/skills/frontend/rules/server-cache-lru.md +41 -0
- package/.agent/skills/frontend/rules/server-cache-react.md +76 -0
- package/.agent/skills/frontend/rules/server-dedup-props.md +65 -0
- package/.agent/skills/frontend/rules/server-parallel-fetching.md +83 -0
- package/.agent/skills/frontend/rules/server-serialization.md +38 -0
- package/.agent/skills/frontend-design/SKILL.md +33 -0
- package/.agent/skills/frontend-design/rules/animation-guide.md +331 -0
- package/.agent/skills/frontend-design/rules/color-system.md +311 -0
- package/.agent/skills/frontend-design/rules/decision-trees.md +418 -0
- package/.agent/skills/frontend-design/rules/motion-graphics.md +306 -0
- package/.agent/skills/frontend-design/rules/typography-system.md +345 -0
- package/.agent/skills/frontend-design/rules/ux-psychology.md +541 -0
- package/.agent/skills/frontend-design/rules/visual-effects.md +383 -0
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/.agent/skills/game-development/SKILL.md +167 -0
- package/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +156 -0
- package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agent/skills/git-conventions/.skill-source.json +8 -0
- package/.agent/skills/git-conventions/SKILL.md +28 -0
- package/.agent/skills/git-conventions/enforcement/commit-validation-rules.md +55 -0
- package/.agent/skills/git-conventions/examples/bad-commits.md +201 -0
- package/.agent/skills/git-conventions/examples/good-commits.md +135 -0
- package/.agent/skills/git-conventions/metadata/commit-config.yaml +79 -0
- package/.agent/skills/git-conventions/metadata/intent-triggers.yaml +25 -0
- package/.agent/skills/git-conventions/metadata/scope-mapping.yaml +83 -0
- package/.agent/skills/git-conventions/resources/BEST_PRACTICES.md +121 -0
- package/.agent/skills/git-conventions/resources/references.md +53 -0
- package/.agent/skills/git-conventions/scripts/format-commit.js +393 -0
- package/.agent/skills/git-conventions/scripts/validate-commit-msg.sh +27 -0
- package/.agent/skills/governance/.skill-source.json +8 -0
- package/.agent/skills/governance/CHANGELOG.md +222 -0
- package/.agent/skills/governance/README.md +250 -0
- package/.agent/skills/governance/SKILL.md +199 -0
- package/.agent/skills/governance/VERSION +4 -0
- package/.agent/skills/governance/examples/violation-backend-mutation/after.tsx +59 -0
- package/.agent/skills/governance/examples/violation-backend-mutation/before.tsx +42 -0
- package/.agent/skills/governance/examples/violation-backend-mutation/explanation.md +87 -0
- package/.agent/skills/governance/examples/violation-chart-injection/after.tsx +99 -0
- package/.agent/skills/governance/examples/violation-chart-injection/before.tsx +57 -0
- package/.agent/skills/governance/examples/violation-chart-injection/explanation.md +116 -0
- package/.agent/skills/governance/knowledge/lessons-learned.yaml +3 -0
- package/.agent/skills/governance/metadata/precedence.yaml +117 -0
- package/.agent/skills/governance/metadata/scope-map.yaml +156 -0
- package/.agent/skills/governance/proposals/v1.1-change-proposal-template.md +197 -0
- package/.agent/skills/governance/resources/AUTHORITY_MODEL.md +111 -0
- package/.agent/skills/governance/resources/ENFORCEMENT_GUIDE.md +242 -0
- package/.agent/skills/governance/resources/LOAD_ORDER.md +82 -0
- package/.agent/skills/governance/rules/constitution/coinpika-master-constitution.md +206 -0
- package/.agent/skills/governance/rules/doctrines/architecture/coinpika-architecture-doctrine.md +184 -0
- package/.agent/skills/governance/rules/doctrines/backend/coinpika-backend-data-engine-doctrine.md +214 -0
- package/.agent/skills/governance/rules/doctrines/commercial/coinpika-commercial-guardrails-doctrine.md +192 -0
- package/.agent/skills/governance/rules/doctrines/data/coinpika-chart-data-doctrine.md +198 -0
- package/.agent/skills/governance/rules/doctrines/frontend/coinpika-frontend-mobile-doctrine.md +165 -0
- package/.agent/skills/governance/rules/doctrines/frontend/coinpika-swipe-tabs-doctrine.md +172 -0
- package/.agent/skills/governance/rules/doctrines/learning/coinpika-learning-engine-doctrine.md +188 -0
- package/.agent/skills/governance/rules/doctrines/performance/coinpika-performance-doctrine.md +176 -0
- package/.agent/skills/governance/rules/doctrines/review/coinpika-code-review-doctrine.md +170 -0
- package/.agent/skills/governance/rules/enforcement/agents/coinpika-agent-enforcement-protocol.md +214 -0
- package/.agent/skills/governance/rules/enforcement/agents/coinpika-agent-system-prompt.md +192 -0
- package/.agent/skills/governance/rules/enforcement/checklists/backend-api-review-checklist.md +127 -0
- package/.agent/skills/governance/rules/enforcement/checklists/chart-component-review-checklist.md +143 -0
- package/.agent/skills/governance/rules/enforcement/checklists/coinpika-frontend-gesture-review-checklist.md +190 -0
- package/.agent/skills/governance/rules/enforcement/playbooks/doctrine-violation-playbook.md +232 -0
- package/.agent/skills/governance/scripts/audit_pr.js +218 -0
- package/.agent/skills/governance/scripts/learn.js +161 -0
- package/.agent/skills/governance/scripts/validate_doctrine.js +286 -0
- package/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agent/skills/intelligent-routing/SKILL.md +335 -0
- package/.agent/skills/lint-and-validate/SKILL.md +45 -0
- package/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
- package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/.agent/skills/mermaidjs-v11/SKILL.md +115 -0
- package/.agent/skills/mermaidjs-v11/references/cli-usage.md +228 -0
- package/.agent/skills/mermaidjs-v11/references/configuration.md +232 -0
- package/.agent/skills/mermaidjs-v11/references/diagram-types.md +315 -0
- package/.agent/skills/mermaidjs-v11/references/examples.md +344 -0
- package/.agent/skills/mermaidjs-v11/references/integration.md +310 -0
- package/.agent/skills/mobile-design/SKILL.md +76 -0
- package/.agent/skills/mobile-design/references/anti-patterns.md +46 -0
- package/.agent/skills/mobile-design/references/decision-trees.md +516 -0
- package/.agent/skills/mobile-design/references/mobile-backend.md +491 -0
- package/.agent/skills/mobile-design/references/mobile-color-system.md +420 -0
- package/.agent/skills/mobile-design/references/mobile-debugging.md +122 -0
- package/.agent/skills/mobile-design/references/mobile-design-thinking.md +357 -0
- package/.agent/skills/mobile-design/references/mobile-navigation.md +458 -0
- package/.agent/skills/mobile-design/references/mobile-performance.md +767 -0
- package/.agent/skills/mobile-design/references/mobile-testing.md +356 -0
- package/.agent/skills/mobile-design/references/mobile-typography.md +433 -0
- package/.agent/skills/mobile-design/references/platform-android.md +666 -0
- package/.agent/skills/mobile-design/references/platform-ios.md +561 -0
- package/.agent/skills/mobile-design/references/touch-psychology.md +537 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agent/skills/nextjs-best-practices/SKILL.md +203 -0
- package/.agent/skills/nodejs-best-practices/SKILL.md +76 -0
- package/.agent/skills/nodejs-best-practices/references/architecture-patterns.md +34 -0
- package/.agent/skills/nodejs-best-practices/references/async-patterns.md +32 -0
- package/.agent/skills/nodejs-best-practices/references/error-handling.md +39 -0
- package/.agent/skills/nodejs-best-practices/references/framework-selection.md +39 -0
- package/.agent/skills/nodejs-best-practices/references/runtime-modules.md +33 -0
- package/.agent/skills/nodejs-best-practices/references/testing-strategy.md +25 -0
- package/.agent/skills/nodejs-best-practices/references/validation-security.md +45 -0
- package/.agent/skills/parallel-agents/SKILL.md +175 -0
- package/.agent/skills/performance-profiling/SKILL.md +143 -0
- package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/.agent/skills/plan-writing/SKILL.md +152 -0
- package/.agent/skills/powershell-windows/SKILL.md +167 -0
- package/.agent/skills/problem-solving/ABOUT.md +40 -0
- package/.agent/skills/problem-solving/SKILL.md +69 -0
- package/.agent/skills/problem-solving/collision-zone-thinking/SKILL.md +62 -0
- package/.agent/skills/problem-solving/inversion-exercise/SKILL.md +58 -0
- package/.agent/skills/problem-solving/meta-pattern-recognition/SKILL.md +54 -0
- package/.agent/skills/problem-solving/scale-game/SKILL.md +63 -0
- package/.agent/skills/problem-solving/simplification-cascades/SKILL.md +76 -0
- package/.agent/skills/problem-solving/when-stuck/SKILL.md +88 -0
- package/.agent/skills/python-patterns/SKILL.md +80 -0
- package/.agent/skills/python-patterns/references/async-patterns.md +57 -0
- package/.agent/skills/python-patterns/references/django-patterns.md +41 -0
- package/.agent/skills/python-patterns/references/fastapi-patterns.md +54 -0
- package/.agent/skills/python-patterns/references/framework-selection.md +39 -0
- package/.agent/skills/python-patterns/references/project-structure.md +80 -0
- package/.agent/skills/python-patterns/references/testing-patterns.md +34 -0
- package/.agent/skills/python-patterns/references/type-hints.md +51 -0
- package/.agent/skills/react-patterns/SKILL.md +198 -0
- package/.agent/skills/red-team-tactics/SKILL.md +199 -0
- package/.agent/skills/registry.json +367 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +129 -0
- package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/.agent/skills/sequential-thinking/README.md +118 -0
- package/.agent/skills/sequential-thinking/SKILL.md +93 -0
- package/.agent/skills/sequential-thinking/references/advanced.md +122 -0
- package/.agent/skills/sequential-thinking/references/examples.md +274 -0
- package/.agent/skills/server-management/SKILL.md +161 -0
- package/.agent/skills/skill-creator/LICENSE.txt +202 -0
- package/.agent/skills/skill-creator/SKILL.md +237 -0
- package/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
- package/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
- package/.agent/skills/skill-creator/scripts/quick_validate.py +65 -0
- package/.agent/skills/systematic-debugging/SKILL.md +109 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
- package/.agent/skills/tdd-workflow/SKILL.md +149 -0
- package/.agent/skills/testing-patterns/SKILL.md +178 -0
- package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
- package/.agent/skills/vulnerability-scanner/checklists.md +121 -0
- package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/.agent/skills/webapp-testing/SKILL.md +187 -0
- package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agent/workflows/architect.md +200 -0
- package/.agent/workflows/autopilot.md +254 -0
- package/.agent/workflows/boost.md +163 -0
- package/.agent/workflows/build.md +192 -0
- package/.agent/workflows/chronicle.md +172 -0
- package/.agent/workflows/diagnose.md +207 -0
- package/.agent/workflows/forge.md +123 -0
- package/.agent/workflows/inspect.md +187 -0
- package/.agent/workflows/launch.md +208 -0
- package/.agent/workflows/pulse.md +115 -0
- package/.agent/workflows/stage.md +117 -0
- package/.agent/workflows/studio.md +319 -0
- package/.agent/workflows/think.md +173 -0
- package/.agent/workflows/validate.md +226 -0
- package/.editorconfig +21 -0
- package/.github/workflows/release.yml +39 -0
- package/CHANGELOG.md +38 -0
- package/LICENSE +16 -0
- package/README.md +294 -0
- package/VERSIONING.md +45 -0
- package/docs/PATTERNS_REFERENCE.md +93 -0
- package/docs/PLAN-consolidation-final.md +14 -0
- package/docs/PLAN-integration.md +28 -0
- package/docs/PLAN-rebrand-agent-skills-kit.md +104 -0
- package/docs/PLAN-refactor.md +48 -0
- package/docs/PYTHON_SCRIPTS.md +55 -0
- package/docs/awf-user-guide.md +436 -0
- package/docs/context-engineering-guide.md +99 -0
- package/package.json +38 -0
- package/packages/cli/.agent/knowledge/lessons-learned.yaml +32 -0
- package/packages/cli/bin/ag-smart.js +155 -0
- package/packages/cli/bin/ag-smart.v1.js +78 -0
- package/packages/cli/lib/audit.js +69 -0
- package/packages/cli/lib/audit.v2.js +151 -0
- package/packages/cli/lib/auto-learn.js +319 -0
- package/packages/cli/lib/auto_preview.py +148 -0
- package/packages/cli/lib/checklist.py +222 -0
- package/packages/cli/lib/config.js +29 -0
- package/packages/cli/lib/eslint-fix.js +238 -0
- package/packages/cli/lib/fix.js +278 -0
- package/packages/cli/lib/generate-registry.js +42 -0
- package/packages/cli/lib/hooks/install-hooks.js +176 -0
- package/packages/cli/lib/hooks/lint-learn.js +172 -0
- package/packages/cli/lib/learn.js +173 -0
- package/packages/cli/lib/learn.test.js +70 -0
- package/packages/cli/lib/learn.v2.js +255 -0
- package/packages/cli/lib/recall.js +75 -0
- package/packages/cli/lib/recall.v2.js +252 -0
- package/packages/cli/lib/session_manager.py +120 -0
- package/packages/cli/lib/skill-learn.js +296 -0
- package/packages/cli/lib/stats.js +143 -0
- package/packages/cli/lib/types.js +33 -0
- package/packages/cli/lib/verify_all.py +327 -0
- package/packages/cli/lib/watcher.js +181 -0
- package/packages/cli/package-lock.json +1837 -0
- package/packages/cli/package.json +23 -0
- package/packages/cli/vitest.config.js +9 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// ✅ CORRECT: Backend as source of truth
|
|
2
|
+
// Follows Law 1 (Truth Ownership)
|
|
3
|
+
|
|
4
|
+
import { useQuery } from '@tanstack/react-query';
|
|
5
|
+
import { api } from '@/lib/api';
|
|
6
|
+
|
|
7
|
+
export function CoinPriceCard({ coinId }: { coinId: string }) {
|
|
8
|
+
// ✅ Frontend only consumes backend data
|
|
9
|
+
const { data } = useQuery({
|
|
10
|
+
queryKey: ['coin', coinId, 'price'],
|
|
11
|
+
queryFn: () => api.getCoinPrice(coinId),
|
|
12
|
+
refetchInterval: 5000, // Backend controls refresh rate
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// ✅ NO local state for truth
|
|
16
|
+
// ✅ NO direct external API calls
|
|
17
|
+
// ✅ NO frontend calculations
|
|
18
|
+
// ✅ NO localStorage for financial data
|
|
19
|
+
|
|
20
|
+
if (!data) return <div>Loading...</div>;
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<div>
|
|
24
|
+
{/* ✅ Display backend-provided data only */}
|
|
25
|
+
<p>Price: ${data.currentPrice}</p>
|
|
26
|
+
<p>24h Avg: ${data.avg24h}</p>
|
|
27
|
+
|
|
28
|
+
{/* Backend metadata */}
|
|
29
|
+
<p className="text-xs text-gray-500">
|
|
30
|
+
Updated: {new Date(data.timestamp).toLocaleTimeString()}
|
|
31
|
+
</p>
|
|
32
|
+
</div>
|
|
33
|
+
);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// ✅ Backend API implementation (separate service)
|
|
37
|
+
// /api/coins/[coinId]/price.ts
|
|
38
|
+
export async function GET(req: Request, { params }: { params: { coinId: string } }) {
|
|
39
|
+
// ✅ Backend owns the truth
|
|
40
|
+
const price = await db.coinPrices.findFirst({
|
|
41
|
+
where: { coinId: params.coinId },
|
|
42
|
+
orderBy: { timestamp: 'desc' },
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
// ✅ Backend calculates aggregates
|
|
46
|
+
const avg24h = await db.coinPrices.aggregate({
|
|
47
|
+
where: {
|
|
48
|
+
coinId: params.coinId,
|
|
49
|
+
timestamp: { gte: new Date(Date.now() - 24 * 60 * 60 * 1000) },
|
|
50
|
+
},
|
|
51
|
+
_avg: { price: true },
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
return Response.json({
|
|
55
|
+
currentPrice: price.price,
|
|
56
|
+
avg24h: avg24h._avg.price,
|
|
57
|
+
timestamp: price.timestamp,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// ❌ VIOLATION: Frontend mutating backend data
|
|
2
|
+
// This violates Law 1 (Truth Ownership)
|
|
3
|
+
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
|
|
6
|
+
export function CoinPriceCard({ coinId }: { coinId: string }) {
|
|
7
|
+
const [price, setPrice] = useState<number>(0);
|
|
8
|
+
const [history, setHistory] = useState<number[]>([]);
|
|
9
|
+
|
|
10
|
+
// VIOLATION: Frontend making truth decisions
|
|
11
|
+
const updatePrice = (newPrice: number) => {
|
|
12
|
+
// ❌ Directly mutating price state
|
|
13
|
+
setPrice(newPrice);
|
|
14
|
+
|
|
15
|
+
// ❌ CRITICAL VIOLATION: Frontend managing historical data
|
|
16
|
+
setHistory(prev => [...prev, newPrice]);
|
|
17
|
+
|
|
18
|
+
// ❌ Frontend calculating aggregates
|
|
19
|
+
const avg = history.reduce((a, b) => a + b, 0) / history.length;
|
|
20
|
+
|
|
21
|
+
// ❌ Frontend persisting to localStorage
|
|
22
|
+
localStorage.setItem(`coin_${coinId}_price`, newPrice.toString());
|
|
23
|
+
localStorage.setItem(`coin_${coinId}_history`, JSON.stringify(history));
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// ❌ Frontend calling external API directly
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
fetch(`https://api.coingecko.com/api/v3/coins/${coinId}`)
|
|
29
|
+
.then(res => res.json())
|
|
30
|
+
.then(data => {
|
|
31
|
+
// ❌ Frontend processing raw external data
|
|
32
|
+
updatePrice(data.market_data.current_price.usd);
|
|
33
|
+
});
|
|
34
|
+
}, [coinId]);
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<div>
|
|
38
|
+
<p>Price: ${price}</p>
|
|
39
|
+
<p>24h Avg: ${avg}</p>
|
|
40
|
+
</div>
|
|
41
|
+
);
|
|
42
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Backend Mutation Violation Example
|
|
2
|
+
|
|
3
|
+
## Why This Matters
|
|
4
|
+
|
|
5
|
+
This example demonstrates **Law 1: Truth Ownership** from the Master Constitution.
|
|
6
|
+
|
|
7
|
+
### The Problem (before.tsx)
|
|
8
|
+
|
|
9
|
+
The frontend is:
|
|
10
|
+
1. ❌ Making truth decisions about prices
|
|
11
|
+
2. ❌ Managing historical data locally
|
|
12
|
+
3. ❌ Calculating financial aggregates
|
|
13
|
+
4. ❌ Persisting data to localStorage
|
|
14
|
+
5. ❌ Calling external APIs directly
|
|
15
|
+
|
|
16
|
+
### The Systemic Risks
|
|
17
|
+
|
|
18
|
+
1. **Data Inconsistency**
|
|
19
|
+
- Different users see different "truths"
|
|
20
|
+
- No single source of historical accuracy
|
|
21
|
+
- Aggregates vary by client state
|
|
22
|
+
|
|
23
|
+
2. **Correctness Failure**
|
|
24
|
+
- Frontend can be manipulated via DevTools
|
|
25
|
+
- localStorage can be corrupted
|
|
26
|
+
- No data validation or normalization
|
|
27
|
+
|
|
28
|
+
3. **Scalability Failure**
|
|
29
|
+
- Every client directly hammers external APIs
|
|
30
|
+
- No rate limiting or caching
|
|
31
|
+
- Amplification under load
|
|
32
|
+
|
|
33
|
+
4. **Commercial Risk**
|
|
34
|
+
- Users making financial decisions on unverified data
|
|
35
|
+
- Potential for data manipulation
|
|
36
|
+
- No audit trail
|
|
37
|
+
|
|
38
|
+
### The Solution (after.tsx)
|
|
39
|
+
|
|
40
|
+
The backend:
|
|
41
|
+
- ✅ Owns all truth
|
|
42
|
+
- ✅ Manages historical data
|
|
43
|
+
- ✅ Calculates aggregates
|
|
44
|
+
- ✅ Validates and normalizes external data
|
|
45
|
+
- ✅ Provides cacheable, rate-limited API
|
|
46
|
+
|
|
47
|
+
The frontend:
|
|
48
|
+
- ✅ Only displays backend-provided data
|
|
49
|
+
- ✅ Has no local truth
|
|
50
|
+
- ✅ Cannot manipulate financial data
|
|
51
|
+
- ✅ Stateless and predictable
|
|
52
|
+
|
|
53
|
+
## Constitutional Justification
|
|
54
|
+
|
|
55
|
+
> **Law 1 — Truth Ownership**
|
|
56
|
+
>
|
|
57
|
+
> The backend is the **single source of truth**.
|
|
58
|
+
>
|
|
59
|
+
> If the frontend can alter financial meaning, the system is architecturally broken.
|
|
60
|
+
|
|
61
|
+
From: `constitution/coinpika-master-constitution.md`
|
|
62
|
+
|
|
63
|
+
## Architecture Doctrine
|
|
64
|
+
|
|
65
|
+
> The frontend MUST NEVER:
|
|
66
|
+
> - Depend directly on external APIs (production)
|
|
67
|
+
> - Reconstruct backend meaning
|
|
68
|
+
> - Patch missing data
|
|
69
|
+
>
|
|
70
|
+
> If the frontend can "fix" backend data, the architecture is invalid.
|
|
71
|
+
|
|
72
|
+
From: `doctrines/architecture/coinpika-architecture-doctrine.md`
|
|
73
|
+
|
|
74
|
+
## When to Apply This Pattern
|
|
75
|
+
|
|
76
|
+
- Any financial data (prices, volumes, balances)
|
|
77
|
+
- Any historical data (charts, aggregates, trends)
|
|
78
|
+
- Any calculated data (averages, percentiles, rankings)
|
|
79
|
+
- Any persistent data (portfolios, watchlists, settings with financial impact)
|
|
80
|
+
|
|
81
|
+
## Key Takeaway
|
|
82
|
+
|
|
83
|
+
**The frontend is a VIEW, not a CALCULATOR.**
|
|
84
|
+
|
|
85
|
+
If you're writing `localStorage.setItem()` with financial data, or calculating aggregates in a React component, you're violating the Constitution.
|
|
86
|
+
|
|
87
|
+
Stop, redesign, and move the logic to the backend.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// ✅ CORRECT: Realtime and historical data strictly separated
|
|
2
|
+
// Follows Law 3 (Realtime Ephemerality) and Law 4 (Chart Truthfulness)
|
|
3
|
+
|
|
4
|
+
import { useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { createChart } from 'lightweight-charts';
|
|
6
|
+
|
|
7
|
+
export function BitcoinChart() {
|
|
8
|
+
const chartRef = useRef<any>(null);
|
|
9
|
+
const seriesRef = useRef<any>(null);
|
|
10
|
+
|
|
11
|
+
// ✅ SEPARATE state for realtime display
|
|
12
|
+
const [realtimePrice, setRealtimePrice] = useState<number | null>(null);
|
|
13
|
+
const [realtimeChange, setRealtimeChange] = useState<number>(0);
|
|
14
|
+
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
const chart = createChart(chartRef.current, { width: 600, height: 400 });
|
|
17
|
+
const series = chart.addLineSeries();
|
|
18
|
+
|
|
19
|
+
// ✅ Load ONLY historical data into chart
|
|
20
|
+
fetch('/api/bitcoin/historical')
|
|
21
|
+
.then(res => res.json())
|
|
22
|
+
.then(data => {
|
|
23
|
+
series.setData(data); // Immutable historical record
|
|
24
|
+
|
|
25
|
+
// ✅ Use last historical point as baseline for realtime change
|
|
26
|
+
const lastPrice = data[data.length - 1].value;
|
|
27
|
+
setRealtimeChange(0); // Reset change against history
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// ✅ WebSocket for DISPLAY ONLY
|
|
31
|
+
const ws = new WebSocket('wss://stream.binance.com/ws/btcusdt@trade');
|
|
32
|
+
|
|
33
|
+
ws.onmessage = (event) => {
|
|
34
|
+
const tick = JSON.parse(event.data);
|
|
35
|
+
const price = parseFloat(tick.p);
|
|
36
|
+
|
|
37
|
+
// ✅ Update ephemeral display state ONLY
|
|
38
|
+
setRealtimePrice(price);
|
|
39
|
+
|
|
40
|
+
// ✅ Calculate change from last HISTORICAL close
|
|
41
|
+
const lastHistoricalPrice = series.data()[series.data().length - 1].value;
|
|
42
|
+
setRealtimeChange(((price - lastHistoricalPrice) / lastHistoricalPrice) * 100);
|
|
43
|
+
|
|
44
|
+
// ✅ NO modification to chart data
|
|
45
|
+
// ✅ NO persistence
|
|
46
|
+
// ✅ NO mixing historical and realtime
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
seriesRef.current = series;
|
|
50
|
+
|
|
51
|
+
return () => ws.close();
|
|
52
|
+
}, []);
|
|
53
|
+
|
|
54
|
+
return (
|
|
55
|
+
<div>
|
|
56
|
+
{/* ✅ Historical chart (immutable) */}
|
|
57
|
+
<div ref={chartRef} />
|
|
58
|
+
|
|
59
|
+
{/* ✅ Separate realtime display */}
|
|
60
|
+
<div className="realtime-ticker bg-gray-900 p-4 mt-2">
|
|
61
|
+
<p className="text-sm text-gray-400">Live Price (not in chart)</p>
|
|
62
|
+
<p className="text-2xl font-bold">
|
|
63
|
+
${realtimePrice?.toLocaleString() ?? '---'}
|
|
64
|
+
</p>
|
|
65
|
+
<p className={realtimeChange >= 0 ? 'text-green-500' : 'text-red-500'}>
|
|
66
|
+
{realtimeChange >= 0 ? '↑' : '↓'} {Math.abs(realtimeChange).toFixed(2)}%
|
|
67
|
+
</p>
|
|
68
|
+
<p className="text-xs text-gray-500 mt-1">
|
|
69
|
+
Since last close • Ephemeral • Not persisted
|
|
70
|
+
</p>
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// ✅ Backend aggregates realtime into historical at fixed intervals
|
|
77
|
+
// /api/cron/aggregate-bitcoin-price.ts (runs every 5 minutes)
|
|
78
|
+
export async function aggregateRealtimeToHistory() {
|
|
79
|
+
// ✅ Collect realtime ticks from last 5 minutes
|
|
80
|
+
const realtimeTicks = await redis.lrange('btc:ticks:last5m', 0, -1);
|
|
81
|
+
|
|
82
|
+
// ✅ Calculate OHLCV from ticks
|
|
83
|
+
const candle = calculateOHLCV(realtimeTicks);
|
|
84
|
+
|
|
85
|
+
// ✅ APPEND to historical data (immutable)
|
|
86
|
+
await db.bitcoinHistory.create({
|
|
87
|
+
data: {
|
|
88
|
+
timestamp: candle.timestamp,
|
|
89
|
+
open: candle.open,
|
|
90
|
+
high: candle.high,
|
|
91
|
+
low: candle.low,
|
|
92
|
+
close: candle.close,
|
|
93
|
+
volume: candle.volume,
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// ✅ Clear realtime buffer
|
|
98
|
+
await redis.del('btc:ticks:last5m');
|
|
99
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// ❌ VIOLATION: Realtime ticks injected into historical chart
|
|
2
|
+
// Violates Law 3 (Realtime Ephemerality) and Law 4 (Chart Truthfulness)
|
|
3
|
+
|
|
4
|
+
import { useEffect, useRef } from 'react';
|
|
5
|
+
import { createChart } from 'lightweight-charts';
|
|
6
|
+
|
|
7
|
+
export function BitcoinChart() {
|
|
8
|
+
const chartRef = useRef<any>(null);
|
|
9
|
+
const seriesRef = useRef<any>(null);
|
|
10
|
+
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const chart = createChart(chartRef.current, { width: 600, height: 400 });
|
|
13
|
+
const series = chart.addLineSeries();
|
|
14
|
+
|
|
15
|
+
// ✅ Load historical data (OK)
|
|
16
|
+
fetch('/api/bitcoin/historical')
|
|
17
|
+
.then(res => res.json())
|
|
18
|
+
.then(data => {
|
|
19
|
+
series.setData(data); // Historical data
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
// ❌ CRITICAL VIOLATION: WebSocket realtime injection
|
|
23
|
+
const ws = new WebSocket('wss://stream.binance.com/ws/btcusdt@trade');
|
|
24
|
+
|
|
25
|
+
ws.onmessage = (event) => {
|
|
26
|
+
const tick = JSON.parse(event.data);
|
|
27
|
+
const price = parseFloat(tick.p);
|
|
28
|
+
const time = Math.floor(tick.T / 1000);
|
|
29
|
+
|
|
30
|
+
// ❌ VIOLATION: Adding realtime tick to historical chart
|
|
31
|
+
series.update({
|
|
32
|
+
time,
|
|
33
|
+
value: price,
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// ❌ VIOLATION: Persisting realtime as history
|
|
37
|
+
const existingData = series.data();
|
|
38
|
+
const updated = [...existingData, { time, value: price }];
|
|
39
|
+
|
|
40
|
+
// ❌ This permanently alters the historical record
|
|
41
|
+
series.setData(updated);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
seriesRef.current = series;
|
|
45
|
+
|
|
46
|
+
return () => ws.close();
|
|
47
|
+
}, []);
|
|
48
|
+
|
|
49
|
+
return <div ref={chartRef} />;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ❌ Result: Chart now contains MIX of:
|
|
53
|
+
// - Historical aggregated data (5m candles from backend)
|
|
54
|
+
// - Realtime individual ticks (streaming)
|
|
55
|
+
//
|
|
56
|
+
// This is FORBIDDEN. Users cannot distinguish history from realtime.
|
|
57
|
+
// The chart is now lying about the past.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Chart Injection Violation Example
|
|
2
|
+
|
|
3
|
+
## Why This Matters
|
|
4
|
+
|
|
5
|
+
This example demonstrates **Law 3: Realtime Ephemerality** and **Law 4: Chart Truthfulness**.
|
|
6
|
+
|
|
7
|
+
### The Problem (before.tsx)
|
|
8
|
+
|
|
9
|
+
The implementation:
|
|
10
|
+
1. ❌ Mixes realtime ticks with historical aggregates
|
|
11
|
+
2. ❌ Mutates historical chart data
|
|
12
|
+
3. ❌ Persists ephemeral realtime as permanent history
|
|
13
|
+
4. ❌ Misleads users about data accuracy
|
|
14
|
+
|
|
15
|
+
### The Systemic Risks
|
|
16
|
+
|
|
17
|
+
1. **Data Corruption**
|
|
18
|
+
- Historical chart contains individual ticks (millisecond resolution)
|
|
19
|
+
- Mixed with 5-minute aggregated candles
|
|
20
|
+
- Impossible to distinguish which is which
|
|
21
|
+
- Chart appears "more accurate" but is actually lying
|
|
22
|
+
|
|
23
|
+
2. **Financial Incorrectness**
|
|
24
|
+
- Users making decisions on fake "historical" data
|
|
25
|
+
- Backtesting on contaminated data produces wrong signals
|
|
26
|
+
- Aggregates (MA, RSI) calculated on mixed data are invalid
|
|
27
|
+
|
|
28
|
+
3. **Performance Degradation**
|
|
29
|
+
- Chart contains thousands of individual ticks
|
|
30
|
+
- Memory bloat as realtime data accumulates
|
|
31
|
+
- Rendering lag from excessive data points
|
|
32
|
+
|
|
33
|
+
4. **Predictability Failure**
|
|
34
|
+
- Refresh page → different data (depends on when you connected to WebSocket)
|
|
35
|
+
- Users see different "history"
|
|
36
|
+
- No reproducibility
|
|
37
|
+
|
|
38
|
+
### The Solution (after.tsx)
|
|
39
|
+
|
|
40
|
+
**Separation of Concerns**:
|
|
41
|
+
|
|
42
|
+
1. **Historical Chart** (Immutable)
|
|
43
|
+
- Only contains backend-aggregated data
|
|
44
|
+
- Consistent across all users
|
|
45
|
+
- Never modified by frontend
|
|
46
|
+
- Refreshing shows same data
|
|
47
|
+
|
|
48
|
+
2. **Realtime Display** (Ephemeral)
|
|
49
|
+
- Separate visual component
|
|
50
|
+
- Clearly labeled "Live Price"
|
|
51
|
+
- Not persisted
|
|
52
|
+
- Not in chart
|
|
53
|
+
- Shows change from last historical close
|
|
54
|
+
|
|
55
|
+
3. **Backend Aggregation** (Truth)
|
|
56
|
+
- Backend collects realtime ticks
|
|
57
|
+
- Aggregates at fixed intervals (5min)
|
|
58
|
+
- Appends to historical table
|
|
59
|
+
- Frontend receives pre-aggregated data
|
|
60
|
+
|
|
61
|
+
## Constitutional Justification
|
|
62
|
+
|
|
63
|
+
> **Law 3 — Realtime Ephemerality**
|
|
64
|
+
>
|
|
65
|
+
> Realtime data is transient and display-only.
|
|
66
|
+
> It MUST NOT:
|
|
67
|
+
> - Be persisted as history
|
|
68
|
+
> - Affect aggregates
|
|
69
|
+
> - Contaminate charts
|
|
70
|
+
|
|
71
|
+
> **Law 4 — Chart Truthfulness**
|
|
72
|
+
>
|
|
73
|
+
> Charts represent historical financial truth, not realtime excitement.
|
|
74
|
+
> Realtime ticks MUST NEVER be injected into charts.
|
|
75
|
+
|
|
76
|
+
From: `constitution/coinpika-master-constitution.md`
|
|
77
|
+
|
|
78
|
+
## Chart Data Doctrine
|
|
79
|
+
|
|
80
|
+
> Historical data and realtime data MUST be visually and architecturally separated.
|
|
81
|
+
>
|
|
82
|
+
> If a user cannot distinguish historical from realtime, the system is broken.
|
|
83
|
+
|
|
84
|
+
From: `doctrines/data/coinpika-chart-data-doctrine.md`
|
|
85
|
+
|
|
86
|
+
## Visual Separation Examples
|
|
87
|
+
|
|
88
|
+
### ✅ Good Patterns
|
|
89
|
+
- Separate "Live Price" badge above/below chart
|
|
90
|
+
- Realtime ticker with "ephemeral" label
|
|
91
|
+
- Crosshair showing "last close" vs "current price"
|
|
92
|
+
- Explicit timestamp showing historical data ends
|
|
93
|
+
|
|
94
|
+
### ❌ Bad Patterns
|
|
95
|
+
- Extending chart line with realtime ticks
|
|
96
|
+
- Updating last candle with realtime data
|
|
97
|
+
- Showing realtime on same Y-axis scale without separation
|
|
98
|
+
- Any approach where user can't tell what's historical
|
|
99
|
+
|
|
100
|
+
## When to Apply This Pattern
|
|
101
|
+
|
|
102
|
+
- **Always** when displaying charts
|
|
103
|
+
- **Always** when showing financial time-series
|
|
104
|
+
- **Always** when mixing historical + realtime
|
|
105
|
+
- **Always** when users make trading decisions
|
|
106
|
+
|
|
107
|
+
## Key Takeaway
|
|
108
|
+
|
|
109
|
+
**Charts show HISTORY. Realtime shows NOW. Never mix them.**
|
|
110
|
+
|
|
111
|
+
If your chart is "updating in realtime," you're violating Laws 3 and 4.
|
|
112
|
+
|
|
113
|
+
Historical data is **append-only from the backend**.
|
|
114
|
+
Realtime data is **ephemeral display-only in the frontend**.
|
|
115
|
+
|
|
116
|
+
Stop, separate, and preserve chart truthfulness.
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# CoinPika Doctrine Precedence Map
|
|
2
|
+
# Defines absolute authority order for conflict resolution.
|
|
3
|
+
# Higher precedence ALWAYS overrides lower precedence.
|
|
4
|
+
# No implicit override is permitted.
|
|
5
|
+
|
|
6
|
+
version: 1.0.0
|
|
7
|
+
status: LOCKED
|
|
8
|
+
authority: SUPREME
|
|
9
|
+
|
|
10
|
+
precedence:
|
|
11
|
+
- id: coinpika-master-constitution
|
|
12
|
+
level: 0
|
|
13
|
+
authority: supreme
|
|
14
|
+
description: >
|
|
15
|
+
Ultimate constitutional authority.
|
|
16
|
+
Overrides all doctrines, skills, enforcement rules,
|
|
17
|
+
agent behavior, and developer preference.
|
|
18
|
+
|
|
19
|
+
- id: coinpika-architecture-doctrine
|
|
20
|
+
level: 1
|
|
21
|
+
authority: constitutional
|
|
22
|
+
description: >
|
|
23
|
+
System-wide architectural boundaries, ownership,
|
|
24
|
+
scalability invariants, and dependency direction.
|
|
25
|
+
|
|
26
|
+
- id: coinpika-backend-data-engine-doctrine
|
|
27
|
+
level: 2
|
|
28
|
+
authority: constitutional
|
|
29
|
+
description: >
|
|
30
|
+
Backend truth ownership, ingestion taxonomy,
|
|
31
|
+
persistence, caching, and cost control laws.
|
|
32
|
+
|
|
33
|
+
- id: coinpika-chart-data-doctrine
|
|
34
|
+
level: 3
|
|
35
|
+
authority: constitutional
|
|
36
|
+
description: >
|
|
37
|
+
Financial data integrity, historical immutability,
|
|
38
|
+
and chart truth enforcement.
|
|
39
|
+
|
|
40
|
+
- id: coinpika-commercial-guardrails-doctrine
|
|
41
|
+
level: 4
|
|
42
|
+
authority: constitutional
|
|
43
|
+
description: >
|
|
44
|
+
Enterprise safety, legal exposure,
|
|
45
|
+
blast radius control, and business continuity rules.
|
|
46
|
+
|
|
47
|
+
- id: coinpika-performance-doctrine
|
|
48
|
+
level: 5
|
|
49
|
+
authority: constitutional
|
|
50
|
+
description: >
|
|
51
|
+
User-perceived performance, visual stability,
|
|
52
|
+
cache-first rendering, and trust preservation.
|
|
53
|
+
|
|
54
|
+
- id: coinpika-frontend-mobile-doctrine
|
|
55
|
+
level: 6
|
|
56
|
+
authority: constitutional
|
|
57
|
+
description: >
|
|
58
|
+
Mobile-first layout invariants, scroll ownership,
|
|
59
|
+
and structural UX rules.
|
|
60
|
+
|
|
61
|
+
- id: coinpika-swipe-tabs-doctrine
|
|
62
|
+
level: 7
|
|
63
|
+
authority: constitutional
|
|
64
|
+
description: >
|
|
65
|
+
Universal swipe-tab architecture,
|
|
66
|
+
gesture arbitration, and navigation consistency.
|
|
67
|
+
|
|
68
|
+
- id: coinpika-code-review-doctrine
|
|
69
|
+
level: 8
|
|
70
|
+
authority: enforcement
|
|
71
|
+
description: >
|
|
72
|
+
Review authority, rejection rules,
|
|
73
|
+
and enforcement of architectural law.
|
|
74
|
+
|
|
75
|
+
- id: coinpika-learning-engine-doctrine
|
|
76
|
+
level: 9
|
|
77
|
+
authority: controlled-learning
|
|
78
|
+
description: >
|
|
79
|
+
Controlled reasoning improvement,
|
|
80
|
+
learning boundaries, and rollback rules.
|
|
81
|
+
|
|
82
|
+
- id: coinpika-agent-enforcement-protocol
|
|
83
|
+
level: 10
|
|
84
|
+
authority: enforcement
|
|
85
|
+
description: >
|
|
86
|
+
AI agent permission model,
|
|
87
|
+
compliance enforcement, and shutdown rules.
|
|
88
|
+
|
|
89
|
+
- id: coinpika-frontend-gesture-review-checklist
|
|
90
|
+
level: 11
|
|
91
|
+
authority: enforcement
|
|
92
|
+
description: >
|
|
93
|
+
Hard merge gate for frontend gesture
|
|
94
|
+
and scroll-related changes.
|
|
95
|
+
|
|
96
|
+
- id: developer-or-agent-preference
|
|
97
|
+
level: 99
|
|
98
|
+
authority: none
|
|
99
|
+
description: >
|
|
100
|
+
Lowest priority.
|
|
101
|
+
Never allowed to override any doctrine or law.
|
|
102
|
+
|
|
103
|
+
resolution_rules:
|
|
104
|
+
- rule: higher_precedence_wins
|
|
105
|
+
description: >
|
|
106
|
+
When two documents conflict, the document
|
|
107
|
+
with the LOWER level number wins.
|
|
108
|
+
|
|
109
|
+
- rule: ambiguity_equals_rejection
|
|
110
|
+
description: >
|
|
111
|
+
If conflict resolution is ambiguous,
|
|
112
|
+
the change MUST be rejected.
|
|
113
|
+
|
|
114
|
+
- rule: no_silent_override
|
|
115
|
+
description: >
|
|
116
|
+
Overrides must be explicit, versioned,
|
|
117
|
+
and approved via a Change Proposal.
|