@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,405 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Remove Background Skill
|
|
5
|
-
*
|
|
6
|
-
* Removes backgrounds from images using local AI processing
|
|
7
|
-
* Supports batch processing, custom backgrounds, and multiple output formats
|
|
8
|
-
* No API key required - runs entirely locally
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { parseArgs } from "node:util";
|
|
12
|
-
import { mkdir, writeFile, readFile, stat } from "node:fs/promises";
|
|
13
|
-
import { join, basename, extname } from "node:path";
|
|
14
|
-
import { existsSync } from "node:fs";
|
|
15
|
-
|
|
16
|
-
// Types
|
|
17
|
-
interface ProcessedImage {
|
|
18
|
-
input: string;
|
|
19
|
-
output: string;
|
|
20
|
-
size: string;
|
|
21
|
-
error?: string;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
interface Metadata {
|
|
25
|
-
timestamp: string;
|
|
26
|
-
totalImages: number;
|
|
27
|
-
successful: number;
|
|
28
|
-
failed: number;
|
|
29
|
-
settings: {
|
|
30
|
-
bgColor: string;
|
|
31
|
-
format: string;
|
|
32
|
-
};
|
|
33
|
-
images: ProcessedImage[];
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Configuration
|
|
37
|
-
const OUTPUT_BASE = process.env.SKILLS_OUTPUT_DIR || process.env.SKILLS_EXPORTS_DIR || ".skills";
|
|
38
|
-
const PROJECT_ROOT = process.env.SKILLS_PROJECT_ROOT || process.cwd();
|
|
39
|
-
|
|
40
|
-
// Supported formats
|
|
41
|
-
const SUPPORTED_FORMATS = [".png", ".jpg", ".jpeg", ".webp"];
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Parse command line arguments
|
|
45
|
-
*/
|
|
46
|
-
function parseArguments() {
|
|
47
|
-
const { values, positionals } = parseArgs({
|
|
48
|
-
args: Bun.argv.slice(2),
|
|
49
|
-
options: {
|
|
50
|
-
"bg-color": { type: "string", default: "transparent" },
|
|
51
|
-
output: { type: "string", short: "o" },
|
|
52
|
-
format: { type: "string", default: "png" },
|
|
53
|
-
help: { type: "boolean", short: "h", default: false },
|
|
54
|
-
},
|
|
55
|
-
allowPositionals: true,
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
if (values.help) {
|
|
59
|
-
printHelp();
|
|
60
|
-
process.exit(0);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// Validate inputs
|
|
64
|
-
if (positionals.length === 0) {
|
|
65
|
-
console.error("Error: No image files specified");
|
|
66
|
-
console.error("Usage: skills run remove-background -- image.jpg [image2.png ...]");
|
|
67
|
-
console.error("Run with --help for more information");
|
|
68
|
-
process.exit(1);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Validate format
|
|
72
|
-
if (!["png", "jpg", "webp"].includes(values.format as string)) {
|
|
73
|
-
console.error(`Error: Invalid format "${values.format}". Use: png, jpg, or webp`);
|
|
74
|
-
process.exit(1);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Validate color format (if not transparent)
|
|
78
|
-
const bgColor = values["bg-color"] as string;
|
|
79
|
-
if (bgColor !== "transparent" && !/^#[0-9A-Fa-f]{6}$/.test(bgColor)) {
|
|
80
|
-
console.error(`Error: Invalid color format "${bgColor}". Use hex format like #FF5733 or "transparent"`);
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return {
|
|
85
|
-
images: positionals,
|
|
86
|
-
bgColor,
|
|
87
|
-
outputDir: values.output as string | undefined,
|
|
88
|
-
format: values.format as string,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Print help message
|
|
94
|
-
*/
|
|
95
|
-
function printHelp() {
|
|
96
|
-
console.log(`
|
|
97
|
-
Remove Background - AI-powered background removal (runs locally)
|
|
98
|
-
|
|
99
|
-
USAGE:
|
|
100
|
-
skills run remove-background -- <images...> [options]
|
|
101
|
-
|
|
102
|
-
OPTIONS:
|
|
103
|
-
--bg-color <color> Background color (hex like #FF5733 or "transparent")
|
|
104
|
-
--output, -o <dir> Custom output directory
|
|
105
|
-
--format <format> Output format: png, jpg, webp (default: png)
|
|
106
|
-
-h, --help Show this help message
|
|
107
|
-
|
|
108
|
-
EXAMPLES:
|
|
109
|
-
# Basic usage
|
|
110
|
-
skills run remove-background -- photo.jpg
|
|
111
|
-
|
|
112
|
-
# White background
|
|
113
|
-
skills run remove-background -- product.jpg --bg-color "#FFFFFF"
|
|
114
|
-
|
|
115
|
-
# Batch process
|
|
116
|
-
skills run remove-background -- image1.jpg image2.png image3.webp
|
|
117
|
-
|
|
118
|
-
# Custom output directory
|
|
119
|
-
skills run remove-background -- image.jpg --output ./processed
|
|
120
|
-
|
|
121
|
-
NOTE:
|
|
122
|
-
This skill runs locally using AI - no API key required.
|
|
123
|
-
First run may download the model (~30MB).
|
|
124
|
-
`);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Validate image file
|
|
129
|
-
*/
|
|
130
|
-
async function validateImage(imagePath: string): Promise<boolean> {
|
|
131
|
-
try {
|
|
132
|
-
if (!existsSync(imagePath)) {
|
|
133
|
-
console.error(`File not found: ${imagePath}`);
|
|
134
|
-
return false;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
const ext = extname(imagePath).toLowerCase();
|
|
138
|
-
if (!SUPPORTED_FORMATS.includes(ext)) {
|
|
139
|
-
console.error(`Unsupported format: ${imagePath} (use PNG, JPG, JPEG, or WebP)`);
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
const stats = await stat(imagePath);
|
|
144
|
-
const maxSize = 20 * 1024 * 1024; // 20 MB
|
|
145
|
-
if (stats.size > maxSize) {
|
|
146
|
-
console.error(`File too large: ${imagePath} (max 20 MB)`);
|
|
147
|
-
return false;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
return true;
|
|
151
|
-
} catch (error) {
|
|
152
|
-
console.error(`Error validating ${imagePath}:`, error);
|
|
153
|
-
return false;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Get mime type from file extension
|
|
159
|
-
*/
|
|
160
|
-
function getMimeType(filePath: string): string {
|
|
161
|
-
const ext = extname(filePath).toLowerCase();
|
|
162
|
-
const mimeTypes: Record<string, string> = {
|
|
163
|
-
".png": "image/png",
|
|
164
|
-
".jpg": "image/jpeg",
|
|
165
|
-
".jpeg": "image/jpeg",
|
|
166
|
-
".webp": "image/webp",
|
|
167
|
-
};
|
|
168
|
-
return mimeTypes[ext] || "image/png";
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Remove background from image using local AI model
|
|
173
|
-
*/
|
|
174
|
-
async function removeBackground(imagePath: string): Promise<Blob> {
|
|
175
|
-
// Dynamic import to avoid loading until needed
|
|
176
|
-
const { removeBackground: removeBg } = await import("@imgly/background-removal-node");
|
|
177
|
-
|
|
178
|
-
console.log(" Running local AI background removal...");
|
|
179
|
-
|
|
180
|
-
// Read image as blob with proper mime type
|
|
181
|
-
const imageBuffer = await readFile(imagePath);
|
|
182
|
-
const mimeType = getMimeType(imagePath);
|
|
183
|
-
const blob = new Blob([imageBuffer], { type: mimeType });
|
|
184
|
-
|
|
185
|
-
// Process with local AI model
|
|
186
|
-
const result = await removeBg(blob, {
|
|
187
|
-
progress: (key, current, total) => {
|
|
188
|
-
if (key === "compute:inference") {
|
|
189
|
-
const pct = Math.round((current / total) * 100);
|
|
190
|
-
process.stdout.write(`\r Processing: ${pct}%`);
|
|
191
|
-
}
|
|
192
|
-
},
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
console.log("\r Processing: 100%");
|
|
196
|
-
return result;
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* Apply background color to transparent image
|
|
201
|
-
*/
|
|
202
|
-
async function applyBackgroundColor(
|
|
203
|
-
imageBuffer: Buffer,
|
|
204
|
-
bgColor: string
|
|
205
|
-
): Promise<Buffer> {
|
|
206
|
-
// If transparent, return as-is
|
|
207
|
-
if (bgColor === "transparent") {
|
|
208
|
-
return imageBuffer;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
// Use sharp to composite with background color
|
|
212
|
-
const sharp = (await import("sharp")).default;
|
|
213
|
-
|
|
214
|
-
// Parse hex color
|
|
215
|
-
const r = parseInt(bgColor.slice(1, 3), 16);
|
|
216
|
-
const g = parseInt(bgColor.slice(3, 5), 16);
|
|
217
|
-
const b = parseInt(bgColor.slice(5, 7), 16);
|
|
218
|
-
|
|
219
|
-
// Get image dimensions
|
|
220
|
-
const metadata = await sharp(imageBuffer).metadata();
|
|
221
|
-
const width = metadata.width || 1;
|
|
222
|
-
const height = metadata.height || 1;
|
|
223
|
-
|
|
224
|
-
// Create solid color background
|
|
225
|
-
const background = await sharp({
|
|
226
|
-
create: {
|
|
227
|
-
width,
|
|
228
|
-
height,
|
|
229
|
-
channels: 4,
|
|
230
|
-
background: { r, g, b, alpha: 1 },
|
|
231
|
-
},
|
|
232
|
-
})
|
|
233
|
-
.png()
|
|
234
|
-
.toBuffer();
|
|
235
|
-
|
|
236
|
-
// Composite foreground over background
|
|
237
|
-
const result = await sharp(background)
|
|
238
|
-
.composite([{ input: imageBuffer, blend: "over" }])
|
|
239
|
-
.png()
|
|
240
|
-
.toBuffer();
|
|
241
|
-
|
|
242
|
-
return result;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* Format file size
|
|
247
|
-
*/
|
|
248
|
-
function formatSize(bytes: number): string {
|
|
249
|
-
if (bytes < 1024) return `${bytes} B`;
|
|
250
|
-
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
|
|
251
|
-
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Process single image
|
|
256
|
-
*/
|
|
257
|
-
async function processImage(
|
|
258
|
-
imagePath: string,
|
|
259
|
-
outputDir: string,
|
|
260
|
-
options: {
|
|
261
|
-
bgColor: string;
|
|
262
|
-
format: string;
|
|
263
|
-
}
|
|
264
|
-
): Promise<ProcessedImage> {
|
|
265
|
-
try {
|
|
266
|
-
console.log(`\nProcessing: ${basename(imagePath)}`);
|
|
267
|
-
|
|
268
|
-
const isValid = await validateImage(imagePath);
|
|
269
|
-
if (!isValid) {
|
|
270
|
-
return {
|
|
271
|
-
input: imagePath,
|
|
272
|
-
output: "",
|
|
273
|
-
size: "0",
|
|
274
|
-
error: "Validation failed",
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
// Remove background
|
|
279
|
-
const resultBlob = await removeBackground(imagePath);
|
|
280
|
-
let resultBuffer = Buffer.from(await resultBlob.arrayBuffer());
|
|
281
|
-
|
|
282
|
-
// Apply background color if specified
|
|
283
|
-
if (options.bgColor !== "transparent") {
|
|
284
|
-
console.log(` Applying background color: ${options.bgColor}`);
|
|
285
|
-
resultBuffer = await applyBackgroundColor(resultBuffer, options.bgColor);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
// Convert to desired format
|
|
289
|
-
const sharp = (await import("sharp")).default;
|
|
290
|
-
if (options.format === "jpg") {
|
|
291
|
-
resultBuffer = await sharp(resultBuffer).jpeg({ quality: 95 }).toBuffer();
|
|
292
|
-
} else if (options.format === "webp") {
|
|
293
|
-
resultBuffer = await sharp(resultBuffer).webp({ quality: 95 }).toBuffer();
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// Generate output filename
|
|
297
|
-
const ext = extname(imagePath);
|
|
298
|
-
const name = basename(imagePath, ext);
|
|
299
|
-
const outputExt = options.format === "jpg" ? ".jpg" : `.${options.format}`;
|
|
300
|
-
const outputPath = join(outputDir, `${name}-nobg${outputExt}`);
|
|
301
|
-
|
|
302
|
-
// Save processed image
|
|
303
|
-
await writeFile(outputPath, resultBuffer);
|
|
304
|
-
|
|
305
|
-
const stats = await stat(outputPath);
|
|
306
|
-
|
|
307
|
-
console.log(` Saved: ${basename(outputPath)}`);
|
|
308
|
-
console.log(` Size: ${formatSize(stats.size)}`);
|
|
309
|
-
|
|
310
|
-
return {
|
|
311
|
-
input: imagePath,
|
|
312
|
-
output: outputPath,
|
|
313
|
-
size: formatSize(stats.size),
|
|
314
|
-
};
|
|
315
|
-
} catch (error) {
|
|
316
|
-
console.error(` Failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
317
|
-
return {
|
|
318
|
-
input: imagePath,
|
|
319
|
-
output: "",
|
|
320
|
-
size: "0",
|
|
321
|
-
error: error instanceof Error ? error.message : String(error),
|
|
322
|
-
};
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
|
|
326
|
-
/**
|
|
327
|
-
* Main function
|
|
328
|
-
*/
|
|
329
|
-
async function main() {
|
|
330
|
-
console.log("Remove Background Skill v2.1.0\n");
|
|
331
|
-
console.log(" Powered by local AI (no API key needed)\n");
|
|
332
|
-
|
|
333
|
-
// Parse arguments
|
|
334
|
-
const args = parseArguments();
|
|
335
|
-
|
|
336
|
-
// Setup output directory
|
|
337
|
-
const timestamp = new Date().toISOString().replace(/[:.]/g, "-").split("T")[0] + "_" +
|
|
338
|
-
new Date().toTimeString().split(" ")[0].replace(/:/g, "");
|
|
339
|
-
|
|
340
|
-
const outputDir = args.outputDir
|
|
341
|
-
? join(PROJECT_ROOT, args.outputDir)
|
|
342
|
-
: join(OUTPUT_BASE, "remove-background", timestamp);
|
|
343
|
-
|
|
344
|
-
await mkdir(outputDir, { recursive: true });
|
|
345
|
-
|
|
346
|
-
console.log(`Output directory: ${outputDir}`);
|
|
347
|
-
console.log(`Background: ${args.bgColor}`);
|
|
348
|
-
console.log(`Format: ${args.format}`);
|
|
349
|
-
console.log(`Processing ${args.images.length} image(s)...`);
|
|
350
|
-
|
|
351
|
-
// Process all images
|
|
352
|
-
const results: ProcessedImage[] = [];
|
|
353
|
-
for (const imagePath of args.images) {
|
|
354
|
-
// Handle both absolute and relative paths
|
|
355
|
-
const absolutePath = imagePath.startsWith("/") ? imagePath : join(PROJECT_ROOT, imagePath);
|
|
356
|
-
const result = await processImage(absolutePath, outputDir, {
|
|
357
|
-
bgColor: args.bgColor,
|
|
358
|
-
format: args.format,
|
|
359
|
-
});
|
|
360
|
-
results.push(result);
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
// Calculate statistics
|
|
364
|
-
const successful = results.filter((r) => !r.error).length;
|
|
365
|
-
const failed = results.filter((r) => r.error).length;
|
|
366
|
-
|
|
367
|
-
// Create metadata
|
|
368
|
-
const metadata: Metadata = {
|
|
369
|
-
timestamp: new Date().toISOString(),
|
|
370
|
-
totalImages: results.length,
|
|
371
|
-
successful,
|
|
372
|
-
failed,
|
|
373
|
-
settings: {
|
|
374
|
-
bgColor: args.bgColor,
|
|
375
|
-
format: args.format,
|
|
376
|
-
},
|
|
377
|
-
images: results,
|
|
378
|
-
};
|
|
379
|
-
|
|
380
|
-
// Save metadata
|
|
381
|
-
const metadataPath = join(outputDir, "metadata.json");
|
|
382
|
-
await writeFile(metadataPath, JSON.stringify(metadata, null, 2));
|
|
383
|
-
|
|
384
|
-
// Print summary
|
|
385
|
-
console.log("\n" + "=".repeat(50));
|
|
386
|
-
console.log("Summary");
|
|
387
|
-
console.log("=".repeat(50));
|
|
388
|
-
console.log(`Successful: ${successful}`);
|
|
389
|
-
console.log(`Failed: ${failed}`);
|
|
390
|
-
console.log(`Output: ${outputDir}`);
|
|
391
|
-
console.log("=".repeat(50));
|
|
392
|
-
|
|
393
|
-
if (failed > 0) {
|
|
394
|
-
console.error("\nSome images failed to process. Check errors above.");
|
|
395
|
-
process.exit(1);
|
|
396
|
-
}
|
|
397
|
-
|
|
398
|
-
console.log("\nAll images processed successfully!");
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
// Run main function
|
|
402
|
-
main().catch((error) => {
|
|
403
|
-
console.error("\nFatal error:", error);
|
|
404
|
-
process.exit(1);
|
|
405
|
-
});
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# my-app
|
|
2
|
-
|
|
3
|
-
REST API boilerplate
|
|
4
|
-
|
|
5
|
-
## Tech Stack
|
|
6
|
-
|
|
7
|
-
- **Framework**: REST API
|
|
8
|
-
- **Language**: TypeScript
|
|
9
|
-
- **Styling**: Tailwind CSS
|
|
10
|
-
|
|
11
|
-
## Prerequisites
|
|
12
|
-
|
|
13
|
-
- Node.js 18+ (or Bun)
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
## Getting Started
|
|
17
|
-
|
|
18
|
-
1. Install dependencies:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
bun install
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
2. Copy environment variables:
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
cp .env.example .env
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
3. Fill in the environment variables in `.env`
|
|
31
|
-
|
|
32
|
-
5. Run the development server:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
bun dev
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Available Scripts
|
|
39
|
-
|
|
40
|
-
- `bun dev` - Start development server
|
|
41
|
-
- `bun build` - Build for production
|
|
42
|
-
- `bun start` - Start production server
|
|
43
|
-
- `bun lint` - Run ESLint
|
|
44
|
-
- `bun format` - Format code with Prettier
|
|
45
|
-
|
|
46
|
-
## Project Structure
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
my-app/
|
|
50
|
-
├── src/
|
|
51
|
-
│ ├── app/ # Application routes
|
|
52
|
-
│ ├── components/ # React components
|
|
53
|
-
│ ├── lib/ # Utility functions
|
|
54
|
-
│ └── types/ # TypeScript types
|
|
55
|
-
├── public/ # Static assets
|
|
56
|
-
├── .env.example # Environment variables template
|
|
57
|
-
├── package.json
|
|
58
|
-
└── README.md
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Learn More
|
|
62
|
-
|
|
63
|
-
- [REST API Documentation](https://nextjs.org/docs)
|
|
64
|
-
- [Tailwind CSS](https://tailwindcss.com/docs)
|
|
65
|
-
|
|
66
|
-
## Deployment
|
|
67
|
-
|
|
68
|
-
Deploy your application on [Vercel](https://vercel.com) or [Railway](https://railway.app).
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
Generated with [scaffold-project](https://skills.md/skills/scaffold-project)
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "my-app",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"private": true,
|
|
5
|
-
"scripts": {
|
|
6
|
-
"dev": "tsx watch src/index.ts",
|
|
7
|
-
"build": "tsc",
|
|
8
|
-
"start": "node dist/index.js",
|
|
9
|
-
"lint": "eslint .",
|
|
10
|
-
"format": "prettier --write ."
|
|
11
|
-
},
|
|
12
|
-
"dependencies": {
|
|
13
|
-
"express": "latest",
|
|
14
|
-
"cors": "latest",
|
|
15
|
-
"dotenv": "latest",
|
|
16
|
-
"tailwindcss": "latest",
|
|
17
|
-
"autoprefixer": "latest",
|
|
18
|
-
"postcss": "latest"
|
|
19
|
-
},
|
|
20
|
-
"devDependencies": {
|
|
21
|
-
"@types/express": "latest",
|
|
22
|
-
"@types/cors": "latest",
|
|
23
|
-
"@types/node": "latest",
|
|
24
|
-
"typescript": "latest",
|
|
25
|
-
"tsx": "latest",
|
|
26
|
-
"eslint": "latest",
|
|
27
|
-
"prettier": "latest"
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import express from 'express'
|
|
2
|
-
import cors from 'cors'
|
|
3
|
-
import dotenv from 'dotenv'
|
|
4
|
-
|
|
5
|
-
dotenv.config()
|
|
6
|
-
|
|
7
|
-
const app = express()
|
|
8
|
-
const port = process.env.PORT || 3000
|
|
9
|
-
|
|
10
|
-
app.use(cors())
|
|
11
|
-
app.use(express.json())
|
|
12
|
-
|
|
13
|
-
app.get('/', (req, res) => {
|
|
14
|
-
res.json({ message: 'API is running' })
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
app.get('/health', (req, res) => {
|
|
18
|
-
res.json({ status: 'ok' })
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
app.listen(port, () => {
|
|
22
|
-
console.log(`Server running on http://localhost:${port}`)
|
|
23
|
-
})
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2020",
|
|
4
|
-
"lib": [
|
|
5
|
-
"ES2020",
|
|
6
|
-
"DOM",
|
|
7
|
-
"DOM.Iterable"
|
|
8
|
-
],
|
|
9
|
-
"module": "ESNext",
|
|
10
|
-
"skipLibCheck": true,
|
|
11
|
-
"moduleResolution": "bundler",
|
|
12
|
-
"allowImportingTsExtensions": true,
|
|
13
|
-
"resolveJsonModule": true,
|
|
14
|
-
"isolatedModules": true,
|
|
15
|
-
"noEmit": true,
|
|
16
|
-
"strict": true,
|
|
17
|
-
"noUnusedLocals": true,
|
|
18
|
-
"noUnusedParameters": true,
|
|
19
|
-
"noFallthroughCasesInSwitch": true,
|
|
20
|
-
"baseUrl": ".",
|
|
21
|
-
"paths": {
|
|
22
|
-
"@/*": [
|
|
23
|
-
"./src/*"
|
|
24
|
-
]
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
"include": [
|
|
28
|
-
"src"
|
|
29
|
-
],
|
|
30
|
-
"exclude": [
|
|
31
|
-
"node_modules"
|
|
32
|
-
]
|
|
33
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sound-effects
|
|
3
|
-
version: 0.1.0
|
|
4
|
-
description: Generate sound effects using AI models (Minimax)
|
|
5
|
-
category: Media Processing
|
|
6
|
-
tags:
|
|
7
|
-
- audio
|
|
8
|
-
- sound-effects
|
|
9
|
-
- sfx
|
|
10
|
-
- ai
|
|
11
|
-
- generation
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# Sound Effects
|
|
15
|
-
|
|
16
|
-
Generate realistic sound effects from text descriptions using AI. Describe any sound — thunder, footsteps, explosions, ambient noise — and get a high-quality audio file.
|
|
17
|
-
|
|
18
|
-
## Features
|
|
19
|
-
|
|
20
|
-
- **Text-to-SFX**: Describe any sound and get an audio file
|
|
21
|
-
- **Duration Control**: Set the desired length of the sound effect
|
|
22
|
-
- **Multiple Formats**: Output to MP3, WAV, or other audio formats
|
|
23
|
-
|
|
24
|
-
## Usage
|
|
25
|
-
|
|
26
|
-
```bash
|
|
27
|
-
sound-effects generate --prompt "thunder rolling in the distance" --output ./thunder.mp3
|
|
28
|
-
sound-effects generate --prompt "footsteps on gravel" --duration 5 --output ./steps.mp3
|
|
29
|
-
sound-effects generate --prompt "spaceship engine humming" --output ./engine.mp3
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Environment Variables
|
|
33
|
-
|
|
34
|
-
- `MINIMAX_API_KEY` — API key for Minimax (required)
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "sound-effects",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"description": "Generate sound effects using AI backends",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"sound-effects": "src/index.ts"
|
|
8
|
-
},
|
|
9
|
-
"scripts": {
|
|
10
|
-
"start": "bun run src/index.ts",
|
|
11
|
-
"generate": "bun run src/index.ts generate"
|
|
12
|
-
},
|
|
13
|
-
"dependencies": {},
|
|
14
|
-
"devDependencies": {
|
|
15
|
-
"@types/bun": "latest",
|
|
16
|
-
"typescript": "^5.0.0"
|
|
17
|
-
},
|
|
18
|
-
"peerDependencies": {
|
|
19
|
-
"typescript": "^5.0.0"
|
|
20
|
-
}
|
|
21
|
-
}
|