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
package/skills/logs.md
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: logs
|
|
3
|
+
version: 1
|
|
4
|
+
category: system
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Log Analysis
|
|
8
|
+
|
|
9
|
+
Parse, search, and analyze log files to find errors, diagnose issues, and understand activity.
|
|
10
|
+
|
|
11
|
+
## When to use this skill
|
|
12
|
+
|
|
13
|
+
- User wants to find errors or exceptions in logs
|
|
14
|
+
- User wants to understand what happened at a specific time
|
|
15
|
+
- User wants to see activity patterns or anomalies
|
|
16
|
+
- User asks about "logs", "errors", "what happened", "why did it crash", "exceptions"
|
|
17
|
+
|
|
18
|
+
## Procedure
|
|
19
|
+
|
|
20
|
+
### Step 1: Locate the logs
|
|
21
|
+
|
|
22
|
+
Common log locations:
|
|
23
|
+
```
|
|
24
|
+
/var/log/syslog # system log (Debian/Ubuntu)
|
|
25
|
+
/var/log/messages # system log (RHEL/CentOS)
|
|
26
|
+
journalctl # systemd journal (modern Linux)
|
|
27
|
+
/var/log/nginx/ # nginx access and error logs
|
|
28
|
+
/var/log/apache2/ # apache logs
|
|
29
|
+
~/.local/share/ # user application logs
|
|
30
|
+
./logs/ # application-local logs
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Check recent files:
|
|
34
|
+
```
|
|
35
|
+
ls -lt /var/log/ | head -20
|
|
36
|
+
find . -name "*.log" -newer /tmp -type f 2>/dev/null
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Step 2: Quick error scan
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
grep -i "error\|exception\|fatal\|critical\|panic\|fail" logfile.log | tail -50
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
For systemd:
|
|
46
|
+
```
|
|
47
|
+
journalctl -p err --since "1 hour ago"
|
|
48
|
+
journalctl -p err --since "2024-01-15 12:00" --until "2024-01-15 13:00"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Step 3: Find errors around a specific time
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
grep "2024-01-15 14:3" logfile.log # all events in that minute range
|
|
55
|
+
awk '/14:30/,/14:35/' logfile.log # events between two times
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Step 4: Count error frequency
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
grep -i "error" logfile.log | awk '{print $5}' | sort | uniq -c | sort -rn | head -20
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Find repeated error patterns:
|
|
65
|
+
```
|
|
66
|
+
grep -i "error" logfile.log | sed 's/[0-9]\{1,\}/N/g' | sort | uniq -c | sort -rn | head -20
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
(Replacing numbers with N normalizes "error on line 42" and "error on line 87" into the same pattern)
|
|
70
|
+
|
|
71
|
+
### Step 5: Analyze access logs (nginx/apache)
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
# Top requested URLs
|
|
75
|
+
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
|
|
76
|
+
|
|
77
|
+
# Top IPs
|
|
78
|
+
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
|
|
79
|
+
|
|
80
|
+
# HTTP errors (4xx, 5xx)
|
|
81
|
+
awk '$9 ~ /^[45]/' /var/log/nginx/access.log | tail -50
|
|
82
|
+
|
|
83
|
+
# Requests per minute (traffic pattern)
|
|
84
|
+
awk '{print $4}' /var/log/nginx/access.log | cut -d: -f1,2 | sort | uniq -c
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Step 6: Follow live logs
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
tail -f logfile.log # follow
|
|
91
|
+
tail -f logfile.log | grep -i error # follow with filter
|
|
92
|
+
journalctl -f -u service-name # follow systemd service
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Step 7: Application stack traces
|
|
96
|
+
|
|
97
|
+
For multi-line stack traces (Java, Python, Node.js):
|
|
98
|
+
```
|
|
99
|
+
# Python tracebacks
|
|
100
|
+
grep -A 20 "Traceback" logfile.log | head -100
|
|
101
|
+
|
|
102
|
+
# Node.js errors
|
|
103
|
+
grep -A 10 "Error:" logfile.log | head -100
|
|
104
|
+
|
|
105
|
+
# Java exceptions
|
|
106
|
+
grep -A 15 "Exception" logfile.log | head -100
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Step 8: Large log files
|
|
110
|
+
|
|
111
|
+
For files too large to read entirely:
|
|
112
|
+
```
|
|
113
|
+
wc -l logfile.log # count lines
|
|
114
|
+
head -100 logfile.log # first 100 lines
|
|
115
|
+
tail -500 logfile.log # last 500 lines
|
|
116
|
+
grep -n "keyword" logfile.log | head -20 # find line numbers, then read_file with offset
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Output format
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
LOG ANALYSIS: /var/log/nginx/error.log (last 24h)
|
|
123
|
+
|
|
124
|
+
SUMMARY
|
|
125
|
+
Total log lines: 84,312
|
|
126
|
+
Error lines: 1,247 (1.5%)
|
|
127
|
+
Time range: 2024-01-14 14:00 → 2024-01-15 14:00
|
|
128
|
+
|
|
129
|
+
TOP ERRORS (by frequency)
|
|
130
|
+
847× "connect() failed (111: Connection refused) while connecting to upstream"
|
|
131
|
+
→ App server on :3000 was unreachable. Spikes at 02:15 and 09:45.
|
|
132
|
+
312× "open() failed (13: Permission denied) while reading upstream response header"
|
|
133
|
+
→ File permission issue. All from same endpoint: /api/export
|
|
134
|
+
88× "upstream timed out (110: Connection timed out)"
|
|
135
|
+
→ Occasional timeouts. Check if correlated with high load periods.
|
|
136
|
+
|
|
137
|
+
TIMELINE
|
|
138
|
+
02:15-02:22 — 847 connection refused errors. App server crash/restart?
|
|
139
|
+
09:45-09:47 — Another spike of 120 connection errors. Investigate restart cycle.
|
|
140
|
+
|
|
141
|
+
RECOMMENDED INVESTIGATION
|
|
142
|
+
1. Check what happened at 02:15 — look at app logs: journalctl -u myapp --since "02:10" --until "02:30"
|
|
143
|
+
2. Fix file permissions for /api/export endpoint
|
|
144
|
+
3. Set up process supervisor (systemd) to auto-restart app on crash
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Pitfalls
|
|
148
|
+
|
|
149
|
+
- Log timestamps may be in UTC — convert to local time before presenting to user
|
|
150
|
+
- Large log files: don't try to read them entirely — sample and search
|
|
151
|
+
- Some errors are expected/benign — distinguish new errors from known background noise
|
|
152
|
+
- Rotating logs: `logfile.log.1`, `.gz` files may contain relevant history; check if needed
|
|
153
|
+
|
|
154
|
+
## Verification
|
|
155
|
+
|
|
156
|
+
After identifying an error: confirm the error is real by reading the surrounding context (not just the error line in isolation).
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: marketing
|
|
3
|
+
version: 1
|
|
4
|
+
category: business
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Marketing & Growth
|
|
8
|
+
|
|
9
|
+
Content strategy, copywriting, SEO analysis, campaign planning, and audience development.
|
|
10
|
+
|
|
11
|
+
## When to use this skill
|
|
12
|
+
|
|
13
|
+
- User wants to write marketing copy, ads, or promotional content
|
|
14
|
+
- User wants to develop a content strategy or editorial calendar
|
|
15
|
+
- User wants to analyze or improve SEO for a page or site
|
|
16
|
+
- User wants to plan a launch, campaign, or growth initiative
|
|
17
|
+
- User asks about audience, positioning, messaging, or brand voice
|
|
18
|
+
- User mentions "marketing", "copy", "SEO", "campaign", "launch", "audience", "growth"
|
|
19
|
+
|
|
20
|
+
## Core Marketing Frameworks
|
|
21
|
+
|
|
22
|
+
### Positioning statement
|
|
23
|
+
|
|
24
|
+
Before writing any copy, establish positioning:
|
|
25
|
+
```
|
|
26
|
+
For [target audience], [product] is the [category] that [key benefit]
|
|
27
|
+
because [reason to believe].
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Ask the user for this if they haven't articulated it. All copy flows from clear positioning.
|
|
31
|
+
|
|
32
|
+
### Message hierarchy
|
|
33
|
+
|
|
34
|
+
1. **Primary message** — the single most important thing to communicate
|
|
35
|
+
2. **Supporting messages** — 3-5 proof points or benefits
|
|
36
|
+
3. **Call to action** — what you want the reader to do next
|
|
37
|
+
|
|
38
|
+
Keep this hierarchy in mind for every piece of content.
|
|
39
|
+
|
|
40
|
+
## Procedure
|
|
41
|
+
|
|
42
|
+
### Writing marketing copy
|
|
43
|
+
|
|
44
|
+
**Before writing, gather:**
|
|
45
|
+
- Target audience (who specifically is this for?)
|
|
46
|
+
- Key benefit (what's the most compelling reason to care?)
|
|
47
|
+
- Tone (professional, casual, bold, warm?)
|
|
48
|
+
- Constraints (character limits, format requirements)
|
|
49
|
+
- Existing examples (what does the user like?)
|
|
50
|
+
|
|
51
|
+
**Copy formula — AIDA:**
|
|
52
|
+
- **Attention**: Hook that stops the scroll
|
|
53
|
+
- **Interest**: Why this matters to them
|
|
54
|
+
- **Desire**: Paint the picture of a better outcome
|
|
55
|
+
- **Action**: Clear, specific CTA
|
|
56
|
+
|
|
57
|
+
**Headline writing:**
|
|
58
|
+
- Lead with the benefit, not the feature
|
|
59
|
+
- Use numbers when possible ("5 ways to...", "3x faster")
|
|
60
|
+
- Create curiosity gaps or specificity
|
|
61
|
+
- Write 5-10 options and evaluate
|
|
62
|
+
|
|
63
|
+
### SEO analysis
|
|
64
|
+
|
|
65
|
+
Analyze a page's SEO health:
|
|
66
|
+
```
|
|
67
|
+
fetch_url("https://example.com/page")
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Check for:
|
|
71
|
+
- Title tag: 50-60 chars, includes primary keyword
|
|
72
|
+
- Meta description: 150-160 chars, compelling with keyword
|
|
73
|
+
- H1: present, includes keyword, matches search intent
|
|
74
|
+
- URL structure: clean, descriptive, keyword-included
|
|
75
|
+
- Content: keyword used naturally, comprehensive topic coverage
|
|
76
|
+
- Internal links: to related content
|
|
77
|
+
- Image alt text: descriptive with keyword where natural
|
|
78
|
+
- Page speed: check for large images or blocking scripts
|
|
79
|
+
|
|
80
|
+
For keyword research, search:
|
|
81
|
+
```
|
|
82
|
+
web_search("keyword research tool free")
|
|
83
|
+
web_search("[topic] keyword volume search intent")
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Content strategy
|
|
87
|
+
|
|
88
|
+
**For a content calendar, identify:**
|
|
89
|
+
1. Content pillars (3-5 main topics you'll own)
|
|
90
|
+
2. Content types (blog, video, social, email, etc.)
|
|
91
|
+
3. Publishing cadence (realistic for the team)
|
|
92
|
+
4. Distribution channels (where the audience lives)
|
|
93
|
+
|
|
94
|
+
**Content ideas by intent:**
|
|
95
|
+
- Awareness: "What is X", "Why X matters", trend pieces
|
|
96
|
+
- Consideration: "How to choose", comparisons, case studies
|
|
97
|
+
- Decision: testimonials, demos, free trials, pricing
|
|
98
|
+
|
|
99
|
+
### Campaign planning
|
|
100
|
+
|
|
101
|
+
**Campaign structure:**
|
|
102
|
+
1. **Objective** — what measurable outcome (signups, revenue, awareness)?
|
|
103
|
+
2. **Target segment** — exactly who?
|
|
104
|
+
3. **Core offer** — what are we giving them?
|
|
105
|
+
4. **Channels** — where will we reach them?
|
|
106
|
+
5. **Messaging** — primary message per channel
|
|
107
|
+
6. **Timeline** — pre-launch, launch, follow-up phases
|
|
108
|
+
7. **Success metrics** — how will we know it worked?
|
|
109
|
+
|
|
110
|
+
### Social media copy
|
|
111
|
+
|
|
112
|
+
Platform-specific guidance:
|
|
113
|
+
- **LinkedIn**: Professional tone, insights over promotion, longer posts work well, add relevant hashtags (3-5)
|
|
114
|
+
- **Twitter/X**: Punchy, opinionated, conversational; threads for depth; 1-2 hashtags max
|
|
115
|
+
- **Instagram**: Story-first, visual-led, caption reinforces image; use all 30 hashtags in first comment
|
|
116
|
+
- **Email newsletter**: Clear subject line, personal tone, single clear CTA per email
|
|
117
|
+
|
|
118
|
+
## Output format
|
|
119
|
+
|
|
120
|
+
**Copy deliverables:** provide multiple variations (at least 3) so the user can choose and refine.
|
|
121
|
+
|
|
122
|
+
**Strategy documents:** use clear headers, bullet points, and concrete examples. Avoid vague advice.
|
|
123
|
+
|
|
124
|
+
**Campaign plans:** structured table or numbered list with owner, deadline, and metric per item.
|
|
125
|
+
|
|
126
|
+
## Pitfalls
|
|
127
|
+
|
|
128
|
+
- Don't write copy before understanding the audience — generic copy doesn't convert
|
|
129
|
+
- Avoid jargon and superlatives ("best", "revolutionary", "world-class") — be specific instead
|
|
130
|
+
- More features ≠ better copy. Focus on the one benefit that matters most to this audience
|
|
131
|
+
- SEO: don't keyword-stuff. Write for humans first, optimize for search second
|
|
132
|
+
- Marketing claims should be accurate — don't overstate capabilities or outcomes
|
|
133
|
+
- Always check if there are brand guidelines or existing voice/tone docs before writing
|
|
134
|
+
|
|
135
|
+
## Verification
|
|
136
|
+
|
|
137
|
+
**Copy:** read it aloud — if it sounds stiff or unnatural, revise it.
|
|
138
|
+
**SEO recommendations:** verify with `fetch_url` after changes to confirm implementation.
|
|
139
|
+
**Campaign plan:** confirm every item has an owner and a measurable success metric.
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: image-manipulation-image-magick
|
|
3
|
+
description: Process and manipulate images using ImageMagick. Supports resizing, format conversion, batch processing, and retrieving image metadata. Use when working with images, creating thumbnails, resizing wallpapers, or performing batch image operations.
|
|
4
|
+
compatibility: Requires ImageMagick installed and available as `magick` on PATH. Cross-platform examples provided for PowerShell (Windows) and Bash (Linux/macOS).
|
|
5
|
+
category: media
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Image Manipulation with ImageMagick
|
|
9
|
+
|
|
10
|
+
This skill enables image processing and manipulation tasks using ImageMagick
|
|
11
|
+
across Windows, Linux, and macOS systems.
|
|
12
|
+
|
|
13
|
+
## When to Use This Skill
|
|
14
|
+
|
|
15
|
+
Use this skill when you need to:
|
|
16
|
+
|
|
17
|
+
- Resize images (single or batch)
|
|
18
|
+
- Get image dimensions and metadata
|
|
19
|
+
- Convert between image formats
|
|
20
|
+
- Create thumbnails
|
|
21
|
+
- Process wallpapers for different screen sizes
|
|
22
|
+
- Batch process multiple images with specific criteria
|
|
23
|
+
|
|
24
|
+
## Prerequisites
|
|
25
|
+
|
|
26
|
+
- ImageMagick installed on the system
|
|
27
|
+
- **Windows**: PowerShell with ImageMagick available as `magick` (or at `C:\Program Files\ImageMagick-*\magick.exe`)
|
|
28
|
+
- **Linux/macOS**: Bash with ImageMagick installed via package manager (`apt`, `brew`, etc.)
|
|
29
|
+
|
|
30
|
+
## Core Capabilities
|
|
31
|
+
|
|
32
|
+
### 1. Image Information
|
|
33
|
+
|
|
34
|
+
- Get image dimensions (width x height)
|
|
35
|
+
- Retrieve detailed metadata (format, color space, etc.)
|
|
36
|
+
- Identify image format
|
|
37
|
+
|
|
38
|
+
### 2. Image Resizing
|
|
39
|
+
|
|
40
|
+
- Resize single images
|
|
41
|
+
- Batch resize multiple images
|
|
42
|
+
- Create thumbnails with specific dimensions
|
|
43
|
+
- Maintain aspect ratios
|
|
44
|
+
|
|
45
|
+
### 3. Batch Processing
|
|
46
|
+
|
|
47
|
+
- Process images based on dimensions
|
|
48
|
+
- Filter and process specific file types
|
|
49
|
+
- Apply transformations to multiple files
|
|
50
|
+
|
|
51
|
+
## Usage Examples
|
|
52
|
+
|
|
53
|
+
### Example 0: Resolve `magick` executable
|
|
54
|
+
|
|
55
|
+
**PowerShell (Windows):**
|
|
56
|
+
```powershell
|
|
57
|
+
# Prefer ImageMagick on PATH
|
|
58
|
+
$magick = (Get-Command magick -ErrorAction SilentlyContinue)?.Source
|
|
59
|
+
|
|
60
|
+
# Fallback: common install pattern under Program Files
|
|
61
|
+
if (-not $magick) {
|
|
62
|
+
$magick = Get-ChildItem "C:\\Program Files\\ImageMagick-*\\magick.exe" -ErrorAction SilentlyContinue |
|
|
63
|
+
Select-Object -First 1 -ExpandProperty FullName
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (-not $magick) {
|
|
67
|
+
throw "ImageMagick not found. Install it and/or add 'magick' to PATH."
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Bash (Linux/macOS):**
|
|
72
|
+
```bash
|
|
73
|
+
# Check if magick is available on PATH
|
|
74
|
+
if ! command -v magick &> /dev/null; then
|
|
75
|
+
echo "ImageMagick not found. Install it using your package manager:"
|
|
76
|
+
echo " Ubuntu/Debian: sudo apt install imagemagick"
|
|
77
|
+
echo " macOS: brew install imagemagick"
|
|
78
|
+
exit 1
|
|
79
|
+
fi
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Example 1: Get Image Dimensions
|
|
83
|
+
|
|
84
|
+
**PowerShell (Windows):**
|
|
85
|
+
```powershell
|
|
86
|
+
# For a single image
|
|
87
|
+
& $magick identify -format "%wx%h" path/to/image.jpg
|
|
88
|
+
|
|
89
|
+
# For multiple images
|
|
90
|
+
Get-ChildItem "path/to/images/*" | ForEach-Object {
|
|
91
|
+
$dimensions = & $magick identify -format "%f: %wx%h`n" $_.FullName
|
|
92
|
+
Write-Host $dimensions
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Bash (Linux/macOS):**
|
|
97
|
+
```bash
|
|
98
|
+
# For a single image
|
|
99
|
+
magick identify -format "%wx%h" path/to/image.jpg
|
|
100
|
+
|
|
101
|
+
# For multiple images
|
|
102
|
+
for img in path/to/images/*; do
|
|
103
|
+
magick identify -format "%f: %wx%h\n" "$img"
|
|
104
|
+
done
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Example 2: Resize Images
|
|
108
|
+
|
|
109
|
+
**PowerShell (Windows):**
|
|
110
|
+
```powershell
|
|
111
|
+
# Resize a single image
|
|
112
|
+
& $magick input.jpg -resize 427x240 output.jpg
|
|
113
|
+
|
|
114
|
+
# Batch resize images
|
|
115
|
+
Get-ChildItem "path/to/images/*" | ForEach-Object {
|
|
116
|
+
& $magick $_.FullName -resize 427x240 "path/to/output/thumb_$($_.Name)"
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Bash (Linux/macOS):**
|
|
121
|
+
```bash
|
|
122
|
+
# Resize a single image
|
|
123
|
+
magick input.jpg -resize 427x240 output.jpg
|
|
124
|
+
|
|
125
|
+
# Batch resize images
|
|
126
|
+
for img in path/to/images/*; do
|
|
127
|
+
filename=$(basename "$img")
|
|
128
|
+
magick "$img" -resize 427x240 "path/to/output/thumb_$filename"
|
|
129
|
+
done
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### Example 3: Get Detailed Image Information
|
|
133
|
+
|
|
134
|
+
**PowerShell (Windows):**
|
|
135
|
+
```powershell
|
|
136
|
+
# Get verbose information about an image
|
|
137
|
+
& $magick identify -verbose path/to/image.jpg
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**Bash (Linux/macOS):**
|
|
141
|
+
```bash
|
|
142
|
+
# Get verbose information about an image
|
|
143
|
+
magick identify -verbose path/to/image.jpg
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Example 4: Process Images Based on Dimensions
|
|
147
|
+
|
|
148
|
+
**PowerShell (Windows):**
|
|
149
|
+
```powershell
|
|
150
|
+
Get-ChildItem "path/to/images/*" | ForEach-Object {
|
|
151
|
+
$dimensions = & $magick identify -format "%w,%h" $_.FullName
|
|
152
|
+
if ($dimensions) {
|
|
153
|
+
$width,$height = $dimensions -split ','
|
|
154
|
+
if ([int]$width -eq 2560 -or [int]$height -eq 1440) {
|
|
155
|
+
Write-Host "Processing $($_.Name)"
|
|
156
|
+
& $magick $_.FullName -resize 427x240 "path/to/output/thumb_$($_.Name)"
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Bash (Linux/macOS):**
|
|
163
|
+
```bash
|
|
164
|
+
for img in path/to/images/*; do
|
|
165
|
+
dimensions=$(magick identify -format "%w,%h" "$img")
|
|
166
|
+
if [[ -n "$dimensions" ]]; then
|
|
167
|
+
width=$(echo "$dimensions" | cut -d',' -f1)
|
|
168
|
+
height=$(echo "$dimensions" | cut -d',' -f2)
|
|
169
|
+
if [[ "$width" -eq 2560 || "$height" -eq 1440 ]]; then
|
|
170
|
+
filename=$(basename "$img")
|
|
171
|
+
echo "Processing $filename"
|
|
172
|
+
magick "$img" -resize 427x240 "path/to/output/thumb_$filename"
|
|
173
|
+
fi
|
|
174
|
+
fi
|
|
175
|
+
done
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Guidelines
|
|
179
|
+
|
|
180
|
+
1. **Always quote file paths** - Use quotes around file paths that might contain spaces
|
|
181
|
+
2. **Use the `&` operator (PowerShell)** - Invoke the magick executable using `&` in PowerShell
|
|
182
|
+
3. **Store the path in a variable (PowerShell)** - Assign the ImageMagick path to `$magick` for cleaner code
|
|
183
|
+
4. **Wrap in loops** - When processing multiple files, use `ForEach-Object` (PowerShell) or `for` loops (Bash)
|
|
184
|
+
5. **Verify dimensions first** - Check image dimensions before processing to avoid unnecessary operations
|
|
185
|
+
6. **Use appropriate resize flags** - Consider using `!` to force exact dimensions or `^` for minimum dimensions
|
|
186
|
+
|
|
187
|
+
## Common Patterns
|
|
188
|
+
|
|
189
|
+
### PowerShell Patterns
|
|
190
|
+
|
|
191
|
+
#### Pattern: Store ImageMagick Path
|
|
192
|
+
|
|
193
|
+
```powershell
|
|
194
|
+
$magick = (Get-Command magick).Source
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
#### Pattern: Get Dimensions as Variables
|
|
198
|
+
|
|
199
|
+
```powershell
|
|
200
|
+
$dimensions = & $magick identify -format "%w,%h" $_.FullName
|
|
201
|
+
$width,$height = $dimensions -split ','
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
#### Pattern: Conditional Processing
|
|
205
|
+
|
|
206
|
+
```powershell
|
|
207
|
+
if ([int]$width -gt 1920) {
|
|
208
|
+
& $magick $_.FullName -resize 1920x1080 $outputPath
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
#### Pattern: Create Thumbnails
|
|
213
|
+
|
|
214
|
+
```powershell
|
|
215
|
+
& $magick $_.FullName -resize 427x240 "thumbnails/thumb_$($_.Name)"
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Bash Patterns
|
|
219
|
+
|
|
220
|
+
#### Pattern: Check ImageMagick Installation
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
command -v magick &> /dev/null || { echo "ImageMagick required"; exit 1; }
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
#### Pattern: Get Dimensions as Variables
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
dimensions=$(magick identify -format "%w,%h" "$img")
|
|
230
|
+
width=$(echo "$dimensions" | cut -d',' -f1)
|
|
231
|
+
height=$(echo "$dimensions" | cut -d',' -f2)
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
#### Pattern: Conditional Processing
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
if [[ "$width" -gt 1920 ]]; then
|
|
238
|
+
magick "$img" -resize 1920x1080 "$outputPath"
|
|
239
|
+
fi
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
#### Pattern: Create Thumbnails
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
filename=$(basename "$img")
|
|
246
|
+
magick "$img" -resize 427x240 "thumbnails/thumb_$filename"
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
## Limitations
|
|
250
|
+
|
|
251
|
+
- Large batch operations may be memory-intensive
|
|
252
|
+
- Some complex operations may require additional ImageMagick delegates
|
|
253
|
+
- On older Linux systems, use `convert` instead of `magick` (ImageMagick 6.x vs 7.x)
|