shmakk 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/package.json +6 -3
- package/scripts/import-skills.js +536 -0
- package/scripts/install-skills.js +64 -0
- package/skills/ai-elements.md +482 -0
- package/skills/architecture.md +151 -0
- package/skills/backend-adapter-aws-lambda.md +204 -0
- package/skills/backend-adapter-express.md +177 -0
- package/skills/backend-adapter-fastify.md +222 -0
- package/skills/backend-adapter-fetch.md +200 -0
- package/skills/backend-api-docs.md +22 -0
- package/skills/backend-aspire.md +232 -0
- package/skills/backend-aspnet-core.md +62 -0
- package/skills/backend-build-chatgpt-app.md +321 -0
- package/skills/backend-build-mcp-app.md +393 -0
- package/skills/backend-build-mcp-server.md +222 -0
- package/skills/backend-build-mcpb.md +200 -0
- package/skills/backend-building-ai-agent-on-cloudflare.md +401 -0
- package/skills/backend-caching.md +206 -0
- package/skills/backend-chatgpt-app-submission.md +157 -0
- package/skills/backend-chatgpt-apps.md +321 -0
- package/skills/backend-client-setup.md +318 -0
- package/skills/backend-containerize-aspnet-framework.md +455 -0
- package/skills/backend-create-spring-boot-java-project.md +164 -0
- package/skills/backend-create-spring-boot-kotlin-project.md +148 -0
- package/skills/backend-csharp-async.md +50 -0
- package/skills/backend-csharp-docs.md +63 -0
- package/skills/backend-csharp-mcp-server-generator.md +60 -0
- package/skills/backend-dotenv.md +201 -0
- package/skills/backend-dotenvx.md +119 -0
- package/skills/backend-env-vars.md +259 -0
- package/skills/backend-error-handling.md +254 -0
- package/skills/backend-fastapi.md +437 -0
- package/skills/backend-go-mcp-server-generator.md +335 -0
- package/skills/backend-java-mcp-server-generator.md +757 -0
- package/skills/backend-kotlin-mcp-server-generator.md +450 -0
- package/skills/backend-middlewares.md +243 -0
- package/skills/backend-multi-stage-dockerfile.md +47 -0
- package/skills/backend-nestjs.md +192 -0
- package/skills/backend-next-forge.md +375 -0
- package/skills/backend-nextjs.md +746 -0
- package/skills/backend-openapi-to-application-code.md +113 -0
- package/skills/backend-php-mcp-server-generator.md +523 -0
- package/skills/backend-python-mcp-server-generator.md +106 -0
- package/skills/backend-routing-middleware.md +251 -0
- package/skills/backend-ruby-mcp-server-generator.md +661 -0
- package/skills/backend-rust-mcp-server-generator.md +578 -0
- package/skills/backend-semantic-kernel.md +57 -0
- package/skills/backend-server-setup.md +379 -0
- package/skills/backend-server-side-calls.md +250 -0
- package/skills/backend-subscriptions.md +407 -0
- package/skills/backend-swift-mcp-server-generator.md +670 -0
- package/skills/backend-trpc-router.md +152 -0
- package/skills/backend-typescript-mcp-server-generator.md +91 -0
- package/skills/backend-validators.md +229 -0
- package/skills/backend.md +76 -0
- package/skills/backup.md +165 -0
- package/skills/budget.md +140 -0
- package/skills/business-gtm-0-to-1-launch.md +322 -0
- package/skills/business-gtm-operating-cadence.md +421 -0
- package/skills/business-gtm-positioning-strategy.md +439 -0
- package/skills/business-gtm-product-led-growth.md +340 -0
- package/skills/calendar.md +95 -0
- package/skills/code-review.md +130 -0
- package/skills/compliance.md +168 -0
- package/skills/contracts.md +130 -0
- package/skills/daily-job-run.md +46 -0
- package/skills/daily-webdesign.md +187 -0
- package/skills/database-bigquery-pipeline-audit.md +130 -0
- package/skills/database-cosmosdb-datamodeling.md +1046 -0
- package/skills/database-durable-objects.md +187 -0
- package/skills/database-ef-core.md +76 -0
- package/skills/database-fabric-lakehouse.md +107 -0
- package/skills/database-neon-postgres-egress-optimizer.md +213 -0
- package/skills/database-neon-postgres.md +218 -0
- package/skills/database-postgresql-code-review.md +213 -0
- package/skills/database-postgresql-optimization.md +405 -0
- package/skills/database-sql-code-review.md +302 -0
- package/skills/database-sql-optimization.md +297 -0
- package/skills/dependency-audit.md +165 -0
- package/skills/design-kami-landing.md +234 -0
- package/skills/design.md +221 -0
- package/skills/dev-acquire-codebase-knowledge.md +175 -0
- package/skills/dev-add-educational-comments.md +129 -0
- package/skills/dev-add-model-descriptions.md +74 -0
- package/skills/dev-adr-review.md +56 -0
- package/skills/dev-boost-prompt.md +26 -0
- package/skills/dev-build-run-debug.md +130 -0
- package/skills/dev-chunk.md +49 -0
- package/skills/dev-claude-md-improver.md +180 -0
- package/skills/dev-code-exemplars-blueprint-generator.md +127 -0
- package/skills/dev-code-tour.md +434 -0
- package/skills/dev-comment-code-generate-a-tutorial.md +27 -0
- package/skills/dev-commit.md +81 -0
- package/skills/dev-context-map.md +53 -0
- package/skills/dev-conventional-commit.md +73 -0
- package/skills/dev-create-architectural-decision-record.md +98 -0
- package/skills/dev-create-draft-pr.md +17 -0
- package/skills/dev-create-pr.md +17 -0
- package/skills/dev-create-readme.md +22 -0
- package/skills/dev-csharp-mstest.md +479 -0
- package/skills/dev-csharp-nunit.md +72 -0
- package/skills/dev-csharp-tunit.md +101 -0
- package/skills/dev-csharp-xunit.md +69 -0
- package/skills/dev-debug-failing-test.md +90 -0
- package/skills/dev-diff-analyze.md +32 -0
- package/skills/dev-diffs.md +24 -0
- package/skills/dev-dotnet-best-practices.md +86 -0
- package/skills/dev-dotnet-design-pattern-review.md +43 -0
- package/skills/dev-dotnet-timezone.md +110 -0
- package/skills/dev-dotnet-upgrade.md +117 -0
- package/skills/dev-doublecheck.md +278 -0
- package/skills/dev-explain-error.md +15 -0
- package/skills/dev-finding-discovery.md +164 -0
- package/skills/dev-fix-finding.md +111 -0
- package/skills/dev-full-file-edit.md +25 -0
- package/skills/dev-git-commit.md +125 -0
- package/skills/dev-git-flow-branch-creator.md +293 -0
- package/skills/dev-git-workflow.md +46 -0
- package/skills/dev-github-automation.md +64 -0
- package/skills/dev-github-code-review.md +1140 -0
- package/skills/dev-github-issues.md +202 -0
- package/skills/dev-gpt-5-4-prompting.md +55 -0
- package/skills/dev-investigation-mode.md +277 -0
- package/skills/dev-java-add-graalvm-native-image-support.md +450 -0
- package/skills/dev-java-docs.md +24 -0
- package/skills/dev-java-refactoring-extract-method.md +105 -0
- package/skills/dev-java-refactoring-remove-parameter.md +85 -0
- package/skills/dev-merge.md +73 -0
- package/skills/dev-migrate-create.md +36 -0
- package/skills/dev-migrate-validate.md +36 -0
- package/skills/dev-my-issues.md +9 -0
- package/skills/dev-my-pull-requests.md +15 -0
- package/skills/dev-planning-oracle-to-postgres-migration-integration-testing.md +45 -0
- package/skills/dev-playwright-generate-test.md +18 -0
- package/skills/dev-playwright.md +148 -0
- package/skills/dev-prompt-builder.md +142 -0
- package/skills/dev-pytest-coverage.md +29 -0
- package/skills/dev-python-manager-discovery.md +330 -0
- package/skills/dev-python-pypi-package-builder.md +445 -0
- package/skills/dev-readme-blueprint-generator.md +79 -0
- package/skills/dev-refactor-method-complexity-reduce.md +99 -0
- package/skills/dev-refactor-plan.md +66 -0
- package/skills/dev-refactor.md +646 -0
- package/skills/dev-review-and-refactor.md +16 -0
- package/skills/dev-reviewing-oracle-to-postgres-migration.md +68 -0
- package/skills/dev-ruff-recursive-fix.md +201 -0
- package/skills/dev-run-e2e-tests.md +126 -0
- package/skills/dev-run-pre-commit-checks.md +133 -0
- package/skills/dev-run-smoke-tests.md +127 -0
- package/skills/dev-scaffolding-oracle-to-postgres-migration-test-project.md +55 -0
- package/skills/dev-spring-boot-testing.md +190 -0
- package/skills/dev-sync-upstream.md +32 -0
- package/skills/dev-sync.md +74 -0
- package/skills/dev-tdd-workflow.md +23 -0
- package/skills/dev-terraform-azurerm-set-diff-analyzer.md +49 -0
- package/skills/dev-test-driven-development.md +372 -0
- package/skills/dev-test-gaps.md +18 -0
- package/skills/dev-test-triage.md +55 -0
- package/skills/dev-typer.md +267 -0
- package/skills/dev-typescript-setup.md +25 -0
- package/skills/dev-unified-diff-edit.md +16 -0
- package/skills/dev-unit-test-vue-pinia.md +198 -0
- package/skills/dev-using-git-worktrees.md +216 -0
- package/skills/dev-validation.md +99 -0
- package/skills/dev-verification.md +168 -0
- package/skills/dev-webapp-testing.md +134 -0
- package/skills/dev-write-coding-standards-from-file.md +317 -0
- package/skills/dev-write-tests.md +16 -0
- package/skills/devops-appinsights-instrumentation.md +49 -0
- package/skills/devops-az-cost-optimize.md +306 -0
- package/skills/devops-chronicle.md +154 -0
- package/skills/devops-deployments-cicd.md +331 -0
- package/skills/devops-devops-rollout-plan.md +118 -0
- package/skills/devops-geistdocs.md +276 -0
- package/skills/devops-observability.md +774 -0
- package/skills/devops-observe-metrics.md +35 -0
- package/skills/devops-observe-trace.md +30 -0
- package/skills/devops-phoenix-cli.md +163 -0
- package/skills/devops-phoenix-tracing.md +140 -0
- package/skills/devops-publish-to-pages.md +108 -0
- package/skills/devops-telemetry.md +87 -0
- package/skills/devops-update-avm-modules-in-bicep.md +61 -0
- package/skills/devops.md +81 -0
- package/skills/diagrams-canvas.md +204 -0
- package/skills/diagrams-draw-io-diagram-generator.md +463 -0
- package/skills/diagrams-excalidraw-diagram-generator.md +614 -0
- package/skills/diagrams-graphify.md +1277 -0
- package/skills/docs-bear-notes.md +108 -0
- package/skills/docs-create-llms.md +211 -0
- package/skills/docs-doc-gen.md +20 -0
- package/skills/docs-documentation-writer.md +46 -0
- package/skills/docs-llm-config.md +33 -0
- package/skills/docs-mkdocs-translations.md +109 -0
- package/skills/docs-obsidian-vault-maintainer.md +14 -0
- package/skills/docs-obsidian.md +82 -0
- package/skills/docs-prose.md +324 -0
- package/skills/docs-update-llms.md +217 -0
- package/skills/docs-update-markdown-file-index.md +77 -0
- package/skills/docs-wiki-maintainer.md +20 -0
- package/skills/documents.md +120 -0
- package/skills/email.md +113 -0
- package/skills/expenses.md +140 -0
- package/skills/file-ops.md +149 -0
- package/skills/files-convert-plaintext-to-md.md +363 -0
- package/skills/files-doc.md +81 -0
- package/skills/files-docx.md +594 -0
- package/skills/files-markdown-to-html.md +917 -0
- package/skills/files-nano-pdf.md +39 -0
- package/skills/files-pdf.md +315 -0
- package/skills/files-pdftk-server.md +163 -0
- package/skills/files-pptx-html-fidelity-audit.md +255 -0
- package/skills/files-pptx.md +231 -0
- package/skills/files-xlsx.md +301 -0
- package/skills/find-jobs.md +78 -0
- package/skills/format-conversion.md +157 -0
- package/skills/frontend-ai-elements.md +483 -0
- package/skills/frontend-ai-gateway.md +563 -0
- package/skills/frontend-ai-generation-persistence.md +242 -0
- package/skills/frontend-ai-sdk.md +799 -0
- package/skills/frontend-ai-visibility.md +127 -0
- package/skills/frontend-angular-developer.md +130 -0
- package/skills/frontend-aspnet-minimal-api-openapi.md +42 -0
- package/skills/frontend-bencium-innovative-ux-designer.md +719 -0
- package/skills/frontend-chat-sdk.md +666 -0
- package/skills/frontend-chrome-devtools.md +98 -0
- package/skills/frontend-frontend-app-builder.md +186 -0
- package/skills/frontend-frontend-design.md +43 -0
- package/skills/frontend-frontend-testing-debugging.md +143 -0
- package/skills/frontend-gsap-framer-scroll-animation.md +152 -0
- package/skills/frontend-internal-linking.md +109 -0
- package/skills/frontend-json-render.md +335 -0
- package/skills/frontend-keyword-clustering.md +118 -0
- package/skills/frontend-next-intl-add-language.md +20 -0
- package/skills/frontend-on-page-seo.md +112 -0
- package/skills/frontend-premium-frontend-ui.md +114 -0
- package/skills/frontend-react-best-practices.md +143 -0
- package/skills/frontend-schema-markup.md +160 -0
- package/skills/frontend-seo-audit.md +110 -0
- package/skills/frontend-swr.md +215 -0
- package/skills/frontend-technical-seo.md +162 -0
- package/skills/frontend-use-dom.md +418 -0
- package/skills/frontend-web-coder.md +564 -0
- package/skills/frontend-web-design-reviewer.md +369 -0
- package/skills/frontend-web-perf.md +202 -0
- package/skills/frontend.md +125 -0
- package/skills/general-adapter-standalone.md +199 -0
- package/skills/general-auth.md +356 -0
- package/skills/general-containerize-aspnetcore.md +393 -0
- package/skills/general-create-technical-spike.md +231 -0
- package/skills/general-cron-jobs.md +72 -0
- package/skills/general-ddd-aggregate.md +52 -0
- package/skills/general-ddd-context.md +46 -0
- package/skills/general-ddd-validate.md +51 -0
- package/skills/general-dependency-check.md +26 -0
- package/skills/general-email-marketing.md +86 -0
- package/skills/general-healthcheck.md +246 -0
- package/skills/general-import-infrastructure-as-code.md +368 -0
- package/skills/general-init.md +49 -0
- package/skills/general-java-junit.md +64 -0
- package/skills/general-java-springboot.md +66 -0
- package/skills/general-javascript-typescript-jest.md +45 -0
- package/skills/general-kotlin-springboot.md +71 -0
- package/skills/general-make-repo-contribution.md +91 -0
- package/skills/general-market-research.md +78 -0
- package/skills/general-marketplace.md +468 -0
- package/skills/general-model-recommendation.md +673 -0
- package/skills/general-payments.md +352 -0
- package/skills/general-quality-playbook.md +480 -0
- package/skills/general-run-integration-tests.md +113 -0
- package/skills/general-superjson.md +274 -0
- package/skills/general-swiftpm-macos.md +51 -0
- package/skills/general-threat-model.md +61 -0
- package/skills/invoices.md +167 -0
- package/skills/licenses.md +159 -0
- package/skills/logs.md +156 -0
- package/skills/marketing.md +139 -0
- package/skills/media-image-manipulation-image-magick.md +253 -0
- package/skills/media-imagegen.md +357 -0
- package/skills/media-openai-whisper-api.md +63 -0
- package/skills/media-openai-whisper.md +39 -0
- package/skills/media-peekaboo.md +191 -0
- package/skills/media-screenshot.md +268 -0
- package/skills/media-speech.md +145 -0
- package/skills/media-transcribe.md +82 -0
- package/skills/media-video-frames.md +47 -0
- package/skills/mobile-android-emulator-qa.md +81 -0
- package/skills/mobile-android-performance.md +280 -0
- package/skills/mobile-building-mcp-server-on-cloudflare.md +267 -0
- package/skills/mobile-building-native-ui.md +322 -0
- package/skills/mobile-expo-api-routes.md +369 -0
- package/skills/mobile-expo-cicd-workflows.md +92 -0
- package/skills/mobile-expo-deployment.md +191 -0
- package/skills/mobile-expo-dev-client.md +165 -0
- package/skills/mobile-expo-module.md +177 -0
- package/skills/mobile-expo-tailwind-setup.md +481 -0
- package/skills/mobile-expo-ui-jetpack-compose.md +41 -0
- package/skills/mobile-expo-ui-swift-ui.md +40 -0
- package/skills/mobile-ios-app-intents.md +78 -0
- package/skills/mobile-ios-debugger-agent.md +52 -0
- package/skills/mobile-ios-ettrace-performance.md +198 -0
- package/skills/mobile-ios-memgraph-leaks.md +77 -0
- package/skills/mobile-native-data-fetching.md +508 -0
- package/skills/mobile-packaging-notarization.md +48 -0
- package/skills/mobile-react-native-architecture.md +672 -0
- package/skills/mobile-react-native-mobile-design.md +438 -0
- package/skills/mobile-signing-entitlements.md +59 -0
- package/skills/mobile-swiftui-liquid-glass.md +91 -0
- package/skills/mobile-swiftui-patterns.md +210 -0
- package/skills/mobile-swiftui-performance-audit.md +108 -0
- package/skills/mobile-swiftui-ui-patterns.md +97 -0
- package/skills/mobile-swiftui-view-refactor.md +204 -0
- package/skills/mobile-upgrading-expo.md +134 -0
- package/skills/mobile.md +183 -0
- package/skills/notes.md +106 -0
- package/skills/planning-adr-create.md +62 -0
- package/skills/planning-adr-index.md +67 -0
- package/skills/planning-architecture-blueprint-generator.md +323 -0
- package/skills/planning-brainstorming.md +165 -0
- package/skills/planning-breakdown-epic-arch.md +67 -0
- package/skills/planning-breakdown-epic-pm.md +59 -0
- package/skills/planning-breakdown-feature-implementation.md +129 -0
- package/skills/planning-breakdown-feature-prd.md +62 -0
- package/skills/planning-breakdown-plan.md +510 -0
- package/skills/planning-breakdown-test.md +366 -0
- package/skills/planning-cloud-design-patterns.md +63 -0
- package/skills/planning-content-brief.md +128 -0
- package/skills/planning-content-strategy.md +138 -0
- package/skills/planning-content-translation.md +143 -0
- package/skills/planning-create-github-action-workflow-specification.md +277 -0
- package/skills/planning-create-github-issues-feature-from-implementation-plan.md +29 -0
- package/skills/planning-create-github-issues-for-unmet-specification-requirements.md +36 -0
- package/skills/planning-create-github-pull-request-from-specification.md +25 -0
- package/skills/planning-create-implementation-plan.md +158 -0
- package/skills/planning-create-specification.md +128 -0
- package/skills/planning-first-ask.md +31 -0
- package/skills/planning-folder-structure-blueprint-generator.md +406 -0
- package/skills/planning-gen-specs-as-issues.md +166 -0
- package/skills/planning-generate-snapshot.md +144 -0
- package/skills/planning-generate-status-report.md +336 -0
- package/skills/planning-metric-pack-designer.md +27 -0
- package/skills/planning-pm-spec.md +53 -0
- package/skills/planning-prd.md +144 -0
- package/skills/planning-project-assessment.md +182 -0
- package/skills/planning-project-setup-info-local.md +128 -0
- package/skills/planning-project-workflow-analysis-blueprint-generator.md +294 -0
- package/skills/planning-service-oriented-architecture.md +248 -0
- package/skills/planning-spec-to-backlog.md +544 -0
- package/skills/planning-technology-stack-blueprint-generator.md +243 -0
- package/skills/planning-update-implementation-plan.md +158 -0
- package/skills/planning-update-specification.md +128 -0
- package/skills/planning-what-context-needed.md +40 -0
- package/skills/planning-writing-plans.md +153 -0
- package/skills/prepare-application.md +81 -0
- package/skills/productivity-apple-notes.md +78 -0
- package/skills/productivity-apple-reminders.md +119 -0
- package/skills/productivity-capture-tasks-from-meeting-notes.md +680 -0
- package/skills/productivity-daily-prep.md +156 -0
- package/skills/productivity-email-drafter.md +101 -0
- package/skills/productivity-hr-onboarding.md +53 -0
- package/skills/productivity-things-mac.md +87 -0
- package/skills/productivity-update.md +169 -0
- package/skills/reminders.md +109 -0
- package/skills/research-dossier-collect.md +71 -0
- package/skills/research-kg-extract.md +37 -0
- package/skills/research-openai-docs.md +89 -0
- package/skills/research-research-add-items.md +31 -0
- package/skills/research-research-report.md +94 -0
- package/skills/research-research-synthesize.md +63 -0
- package/skills/research-summarize.md +88 -0
- package/skills/research-transformers-js.md +635 -0
- package/skills/research.md +119 -0
- package/skills/security-ai-prompt-engineering-safety-review.md +231 -0
- package/skills/security-attack-path-analysis.md +182 -0
- package/skills/security-gdpr-compliant.md +284 -0
- package/skills/security-mcp-security-audit.md +279 -0
- package/skills/security-pii-detect.md +31 -0
- package/skills/security-secret-scanning.md +243 -0
- package/skills/security-security-best-practices.md +87 -0
- package/skills/security-security-ownership-map.md +207 -0
- package/skills/security-security-review.md +169 -0
- package/skills/security-security-scan.md +138 -0
- package/skills/security-security-threat-model.md +82 -0
- package/skills/security-threat-model-analyst.md +76 -0
- package/skills/sysmon.md +181 -0
- package/skills/system-arch-linux-triage.md +32 -0
- package/skills/system-centos-linux-triage.md +32 -0
- package/skills/system-debian-linux-triage.md +32 -0
- package/skills/system-fedora-linux-triage.md +32 -0
- package/skills/system-geofeed-tuner.md +865 -0
- package/skills/system-iot-anomalies.md +15 -0
- package/skills/system-iot-firmware.md +16 -0
- package/skills/system-iot-fleet.md +14 -0
- package/skills/system-iot-register.md +19 -0
- package/skills/system-iot-witness-verify.md +15 -0
- package/skills/system-tmux.md +171 -0
- package/skills/system-window-management.md +228 -0
- package/skills/task-management.md +90 -0
- package/skills/tasks.md +102 -0
- package/skills/test-coverage.md +188 -0
- package/skills/ux-ui.md +128 -0
- package/skills/web.md +186 -0
- package/skills/workflow-act-on-feedback.md +15 -0
- package/skills/workflow-automate-this.md +245 -0
- package/skills/workflow-autoresearch.md +276 -0
- package/skills/workflow-coding-agent.md +317 -0
- package/skills/workflow-deep-research.md +44 -0
- package/skills/workflow-dispatching-parallel-agents.md +183 -0
- package/skills/workflow-eval-driven-dev.md +148 -0
- package/skills/workflow-executing-plans.md +71 -0
- package/skills/workflow-mentoring-juniors.md +311 -0
- package/skills/workflow-receiving-code-review.md +214 -0
- package/skills/workflow-repo-story-time.md +155 -0
- package/skills/workflow-requesting-code-review.md +104 -0
- package/skills/workflow-session-report.md +43 -0
- package/skills/workflow-structured-autonomy-generate.md +126 -0
- package/skills/workflow-subagent-driven-development.md +280 -0
- package/skills/writing.md +106 -0
- package/src/agent.js +0 -0
- package/src/browser.js +297 -0
- package/src/cli.js +25 -4
- package/src/code-reviewer.js +119 -0
- package/src/completions.js +1 -1
- package/src/control.js +222 -30
- package/src/coordinator.js +303 -0
- package/src/correction.js +29 -8
- package/src/edit-tracker.js +21 -0
- package/src/edit-viewer.js +414 -0
- package/src/endpoints.js +64 -15
- package/src/index.js +45 -11
- package/src/llm.js +86 -2
- package/src/mcp-client.js +416 -0
- package/src/memory.js +182 -0
- package/src/planner.js +216 -0
- package/src/rules.js +90 -0
- package/src/self-commands.js +757 -0
- package/src/services/voice.js +10 -7
- package/src/session-search.js +427 -0
- package/src/session.js +487 -99
- package/src/shmakk-server.js +91 -0
- package/src/skills.js +410 -3
- package/src/subagent.js +4 -1
- package/src/system-prompt.js +13 -5
- package/src/task-file.js +114 -0
- package/src/taskClassifier.js +246 -0
- package/src/team.js +752 -0
- package/src/tools.js +142 -21
- package/src/web.js +35 -5
- package/src/workflows.js +261 -0
- package/src/workspace-index.js +25 -6
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: python-manager-discovery
|
|
3
|
+
description: Environment manager-specific discovery patterns and known issues. Use when working on or reviewing environment discovery code for conda, poetry, pipenv, pyenv, or venv.
|
|
4
|
+
argument-hint: 'manager name (e.g., poetry, conda, pyenv)'
|
|
5
|
+
user-invocable: false
|
|
6
|
+
category: dev
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Environment Manager Discovery Patterns
|
|
10
|
+
|
|
11
|
+
This skill documents manager-specific discovery patterns, environment variable precedence, and known issues.
|
|
12
|
+
|
|
13
|
+
## Manager Quick Reference
|
|
14
|
+
|
|
15
|
+
| Manager | Config Files | Cache Location | Key Env Vars |
|
|
16
|
+
| ------- | ---------------------------------------------- | ------------------------ | --------------------------------------------------- |
|
|
17
|
+
| Poetry | `poetry.toml`, `pyproject.toml`, `config.toml` | Platform-specific | `POETRY_VIRTUALENVS_IN_PROJECT`, `POETRY_CACHE_DIR` |
|
|
18
|
+
| Pipenv | `Pipfile`, `Pipfile.lock` | XDG or WORKON_HOME | `WORKON_HOME`, `XDG_DATA_HOME` |
|
|
19
|
+
| Pyenv | `.python-version`, `versions/` | `~/.pyenv/` or pyenv-win | `PYENV_ROOT`, `PYENV_VERSION` |
|
|
20
|
+
| Conda | `environment.yml`, `conda-meta/` | Registries + paths | `CONDA_PREFIX`, `CONDA_DEFAULT_ENV` |
|
|
21
|
+
| venv | `pyvenv.cfg` | In-project | None |
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Poetry
|
|
26
|
+
|
|
27
|
+
### Discovery Locations
|
|
28
|
+
|
|
29
|
+
**Virtualenvs cache (default):**
|
|
30
|
+
|
|
31
|
+
- Windows: `%LOCALAPPDATA%\pypoetry\Cache\virtualenvs`
|
|
32
|
+
- macOS: `~/Library/Caches/pypoetry/virtualenvs`
|
|
33
|
+
- Linux: `~/.cache/pypoetry/virtualenvs`
|
|
34
|
+
|
|
35
|
+
**In-project (when enabled):**
|
|
36
|
+
|
|
37
|
+
- `.venv/` in project root
|
|
38
|
+
|
|
39
|
+
### Config Precedence (highest to lowest)
|
|
40
|
+
|
|
41
|
+
1. Local config: `poetry.toml` in project root
|
|
42
|
+
2. Environment variables: `POETRY_VIRTUALENVS_*`
|
|
43
|
+
3. Global config: `~/.config/pypoetry/config.toml`
|
|
44
|
+
|
|
45
|
+
### Known Issues
|
|
46
|
+
|
|
47
|
+
| Issue | Description | Fix |
|
|
48
|
+
| ------------------------- | ----------------------------------------------- | -------------------------------- |
|
|
49
|
+
| `{cache-dir}` placeholder | Not resolved in paths from config | Resolve placeholder before use |
|
|
50
|
+
| Wrong default path | Windows/macOS differ from Linux | Use platform-specific defaults |
|
|
51
|
+
| In-project detection | `POETRY_VIRTUALENVS_IN_PROJECT` must be checked | Check env var first, then config |
|
|
52
|
+
|
|
53
|
+
### Code Pattern
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
async function getPoetryVirtualenvsPath(): Promise<string> {
|
|
57
|
+
// 1. Check environment variable first
|
|
58
|
+
const envVar = process.env.POETRY_VIRTUALENVS_PATH;
|
|
59
|
+
if (envVar) return envVar;
|
|
60
|
+
|
|
61
|
+
// 2. Check local poetry.toml
|
|
62
|
+
const localConfig = await readPoetryToml(projectRoot);
|
|
63
|
+
if (localConfig?.virtualenvs?.path) {
|
|
64
|
+
return resolvePoetryPath(localConfig.virtualenvs.path);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// 3. Use platform-specific default
|
|
68
|
+
return getDefaultPoetryCache();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function resolvePoetryPath(configPath: string): string {
|
|
72
|
+
// Handle {cache-dir} placeholder
|
|
73
|
+
if (configPath.includes('{cache-dir}')) {
|
|
74
|
+
const cacheDir = getDefaultPoetryCache();
|
|
75
|
+
return configPath.replace('{cache-dir}', cacheDir);
|
|
76
|
+
}
|
|
77
|
+
return configPath;
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Pipenv
|
|
84
|
+
|
|
85
|
+
### Discovery Locations
|
|
86
|
+
|
|
87
|
+
**Default:**
|
|
88
|
+
|
|
89
|
+
- Linux: `~/.local/share/virtualenvs/` (XDG_DATA_HOME)
|
|
90
|
+
- macOS: `~/.local/share/virtualenvs/`
|
|
91
|
+
- Windows: `~\.virtualenvs\`
|
|
92
|
+
|
|
93
|
+
**When WORKON_HOME is set:**
|
|
94
|
+
|
|
95
|
+
- Use `$WORKON_HOME/` directly
|
|
96
|
+
|
|
97
|
+
### Environment Variables
|
|
98
|
+
|
|
99
|
+
| Var | Purpose |
|
|
100
|
+
| ------------------------ | ---------------------------- |
|
|
101
|
+
| `WORKON_HOME` | Override virtualenv location |
|
|
102
|
+
| `XDG_DATA_HOME` | Base for Linux default |
|
|
103
|
+
| `PIPENV_VENV_IN_PROJECT` | Create `.venv/` in project |
|
|
104
|
+
|
|
105
|
+
### Known Issues
|
|
106
|
+
|
|
107
|
+
| Issue | Description | Fix |
|
|
108
|
+
| ----------------------------- | ------------------- | ---------------------------- |
|
|
109
|
+
| Missing WORKON_HOME support | Env var not checked | Read env var before defaults |
|
|
110
|
+
| Missing XDG_DATA_HOME support | Not used on Linux | Check XDG spec |
|
|
111
|
+
|
|
112
|
+
### Code Pattern
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
function getPipenvVirtualenvsPath(): string {
|
|
116
|
+
// Check WORKON_HOME first
|
|
117
|
+
if (process.env.WORKON_HOME) {
|
|
118
|
+
return process.env.WORKON_HOME;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// Check XDG_DATA_HOME on Linux
|
|
122
|
+
if (process.platform === 'linux') {
|
|
123
|
+
const xdgData = process.env.XDG_DATA_HOME || path.join(os.homedir(), '.local', 'share');
|
|
124
|
+
return path.join(xdgData, 'virtualenvs');
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Windows/macOS defaults
|
|
128
|
+
return path.join(os.homedir(), '.virtualenvs');
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## PyEnv
|
|
135
|
+
|
|
136
|
+
### Discovery Locations
|
|
137
|
+
|
|
138
|
+
**Unix:**
|
|
139
|
+
|
|
140
|
+
- `~/.pyenv/versions/` (default)
|
|
141
|
+
- `$PYENV_ROOT/versions/` (if PYENV_ROOT set)
|
|
142
|
+
|
|
143
|
+
**Windows (pyenv-win):**
|
|
144
|
+
|
|
145
|
+
- `%USERPROFILE%\.pyenv\pyenv-win\versions\`
|
|
146
|
+
- Different directory structure than Unix!
|
|
147
|
+
|
|
148
|
+
### Key Differences: Unix vs Windows
|
|
149
|
+
|
|
150
|
+
| Aspect | Unix | Windows (pyenv-win) |
|
|
151
|
+
| ------- | ----------------- | --------------------------------------- |
|
|
152
|
+
| Command | `pyenv` | `pyenv.bat` |
|
|
153
|
+
| Root | `~/.pyenv/` | `%USERPROFILE%\.pyenv\pyenv-win\` |
|
|
154
|
+
| Shims | `~/.pyenv/shims/` | `%USERPROFILE%\.pyenv\pyenv-win\shims\` |
|
|
155
|
+
|
|
156
|
+
### Known Issues
|
|
157
|
+
|
|
158
|
+
| Issue | Description | Fix |
|
|
159
|
+
| ---------------------------------- | ------------------------------------------ | ---------------------------------- |
|
|
160
|
+
| path.normalize() vs path.resolve() | Windows drive letter missing | Use `path.resolve()` on both sides |
|
|
161
|
+
| Wrong command on Windows | Looking for `pyenv` instead of `pyenv.bat` | Check for `.bat` extension |
|
|
162
|
+
|
|
163
|
+
### Code Pattern
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
function getPyenvRoot(): string {
|
|
167
|
+
if (process.env.PYENV_ROOT) {
|
|
168
|
+
return process.env.PYENV_ROOT;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
if (process.platform === 'win32') {
|
|
172
|
+
// pyenv-win uses different structure
|
|
173
|
+
return path.join(os.homedir(), '.pyenv', 'pyenv-win');
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return path.join(os.homedir(), '.pyenv');
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function getPyenvVersionsPath(): string {
|
|
180
|
+
const root = getPyenvRoot();
|
|
181
|
+
return path.join(root, 'versions');
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Use path.resolve() for comparisons!
|
|
185
|
+
function comparePyenvPaths(pathA: string, pathB: string): boolean {
|
|
186
|
+
return path.resolve(pathA) === path.resolve(pathB);
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Conda
|
|
193
|
+
|
|
194
|
+
### Discovery Locations
|
|
195
|
+
|
|
196
|
+
**Environment locations:**
|
|
197
|
+
|
|
198
|
+
- Base install `envs/` directory
|
|
199
|
+
- `~/.conda/envs/`
|
|
200
|
+
- Paths in `~/.condarc` `envs_dirs`
|
|
201
|
+
|
|
202
|
+
**Windows Registry:**
|
|
203
|
+
|
|
204
|
+
- `HKCU\Software\Python\ContinuumAnalytics\`
|
|
205
|
+
- `HKLM\SOFTWARE\Python\ContinuumAnalytics\`
|
|
206
|
+
|
|
207
|
+
### Shell Activation
|
|
208
|
+
|
|
209
|
+
| Shell | Activation Command |
|
|
210
|
+
| ---------- | -------------------------------------- |
|
|
211
|
+
| bash, zsh | `source activate envname` |
|
|
212
|
+
| fish | `conda activate envname` (NOT source!) |
|
|
213
|
+
| PowerShell | `conda activate envname` |
|
|
214
|
+
| cmd | `activate.bat envname` |
|
|
215
|
+
|
|
216
|
+
### Known Issues
|
|
217
|
+
|
|
218
|
+
| Issue | Description | Fix |
|
|
219
|
+
| --------------------- | ----------------------- | -------------------------- |
|
|
220
|
+
| Fish shell activation | Uses bash-style command | Use fish-compatible syntax |
|
|
221
|
+
| Registry paths | May be stale/invalid | Verify paths exist |
|
|
222
|
+
| Base vs named envs | Different activation | Check if activating base |
|
|
223
|
+
|
|
224
|
+
### Code Pattern
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
function getCondaActivationCommand(shell: ShellType, envName: string): string {
|
|
228
|
+
switch (shell) {
|
|
229
|
+
case 'fish':
|
|
230
|
+
// Fish uses different syntax!
|
|
231
|
+
return `conda activate ${envName}`;
|
|
232
|
+
case 'cmd':
|
|
233
|
+
return `activate.bat ${envName}`;
|
|
234
|
+
case 'powershell':
|
|
235
|
+
return `conda activate ${envName}`;
|
|
236
|
+
default:
|
|
237
|
+
// bash, zsh
|
|
238
|
+
return `source activate ${envName}`;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## venv
|
|
246
|
+
|
|
247
|
+
### Discovery
|
|
248
|
+
|
|
249
|
+
**Identification:**
|
|
250
|
+
|
|
251
|
+
- Look for `pyvenv.cfg` file in directory
|
|
252
|
+
- Contains `home` and optionally `version` keys
|
|
253
|
+
|
|
254
|
+
### Version Extraction Priority
|
|
255
|
+
|
|
256
|
+
1. `version` field in `pyvenv.cfg`
|
|
257
|
+
2. Parse from `home` path (e.g., `Python311`)
|
|
258
|
+
3. Spawn Python executable (last resort)
|
|
259
|
+
|
|
260
|
+
### Code Pattern
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
async function getVenvVersion(venvPath: string): Promise<string | undefined> {
|
|
264
|
+
const cfgPath = path.join(venvPath, 'pyvenv.cfg');
|
|
265
|
+
|
|
266
|
+
try {
|
|
267
|
+
const content = await fs.readFile(cfgPath, 'utf-8');
|
|
268
|
+
const lines = content.split('\n');
|
|
269
|
+
|
|
270
|
+
for (const line of lines) {
|
|
271
|
+
const [key, value] = line.split('=').map((s) => s.trim());
|
|
272
|
+
if (key === 'version') {
|
|
273
|
+
return value;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// Fall back to parsing home path
|
|
278
|
+
const homeLine = lines.find((l) => l.startsWith('home'));
|
|
279
|
+
if (homeLine) {
|
|
280
|
+
const home = homeLine.split('=')[1].trim();
|
|
281
|
+
const match = home.match(/(\d+)\.(\d+)/);
|
|
282
|
+
if (match) {
|
|
283
|
+
return `${match[1]}.${match[2]}`;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
} catch {
|
|
287
|
+
// Config file not found or unreadable
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
return undefined;
|
|
291
|
+
}
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## PET Server (Native Finder)
|
|
297
|
+
|
|
298
|
+
### JSON-RPC Communication
|
|
299
|
+
|
|
300
|
+
The PET server is a Rust-based locator that communicates via JSON-RPC over stdio.
|
|
301
|
+
|
|
302
|
+
### Known Issues
|
|
303
|
+
|
|
304
|
+
| Issue | Description | Fix |
|
|
305
|
+
| ------------------- | -------------------------------- | ----------------------------- |
|
|
306
|
+
| No timeout | JSON-RPC can hang forever | Add Promise.race with timeout |
|
|
307
|
+
| Silent spawn errors | Extension continues without envs | Surface spawn errors to user |
|
|
308
|
+
| Resource leaks | Worker pool not cleaned up | Dispose on deactivation |
|
|
309
|
+
| Type guard missing | Response types not validated | Add runtime type checks |
|
|
310
|
+
| Cache key collision | Paths normalize to same key | Use consistent normalization |
|
|
311
|
+
|
|
312
|
+
### Code Pattern
|
|
313
|
+
|
|
314
|
+
```typescript
|
|
315
|
+
async function fetchFromPET<T>(method: string, params: unknown): Promise<T> {
|
|
316
|
+
const timeout = 30000; // 30 seconds
|
|
317
|
+
|
|
318
|
+
const result = await Promise.race([
|
|
319
|
+
this.client.request(method, params),
|
|
320
|
+
new Promise<never>((_, reject) => setTimeout(() => reject(new Error('PET server timeout')), timeout)),
|
|
321
|
+
]);
|
|
322
|
+
|
|
323
|
+
// Validate response type
|
|
324
|
+
if (!isValidResponse<T>(result)) {
|
|
325
|
+
throw new Error(`Invalid response from PET: ${JSON.stringify(result)}`);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
return result;
|
|
329
|
+
}
|
|
330
|
+
```
|