@jhm1909/ag-kit 0.1.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/.agent/ARCHITECTURE.md +189 -0
- package/.agent/known-registries.json +181 -0
- package/.agent/mcp_config.json +19 -0
- package/.agent/rules/clean-code.md +107 -0
- package/.agent/rules/documents.md +177 -0
- package/.agent/rules/git-workflow.md +68 -0
- package/.agent/rules/nano-banana.md +46 -0
- package/.agent/rules/research.md +35 -0
- package/.agent/rules/skill-loading.md +100 -0
- package/.agent/rules/skill-suggestion.md +47 -0
- package/.agent/rules/testing.md +52 -0
- package/.agent/rules/workflow-advisor.md +108 -0
- package/.agent/rules/workflow-skill-convention.md +127 -0
- package/.agent/skills/ai-engineer/SKILL.md +824 -0
- package/.agent/skills/ai-engineer/references/agentic-patterns.md +329 -0
- package/.agent/skills/ai-engineer/references/evaluation.md +493 -0
- package/.agent/skills/ai-engineer/references/llm.md +490 -0
- package/.agent/skills/ai-engineer/references/rag-advanced.md +444 -0
- package/.agent/skills/ai-engineer/references/serving-optimization.md +531 -0
- package/.agent/skills/ai-engineer/vector-db/README.md +137 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +71 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +41 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/.agent/skills/backend-developer/SKILL.md +763 -0
- package/.agent/skills/backend-developer/references/general-patterns.md +65 -0
- package/.agent/skills/backend-developer/references/go-echo.md +68 -0
- package/.agent/skills/backend-developer/references/go-gin.md +76 -0
- package/.agent/skills/backend-developer/references/java-springboot.md +83 -0
- package/.agent/skills/backend-developer/references/node-express.md +64 -0
- package/.agent/skills/backend-developer/references/node-nestjs.md +69 -0
- package/.agent/skills/backend-developer/references/python-django.md +67 -0
- package/.agent/skills/backend-developer/references/python-fastapi.md +80 -0
- package/.agent/skills/blockchain-engineer/SKILL.md +975 -0
- package/.agent/skills/blockchain-engineer/references/deployment.md +28 -0
- package/.agent/skills/blockchain-engineer/references/evm.md +14 -0
- package/.agent/skills/blockchain-engineer/references/mechanisms.md +32 -0
- package/.agent/skills/blockchain-engineer/references/solidity.md +32 -0
- package/.agent/skills/business-analysis/SKILL.md +85 -0
- package/.agent/skills/business-analysis/references/best-practices/diagrams.md +141 -0
- package/.agent/skills/business-analysis/references/domains/ai-agent.md +94 -0
- package/.agent/skills/business-analysis/references/domains/blockchain-dapp.md +86 -0
- package/.agent/skills/business-analysis/references/domains/ecommerce.md +77 -0
- package/.agent/skills/business-analysis/references/domains/education.md +42 -0
- package/.agent/skills/business-analysis/references/domains/fintech.md +44 -0
- package/.agent/skills/business-analysis/references/domains/fnb.md +82 -0
- package/.agent/skills/business-analysis/references/domains/healthtech.md +44 -0
- package/.agent/skills/business-analysis/references/domains/internal-tools.md +38 -0
- package/.agent/skills/business-analysis/references/domains/marketplace.md +52 -0
- package/.agent/skills/business-analysis/references/domains/saas.md +36 -0
- package/.agent/skills/business-analysis/references/workflows/collaboration.md +41 -0
- package/.agent/skills/business-analysis/scripts/verify_mermaid.py +86 -0
- package/.agent/skills/business-analysis/templates/brd.md +46 -0
- package/.agent/skills/business-analysis/templates/change-request.md +41 -0
- package/.agent/skills/business-analysis/templates/prd-functional.md +38 -0
- package/.agent/skills/business-analysis/templates/use-case.md +40 -0
- package/.agent/skills/business-analysis/templates/user-story-detailed.md +36 -0
- package/.agent/skills/code-review/SKILL.md +113 -0
- package/.agent/skills/code-review/references/code-review-reception.md +209 -0
- package/.agent/skills/code-review/references/differential_review.md +59 -0
- package/.agent/skills/code-review/references/requesting-code-review.md +105 -0
- package/.agent/skills/code-review/references/spec_compliance.md +43 -0
- package/.agent/skills/code-review/references/verification-before-completion.md +139 -0
- package/.agent/skills/context-engineering/SKILL.md +68 -0
- package/.agent/skills/context-engineering/references/context-compression.md +84 -0
- package/.agent/skills/context-engineering/references/context-degradation.md +93 -0
- package/.agent/skills/context-engineering/references/context-fundamentals.md +75 -0
- package/.agent/skills/context-engineering/references/context-optimization.md +82 -0
- package/.agent/skills/context-engineering/references/evaluation.md +89 -0
- package/.agent/skills/context-engineering/references/memory-systems.md +88 -0
- package/.agent/skills/context-engineering/references/multi-agent-patterns.md +90 -0
- package/.agent/skills/context-engineering/references/project-development.md +97 -0
- package/.agent/skills/context-engineering/references/tool-design.md +86 -0
- package/.agent/skills/debugging/SKILL.md +60 -0
- package/.agent/skills/debugging/references/defense-in-depth.md +130 -0
- package/.agent/skills/debugging/references/root-cause-tracing.md +177 -0
- package/.agent/skills/debugging/references/systematic-debugging.md +295 -0
- package/.agent/skills/debugging/references/verification-before-completion.md +142 -0
- package/.agent/skills/designer/SKILL.md +159 -0
- package/.agent/skills/designer/concepts/apple-glass.md +48 -0
- package/.agent/skills/designer/concepts/aurora-gradients.md +26 -0
- package/.agent/skills/designer/concepts/bento-grids.md +14 -0
- package/.agent/skills/designer/concepts/claymorphism.md +27 -0
- package/.agent/skills/designer/concepts/neo-brutalism.md +32 -0
- package/.agent/skills/designer/data/app-interface.csv +31 -0
- package/.agent/skills/designer/data/charts.csv +26 -0
- package/.agent/skills/designer/data/colors.csv +162 -0
- package/.agent/skills/designer/data/design.csv +1776 -0
- package/.agent/skills/designer/data/icons.csv +106 -0
- package/.agent/skills/designer/data/landing.csv +35 -0
- package/.agent/skills/designer/data/products.csv +162 -0
- package/.agent/skills/designer/data/react-performance.csv +45 -0
- package/.agent/skills/designer/data/styles.csv +85 -0
- package/.agent/skills/designer/data/typography.csv +74 -0
- package/.agent/skills/designer/data/ui-reasoning.csv +162 -0
- package/.agent/skills/designer/data/ux-guidelines.csv +100 -0
- package/.agent/skills/designer/references/accessibility.md +172 -0
- package/.agent/skills/designer/references/branding.md +88 -0
- package/.agent/skills/designer/references/color-theory.md +139 -0
- package/.agent/skills/designer/references/creation.md +118 -0
- package/.agent/skills/designer/references/design-systems.md +219 -0
- package/.agent/skills/designer/references/frontend_design_aesthetics.md +57 -0
- package/.agent/skills/designer/references/layout.md +200 -0
- package/.agent/skills/designer/references/motion.md +92 -0
- package/.agent/skills/designer/references/review.md +100 -0
- package/.agent/skills/designer/references/trends.md +209 -0
- package/.agent/skills/designer/references/typography.md +190 -0
- package/.agent/skills/designer/scripts/remove_background.py +135 -0
- package/.agent/skills/designer/scripts/ui-search/__pycache__/core.cpython-314.pyc +0 -0
- package/.agent/skills/designer/scripts/ui-search/__pycache__/design_system.cpython-314.pyc +0 -0
- package/.agent/skills/designer/scripts/ui-search/core.py +217 -0
- package/.agent/skills/designer/scripts/ui-search/design_system.py +1067 -0
- package/.agent/skills/designer/scripts/ui-search/search.py +114 -0
- package/.agent/skills/designer/templates/design-motion-spec.md +30 -0
- package/.agent/skills/devops-engineer/SKILL.md +90 -0
- package/.agent/skills/devops-engineer/docker-compose/README.md +47 -0
- package/.agent/skills/devops-engineer/references/ci-cd-pipelines.md +76 -0
- package/.agent/skills/devops-engineer/references/cloud-providers.md +57 -0
- package/.agent/skills/devops-engineer/references/codebase-normalization.md +104 -0
- package/.agent/skills/devops-engineer/references/container-orchestration.md +69 -0
- package/.agent/skills/devops-engineer/references/iac-tools.md +63 -0
- package/.agent/skills/devops-engineer/references/observability-security.md +45 -0
- package/.agent/skills/devops-engineer/references/vercel-supabase.md +17 -0
- package/.agent/skills/devops-engineer/templates/release-notes.md +8 -0
- package/.agent/skills/frontend-developer/SKILL.md +125 -0
- package/.agent/skills/frontend-developer/react-nextjs/README.md +90 -0
- package/.agent/skills/frontend-developer/references/angular.md +52 -0
- package/.agent/skills/frontend-developer/references/composition_patterns.md +60 -0
- package/.agent/skills/frontend-developer/references/core-performance.md +68 -0
- package/.agent/skills/frontend-developer/references/modern-signals.md +43 -0
- package/.agent/skills/frontend-developer/references/react_performance_rules.md +55 -0
- package/.agent/skills/frontend-developer/references/vue-nuxt.md +55 -0
- package/.agent/skills/frontend-developer/scripts/validate_compliance.py +65 -0
- package/.agent/skills/frontend-developer/threejs/README.md +89 -0
- package/.agent/skills/frontend-developer/threejs/animation.md +552 -0
- package/.agent/skills/frontend-developer/threejs/fundamentals.md +488 -0
- package/.agent/skills/frontend-developer/threejs/geometry.md +548 -0
- package/.agent/skills/frontend-developer/threejs/interaction.md +660 -0
- package/.agent/skills/frontend-developer/threejs/lighting.md +481 -0
- package/.agent/skills/frontend-developer/threejs/loaders.md +623 -0
- package/.agent/skills/frontend-developer/threejs/materials.md +520 -0
- package/.agent/skills/frontend-developer/threejs/postprocessing.md +602 -0
- package/.agent/skills/frontend-developer/threejs/router.json +181 -0
- package/.agent/skills/frontend-developer/threejs/shaders.md +642 -0
- package/.agent/skills/frontend-developer/threejs/textures.md +628 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/.agent/skills/game-development/SKILL.md +167 -0
- package/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/.agent/skills/lead-architect/SKILL.md +85 -0
- package/.agent/skills/lead-architect/references/application-architecture.md +70 -0
- package/.agent/skills/lead-architect/references/infrastructure.md +51 -0
- package/.agent/skills/lead-architect/references/process.md +42 -0
- package/.agent/skills/lead-architect/references/system-architecture.md +62 -0
- package/.agent/skills/lead-architect/references/web-fullstack.md +82 -0
- package/.agent/skills/lead-architect/templates/adr.md +62 -0
- package/.agent/skills/lead-architect/templates/rfc.md +46 -0
- package/.agent/skills/lead-architect/templates/sdd.md +62 -0
- package/.agent/skills/lead-architect/templates/technical-spec.md +61 -0
- package/.agent/skills/marketer/SKILL.md +66 -0
- package/.agent/skills/marketer/remotion-best-practices/SKILL.md +58 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/3d.md +86 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/animations.md +29 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/assets.md +78 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/audio.md +172 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/calculate-metadata.md +104 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/can-decode.md +75 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/charts.md +58 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/compositions.md +146 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/display-captions.md +126 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/extract-frames.md +229 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/fonts.md +152 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/get-video-duration.md +58 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/gifs.md +138 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/images.md +130 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/import-srt-captions.md +67 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/lottie.md +68 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/measuring-dom-nodes.md +35 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/measuring-text.md +143 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/sequencing.md +106 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/tailwind.md +11 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/text-animations.md +20 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/timing.md +179 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/transcribe-captions.md +19 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/transitions.md +122 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/trimming.md +53 -0
- package/.agent/skills/marketer/remotion-best-practices/rules/videos.md +171 -0
- package/.agent/skills/mcp-builder/SKILL.md +76 -0
- package/.agent/skills/mcp-builder/references/evaluation.md +602 -0
- package/.agent/skills/mcp-builder/references/mcp_best_practices.md +249 -0
- package/.agent/skills/mcp-builder/references/node_mcp_server.md +970 -0
- package/.agent/skills/mcp-builder/references/python_mcp_server.md +719 -0
- package/.agent/skills/mobile-developer/SKILL.md +83 -0
- package/.agent/skills/mobile-developer/api-routes/SKILL.md +389 -0
- package/.agent/skills/mobile-developer/building-ui/SKILL.md +335 -0
- package/.agent/skills/mobile-developer/building-ui/references/animations.md +220 -0
- package/.agent/skills/mobile-developer/building-ui/references/controls.md +270 -0
- package/.agent/skills/mobile-developer/building-ui/references/form-sheet.md +227 -0
- package/.agent/skills/mobile-developer/building-ui/references/gradients.md +106 -0
- package/.agent/skills/mobile-developer/building-ui/references/icons.md +213 -0
- package/.agent/skills/mobile-developer/building-ui/references/media.md +198 -0
- package/.agent/skills/mobile-developer/building-ui/references/route-structure.md +229 -0
- package/.agent/skills/mobile-developer/building-ui/references/search.md +248 -0
- package/.agent/skills/mobile-developer/building-ui/references/storage.md +121 -0
- package/.agent/skills/mobile-developer/building-ui/references/tabs.md +368 -0
- package/.agent/skills/mobile-developer/building-ui/references/visual-effects.md +197 -0
- package/.agent/skills/mobile-developer/building-ui/references/webgpu-three.md +605 -0
- package/.agent/skills/mobile-developer/cicd-workflows/SKILL.md +107 -0
- package/.agent/skills/mobile-developer/cicd-workflows/scripts/fetch.js +109 -0
- package/.agent/skills/mobile-developer/cicd-workflows/scripts/package.json +11 -0
- package/.agent/skills/mobile-developer/cicd-workflows/scripts/validate.js +84 -0
- package/.agent/skills/mobile-developer/data-fetching/SKILL.md +508 -0
- package/.agent/skills/mobile-developer/deployment/SKILL.md +207 -0
- package/.agent/skills/mobile-developer/deployment/references/app-store-metadata.md +479 -0
- package/.agent/skills/mobile-developer/deployment/references/ios-app-store.md +355 -0
- package/.agent/skills/mobile-developer/deployment/references/play-store.md +246 -0
- package/.agent/skills/mobile-developer/deployment/references/testflight.md +58 -0
- package/.agent/skills/mobile-developer/deployment/references/workflows.md +200 -0
- package/.agent/skills/mobile-developer/dev-client/SKILL.md +181 -0
- package/.agent/skills/mobile-developer/tailwind-setup/SKILL.md +501 -0
- package/.agent/skills/mobile-developer/upgrading-expo/SKILL.md +116 -0
- package/.agent/skills/mobile-developer/upgrading-expo/references/new-architecture.md +79 -0
- package/.agent/skills/mobile-developer/upgrading-expo/references/react-19.md +79 -0
- package/.agent/skills/mobile-developer/upgrading-expo/references/react-compiler.md +59 -0
- package/.agent/skills/mobile-developer/use-dom/SKILL.md +434 -0
- package/.agent/skills/modern-python/SKILL.md +122 -0
- package/.agent/skills/project-manager/SKILL.md +110 -0
- package/.agent/skills/project-manager/references/ba-collaboration.md +62 -0
- package/.agent/skills/project-manager/references/discovery_process.md +52 -0
- package/.agent/skills/project-manager/references/jobs_to_be_done.md +51 -0
- package/.agent/skills/project-manager/references/prd_development.md +52 -0
- package/.agent/skills/project-manager/references/rules-guide.md +55 -0
- package/.agent/skills/project-manager/references/skill-creation.md +98 -0
- package/.agent/skills/project-manager/references/strategic-frameworks.md +62 -0
- package/.agent/skills/project-manager/references/task-decomposition.md +194 -0
- package/.agent/skills/project-manager/references/workflows-guide.md +44 -0
- package/.agent/skills/project-manager/router.json +160 -0
- package/.agent/skills/project-manager/scripts/compare_skill.py +177 -0
- package/.agent/skills/project-manager/scripts/encoding_utils.py +36 -0
- package/.agent/skills/project-manager/scripts/init_skill.py +190 -0
- package/.agent/skills/project-manager/scripts/quick_validate.py +123 -0
- package/.agent/skills/project-manager/templates/pm-strategy-one-pager.md +6 -0
- package/.agent/skills/project-manager/templates/prd-strategic.md +38 -0
- package/.agent/skills/project-manager/templates/skill-questionnaire.md +118 -0
- package/.agent/skills/project-manager/templates/user-story-simple.md +14 -0
- package/.agent/skills/prompt-engineer/SKILL.md +319 -0
- package/.agent/skills/prompt-engineer/skill-creator/README.md +47 -0
- package/.agent/skills/qa-tester/SKILL.md +142 -0
- package/.agent/skills/qa-tester/assets/README.md +8 -0
- package/.agent/skills/qa-tester/references/accessibility_testing.md +35 -0
- package/.agent/skills/qa-tester/references/agent_browser.md +38 -0
- package/.agent/skills/qa-tester/references/automation/api_testing.md +23 -0
- package/.agent/skills/qa-tester/references/automation/best_practices.md +14 -0
- package/.agent/skills/qa-tester/references/automation/jest_vitest.md +26 -0
- package/.agent/skills/qa-tester/references/automation/playwright.md +30 -0
- package/.agent/skills/qa-tester/references/e2e_testing.md +46 -0
- package/.agent/skills/qa-tester/references/integration_testing.md +39 -0
- package/.agent/skills/qa-tester/references/performance_testing.md +44 -0
- package/.agent/skills/qa-tester/references/property_based_testing.md +44 -0
- package/.agent/skills/qa-tester/references/security_audit.md +53 -0
- package/.agent/skills/qa-tester/references/security_testing.md +30 -0
- package/.agent/skills/qa-tester/references/sharp_edges.md +49 -0
- package/.agent/skills/qa-tester/references/static_analysis.md +52 -0
- package/.agent/skills/qa-tester/references/supply_chain_audit.md +54 -0
- package/.agent/skills/qa-tester/references/test_case_standards.md +96 -0
- package/.agent/skills/qa-tester/references/test_report_template.md +32 -0
- package/.agent/skills/qa-tester/references/unit_testing.md +50 -0
- package/.agent/skills/qa-tester/references/visual_testing.md +32 -0
- package/.agent/skills/qa-tester/templates/uat-plan.md +34 -0
- package/.agent/skills/research-first/SKILL.md +118 -0
- package/.agent/skills-manifest.json +264 -0
- package/.agent/workflows/absorb.md +176 -0
- package/.agent/workflows/bootstrap.md +91 -0
- package/.agent/workflows/brainstorm.md +168 -0
- package/.agent/workflows/break-tasks.md +77 -0
- package/.agent/workflows/commit.md +349 -0
- package/.agent/workflows/custom-behavior.md +64 -0
- package/.agent/workflows/debug.md +65 -0
- package/.agent/workflows/development.md +49 -0
- package/.agent/workflows/documentation.md +221 -0
- package/.agent/workflows/gen-tests.md +53 -0
- package/.agent/workflows/guide.md +196 -0
- package/.agent/workflows/implement-feature.md +182 -0
- package/.agent/workflows/install-skill.md +193 -0
- package/.agent/workflows/qa.md +54 -0
- package/.agent/workflows/ui-ux-design.md +108 -0
- package/LICENSE +21 -0
- package/README.md +258 -0
- package/cli/index.js +345 -0
- package/cli/migrate-skills.js +113 -0
- package/cli/verify.js +291 -0
- package/package.json +49 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# Deep Task Decomposition Guide
|
|
2
|
+
|
|
3
|
+
This guide provides a comprehensive methodology for breaking down documentation into maximum granular, actionable tasks.
|
|
4
|
+
|
|
5
|
+
## Core Philosophy
|
|
6
|
+
|
|
7
|
+
> **"A task that takes more than 4 hours is not a task—it's a mini-project hiding complexity."**
|
|
8
|
+
|
|
9
|
+
The goal is to decompose until:
|
|
10
|
+
|
|
11
|
+
1. Each task is **independently testable**
|
|
12
|
+
2. Each task is **estimable** (ideally 1-4 hours)
|
|
13
|
+
3. Each task has **clear Definition of Done**
|
|
14
|
+
4. Each task can be **assigned to one person**
|
|
15
|
+
|
|
16
|
+
## Decomposition Levels
|
|
17
|
+
|
|
18
|
+
### Level 1: Epic (Feature/Module)
|
|
19
|
+
|
|
20
|
+
- **Size**: Days to weeks
|
|
21
|
+
- **Source**: PRD sections, major features
|
|
22
|
+
- **Example**: "User Authentication System"
|
|
23
|
+
|
|
24
|
+
### Level 2: Story (User-Facing Capability)
|
|
25
|
+
|
|
26
|
+
- **Size**: 1-3 days
|
|
27
|
+
- **Source**: Use cases, user flows
|
|
28
|
+
- **Format**: "As a [role], I want [action], so that [value]"
|
|
29
|
+
- **Example**: "As a user, I want to reset my password, so that I can regain access"
|
|
30
|
+
|
|
31
|
+
### Level 3: Task (Technical Work Unit)
|
|
32
|
+
|
|
33
|
+
- **Size**: 2-8 hours
|
|
34
|
+
- **Source**: Story breakdown by layer/component
|
|
35
|
+
- **Example**: "Implement forgot password API endpoint"
|
|
36
|
+
|
|
37
|
+
### Level 4: Sub-Task (Atomic Action)
|
|
38
|
+
|
|
39
|
+
- **Size**: 30min - 2 hours
|
|
40
|
+
- **Source**: Implementation steps
|
|
41
|
+
- **Example**: "Add email validation regex", "Write unit test for token expiry"
|
|
42
|
+
|
|
43
|
+
## Decomposition Algorithm
|
|
44
|
+
|
|
45
|
+
### Step 1: Document Analysis
|
|
46
|
+
|
|
47
|
+
Extract from document:
|
|
48
|
+
|
|
49
|
+
1. **Nouns** → Entities/Objects (User, Order, Product)
|
|
50
|
+
2. **Verbs** → Actions/Operations (Create, Update, Delete, View)
|
|
51
|
+
3. **Adjectives** → Constraints/Rules (valid, unique, max 10)
|
|
52
|
+
4. **Flows** → Sequences (Step 1 → Step 2 → Step 3)
|
|
53
|
+
|
|
54
|
+
### Step 2: Entity-Action Matrix
|
|
55
|
+
|
|
56
|
+
Create a matrix:
|
|
57
|
+
|
|
58
|
+
| Entity | Create | Read | Update | Delete | Special Actions |
|
|
59
|
+
| ------ | ------ | ---- | ------ | ------ | --------------------- |
|
|
60
|
+
| User | ✓ | ✓ | ✓ | ✓ | Login, Logout, Verify |
|
|
61
|
+
| Order | ✓ | ✓ | ✓ | - | Cancel, Refund |
|
|
62
|
+
|
|
63
|
+
Each ✓ = At least 1 Story
|
|
64
|
+
|
|
65
|
+
### Step 3: Vertical Slice Decomposition
|
|
66
|
+
|
|
67
|
+
For each Story, break into **vertical slices** (not horizontal layers):
|
|
68
|
+
|
|
69
|
+
**❌ Bad (Horizontal)**:
|
|
70
|
+
|
|
71
|
+
- Build all APIs
|
|
72
|
+
- Build all UI screens
|
|
73
|
+
- Write all tests
|
|
74
|
+
|
|
75
|
+
**✅ Good (Vertical)**:
|
|
76
|
+
|
|
77
|
+
- User can view product list (API + UI + Test)
|
|
78
|
+
- User can view product detail (API + UI + Test)
|
|
79
|
+
- User can add to cart (API + UI + Test)
|
|
80
|
+
|
|
81
|
+
### Step 4: Task Breakdown Template
|
|
82
|
+
|
|
83
|
+
For each Story, create tasks using this structure:
|
|
84
|
+
|
|
85
|
+
```markdown
|
|
86
|
+
## Story: [Story Title]
|
|
87
|
+
|
|
88
|
+
### Database/Schema
|
|
89
|
+
|
|
90
|
+
- [ ] Create migration for [table]
|
|
91
|
+
- [ ] Add index for [column]
|
|
92
|
+
- [ ] Seed test data
|
|
93
|
+
|
|
94
|
+
### Backend/API
|
|
95
|
+
|
|
96
|
+
- [ ] Define request/response types
|
|
97
|
+
- [ ] Implement [endpoint] handler
|
|
98
|
+
- [ ] Add input validation
|
|
99
|
+
- [ ] Add authorization check
|
|
100
|
+
- [ ] Write unit tests
|
|
101
|
+
- [ ] Write integration tests
|
|
102
|
+
|
|
103
|
+
### Frontend/UI
|
|
104
|
+
|
|
105
|
+
- [ ] Create [component] component
|
|
106
|
+
- [ ] Implement state management
|
|
107
|
+
- [ ] Connect to API
|
|
108
|
+
- [ ] Handle loading state
|
|
109
|
+
- [ ] Handle error state
|
|
110
|
+
- [ ] Handle empty state
|
|
111
|
+
- [ ] Add form validation (if applicable)
|
|
112
|
+
- [ ] Write component tests
|
|
113
|
+
|
|
114
|
+
### Cross-Cutting
|
|
115
|
+
|
|
116
|
+
- [ ] Add logging
|
|
117
|
+
- [ ] Add error tracking
|
|
118
|
+
- [ ] Update API documentation
|
|
119
|
+
- [ ] Update user documentation (if needed)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Step 5: Edge Case Extraction
|
|
123
|
+
|
|
124
|
+
For each flow, identify:
|
|
125
|
+
|
|
126
|
+
- **Happy Path**: Normal successful flow
|
|
127
|
+
- **Validation Errors**: Invalid inputs
|
|
128
|
+
- **Business Rule Violations**: Constraint failures
|
|
129
|
+
- **System Errors**: Network, timeout, service unavailable
|
|
130
|
+
- **Concurrency**: Race conditions, optimistic locking
|
|
131
|
+
- **Authorization**: Permission denied scenarios
|
|
132
|
+
|
|
133
|
+
Each edge case may generate additional tasks.
|
|
134
|
+
|
|
135
|
+
## Output Format
|
|
136
|
+
|
|
137
|
+
### Task Card Template
|
|
138
|
+
|
|
139
|
+
```markdown
|
|
140
|
+
## [TASK-ID]: [Task Title]
|
|
141
|
+
|
|
142
|
+
**Story**: [Parent Story ID]
|
|
143
|
+
**Type**: Backend | Frontend | Database | DevOps | Documentation
|
|
144
|
+
**Priority**: P0 | P1 | P2
|
|
145
|
+
**Estimate**: [X hours]
|
|
146
|
+
|
|
147
|
+
### Description
|
|
148
|
+
|
|
149
|
+
[Brief description of what needs to be done]
|
|
150
|
+
|
|
151
|
+
### Acceptance Criteria
|
|
152
|
+
|
|
153
|
+
- [ ] Criterion 1
|
|
154
|
+
- [ ] Criterion 2
|
|
155
|
+
|
|
156
|
+
### Technical Notes
|
|
157
|
+
|
|
158
|
+
- [Any implementation hints or constraints]
|
|
159
|
+
|
|
160
|
+
### Dependencies
|
|
161
|
+
|
|
162
|
+
- Blocked by: [TASK-ID] (if any)
|
|
163
|
+
- Blocks: [TASK-ID] (if any)
|
|
164
|
+
|
|
165
|
+
### Definition of Done
|
|
166
|
+
|
|
167
|
+
- [ ] Code complete
|
|
168
|
+
- [ ] Tests written and passing
|
|
169
|
+
- [ ] Code reviewed
|
|
170
|
+
- [ ] Documentation updated
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Decomposition Triggers
|
|
174
|
+
|
|
175
|
+
Use this capability when user says:
|
|
176
|
+
|
|
177
|
+
- "Break down this PRD..."
|
|
178
|
+
- "Decompose this feature..."
|
|
179
|
+
- "Create tasks from this document..."
|
|
180
|
+
- "Split this into smaller tasks..."
|
|
181
|
+
- "What tasks do we need for..."
|
|
182
|
+
|
|
183
|
+
## Quality Checklist
|
|
184
|
+
|
|
185
|
+
Before finalizing decomposition:
|
|
186
|
+
|
|
187
|
+
- [ ] **No task > 8 hours** - If larger, break it down further
|
|
188
|
+
- [ ] **Each task is testable** - Has clear pass/fail criteria
|
|
189
|
+
- [ ] **Dependencies are explicit** - Blocked/blocks relationships
|
|
190
|
+
- [ ] **No hidden complexity** - Edge cases extracted as tasks
|
|
191
|
+
- [ ] **Estimates are realistic** - Include testing time
|
|
192
|
+
- [ ] **Vertical slices preferred** - End-to-end functionality
|
|
193
|
+
- [ ] **Documentation tasks included** - API docs, user docs
|
|
194
|
+
- [ ] **Test tasks explicit** - Not "included" in dev tasks
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Antigravity Workflows Standard
|
|
2
|
+
|
|
3
|
+
This guide defines the **Antigravity Workflow Specification**. Workflows orchestrate multiple skills and tools for complex task completion.
|
|
4
|
+
|
|
5
|
+
## 1. File Metadata (Frontmatter)
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
---
|
|
9
|
+
description: [Summary starting with a verb, e.g., "Orchestrates..."]
|
|
10
|
+
---
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## 2. Structure & Formatting
|
|
14
|
+
|
|
15
|
+
### A. Stage-Based Steps
|
|
16
|
+
|
|
17
|
+
Use `## Step N: [Phase Name]` for major progress markers.
|
|
18
|
+
|
|
19
|
+
### B. Annotations & Callouts
|
|
20
|
+
|
|
21
|
+
- **Turbo**: Use `// turbo` above a step to denote auto-run compatibility.
|
|
22
|
+
- **MCP Callouts**: Use the following format for tool suggestions:
|
|
23
|
+
`> 💡 **MCP**: Use [tool-name] for [purpose]`
|
|
24
|
+
- **Rule References**: Always link to required rules:
|
|
25
|
+
`> 💡 **MANDATORY**: Follow [.agent/rules/name.md](file:///path/to/rule.md)`
|
|
26
|
+
|
|
27
|
+
### C. Skill Integration
|
|
28
|
+
|
|
29
|
+
Explicitly state which skill should be invoked:
|
|
30
|
+
|
|
31
|
+
- "Invoke `[backend-developer]` skill to..."
|
|
32
|
+
|
|
33
|
+
### D. Quick Reference Table
|
|
34
|
+
|
|
35
|
+
Include a summary table at the end of the file:
|
|
36
|
+
| Step | Skill | Output |
|
|
37
|
+
| :--- | :--- | :--- |
|
|
38
|
+
| 1 | research | markdown |
|
|
39
|
+
|
|
40
|
+
## 3. Best Practices
|
|
41
|
+
|
|
42
|
+
1. **Vertical Slicing**: Ensure steps lead to a functional "slice" of value.
|
|
43
|
+
2. **Checkpoints**: Use **WAIT** in bold to indicate where user feedback is strictly required.
|
|
44
|
+
3. **Pathing**: Use absolute `file:///` URIs for internal links to ensure they are clickable.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"name": "project-manager",
|
|
4
|
+
"description": "Routes queries to appropriate reference documents based on keywords and context",
|
|
5
|
+
"routes": [
|
|
6
|
+
{
|
|
7
|
+
"id": "prd-template",
|
|
8
|
+
"keywords": [
|
|
9
|
+
"PRD",
|
|
10
|
+
"product requirements",
|
|
11
|
+
"requirements document",
|
|
12
|
+
"strategic",
|
|
13
|
+
"hypothesis",
|
|
14
|
+
"success metrics",
|
|
15
|
+
"analytics"
|
|
16
|
+
],
|
|
17
|
+
"path": "templates/prd-strategic.md",
|
|
18
|
+
"description": "PRD Strategic Template - 'What & Why'. Hypothesis, success metrics, analytics."
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "user-story-template",
|
|
22
|
+
"keywords": [
|
|
23
|
+
"user story",
|
|
24
|
+
"backlog",
|
|
25
|
+
"acceptance criteria",
|
|
26
|
+
"DoD",
|
|
27
|
+
"definition of done",
|
|
28
|
+
"story"
|
|
29
|
+
],
|
|
30
|
+
"path": "templates/user-story-simple.md",
|
|
31
|
+
"description": "User Story Template - Backlog items with Story + Acceptance Criteria + DoD."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "strategy-one-pager",
|
|
35
|
+
"keywords": [
|
|
36
|
+
"strategy",
|
|
37
|
+
"one-pager",
|
|
38
|
+
"pitch",
|
|
39
|
+
"value",
|
|
40
|
+
"cost",
|
|
41
|
+
"risk",
|
|
42
|
+
"new idea"
|
|
43
|
+
],
|
|
44
|
+
"path": "templates/pm-strategy-one-pager.md",
|
|
45
|
+
"description": "Strategy One-Pager Template - Pitching new ideas (Value, Cost, Risk)."
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "rules-guide",
|
|
49
|
+
"keywords": [
|
|
50
|
+
"rules",
|
|
51
|
+
"SOP",
|
|
52
|
+
"context injection",
|
|
53
|
+
"rule structure",
|
|
54
|
+
"governance",
|
|
55
|
+
"standards",
|
|
56
|
+
".agent/rules"
|
|
57
|
+
],
|
|
58
|
+
"path": "references/rules-guide.md",
|
|
59
|
+
"description": "STANDARD: SOPs, Context Injection, Rule Structure for .agent/rules/"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"id": "workflows-guide",
|
|
63
|
+
"keywords": [
|
|
64
|
+
"workflow",
|
|
65
|
+
"turbo",
|
|
66
|
+
"checkpoint",
|
|
67
|
+
"flow design",
|
|
68
|
+
"automation",
|
|
69
|
+
".agent/workflows"
|
|
70
|
+
],
|
|
71
|
+
"path": "references/workflows-guide.md",
|
|
72
|
+
"description": "STANDARD: Turbo execution, checkpoints, flow design for .agent/workflows/"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "task-decomposition",
|
|
76
|
+
"keywords": [
|
|
77
|
+
"decomposition",
|
|
78
|
+
"breakdown",
|
|
79
|
+
"split",
|
|
80
|
+
"granularity",
|
|
81
|
+
"estimation",
|
|
82
|
+
"vertical slice",
|
|
83
|
+
"entity-action"
|
|
84
|
+
],
|
|
85
|
+
"path": "references/task-decomposition.md",
|
|
86
|
+
"description": "Methodology for breaking docs into granular tasks (2-8 hours)."
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "strategic-frameworks",
|
|
90
|
+
"keywords": [
|
|
91
|
+
"RICE",
|
|
92
|
+
"Kano",
|
|
93
|
+
"prioritization",
|
|
94
|
+
"scoring",
|
|
95
|
+
"ranking",
|
|
96
|
+
"framework"
|
|
97
|
+
],
|
|
98
|
+
"path": "references/strategic-frameworks.md",
|
|
99
|
+
"description": "RICE, Kano, and other prioritization methods."
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "ba-collaboration",
|
|
103
|
+
"keywords": [
|
|
104
|
+
"business analyst",
|
|
105
|
+
"BA",
|
|
106
|
+
"domain",
|
|
107
|
+
"compliance",
|
|
108
|
+
"regulatory",
|
|
109
|
+
"persona",
|
|
110
|
+
"industry"
|
|
111
|
+
],
|
|
112
|
+
"path": "references/ba-collaboration.md",
|
|
113
|
+
"description": "Collaboration guide with Business Analyst skill for domain-specific context."
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"id": "skill-creation",
|
|
117
|
+
"keywords": [
|
|
118
|
+
"create skill",
|
|
119
|
+
"update skill",
|
|
120
|
+
"manage skill",
|
|
121
|
+
"skill maintenance",
|
|
122
|
+
"new agent skill"
|
|
123
|
+
],
|
|
124
|
+
"path": "references/skill-creation.md",
|
|
125
|
+
"description": "Comprehensive guide for creating, initializing, and maintaining Agent Skills."
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"id": "skill-questionnaire",
|
|
129
|
+
"keywords": [
|
|
130
|
+
"skill creation",
|
|
131
|
+
"new skill",
|
|
132
|
+
"update skill",
|
|
133
|
+
"skill requirements",
|
|
134
|
+
"questionnaire"
|
|
135
|
+
],
|
|
136
|
+
"path": "templates/skill-questionnaire.md",
|
|
137
|
+
"description": "Questionnaire to gather requirements for creating or updating an Agent Skill."
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
"relatedSkills": [
|
|
141
|
+
{
|
|
142
|
+
"name": "business-analysis",
|
|
143
|
+
"path": "../business-analysis/SKILL.md",
|
|
144
|
+
"description": "For deep domain-specific context, regulations, and industry standards.",
|
|
145
|
+
"keywords": [
|
|
146
|
+
"domain",
|
|
147
|
+
"compliance",
|
|
148
|
+
"regulatory",
|
|
149
|
+
"user persona",
|
|
150
|
+
"industry metrics",
|
|
151
|
+
"FinTech",
|
|
152
|
+
"Healthcare"
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
"usageInstructions": {
|
|
157
|
+
"howToUse": "1. Match user query keywords against routes[].keywords. 2. Load the corresponding path file for detailed instructions. 3. For domain-specific queries, consult relatedSkills.",
|
|
158
|
+
"priority": "Templates for creation tasks, References for standards/methodology, RelatedSkills for domain expertise."
|
|
159
|
+
}
|
|
160
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Compare two versions of a skill (before/after upgrade).
|
|
4
|
+
|
|
5
|
+
Usage:
|
|
6
|
+
python compare_skill.py <before_path> <after_path>
|
|
7
|
+
|
|
8
|
+
Example:
|
|
9
|
+
python compare_skill.py .agent/skills/designer.backup .agent/skills/designer
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import sys
|
|
13
|
+
import re
|
|
14
|
+
import argparse
|
|
15
|
+
from pathlib import Path
|
|
16
|
+
|
|
17
|
+
# Import encoding utils from same directory
|
|
18
|
+
try:
|
|
19
|
+
from encoding_utils import configure_utf8_console, read_text_utf8
|
|
20
|
+
configure_utf8_console()
|
|
21
|
+
except ImportError:
|
|
22
|
+
def read_text_utf8(path: Path) -> str:
|
|
23
|
+
return path.read_text(encoding='utf-8')
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def count_tokens_approx(text: str) -> int:
|
|
27
|
+
"""Approximate token count (words + punctuation)."""
|
|
28
|
+
return len(re.findall(r'\S+', text))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def extract_frontmatter(content: str) -> tuple[dict, str]:
|
|
32
|
+
"""Extract YAML frontmatter and body from SKILL.md."""
|
|
33
|
+
frontmatter = {}
|
|
34
|
+
body = content
|
|
35
|
+
|
|
36
|
+
match = re.match(r'^---\s*\n(.*?)\n---\s*\n(.*)$', content, re.DOTALL)
|
|
37
|
+
if match:
|
|
38
|
+
fm_text = match.group(1)
|
|
39
|
+
body = match.group(2)
|
|
40
|
+
|
|
41
|
+
# Simple YAML parsing
|
|
42
|
+
for line in fm_text.split('\n'):
|
|
43
|
+
if ':' in line and not line.startswith(' '):
|
|
44
|
+
key, _, value = line.partition(':')
|
|
45
|
+
frontmatter[key.strip()] = value.strip()
|
|
46
|
+
|
|
47
|
+
return frontmatter, body
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def extract_sections(body: str) -> list[str]:
|
|
51
|
+
"""Extract markdown section headers."""
|
|
52
|
+
return re.findall(r'^#{1,3}\s+(.+)$', body, re.MULTILINE)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def count_files(skill_path: Path) -> dict:
|
|
56
|
+
"""Count files in skill subdirectories."""
|
|
57
|
+
counts = {'scripts': 0, 'references': 0, 'assets': 0}
|
|
58
|
+
|
|
59
|
+
for subdir in counts.keys():
|
|
60
|
+
path = skill_path / subdir
|
|
61
|
+
if path.exists():
|
|
62
|
+
counts[subdir] = len([f for f in path.iterdir() if f.is_file()])
|
|
63
|
+
|
|
64
|
+
return counts
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def analyze_skill(skill_path: Path) -> dict:
|
|
68
|
+
"""Analyze a skill and return metrics."""
|
|
69
|
+
skill_md = skill_path / 'SKILL.md'
|
|
70
|
+
|
|
71
|
+
if not skill_md.exists():
|
|
72
|
+
raise FileNotFoundError(f"SKILL.md not found in {skill_path}")
|
|
73
|
+
|
|
74
|
+
content = read_text_utf8(skill_md)
|
|
75
|
+
frontmatter, body = extract_frontmatter(content)
|
|
76
|
+
sections = extract_sections(body)
|
|
77
|
+
file_counts = count_files(skill_path)
|
|
78
|
+
|
|
79
|
+
return {
|
|
80
|
+
'name': frontmatter.get('name', skill_path.name),
|
|
81
|
+
'description': frontmatter.get('description', ''),
|
|
82
|
+
'tokens': count_tokens_approx(content),
|
|
83
|
+
'sections': sections,
|
|
84
|
+
'section_count': len(sections),
|
|
85
|
+
'scripts': file_counts['scripts'],
|
|
86
|
+
'references': file_counts['references'],
|
|
87
|
+
'assets': file_counts['assets'],
|
|
88
|
+
'frontmatter': frontmatter,
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def compare_skills(before: dict, after: dict) -> str:
|
|
93
|
+
"""Generate comparison report in markdown format."""
|
|
94
|
+
|
|
95
|
+
def calc_change(b, a):
|
|
96
|
+
if b == 0:
|
|
97
|
+
return f"+{a}" if a > 0 else "0"
|
|
98
|
+
pct = ((a - b) / b) * 100
|
|
99
|
+
sign = "+" if pct >= 0 else ""
|
|
100
|
+
return f"{sign}{pct:.0f}%"
|
|
101
|
+
|
|
102
|
+
# Find section changes
|
|
103
|
+
before_sections = set(before['sections'])
|
|
104
|
+
after_sections = set(after['sections'])
|
|
105
|
+
new_sections = after_sections - before_sections
|
|
106
|
+
removed_sections = before_sections - after_sections
|
|
107
|
+
|
|
108
|
+
report = f"""## Skill Comparison Report: {after['name']}
|
|
109
|
+
|
|
110
|
+
### Summary
|
|
111
|
+
| Metric | Before | After | Change |
|
|
112
|
+
|--------|--------|-------|--------|
|
|
113
|
+
| Tokens | {before['tokens']} | {after['tokens']} | {calc_change(before['tokens'], after['tokens'])} |
|
|
114
|
+
| Sections | {before['section_count']} | {after['section_count']} | {calc_change(before['section_count'], after['section_count'])} |
|
|
115
|
+
| Scripts | {before['scripts']} | {after['scripts']} | {calc_change(before['scripts'], after['scripts'])} |
|
|
116
|
+
| References | {before['references']} | {after['references']} | {calc_change(before['references'], after['references'])} |
|
|
117
|
+
| Assets | {before['assets']} | {after['assets']} | {calc_change(before['assets'], after['assets'])} |
|
|
118
|
+
|
|
119
|
+
"""
|
|
120
|
+
|
|
121
|
+
if new_sections:
|
|
122
|
+
report += "### New Sections Added\n"
|
|
123
|
+
for section in sorted(new_sections):
|
|
124
|
+
report += f"- {section}\n"
|
|
125
|
+
report += "\n"
|
|
126
|
+
|
|
127
|
+
if removed_sections:
|
|
128
|
+
report += "### Sections Removed\n"
|
|
129
|
+
for section in sorted(removed_sections):
|
|
130
|
+
report += f"- {section}\n"
|
|
131
|
+
report += "\n"
|
|
132
|
+
|
|
133
|
+
# Description change
|
|
134
|
+
if before['description'] != after['description']:
|
|
135
|
+
report += "### Description Changed\n"
|
|
136
|
+
report += f"**Before:** {before['description'][:100]}...\n\n"
|
|
137
|
+
report += f"**After:** {after['description'][:100]}...\n\n"
|
|
138
|
+
|
|
139
|
+
return report
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def main():
|
|
143
|
+
parser = argparse.ArgumentParser(
|
|
144
|
+
description='Compare two versions of a skill (before/after upgrade)'
|
|
145
|
+
)
|
|
146
|
+
parser.add_argument('before', type=Path, help='Path to before skill (backup)')
|
|
147
|
+
parser.add_argument('after', type=Path, help='Path to after skill (current)')
|
|
148
|
+
parser.add_argument('--output', '-o', type=Path, help='Output file (default: stdout)')
|
|
149
|
+
|
|
150
|
+
args = parser.parse_args()
|
|
151
|
+
|
|
152
|
+
if not args.before.exists():
|
|
153
|
+
print(f"❌ Error: Before path does not exist: {args.before}", file=sys.stderr)
|
|
154
|
+
sys.exit(1)
|
|
155
|
+
|
|
156
|
+
if not args.after.exists():
|
|
157
|
+
print(f"❌ Error: After path does not exist: {args.after}", file=sys.stderr)
|
|
158
|
+
sys.exit(1)
|
|
159
|
+
|
|
160
|
+
try:
|
|
161
|
+
before_analysis = analyze_skill(args.before)
|
|
162
|
+
after_analysis = analyze_skill(args.after)
|
|
163
|
+
report = compare_skills(before_analysis, after_analysis)
|
|
164
|
+
|
|
165
|
+
if args.output:
|
|
166
|
+
args.output.write_text(report, encoding='utf-8')
|
|
167
|
+
print(f"✅ Report saved to: {args.output}")
|
|
168
|
+
else:
|
|
169
|
+
print(report)
|
|
170
|
+
|
|
171
|
+
except Exception as e:
|
|
172
|
+
print(f"❌ Error: {e}", file=sys.stderr)
|
|
173
|
+
sys.exit(1)
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
if __name__ == '__main__':
|
|
177
|
+
main()
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Cross-platform encoding utilities for Windows compatibility.
|
|
4
|
+
|
|
5
|
+
Fixes UnicodeEncodeError on Windows by reconfiguring stdout/stderr to UTF-8
|
|
6
|
+
and providing encoding-aware file I/O helpers.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import sys
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def configure_utf8_console():
|
|
14
|
+
"""
|
|
15
|
+
Reconfigure stdout/stderr for UTF-8 on Windows.
|
|
16
|
+
|
|
17
|
+
Windows uses cp1252 by default which cannot encode Unicode emojis.
|
|
18
|
+
This function switches to UTF-8 with 'replace' error handling to
|
|
19
|
+
prevent crashes on truly incompatible terminals.
|
|
20
|
+
"""
|
|
21
|
+
if sys.platform == 'win32':
|
|
22
|
+
try:
|
|
23
|
+
sys.stdout.reconfigure(encoding='utf-8', errors='replace')
|
|
24
|
+
sys.stderr.reconfigure(encoding='utf-8', errors='replace')
|
|
25
|
+
except AttributeError:
|
|
26
|
+
pass # Python < 3.7
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def read_text_utf8(path: Path) -> str:
|
|
30
|
+
"""Read file with explicit UTF-8 encoding."""
|
|
31
|
+
return path.read_text(encoding='utf-8')
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def write_text_utf8(path: Path, content: str) -> None:
|
|
35
|
+
"""Write file with explicit UTF-8 encoding."""
|
|
36
|
+
path.write_text(content, encoding='utf-8')
|