@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,331 @@
|
|
|
1
|
+
# /understand Pipeline — Full Phase Specifications
|
|
2
|
+
|
|
3
|
+
## Phase 0 — Pre-flight
|
|
4
|
+
|
|
5
|
+
### Resolve PROJECT_ROOT
|
|
6
|
+
Parse `$ARGUMENTS` for a non-flag token (no leading `--`). If found, treat as target directory:
|
|
7
|
+
- Resolve relative paths against CWD
|
|
8
|
+
- Verify: `test -d <path>` — abort with error if not a directory
|
|
9
|
+
- Set `PROJECT_ROOT` to the resolved absolute path
|
|
10
|
+
- If no path argument, `PROJECT_ROOT = CWD`
|
|
11
|
+
|
|
12
|
+
### Worktree Redirect
|
|
13
|
+
If running inside a git worktree, redirect output to the main repo root to prevent ephemeral data loss:
|
|
14
|
+
```bash
|
|
15
|
+
COMMON_DIR=$(git -C "$PROJECT_ROOT" rev-parse --git-common-dir 2>/dev/null)
|
|
16
|
+
GIT_DIR=$(git -C "$PROJECT_ROOT" rev-parse --git-dir 2>/dev/null)
|
|
17
|
+
# If COMMON_DIR != GIT_DIR, we're in a worktree; main root = dirname(COMMON_DIR)
|
|
18
|
+
```
|
|
19
|
+
Skip redirect if `UNDERSTAND_NO_WORKTREE_REDIRECT=1`.
|
|
20
|
+
|
|
21
|
+
### Config Flags
|
|
22
|
+
- `--auto-update` in `$ARGUMENTS` → write `{"autoUpdate": true}` to `$PROJECT_ROOT/.understand-anything/config.json`
|
|
23
|
+
- `--no-auto-update` → write `{"autoUpdate": false}`
|
|
24
|
+
- `--language <code>` → normalize code (friendly names → ISO: `chinese` → `zh`, etc.) and write `{"outputLanguage": "<code>"}` to config. Store as `$OUTPUT_LANGUAGE`. Build `$LANGUAGE_DIRECTIVE`:
|
|
25
|
+
> **Language directive**: Generate all textual content (summaries, descriptions, tags, titles, languageNotes, languageLesson) in **{language}**. Maintain technical accuracy while using natural, native-level phrasing. Keep technical terms in English when no standard translation exists (e.g., "middleware", "hook", "barrel").
|
|
26
|
+
- If no `--language` flag, read `outputLanguage` from config.json; default to `en`.
|
|
27
|
+
|
|
28
|
+
### Incremental vs Full Decision
|
|
29
|
+
1. Get current commit: `git rev-parse HEAD`
|
|
30
|
+
2. Create dirs: `mkdir -p $PROJECT_ROOT/.understand-anything/intermediate $PROJECT_ROOT/.understand-anything/tmp`
|
|
31
|
+
3. Check for existing `knowledge-graph.json` and `meta.json` (read `gitCommitHash` from meta).
|
|
32
|
+
|
|
33
|
+
| Condition | Action |
|
|
34
|
+
|---|---|
|
|
35
|
+
| `--full` flag | Full analysis (all phases) |
|
|
36
|
+
| No existing graph or meta | Full analysis |
|
|
37
|
+
| `--review` + existing graph + unchanged commit | Skip to Phase 6 (copy existing graph to `intermediate/assembled-graph.json`) |
|
|
38
|
+
| Existing graph + unchanged commit | Ask user: (a) full rebuild, (b) LLM review, (c) do nothing |
|
|
39
|
+
| Existing graph + changed files | Incremental update |
|
|
40
|
+
|
|
41
|
+
### Project Context Collection
|
|
42
|
+
Read these for subagent injection:
|
|
43
|
+
- `$README_CONTENT` — first 3000 chars of `README.md` (or `.rst`, `.md` variants)
|
|
44
|
+
- `$MANIFEST_CONTENT` — first manifest found: `package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, `pom.xml`
|
|
45
|
+
- `$DIR_TREE` — `find $PROJECT_ROOT -maxdepth 2 -type f -not -path '*/node_modules/*' -not -path '*/.git/*' -not -path '*/dist/*' | head -100`
|
|
46
|
+
- `$ENTRY_POINT` — first match from: `src/index.ts`, `src/main.ts`, `src/App.tsx`, `index.js`, `main.py`, `manage.py`, `app.py`, `main.go`, `src/main.rs`, `Program.cs`, `index.php`
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Phase 0.5 — Ignore Configuration
|
|
51
|
+
|
|
52
|
+
1. Check if `$PROJECT_ROOT/.understand-anything/.understandignore` exists.
|
|
53
|
+
2. **If missing**: Generate a starter `.understandignore` that:
|
|
54
|
+
- Excludes built-in defaults: `node_modules/`, `.git/`, `vendor/`, `dist/`, `build/`, `*.lock`, `*.min.js`, image files, etc.
|
|
55
|
+
- Reads `.gitignore` and comments out its entries as suggestions
|
|
56
|
+
- Lists detected directories (`test/`, `tests/`, `fixtures/`, `docs/`, `migrations/`, `.storybook/`) as commented suggestions
|
|
57
|
+
- **In scripted mode**: run the bundled Node.js generator from `$PLUGIN_ROOT/understand-anything-plugin/skills/understand/`
|
|
58
|
+
- **In LLM-native mode**: construct the file manually from the defaults above
|
|
59
|
+
|
|
60
|
+
Report to user and **wait for confirmation** before proceeding.
|
|
61
|
+
3. **If exists**: Report found, **wait for confirmation** before proceeding.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Phase 1 — SCAN
|
|
66
|
+
|
|
67
|
+
`[Phase 1/7] Scanning project files...`
|
|
68
|
+
|
|
69
|
+
**Scripted mode**: Dispatch `project-scanner` subagent (definition at `agents/project-scanner.md` in plugin root). Inject `$README_CONTENT`, `$MANIFEST_CONTENT`, and `$LANGUAGE_DIRECTIVE`.
|
|
70
|
+
Output: `$PROJECT_ROOT/.understand-anything/intermediate/scan-result.json`
|
|
71
|
+
|
|
72
|
+
**LLM-native mode**: Perform scanning directly:
|
|
73
|
+
1. Recursively list all files respecting `.understandignore` patterns
|
|
74
|
+
2. Detect languages by extension, frameworks by manifest/config file patterns
|
|
75
|
+
3. Build `scan-result.json` with:
|
|
76
|
+
- `projectName`, `projectDescription` (from README/manifest)
|
|
77
|
+
- `languages[]`, `frameworks[]`
|
|
78
|
+
- `files[]`: `{ path, sizeLines, language, fileCategory }` where `fileCategory` is one of: `code`, `config`, `docs`, `infra`, `data`, `script`, `markup`
|
|
79
|
+
- `importMap`: `{ [filePath]: string[] }` — project-internal imports per file (empty array for non-code)
|
|
80
|
+
|
|
81
|
+
Read result and store `$FILE_LIST` (with fileCategory metadata) and `$IMPORT_MAP`.
|
|
82
|
+
|
|
83
|
+
**Gate**: If >100 files, inform user and suggest scoping with a subdirectory argument. Proceed only if user confirms.
|
|
84
|
+
|
|
85
|
+
If `filteredByIgnore > 0`, report: `Excluded {N} files via .understandignore.`
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Phase 1.5 — BATCH *(Scripted mode only — skip in LLM-native)*
|
|
90
|
+
|
|
91
|
+
`[Phase 1.5/7] Computing semantic batches...`
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
node <SKILL_DIR>/compute-batches.mjs $PROJECT_ROOT
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Reads `scan-result.json`, writes `intermediate/batches.json`.
|
|
98
|
+
- Append any `Warning:` lines from stderr to `$PHASE_WARNINGS`
|
|
99
|
+
- Non-zero exit = fatal — relay full stderr to user, do not recover
|
|
100
|
+
|
|
101
|
+
**LLM-native fallback**: Manually group files into batches of ~10 files each, respecting directory locality. Store as `$BATCHES` in memory.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Phase 2 — ANALYZE
|
|
106
|
+
|
|
107
|
+
`[Phase 2/7] Analyzing files — <N> files in <B> batches (up to 5 concurrent)...`
|
|
108
|
+
|
|
109
|
+
**Scripted mode**: Load `intermediate/batches.json`. For each batch, dispatch a `file-analyzer` subagent (definition at `agents/file-analyzer.md`). Run ≤5 concurrently.
|
|
110
|
+
|
|
111
|
+
Dispatch prompt template:
|
|
112
|
+
```
|
|
113
|
+
Analyze these files and produce GraphNode and GraphEdge objects.
|
|
114
|
+
Project root: $PROJECT_ROOT
|
|
115
|
+
Project: <projectName>
|
|
116
|
+
Languages: <languages>
|
|
117
|
+
Batch: <i>/<total>
|
|
118
|
+
Skill directory: <SKILL_DIR>
|
|
119
|
+
Output: write to $PROJECT_ROOT/.understand-anything/intermediate/batch-<i>.json
|
|
120
|
+
|
|
121
|
+
Pre-resolved import data:
|
|
122
|
+
<batchImportData JSON from batches.json[i].batchImportData>
|
|
123
|
+
|
|
124
|
+
Cross-batch neighbors with exported symbols:
|
|
125
|
+
<neighborMap JSON from batches.json[i].neighborMap>
|
|
126
|
+
|
|
127
|
+
Files: [list with path, sizeLines, language, fileCategory for each]
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**CRITICAL**: Output file MUST be named `batch-<batchIndex>.json` or `batch-<batchIndex>-part-<k>.json`.
|
|
131
|
+
After each dispatch, verify each `batchIndex` has a corresponding output file before continuing.
|
|
132
|
+
|
|
133
|
+
**LLM-native mode**: Analyze each batch directly (no subagent dispatch). For each file in the batch:
|
|
134
|
+
- Read the file
|
|
135
|
+
- Extract nodes: file-level node, plus function/class nodes for significant components
|
|
136
|
+
- Extract edges: imports, calls, depends_on, contains, inherits, implements
|
|
137
|
+
- Write to `intermediate/batch-<i>.json`
|
|
138
|
+
|
|
139
|
+
**After all batches (both modes)**:
|
|
140
|
+
Run merge script (scripted) or merge manually (LLM-native):
|
|
141
|
+
```bash
|
|
142
|
+
python <SKILL_DIR>/merge-batch-graphs.py $PROJECT_ROOT
|
|
143
|
+
```
|
|
144
|
+
Output: `intermediate/assembled-graph.json`
|
|
145
|
+
|
|
146
|
+
The merge pass:
|
|
147
|
+
- Combines all nodes and edges from `batch-*.json`
|
|
148
|
+
- Normalizes node IDs (strips double prefixes, adds missing prefixes)
|
|
149
|
+
- Normalizes complexity: `low`→`simple`, `medium`→`moderate`, `high`→`complex`
|
|
150
|
+
- Deduplicates nodes by ID (keeps last), edges by `(source, target, type)`
|
|
151
|
+
- Drops dangling edges referencing missing nodes
|
|
152
|
+
- Runs `tested_by` linker: production → test direction, drops broken test edges
|
|
153
|
+
|
|
154
|
+
**Incremental update path**:
|
|
155
|
+
```bash
|
|
156
|
+
git diff <lastCommitHash>..HEAD --name-only > intermediate/changed-files.txt
|
|
157
|
+
node <SKILL_DIR>/compute-batches.mjs $PROJECT_ROOT --changed-files=intermediate/changed-files.txt
|
|
158
|
+
```
|
|
159
|
+
After fresh batches complete:
|
|
160
|
+
1. Remove old nodes whose `filePath` matches any changed file from existing graph
|
|
161
|
+
2. Remove old edges referencing removed nodes
|
|
162
|
+
3. Write pruned existing data as `batch-existing.json`
|
|
163
|
+
4. Run merge script on combined `batch-existing.json` + fresh `batch-*.json`
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Phase 3 — ASSEMBLE REVIEW
|
|
168
|
+
|
|
169
|
+
`[Phase 3/7] Reviewing assembled graph...`
|
|
170
|
+
|
|
171
|
+
Dispatch `assemble-reviewer` subagent (or review inline in LLM-native mode).
|
|
172
|
+
|
|
173
|
+
Input: `intermediate/assembled-graph.json`
|
|
174
|
+
Output: `intermediate/assemble-review.json` — `{ issues: string[], warnings: string[] }`
|
|
175
|
+
|
|
176
|
+
Inject:
|
|
177
|
+
- Full stderr from `merge-batch-graphs.py`
|
|
178
|
+
- `$IMPORT_MAP` for cross-batch edge verification
|
|
179
|
+
- List of batch files at `intermediate/batch-*.json`
|
|
180
|
+
|
|
181
|
+
Add any reviewer notes to `$PHASE_WARNINGS`.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Phase 4 — ARCHITECTURE
|
|
186
|
+
|
|
187
|
+
`[Phase 4/7] Identifying architectural layers...`
|
|
188
|
+
|
|
189
|
+
Dispatch `architecture-analyzer` subagent (or analyze inline in LLM-native mode).
|
|
190
|
+
|
|
191
|
+
**Context injection** (always):
|
|
192
|
+
- Language context files from `skills/understand/languages/<lang>.md` for each detected language
|
|
193
|
+
- Framework files from `skills/understand/frameworks/<framework>.md` for each detected framework
|
|
194
|
+
- Locale file from `skills/understand/locales/<lang>.md` if `$OUTPUT_LANGUAGE` ≠ `en`
|
|
195
|
+
- `$DIR_TREE` and framework list from Phase 1
|
|
196
|
+
|
|
197
|
+
**Input to subagent**:
|
|
198
|
+
- All file-level nodes: `{ id, type, name, filePath, summary, tags }`
|
|
199
|
+
- `imports` edges
|
|
200
|
+
- All edge types (for cross-category analysis)
|
|
201
|
+
|
|
202
|
+
**Output**: `intermediate/layers.json`
|
|
203
|
+
|
|
204
|
+
**Normalize output** (in order):
|
|
205
|
+
1. Unwrap `{ "layers": [...] }` envelope if present
|
|
206
|
+
2. Rename `nodes` → `nodeIds`; if entries are objects, extract `.id` values
|
|
207
|
+
3. Synthesize missing `id` as `layer:<kebab-case-name>`
|
|
208
|
+
4. Convert raw file paths in `nodeIds` to `file:<relative-path>` (or appropriate type prefix)
|
|
209
|
+
5. Drop `nodeIds` entries that don't exist in the node set
|
|
210
|
+
|
|
211
|
+
Final layer shape (all 4 fields required):
|
|
212
|
+
```json
|
|
213
|
+
{ "id": "layer:<name>", "name": "...", "description": "...", "nodeIds": ["file:src/..."] }
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## Phase 5 — TOUR
|
|
219
|
+
|
|
220
|
+
`[Phase 5/7] Building guided tour...`
|
|
221
|
+
|
|
222
|
+
Dispatch `tour-builder` subagent (or build inline in LLM-native mode).
|
|
223
|
+
|
|
224
|
+
**Context injection**: `$README_CONTENT`, `$ENTRY_POINT`, `$LANGUAGE_DIRECTIVE`
|
|
225
|
+
|
|
226
|
+
**Input to subagent**:
|
|
227
|
+
- All file-level nodes: `{ id, name, filePath, summary, type }`
|
|
228
|
+
- Layers: `{ id, name, description }` (omit nodeIds)
|
|
229
|
+
- All edges (all types)
|
|
230
|
+
|
|
231
|
+
**Output**: `intermediate/tour.json`
|
|
232
|
+
|
|
233
|
+
**Normalize output** (in order):
|
|
234
|
+
1. Unwrap `{ "steps": [...] }` envelope if present
|
|
235
|
+
2. Rename `nodesToInspect` → `nodeIds`; `whyItMatters` → `description`
|
|
236
|
+
3. Convert raw file paths in `nodeIds` to `file:<relative-path>`
|
|
237
|
+
4. Drop `nodeIds` entries that don't exist in the node set
|
|
238
|
+
5. Sort by `order`
|
|
239
|
+
|
|
240
|
+
Final step shape (all required):
|
|
241
|
+
```json
|
|
242
|
+
{ "order": 1, "title": "...", "description": "...", "nodeIds": ["file:src/..."] }
|
|
243
|
+
```
|
|
244
|
+
Optional: `languageLesson` string field.
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Phase 6 — REVIEW
|
|
249
|
+
|
|
250
|
+
`[Phase 6/7] Validating knowledge graph...`
|
|
251
|
+
|
|
252
|
+
Assemble final KnowledgeGraph:
|
|
253
|
+
```json
|
|
254
|
+
{
|
|
255
|
+
"version": "1.0.0",
|
|
256
|
+
"project": { "name", "languages", "frameworks", "description", "analyzedAt", "gitCommitHash" },
|
|
257
|
+
"nodes": [...],
|
|
258
|
+
"edges": [...],
|
|
259
|
+
"layers": [...],
|
|
260
|
+
"tour": [...]
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Write to `intermediate/assembled-graph.json`.
|
|
265
|
+
|
|
266
|
+
### Default Path — Inline Deterministic Validation (no `--review` flag)
|
|
267
|
+
|
|
268
|
+
**Scripted mode**: Write and execute the Node.js inline validator (full script in main plugin SKILL.md).
|
|
269
|
+
Checks: required fields on all nodes, duplicate IDs, dangling edges, all file nodes assigned to layers, no multi-layer assignments, no orphan nodes.
|
|
270
|
+
|
|
271
|
+
**LLM-native mode**: Validate manually:
|
|
272
|
+
- Every node has: `id`, `type`, `name`, `summary`, `tags[]`
|
|
273
|
+
- No duplicate node IDs
|
|
274
|
+
- All edge `source`/`target` reference existing node IDs
|
|
275
|
+
- All file-type nodes assigned to exactly one layer
|
|
276
|
+
- All `layers[*].nodeIds` and `tour[*].nodeIds` reference existing nodes
|
|
277
|
+
|
|
278
|
+
### `--review` Path — Full LLM Review
|
|
279
|
+
|
|
280
|
+
Dispatch `graph-reviewer` subagent with:
|
|
281
|
+
- Assembled graph
|
|
282
|
+
- Phase 1 file inventory (all `{ path, sizeLines }`)
|
|
283
|
+
- `$PHASE_WARNINGS` list
|
|
284
|
+
- Cross-validation: every scan file should have a corresponding node; every graph node's `filePath` should appear in scan inventory
|
|
285
|
+
|
|
286
|
+
Output: `intermediate/review.json` — `{ issues: string[], warnings: string[], stats: {...} }`
|
|
287
|
+
|
|
288
|
+
### Issue Resolution
|
|
289
|
+
|
|
290
|
+
If `issues[]` is non-empty:
|
|
291
|
+
1. Auto-fix where possible: remove dangling edges, fill missing required fields (`tags` → `["untagged"]`, `summary` → `"No summary available"`), remove invalid-type nodes
|
|
292
|
+
2. Re-run validation once
|
|
293
|
+
3. If critical issues remain: save graph with warnings, skip dashboard auto-launch
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
## Phase 7 — SAVE
|
|
298
|
+
|
|
299
|
+
`[Phase 7/7] Saving knowledge graph...`
|
|
300
|
+
|
|
301
|
+
1. Write final graph to `$PROJECT_ROOT/.understand-anything/knowledge-graph.json`
|
|
302
|
+
|
|
303
|
+
2. **Scripted mode only — Generate fingerprints** (required before writing meta.json):
|
|
304
|
+
```bash
|
|
305
|
+
node <SKILL_DIR>/build-fingerprints.mjs intermediate/fingerprint-input.json
|
|
306
|
+
```
|
|
307
|
+
If this fails, abort Phase 7 — do NOT write meta.json.
|
|
308
|
+
|
|
309
|
+
3. Write `$PROJECT_ROOT/.understand-anything/meta.json`:
|
|
310
|
+
```json
|
|
311
|
+
{ "lastAnalyzedAt": "<ISO 8601>", "gitCommitHash": "<hash>", "version": "1.0.0", "analyzedFiles": <N> }
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
4. Clean up intermediate (preserve `scan-result.json` for future incremental runs):
|
|
315
|
+
```bash
|
|
316
|
+
find $PROJECT_ROOT/.understand-anything/intermediate -mindepth 1 -maxdepth 1 \
|
|
317
|
+
-not -name 'scan-result.json' -exec rm -rf {} +
|
|
318
|
+
rm -rf $PROJECT_ROOT/.understand-anything/tmp
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
5. Report summary:
|
|
322
|
+
- Project name and description
|
|
323
|
+
- Files analyzed / total (breakdown by fileCategory)
|
|
324
|
+
- Nodes created (by type)
|
|
325
|
+
- Edges created (by type)
|
|
326
|
+
- Layers identified (with names)
|
|
327
|
+
- Tour steps generated
|
|
328
|
+
- Warnings from `$PHASE_WARNINGS`
|
|
329
|
+
- Output path
|
|
330
|
+
|
|
331
|
+
6. Only auto-launch `/understand-dashboard` if final validation passed. Otherwise report saved-with-warnings, skip dashboard.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: update-readme
|
|
3
|
+
description: Detect feature commits and update README sections (Features, API, Usage) with accurate repo-aware changes, then stage only README for a docs commit. Use when users add features/routes/components and want README maintained automatically.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Update README Skill
|
|
7
|
+
|
|
8
|
+
Keep repository README files synchronized with delivered features using a deterministic git-first workflow.
|
|
9
|
+
|
|
10
|
+
## When To Use
|
|
11
|
+
|
|
12
|
+
Use this skill when users ask to:
|
|
13
|
+
- update README after feature work
|
|
14
|
+
- sync docs with recent commits
|
|
15
|
+
- document new API routes/components/usage
|
|
16
|
+
- create docs-only commit for README changes
|
|
17
|
+
|
|
18
|
+
## Core Guarantees
|
|
19
|
+
|
|
20
|
+
1. Only document capabilities that are evidenced in commit history and changed files.
|
|
21
|
+
2. Update the smallest relevant README sections:
|
|
22
|
+
- **Features**
|
|
23
|
+
- **API Reference**
|
|
24
|
+
- **Usage**
|
|
25
|
+
3. Stage only README changes for a docs commit when requested.
|
|
26
|
+
|
|
27
|
+
## Workflow
|
|
28
|
+
|
|
29
|
+
### Phase 1 — Detect feature commits since last README update
|
|
30
|
+
|
|
31
|
+
1. Find last commit touching a README file:
|
|
32
|
+
- `git log -n 1 --pretty=format:%H -- README.md **/README.md`
|
|
33
|
+
2. Collect feature commits after that point:
|
|
34
|
+
- `git log <last_readme_commit>..HEAD --oneline --grep "^feat(\\(|:)"`
|
|
35
|
+
3. If no feature commits exist, do not fabricate updates; report "README already current".
|
|
36
|
+
|
|
37
|
+
### Phase 2 — Identify changed modules/routes/components
|
|
38
|
+
|
|
39
|
+
1. Compute changed files for feature commits:
|
|
40
|
+
- `git diff --name-only <base>..HEAD`
|
|
41
|
+
2. Classify changes:
|
|
42
|
+
- backend/API: `src/api`, `routers`, `services`, `endpoints`
|
|
43
|
+
- frontend UI/routes: `frontend/src/pages`, `frontend/src/components`, `frontend/src/hooks`
|
|
44
|
+
- usage/config: CLI docs, env files, setup paths
|
|
45
|
+
3. Extract evidence snippets from code/comments/tests where needed before writing docs.
|
|
46
|
+
|
|
47
|
+
### Phase 3 — Update only relevant README sections
|
|
48
|
+
|
|
49
|
+
1. Add concise feature bullets in **Features** with user-facing language.
|
|
50
|
+
2. Update **API Reference** only for changed/new endpoints and request/response behavior.
|
|
51
|
+
3. Update **Usage** with new flags, routes, setup steps, or examples.
|
|
52
|
+
4. Preserve existing README tone and formatting; avoid large rewrites unless requested.
|
|
53
|
+
|
|
54
|
+
### Phase 4 — Stage only README changes for docs commit
|
|
55
|
+
|
|
56
|
+
1. Stage README files only:
|
|
57
|
+
- `git add README.md **/README.md`
|
|
58
|
+
2. Verify staged diff contains no non-README files.
|
|
59
|
+
3. Suggested conventional commit:
|
|
60
|
+
- `docs(readme): document <feature summary>`
|
|
61
|
+
|
|
62
|
+
## Quality Checklist
|
|
63
|
+
|
|
64
|
+
- [ ] Every README update maps to an actual feature commit or changed file.
|
|
65
|
+
- [ ] No speculative/future functionality is documented.
|
|
66
|
+
- [ ] API examples match current code paths and payload names.
|
|
67
|
+
- [ ] Only README files are staged for docs-only commit.
|
|
68
|
+
|
|
69
|
+
## Anti-Patterns
|
|
70
|
+
|
|
71
|
+
- Updating README without checking commit/file evidence.
|
|
72
|
+
- Mixing code changes into the docs-only commit.
|
|
73
|
+
- Duplicating changelog text instead of task-oriented usage guidance.
|
|
74
|
+
- Rewriting entire README for a minor feature addition.
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification-loop
|
|
3
|
+
context: fork
|
|
4
|
+
description: "Systematic code change verification — lint, test, type-check, review"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Verification Loop
|
|
8
|
+
|
|
9
|
+
Systematic checklist to verify code changes before committing or opening a PR.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- After completing a feature or significant code change
|
|
14
|
+
- Before creating a commit or pull request
|
|
15
|
+
- After refactoring
|
|
16
|
+
- Periodically during long coding sessions (every 15-30 min)
|
|
17
|
+
|
|
18
|
+
## Phase 1: Build Verification
|
|
19
|
+
|
|
20
|
+
Confirm the project compiles without errors.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Python
|
|
24
|
+
python -m py_compile myapp/main.py
|
|
25
|
+
|
|
26
|
+
# JavaScript/TypeScript
|
|
27
|
+
npm run build
|
|
28
|
+
|
|
29
|
+
# Go
|
|
30
|
+
go build ./...
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**If the build fails, stop and fix before continuing.**
|
|
34
|
+
|
|
35
|
+
## Phase 2: Type Check
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Python
|
|
39
|
+
mypy myapp/ --ignore-missing-imports
|
|
40
|
+
# or: pyright myapp/
|
|
41
|
+
|
|
42
|
+
# TypeScript
|
|
43
|
+
npx tsc --noEmit
|
|
44
|
+
|
|
45
|
+
# Go
|
|
46
|
+
go vet ./...
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Fix critical type errors. Defer warnings only if they're cosmetic.
|
|
50
|
+
|
|
51
|
+
## Phase 3: Lint Check
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Python
|
|
55
|
+
ruff check . --fix
|
|
56
|
+
ruff format . --check
|
|
57
|
+
|
|
58
|
+
# JavaScript/TypeScript
|
|
59
|
+
npx eslint . --fix
|
|
60
|
+
npx prettier --check .
|
|
61
|
+
|
|
62
|
+
# Go
|
|
63
|
+
golangci-lint run
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
| Category | Action |
|
|
67
|
+
|----------|--------|
|
|
68
|
+
| Errors (unused imports, undefined vars) | Fix now |
|
|
69
|
+
| Warnings (complexity, naming) | Fix if easy |
|
|
70
|
+
| Style (line length, whitespace) | Auto-fix |
|
|
71
|
+
|
|
72
|
+
## Phase 4: Test Suite
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
# Python
|
|
76
|
+
pytest --cov=myapp --cov-report=term-missing -v
|
|
77
|
+
|
|
78
|
+
# JavaScript/TypeScript
|
|
79
|
+
npm test -- --coverage
|
|
80
|
+
|
|
81
|
+
# Go
|
|
82
|
+
go test ./... -cover
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Record: tests passed/failed, coverage %, duration. If tests fail, check whether the failure is in your changed code or pre-existing.
|
|
86
|
+
|
|
87
|
+
## Phase 5: Security Scan
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Secrets detection in staged files
|
|
91
|
+
git diff --cached --name-only | xargs grep -l -E \
|
|
92
|
+
"(api_key|secret|password|token)\s*=\s*['\"][^'\"]+['\"]" 2>/dev/null
|
|
93
|
+
|
|
94
|
+
# Dependency audit
|
|
95
|
+
pip audit # Python
|
|
96
|
+
npm audit # JavaScript
|
|
97
|
+
govulncheck ./... # Go
|
|
98
|
+
|
|
99
|
+
# Debug artifacts
|
|
100
|
+
grep -rn "breakpoint()" --include="*.py" myapp/
|
|
101
|
+
grep -rn "console\.log" --include="*.ts" src/
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Phase 5A: Dead Code & Orphan Scan
|
|
105
|
+
|
|
106
|
+
Catch unreachable, unused, and orphaned symbols before they accumulate.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# TypeScript / JavaScript — pick one tool
|
|
110
|
+
npx ts-prune --project tsconfig.json # unused exports (TS)
|
|
111
|
+
npx knip # unused files, exports, deps (TS/JS)
|
|
112
|
+
|
|
113
|
+
# Python
|
|
114
|
+
pip install vulture
|
|
115
|
+
vulture myapp/ --min-confidence 80 # unused code (functions, classes, vars)
|
|
116
|
+
|
|
117
|
+
# Quick grep fallback (any language)
|
|
118
|
+
# Find symbols defined but never imported/called in the rest of the repo
|
|
119
|
+
# (adjust pattern to project conventions)
|
|
120
|
+
grep -rn "^export function \|^export class \|^def " --include="*.ts" --include="*.py" src/
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Checklist:**
|
|
124
|
+
- [ ] No new unused exports introduced by this change
|
|
125
|
+
- [ ] No orphaned files (created but never imported)
|
|
126
|
+
- [ ] Removed code has no remaining stale import sites
|
|
127
|
+
|
|
128
|
+
**Standing rule:** Do not commit a change that introduces new orphans or dead exports. If a symbol is intentionally exported for external consumers, add a `// @public` comment or equivalent project convention to suppress false positives.
|
|
129
|
+
|
|
130
|
+
## Phase 6: Diff Review
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
git diff --stat # Summary
|
|
134
|
+
git diff --cached # Staged changes
|
|
135
|
+
git diff --name-only HEAD # Changed files
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
For each changed file check:
|
|
139
|
+
- [ ] No unintended changes or debug code
|
|
140
|
+
- [ ] Error handling present for new code paths
|
|
141
|
+
- [ ] Edge cases handled (empty input, None, boundaries)
|
|
142
|
+
- [ ] No unaddressed TODO/FIXME for this PR
|
|
143
|
+
|
|
144
|
+
## Verification Report
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
VERIFICATION REPORT
|
|
148
|
+
===================
|
|
149
|
+
Build: PASS
|
|
150
|
+
Types: PASS (0 errors)
|
|
151
|
+
Lint: PASS (2 warnings — deferred)
|
|
152
|
+
Tests: PASS (42/42 passed, 84% coverage)
|
|
153
|
+
Security: PASS (0 secrets, 0 vulnerabilities)
|
|
154
|
+
Diff: 5 files changed (+120, -45)
|
|
155
|
+
|
|
156
|
+
Status: READY for commit/PR
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
| Status | Meaning |
|
|
160
|
+
|-------------|---------------------------------------------|
|
|
161
|
+
| READY | All checks pass, safe to commit/PR |
|
|
162
|
+
| NEEDS FIXES | Blocking issues — fix before proceeding |
|
|
163
|
+
| PARTIAL | Non-blocking warnings — document and proceed|
|
|
164
|
+
|
|
165
|
+
## Automation
|
|
166
|
+
|
|
167
|
+
### Pre-Commit Hook
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
#!/bin/sh
|
|
171
|
+
ruff check . || exit 1
|
|
172
|
+
mypy myapp/ || exit 1
|
|
173
|
+
pytest --cov=myapp --cov-fail-under=80 -q || exit 1
|
|
174
|
+
echo "All checks passed."
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### CI Pipeline
|
|
178
|
+
|
|
179
|
+
```yaml
|
|
180
|
+
# .github/workflows/verify.yml
|
|
181
|
+
name: Verify
|
|
182
|
+
context: fork
|
|
183
|
+
on: [push, pull_request]
|
|
184
|
+
jobs:
|
|
185
|
+
verify:
|
|
186
|
+
runs-on: ubuntu-latest
|
|
187
|
+
steps:
|
|
188
|
+
- uses: actions/checkout@v4
|
|
189
|
+
- uses: actions/setup-python@v5
|
|
190
|
+
with: { python-version: "3.12" }
|
|
191
|
+
- run: pip install -r requirements.txt
|
|
192
|
+
- run: ruff check .
|
|
193
|
+
- run: mypy myapp/
|
|
194
|
+
- run: pytest --cov=myapp --cov-fail-under=80
|
|
195
|
+
- run: pip audit
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Quick Reference
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# Full verification
|
|
202
|
+
ruff check . && mypy myapp/ && pytest --cov=myapp -v && pip audit
|
|
203
|
+
|
|
204
|
+
# Quick check (lint + tests)
|
|
205
|
+
ruff check . && pytest -x -q
|
|
206
|
+
|
|
207
|
+
# Periodic checkpoint
|
|
208
|
+
python -m py_compile myapp/main.py && ruff check . && pytest -x -q
|
|
209
|
+
```
|