@caddis/cli 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/antigravity-plugin/agents/knowledge-transfer.md +17 -32
- package/bundles/antigravity-plugin/caddis_statusline.py +25 -3
- package/bundles/antigravity-plugin/guard_agy.py +41 -9
- package/bundles/antigravity-plugin/plugin.json +1 -1
- package/bundles/antigravity-plugin/scripts/caddis_inventory.py +73 -3
- package/bundles/antigravity-plugin/scripts/caddis_statusline.py +25 -3
- package/bundles/antigravity-plugin/scripts/check_doc_coverage.py +1 -1
- package/bundles/antigravity-plugin/scripts/claudster_config.py +0 -5
- package/bundles/antigravity-plugin/scripts/hook_log.py +1 -1
- package/bundles/antigravity-plugin/scripts/new-machine.ps1 +170 -0
- package/bundles/antigravity-plugin/scripts/oss_ask.py +1 -1
- package/bundles/antigravity-plugin/scripts/oss_model.py +10 -2
- package/bundles/antigravity-plugin/scripts/oss_review.py +1 -1
- package/bundles/antigravity-plugin/scripts/setup_project_ai.py +42 -10
- package/bundles/antigravity-plugin/session_end_agy.py +31 -6
- package/bundles/antigravity-plugin/skills/_registry.md +1 -0
- package/bundles/antigravity-plugin/skills/advisory-hub/SKILL.md +44 -0
- package/bundles/antigravity-plugin/skills/code-review/SKILL.md +11 -0
- package/bundles/antigravity-plugin/skills/feature-plan/SKILL.md +21 -0
- package/bundles/antigravity-plugin/skills/gate-review/SKILL.md +11 -0
- package/bundles/antigravity-plugin/skills/implement/SKILL.md +36 -0
- package/bundles/antigravity-plugin/skills/safe-cleanup/SKILL.md +186 -0
- package/bundles/antigravity-plugin/skills/security-review/SKILL.md +9 -0
- package/bundles/antigravity-plugin/skills/validate-phase/SKILL.md +31 -0
- package/bundles/antigravity-plugin/warm_start_agy.py +96 -9
- package/bundles/antigravity-plugin-extras/plugin.json +1 -1
- package/bundles/antigravity-plugin-extras/skills/_registry.md +1 -0
- package/bundles/antigravity-plugin-extras/skills/safe-cleanup/SKILL.md +186 -0
- package/bundles/codex/.codex/config.toml.example +36 -0
- package/bundles/codex/.codex/skills/coding/api-design/SKILL.md +249 -0
- package/bundles/codex/.codex/skills/coding/backend-development/SKILL.md +305 -0
- package/bundles/codex/.codex/skills/coding/code-review/SKILL.md +140 -0
- package/bundles/codex/.codex/skills/coding/codebase-audit/SKILL.md +204 -0
- package/bundles/codex/.codex/skills/coding/dashboard-perf-sweep/SKILL.md +132 -0
- package/bundles/codex/.codex/skills/coding/dashboard-perf-sweep/scripts/perf_sweep.py +249 -0
- package/bundles/codex/.codex/skills/coding/error-handling/SKILL.md +260 -0
- package/bundles/codex/.codex/skills/coding/fastapi-dev/SKILL.md +300 -0
- package/bundles/codex/.codex/skills/coding/javascript-typescript/SKILL.md +142 -0
- package/bundles/codex/.codex/skills/coding/python/SKILL.md +388 -0
- package/bundles/codex/.codex/skills/coding/refactoring/SKILL.md +486 -0
- package/bundles/codex/.codex/skills/coding/security-review/SKILL.md +205 -0
- package/bundles/codex/.codex/skills/coding/sql/SKILL.md +321 -0
- package/bundles/codex/.codex/skills/data/database-design/SKILL.md +177 -0
- package/bundles/codex/.codex/skills/data/db-diagram/SKILL.md +148 -0
- package/bundles/codex/.codex/skills/data/db-diagram/scripts/sql_to_graph.py +1212 -0
- package/bundles/codex/.codex/skills/devops/ci-cd-pipeline/SKILL.md +315 -0
- package/bundles/codex/.codex/skills/devops/gh-cli/SKILL.md +195 -0
- package/bundles/codex/.codex/skills/devops/git-commit/SKILL.md +285 -0
- package/bundles/codex/.codex/skills/devops/safe-cleanup/SKILL.md +186 -0
- package/bundles/codex/.codex/skills/devops/using-git-worktrees/SKILL.md +217 -0
- package/bundles/codex/.codex/skills/devops/windows-deployment/SKILL.md +880 -0
- package/bundles/codex/.codex/skills/docs/code-documentation/SKILL.md +271 -0
- package/bundles/codex/.codex/skills/docs/explainer-doc/SKILL.md +97 -0
- package/bundles/codex/.codex/skills/docs/technical-writing/SKILL.md +286 -0
- package/bundles/codex/.codex/skills/docs/writing-plans/SKILL.md +387 -0
- package/bundles/codex/.codex/skills/frontend/css-architecture/SKILL.md +305 -0
- package/bundles/codex/.codex/skills/frontend/css-architecture/references/RESPONSIVE-DESIGN.md +604 -0
- package/bundles/codex/.codex/skills/frontend/frontend-design/SKILL.md +193 -0
- package/bundles/codex/.codex/skills/frontend/frontend-design/references/my-tech-stack.md +127 -0
- package/bundles/codex/.codex/skills/frontend/mockup/SKILL.md +242 -0
- package/bundles/codex/.codex/skills/frontend/react-best-practices/SKILL.md +269 -0
- package/bundles/codex/.codex/skills/frontend/react-dev/README.md +404 -0
- package/bundles/codex/.codex/skills/frontend/react-dev/SKILL.md +459 -0
- package/bundles/codex/.codex/skills/frontend/react-dev/examples/generic-components.md +579 -0
- package/bundles/codex/.codex/skills/frontend/react-dev/examples/server-components.md +579 -0
- package/bundles/codex/.codex/skills/frontend/react-dev/references/event-handlers.md +574 -0
- package/bundles/codex/.codex/skills/frontend/react-dev/references/hooks.md +456 -0
- package/bundles/codex/.codex/skills/frontend/react-dev/references/react-19-patterns.md +638 -0
- package/bundles/codex/.codex/skills/frontend/react-dev/references/react-router.md +1002 -0
- package/bundles/codex/.codex/skills/frontend/react-dev/references/tanstack-router.md +587 -0
- package/bundles/codex/.codex/skills/frontend/ui-review/SKILL.md +176 -0
- package/bundles/codex/.codex/skills/frontend/ui-review/references/framework-fixes.md +471 -0
- package/bundles/codex/.codex/skills/frontend/ui-review/references/visual-checklist.md +236 -0
- package/bundles/codex/.codex/skills/frontend/warm-editorial-ui/DESIGN_TOKENS.md +487 -0
- package/bundles/codex/.codex/skills/frontend/warm-editorial-ui/IMPLEMENTATION_GUIDE.md +177 -0
- package/bundles/codex/.codex/skills/frontend/warm-editorial-ui/SKILL.md +732 -0
- package/bundles/codex/.codex/skills/media/draw-io/SKILL.md +162 -0
- package/bundles/codex/.codex/skills/media/draw-io/references/aws-icons.md +677 -0
- package/bundles/codex/.codex/skills/media/draw-io/references/layout-guidelines.md +142 -0
- package/bundles/codex/.codex/skills/media/draw-io/references/troubleshooting.md +118 -0
- package/bundles/codex/.codex/skills/media/draw-io/references/workflows.md +103 -0
- package/bundles/codex/.codex/skills/media/draw-io/scripts/convert-drawio-to-png.sh +25 -0
- package/bundles/codex/.codex/skills/media/draw-io/scripts/find_aws_icon.py +79 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/SKILL.md +292 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/ENHANCEMENTS.md +264 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/MERMAID-SUMMARY.md +137 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/advanced-features.md +556 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/architecture-diagrams.md +192 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/c4-diagrams.md +410 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/class-diagrams.md +361 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/erd-diagrams.md +510 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/flowcharts.md +450 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/sequence-diagrams.md +394 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/troubleshooting.md +335 -0
- package/bundles/codex/.codex/skills/media/mermaid-diagrams/references/workflows.md +418 -0
- package/bundles/codex/.codex/skills/media/particle-art/SKILL.md +243 -0
- package/bundles/codex/.codex/skills/media/particle-art/references/canvas-utils.ts +171 -0
- package/bundles/codex/.codex/skills/media/particle-art/references/dot-field.template.tsx +203 -0
- package/bundles/codex/.codex/skills/media/particle-art/references/flow-field.template.tsx +263 -0
- package/bundles/codex/.codex/skills/media/particle-art/references/node-shape.template.tsx +261 -0
- package/bundles/codex/.codex/skills/media/particle-art/references/shape-sampler.ts +281 -0
- package/bundles/codex/.codex/skills/media/particle-art/references/stipple-morph.template.tsx +167 -0
- package/bundles/codex/.codex/skills/media/particle-art/references/stipple.template.tsx +175 -0
- package/bundles/codex/.codex/skills/media/particle-art/references/trail-ghost.template.tsx +266 -0
- package/bundles/codex/.codex/skills/media/particle-art/references/usage-examples.md +320 -0
- package/bundles/codex/.codex/skills/testing/playwright/API_REFERENCE.md +653 -0
- package/bundles/codex/.codex/skills/testing/playwright/SKILL.md +454 -0
- package/bundles/codex/.codex/skills/testing/playwright/lib/helpers.js +441 -0
- package/bundles/codex/.codex/skills/testing/playwright/package.json +26 -0
- package/bundles/codex/.codex/skills/testing/playwright/run.js +228 -0
- package/bundles/codex/.codex/skills/testing/tdd-workflow/SKILL.md +188 -0
- package/bundles/codex/.codex/skills/testing/test-strategy/SKILL.md +155 -0
- package/bundles/codex/.codex/skills/testing/webapp-testing/LICENSE.txt +202 -0
- package/bundles/codex/.codex/skills/testing/webapp-testing/SKILL.md +97 -0
- package/bundles/codex/.codex/skills/testing/webapp-testing/examples/console_logging.py +35 -0
- package/bundles/codex/.codex/skills/testing/webapp-testing/examples/element_discovery.py +40 -0
- package/bundles/codex/.codex/skills/testing/webapp-testing/examples/static_html_automation.py +33 -0
- package/bundles/codex/.codex/skills/testing/webapp-testing/scripts/with_server.py +106 -0
- package/bundles/codex/.codex/skills/workflow/advisory-hub/SKILL.md +227 -0
- package/bundles/codex/.codex/skills/workflow/advisory-hub/reference/context-template.md +214 -0
- package/bundles/codex/.codex/skills/workflow/advisory-hub/reference/hub-handbook.md +233 -0
- package/bundles/codex/.codex/skills/workflow/advisory-hub/reference/report-contract.md +94 -0
- package/bundles/codex/.codex/skills/workflow/advisory-hub/reference/succession.md +118 -0
- package/bundles/codex/.codex/skills/workflow/best-practices/SKILL.md +500 -0
- package/bundles/codex/.codex/skills/workflow/best-practices/agents/best-practices-referencer.md +263 -0
- package/bundles/codex/.codex/skills/workflow/best-practices/agents/codebase-context-builder.md +326 -0
- package/bundles/codex/.codex/skills/workflow/best-practices/agents/task-intent-analyzer.md +245 -0
- package/bundles/codex/.codex/skills/workflow/best-practices/references/anti-patterns.md +571 -0
- package/bundles/codex/.codex/skills/workflow/best-practices/references/before-after-examples.md +1114 -0
- package/bundles/codex/.codex/skills/workflow/best-practices/references/best-practices-guide.md +513 -0
- package/bundles/codex/.codex/skills/workflow/best-practices/references/common-workflows.md +692 -0
- package/bundles/codex/.codex/skills/workflow/best-practices/references/prompt-patterns.md +547 -0
- package/bundles/codex/.codex/skills/workflow/brainstorming/SKILL.md +57 -0
- package/bundles/codex/.codex/skills/workflow/context-curator/SKILL.md +157 -0
- package/bundles/codex/.codex/skills/workflow/golden-plan/SKILL.md +586 -0
- package/bundles/codex/.codex/skills/workflow/preflight/SKILL.md +440 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/LICENSE.txt +202 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/SKILL.md +491 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/agents/analyzer.md +274 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/agents/comparator.md +202 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/agents/grader.md +223 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/assets/eval_review.html +146 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/eval-viewer/generate_review.py +471 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/eval-viewer/viewer.html +1325 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/references/schemas.md +430 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/scripts/__init__.py +0 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/scripts/generate_report.py +326 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/scripts/improve_description.py +247 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/scripts/package_skill.py +136 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/scripts/quick_validate.py +103 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/scripts/run_eval.py +310 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/scripts/run_loop.py +328 -0
- package/bundles/codex/.codex/skills/workflow/skill-creator/scripts/utils.py +47 -0
- package/bundles/codex/AGENTS.md +146 -0
- package/bundles/manifest.json +4 -3
- package/dist/claude-deepseek.js +2 -2
- package/dist/claude-glm.js +2 -2
- package/dist/claude-oss.js +2 -2
- package/dist/cli.js +187 -56
- package/package.json +1 -1
- package/bundles/antigravity-plugin/scripts/dream_capture.py +0 -249
- package/bundles/antigravity-plugin/scripts/dream_memory.py +0 -438
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -94
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- 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 +0 -93
- package/bundles/antigravity-plugin-extras/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-commit
|
|
3
|
+
description: Create well-structured conventional commit messages following Conventional Commits standard. Use when committing changes, preparing PRs, or generating changelogs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Git Commit Skill
|
|
7
|
+
|
|
8
|
+
Create meaningful, conventional commit messages that follow team standards.
|
|
9
|
+
|
|
10
|
+
## Trigger
|
|
11
|
+
|
|
12
|
+
Activate when:
|
|
13
|
+
- User asks to commit changes
|
|
14
|
+
- User needs help writing a commit message
|
|
15
|
+
- User asks "what should I commit this as?"
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Conventional Commit Format
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
<type>(<scope>): <subject>
|
|
23
|
+
|
|
24
|
+
[optional body]
|
|
25
|
+
|
|
26
|
+
[optional footer]
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Types
|
|
30
|
+
|
|
31
|
+
| Type | Description | Example |
|
|
32
|
+
|------|-------------|---------|
|
|
33
|
+
| `feat` | New feature | `feat(complaints): add priority filtering` |
|
|
34
|
+
| `fix` | Bug fix | `fix(auth): resolve session timeout issue` |
|
|
35
|
+
| `docs` | Documentation | `docs: update API documentation` |
|
|
36
|
+
| `style` | Formatting (no code change) | `style: fix indentation in models` |
|
|
37
|
+
| `refactor` | Code restructuring | `refactor(db): extract query builder` |
|
|
38
|
+
| `perf` | Performance improvement | `perf: add caching to dashboard` |
|
|
39
|
+
| `test` | Adding/fixing tests | `test: add complaint service tests` |
|
|
40
|
+
| `chore` | Maintenance | `chore: update dependencies` |
|
|
41
|
+
| `ci` | CI/CD changes | `ci: add pytest to GitHub Actions` |
|
|
42
|
+
| `build` | Build system/dependencies | `build: update webpack to v5` |
|
|
43
|
+
| `revert` | Revert a previous commit | `revert: revert feat(api) endpoint` |
|
|
44
|
+
|
|
45
|
+
### Scope
|
|
46
|
+
|
|
47
|
+
Optional area of change:
|
|
48
|
+
- `api` - Backend API changes
|
|
49
|
+
- `ui` - Frontend/Streamlit changes
|
|
50
|
+
- `db` - Database changes
|
|
51
|
+
- `auth` - Authentication
|
|
52
|
+
- `complaints` - Complaints feature
|
|
53
|
+
- `analytics` - Analytics feature
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Phase 1: Analyze Changes
|
|
58
|
+
|
|
59
|
+
### Actions
|
|
60
|
+
|
|
61
|
+
0. **Run a pre-commit quality gate (blocking)**
|
|
62
|
+
```bash
|
|
63
|
+
# Python repos
|
|
64
|
+
ruff check .
|
|
65
|
+
|
|
66
|
+
# TypeScript/React repos
|
|
67
|
+
npm run lint
|
|
68
|
+
|
|
69
|
+
# If both stacks exist, run both.
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
If lint fails, do not proceed to commit generation until fixed.
|
|
73
|
+
|
|
74
|
+
1. **Review staged changes**
|
|
75
|
+
```bash
|
|
76
|
+
# If files are staged, use staged diff
|
|
77
|
+
git diff --staged --stat
|
|
78
|
+
git diff --staged
|
|
79
|
+
|
|
80
|
+
# If nothing staged, check working tree
|
|
81
|
+
git diff
|
|
82
|
+
git status --porcelain
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
2. **Stage files if needed**
|
|
86
|
+
```bash
|
|
87
|
+
# Stage specific files
|
|
88
|
+
git add path/to/file1 path/to/file2
|
|
89
|
+
|
|
90
|
+
# Stage by pattern
|
|
91
|
+
git add *.test.*
|
|
92
|
+
git add src/components/*
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
**Never stage secrets** (`.env`, `credentials.json`, private keys).
|
|
96
|
+
|
|
97
|
+
3. **Categorize the changes**
|
|
98
|
+
- What files were modified?
|
|
99
|
+
- What was the primary purpose?
|
|
100
|
+
- Are there multiple logical changes?
|
|
101
|
+
|
|
102
|
+
3. **Identify the commit type**
|
|
103
|
+
- New functionality → `feat`
|
|
104
|
+
- Bug fix → `fix`
|
|
105
|
+
- Code improvement without behavior change → `refactor`
|
|
106
|
+
- Tests → `test`
|
|
107
|
+
- Documentation → `docs`
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Phase 2: Craft the Message
|
|
112
|
+
|
|
113
|
+
### Subject Line Rules
|
|
114
|
+
|
|
115
|
+
1. **Use imperative mood**: "add" not "added" or "adds"
|
|
116
|
+
2. **No period** at the end
|
|
117
|
+
3. **50 characters or less** (hard limit: 72)
|
|
118
|
+
4. **Lowercase** after the colon
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
# ✅ Good
|
|
122
|
+
feat(complaints): add priority filter to dashboard
|
|
123
|
+
fix(api): handle null customer_id in query
|
|
124
|
+
refactor(db): extract database adapter class
|
|
125
|
+
|
|
126
|
+
# ⌠Bad
|
|
127
|
+
feat(complaints): Added priority filter to dashboard. # Past tense, period
|
|
128
|
+
FEAT: ADD PRIORITY FILTER # Uppercase, no scope
|
|
129
|
+
fix: various bug fixes # Too vague
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Body (When Needed)
|
|
133
|
+
|
|
134
|
+
Include body when:
|
|
135
|
+
- Change needs explanation
|
|
136
|
+
- There's context that isn't obvious
|
|
137
|
+
- Breaking changes exist
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
feat(api): add complaint analytics endpoint
|
|
141
|
+
|
|
142
|
+
Add new endpoint for retrieving complaint statistics
|
|
143
|
+
including resolution times, category distribution, and
|
|
144
|
+
trend analysis.
|
|
145
|
+
|
|
146
|
+
This endpoint powers the new analytics dashboard.
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Footer (When Needed)
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
# Breaking change
|
|
153
|
+
feat(api)!: change complaint response format
|
|
154
|
+
|
|
155
|
+
BREAKING CHANGE: complaint.created_at now returns ISO format
|
|
156
|
+
|
|
157
|
+
# Issue reference
|
|
158
|
+
fix(ui): resolve dashboard loading error
|
|
159
|
+
|
|
160
|
+
Fixes #123
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Phase 3: Generate Message
|
|
166
|
+
|
|
167
|
+
### Template
|
|
168
|
+
|
|
169
|
+
Based on the changes, generate:
|
|
170
|
+
|
|
171
|
+
```markdown
|
|
172
|
+
## Suggested Commit Message
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
<type>(<scope>): <subject>
|
|
176
|
+
|
|
177
|
+
<body if needed>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Reasoning
|
|
181
|
+
- Type: [Why this type was chosen]
|
|
182
|
+
- Scope: [Area of the codebase affected]
|
|
183
|
+
- Subject: [What the change does]
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Examples
|
|
189
|
+
|
|
190
|
+
### Simple Feature
|
|
191
|
+
|
|
192
|
+
**Changes**: Added a new filter dropdown to the complaints dashboard
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
feat(ui): add status filter to complaints dashboard
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Bug Fix with Context
|
|
199
|
+
|
|
200
|
+
**Changes**: Fixed issue where queries with special characters caused errors
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
fix(db): escape special characters in search queries
|
|
204
|
+
|
|
205
|
+
The search function was failing when users entered characters
|
|
206
|
+
like quotes or semicolons. Added proper escaping using
|
|
207
|
+
parameterized queries.
|
|
208
|
+
|
|
209
|
+
Fixes #42
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Refactoring
|
|
213
|
+
|
|
214
|
+
**Changes**: Moved database logic from routes to repository classes
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
refactor(api): extract database operations to repository layer
|
|
218
|
+
|
|
219
|
+
Move direct database calls from route handlers to dedicated
|
|
220
|
+
repository classes. This improves testability and follows
|
|
221
|
+
the separation of concerns principle.
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Multiple Files, Single Purpose
|
|
225
|
+
|
|
226
|
+
**Changes**: Updated multiple files to add logging
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
feat: add structured logging throughout application
|
|
230
|
+
|
|
231
|
+
- Add loguru configuration in config.py
|
|
232
|
+
- Replace print statements with logger calls
|
|
233
|
+
- Add request logging middleware
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Breaking Change
|
|
237
|
+
|
|
238
|
+
**Changes**: Changed API response format
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
feat(api)!: standardize API response envelope
|
|
242
|
+
|
|
243
|
+
BREAKING CHANGE: All API responses now wrapped in
|
|
244
|
+
{ "data": ..., "meta": { "timestamp": ... } } format.
|
|
245
|
+
|
|
246
|
+
Clients need to update response parsing logic.
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Quick Reference
|
|
252
|
+
|
|
253
|
+
When in doubt, ask yourself:
|
|
254
|
+
|
|
255
|
+
1. **What type of change is this?** → Choose type
|
|
256
|
+
2. **What area does it affect?** → Choose scope
|
|
257
|
+
3. **What does it do?** (in imperative) → Write subject
|
|
258
|
+
4. **Why was this done?** → Write body if needed
|
|
259
|
+
5. **Does it break anything?** → Add BREAKING CHANGE if yes
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## Git Safety Protocol
|
|
264
|
+
|
|
265
|
+
- NEVER update git config
|
|
266
|
+
- NEVER run destructive commands (`--force`, hard reset) without explicit user request
|
|
267
|
+
- NEVER skip hooks (`--no-verify`) unless user asks
|
|
268
|
+
- NEVER force push to main/master
|
|
269
|
+
- ALWAYS verify lint gate status before creating a commit message
|
|
270
|
+
- If a commit fails due to pre-commit hooks, fix the issue and create a NEW commit (don't amend the failed one)
|
|
271
|
+
- One logical change per commit
|
|
272
|
+
- Reference issues in footers: `Closes #123`, `Refs #456`
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Commit Message Checklist
|
|
277
|
+
|
|
278
|
+
- [ ] Type is appropriate for the change
|
|
279
|
+
- [ ] Scope identifies the affected area
|
|
280
|
+
- [ ] Subject uses imperative mood
|
|
281
|
+
- [ ] Subject is under 50 characters
|
|
282
|
+
- [ ] Body explains "why" if not obvious
|
|
283
|
+
- [ ] Breaking changes are marked with `!` and footer
|
|
284
|
+
- [ ] Related issues are referenced
|
|
285
|
+
- [ ] No secrets or credentials in staged files
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: safe-cleanup
|
|
3
|
+
description: Use BEFORE deleting any directory tree, clearing a scratchpad, removing git worktrees, or "tidying up" generated folders - especially on Windows, where a recursive delete that meets a junction or symlink destroys the link's TARGET. Also use when verifying that a Python venv or node_modules survived a cleanup, because pip check and file counts both report healthy on a half-deleted environment.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Safe Cleanup
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Cleanup looks like the safest thing you do all day. It is the most destructive.
|
|
11
|
+
|
|
12
|
+
This skill exists because of a real incident: an agent created 31 directory
|
|
13
|
+
junctions from throwaway worktrees into live repositories, unlinked them, saw
|
|
14
|
+
"31 unlinked, 0 failed", then recursively deleted the parent. A junction it had
|
|
15
|
+
never seen survived the scan, the delete followed it, and **five repositories'
|
|
16
|
+
development environments were destroyed**. Every verification afterwards said
|
|
17
|
+
"intact", because the verification was wrong too.
|
|
18
|
+
|
|
19
|
+
Two hours of repair. None of it would have happened with the rules below.
|
|
20
|
+
|
|
21
|
+
## The one-paragraph version
|
|
22
|
+
|
|
23
|
+
On Windows, `Remove-Item -Recurse` **follows junctions and deletes their
|
|
24
|
+
targets**. Enumerating with `-ErrorAction SilentlyContinue` hides the ones you
|
|
25
|
+
cannot read. And after the damage, `pip check`, `pip list` and file counts all
|
|
26
|
+
report success, because metadata survives while package files do not. So: never
|
|
27
|
+
link into somewhere real, never recurse through a link, prefer rename over
|
|
28
|
+
delete, and verify by *using* the thing rather than counting it.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## RULE 1 - Prefer rename over delete
|
|
33
|
+
|
|
34
|
+
Rename is atomic. Recursive delete is not: it can fail half way and leave a
|
|
35
|
+
directory that looks present and is unusable.
|
|
36
|
+
|
|
37
|
+
```powershell
|
|
38
|
+
Rename-Item -Path $target -NewName ".broken-$(Get-Date -Format 'yyyyMMdd-HHmmss')"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
In the incident, a venv holding `_greenlet.cp314-win_amd64.pyd` open **refused to
|
|
42
|
+
delete** but **renamed fine**. Had the delete been retried or forced, it would
|
|
43
|
+
have half-emptied the directory.
|
|
44
|
+
|
|
45
|
+
Rename first, build fresh alongside, delete the old copy later when nothing holds
|
|
46
|
+
it. Disk is cheap. An environment nobody can recover is not.
|
|
47
|
+
|
|
48
|
+
## RULE 2 - Never recurse a delete through a reparse point
|
|
49
|
+
|
|
50
|
+
Junctions and symlinks are transparent to `Remove-Item -Recurse`. Deleting a
|
|
51
|
+
folder that contains a link to `C:\live\thing` deletes **the contents of
|
|
52
|
+
`C:\live\thing`**.
|
|
53
|
+
|
|
54
|
+
Check first, and **fail if the check itself cannot complete**:
|
|
55
|
+
|
|
56
|
+
```powershell
|
|
57
|
+
$links = @(Get-ChildItem $path -Recurse -Force -Directory -ErrorAction Stop |
|
|
58
|
+
Where-Object { $_.Attributes -band [IO.FileAttributes]::ReparsePoint })
|
|
59
|
+
if ($links.Count) {
|
|
60
|
+
$links | ForEach-Object { Write-Host " $($_.FullName) -> $($_.Target)" }
|
|
61
|
+
throw "refusing: $($links.Count) link(s) inside $path"
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
`-ErrorAction SilentlyContinue` on that scan is precisely what caused the
|
|
66
|
+
incident. A link inside a directory the scanner could not read was skipped in
|
|
67
|
+
silence and never appeared in the count. **A scan that cannot see everything must
|
|
68
|
+
fail, not shrug.**
|
|
69
|
+
|
|
70
|
+
To remove a link itself, unlink it - never delete through it:
|
|
71
|
+
|
|
72
|
+
```powershell
|
|
73
|
+
[System.IO.Directory]::Delete($linkPath, $false) # link only, never the target
|
|
74
|
+
cmd /c rmdir "$linkPath" # same effect
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## RULE 3 - Do not create links into live directories
|
|
78
|
+
|
|
79
|
+
The safest delete is the one with nothing to follow.
|
|
80
|
+
|
|
81
|
+
If a throwaway workspace needs dependencies, **build them there**, or point the
|
|
82
|
+
tool at an absolute interpreter path. Do not junction `<scratch>\.venv` to
|
|
83
|
+
`<live-repo>\.venv` for convenience - that is a loaded gun aimed at the repo, and
|
|
84
|
+
any cleanup above the link can fire it.
|
|
85
|
+
|
|
86
|
+
If you must link, remove the link the moment you are done, and never leave one
|
|
87
|
+
inside a directory that something else will clean up.
|
|
88
|
+
|
|
89
|
+
## RULE 4 - Verify by using, not by counting
|
|
90
|
+
|
|
91
|
+
After any cleanup near an environment, prove it still works. These all LIE on a
|
|
92
|
+
half-deleted Python venv, because dist-info metadata survives while package files
|
|
93
|
+
are removed:
|
|
94
|
+
|
|
95
|
+
| Check | Why it lies |
|
|
96
|
+
|---|---|
|
|
97
|
+
| `Test-Path .venv\Scripts\python.exe` | Proves the interpreter exists. Says nothing about packages. |
|
|
98
|
+
| file or directory counts | Metadata directories inflate the count. |
|
|
99
|
+
| `pip list` | Reads metadata. |
|
|
100
|
+
| `pip check` | Reads metadata. Reported "No broken requirements found" on a venv that could not import fastapi. |
|
|
101
|
+
| `pip install -e .` | Reads metadata, calls the package satisfied, **skips it, and reports success**. |
|
|
102
|
+
|
|
103
|
+
The honest check is whether the interpreter can import what the project declares:
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
import importlib.util
|
|
107
|
+
importlib.util.find_spec("fastapi") is None # -> True means genuinely missing
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
For node, check that a real entry point resolves, not that `node_modules` exists.
|
|
111
|
+
|
|
112
|
+
**Map distribution names to import names.** `pyjwt` imports as `jwt`,
|
|
113
|
+
`python-ulid` as `ulid`, `python-dotenv` as `dotenv`. A naive audit produces false
|
|
114
|
+
positives and will have you rebuilding healthy environments - which is its own way
|
|
115
|
+
of causing an outage.
|
|
116
|
+
|
|
117
|
+
## RULE 5 - Stop what holds the files, or refuse
|
|
118
|
+
|
|
119
|
+
A running service turns a delete into a **partial** delete - the worst outcome.
|
|
120
|
+
|
|
121
|
+
Stop named services first. Then check for surviving processes and **refuse rather
|
|
122
|
+
than force**:
|
|
123
|
+
|
|
124
|
+
```powershell
|
|
125
|
+
$held = @(Get-CimInstance Win32_Process -Filter "Name='python.exe'" |
|
|
126
|
+
Where-Object { $_.ExecutablePath -like "$venv\*" })
|
|
127
|
+
if ($held.Count) { throw "refusing: still held by PID $($held[0].ProcessId)" }
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
In the incident's repair, this refused on one repo because a **VS Code language
|
|
131
|
+
server** had held that venv since the previous day. Not a service, not safe to
|
|
132
|
+
kill, not the script's business. That repo was fixed a different way. **Refusing
|
|
133
|
+
was correct.**
|
|
134
|
+
|
|
135
|
+
## RULE 6 - One agent at a time on a shared resource
|
|
136
|
+
|
|
137
|
+
Two agents installing into the same environment concurrently can produce exactly
|
|
138
|
+
this partial state. Three sessions were live in one repository during the
|
|
139
|
+
incident. Whoever is repairing says so; everyone else keeps out.
|
|
140
|
+
|
|
141
|
+
## RULE 7 - Verify against the source of truth, not the working copy
|
|
142
|
+
|
|
143
|
+
Checkouts go stale. During the same incident a subagent reported a file as absent
|
|
144
|
+
from a configuration, contradicting a change made hours earlier. The file was
|
|
145
|
+
present on `origin/main`; the working copy was **10 commits behind**.
|
|
146
|
+
|
|
147
|
+
Before asserting something is missing, check `git show origin/main:<path>`, not
|
|
148
|
+
the file on disk.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Before you delete anything - the checklist
|
|
153
|
+
|
|
154
|
+
1. Can I **rename** instead? Do that.
|
|
155
|
+
2. Does the tree contain **reparse points**? Scan with `-ErrorAction Stop`. Refuse if any, or if the scan fails.
|
|
156
|
+
3. Does anything **hold files open**? Stop services; refuse on surviving processes.
|
|
157
|
+
4. Did I create any **links into live directories** earlier in this session? Unlink them explicitly, by name.
|
|
158
|
+
5. After: **verify by using**, not by counting.
|
|
159
|
+
6. If something looks wrong: check `origin/main`, not the working copy.
|
|
160
|
+
|
|
161
|
+
## What good verification output looks like
|
|
162
|
+
|
|
163
|
+
Not this:
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
.venv intact: True <- only proves python.exe exists
|
|
167
|
+
31 unlinked, 0 failed <- says nothing about what the scan missed
|
|
168
|
+
No broken requirements found <- reads metadata, not reality
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
This:
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
service-a OK declared=24 missing=0 <- every declared dep imported
|
|
175
|
+
service-b OK declared=19 missing=0
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Reference implementation
|
|
179
|
+
|
|
180
|
+
The estate this skill came from keeps working tools at `.caddis/tools/`:
|
|
181
|
+
|
|
182
|
+
- `venv-audit.py` - imports every dependency each `pyproject.toml` declares
|
|
183
|
+
- `rebuild-venv.ps1` - renames aside, rebuilds, restarts services, refuses on links or live processes
|
|
184
|
+
- `README-venv-safety.md` - the incident record
|
|
185
|
+
|
|
186
|
+
Adapt rather than copy: the rules matter more than the scripts.
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: using-git-worktrees
|
|
3
|
+
description: Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Using Git Worktrees
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Git worktrees create isolated workspaces sharing the same repository, allowing work on multiple branches simultaneously without switching.
|
|
11
|
+
|
|
12
|
+
**Core principle:** Systematic directory selection + safety verification = reliable isolation.
|
|
13
|
+
|
|
14
|
+
**Announce at start:** "I'm using the using-git-worktrees skill to set up an isolated workspace."
|
|
15
|
+
|
|
16
|
+
## Directory Selection Process
|
|
17
|
+
|
|
18
|
+
Follow this priority order:
|
|
19
|
+
|
|
20
|
+
### 1. Check Existing Directories
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Check in priority order
|
|
24
|
+
ls -d .worktrees 2>/dev/null # Preferred (hidden)
|
|
25
|
+
ls -d worktrees 2>/dev/null # Alternative
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
**If found:** Use that directory. If both exist, `.worktrees` wins.
|
|
29
|
+
|
|
30
|
+
### 2. Check AGENTS.md (the canonical rules file; CLAUDE.md is an @import shim)
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
grep -i "worktree.*director" AGENTS.md CLAUDE.md 2>/dev/null
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**If preference specified:** Use it without asking.
|
|
37
|
+
|
|
38
|
+
### 3. Ask User
|
|
39
|
+
|
|
40
|
+
If no directory exists and no AGENTS.md preference:
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
No worktree directory found. Where should I create worktrees?
|
|
44
|
+
|
|
45
|
+
1. .worktrees/ (project-local, hidden)
|
|
46
|
+
2. ~/.config/superpowers/worktrees/<project-name>/ (global location)
|
|
47
|
+
|
|
48
|
+
Which would you prefer?
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Safety Verification
|
|
52
|
+
|
|
53
|
+
### For Project-Local Directories (.worktrees or worktrees)
|
|
54
|
+
|
|
55
|
+
**MUST verify directory is ignored before creating worktree:**
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
# Check if directory is ignored (respects local, global, and system gitignore)
|
|
59
|
+
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**If NOT ignored:**
|
|
63
|
+
|
|
64
|
+
Per Jesse's rule "Fix broken things immediately":
|
|
65
|
+
1. Add appropriate line to .gitignore
|
|
66
|
+
2. Commit the change
|
|
67
|
+
3. Proceed with worktree creation
|
|
68
|
+
|
|
69
|
+
**Why critical:** Prevents accidentally committing worktree contents to repository.
|
|
70
|
+
|
|
71
|
+
### For Global Directory (~/.config/superpowers/worktrees)
|
|
72
|
+
|
|
73
|
+
No .gitignore verification needed - outside project entirely.
|
|
74
|
+
|
|
75
|
+
## Creation Steps
|
|
76
|
+
|
|
77
|
+
### 1. Detect Project Name
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
project=$(basename "$(git rev-parse --show-toplevel)")
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 2. Create Worktree
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Determine full path
|
|
87
|
+
case $LOCATION in
|
|
88
|
+
.worktrees|worktrees)
|
|
89
|
+
path="$LOCATION/$BRANCH_NAME"
|
|
90
|
+
;;
|
|
91
|
+
~/.config/superpowers/worktrees/*)
|
|
92
|
+
path="~/.config/superpowers/worktrees/$project/$BRANCH_NAME"
|
|
93
|
+
;;
|
|
94
|
+
esac
|
|
95
|
+
|
|
96
|
+
# Create worktree with new branch
|
|
97
|
+
git worktree add "$path" -b "$BRANCH_NAME"
|
|
98
|
+
cd "$path"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 3. Run Project Setup
|
|
102
|
+
|
|
103
|
+
Auto-detect and run appropriate setup:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
# Node.js
|
|
107
|
+
if [ -f package.json ]; then npm install; fi
|
|
108
|
+
|
|
109
|
+
# Rust
|
|
110
|
+
if [ -f Cargo.toml ]; then cargo build; fi
|
|
111
|
+
|
|
112
|
+
# Python
|
|
113
|
+
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
|
|
114
|
+
if [ -f pyproject.toml ]; then poetry install; fi
|
|
115
|
+
|
|
116
|
+
# Go
|
|
117
|
+
if [ -f go.mod ]; then go mod download; fi
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### 4. Verify Clean Baseline
|
|
121
|
+
|
|
122
|
+
Run tests to ensure worktree starts clean:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Examples - use project-appropriate command
|
|
126
|
+
npm test
|
|
127
|
+
cargo test
|
|
128
|
+
pytest
|
|
129
|
+
go test ./...
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**If tests fail:** Report failures, ask whether to proceed or investigate.
|
|
133
|
+
|
|
134
|
+
**If tests pass:** Report ready.
|
|
135
|
+
|
|
136
|
+
### 5. Report Location
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
Worktree ready at <full-path>
|
|
140
|
+
Tests passing (<N> tests, 0 failures)
|
|
141
|
+
Ready to implement <feature-name>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Quick Reference
|
|
145
|
+
|
|
146
|
+
| Situation | Action |
|
|
147
|
+
|-----------|--------|
|
|
148
|
+
| `.worktrees/` exists | Use it (verify ignored) |
|
|
149
|
+
| `worktrees/` exists | Use it (verify ignored) |
|
|
150
|
+
| Both exist | Use `.worktrees/` |
|
|
151
|
+
| Neither exists | Check AGENTS.md → Ask user |
|
|
152
|
+
| Directory not ignored | Add to .gitignore + commit |
|
|
153
|
+
| Tests fail during baseline | Report failures + ask |
|
|
154
|
+
| No package.json/Cargo.toml | Skip dependency install |
|
|
155
|
+
|
|
156
|
+
## Common Mistakes
|
|
157
|
+
|
|
158
|
+
### Skipping ignore verification
|
|
159
|
+
|
|
160
|
+
- **Problem:** Worktree contents get tracked, pollute git status
|
|
161
|
+
- **Fix:** Always use `git check-ignore` before creating project-local worktree
|
|
162
|
+
|
|
163
|
+
### Assuming directory location
|
|
164
|
+
|
|
165
|
+
- **Problem:** Creates inconsistency, violates project conventions
|
|
166
|
+
- **Fix:** Follow priority: existing > AGENTS.md > ask
|
|
167
|
+
|
|
168
|
+
### Proceeding with failing tests
|
|
169
|
+
|
|
170
|
+
- **Problem:** Can't distinguish new bugs from pre-existing issues
|
|
171
|
+
- **Fix:** Report failures, get explicit permission to proceed
|
|
172
|
+
|
|
173
|
+
### Hardcoding setup commands
|
|
174
|
+
|
|
175
|
+
- **Problem:** Breaks on projects using different tools
|
|
176
|
+
- **Fix:** Auto-detect from project files (package.json, etc.)
|
|
177
|
+
|
|
178
|
+
## Example Workflow
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
You: I'm using the using-git-worktrees skill to set up an isolated workspace.
|
|
182
|
+
|
|
183
|
+
[Check .worktrees/ - exists]
|
|
184
|
+
[Verify ignored - git check-ignore confirms .worktrees/ is ignored]
|
|
185
|
+
[Create worktree: git worktree add .worktrees/auth -b feature/auth]
|
|
186
|
+
[Run npm install]
|
|
187
|
+
[Run npm test - 47 passing]
|
|
188
|
+
|
|
189
|
+
Worktree ready at /Users/jesse/myproject/.worktrees/auth
|
|
190
|
+
Tests passing (47 tests, 0 failures)
|
|
191
|
+
Ready to implement auth feature
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Red Flags
|
|
195
|
+
|
|
196
|
+
**Never:**
|
|
197
|
+
- Create worktree without verifying it's ignored (project-local)
|
|
198
|
+
- Skip baseline test verification
|
|
199
|
+
- Proceed with failing tests without asking
|
|
200
|
+
- Assume directory location when ambiguous
|
|
201
|
+
- Skip AGENTS.md check
|
|
202
|
+
|
|
203
|
+
**Always:**
|
|
204
|
+
- Follow directory priority: existing > AGENTS.md > ask
|
|
205
|
+
- Verify directory is ignored for project-local
|
|
206
|
+
- Auto-detect and run project setup
|
|
207
|
+
- Verify clean test baseline
|
|
208
|
+
|
|
209
|
+
## Integration
|
|
210
|
+
|
|
211
|
+
**Called by:**
|
|
212
|
+
- **brainstorming** (Phase 4) - REQUIRED when design is approved and implementation follows
|
|
213
|
+
- Any skill needing isolated workspace
|
|
214
|
+
|
|
215
|
+
**Pairs with:**
|
|
216
|
+
- **finishing-a-development-branch** - REQUIRED for cleanup after work complete
|
|
217
|
+
- **executing-plans** or **subagent-driven-development** - Work happens in this worktree
|