@caddis/cli 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -16
- package/bundles/antigravity-plugin-extras/plugin.json +5 -0
- package/bundles/antigravity-plugin-extras/skills/_registry.md +154 -0
- package/bundles/antigravity-plugin-extras/skills/agent-md-refactor/SKILL.md +356 -0
- package/bundles/antigravity-plugin-extras/skills/agent-orchestration/SKILL.md +517 -0
- package/bundles/antigravity-plugin-extras/skills/algorithmic-art/SKILL.md +293 -0
- package/bundles/antigravity-plugin-extras/skills/anchor-review/SKILL.md +135 -0
- package/bundles/antigravity-plugin-extras/skills/api-client-patterns/SKILL.md +367 -0
- package/bundles/antigravity-plugin-extras/skills/architecture-design/SKILL.md +244 -0
- package/bundles/antigravity-plugin-extras/skills/architecture-diagram/SKILL.md +156 -0
- package/bundles/antigravity-plugin-extras/skills/architecture-document/SKILL.md +321 -0
- package/bundles/antigravity-plugin-extras/skills/artifacts-builder/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/artifacts-builder/SKILL.md +74 -0
- package/bundles/antigravity-plugin-extras/skills/artifacts-builder/scripts/bundle-artifact.sh +54 -0
- package/bundles/antigravity-plugin-extras/skills/artifacts-builder/scripts/init-artifact.sh +322 -0
- package/bundles/antigravity-plugin-extras/skills/artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/bundles/antigravity-plugin-extras/skills/ascii-art/SKILL.md +144 -0
- package/bundles/antigravity-plugin-extras/skills/asking-questions/SKILL.md +81 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/SKILL.md +118 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/cross-service/credential-management.md +450 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/browser/README.md +363 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/code-interpreter/README.md +232 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/README.md +100 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/deploy-template.sh +117 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/deployment-strategies.md +416 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/troubleshooting-guide.md +384 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/gateway/validate-deployment.sh +186 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/identity/README.md +186 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/memory/README.md +253 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/observability/README.md +517 -0
- package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/services/runtime/README.md +215 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cdk-development/SKILL.md +279 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cdk-development/references/cdk-patterns.md +431 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cdk-development/scripts/validate-stack.sh +240 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cost-operations/SKILL.md +318 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cost-operations/references/cloudwatch-alarms.md +567 -0
- package/bundles/antigravity-plugin-extras/skills/aws-cost-operations/references/operations-patterns.md +394 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/SKILL.md +758 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/deployment-best-practices.md +830 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/eda-patterns.md +1002 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/observability-best-practices.md +770 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/performance-optimization.md +671 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/security-best-practices.md +625 -0
- package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/references/serverless-patterns.md +838 -0
- package/bundles/antigravity-plugin-extras/skills/backend-to-frontend-handoff/SKILL.md +139 -0
- package/bundles/antigravity-plugin-extras/skills/banner-design/SKILL.md +188 -0
- package/bundles/antigravity-plugin-extras/skills/brand-design/SKILL.md +298 -0
- package/bundles/antigravity-plugin-extras/skills/brand-guidelines/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/brand-guidelines/SKILL.md +118 -0
- package/bundles/antigravity-plugin-extras/skills/brand-voice/SKILL.md +93 -0
- package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/SKILL.md +392 -0
- package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/agent-patterns.md +461 -0
- package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/examples.md +188 -0
- package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/state-patterns.md +360 -0
- package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/references/troubleshooting.md +362 -0
- package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/SKILL.md +266 -0
- package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/references/examples.md +115 -0
- package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +338 -0
- package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +317 -0
- package/bundles/antigravity-plugin-extras/skills/caching-patterns/SKILL.md +385 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/SKILL.md +91 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/bundles/antigravity-plugin-extras/skills/changelog-generator/SKILL.md +105 -0
- package/bundles/antigravity-plugin-extras/skills/code-explainer/SKILL.md +91 -0
- package/bundles/antigravity-plugin-extras/skills/competitive-ads-extractor/SKILL.md +294 -0
- package/bundles/antigravity-plugin-extras/skills/component-testing/SKILL.md +310 -0
- package/bundles/antigravity-plugin-extras/skills/content-research-writer/SKILL.md +539 -0
- package/bundles/antigravity-plugin-extras/skills/cross-review/SKILL.md +51 -0
- package/bundles/antigravity-plugin-extras/skills/data-analysis/SKILL.md +111 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/README.md +248 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/SKILL.md +203 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/adapter.py.template +44 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/api-router.py.template +43 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/contract-test.py.template +384 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/display-dto.py.template +39 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/frontend-service.ts.template +46 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/frontend-types.ts.template +38 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/ingestion-model.py.template +42 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/mapping-doc.md.template +46 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/normalizer.py.template +48 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/prompts/extract_requirements.md +36 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/prompts/extract_ui_demand.md +35 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/prompts/reconcile_mapping.md +66 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/assets/query-catalog.md.template +62 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/references/consumer-driven-contracts.md +131 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/references/drift-check-catalog.md +305 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/references/layer-responsibilities.md +333 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/discover_connections.py +170 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/discover_sources.py +161 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/drift_check.py +171 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/extract_schema.py +1363 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/generate_gap_report.py +81 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/generate_mapping_doc.py +294 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/ts_dto_compare.py +214 -0
- package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/scripts/validate_lineage.py +51 -0
- package/bundles/antigravity-plugin-extras/skills/data-loader/SKILL.md +753 -0
- package/bundles/antigravity-plugin-extras/skills/data-validation/SKILL.md +220 -0
- package/bundles/antigravity-plugin-extras/skills/db-testing/SKILL.md +117 -0
- package/bundles/antigravity-plugin-extras/skills/deploy-local/SKILL.md +259 -0
- package/bundles/antigravity-plugin-extras/skills/design-md/SKILL.md +167 -0
- package/bundles/antigravity-plugin-extras/skills/design-system-tokens/SKILL.md +240 -0
- package/bundles/antigravity-plugin-extras/skills/design-system-tokens/references/DESIGN-SYSTEM-TEMPLATE.md +577 -0
- package/bundles/antigravity-plugin-extras/skills/developer-growth-analysis/SKILL.md +323 -0
- package/bundles/antigravity-plugin-extras/skills/doc-coauthoring/SKILL.md +378 -0
- package/bundles/antigravity-plugin-extras/skills/documentation-analyzer/SKILL.md +78 -0
- package/bundles/antigravity-plugin-extras/skills/domain-name-brainstormer/SKILL.md +213 -0
- package/bundles/antigravity-plugin-extras/skills/enterprise-dashboard-aesthetic-system/SKILL.md +120 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/SKILL.md +193 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/references/element-types.md +497 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/references/excalidraw-schema.md +356 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/references/reliable-diagrams.md +115 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/README.md +60 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/add-arrow.py +354 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/add-icon-to-diagram.py +412 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/scripts/split-excalidraw-library.py +183 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/business-flow-swimlane-template.excalidraw +334 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/class-diagram-template.excalidraw +558 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/data-flow-diagram-template.excalidraw +279 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/er-diagram-template.excalidraw +662 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/flowchart-template.excalidraw +179 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/mindmap-template.excalidraw +244 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/relationship-template.excalidraw +145 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/reliable-flowchart.excalidraw +1 -0
- package/bundles/antigravity-plugin-extras/skills/excalidraw/templates/sequence-diagram-template.excalidraw +509 -0
- package/bundles/antigravity-plugin-extras/skills/file-organizer/SKILL.md +434 -0
- package/bundles/antigravity-plugin-extras/skills/game-changing-features/README.md +221 -0
- package/bundles/antigravity-plugin-extras/skills/game-changing-features/SKILL.md +265 -0
- package/bundles/antigravity-plugin-extras/skills/github-issues/SKILL.md +359 -0
- package/bundles/antigravity-plugin-extras/skills/github-issues/references/templates.md +90 -0
- package/bundles/antigravity-plugin-extras/skills/golden-nuggets/SKILL.md +192 -0
- package/bundles/antigravity-plugin-extras/skills/humanizer/SKILL.md +194 -0
- package/bundles/antigravity-plugin-extras/skills/image-enhancer/SKILL.md +100 -0
- package/bundles/antigravity-plugin-extras/skills/intent-writer/SKILL.md +201 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/SKILL.md +124 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/3p-updates.md +47 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/company-newsletter.md +65 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/faq-answers.md +30 -0
- package/bundles/antigravity-plugin-extras/skills/internal-comms/examples/general-comms.md +16 -0
- package/bundles/antigravity-plugin-extras/skills/invoice-organizer/SKILL.md +447 -0
- package/bundles/antigravity-plugin-extras/skills/jira-issues/SKILL.md +182 -0
- package/bundles/antigravity-plugin-extras/skills/job-application/SKILL.md +188 -0
- package/bundles/antigravity-plugin-extras/skills/lead-research-assistant/SKILL.md +200 -0
- package/bundles/antigravity-plugin-extras/skills/llm-application-dev/SKILL.md +217 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/SKILL.md +100 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/evaluation.md +602 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/mcp_best_practices.md +915 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/node_mcp_server.md +916 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/references/python_mcp_server.md +752 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/connections.py +151 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/bundles/antigravity-plugin-extras/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/bundles/antigravity-plugin-extras/skills/meeting-insights-analyzer/SKILL.md +328 -0
- package/bundles/antigravity-plugin-extras/skills/monorepo/SKILL.md +267 -0
- package/bundles/antigravity-plugin-extras/skills/naming-analyzer/SKILL.md +376 -0
- package/bundles/antigravity-plugin-extras/skills/nextjs-app-router/SKILL.md +271 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/AUTHENTICATION.md +154 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/SKILL.md +270 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/references/api_reference.md +309 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/references/troubleshooting.md +376 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/references/usage_patterns.md +338 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/__init__.py +81 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/ask_question.py +256 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/auth_manager.py +358 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/browser_session.py +255 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/browser_utils.py +107 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/cleanup_manager.py +302 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/config.py +44 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/notebook_manager.py +410 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/run.py +102 -0
- package/bundles/antigravity-plugin-extras/skills/notebooklm/scripts/setup_environment.py +204 -0
- package/bundles/antigravity-plugin-extras/skills/observability/SKILL.md +371 -0
- package/bundles/antigravity-plugin-extras/skills/onboard-project/SKILL.md +192 -0
- package/bundles/antigravity-plugin-extras/skills/performance-testing/SKILL.md +226 -0
- package/bundles/antigravity-plugin-extras/skills/pipeline-state/SKILL.md +208 -0
- package/bundles/antigravity-plugin-extras/skills/plantuml/SKILL.md +228 -0
- package/bundles/antigravity-plugin-extras/skills/popular-web-designs/SKILL.md +142 -0
- package/bundles/antigravity-plugin-extras/skills/popular-web-designs/templates/linear.app.md +196 -0
- package/bundles/antigravity-plugin-extras/skills/popular-web-designs/templates/stripe.md +214 -0
- package/bundles/antigravity-plugin-extras/skills/popular-web-designs/templates/vercel.md +218 -0
- package/bundles/antigravity-plugin-extras/skills/prd-to-code/SKILL.md +127 -0
- package/bundles/antigravity-plugin-extras/skills/raffle-winner-picker/SKILL.md +159 -0
- package/bundles/antigravity-plugin-extras/skills/react-useeffect/README.md +320 -0
- package/bundles/antigravity-plugin-extras/skills/react-useeffect/SKILL.md +53 -0
- package/bundles/antigravity-plugin-extras/skills/react-useeffect/alternatives.md +258 -0
- package/bundles/antigravity-plugin-extras/skills/react-useeffect/anti-patterns.md +290 -0
- package/bundles/antigravity-plugin-extras/skills/receiving-code-review/SKILL.md +213 -0
- package/bundles/antigravity-plugin-extras/skills/relay/SKILL.md +246 -0
- package/bundles/antigravity-plugin-extras/skills/requesting-code-review/SKILL.md +105 -0
- package/bundles/antigravity-plugin-extras/skills/requesting-code-review/code-reviewer.md +146 -0
- package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/SKILL.md +350 -0
- package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/references/pwa-checklist.md +226 -0
- package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/references/touch-and-interaction.md +265 -0
- package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/references/transformation-catalogue.md +326 -0
- package/bundles/antigravity-plugin-extras/skills/schema-migration/SKILL.md +275 -0
- package/bundles/antigravity-plugin-extras/skills/setup-project-ai/SKILL.md +120 -0
- package/bundles/antigravity-plugin-extras/skills/shadcn-radix/SKILL.md +330 -0
- package/bundles/antigravity-plugin-extras/skills/sketch/SKILL.md +104 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/SKILL.md +646 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/color_palettes.py +302 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/easing.py +230 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/frame_composer.py +469 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/gif_builder.py +246 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/typography.py +357 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/validators.py +264 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/core/visual_effects.py +494 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/requirements.txt +4 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/bounce.py +106 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/explode.py +331 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/fade.py +329 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/flip.py +291 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/kaleidoscope.py +211 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/morph.py +329 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/move.py +293 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/pulse.py +268 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/shake.py +127 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/slide.py +291 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/spin.py +269 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/wiggle.py +300 -0
- package/bundles/antigravity-plugin-extras/skills/slack-gif-creator/templates/zoom.py +312 -0
- package/bundles/antigravity-plugin-extras/skills/slides/SKILL.md +38 -0
- package/bundles/antigravity-plugin-extras/skills/state-tracking/SKILL.md +131 -0
- package/bundles/antigravity-plugin-extras/skills/streamlit-dev/SKILL.md +268 -0
- package/bundles/antigravity-plugin-extras/skills/svg-create/SKILL.md +251 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/SKILL.md +59 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/theme-showcase.pdf +0 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/desert-rose.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/golden-hour.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/bundles/antigravity-plugin-extras/skills/ui-styling-patterns/LICENSE.txt +202 -0
- package/bundles/antigravity-plugin-extras/skills/ui-styling-patterns/SKILL.md +320 -0
- package/bundles/antigravity-plugin-extras/skills/ui-testing/SKILL.md +660 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/SKILL.md +660 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/_sync_all.py +414 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/app-interface.csv +31 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/charts.csv +26 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/colors.csv +162 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/design.csv +1776 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/draft.csv +1779 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/google-fonts.csv +1924 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/icons.csv +106 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/landing.csv +35 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/products.csv +162 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/react-performance.csv +45 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/styles.csv +85 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/typography.csv +74 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/ui-reasoning.csv +162 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/data/ux-guidelines.csv +100 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/scripts/core.py +247 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/scripts/design_system.py +1067 -0
- package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/scripts/search.py +114 -0
- package/bundles/antigravity-plugin-extras/skills/understand-anything/SKILL.md +140 -0
- package/bundles/antigravity-plugin-extras/skills/understand-anything/references/commands.md +252 -0
- package/bundles/antigravity-plugin-extras/skills/understand-anything/references/graph-schema.md +116 -0
- package/bundles/antigravity-plugin-extras/skills/understand-anything/references/pipeline.md +331 -0
- package/bundles/antigravity-plugin-extras/skills/update-readme/SKILL.md +74 -0
- package/bundles/antigravity-plugin-extras/skills/verification-loop/SKILL.md +209 -0
- package/bundles/antigravity-plugin-extras/skills/video-downloader/SKILL.md +107 -0
- package/bundles/antigravity-plugin-extras/skills/webapp-development/SKILL.md +288 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/SKILL.md +339 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/agents/agent-interface.md +175 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/html.md +384 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/nlp-keywords.md +127 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/palettes.md +149 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/python.md +249 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/react.md +427 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/shapes.md +135 -0
- package/bundles/antigravity-plugin-extras/skills/word-cloud/references/stopwords.md +115 -0
- package/bundles/antigravity-plugin-extras/skills/youtube-transcript/SKILL.md +416 -0
- package/bundles/manifest.json +2 -1
- package/dist/cli.js +166 -37
- package/package.json +1 -1
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: streamlit-dev
|
|
3
|
+
description: Build production-ready Streamlit dashboards with best-practice patterns, caching, components, and theming. Use when implementing any Streamlit page, component, chart, or UI feature.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Streamlit Development Skill
|
|
7
|
+
|
|
8
|
+
## When to Use
|
|
9
|
+
|
|
10
|
+
Invoke this skill when:
|
|
11
|
+
- Creating a new Streamlit page
|
|
12
|
+
- Building or modifying UI components
|
|
13
|
+
- Adding charts or KPIs
|
|
14
|
+
- Implementing caching for data or resources
|
|
15
|
+
- Applying consistent branding/theming
|
|
16
|
+
- Fixing UI/UX issues in Streamlit apps
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Page Template (MANDATORY)
|
|
21
|
+
|
|
22
|
+
Every Streamlit page MUST follow this structure:
|
|
23
|
+
|
|
24
|
+
```python
|
|
25
|
+
"""Page Title - Brief description."""
|
|
26
|
+
import streamlit as st
|
|
27
|
+
|
|
28
|
+
# Page config MUST be the first Streamlit call
|
|
29
|
+
st.set_page_config(page_title="PageName", page_icon="icon", layout="wide")
|
|
30
|
+
|
|
31
|
+
# If using a shared header/navigation component:
|
|
32
|
+
# from components.header import render_header
|
|
33
|
+
# render_header(current_page="PageName")
|
|
34
|
+
|
|
35
|
+
# --- Page content below ---
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Key Rules
|
|
39
|
+
- `st.set_page_config()` MUST be the first Streamlit command
|
|
40
|
+
- Choose navigation pattern: sidebar (default) or custom header
|
|
41
|
+
- Always set `layout="wide"` for dashboards
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Branding & Theming
|
|
46
|
+
|
|
47
|
+
### Color Palette (Configure Per Project)
|
|
48
|
+
|
|
49
|
+
```python
|
|
50
|
+
BRAND_PRIMARY = "<BRAND_PRIMARY>" # Primary accent color
|
|
51
|
+
BRAND_DARK = "<BRAND_DARK>" # Headings, dark text
|
|
52
|
+
BRAND_LIGHT = "<BRAND_LIGHT>" # Page/card backgrounds
|
|
53
|
+
GRAY_500 = "#6C757D" # Secondary text
|
|
54
|
+
GRAY_100 = "#E9ECEF" # Borders, dividers
|
|
55
|
+
SUCCESS = "#22C55E" # Positive indicators
|
|
56
|
+
WARNING = "#F59E0B" # Warning indicators
|
|
57
|
+
ERROR = "#EF4444" # Error/negative indicators
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 60-30-10 Color Rule
|
|
61
|
+
- **60%**: Light backgrounds (white, `<BRAND_LIGHT>`)
|
|
62
|
+
- **30%**: Dark text and structure (`<BRAND_DARK>`)
|
|
63
|
+
- **10%**: Primary accents (`<BRAND_PRIMARY>`)
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Charts (Plotly)
|
|
68
|
+
|
|
69
|
+
### CRITICAL: Avoid "undefined" Labels
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
# NEVER pass title directly to px functions
|
|
73
|
+
fig = px.pie(data, names="cat", values="count")
|
|
74
|
+
fig.update_layout(title="Chart Title", height=300)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Branded Charts
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
import plotly.express as px
|
|
81
|
+
|
|
82
|
+
CHART_COLORS = ["<BRAND_PRIMARY>", "<BRAND_DARK>", "#6B7280", "#9CA3AF", "#D1D5DB"]
|
|
83
|
+
|
|
84
|
+
def create_chart(df, x, y, chart_type="bar", title=None):
|
|
85
|
+
if chart_type == "bar":
|
|
86
|
+
fig = px.bar(df, x=x, y=y, color_discrete_sequence=CHART_COLORS)
|
|
87
|
+
elif chart_type == "line":
|
|
88
|
+
fig = px.line(df, x=x, y=y, color_discrete_sequence=CHART_COLORS)
|
|
89
|
+
elif chart_type == "pie":
|
|
90
|
+
fig = px.pie(df, names=x, values=y, color_discrete_sequence=CHART_COLORS)
|
|
91
|
+
|
|
92
|
+
fig.update_layout(
|
|
93
|
+
title=title if title and title.strip() else "",
|
|
94
|
+
template="plotly_white",
|
|
95
|
+
font_family="Inter, sans-serif",
|
|
96
|
+
title_font_size=18,
|
|
97
|
+
legend_title_text="",
|
|
98
|
+
hovermode="x unified",
|
|
99
|
+
)
|
|
100
|
+
return fig
|
|
101
|
+
|
|
102
|
+
st.plotly_chart(fig, use_container_width=True)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Caching Strategy
|
|
108
|
+
|
|
109
|
+
### Data Caching (serialized copy per caller)
|
|
110
|
+
|
|
111
|
+
```python
|
|
112
|
+
from datetime import timedelta
|
|
113
|
+
|
|
114
|
+
@st.cache_data(ttl=timedelta(minutes=15), show_spinner="Loading data...")
|
|
115
|
+
def load_orders() -> pd.DataFrame:
|
|
116
|
+
return repo.get_all_orders()
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Resource Caching (shared singleton)
|
|
120
|
+
|
|
121
|
+
```python
|
|
122
|
+
@st.cache_resource
|
|
123
|
+
def get_repository():
|
|
124
|
+
return OrdersRepository()
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### When to Use Each
|
|
128
|
+
|
|
129
|
+
| Decorator | Use For | Returns |
|
|
130
|
+
|-----------|---------|---------|
|
|
131
|
+
| `@st.cache_data` | DataFrames, lists, dicts | Serialized copy |
|
|
132
|
+
| `@st.cache_resource` | Connections, models, adapters | Same object ref |
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Component Patterns
|
|
137
|
+
|
|
138
|
+
### KPI Cards
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
def render_kpi_row(kpis: list[dict]):
|
|
142
|
+
cols = st.columns(len(kpis))
|
|
143
|
+
for col, kpi in zip(cols, kpis):
|
|
144
|
+
with col:
|
|
145
|
+
st.metric(label=kpi["label"], value=kpi["value"], delta=kpi.get("delta"))
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Data Tables
|
|
149
|
+
|
|
150
|
+
```python
|
|
151
|
+
st.dataframe(
|
|
152
|
+
df, use_container_width=True, hide_index=True,
|
|
153
|
+
column_config={
|
|
154
|
+
"id": st.column_config.TextColumn("ID", width="small"),
|
|
155
|
+
"created_at": st.column_config.DatetimeColumn("Created", format="DD/MM/YYYY HH:mm"),
|
|
156
|
+
}
|
|
157
|
+
)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Pagination
|
|
161
|
+
|
|
162
|
+
```python
|
|
163
|
+
def paginate_df(df, page, per_page):
|
|
164
|
+
start = (page - 1) * per_page
|
|
165
|
+
return df.iloc[start:start + per_page]
|
|
166
|
+
|
|
167
|
+
total_pages = (len(df) - 1) // per_page + 1
|
|
168
|
+
page = st.number_input(f"Page (of {total_pages})", 1, total_pages, 1)
|
|
169
|
+
st.dataframe(paginate_df(df, page, per_page))
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Session State
|
|
175
|
+
|
|
176
|
+
```python
|
|
177
|
+
def init_session_state():
|
|
178
|
+
defaults = {"authenticated": False, "selected_filters": {}, "page_number": 1}
|
|
179
|
+
for key, value in defaults.items():
|
|
180
|
+
if key not in st.session_state:
|
|
181
|
+
st.session_state[key] = value
|
|
182
|
+
|
|
183
|
+
def on_filter_change():
|
|
184
|
+
st.session_state.page_number = 1
|
|
185
|
+
|
|
186
|
+
st.selectbox("Category", options=categories, key="filter", on_change=on_filter_change)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Forms
|
|
192
|
+
|
|
193
|
+
```python
|
|
194
|
+
with st.form("order_form", clear_on_submit=True):
|
|
195
|
+
customer_id = st.text_input("Customer ID*")
|
|
196
|
+
description = st.text_area("Description*", max_chars=2000)
|
|
197
|
+
priority = st.slider("Priority", 1, 5, 3)
|
|
198
|
+
|
|
199
|
+
if st.form_submit_button("Submit", type="primary"):
|
|
200
|
+
if not customer_id or not description:
|
|
201
|
+
st.error("Please fill in all required fields")
|
|
202
|
+
else:
|
|
203
|
+
save_order(customer_id, description, priority)
|
|
204
|
+
st.success("Submitted!")
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Error Handling
|
|
210
|
+
|
|
211
|
+
```python
|
|
212
|
+
try:
|
|
213
|
+
data = load_data()
|
|
214
|
+
render_dashboard(data)
|
|
215
|
+
except ConnectionError:
|
|
216
|
+
st.error("Unable to connect to database. Please try again later.")
|
|
217
|
+
except Exception:
|
|
218
|
+
st.error("An unexpected error occurred. Please contact support.")
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### Empty State
|
|
222
|
+
|
|
223
|
+
```python
|
|
224
|
+
if df.empty:
|
|
225
|
+
st.info("No data found for the selected filters.")
|
|
226
|
+
return
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Performance Tips
|
|
232
|
+
|
|
233
|
+
1. **Cache aggressively** -- data fetches, computations, model loading
|
|
234
|
+
2. **Lazy load** -- only fetch data when needed
|
|
235
|
+
3. **Paginate** -- never dump 10K+ rows into `st.dataframe`
|
|
236
|
+
4. **Minimize reruns** -- use `st.session_state` and callbacks
|
|
237
|
+
5. **Use `st.fragment`** -- for widgets that shouldn't rerun the whole page
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Framework Limitations — Floating UI (CRITICAL)
|
|
242
|
+
|
|
243
|
+
Streamlit wraps all `st.markdown(unsafe_allow_html=True)` in **20-30 nested `<div>` containers**, breaking CSS `position: fixed/absolute`. **Do NOT attempt CSS-only solutions for floating elements.**
|
|
244
|
+
|
|
245
|
+
| Approach | Use For | Limitations |
|
|
246
|
+
|----------|---------|-------------|
|
|
247
|
+
| `st.markdown(unsafe_allow_html=True)` | Inline styling, cards, badges | Wrapped in nested divs; no DOM control |
|
|
248
|
+
| `st.html()` | Self-contained HTML snippets | Sandboxed iframe; no access to parent DOM |
|
|
249
|
+
| `components.declare_component()` | **Floating UI, chat widgets, FABs, toasts, modals** | Requires HTML/JS file; bi-directional via `setComponentValue` |
|
|
250
|
+
|
|
251
|
+
**Pattern:** Use `declare_component()` with `height=0` to create an invisible iframe, then inject elements into `window.parent.document.body` from the component's JavaScript.
|
|
252
|
+
|
|
253
|
+
> CSS `position: fixed` and `z-index` escalation will **never work** reliably in Streamlit due to its DOM wrapping architecture.
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Checklist
|
|
258
|
+
|
|
259
|
+
- [ ] `st.set_page_config()` is the first Streamlit call
|
|
260
|
+
- [ ] Navigation pattern applied consistently
|
|
261
|
+
- [ ] Brand colors applied (60-30-10 rule)
|
|
262
|
+
- [ ] Charts use `update_layout(title=...)` not `title=` in px call
|
|
263
|
+
- [ ] Data cached with appropriate TTL
|
|
264
|
+
- [ ] Empty states show helpful messages
|
|
265
|
+
- [ ] Error handling with user-friendly messages
|
|
266
|
+
- [ ] Large datasets paginated
|
|
267
|
+
- [ ] Session state initialized with defaults
|
|
268
|
+
- [ ] Forms validate required fields
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: svg-create
|
|
3
|
+
context: fork
|
|
4
|
+
description: "Brand-themed SVG diagrams with consistent color palette and accessible design"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# SVG Creation Skill
|
|
8
|
+
|
|
9
|
+
Create professional SVG diagrams with consistent brand theming.
|
|
10
|
+
|
|
11
|
+
> **Project Context** — Read `project-config.md` in the repo root for brand tokens, color palette, and project metadata.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
- Workflow diagrams and flowcharts
|
|
16
|
+
- Architecture diagrams
|
|
17
|
+
- Decision trees
|
|
18
|
+
- Process visualizations
|
|
19
|
+
- Quick reference cards
|
|
20
|
+
- Any visual that needs to be version-controlled
|
|
21
|
+
|
|
22
|
+
## SVG Best Practices
|
|
23
|
+
|
|
24
|
+
### Document Structure
|
|
25
|
+
|
|
26
|
+
```xml
|
|
27
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600">
|
|
28
|
+
<defs>
|
|
29
|
+
<!-- Reusable styles and markers -->
|
|
30
|
+
<style>
|
|
31
|
+
.title { font: bold 24px 'Segoe UI', Arial, sans-serif; fill: #1F2937; }
|
|
32
|
+
.text { font: 14px 'Segoe UI', Arial, sans-serif; fill: #374151; }
|
|
33
|
+
</style>
|
|
34
|
+
<marker id="arrow" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
35
|
+
<polygon points="0 0, 10 3.5, 0 7" fill="#6B7280"/>
|
|
36
|
+
</marker>
|
|
37
|
+
</defs>
|
|
38
|
+
|
|
39
|
+
<!-- Background -->
|
|
40
|
+
<rect width="800" height="600" fill="white"/>
|
|
41
|
+
|
|
42
|
+
<!-- Content here -->
|
|
43
|
+
</svg>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Print-Friendly Design
|
|
47
|
+
|
|
48
|
+
**CRITICAL**: Always design for print compatibility:
|
|
49
|
+
|
|
50
|
+
```xml
|
|
51
|
+
<!-- ✅ GOOD: Light backgrounds for print -->
|
|
52
|
+
<rect fill="white"/>
|
|
53
|
+
<rect fill="#F8FAFC"/> <!-- Very light gray -->
|
|
54
|
+
<rect fill="#ECFDF5"/> <!-- Very light green -->
|
|
55
|
+
|
|
56
|
+
<!-- ❌ BAD: Dark backgrounds don't print well -->
|
|
57
|
+
<rect fill="#1F2937"/> <!-- Dark navy - avoid -->
|
|
58
|
+
<rect fill="black"/> <!-- Never for large areas -->
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Color Palette
|
|
62
|
+
|
|
63
|
+
```xml
|
|
64
|
+
<!-- Primary Colors -->
|
|
65
|
+
#E10A0A <!-- Primary Red - primary accent -->
|
|
66
|
+
#1F2937 <!-- Navy - text only, not backgrounds -->
|
|
67
|
+
|
|
68
|
+
<!-- Scenario Colors (use light fills) -->
|
|
69
|
+
#ECFDF5 <!-- Light green - new/create -->
|
|
70
|
+
#10B981 <!-- Green - borders/accents -->
|
|
71
|
+
#EEF2FF <!-- Light indigo - existing/continue -->
|
|
72
|
+
#6366F1 <!-- Indigo - borders/accents -->
|
|
73
|
+
#F0F9FF <!-- Light blue - simple/quick -->
|
|
74
|
+
#0EA5E9 <!-- Blue - borders/accents -->
|
|
75
|
+
#FFF7ED <!-- Light orange - warning/emergency -->
|
|
76
|
+
#F97316 <!-- Orange - borders/accents -->
|
|
77
|
+
#FEF3C7 <!-- Light yellow - help/info -->
|
|
78
|
+
#F59E0B <!-- Amber - borders/accents -->
|
|
79
|
+
|
|
80
|
+
<!-- Neutral Colors -->
|
|
81
|
+
#374151 <!-- Text color -->
|
|
82
|
+
#6B7280 <!-- Secondary text -->
|
|
83
|
+
#E5E7EB <!-- Light border -->
|
|
84
|
+
#F8FAFC <!-- Light background -->
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Common Patterns
|
|
88
|
+
|
|
89
|
+
#### Numbered Steps
|
|
90
|
+
|
|
91
|
+
```xml
|
|
92
|
+
<!-- Step circle with number -->
|
|
93
|
+
<circle cx="50" cy="100" r="18" fill="#10B981"/>
|
|
94
|
+
<text x="50" y="106" text-anchor="middle" fill="white"
|
|
95
|
+
font-weight="bold" font-size="16">1</text>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
#### Connection Arrows
|
|
99
|
+
|
|
100
|
+
```xml
|
|
101
|
+
<!-- Define marker in <defs> first -->
|
|
102
|
+
<marker id="arrow" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
103
|
+
<polygon points="0 0, 10 3.5, 0 7" fill="#6B7280"/>
|
|
104
|
+
</marker>
|
|
105
|
+
|
|
106
|
+
<!-- Use the arrow -->
|
|
107
|
+
<line x1="100" y1="50" x2="100" y2="100" stroke="#6B7280"
|
|
108
|
+
stroke-width="2" marker-end="url(#arrow)"/>
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
#### Rounded Boxes
|
|
112
|
+
|
|
113
|
+
```xml
|
|
114
|
+
<!-- Container box -->
|
|
115
|
+
<rect x="30" y="80" width="400" height="200" rx="12"
|
|
116
|
+
fill="#ECFDF5" stroke="#10B981" stroke-width="2"/>
|
|
117
|
+
|
|
118
|
+
<!-- Content box -->
|
|
119
|
+
<rect x="50" y="100" width="360" height="40" rx="6"
|
|
120
|
+
fill="white" stroke="#10B981" stroke-width="1"/>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
#### Text Styling
|
|
124
|
+
|
|
125
|
+
```xml
|
|
126
|
+
<!-- Title -->
|
|
127
|
+
<text x="400" y="40" text-anchor="middle"
|
|
128
|
+
font-size="24" font-weight="bold" fill="#1F2937">Title</text>
|
|
129
|
+
|
|
130
|
+
<!-- Monospace code -->
|
|
131
|
+
<text font-family="'Courier New', monospace" fill="#E10A0A">/command</text>
|
|
132
|
+
|
|
133
|
+
<!-- Agent reference -->
|
|
134
|
+
<text font-weight="bold" fill="#7C3AED">@agent-name</text>
|
|
135
|
+
|
|
136
|
+
<!-- File path -->
|
|
137
|
+
<text font-family="'Courier New', monospace" fill="#059669">plans/</text>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Responsive ViewBox
|
|
141
|
+
|
|
142
|
+
Calculate viewBox from content:
|
|
143
|
+
- **Width**: Rightmost element + padding (usually 30-50px)
|
|
144
|
+
- **Height**: Bottom element + padding (usually 30-50px)
|
|
145
|
+
|
|
146
|
+
```xml
|
|
147
|
+
<!-- For 800x600 content with 30px padding -->
|
|
148
|
+
<svg viewBox="0 0 860 660">
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Font Stack
|
|
152
|
+
|
|
153
|
+
Always specify fallbacks:
|
|
154
|
+
|
|
155
|
+
```css
|
|
156
|
+
font-family: 'Segoe UI', Arial, sans-serif; /* Text */
|
|
157
|
+
font-family: 'Courier New', monospace; /* Code */
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Reliable Text & Layout (No Clipping)
|
|
161
|
+
|
|
162
|
+
To keep project diagrams sharp and readable (and avoid cropped text):
|
|
163
|
+
|
|
164
|
+
### Text box sizing
|
|
165
|
+
|
|
166
|
+
For a `<text>` block (optionally with `<tspan>` lines):
|
|
167
|
+
|
|
168
|
+
- `maxLineLen` = length of the longest line.
|
|
169
|
+
- `fontSize` = size in px.
|
|
170
|
+
- `lines` = number of lines.
|
|
171
|
+
|
|
172
|
+
Use:
|
|
173
|
+
|
|
174
|
+
```text
|
|
175
|
+
baseWidth = maxLineLen * fontSize * 0.7
|
|
176
|
+
cardWidth = ceil(baseWidth) + 16 // horizontal padding
|
|
177
|
+
|
|
178
|
+
baseHeight = fontSize * 1.2 * lines
|
|
179
|
+
cardHeight = ceil(baseHeight * 1.1) // ~10% vertical padding
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Size the surrounding `<rect>` to at least `cardWidth × cardHeight`. Do not let text touch the edges.
|
|
183
|
+
|
|
184
|
+
### clipPath usage
|
|
185
|
+
|
|
186
|
+
- Prefer simple rounded boxes without clipping.
|
|
187
|
+
- If you use `<clipPath>` for a lane or card:
|
|
188
|
+
- Make the clip rect **larger** than the visible card by 8–12px on all sides.
|
|
189
|
+
- Never set the clip rect tighter than the text block; otherwise labels like “More than ~5 files or new page/component/source?” will be cut.
|
|
190
|
+
|
|
191
|
+
### Card Example
|
|
192
|
+
|
|
193
|
+
```xml
|
|
194
|
+
<defs>
|
|
195
|
+
<clipPath id="lane1-clip">
|
|
196
|
+
<rect x="20" y="80" width="300" height="100" rx="8"/>
|
|
197
|
+
</clipPath>
|
|
198
|
+
</defs>
|
|
199
|
+
|
|
200
|
+
<g clip-path="url(#lane1-clip)">
|
|
201
|
+
<rect x="30" y="90" width="280" height="80" rx="8"
|
|
202
|
+
fill="#ECFDF5" stroke="#10B981" stroke-width="2"/>
|
|
203
|
+
<text x="170" y="116" text-anchor="middle" class="text">
|
|
204
|
+
<tspan x="170" dy="0">Lane 1: Quick Fix</tspan>
|
|
205
|
+
<tspan x="170" dy="18">~1 session, <10 files</tspan>
|
|
206
|
+
</text>
|
|
207
|
+
</g>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
The `lane1-clip` rectangle is larger than the card, so text won’t clip even if it grows slightly.
|
|
211
|
+
|
|
212
|
+
## Checklist Before Creating
|
|
213
|
+
|
|
214
|
+
- [ ] Using white or very light fills for backgrounds
|
|
215
|
+
- [ ] Text is at least 11px for readability
|
|
216
|
+
- [ ] Text blocks have generous padding; no line touches card edges or clip paths
|
|
217
|
+
- [ ] Contrast ratio is print-safe
|
|
218
|
+
- [ ] ViewBox sized to content + padding
|
|
219
|
+
- [ ] Arrow markers defined in `<defs>`
|
|
220
|
+
- [ ] Font families have fallbacks
|
|
221
|
+
- [ ] File saved with `.svg` extension
|
|
222
|
+
|
|
223
|
+
## Example: Simple Flowchart
|
|
224
|
+
|
|
225
|
+
```xml
|
|
226
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 200">
|
|
227
|
+
<defs>
|
|
228
|
+
<marker id="arrow" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
|
|
229
|
+
<polygon points="0 0, 10 3.5, 0 7" fill="#6B7280"/>
|
|
230
|
+
</marker>
|
|
231
|
+
</defs>
|
|
232
|
+
|
|
233
|
+
<rect width="400" height="200" fill="white"/>
|
|
234
|
+
|
|
235
|
+
<!-- Start -->
|
|
236
|
+
<rect x="20" y="80" width="100" height="40" rx="8" fill="#ECFDF5" stroke="#10B981" stroke-width="2"/>
|
|
237
|
+
<text x="70" y="105" text-anchor="middle" fill="#374151">Start</text>
|
|
238
|
+
|
|
239
|
+
<!-- Arrow -->
|
|
240
|
+
<line x1="120" y1="100" x2="170" y2="100" stroke="#6B7280" stroke-width="2" marker-end="url(#arrow)"/>
|
|
241
|
+
|
|
242
|
+
<!-- End -->
|
|
243
|
+
<rect x="180" y="80" width="100" height="40" rx="8" fill="#EEF2FF" stroke="#6366F1" stroke-width="2"/>
|
|
244
|
+
<text x="230" y="105" text-anchor="middle" fill="#374151">End</text>
|
|
245
|
+
</svg>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Related Resources
|
|
249
|
+
|
|
250
|
+
- Agent: `@svg-diagram` - For complex, multi-element diagrams
|
|
251
|
+
- Tool: Mermaid - For quick code-based diagrams (then export to SVG)
|