@hasna/skills 0.1.26 → 0.1.29
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/LICENSE +1 -10
- package/README.md +141 -39
- package/bin/index.js +30122 -27575
- package/bin/mcp.js +22112 -18593
- package/dist/cli/cli.test-utils.d.ts +15 -0
- package/dist/cli/commands/auth.d.ts +2 -0
- package/dist/cli/commands/install.d.ts +1 -1
- package/dist/cli/commands/runtime-mcp.d.ts +4 -0
- package/dist/index.d.ts +9 -4
- package/dist/index.js +11607 -597
- package/dist/lib/auth-store.d.ts +13 -0
- package/dist/lib/installer.d.ts +58 -55
- package/dist/lib/mcp-contracts.d.ts +86 -0
- package/dist/lib/project-state.d.ts +43 -0
- package/dist/lib/registry-data/business-marketing.d.ts +2 -0
- package/dist/lib/registry-data/communication.d.ts +2 -0
- package/dist/lib/registry-data/content-generation.d.ts +2 -0
- package/dist/lib/registry-data/data-analysis.d.ts +2 -0
- package/dist/lib/registry-data/design-branding.d.ts +2 -0
- package/dist/lib/registry-data/development-tools.d.ts +2 -0
- package/dist/lib/registry-data/education-learning.d.ts +2 -0
- package/dist/lib/registry-data/event-management.d.ts +2 -0
- package/dist/lib/registry-data/finance-compliance.d.ts +2 -0
- package/dist/lib/registry-data/health-wellness.d.ts +2 -0
- package/dist/lib/registry-data/index.d.ts +2 -0
- package/dist/lib/registry-data/media-processing.d.ts +2 -0
- package/dist/lib/registry-data/productivity-organization.d.ts +2 -0
- package/dist/lib/registry-data/project-management.d.ts +2 -0
- package/dist/lib/registry-data/research-writing.d.ts +2 -0
- package/dist/lib/registry-data/science-academic.d.ts +2 -0
- package/dist/lib/registry-data/travel-lifestyle.d.ts +2 -0
- package/dist/lib/registry-data/web-browser.d.ts +2 -0
- package/dist/lib/registry-types.d.ts +27 -0
- package/dist/lib/registry.d.ts +6 -18
- package/dist/lib/remote-registry.d.ts +3 -0
- package/dist/lib/run-state.d.ts +60 -0
- package/dist/lib/skill-aliases.d.ts +17 -0
- package/dist/lib/skillinfo.d.ts +5 -1
- package/dist/mcp/discovery-tools.d.ts +2 -0
- package/dist/mcp/helpers.d.ts +26 -0
- package/dist/mcp/http.d.ts +10 -0
- package/dist/mcp/index.d.ts +3 -2
- package/dist/mcp/operation-tools.d.ts +2 -0
- package/dist/mcp/resource-meta-tools.d.ts +2 -0
- package/dist/mcp/schedule-tools.d.ts +2 -0
- package/dist/mcp/server.d.ts +4 -0
- package/dist/types/api.d.ts +7 -4
- package/package.json +23 -10
- package/skills/_common/http-client.ts +1 -1
- package/skills/_common/index.ts +2 -3
- package/skills/_common/install.sh +5 -110
- package/skills/_common/installer.ts +31 -282
- package/skills/_common/skill-install.ts +14 -181
- package/skills/ad-creative-pack/SKILL.md +45 -0
- package/skills/ad-creative-pack/package.json +14 -0
- package/skills/advanced-math/package.json +3 -1
- package/skills/advanced-math/src/calculators.ts +118 -0
- package/skills/advanced-math/src/cli.ts +130 -0
- package/skills/advanced-math/src/conversion.ts +90 -0
- package/skills/advanced-math/src/finance.ts +75 -0
- package/skills/advanced-math/src/formatting.ts +95 -0
- package/skills/advanced-math/src/index.ts +24 -702
- package/skills/advanced-math/src/runtime.ts +49 -0
- package/skills/advanced-math/src/symbolic.ts +110 -0
- package/skills/advanced-math/src/types.ts +36 -0
- package/skills/analyze-data/SKILL.md +2 -2
- package/skills/analyze-data/src/analysis.ts +401 -0
- package/skills/analyze-data/src/cli.ts +66 -0
- package/skills/analyze-data/src/formatters.ts +235 -0
- package/skills/analyze-data/src/index.ts +6 -1027
- package/skills/analyze-data/src/logger.ts +36 -0
- package/skills/analyze-data/src/parsers.ts +57 -0
- package/skills/analyze-data/src/stats.ts +151 -0
- package/skills/analyze-data/src/types.ts +85 -0
- package/skills/api-docs-portal/SKILL.md +46 -0
- package/skills/api-docs-portal/package.json +9 -0
- package/skills/api-test-suite/src/index.ts +13 -0
- package/skills/apidocs/package.json +1 -1
- package/skills/apidocs/src/index.ts +3 -0
- package/skills/audio/package.json +2 -3
- package/skills/audio-cleanup-lab/SKILL.md +2 -2
- package/skills/audio-extract/CLAUDE.md +1 -1
- package/skills/audio-transcript-pack/SKILL.md +43 -0
- package/skills/audio-transcript-pack/package.json +10 -0
- package/skills/blog-article/CLAUDE.md +12 -0
- package/skills/blog-article/SKILL.md +45 -0
- package/skills/{create-blog-article → blog-article}/package.json +3 -3
- package/skills/brand-kit/SKILL.md +45 -0
- package/skills/brand-kit/package.json +14 -0
- package/skills/brand-photo-shoot/SKILL.md +28 -0
- package/skills/brand-photo-shoot/package.json +10 -0
- package/skills/brand-style-guide/SKILL.md +2 -2
- package/skills/brand-style-guide/src/index.ts +0 -0
- package/skills/budget-variance-analyzer/SKILL.md +2 -2
- package/skills/businessactivity/package.json +1 -1
- package/skills/businessactivity/src/index.ts +3 -0
- package/skills/calendar-events/src/ai-parser.ts +103 -0
- package/skills/calendar-events/src/api.ts +157 -0
- package/skills/calendar-events/src/auth.ts +22 -0
- package/skills/calendar-events/src/config.ts +6 -0
- package/skills/calendar-events/src/format.ts +96 -0
- package/skills/calendar-events/src/help.ts +54 -0
- package/skills/calendar-events/src/index.ts +21 -524
- package/skills/calendar-events/src/logger.ts +34 -0
- package/skills/calendar-events/src/types.ts +67 -0
- package/skills/compress-video/SKILL.md +2 -2
- package/skills/consolelog/package.json +1 -1
- package/skills/consolelog/src/index.ts +3 -0
- package/skills/contract-review-report/SKILL.md +43 -0
- package/skills/contract-review-report/package.json +10 -0
- package/skills/convert/SKILL.md +2 -3
- package/skills/customer-feedback-report/SKILL.md +44 -0
- package/skills/customer-feedback-report/package.json +10 -0
- package/skills/dashboard-builder/package.json +3 -1
- package/skills/database-explorer/package.json +3 -1
- package/skills/deepresearch/README.md +4 -13
- package/skills/deploy/src/http-client.ts +1 -1
- package/skills/diff-viewer/package.json +4 -1
- package/skills/doc-generate/package.json +0 -1
- package/skills/doc-generate/src/ai.ts +50 -0
- package/skills/doc-generate/src/cli.ts +203 -0
- package/skills/doc-generate/src/dependencies.ts +44 -0
- package/skills/doc-generate/src/document-builder.ts +299 -0
- package/skills/doc-generate/src/index.ts +40 -764
- package/skills/doc-generate/src/markdown-parser.ts +125 -0
- package/skills/doc-generate/src/types.ts +68 -0
- package/skills/domainpurchase/SKILL.md +1 -1
- package/skills/domainpurchase/package.json +1 -1
- package/skills/domainpurchase/src/index.ts +3 -0
- package/skills/domainsearch/SKILL.md +1 -1
- package/skills/domainsearch/package.json +1 -1
- package/skills/domainsearch/src/index.ts +3 -0
- package/skills/email-sequence/SKILL.md +44 -0
- package/skills/email-sequence/package.json +14 -0
- package/skills/excel/CLAUDE.md +2 -2
- package/skills/experiment-power-calculator/package.json +3 -1
- package/skills/extract-invoice/src/cli.ts +97 -0
- package/skills/extract-invoice/src/extractor.ts +170 -0
- package/skills/extract-invoice/src/file-utils.ts +46 -0
- package/skills/extract-invoice/src/formatters.ts +144 -0
- package/skills/extract-invoice/src/index.ts +44 -629
- package/skills/extract-invoice/src/runtime.ts +46 -0
- package/skills/extract-invoice/src/types.ts +88 -0
- package/skills/folder-tree/package.json +3 -1
- package/skills/form-filler/package.json +3 -1
- package/skills/generate-api-client/package.json +3 -1
- package/skills/generate-api-client/src/generator.ts +47 -0
- package/skills/generate-api-client/src/index.ts +3 -777
- package/skills/generate-api-client/src/logger.ts +34 -0
- package/skills/generate-api-client/src/python-generator.ts +245 -0
- package/skills/generate-api-client/src/spec-loader.ts +48 -0
- package/skills/generate-api-client/src/type-mappers.ts +79 -0
- package/skills/generate-api-client/src/types.ts +76 -0
- package/skills/generate-api-client/src/typescript-generator.ts +247 -0
- package/skills/generate-book-cover/package.json +3 -1
- package/skills/generate-dockerfile/src/cli.ts +78 -0
- package/skills/generate-dockerfile/src/dockerfile-templates.ts +392 -0
- package/skills/generate-dockerfile/src/index.ts +12 -790
- package/skills/generate-dockerfile/src/logger.ts +30 -0
- package/skills/generate-dockerfile/src/project-detection.ts +68 -0
- package/skills/generate-dockerfile/src/support-files.ts +171 -0
- package/skills/generate-dockerfile/src/types.ts +29 -0
- package/skills/generate-documentation/src/ai.ts +131 -0
- package/skills/generate-documentation/src/cli.ts +71 -0
- package/skills/generate-documentation/src/code-parser.ts +300 -0
- package/skills/generate-documentation/src/file-processing.ts +182 -0
- package/skills/generate-documentation/src/index.ts +13 -753
- package/skills/generate-documentation/src/runtime.ts +35 -0
- package/skills/generate-documentation/src/types.ts +30 -0
- package/skills/generate-env/package.json +3 -1
- package/skills/generate-env/src/cli.ts +85 -0
- package/skills/generate-env/src/detection.ts +161 -0
- package/skills/generate-env/src/env-data.ts +66 -0
- package/skills/generate-env/src/generators.ts +240 -0
- package/skills/generate-env/src/index.ts +76 -676
- package/skills/generate-env/src/runtime.ts +30 -0
- package/skills/generate-env/src/types.ts +32 -0
- package/skills/generate-favicon/package.json +3 -1
- package/skills/generate-mock-data/package.json +3 -1
- package/skills/generate-mock-data/src/ai.ts +102 -0
- package/skills/generate-mock-data/src/formatters.ts +84 -0
- package/skills/generate-mock-data/src/generator.ts +377 -0
- package/skills/generate-mock-data/src/index.ts +15 -716
- package/skills/generate-mock-data/src/logger.ts +37 -0
- package/skills/generate-mock-data/src/presets.ts +110 -0
- package/skills/generate-mock-data/src/types.ts +21 -0
- package/skills/generate-pr-description/src/ai.ts +144 -0
- package/skills/generate-pr-description/src/cli.ts +80 -0
- package/skills/generate-pr-description/src/clipboard.ts +30 -0
- package/skills/generate-pr-description/src/formatters.ts +231 -0
- package/skills/generate-pr-description/src/git.ts +153 -0
- package/skills/generate-pr-description/src/index.ts +21 -714
- package/skills/generate-pr-description/src/types.ts +49 -0
- package/skills/generate-presentation/src/ai-clients.ts +61 -0
- package/skills/generate-presentation/src/cli.ts +126 -0
- package/skills/generate-presentation/src/index.ts +3 -751
- package/skills/generate-presentation/src/logger.ts +67 -0
- package/skills/generate-presentation/src/presentation-generator.ts +425 -0
- package/skills/generate-presentation/src/runtime.ts +6 -0
- package/skills/generate-presentation/src/security.ts +12 -0
- package/skills/generate-presentation/src/types.ts +28 -0
- package/skills/generate-qrcode/package.json +4 -1
- package/skills/generate-regex/package.json +3 -1
- package/skills/generate-resume/src/cli.ts +157 -0
- package/skills/generate-resume/src/index.ts +13 -917
- package/skills/generate-resume/src/parsers.ts +95 -0
- package/skills/generate-resume/src/renderers.ts +538 -0
- package/skills/generate-resume/src/security.ts +39 -0
- package/skills/generate-resume/src/types.ts +86 -0
- package/skills/generate-social-posts/src/ai.ts +88 -0
- package/skills/generate-social-posts/src/cli.ts +118 -0
- package/skills/generate-social-posts/src/exporters.ts +126 -0
- package/skills/generate-social-posts/src/generator.ts +130 -0
- package/skills/generate-social-posts/src/index.ts +19 -709
- package/skills/generate-social-posts/src/platforms.ts +39 -0
- package/skills/generate-social-posts/src/runtime.ts +34 -0
- package/skills/generate-social-posts/src/source.ts +116 -0
- package/skills/generate-social-posts/src/types.ts +58 -0
- package/skills/gif-maker/package.json +4 -1
- package/skills/github-manager/package.json +3 -1
- package/skills/gmail/CLAUDE.md +1 -1
- package/skills/highlight-reel-generator/src/index.ts +19 -0
- package/skills/hook/src/commands/create.ts +20 -845
- package/skills/hook/src/templates/root.ts +196 -0
- package/skills/hook/src/templates/source.ts +647 -0
- package/skills/http-server/package.json +3 -1
- package/skills/icon-pack/README.md +28 -0
- package/skills/icon-pack/SKILL.md +23 -0
- package/skills/icon-pack/package.json +29 -0
- package/skills/{audio → icon-pack}/tsconfig.json +10 -12
- package/skills/image/package.json +1 -2
- package/skills/implementation-agent/package.json +3 -1
- package/skills/implementation-agent/src/ai-generation.ts +225 -0
- package/skills/implementation-agent/src/index.ts +3 -960
- package/skills/implementation-agent/src/minimist.d.ts +15 -0
- package/skills/implementation-agent/src/templates.ts +686 -0
- package/skills/implementation-agent/src/types.ts +53 -0
- package/skills/implementation-plan/package.json +3 -1
- package/skills/implementation-todo/package.json +3 -1
- package/skills/invoice/package.json +1 -1
- package/skills/invoice/src/index.ts +3 -0
- package/skills/invoice-reconciliation/SKILL.md +42 -0
- package/skills/invoice-reconciliation/package.json +10 -0
- package/skills/landing-page-pack/SKILL.md +47 -0
- package/skills/landing-page-pack/package.json +14 -0
- package/skills/latex-table-generator/package.json +3 -1
- package/skills/logo-design/SKILL.md +25 -44
- package/skills/logo-design/package.json +3 -15
- package/skills/lorem-generator/package.json +3 -1
- package/skills/lorem-generator/src/index.ts +13 -0
- package/skills/managehook/package.json +1 -1
- package/skills/managehook/src/index.ts +3 -0
- package/skills/managemcp/package.json +1 -1
- package/skills/managemcp/src/index.ts +3 -0
- package/skills/manageskill/package.json +1 -1
- package/skills/manageskill/src/index.ts +3 -0
- package/skills/markdown-validator/package.json +3 -1
- package/skills/markdown-validator/src/index.ts +1 -4
- package/skills/market-research-report/SKILL.md +41 -0
- package/skills/market-research-report/package.json +10 -0
- package/skills/mcp-builder/package.json +4 -1
- package/skills/mcp-builder/src/ai-descriptions.ts +37 -0
- package/skills/mcp-builder/src/generators.ts +513 -0
- package/skills/mcp-builder/src/index.ts +7 -908
- package/skills/mcp-builder/src/minimist.d.ts +15 -0
- package/skills/mcp-builder/src/naming.ts +12 -0
- package/skills/mcp-builder/src/options.ts +170 -0
- package/skills/mcp-builder/src/templates.ts +149 -0
- package/skills/mcp-builder/src/types.ts +42 -0
- package/skills/meeting-pack/SKILL.md +43 -0
- package/skills/meeting-pack/package.json +10 -0
- package/skills/merge-pdfs/package.json +5 -1
- package/skills/migration-plan-pack/SKILL.md +45 -0
- package/skills/migration-plan-pack/package.json +10 -0
- package/skills/music/package.json +2 -3
- package/skills/music-album/SKILL.md +37 -0
- package/skills/music-album/package.json +10 -0
- package/skills/notion-manager/package.json +3 -1
- package/skills/npmpublish/CLAUDE.md +5 -8
- package/skills/npmpublish/README.md +5 -26
- package/skills/npmpublish/src/index.ts +9 -147
- package/skills/one-page-website/SKILL.md +46 -0
- package/skills/one-page-website/package.json +10 -0
- package/skills/one-page-website/tsconfig.json +8 -0
- package/skills/pdf-generate/src/cli.ts +162 -0
- package/skills/pdf-generate/src/html.ts +84 -0
- package/skills/pdf-generate/src/index.ts +11 -800
- package/skills/pdf-generate/src/markdown.ts +27 -0
- package/skills/pdf-generate/src/pdf-writer.ts +78 -0
- package/skills/pdf-generate/src/runtime.ts +34 -0
- package/skills/pdf-generate/src/security.ts +37 -0
- package/skills/pdf-generate/src/templates.ts +311 -0
- package/skills/pdf-generate/src/types.ts +28 -0
- package/skills/pdf-read/SKILL.md +10 -10
- package/skills/pdf-to-dataset/SKILL.md +45 -0
- package/skills/pdf-to-dataset/package.json +10 -0
- package/skills/pdf-to-markdown/SKILL.md +49 -0
- package/skills/pdf-to-markdown/package.json +10 -0
- package/skills/pdf-to-markdown/tsconfig.json +10 -0
- package/skills/performance-audit-report/SKILL.md +42 -0
- package/skills/performance-audit-report/package.json +10 -0
- package/skills/persona-based-adwriter/src/index.ts +19 -0
- package/skills/photo-album/SKILL.md +29 -0
- package/skills/photo-album/package.json +9 -0
- package/skills/photo-album/tsconfig.json +4 -0
- package/skills/pitch-deck/SKILL.md +43 -0
- package/skills/pitch-deck/package.json +9 -0
- package/skills/playlist-maker/SKILL.md +33 -0
- package/skills/playlist-maker/package.json +9 -0
- package/skills/playlist-maker/tsconfig.json +4 -0
- package/skills/product-mockup/SKILL.md +45 -0
- package/skills/product-mockup/package.json +3 -20
- package/skills/product-mockup/tsconfig.json +3 -5
- package/skills/project-retro-companion/src/index.ts +19 -0
- package/skills/proposal-pack/SKILL.md +45 -0
- package/skills/proposal-pack/package.json +10 -0
- package/skills/read-pdf/SKILL.md +5 -4
- package/skills/repo-onboarding-report/SKILL.md +42 -0
- package/skills/repo-onboarding-report/package.json +10 -0
- package/skills/sales-call-recapper/src/index.ts +20 -0
- package/skills/salescopy/package.json +1 -1
- package/skills/salescopy/src/index.ts +3 -0
- package/skills/scaffold-project/src/ai-detect.ts +136 -0
- package/skills/scaffold-project/src/file-generators.ts +292 -0
- package/skills/scaffold-project/src/index.ts +8 -991
- package/skills/scaffold-project/src/project-config.ts +338 -0
- package/skills/scaffold-project/src/templates.ts +173 -0
- package/skills/scaffold-project/src/types.ts +58 -0
- package/skills/scientific-figure-check/package.json +3 -1
- package/skills/sdk-generator/SKILL.md +45 -0
- package/skills/sdk-generator/package.json +10 -0
- package/skills/sdk-generator/tsconfig.json +8 -0
- package/skills/security-audit/src/index.ts +25 -6
- package/skills/security-audit-report/SKILL.md +40 -0
- package/skills/security-audit-report/package.json +10 -0
- package/skills/seo-content-pack/SKILL.md +44 -0
- package/skills/seo-content-pack/package.json +9 -0
- package/skills/short-video-pack/SKILL.md +30 -0
- package/skills/short-video-pack/package.json +10 -0
- package/skills/slack-assistant/package.json +3 -1
- package/skills/slide-deck-generator/SKILL.md +44 -0
- package/skills/slide-deck-generator/package.json +10 -0
- package/skills/sms/package.json +1 -1
- package/skills/sms/src/index.ts +15 -0
- package/skills/social-content-calendar/SKILL.md +45 -0
- package/skills/social-content-calendar/package.json +14 -0
- package/skills/split-pdf/package.json +4 -1
- package/skills/subtitle/package.json +2 -1
- package/skills/subtitle/src/index.ts +3 -0
- package/skills/terraform-generator/package.json +3 -1
- package/skills/test-suite-generator/SKILL.md +41 -0
- package/skills/test-suite-generator/package.json +10 -0
- package/skills/timesheet/package.json +1 -1
- package/skills/timesheet/src/index.ts +3 -0
- package/skills/transcript/SKILL.md +1 -8
- package/skills/validate-config/package.json +3 -1
- package/skills/video/package.json +6 -4
- package/skills/video-downloader/package.json +3 -1
- package/skills/video-highlight-pack/SKILL.md +44 -0
- package/skills/video-highlight-pack/package.json +10 -0
- package/skills/voiceover-jingle-pack/SKILL.md +28 -0
- package/skills/voiceover-jingle-pack/package.json +10 -0
- package/skills/watermark/package.json +6 -1
- package/skills/webcrawling/package.json +2 -1
- package/skills/write/SKILL.md +6 -6
- package/dist/server/serve.d.ts +0 -11
- package/skills/apidocs/.claude/settings.json +0 -5
- package/skills/audio/.env.example +0 -14
- package/skills/audio/QUICKSTART.md +0 -158
- package/skills/audio/README.md +0 -256
- package/skills/audio/src/index-local.ts +0 -206
- package/skills/audio/src/index.ts +0 -95
- package/skills/audio/src/providers/elevenlabs.ts +0 -115
- package/skills/audio/src/providers/google.ts +0 -116
- package/skills/audio/src/providers/minimax.ts +0 -83
- package/skills/audio/src/providers/openai.ts +0 -115
- package/skills/audio/src/types.ts +0 -79
- package/skills/audiobook-chapter-proofer/CLAUDE.md +0 -19
- package/skills/audiobook-chapter-proofer/package.json +0 -27
- package/skills/audiobook-chapter-proofer/src/index.ts +0 -285
- package/skills/browse/src/client.ts +0 -373
- package/skills/browse/src/index-local.ts +0 -430
- package/skills/browse/src/index.ts +0 -110
- package/skills/browse/src/sse-server.ts +0 -919
- package/skills/browse/src/types.ts +0 -104
- package/skills/consolelog/src/server/index.ts +0 -508
- package/skills/create-blog-article/CLAUDE.md +0 -19
- package/skills/create-blog-article/src/index.ts +0 -745
- package/skills/create-blog-article/tsconfig.json +0 -10
- package/skills/deepresearch/src/agents/query-generator.ts +0 -91
- package/skills/deepresearch/src/agents/synthesizer.ts +0 -111
- package/skills/deepresearch/src/index.ts +0 -224
- package/skills/deepresearch/src/research.ts +0 -166
- package/skills/deepresearch/src/services/anthropic.ts +0 -69
- package/skills/deepresearch/src/services/exa.ts +0 -108
- package/skills/deepresearch/src/services/firecrawl.ts +0 -88
- package/skills/deepresearch/src/services/openai.ts +0 -81
- package/skills/deepresearch/src/types.ts +0 -76
- package/skills/deepresearch/src/utils/file.ts +0 -111
- package/skills/deepresearch/src/utils/logger.ts +0 -84
- package/skills/domainpurchase/src/server/index.ts +0 -332
- package/skills/domainsearch/src/server/index.ts +0 -229
- package/skills/e2bswarm/README.md +0 -135
- package/skills/e2bswarm/SKILL.md +0 -118
- package/skills/e2bswarm/examples/tasks-example.json +0 -38
- package/skills/e2bswarm/package.json +0 -59
- package/skills/e2bswarm/src/commands/collect.ts +0 -135
- package/skills/e2bswarm/src/commands/install.ts +0 -164
- package/skills/e2bswarm/src/commands/kill.ts +0 -62
- package/skills/e2bswarm/src/commands/spawn.ts +0 -134
- package/skills/e2bswarm/src/commands/status.ts +0 -90
- package/skills/e2bswarm/src/commands/sync.ts +0 -208
- package/skills/e2bswarm/src/index.ts +0 -121
- package/skills/e2bswarm/src/lib/config.ts +0 -75
- package/skills/e2bswarm/src/lib/e2b.ts +0 -490
- package/skills/e2bswarm/src/lib/github.ts +0 -253
- package/skills/e2bswarm/src/lib/logger.ts +0 -41
- package/skills/e2bswarm/src/lib/paths.ts +0 -75
- package/skills/e2bswarm/src/lib/tasks.ts +0 -320
- package/skills/e2bswarm/src/types/index.ts +0 -107
- package/skills/e2bswarm/templates/codebox/e2b.Dockerfile +0 -38
- package/skills/e2bswarm/templates/codebox/e2b.toml +0 -3
- package/skills/e2bswarm/templates/setup.sh +0 -21
- package/skills/e2bswarm/tsconfig.json +0 -19
- package/skills/generate-book-cover/src/index.ts +0 -694
- package/skills/image/src/index-local.ts +0 -206
- package/skills/image/src/index.ts +0 -96
- package/skills/image/src/providers/google.ts +0 -79
- package/skills/image/src/providers/minimax.ts +0 -94
- package/skills/image/src/providers/openai.ts +0 -80
- package/skills/image/src/providers/xai.ts +0 -73
- package/skills/image/src/types.ts +0 -37
- package/skills/logo-design/CLAUDE.md +0 -30
- package/skills/logo-design/src/index.ts +0 -322
- package/skills/managehook/src/server/index.ts +0 -108
- package/skills/managemcp/src/server/index.ts +0 -108
- package/skills/manageskill/src/server/index.ts +0 -108
- package/skills/music/CLAUDE.md +0 -9
- package/skills/music/src/index.ts +0 -94
- package/skills/music/tsconfig.json +0 -10
- package/skills/pdf-read/src/index.ts +0 -320
- package/skills/product-mockup/CLAUDE.md +0 -19
- package/skills/product-mockup/src/index.ts +0 -290
- package/skills/read-pdf/src/index.ts +0 -388
- package/skills/remove-background/src/index.ts +0 -405
- package/skills/scaffold-project/my-app/.env.example +0 -2
- package/skills/scaffold-project/my-app/README.md +0 -72
- package/skills/scaffold-project/my-app/package.json +0 -29
- package/skills/scaffold-project/my-app/src/index.ts +0 -23
- package/skills/scaffold-project/my-app/tsconfig.json +0 -33
- package/skills/sound-effects/SKILL.md +0 -34
- package/skills/sound-effects/package.json +0 -21
- package/skills/sound-effects/src/index.ts +0 -172
- package/skills/sound-effects/tsconfig.json +0 -8
- package/skills/transcript/src/chunker.ts +0 -215
- package/skills/transcript/src/formatter.ts +0 -134
- package/skills/transcript/src/index-local.ts +0 -226
- package/skills/transcript/src/index.ts +0 -110
- package/skills/transcript/src/providers/elevenlabs.ts +0 -133
- package/skills/transcript/src/providers/gemini.ts +0 -192
- package/skills/transcript/src/providers/index.ts +0 -54
- package/skills/transcript/src/providers/openai.ts +0 -203
- package/skills/transcript/src/types.ts +0 -106
- package/skills/video/.env.example +0 -14
- package/skills/video/EXAMPLES.md +0 -266
- package/skills/video/LICENSE +0 -192
- package/skills/video/README.md +0 -174
- package/skills/video/src/cli.ts +0 -155
- package/skills/video/src/index-local.ts +0 -148
- package/skills/video/src/index.ts +0 -96
- package/skills/video/src/providers/google-veo.ts +0 -126
- package/skills/video/src/providers/index.ts +0 -22
- package/skills/video/src/providers/minimax.ts +0 -100
- package/skills/video/src/providers/openai-sora.ts +0 -164
- package/skills/video/src/providers/runway.ts +0 -159
- package/skills/video/src/types.ts +0 -35
- package/skills/video/tsconfig.json +0 -22
- package/skills/voiceover-casting-assistant/CLAUDE.md +0 -19
- package/skills/voiceover-casting-assistant/package.json +0 -27
- package/skills/voiceover-casting-assistant/src/index.ts +0 -255
- package/skills/voiceover-casting-assistant/tsconfig.json +0 -10
- package/skills/webcrawling/src/commands/config.ts +0 -34
- package/skills/webcrawling/src/commands/crawl.ts +0 -33
- package/skills/webcrawling/src/commands/scrape.ts +0 -32
- package/skills/webcrawling/src/commands/sessions.ts +0 -42
- package/skills/webcrawling/src/lib/crawler.ts +0 -174
- package/skills/webcrawling/src/lib/storage.ts +0 -130
- package/skills/webcrawling/src/types/index.ts +0 -45
- package/skills/webcrawling/src/utils/logger.ts +0 -30
- package/skills/webcrawling/src/utils/paths.ts +0 -28
- /package/skills/{audiobook-chapter-proofer → blog-article}/tsconfig.json +0 -0
|
@@ -1,430 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Browser Automation CLI
|
|
5
|
-
* AI-powered web browsing using Browser-Use Cloud API
|
|
6
|
-
*/
|
|
7
|
-
import { handleInstallCommand } from '../../_common';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// Handle install/uninstall commands
|
|
11
|
-
const SKILL_META = {
|
|
12
|
-
name: 'browse',
|
|
13
|
-
description: 'Browser automation skill using Browser-Use Cloud API for AI-powered web browsing, scraping, and automation',
|
|
14
|
-
version: '1.0.0',
|
|
15
|
-
commands: `Use: browse --help`,
|
|
16
|
-
requiredEnvVars: ['SKILL_API_KEY'],
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
if (await handleInstallCommand(SKILL_META, process.argv.slice(2))) {
|
|
20
|
-
process.exit(0);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
import { BrowserUseClient } from './client';
|
|
24
|
-
import type { LLMModel, ProxyCountry, TaskSecrets } from './types';
|
|
25
|
-
|
|
26
|
-
// Parse command line arguments
|
|
27
|
-
function parseArgs(): {
|
|
28
|
-
command: string;
|
|
29
|
-
task?: string;
|
|
30
|
-
url?: string;
|
|
31
|
-
model?: LLMModel;
|
|
32
|
-
proxy?: boolean;
|
|
33
|
-
proxyCountry?: ProxyCountry;
|
|
34
|
-
adblock?: boolean;
|
|
35
|
-
highlight?: boolean;
|
|
36
|
-
output?: string;
|
|
37
|
-
timeout?: number;
|
|
38
|
-
taskId?: string;
|
|
39
|
-
schema?: string;
|
|
40
|
-
json?: boolean;
|
|
41
|
-
secrets?: string;
|
|
42
|
-
secretsFile?: string;
|
|
43
|
-
allowedDomains?: string;
|
|
44
|
-
} {
|
|
45
|
-
const args = process.argv.slice(2);
|
|
46
|
-
const parsed: Record<string, unknown> = { command: args[0] || 'help' };
|
|
47
|
-
|
|
48
|
-
for (let i = 1; i < args.length; i++) {
|
|
49
|
-
const arg = args[i];
|
|
50
|
-
if (arg.startsWith('--')) {
|
|
51
|
-
const key = arg.replace(/^--/, '');
|
|
52
|
-
const nextArg = args[i + 1];
|
|
53
|
-
|
|
54
|
-
// Boolean flags
|
|
55
|
-
if (key === 'proxy' || key === 'adblock' || key === 'highlight' || key === 'json') {
|
|
56
|
-
parsed[key] = true;
|
|
57
|
-
} else if (key === 'no-proxy') {
|
|
58
|
-
parsed.proxy = false;
|
|
59
|
-
} else if (key === 'no-adblock') {
|
|
60
|
-
parsed.adblock = false;
|
|
61
|
-
} else if (key === 'no-highlight') {
|
|
62
|
-
parsed.highlight = false;
|
|
63
|
-
} else if (key === 'timeout') {
|
|
64
|
-
parsed.timeout = parseInt(nextArg, 10) * 1000; // Convert to ms
|
|
65
|
-
i++;
|
|
66
|
-
} else if (nextArg && !nextArg.startsWith('--')) {
|
|
67
|
-
// Handle kebab-case to camelCase
|
|
68
|
-
const camelKey = key.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
69
|
-
parsed[camelKey] = nextArg;
|
|
70
|
-
i++;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return parsed as ReturnType<typeof parseArgs>;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// Load secrets from file or JSON string
|
|
79
|
-
async function loadSecrets(secretsJson?: string, secretsFile?: string): Promise<TaskSecrets | undefined> {
|
|
80
|
-
// Try to load from file first
|
|
81
|
-
if (secretsFile) {
|
|
82
|
-
try {
|
|
83
|
-
const file = Bun.file(secretsFile);
|
|
84
|
-
const content = await file.text();
|
|
85
|
-
return JSON.parse(content) as TaskSecrets;
|
|
86
|
-
} catch (error) {
|
|
87
|
-
throw new Error(`Failed to load secrets from file: ${secretsFile}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// Parse JSON string
|
|
92
|
-
if (secretsJson) {
|
|
93
|
-
try {
|
|
94
|
-
return JSON.parse(secretsJson) as TaskSecrets;
|
|
95
|
-
} catch {
|
|
96
|
-
throw new Error('--secrets must be valid JSON');
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return undefined;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// Display help information
|
|
104
|
-
function showHelp(): void {
|
|
105
|
-
console.log(`
|
|
106
|
-
Browser Automation CLI - AI-powered web browsing using Browser-Use Cloud API
|
|
107
|
-
|
|
108
|
-
USAGE:
|
|
109
|
-
bun run src/index.ts <command> [options]
|
|
110
|
-
|
|
111
|
-
COMMANDS:
|
|
112
|
-
browse Execute a browser automation task
|
|
113
|
-
extract Extract structured data from a website
|
|
114
|
-
status Check status of a task
|
|
115
|
-
list List all tasks
|
|
116
|
-
pause Pause a running task
|
|
117
|
-
resume Resume a paused task
|
|
118
|
-
stop Stop a task permanently
|
|
119
|
-
help Show this help message
|
|
120
|
-
|
|
121
|
-
BROWSE OPTIONS:
|
|
122
|
-
--task <text> Natural language task description (required)
|
|
123
|
-
--model <model> LLM model: gpt-4o, o3, claude-sonnet-4 (default: gpt-4o)
|
|
124
|
-
--proxy Enable proxy (for captcha bypass)
|
|
125
|
-
--proxy-country <code> Proxy country: us, fr, it, jp, au, de, fi, ca (default: us)
|
|
126
|
-
--adblock Enable ad blocking
|
|
127
|
-
--highlight Highlight elements during execution
|
|
128
|
-
--timeout <seconds> Task timeout in seconds (default: 300)
|
|
129
|
-
--secrets <json> JSON object with credentials (keys=placeholders, values=secrets)
|
|
130
|
-
--secrets-file <path> Path to JSON file with credentials
|
|
131
|
-
--allowed-domains <csv> Comma-separated list of allowed domains
|
|
132
|
-
|
|
133
|
-
EXTRACT OPTIONS:
|
|
134
|
-
--task <text> Extraction task description (required)
|
|
135
|
-
--output <path> Save extracted data to file
|
|
136
|
-
--schema <json> JSON schema for structured output
|
|
137
|
-
--json Output as JSON to stdout
|
|
138
|
-
|
|
139
|
-
TASK MANAGEMENT:
|
|
140
|
-
--task-id <id> Task ID for status/pause/resume/stop commands
|
|
141
|
-
|
|
142
|
-
EXAMPLES:
|
|
143
|
-
# Browse and perform actions
|
|
144
|
-
bun run src/index.ts browse \\
|
|
145
|
-
--task "Go to hacker-news.com and find the top 5 posts" \\
|
|
146
|
-
--model gpt-4o \\
|
|
147
|
-
--proxy
|
|
148
|
-
|
|
149
|
-
# Login with credentials (placeholders in task, values in secrets)
|
|
150
|
-
bun run src/index.ts browse \\
|
|
151
|
-
--task "Go to twitter.com, login with username my_user and password my_pass, then get my notifications" \\
|
|
152
|
-
--secrets '{"my_user":"actual@email.com","my_pass":"actualPassword123"}' \\
|
|
153
|
-
--allowed-domains twitter.com,x.com
|
|
154
|
-
|
|
155
|
-
# Using secrets from a file
|
|
156
|
-
bun run src/index.ts browse \\
|
|
157
|
-
--task "Login to my_service with creds my_user and my_pass" \\
|
|
158
|
-
--secrets-file ./credentials.json
|
|
159
|
-
|
|
160
|
-
# Extract structured data
|
|
161
|
-
bun run src/index.ts extract \\
|
|
162
|
-
--task "Go to amazon.com and search for 'laptop', extract the top 3 product names and prices" \\
|
|
163
|
-
--output ./products.json
|
|
164
|
-
|
|
165
|
-
# Check task status
|
|
166
|
-
bun run src/index.ts status --task-id abc123
|
|
167
|
-
|
|
168
|
-
# List all tasks
|
|
169
|
-
bun run src/index.ts list
|
|
170
|
-
|
|
171
|
-
# Pause a task
|
|
172
|
-
bun run src/index.ts pause --task-id abc123
|
|
173
|
-
|
|
174
|
-
# Resume a paused task
|
|
175
|
-
bun run src/index.ts resume --task-id abc123
|
|
176
|
-
|
|
177
|
-
# Stop a task
|
|
178
|
-
bun run src/index.ts stop --task-id abc123
|
|
179
|
-
|
|
180
|
-
ENVIRONMENT VARIABLES:
|
|
181
|
-
BROWSER_USE_API_KEY API key for Browser-Use Cloud (required)
|
|
182
|
-
BROWSER_USE_MODEL Default LLM model
|
|
183
|
-
BROWSER_USE_PROXY Default proxy setting (true/false)
|
|
184
|
-
BROWSER_USE_PROXY_COUNTRY Default proxy country code
|
|
185
|
-
|
|
186
|
-
MODELS:
|
|
187
|
-
gpt-4o OpenAI GPT-4o (default)
|
|
188
|
-
o3 OpenAI O3 (recommended for accuracy)
|
|
189
|
-
claude-sonnet-4 Anthropic Claude Sonnet 4
|
|
190
|
-
gemini-flash Google Gemini Flash
|
|
191
|
-
browser-use Browser-Use proprietary model (fastest)
|
|
192
|
-
|
|
193
|
-
PROXY COUNTRIES:
|
|
194
|
-
us United States fr France
|
|
195
|
-
it Italy jp Japan
|
|
196
|
-
au Australia de Germany
|
|
197
|
-
fi Finland ca Canada
|
|
198
|
-
`);
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Format task info for display
|
|
202
|
-
function formatTaskInfo(task: { id: string; status: string; task: string; liveUrl?: string; createdAt: string }): string {
|
|
203
|
-
const statusEmoji = {
|
|
204
|
-
pending: '⏳',
|
|
205
|
-
running: '🔄',
|
|
206
|
-
paused: '⏸️',
|
|
207
|
-
finished: '✅',
|
|
208
|
-
failed: '❌',
|
|
209
|
-
stopped: '🛑',
|
|
210
|
-
}[task.status] || '❓';
|
|
211
|
-
|
|
212
|
-
return `${statusEmoji} [${task.id.substring(0, 8)}...] ${task.status.padEnd(8)} ${task.task.substring(0, 50)}${task.task.length > 50 ? '...' : ''}`;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
// Main CLI handler
|
|
216
|
-
async function main(): Promise<void> {
|
|
217
|
-
const args = parseArgs();
|
|
218
|
-
|
|
219
|
-
// Help doesn't need API key
|
|
220
|
-
if (args.command === 'help') {
|
|
221
|
-
showHelp();
|
|
222
|
-
return;
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
// Initialize client (validates API key)
|
|
226
|
-
let client: BrowserUseClient;
|
|
227
|
-
try {
|
|
228
|
-
client = new BrowserUseClient();
|
|
229
|
-
} catch (error) {
|
|
230
|
-
console.error('Error:', error instanceof Error ? error.message : String(error));
|
|
231
|
-
process.exit(1);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
try {
|
|
235
|
-
switch (args.command) {
|
|
236
|
-
case 'browse': {
|
|
237
|
-
if (!args.task) {
|
|
238
|
-
console.error('Error: --task is required');
|
|
239
|
-
console.error('Use: bun run src/index.ts help');
|
|
240
|
-
process.exit(1);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
console.log('Starting browser task...');
|
|
244
|
-
console.log(`Task: ${args.task}`);
|
|
245
|
-
|
|
246
|
-
// Load secrets if provided
|
|
247
|
-
const secrets = await loadSecrets(args.secrets, args.secretsFile);
|
|
248
|
-
if (secrets) {
|
|
249
|
-
console.log(`Using ${Object.keys(secrets).length} secret(s)`);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
// Parse allowed domains
|
|
253
|
-
const allowedDomains = args.allowedDomains?.split(',').map(d => d.trim());
|
|
254
|
-
if (allowedDomains) {
|
|
255
|
-
console.log(`Allowed domains: ${allowedDomains.join(', ')}`);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
const result = await client.browse({
|
|
259
|
-
task: args.task,
|
|
260
|
-
model: args.model,
|
|
261
|
-
useProxy: args.proxy,
|
|
262
|
-
proxyCountry: args.proxyCountry,
|
|
263
|
-
useAdblock: args.adblock,
|
|
264
|
-
highlightElements: args.highlight,
|
|
265
|
-
timeout: args.timeout,
|
|
266
|
-
secrets,
|
|
267
|
-
allowedDomains,
|
|
268
|
-
});
|
|
269
|
-
|
|
270
|
-
if (result.success) {
|
|
271
|
-
console.log('\n✅ Task completed successfully');
|
|
272
|
-
if (result.output) {
|
|
273
|
-
console.log('\n--- Output ---');
|
|
274
|
-
console.log(result.output);
|
|
275
|
-
}
|
|
276
|
-
if (result.steps && result.steps.length > 0) {
|
|
277
|
-
console.log(`\n--- Steps (${result.steps.length}) ---`);
|
|
278
|
-
result.steps.forEach((step, i) => {
|
|
279
|
-
console.log(`${i + 1}. ${step.action}`);
|
|
280
|
-
});
|
|
281
|
-
}
|
|
282
|
-
} else {
|
|
283
|
-
console.error(`\n❌ Task failed: ${result.error}`);
|
|
284
|
-
process.exit(1);
|
|
285
|
-
}
|
|
286
|
-
break;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
case 'extract': {
|
|
290
|
-
if (!args.task) {
|
|
291
|
-
console.error('Error: --task is required');
|
|
292
|
-
console.error('Use: bun run src/index.ts help');
|
|
293
|
-
process.exit(1);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
console.log('Starting extraction task...');
|
|
297
|
-
console.log(`Task: ${args.task}`);
|
|
298
|
-
|
|
299
|
-
let schema: Record<string, unknown> | undefined;
|
|
300
|
-
if (args.schema) {
|
|
301
|
-
try {
|
|
302
|
-
schema = JSON.parse(args.schema);
|
|
303
|
-
} catch {
|
|
304
|
-
console.error('Error: --schema must be valid JSON');
|
|
305
|
-
process.exit(1);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
// Load secrets if provided
|
|
310
|
-
const extractSecrets = await loadSecrets(args.secrets, args.secretsFile);
|
|
311
|
-
if (extractSecrets) {
|
|
312
|
-
console.log(`Using ${Object.keys(extractSecrets).length} secret(s)`);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
// Parse allowed domains
|
|
316
|
-
const extractAllowedDomains = args.allowedDomains?.split(',').map(d => d.trim());
|
|
317
|
-
if (extractAllowedDomains) {
|
|
318
|
-
console.log(`Allowed domains: ${extractAllowedDomains.join(', ')}`);
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
const result = await client.extract({
|
|
322
|
-
task: args.task,
|
|
323
|
-
model: args.model,
|
|
324
|
-
useProxy: args.proxy,
|
|
325
|
-
proxyCountry: args.proxyCountry,
|
|
326
|
-
useAdblock: args.adblock,
|
|
327
|
-
highlightElements: args.highlight,
|
|
328
|
-
timeout: args.timeout,
|
|
329
|
-
schema,
|
|
330
|
-
outputPath: args.output,
|
|
331
|
-
secrets: extractSecrets,
|
|
332
|
-
allowedDomains: extractAllowedDomains,
|
|
333
|
-
});
|
|
334
|
-
|
|
335
|
-
if (result.success) {
|
|
336
|
-
console.log('\n✅ Extraction completed successfully');
|
|
337
|
-
|
|
338
|
-
if (args.json && result.data) {
|
|
339
|
-
// Output only JSON for piping
|
|
340
|
-
console.log(JSON.stringify(result.data, null, 2));
|
|
341
|
-
} else if (result.data) {
|
|
342
|
-
console.log('\n--- Extracted Data ---');
|
|
343
|
-
console.log(typeof result.data === 'string' ? result.data : JSON.stringify(result.data, null, 2));
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
if (result.savedTo) {
|
|
347
|
-
console.log(`\nData saved to: ${result.savedTo}`);
|
|
348
|
-
}
|
|
349
|
-
} else {
|
|
350
|
-
console.error(`\n❌ Extraction failed: ${result.error}`);
|
|
351
|
-
process.exit(1);
|
|
352
|
-
}
|
|
353
|
-
break;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
case 'status': {
|
|
357
|
-
if (!args.taskId) {
|
|
358
|
-
console.error('Error: --task-id is required');
|
|
359
|
-
process.exit(1);
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
const result = await client.getTask(args.taskId);
|
|
363
|
-
console.log(`Task ID: ${result.taskId}`);
|
|
364
|
-
console.log(`Status: ${result.status}`);
|
|
365
|
-
if (result.output) {
|
|
366
|
-
console.log('\n--- Output ---');
|
|
367
|
-
console.log(result.output);
|
|
368
|
-
}
|
|
369
|
-
if (result.error) {
|
|
370
|
-
console.log(`Error: ${result.error}`);
|
|
371
|
-
}
|
|
372
|
-
break;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
case 'list': {
|
|
376
|
-
const tasks = await client.listTasks();
|
|
377
|
-
if (tasks.length === 0) {
|
|
378
|
-
console.log('No tasks found');
|
|
379
|
-
} else {
|
|
380
|
-
console.log('Tasks:');
|
|
381
|
-
tasks.forEach((task) => {
|
|
382
|
-
console.log(formatTaskInfo(task));
|
|
383
|
-
});
|
|
384
|
-
}
|
|
385
|
-
break;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
case 'pause': {
|
|
389
|
-
if (!args.taskId) {
|
|
390
|
-
console.error('Error: --task-id is required');
|
|
391
|
-
process.exit(1);
|
|
392
|
-
}
|
|
393
|
-
await client.pauseTask(args.taskId);
|
|
394
|
-
console.log(`Task ${args.taskId} paused`);
|
|
395
|
-
break;
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
case 'resume': {
|
|
399
|
-
if (!args.taskId) {
|
|
400
|
-
console.error('Error: --task-id is required');
|
|
401
|
-
process.exit(1);
|
|
402
|
-
}
|
|
403
|
-
await client.resumeTask(args.taskId);
|
|
404
|
-
console.log(`Task ${args.taskId} resumed`);
|
|
405
|
-
break;
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
case 'stop': {
|
|
409
|
-
if (!args.taskId) {
|
|
410
|
-
console.error('Error: --task-id is required');
|
|
411
|
-
process.exit(1);
|
|
412
|
-
}
|
|
413
|
-
await client.stopTask(args.taskId);
|
|
414
|
-
console.log(`Task ${args.taskId} stopped`);
|
|
415
|
-
break;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
default:
|
|
419
|
-
console.error(`Unknown command: ${args.command}`);
|
|
420
|
-
console.error('Use: bun run src/index.ts help');
|
|
421
|
-
process.exit(1);
|
|
422
|
-
}
|
|
423
|
-
} catch (error) {
|
|
424
|
-
console.error('Error:', error instanceof Error ? error.message : String(error));
|
|
425
|
-
process.exit(1);
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
// Run the CLI
|
|
430
|
-
main();
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Skill Browse (HTTP Client)
|
|
5
|
-
* Calls the remote skill API server
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { executeAndSave, executeSkill, handleInstallCommand } from '../../_common';
|
|
9
|
-
|
|
10
|
-
// Skill metadata for install command
|
|
11
|
-
const SKILL_META = {
|
|
12
|
-
name: 'browse',
|
|
13
|
-
description: 'Browse skill - calls remote API',
|
|
14
|
-
version: '1.0.0',
|
|
15
|
-
commands: `browse <command> [options]`,
|
|
16
|
-
requiredEnvVars: ['SKILL_API_KEY'],
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
// Handle install/uninstall commands
|
|
20
|
-
if (await handleInstallCommand(SKILL_META, process.argv.slice(2))) {
|
|
21
|
-
process.exit(0);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// Parse command line arguments
|
|
25
|
-
function parseArgs(): Record<string, string | boolean> {
|
|
26
|
-
const args = process.argv.slice(2);
|
|
27
|
-
const parsed: Record<string, string | boolean> = {};
|
|
28
|
-
|
|
29
|
-
for (let i = 0; i < args.length; i++) {
|
|
30
|
-
if (args[i].startsWith('--')) {
|
|
31
|
-
const key = args[i].slice(2);
|
|
32
|
-
const value = args[i + 1];
|
|
33
|
-
if (value && !value.startsWith('--')) {
|
|
34
|
-
parsed[key] = value;
|
|
35
|
-
i++;
|
|
36
|
-
} else {
|
|
37
|
-
parsed[key] = true;
|
|
38
|
-
}
|
|
39
|
-
} else if (!parsed.command) {
|
|
40
|
-
parsed.command = args[i];
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return parsed;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// Main logic
|
|
48
|
-
async function main() {
|
|
49
|
-
const args = parseArgs();
|
|
50
|
-
const command = (args.command as string) || 'help';
|
|
51
|
-
|
|
52
|
-
if (command === 'help' || args.help) {
|
|
53
|
-
console.log(`Skill Browse CLI
|
|
54
|
-
|
|
55
|
-
USAGE:
|
|
56
|
-
browse <command> [options]
|
|
57
|
-
|
|
58
|
-
COMMANDS:
|
|
59
|
-
Call with any command and it will be forwarded to the remote API server
|
|
60
|
-
|
|
61
|
-
EXAMPLES:
|
|
62
|
-
browse generate --provider <provider> [options]`);
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Extract all parameters
|
|
67
|
-
const { command: cmd, ...params } = args;
|
|
68
|
-
|
|
69
|
-
// Check if output file is expected (for file-generating skills)
|
|
70
|
-
const fileSkills = ['audio', 'image', 'video', 'emoji'];
|
|
71
|
-
const isFileSkill = fileSkills.includes('browse');
|
|
72
|
-
|
|
73
|
-
if (isFileSkill && params.output) {
|
|
74
|
-
// Skill that generates files
|
|
75
|
-
const success = await executeAndSave({
|
|
76
|
-
skill: 'browse',
|
|
77
|
-
command: cmd,
|
|
78
|
-
...params,
|
|
79
|
-
});
|
|
80
|
-
process.exit(success ? 0 : 1);
|
|
81
|
-
} else {
|
|
82
|
-
// Skill that returns JSON/text
|
|
83
|
-
const result = await executeSkill({
|
|
84
|
-
skill: 'browse',
|
|
85
|
-
command: cmd,
|
|
86
|
-
...params,
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
if (result instanceof Blob) {
|
|
90
|
-
console.error('❌ Unexpected binary response');
|
|
91
|
-
process.exit(1);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (result.success && result.output) {
|
|
95
|
-
console.log(result.output);
|
|
96
|
-
} else {
|
|
97
|
-
console.error(`❌ Error: ${result.error}`);
|
|
98
|
-
if (result.details) {
|
|
99
|
-
console.error(` ${result.details}`);
|
|
100
|
-
}
|
|
101
|
-
process.exit(1);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// Run main
|
|
107
|
-
main().catch((error) => {
|
|
108
|
-
console.error('❌ Fatal error:', error.message);
|
|
109
|
-
process.exit(1);
|
|
110
|
-
});
|