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,340 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gtm-product-led-growth
|
|
3
|
+
description: Build self-serve acquisition and expansion motions. Use when deciding PLG vs sales-led, optimizing activation, driving freemium conversion, building growth equations, or recognizing when product complexity demands human touch. Includes the parallel test where sales-led won 10x on revenue.
|
|
4
|
+
license: MIT
|
|
5
|
+
metadata:
|
|
6
|
+
author: Smit Patel (https://linkedin.com/in/smitkpatel)
|
|
7
|
+
source: https://github.com/beingsmit/technical-product-gtm
|
|
8
|
+
category: business
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Product-Led Growth
|
|
12
|
+
|
|
13
|
+
Build self-serve acquisition and expansion motions. But first, figure out if PLG is even the right motion for your product.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
**Triggers:**
|
|
18
|
+
- "Should we build PLG or sales-led?"
|
|
19
|
+
- "How do we drive self-serve adoption?"
|
|
20
|
+
- "Freemium to paid conversion isn't working"
|
|
21
|
+
- "Developer-led adoption strategy"
|
|
22
|
+
- "Which growth channels should we invest in?"
|
|
23
|
+
- "How do I know if PLG will work?"
|
|
24
|
+
|
|
25
|
+
**Context:**
|
|
26
|
+
- Developer tools and platforms
|
|
27
|
+
- B2B SaaS with self-serve potential
|
|
28
|
+
- Products where value is obvious without demo
|
|
29
|
+
- Bottom-up adoption motions
|
|
30
|
+
- Growth channel prioritization
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Core Frameworks
|
|
35
|
+
|
|
36
|
+
### 1. The PLG Reality Check (Test Before You Commit)
|
|
37
|
+
|
|
38
|
+
**What I Learned Running Both Motions in Parallel:**
|
|
39
|
+
|
|
40
|
+
Classic startup debate. PLG camp: "Developers want self-serve." Sales camp: "Enterprises need hand-holding." Instead of arguing, we tested both for 6 months. Same product, two GTM motions, tracked everything.
|
|
41
|
+
|
|
42
|
+
**The Results:**
|
|
43
|
+
|
|
44
|
+
PLG: High volume, low ACV (~$5K), fast time-to-revenue, higher churn. Sales-led: Lower volume, high ACV (~$50K), slower time-to-revenue, lower churn. **Sales won 10x on dollars despite 10x less volume.**
|
|
45
|
+
|
|
46
|
+
**Why:** Product complexity + buyer seniority = sales-led wins. The product required integration with existing infrastructure, change management across teams, and multi-stakeholder alignment. Developers loved self-serve. But they weren't the economic buyer.
|
|
47
|
+
|
|
48
|
+
**PLG works when:**
|
|
49
|
+
- Value is obvious in first 5 minutes
|
|
50
|
+
- Implementation is trivial
|
|
51
|
+
- Individual user gets value without team buy-in
|
|
52
|
+
- No procurement/legal hurdles
|
|
53
|
+
- Buyer = user
|
|
54
|
+
|
|
55
|
+
**Sales-led works when:**
|
|
56
|
+
- Product requires integration/setup
|
|
57
|
+
- Multiple stakeholders need alignment
|
|
58
|
+
- Buyer ≠ user
|
|
59
|
+
- Deal size justifies human touch
|
|
60
|
+
- Customer needs education to see value
|
|
61
|
+
|
|
62
|
+
**Before building PLG, test your motion. Don't assume PLG is better because it's trendy.** PLG is efficient at volume, but sales-led can be more profitable with complexity.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
### 2. The Growth Equation (Map Inputs to Outputs)
|
|
67
|
+
|
|
68
|
+
**The Pattern:**
|
|
69
|
+
|
|
70
|
+
Growth compounds when you systematize the relationship between activities and user acquisition. Not "do more marketing" — map specific inputs to measurable outputs.
|
|
71
|
+
|
|
72
|
+
**How to Build Your Growth Equation:**
|
|
73
|
+
|
|
74
|
+
For each channel, define: Activity (input) → Traffic (output) → Conversions.
|
|
75
|
+
|
|
76
|
+
- **Organic Search:** 1 quality blog post → 400 users/month → 5% conversion = 20 new users
|
|
77
|
+
- **Paid Ads:** $1K spend at 8% conversion on 100K impressions = 8K clicks → conversions at X%
|
|
78
|
+
- **Community Events:** 1 event → 60 attendees → 35% conversion = 21 users
|
|
79
|
+
- **Referral:** 1 integration partner → N referred users → conversions at Y%
|
|
80
|
+
|
|
81
|
+
**Why This Matters:**
|
|
82
|
+
|
|
83
|
+
Once you validate the equation, scaling becomes math. "I need 200 more users next month" → "I need 10 more blog posts" or "I need $5K more ad spend." Without the equation, you're guessing.
|
|
84
|
+
|
|
85
|
+
**Testing the Equation:**
|
|
86
|
+
|
|
87
|
+
1. Start with hypothesis: "If I create X, it drives Y conversion"
|
|
88
|
+
2. Test with small sample: 1 blog post, measure actual conversion
|
|
89
|
+
3. Validate: Does reality match hypothesis?
|
|
90
|
+
4. Scale with confidence: If yes, increase input
|
|
91
|
+
5. Kill if not: 4 weeks of data is enough to decide
|
|
92
|
+
|
|
93
|
+
**Common Mistake:**
|
|
94
|
+
|
|
95
|
+
Guessing at conversion rates without testing. Assuming all users from the same channel are equal quality. Scaling before validating the equation.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### 3. Channel Economics (Kill Losers, Double Down on Winners)
|
|
100
|
+
|
|
101
|
+
**The Pattern:**
|
|
102
|
+
|
|
103
|
+
Every channel has economics. Without tracking them, you over-invest in losers and under-invest in winners.
|
|
104
|
+
|
|
105
|
+
**Track Per Channel:**
|
|
106
|
+
1. **CAC:** Total spend / new users
|
|
107
|
+
2. **Conversion rate:** Signups → paying
|
|
108
|
+
3. **Retention:** 30-day, 90-day by source
|
|
109
|
+
4. **LTV:** Revenue over customer lifetime, by channel
|
|
110
|
+
5. **Payback period:** How long to recoup CAC
|
|
111
|
+
|
|
112
|
+
**The Decision Framework:**
|
|
113
|
+
|
|
114
|
+
- CAC < (LTV × margin) → Scale aggressively
|
|
115
|
+
- CAC ≈ (LTV × margin) → Optimize, don't scale
|
|
116
|
+
- CAC > (LTV × margin) → Kill within 4 weeks
|
|
117
|
+
|
|
118
|
+
**Monthly channel review:** Which channels are profitable? Which are drains? Quarterly reallocation: 3x budget to winners, kill losers.
|
|
119
|
+
|
|
120
|
+
**Critical Insight: Channel Quality Varies**
|
|
121
|
+
|
|
122
|
+
Cheap CAC doesn't mean good CAC. Organic search might deliver users at $0 CAC with 85% 30-day retention. Paid search might deliver users at $12 CAC with 45% 30-day retention. The "free" channel is 10x more valuable when you factor in retention and LTV.
|
|
123
|
+
|
|
124
|
+
**Systematic Testing:**
|
|
125
|
+
|
|
126
|
+
Test 2 new channels monthly. Give each 4 weeks of data. Kill decisively if economics don't work. Document learnings regardless of outcome — what didn't work is as valuable as what did.
|
|
127
|
+
|
|
128
|
+
**Common Mistake:**
|
|
129
|
+
|
|
130
|
+
Tracking CAC without retention. A cheap channel that churns users costs more than an expensive channel that retains them.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
### 4. Time to First Value (The Only Activation Metric)
|
|
135
|
+
|
|
136
|
+
**The Pattern:**
|
|
137
|
+
|
|
138
|
+
Users decide product value in the first 5-10 minutes. If they don't reach the aha moment fast, they abandon.
|
|
139
|
+
|
|
140
|
+
**The Activation Audit:**
|
|
141
|
+
|
|
142
|
+
1. Sign up for your own product as a new user
|
|
143
|
+
2. Time how long to first value
|
|
144
|
+
3. Count steps to aha moment
|
|
145
|
+
4. Where did you get stuck?
|
|
146
|
+
|
|
147
|
+
**If TTFV > 10 minutes, you have an activation problem.**
|
|
148
|
+
|
|
149
|
+
**Before:** Sign up → confirm email → fill profile → configure settings → read docs → first action
|
|
150
|
+
|
|
151
|
+
**After:** Sign up → pre-loaded sample data → first action (immediate aha moment)
|
|
152
|
+
|
|
153
|
+
**Specific Fixes:**
|
|
154
|
+
|
|
155
|
+
1. **Pre-load sample data.** Users want to see value, not set up. Give them a working example immediately.
|
|
156
|
+
2. **Skip non-essential setup.** Email confirmation, profile, settings — all can wait until after the aha moment.
|
|
157
|
+
3. **Progressive disclosure.** Don't show all features upfront. Start with one core workflow. Reveal complexity gradually.
|
|
158
|
+
4. **Show, don't tell.** Interactive tutorial > video > text docs. Let them click through a workflow.
|
|
159
|
+
|
|
160
|
+
**Common Mistake:**
|
|
161
|
+
|
|
162
|
+
Assuming users will read documentation. They won't. They'll click around for 5 minutes, and if nothing works, they leave.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
### 5. The $5K → $50K Inflection (When PLG Breaks)
|
|
167
|
+
|
|
168
|
+
**The Pattern:**
|
|
169
|
+
|
|
170
|
+
PLG works for $1K-$10K ARR. Between $20K-$50K, the motion breaks because organizational friction kicks in: procurement, legal, security, multi-stakeholder buy-in.
|
|
171
|
+
|
|
172
|
+
**The Hybrid Approach:**
|
|
173
|
+
|
|
174
|
+
**PLG ($0-$10K):** Self-serve sign-up → free tier → paid tier → credit card checkout → automated onboarding
|
|
175
|
+
|
|
176
|
+
**Sales-Assisted ($10K-$50K):** Self-serve discovery → sales engages on usage signals → human-negotiated contract → dedicated onboarding
|
|
177
|
+
|
|
178
|
+
**Enterprise ($50K+):** Outbound or inbound lead → demo → POC → proposal → legal/security review → executive sponsor
|
|
179
|
+
|
|
180
|
+
**PQL Signals (When to Trigger Sales):**
|
|
181
|
+
|
|
182
|
+
- **Usage depth:** Daily active, core features used, approaching limits
|
|
183
|
+
- **Expansion signals:** Multiple users from same company, team features, integrations
|
|
184
|
+
- **Buying signals:** Requests for SSO/compliance/SLAs, asks about team pricing
|
|
185
|
+
|
|
186
|
+
**The Handoff:**
|
|
187
|
+
|
|
188
|
+
Bad: "Hey, I saw you signed up." (Cold, generic, kills trust)
|
|
189
|
+
Good: "Your team is using [specific feature] across 12 repos. We can help you [specific value]. Want 15 minutes?" (Warm, specific, offers value)
|
|
190
|
+
|
|
191
|
+
**Common Mistake:**
|
|
192
|
+
|
|
193
|
+
Sales engaging too early on <$5K deals. Kills PLG motion, scares users. Let them self-serve until they need help.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
### 6. Growth Forecasting (Plan for Uncertainty)
|
|
198
|
+
|
|
199
|
+
**The Pattern:**
|
|
200
|
+
|
|
201
|
+
Forecasts are always wrong. Plans are still valuable because they force thinking and create accountability.
|
|
202
|
+
|
|
203
|
+
**Model Three Scenarios:**
|
|
204
|
+
|
|
205
|
+
**Baseline (current trajectory continues):**
|
|
206
|
+
- Organic search: 35% growth → 40K new users
|
|
207
|
+
- Paid: Flat → 2K new users
|
|
208
|
+
- Community: 10% growth → 400 new users
|
|
209
|
+
- Total: 42.4K
|
|
210
|
+
|
|
211
|
+
**Upside (if all growth initiatives execute):**
|
|
212
|
+
- Organic: 50% growth (3x content) → 48K
|
|
213
|
+
- Paid: 2x spend, same efficiency → 4K
|
|
214
|
+
- New initiative (partnerships): ramp → 3K
|
|
215
|
+
- Total: 55K
|
|
216
|
+
|
|
217
|
+
**Downside (if key channels fail):**
|
|
218
|
+
- Organic: 0% growth → 26K
|
|
219
|
+
- Paid: CPA doubles → 1K
|
|
220
|
+
- Total: 27K
|
|
221
|
+
|
|
222
|
+
**Use This For:**
|
|
223
|
+
- Setting baseline targets (baseline scenario)
|
|
224
|
+
- Stretch goals (upside scenario)
|
|
225
|
+
- Escalation triggers (if you hit downside, something needs to change)
|
|
226
|
+
- Resource allocation (what inputs change to hit upside?)
|
|
227
|
+
|
|
228
|
+
**Monthly Update:** Compare forecast to actual. Adjust model. Don't forecast-and-forget.
|
|
229
|
+
|
|
230
|
+
**Common Mistake:**
|
|
231
|
+
|
|
232
|
+
Overly optimistic forecasts that assume everything works. Not updating monthly. Treating forecast as target (it's a range, not a number).
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
### 7. The Playbook Documentation Habit
|
|
237
|
+
|
|
238
|
+
**The Pattern:**
|
|
239
|
+
|
|
240
|
+
Knowledge dies with people. The goal isn't one-off wins — it's systematizing what works.
|
|
241
|
+
|
|
242
|
+
**After every successful campaign or experiment, write a 1-page playbook:**
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
PLAYBOOK: [Channel/Tactic Name]
|
|
246
|
+
|
|
247
|
+
Goal: [What outcome]
|
|
248
|
+
Steps: [Numbered, specific enough for someone unfamiliar]
|
|
249
|
+
Expected Output: [Specific metrics]
|
|
250
|
+
Metrics to Track: [How to measure]
|
|
251
|
+
Risks & Mitigations: [What could go wrong]
|
|
252
|
+
Owner: [Name]
|
|
253
|
+
Last Updated: [Date]
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**The Test:** Could someone who wasn't involved execute this playbook? If not, it's too vague.
|
|
257
|
+
|
|
258
|
+
**Review quarterly.** Remove playbooks that no longer work. Update ones that have evolved. This becomes your growth operating system.
|
|
259
|
+
|
|
260
|
+
**Common Mistake:**
|
|
261
|
+
|
|
262
|
+
Running experiments without documenting learnings. Scaling before you understand the mechanism. Having growth knowledge trapped in one person's head.
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Decision Trees
|
|
267
|
+
|
|
268
|
+
### Should We Build PLG or Sales-Led?
|
|
269
|
+
|
|
270
|
+
```
|
|
271
|
+
Can users get value in <10 min without docs?
|
|
272
|
+
├─ No → Sales-led required
|
|
273
|
+
└─ Yes → Can they self-serve implementation?
|
|
274
|
+
├─ No → Sales-led required
|
|
275
|
+
└─ Yes → Is buyer = user?
|
|
276
|
+
├─ No → Hybrid (PLG + sales-assist)
|
|
277
|
+
└─ Yes → Pure PLG viable
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Keep, Scale, or Kill This Channel?
|
|
281
|
+
|
|
282
|
+
```
|
|
283
|
+
CAC < (LTV × margin)?
|
|
284
|
+
├─ No → Kill within 4 weeks
|
|
285
|
+
└─ Yes → 90-day retention > 60%?
|
|
286
|
+
├─ No → Optimize (improve activation/onboarding)
|
|
287
|
+
└─ Yes → Scale aggressively (3x budget)
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
## Common Mistakes
|
|
293
|
+
|
|
294
|
+
**1. Assuming PLG always works**
|
|
295
|
+
Product complexity + buyer seniority = sales-led wins. Test before committing.
|
|
296
|
+
|
|
297
|
+
**2. No channel economics**
|
|
298
|
+
Every channel has CAC, retention, and LTV. Track them or you're flying blind.
|
|
299
|
+
|
|
300
|
+
**3. Free tier too generous or too limited**
|
|
301
|
+
Too generous: no conversion. Too limited: no activation. Allow 10-20 aha moments.
|
|
302
|
+
|
|
303
|
+
**4. No growth equation**
|
|
304
|
+
"Do more marketing" isn't a strategy. Map inputs → outputs → conversions per channel.
|
|
305
|
+
|
|
306
|
+
**5. Scaling before validating**
|
|
307
|
+
4 weeks of data before scaling any channel. Kill decisively if economics don't work.
|
|
308
|
+
|
|
309
|
+
**6. Growth knowledge in one person's head**
|
|
310
|
+
Document every successful experiment as a playbook.
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## Quick Reference
|
|
315
|
+
|
|
316
|
+
**PLG readiness:** Value in <10 min + self-serve implementation + buyer = user
|
|
317
|
+
|
|
318
|
+
**Growth equation:** Activity (input) → Traffic (output) → Conversions, per channel
|
|
319
|
+
|
|
320
|
+
**Channel economics:** CAC, conversion, 30/90-day retention, LTV, payback — per channel, monthly review
|
|
321
|
+
|
|
322
|
+
**Kill criteria:** CAC > (LTV × margin) → 4 weeks to improve, then kill
|
|
323
|
+
|
|
324
|
+
**PQL signals:** Usage depth + expansion (multi-user) + buying (SSO/compliance requests)
|
|
325
|
+
|
|
326
|
+
**Sales handoff:** <$10K: PLG → $10K-$50K: Sales-assist → >$50K: Full sales
|
|
327
|
+
|
|
328
|
+
**Forecast:** Baseline + Upside + Downside, updated monthly
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Related Skills
|
|
333
|
+
|
|
334
|
+
- **technical-product-pricing**: Freemium thresholds and pricing gates
|
|
335
|
+
- **developer-ecosystem**: Developer-specific adoption programs
|
|
336
|
+
- **0-to-1-launch**: Finding first customers before PLG scales
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
*Based on experience across multiple platform companies — leading a growth team building PLG and sales-led motions from scratch, and operating inside successful PLG + sales-led machines at hypergrowth companies. The combination taught both sides: what it takes to establish these motions early (when resources are thin and every bet matters) and what the mature version looks like at scale (growth equations, channel economics systems, freemium pricing gates, and systematic A/B testing that documents every win and loss into executable playbooks). Not theory — lessons from building the machine and operating inside ones that worked.*
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: calendar
|
|
3
|
+
version: 1
|
|
4
|
+
category: productivity
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Calendar & Scheduling
|
|
8
|
+
|
|
9
|
+
Manage calendar events, check schedules, and plan time using local ical files or CLI calendar tools.
|
|
10
|
+
|
|
11
|
+
## When to use this skill
|
|
12
|
+
|
|
13
|
+
- User asks about upcoming events, meetings, or appointments
|
|
14
|
+
- User wants to schedule, move, or cancel an event
|
|
15
|
+
- User wants to see today's or this week's agenda
|
|
16
|
+
- User wants to find a free slot for a meeting
|
|
17
|
+
- User mentions "calendar", "schedule", "meeting", "appointment", "agenda"
|
|
18
|
+
|
|
19
|
+
## Prerequisites
|
|
20
|
+
|
|
21
|
+
One of the following should be available:
|
|
22
|
+
- `khal` — CLI calendar (works with CalDAV/ical files), configured via `~/.config/khal/config`
|
|
23
|
+
- `calcurse` — terminal calendar app, data in `~/.local/share/calcurse/`
|
|
24
|
+
- Raw ical files (`.ics`) synced to a local directory (e.g. via `vdirsyncer`)
|
|
25
|
+
- `gcalcli` — Google Calendar CLI, requires OAuth setup
|
|
26
|
+
|
|
27
|
+
Check availability: `which khal calcurse gcalcli 2>/dev/null`
|
|
28
|
+
|
|
29
|
+
## Procedure
|
|
30
|
+
|
|
31
|
+
### Reading the current schedule
|
|
32
|
+
|
|
33
|
+
With khal:
|
|
34
|
+
```
|
|
35
|
+
khal list today
|
|
36
|
+
khal list today 7d
|
|
37
|
+
khal calendar
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
With calcurse: launch `calcurse -D ~/.local/share/calcurse` and read output.
|
|
41
|
+
|
|
42
|
+
With gcalcli:
|
|
43
|
+
```
|
|
44
|
+
gcalcli agenda
|
|
45
|
+
gcalcli calw # week view
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
With raw ical: find and parse `.ics` files in `~/.calendars/` or wherever they're synced.
|
|
49
|
+
|
|
50
|
+
### Adding an event
|
|
51
|
+
|
|
52
|
+
With khal:
|
|
53
|
+
```
|
|
54
|
+
khal new 2024-06-15 14:00 15:00 "Team standup" :: "Weekly sync with engineering"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
With gcalcli:
|
|
58
|
+
```
|
|
59
|
+
gcalcli add
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Finding free time
|
|
63
|
+
|
|
64
|
+
Check khal list output for gaps between events. A gap > 30 minutes between events is schedulable.
|
|
65
|
+
|
|
66
|
+
### Editing or removing an event
|
|
67
|
+
|
|
68
|
+
With khal: use `khal edit` to interactively modify.
|
|
69
|
+
With gcalcli: `gcalcli delete "event title"`
|
|
70
|
+
|
|
71
|
+
## Output format
|
|
72
|
+
|
|
73
|
+
When showing the schedule, present it as a clean list:
|
|
74
|
+
```
|
|
75
|
+
Today — Tuesday, June 15
|
|
76
|
+
|
|
77
|
+
9:00 – 10:00 Team standup
|
|
78
|
+
12:00 – 13:00 Lunch with client
|
|
79
|
+
15:00 – 16:00 Design review
|
|
80
|
+
|
|
81
|
+
No events found for tomorrow.
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
When suggesting a meeting time, offer 2-3 options based on visible free slots.
|
|
85
|
+
|
|
86
|
+
## Pitfalls
|
|
87
|
+
|
|
88
|
+
- `khal` requires CalDAV sync to be up-to-date — suggest running `vdirsyncer sync` if events seem stale
|
|
89
|
+
- Time zone issues: verify `khal` is configured with the correct timezone in `~/.config/khal/config`
|
|
90
|
+
- `gcalcli` needs OAuth; if it fails, prompt the user to run `gcalcli init` first
|
|
91
|
+
- Don't assume the calendar tool is installed — check first and fall back gracefully
|
|
92
|
+
|
|
93
|
+
## Verification
|
|
94
|
+
|
|
95
|
+
After adding an event: run `khal list [date]` and confirm the event appears with correct time and title.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review
|
|
3
|
+
version: 2
|
|
4
|
+
category: dev
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Code Review
|
|
8
|
+
|
|
9
|
+
Systematic review of code changes — correctness first, then security, then quality. shmakk runs this automatically after every plan completes, and the agent should also use it on demand when asked.
|
|
10
|
+
|
|
11
|
+
## When to use this skill
|
|
12
|
+
|
|
13
|
+
- After a plan completes (shmakk triggers automatically via `runPostPlanReview`)
|
|
14
|
+
- User asks for a code review, audit, or "what's wrong with this"
|
|
15
|
+
- Before a merge to main / before publishing
|
|
16
|
+
- After fixing a complex bug — verify the fix doesn't introduce new issues
|
|
17
|
+
- When stuck — a structured review often surfaces the missing piece
|
|
18
|
+
|
|
19
|
+
## Procedure
|
|
20
|
+
|
|
21
|
+
### Step 1: Identify the scope
|
|
22
|
+
|
|
23
|
+
Determine what to review:
|
|
24
|
+
- **Post-plan**: shmakk passes you the git diff between base SHA and head SHA
|
|
25
|
+
- **PR review**: `git diff origin/main...HEAD`
|
|
26
|
+
- **Single file**: `read_file` the specific file
|
|
27
|
+
- **Working tree**: `git diff` (uncommitted changes)
|
|
28
|
+
|
|
29
|
+
Read the actual diff first — never review based on the user's description alone.
|
|
30
|
+
|
|
31
|
+
### Step 2: Correctness
|
|
32
|
+
|
|
33
|
+
Check for logic errors:
|
|
34
|
+
- Off-by-one errors in loops, slices, and array indexing
|
|
35
|
+
- Wrong boundary conditions (`< vs <=`, `>= 0 vs > 0`)
|
|
36
|
+
- Missing null/undefined/empty checks
|
|
37
|
+
- Wrong operator precedence
|
|
38
|
+
- Edge cases: empty input, very large numbers, special characters, unicode
|
|
39
|
+
- Race conditions in concurrent code
|
|
40
|
+
- Missing error handling for operations that can fail (file I/O, network, parsing)
|
|
41
|
+
- Functions that quietly return on error instead of surfacing the failure
|
|
42
|
+
|
|
43
|
+
### Step 3: Security
|
|
44
|
+
|
|
45
|
+
Check for common vulnerabilities:
|
|
46
|
+
|
|
47
|
+
**Injection:**
|
|
48
|
+
- SQL injection: parameterized queries, never string concatenation
|
|
49
|
+
- Command injection: user input passed to `exec`, `system`, `eval`, `child_process.exec`
|
|
50
|
+
- XSS: user input escaped before HTML rendering, `dangerouslySetInnerHTML` audited
|
|
51
|
+
- Path traversal: user input sanitized before constructing file paths
|
|
52
|
+
|
|
53
|
+
**Authentication / authorization:**
|
|
54
|
+
- Tokens validated on every protected route, not just at login
|
|
55
|
+
- Sessions stored in HttpOnly + Secure + SameSite cookies (never localStorage)
|
|
56
|
+
- Password hashes use bcrypt/argon2/scrypt (never MD5 or SHA1)
|
|
57
|
+
- Authorization checks at the action level, not just the navigation level
|
|
58
|
+
|
|
59
|
+
**Secrets:**
|
|
60
|
+
- No hardcoded API keys, tokens, or passwords in the diff
|
|
61
|
+
- `.env`, `.env.local`, credentials files in `.gitignore`
|
|
62
|
+
- Check `git log -p` for accidentally committed secrets
|
|
63
|
+
|
|
64
|
+
**File operations:**
|
|
65
|
+
- Path traversal via `../`
|
|
66
|
+
- Symlink attacks
|
|
67
|
+
- TOCTOU (time-of-check vs time-of-use) races
|
|
68
|
+
|
|
69
|
+
### Step 4: Performance
|
|
70
|
+
|
|
71
|
+
- N+1 query patterns (loop body that calls the database)
|
|
72
|
+
- Unbounded computation inside hot paths
|
|
73
|
+
- Missing indexes on filter / join / sort columns
|
|
74
|
+
- Memory leaks: event listeners attached without cleanup, retained closures
|
|
75
|
+
- Bundle bloat: full library imports when one function is needed
|
|
76
|
+
|
|
77
|
+
### Step 5: Quality
|
|
78
|
+
|
|
79
|
+
- **Single responsibility**: does this function / class do one thing?
|
|
80
|
+
- **Cyclomatic complexity**: nested conditionals that should be extracted
|
|
81
|
+
- **Duplication**: same logic copied across files — extract a helper
|
|
82
|
+
- **Naming**: do names accurately describe behavior, not implementation?
|
|
83
|
+
- **Tests**: was test coverage added or updated for changed behavior?
|
|
84
|
+
- **Comments**: do they explain *why* (non-obvious constraints) rather than *what*?
|
|
85
|
+
|
|
86
|
+
### Step 6: Report findings
|
|
87
|
+
|
|
88
|
+
Structure as:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
CRITICAL
|
|
92
|
+
- file.js:42 — [issue], [fix]
|
|
93
|
+
|
|
94
|
+
IMPORTANT
|
|
95
|
+
- file.js:80 — [issue], [fix]
|
|
96
|
+
|
|
97
|
+
MINOR
|
|
98
|
+
- file.js:120 — [issue], [fix]
|
|
99
|
+
|
|
100
|
+
Assessment: <ready to ship | fix critical first | needs significant rework>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
For each issue:
|
|
104
|
+
- **Cite file:line** — never vague locations
|
|
105
|
+
- **State the problem**, not just the symptom
|
|
106
|
+
- **Propose the fix** — exact code change when possible
|
|
107
|
+
|
|
108
|
+
If no issues found at any severity, say so plainly: `No issues found. Ready to proceed.`
|
|
109
|
+
|
|
110
|
+
## Severity definitions
|
|
111
|
+
|
|
112
|
+
- **CRITICAL** — bug that loses data, security vulnerability, breaks production
|
|
113
|
+
- **IMPORTANT** — logic error that breaks a feature, missing error handling, performance regression
|
|
114
|
+
- **MINOR** — style, naming, missing test for a non-critical path
|
|
115
|
+
|
|
116
|
+
Never invent CRITICAL findings to look thorough. Most diffs have zero critical issues.
|
|
117
|
+
|
|
118
|
+
## Tone
|
|
119
|
+
|
|
120
|
+
- Direct, technical, specific
|
|
121
|
+
- No praise sandwich — the user wants signal, not validation
|
|
122
|
+
- Push back on the original author's choices when wrong, with technical reasoning
|
|
123
|
+
- Acknowledge uncertainty when present ("If X is also true elsewhere, this becomes a problem")
|
|
124
|
+
|
|
125
|
+
## Anti-patterns to avoid
|
|
126
|
+
|
|
127
|
+
- Reviewing the description instead of the actual diff
|
|
128
|
+
- Listing 20 minor nits when there's a critical bug present (signal vs noise)
|
|
129
|
+
- Suggesting rewrites instead of minimal fixes
|
|
130
|
+
- Citing best practices without explaining why they matter for THIS code
|