@hasna/skills 0.0.2
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/.env.example +18 -0
- package/.npmrc.example +1 -0
- package/CONTRIBUTING.md +32 -0
- package/README.md +475 -0
- package/bin/index.js +36671 -0
- package/bin/mcp.js +30917 -0
- package/bunfig.toml +2 -0
- package/package.json +64 -0
- package/skills/skill-academic-journal-matcher/CLAUDE.md +19 -0
- package/skills/skill-academic-journal-matcher/package.json +32 -0
- package/skills/skill-academic-journal-matcher/src/index.ts +86 -0
- package/skills/skill-academic-journal-matcher/tsconfig.json +14 -0
- package/skills/skill-action-item-router/CLAUDE.md +19 -0
- package/skills/skill-action-item-router/package.json +32 -0
- package/skills/skill-action-item-router/src/index.ts +304 -0
- package/skills/skill-action-item-router/tsconfig.json +14 -0
- package/skills/skill-ad-creative-generator/CLAUDE.md +19 -0
- package/skills/skill-ad-creative-generator/package.json +32 -0
- package/skills/skill-ad-creative-generator/src/index.ts +419 -0
- package/skills/skill-ad-creative-generator/tsconfig.json +14 -0
- package/skills/skill-advanced-math/CLAUDE.md +19 -0
- package/skills/skill-advanced-math/package.json +32 -0
- package/skills/skill-advanced-math/src/index.ts +811 -0
- package/skills/skill-advanced-math/tsconfig.json +14 -0
- package/skills/skill-analyze-data/CLAUDE.md +16 -0
- package/skills/skill-analyze-data/SKILL.md +112 -0
- package/skills/skill-analyze-data/package.json +25 -0
- package/skills/skill-analyze-data/src/index.ts +1095 -0
- package/skills/skill-analyze-data/tsconfig.json +16 -0
- package/skills/skill-anomaly-investigator/CLAUDE.md +19 -0
- package/skills/skill-anomaly-investigator/package.json +32 -0
- package/skills/skill-anomaly-investigator/src/index.ts +311 -0
- package/skills/skill-anomaly-investigator/tsconfig.json +14 -0
- package/skills/skill-api-test-suite/CLAUDE.md +19 -0
- package/skills/skill-api-test-suite/package.json +32 -0
- package/skills/skill-api-test-suite/src/index.ts +368 -0
- package/skills/skill-api-test-suite/tsconfig.json +14 -0
- package/skills/skill-apidocs/.claude/settings.json +5 -0
- package/skills/skill-apidocs/.env.example +8 -0
- package/skills/skill-apidocs/CLAUDE.md +278 -0
- package/skills/skill-apidocs/LICENSE +21 -0
- package/skills/skill-apidocs/README.md +196 -0
- package/skills/skill-apidocs/api-docs-list.json +186 -0
- package/skills/skill-apidocs/package.json +60 -0
- package/skills/skill-apidocs/scripts/crawl-all.ts +157 -0
- package/skills/skill-apidocs/scripts/publish.ts +210 -0
- package/skills/skill-apidocs/src/commands/add.ts +279 -0
- package/skills/skill-apidocs/src/commands/endpoints.ts +157 -0
- package/skills/skill-apidocs/src/commands/list.ts +51 -0
- package/skills/skill-apidocs/src/commands/query.ts +63 -0
- package/skills/skill-apidocs/src/commands/remove.ts +39 -0
- package/skills/skill-apidocs/src/commands/sync.ts +227 -0
- package/skills/skill-apidocs/src/lib/crawler.ts +427 -0
- package/skills/skill-apidocs/src/lib/discovery.ts +244 -0
- package/skills/skill-apidocs/src/lib/embeddings.ts +136 -0
- package/skills/skill-apidocs/src/lib/endpoint-extractor.ts +359 -0
- package/skills/skill-apidocs/src/lib/html-to-md.ts +163 -0
- package/skills/skill-apidocs/src/lib/parser.ts +288 -0
- package/skills/skill-apidocs/src/lib/search.ts +189 -0
- package/skills/skill-apidocs/src/lib/storage.ts +242 -0
- package/skills/skill-apidocs/src/lib/vectors-local.ts +220 -0
- package/skills/skill-apidocs/src/lib/vectors-s3.ts +255 -0
- package/skills/skill-apidocs/src/lib/vectors.ts +97 -0
- package/skills/skill-apidocs/src/types/index.ts +297 -0
- package/skills/skill-apidocs/src/utils/output.ts +132 -0
- package/skills/skill-apidocs/src/utils/paths.ts +126 -0
- package/skills/skill-apidocs/tsconfig.json +21 -0
- package/skills/skill-architecture-docs/CLAUDE.md +19 -0
- package/skills/skill-architecture-docs/package.json +32 -0
- package/skills/skill-architecture-docs/src/index.ts +543 -0
- package/skills/skill-architecture-docs/tsconfig.json +14 -0
- package/skills/skill-audio/.env.example +14 -0
- package/skills/skill-audio/QUICKSTART.md +158 -0
- package/skills/skill-audio/README.md +256 -0
- package/skills/skill-audio/SKILL.md +60 -0
- package/skills/skill-audio/install.sh +112 -0
- package/skills/skill-audio/package.json +35 -0
- package/skills/skill-audio/src/auth.ts +49 -0
- package/skills/skill-audio/src/http-client.ts +128 -0
- package/skills/skill-audio/src/index-http.ts +111 -0
- package/skills/skill-audio/src/index-local.ts +203 -0
- package/skills/skill-audio/src/index.ts +111 -0
- package/skills/skill-audio/src/installer.ts +324 -0
- package/skills/skill-audio/src/providers/elevenlabs.ts +115 -0
- package/skills/skill-audio/src/providers/google.ts +116 -0
- package/skills/skill-audio/src/providers/openai.ts +115 -0
- package/skills/skill-audio/src/skill-install.ts +205 -0
- package/skills/skill-audio/src/types.ts +79 -0
- package/skills/skill-audio/tsconfig.json +19 -0
- package/skills/skill-audio-cleanup-lab/CLAUDE.md +3 -0
- package/skills/skill-audio-cleanup-lab/SKILL.md +81 -0
- package/skills/skill-audio-cleanup-lab/package.json +30 -0
- package/skills/skill-audio-cleanup-lab/src/index.ts +274 -0
- package/skills/skill-audio-cleanup-lab/tsconfig.json +18 -0
- package/skills/skill-audiobook-chapter-proofer/CLAUDE.md +19 -0
- package/skills/skill-audiobook-chapter-proofer/package.json +32 -0
- package/skills/skill-audiobook-chapter-proofer/src/index.ts +285 -0
- package/skills/skill-audiobook-chapter-proofer/tsconfig.json +14 -0
- package/skills/skill-auto-format/CLAUDE.md +19 -0
- package/skills/skill-auto-format/package.json +32 -0
- package/skills/skill-auto-format/src/index.ts +103 -0
- package/skills/skill-auto-format/tsconfig.json +14 -0
- package/skills/skill-banner-ad-suite/CLAUDE.md +19 -0
- package/skills/skill-banner-ad-suite/package.json +32 -0
- package/skills/skill-banner-ad-suite/src/index.ts +331 -0
- package/skills/skill-banner-ad-suite/tsconfig.json +14 -0
- package/skills/skill-benchmark-finder/CLAUDE.md +19 -0
- package/skills/skill-benchmark-finder/package.json +32 -0
- package/skills/skill-benchmark-finder/src/index.ts +294 -0
- package/skills/skill-benchmark-finder/tsconfig.json +14 -0
- package/skills/skill-bio-sequence-tool/CLAUDE.md +19 -0
- package/skills/skill-bio-sequence-tool/package.json +32 -0
- package/skills/skill-bio-sequence-tool/src/index.ts +85 -0
- package/skills/skill-bio-sequence-tool/tsconfig.json +14 -0
- package/skills/skill-blog-topic-cluster/CLAUDE.md +19 -0
- package/skills/skill-blog-topic-cluster/package.json +32 -0
- package/skills/skill-blog-topic-cluster/src/index.ts +274 -0
- package/skills/skill-blog-topic-cluster/tsconfig.json +14 -0
- package/skills/skill-brainstorm/README.md +17 -0
- package/skills/skill-brainstorm/install.sh +112 -0
- package/skills/skill-brainstorm/src/auth.ts +49 -0
- package/skills/skill-brainstorm/src/installer.ts +324 -0
- package/skills/skill-brainstorm/src/skill-install.ts +205 -0
- package/skills/skill-brand-style-guide/CLAUDE.md +20 -0
- package/skills/skill-brand-style-guide/SKILL.md +13 -0
- package/skills/skill-brand-style-guide/package.json +27 -0
- package/skills/skill-brand-style-guide/src/index.ts +288 -0
- package/skills/skill-brand-style-guide/tsconfig.json +19 -0
- package/skills/skill-brand-voice-audit/CLAUDE.md +19 -0
- package/skills/skill-brand-voice-audit/package.json +32 -0
- package/skills/skill-brand-voice-audit/src/index.ts +302 -0
- package/skills/skill-brand-voice-audit/tsconfig.json +14 -0
- package/skills/skill-browse/.env.example +14 -0
- package/skills/skill-browse/LICENSE +21 -0
- package/skills/skill-browse/README.md +268 -0
- package/skills/skill-browse/SKILL.md +56 -0
- package/skills/skill-browse/install.sh +112 -0
- package/skills/skill-browse/package.json +45 -0
- package/skills/skill-browse/src/auth.ts +49 -0
- package/skills/skill-browse/src/client.ts +373 -0
- package/skills/skill-browse/src/http-client.ts +128 -0
- package/skills/skill-browse/src/index-http.ts +111 -0
- package/skills/skill-browse/src/index-local.ts +430 -0
- package/skills/skill-browse/src/index.ts +111 -0
- package/skills/skill-browse/src/installer.ts +324 -0
- package/skills/skill-browse/src/skill-install.ts +205 -0
- package/skills/skill-browse/src/sse-server.ts +919 -0
- package/skills/skill-browse/src/types.ts +104 -0
- package/skills/skill-browse/tsconfig.json +19 -0
- package/skills/skill-browser-agent/CLAUDE.md +19 -0
- package/skills/skill-browser-agent/package.json +32 -0
- package/skills/skill-browser-agent/src/index.ts +626 -0
- package/skills/skill-browser-agent/tsconfig.json +14 -0
- package/skills/skill-browseruse/LICENSE +21 -0
- package/skills/skill-browseruse/README.md +27 -0
- package/skills/skill-browseruse/SKILL.md +113 -0
- package/skills/skill-browseruse/install.sh +112 -0
- package/skills/skill-browseruse/package.json +31 -0
- package/skills/skill-browseruse/src/auth.ts +49 -0
- package/skills/skill-browseruse/src/installer.ts +324 -0
- package/skills/skill-browseruse/src/skill-install.ts +174 -0
- package/skills/skill-budget-variance-analyzer/CLAUDE.md +16 -0
- package/skills/skill-budget-variance-analyzer/SKILL.md +83 -0
- package/skills/skill-budget-variance-analyzer/package.json +26 -0
- package/skills/skill-budget-variance-analyzer/src/index.ts +298 -0
- package/skills/skill-budget-variance-analyzer/tsconfig.json +16 -0
- package/skills/skill-businessactivity/CLAUDE.md +176 -0
- package/skills/skill-businessactivity/LICENSE +21 -0
- package/skills/skill-businessactivity/README.md +287 -0
- package/skills/skill-businessactivity/package.json +27 -0
- package/skills/skill-businessactivity/scripts/publish.ts +210 -0
- package/skills/skill-businessactivity/src/commands/activity.ts +211 -0
- package/skills/skill-businessactivity/src/commands/function.ts +227 -0
- package/skills/skill-businessactivity/src/commands/owner.ts +193 -0
- package/skills/skill-businessactivity/src/commands/profile.ts +121 -0
- package/skills/skill-businessactivity/src/commands/responsibility.ts +264 -0
- package/skills/skill-businessactivity/src/commands/team.ts +244 -0
- package/skills/skill-businessactivity/src/commands/workflow.ts +359 -0
- package/skills/skill-businessactivity/src/lib/config.ts +167 -0
- package/skills/skill-businessactivity/src/lib/output.ts +76 -0
- package/skills/skill-businessactivity/src/lib/paths.ts +79 -0
- package/skills/skill-businessactivity/src/lib/storage.ts +95 -0
- package/skills/skill-businessactivity/src/types/index.ts +86 -0
- package/skills/skill-businessactivity/tsconfig.json +21 -0
- package/skills/skill-calculate/LICENSE +21 -0
- package/skills/skill-calculate/README.md +17 -0
- package/skills/skill-calculate/install.sh +112 -0
- package/skills/skill-calculate/package.json +31 -0
- package/skills/skill-calculate/src/auth.ts +49 -0
- package/skills/skill-calculate/src/installer.ts +324 -0
- package/skills/skill-calculate/src/skill-install.ts +205 -0
- package/skills/skill-calendar-events/CLAUDE.md +19 -0
- package/skills/skill-calendar-events/package.json +32 -0
- package/skills/skill-calendar-events/src/index.ts +918 -0
- package/skills/skill-calendar-events/tsconfig.json +14 -0
- package/skills/skill-campaign-metric-brief/CLAUDE.md +19 -0
- package/skills/skill-campaign-metric-brief/package.json +32 -0
- package/skills/skill-campaign-metric-brief/src/index.ts +307 -0
- package/skills/skill-campaign-metric-brief/tsconfig.json +14 -0
- package/skills/skill-campaign-moodboard/CLAUDE.md +19 -0
- package/skills/skill-campaign-moodboard/package.json +32 -0
- package/skills/skill-campaign-moodboard/src/index.ts +288 -0
- package/skills/skill-campaign-moodboard/tsconfig.json +14 -0
- package/skills/skill-caption-style-stylist/CLAUDE.md +19 -0
- package/skills/skill-caption-style-stylist/package.json +32 -0
- package/skills/skill-caption-style-stylist/src/index.ts +275 -0
- package/skills/skill-caption-style-stylist/tsconfig.json +14 -0
- package/skills/skill-chemistry-calculator/CLAUDE.md +19 -0
- package/skills/skill-chemistry-calculator/package.json +32 -0
- package/skills/skill-chemistry-calculator/src/index.ts +110 -0
- package/skills/skill-chemistry-calculator/tsconfig.json +14 -0
- package/skills/skill-chromedevtools/LICENSE +21 -0
- package/skills/skill-chromedevtools/README.md +27 -0
- package/skills/skill-chromedevtools/SKILL.md +110 -0
- package/skills/skill-chromedevtools/install.sh +112 -0
- package/skills/skill-chromedevtools/package.json +31 -0
- package/skills/skill-chromedevtools/src/auth.ts +49 -0
- package/skills/skill-chromedevtools/src/installer.ts +324 -0
- package/skills/skill-chromedevtools/src/skill-install.ts +174 -0
- package/skills/skill-churn-risk-notifier/CLAUDE.md +19 -0
- package/skills/skill-churn-risk-notifier/package.json +32 -0
- package/skills/skill-churn-risk-notifier/src/index.ts +308 -0
- package/skills/skill-churn-risk-notifier/tsconfig.json +14 -0
- package/skills/skill-citation-formatter/CLAUDE.md +19 -0
- package/skills/skill-citation-formatter/package.json +32 -0
- package/skills/skill-citation-formatter/src/index.ts +83 -0
- package/skills/skill-citation-formatter/tsconfig.json +14 -0
- package/skills/skill-classroom-newsletter-kit/CLAUDE.md +19 -0
- package/skills/skill-classroom-newsletter-kit/package.json +32 -0
- package/skills/skill-classroom-newsletter-kit/src/index.ts +293 -0
- package/skills/skill-classroom-newsletter-kit/tsconfig.json +14 -0
- package/skills/skill-codefix/LICENSE +21 -0
- package/skills/skill-codefix/README.md +232 -0
- package/skills/skill-codefix/SKILL.md +94 -0
- package/skills/skill-codefix/install.sh +112 -0
- package/skills/skill-codefix/package.json +25 -0
- package/skills/skill-codefix/src/auth.ts +49 -0
- package/skills/skill-codefix/src/fixers/batch.ts +213 -0
- package/skills/skill-codefix/src/fixers/detector.ts +160 -0
- package/skills/skill-codefix/src/fixers/index.ts +7 -0
- package/skills/skill-codefix/src/fixers/runner.ts +522 -0
- package/skills/skill-codefix/src/http-client.ts +128 -0
- package/skills/skill-codefix/src/index-http.ts +111 -0
- package/skills/skill-codefix/src/index-local.ts +430 -0
- package/skills/skill-codefix/src/index.ts +111 -0
- package/skills/skill-codefix/src/installer.ts +324 -0
- package/skills/skill-codefix/src/skill-install.ts +205 -0
- package/skills/skill-codefix/src/types.ts +211 -0
- package/skills/skill-codefix/tsconfig.json +16 -0
- package/skills/skill-color-palette-harmonizer/CLAUDE.md +19 -0
- package/skills/skill-color-palette-harmonizer/package.json +32 -0
- package/skills/skill-color-palette-harmonizer/src/index.ts +278 -0
- package/skills/skill-color-palette-harmonizer/tsconfig.json +14 -0
- package/skills/skill-companyguide/LICENSE +21 -0
- package/skills/skill-companyguide/README.md +17 -0
- package/skills/skill-companyguide/install.sh +112 -0
- package/skills/skill-companyguide/package.json +31 -0
- package/skills/skill-companyguide/src/auth.ts +49 -0
- package/skills/skill-companyguide/src/installer.ts +324 -0
- package/skills/skill-companyguide/src/skill-install.ts +205 -0
- package/skills/skill-competitor-ad-analyzer/CLAUDE.md +19 -0
- package/skills/skill-competitor-ad-analyzer/package.json +32 -0
- package/skills/skill-competitor-ad-analyzer/src/index.ts +350 -0
- package/skills/skill-competitor-ad-analyzer/tsconfig.json +14 -0
- package/skills/skill-compliance-copy-check/CLAUDE.md +19 -0
- package/skills/skill-compliance-copy-check/package.json +32 -0
- package/skills/skill-compliance-copy-check/src/index.ts +289 -0
- package/skills/skill-compliance-copy-check/tsconfig.json +14 -0
- package/skills/skill-compliance-report-pack/CLAUDE.md +19 -0
- package/skills/skill-compliance-report-pack/package.json +32 -0
- package/skills/skill-compliance-report-pack/src/index.ts +301 -0
- package/skills/skill-compliance-report-pack/tsconfig.json +14 -0
- package/skills/skill-compose-gmail/CLAUDE.md +19 -0
- package/skills/skill-compose-gmail/package.json +32 -0
- package/skills/skill-compose-gmail/src/index.ts +410 -0
- package/skills/skill-compose-gmail/tsconfig.json +14 -0
- package/skills/skill-compress-video/CLAUDE.md +9 -0
- package/skills/skill-compress-video/SKILL.md +79 -0
- package/skills/skill-compress-video/package.json +30 -0
- package/skills/skill-compress-video/src/index.ts +473 -0
- package/skills/skill-compress-video/tsconfig.json +15 -0
- package/skills/skill-consolelog/.env.example +19 -0
- package/skills/skill-consolelog/CLAUDE.md +157 -0
- package/skills/skill-consolelog/LICENSE +21 -0
- package/skills/skill-consolelog/README.md +239 -0
- package/skills/skill-consolelog/data/.gitkeep +0 -0
- package/skills/skill-consolelog/exports/products-2025-12-14T13-50-53-041Z.csv +16 -0
- package/skills/skill-consolelog/exports/products-2025-12-14T13-50-53-041Z.json +227 -0
- package/skills/skill-consolelog/package.json +47 -0
- package/skills/skill-consolelog/scripts/migrate.ts +26 -0
- package/skills/skill-consolelog/scripts/seed.ts +48 -0
- package/skills/skill-consolelog/src/db/index.ts +44 -0
- package/skills/skill-consolelog/src/db/queries.ts +348 -0
- package/skills/skill-consolelog/src/db/schema.ts +93 -0
- package/skills/skill-consolelog/src/lib/config.ts +110 -0
- package/skills/skill-consolelog/src/lib/installer.ts +294 -0
- package/skills/skill-consolelog/src/lib/monitor.ts +194 -0
- package/skills/skill-consolelog/src/lib/types.ts +189 -0
- package/skills/skill-consolelog/src/lib/watcher.ts +207 -0
- package/skills/skill-consolelog/src/server/index.ts +508 -0
- package/skills/skill-consolelog/storage/login-error.png +0 -0
- package/skills/skill-consolelog/storage/products-page.png +0 -0
- package/skills/skill-consolelog/tests/api.test.ts +154 -0
- package/skills/skill-consolelog/tests/config.test.ts +192 -0
- package/skills/skill-consolelog/tests/db.test.ts +447 -0
- package/skills/skill-consolelog/tests/installer.test.ts +155 -0
- package/skills/skill-consolelog/tsconfig.json +20 -0
- package/skills/skill-context7/LICENSE +21 -0
- package/skills/skill-context7/README.md +27 -0
- package/skills/skill-context7/SKILL.md +103 -0
- package/skills/skill-context7/install.sh +112 -0
- package/skills/skill-context7/package.json +31 -0
- package/skills/skill-context7/src/auth.ts +49 -0
- package/skills/skill-context7/src/installer.ts +324 -0
- package/skills/skill-context7/src/skill-install.ts +174 -0
- package/skills/skill-contract-plainlanguage/CLAUDE.md +19 -0
- package/skills/skill-contract-plainlanguage/package.json +32 -0
- package/skills/skill-contract-plainlanguage/src/index.ts +294 -0
- package/skills/skill-contract-plainlanguage/tsconfig.json +14 -0
- package/skills/skill-convert/.env.example +7 -0
- package/skills/skill-convert/LICENSE +21 -0
- package/skills/skill-convert/README.md +250 -0
- package/skills/skill-convert/SKILL.md +100 -0
- package/skills/skill-convert/install.sh +112 -0
- package/skills/skill-convert/package.json +41 -0
- package/skills/skill-convert/src/auth.ts +49 -0
- package/skills/skill-convert/src/converters/ai.ts +375 -0
- package/skills/skill-convert/src/converters/data.ts +339 -0
- package/skills/skill-convert/src/converters/document.ts +189 -0
- package/skills/skill-convert/src/converters/image.ts +227 -0
- package/skills/skill-convert/src/converters/index.ts +9 -0
- package/skills/skill-convert/src/converters/pdf.ts +255 -0
- package/skills/skill-convert/src/http-client.ts +128 -0
- package/skills/skill-convert/src/index-http.ts +111 -0
- package/skills/skill-convert/src/index-local.ts +569 -0
- package/skills/skill-convert/src/index.ts +111 -0
- package/skills/skill-convert/src/installer.ts +324 -0
- package/skills/skill-convert/src/skill-install.ts +205 -0
- package/skills/skill-convert/src/types.ts +192 -0
- package/skills/skill-convert/tsconfig.json +16 -0
- package/skills/skill-copytone-translator/CLAUDE.md +19 -0
- package/skills/skill-copytone-translator/package.json +32 -0
- package/skills/skill-copytone-translator/src/index.ts +295 -0
- package/skills/skill-copytone-translator/tsconfig.json +14 -0
- package/skills/skill-crawl/LICENSE +21 -0
- package/skills/skill-crawl/README.md +17 -0
- package/skills/skill-crawl/install.sh +112 -0
- package/skills/skill-crawl/package.json +31 -0
- package/skills/skill-crawl/src/auth.ts +49 -0
- package/skills/skill-crawl/src/installer.ts +324 -0
- package/skills/skill-crawl/src/skill-install.ts +205 -0
- package/skills/skill-create-blog-article/CLAUDE.md +19 -0
- package/skills/skill-create-blog-article/package.json +32 -0
- package/skills/skill-create-blog-article/src/index.ts +745 -0
- package/skills/skill-create-blog-article/tsconfig.json +14 -0
- package/skills/skill-create-ebook/CLAUDE.md +19 -0
- package/skills/skill-create-ebook/package.json +32 -0
- package/skills/skill-create-ebook/src/index.ts +637 -0
- package/skills/skill-create-ebook/tsconfig.json +14 -0
- package/skills/skill-crm-note-enhancer/CLAUDE.md +19 -0
- package/skills/skill-crm-note-enhancer/package.json +32 -0
- package/skills/skill-crm-note-enhancer/src/index.ts +317 -0
- package/skills/skill-crm-note-enhancer/tsconfig.json +14 -0
- package/skills/skill-csv-transformer/CLAUDE.md +19 -0
- package/skills/skill-csv-transformer/package.json +32 -0
- package/skills/skill-csv-transformer/src/index.ts +81 -0
- package/skills/skill-csv-transformer/tsconfig.json +14 -0
- package/skills/skill-customer-journey-mapper/CLAUDE.md +19 -0
- package/skills/skill-customer-journey-mapper/package.json +32 -0
- package/skills/skill-customer-journey-mapper/src/index.ts +312 -0
- package/skills/skill-customer-journey-mapper/tsconfig.json +14 -0
- package/skills/skill-dashboard-builder/CLAUDE.md +19 -0
- package/skills/skill-dashboard-builder/package.json +32 -0
- package/skills/skill-dashboard-builder/src/index.ts +150 -0
- package/skills/skill-dashboard-builder/tsconfig.json +14 -0
- package/skills/skill-dashboard-narrator/CLAUDE.md +19 -0
- package/skills/skill-dashboard-narrator/package.json +32 -0
- package/skills/skill-dashboard-narrator/src/index.ts +307 -0
- package/skills/skill-dashboard-narrator/tsconfig.json +14 -0
- package/skills/skill-data-anonymizer/CLAUDE.md +19 -0
- package/skills/skill-data-anonymizer/package.json +32 -0
- package/skills/skill-data-anonymizer/src/index.ts +183 -0
- package/skills/skill-data-anonymizer/tsconfig.json +14 -0
- package/skills/skill-database-explorer/CLAUDE.md +19 -0
- package/skills/skill-database-explorer/package.json +32 -0
- package/skills/skill-database-explorer/src/index.ts +95 -0
- package/skills/skill-database-explorer/tsconfig.json +14 -0
- package/skills/skill-dataset-health-check/CLAUDE.md +19 -0
- package/skills/skill-dataset-health-check/package.json +32 -0
- package/skills/skill-dataset-health-check/src/index.ts +323 -0
- package/skills/skill-dataset-health-check/tsconfig.json +14 -0
- package/skills/skill-debug/LICENSE +21 -0
- package/skills/skill-debug/README.md +17 -0
- package/skills/skill-debug/install.sh +112 -0
- package/skills/skill-debug/package.json +31 -0
- package/skills/skill-debug/src/auth.ts +49 -0
- package/skills/skill-debug/src/installer.ts +324 -0
- package/skills/skill-debug/src/skill-install.ts +205 -0
- package/skills/skill-decision-journal/CLAUDE.md +19 -0
- package/skills/skill-decision-journal/package.json +32 -0
- package/skills/skill-decision-journal/src/index.ts +313 -0
- package/skills/skill-decision-journal/tsconfig.json +14 -0
- package/skills/skill-deep-research/CLAUDE.md +19 -0
- package/skills/skill-deep-research/package.json +32 -0
- package/skills/skill-deep-research/src/index.ts +1149 -0
- package/skills/skill-deep-research/tsconfig.json +14 -0
- package/skills/skill-deepresearch/.env.example +9 -0
- package/skills/skill-deepresearch/CLAUDE.md +44 -0
- package/skills/skill-deepresearch/README.md +170 -0
- package/skills/skill-deepresearch/SKILL.md +50 -0
- package/skills/skill-deepresearch/package.json +49 -0
- package/skills/skill-deepresearch/src/agents/query-generator.ts +91 -0
- package/skills/skill-deepresearch/src/agents/synthesizer.ts +111 -0
- package/skills/skill-deepresearch/src/index.ts +224 -0
- package/skills/skill-deepresearch/src/research.ts +166 -0
- package/skills/skill-deepresearch/src/services/anthropic.ts +69 -0
- package/skills/skill-deepresearch/src/services/exa.ts +108 -0
- package/skills/skill-deepresearch/src/services/firecrawl.ts +88 -0
- package/skills/skill-deepresearch/src/services/openai.ts +81 -0
- package/skills/skill-deepresearch/src/types.ts +76 -0
- package/skills/skill-deepresearch/src/utils/file.ts +111 -0
- package/skills/skill-deepresearch/src/utils/logger.ts +84 -0
- package/skills/skill-deepresearch/tsconfig.json +27 -0
- package/skills/skill-delegation-brief-writer/CLAUDE.md +19 -0
- package/skills/skill-delegation-brief-writer/package.json +32 -0
- package/skills/skill-delegation-brief-writer/src/index.ts +314 -0
- package/skills/skill-delegation-brief-writer/tsconfig.json +14 -0
- package/skills/skill-deploy/LICENSE +21 -0
- package/skills/skill-deploy/README.md +382 -0
- package/skills/skill-deploy/SKILL.md +138 -0
- package/skills/skill-deploy/install.sh +112 -0
- package/skills/skill-deploy/package.json +22 -0
- package/skills/skill-deploy/src/auth.ts +49 -0
- package/skills/skill-deploy/src/deployer.ts +256 -0
- package/skills/skill-deploy/src/health.ts +103 -0
- package/skills/skill-deploy/src/hosts.ts +62 -0
- package/skills/skill-deploy/src/http-client.ts +128 -0
- package/skills/skill-deploy/src/index-http.ts +111 -0
- package/skills/skill-deploy/src/index-local.ts +365 -0
- package/skills/skill-deploy/src/index.ts +111 -0
- package/skills/skill-deploy/src/installer.ts +324 -0
- package/skills/skill-deploy/src/skill-install.ts +205 -0
- package/skills/skill-deploy/src/types.ts +56 -0
- package/skills/skill-deploy/tsconfig.json +17 -0
- package/skills/skill-destination-briefing/CLAUDE.md +19 -0
- package/skills/skill-destination-briefing/package.json +32 -0
- package/skills/skill-destination-briefing/src/index.ts +291 -0
- package/skills/skill-destination-briefing/tsconfig.json +14 -0
- package/skills/skill-diff-viewer/CLAUDE.md +19 -0
- package/skills/skill-diff-viewer/package.json +32 -0
- package/skills/skill-diff-viewer/src/index.ts +164 -0
- package/skills/skill-diff-viewer/tsconfig.json +14 -0
- package/skills/skill-dns-manager/CLAUDE.md +19 -0
- package/skills/skill-dns-manager/package.json +32 -0
- package/skills/skill-dns-manager/src/index.ts +92 -0
- package/skills/skill-dns-manager/tsconfig.json +14 -0
- package/skills/skill-domainpurchase/.env.example +7 -0
- package/skills/skill-domainpurchase/LICENSE +21 -0
- package/skills/skill-domainpurchase/package.json +42 -0
- package/skills/skill-domainpurchase/src/lib/api-client.ts +571 -0
- package/skills/skill-domainpurchase/src/lib/config.ts +209 -0
- package/skills/skill-domainpurchase/src/lib/installer.ts +165 -0
- package/skills/skill-domainpurchase/src/server/index.ts +332 -0
- package/skills/skill-domainpurchase/tsconfig.json +22 -0
- package/skills/skill-domainsearch/.env.example +7 -0
- package/skills/skill-domainsearch/LICENSE +21 -0
- package/skills/skill-domainsearch/package.json +41 -0
- package/skills/skill-domainsearch/src/lib/api-client.ts +181 -0
- package/skills/skill-domainsearch/src/lib/config.ts +72 -0
- package/skills/skill-domainsearch/src/lib/installer.ts +164 -0
- package/skills/skill-domainsearch/src/server/index.ts +229 -0
- package/skills/skill-domainsearch/tsconfig.json +22 -0
- package/skills/skill-download/LICENSE +21 -0
- package/skills/skill-download/README.md +17 -0
- package/skills/skill-download/install.sh +112 -0
- package/skills/skill-download/package.json +31 -0
- package/skills/skill-download/src/auth.ts +49 -0
- package/skills/skill-download/src/installer.ts +324 -0
- package/skills/skill-download/src/skill-install.ts +205 -0
- package/skills/skill-e2bswarm/README.md +135 -0
- package/skills/skill-e2bswarm/SKILL.md +118 -0
- package/skills/skill-e2bswarm/examples/tasks-example.json +38 -0
- package/skills/skill-e2bswarm/package.json +65 -0
- package/skills/skill-e2bswarm/src/commands/collect.ts +135 -0
- package/skills/skill-e2bswarm/src/commands/install.ts +164 -0
- package/skills/skill-e2bswarm/src/commands/kill.ts +62 -0
- package/skills/skill-e2bswarm/src/commands/spawn.ts +134 -0
- package/skills/skill-e2bswarm/src/commands/status.ts +90 -0
- package/skills/skill-e2bswarm/src/commands/sync.ts +208 -0
- package/skills/skill-e2bswarm/src/index.ts +121 -0
- package/skills/skill-e2bswarm/src/lib/config.ts +78 -0
- package/skills/skill-e2bswarm/src/lib/e2b.ts +490 -0
- package/skills/skill-e2bswarm/src/lib/github.ts +253 -0
- package/skills/skill-e2bswarm/src/lib/logger.ts +41 -0
- package/skills/skill-e2bswarm/src/lib/paths.ts +75 -0
- package/skills/skill-e2bswarm/src/lib/tasks.ts +320 -0
- package/skills/skill-e2bswarm/src/types/index.ts +107 -0
- package/skills/skill-e2bswarm/templates/codebox/e2b.Dockerfile +38 -0
- package/skills/skill-e2bswarm/templates/codebox/e2b.toml +3 -0
- package/skills/skill-e2bswarm/templates/setup.sh +21 -0
- package/skills/skill-e2bswarm/tsconfig.json +20 -0
- package/skills/skill-educational-resource-finder/CLAUDE.md +19 -0
- package/skills/skill-educational-resource-finder/package.json +32 -0
- package/skills/skill-educational-resource-finder/src/index.ts +289 -0
- package/skills/skill-educational-resource-finder/tsconfig.json +14 -0
- package/skills/skill-email-campaign/CLAUDE.md +19 -0
- package/skills/skill-email-campaign/package.json +32 -0
- package/skills/skill-email-campaign/src/index.ts +339 -0
- package/skills/skill-email-campaign/tsconfig.json +14 -0
- package/skills/skill-emoji/.env.example +7 -0
- package/skills/skill-emoji/QUICKSTART.md +52 -0
- package/skills/skill-emoji/README.md +175 -0
- package/skills/skill-emoji/SKILL.md +63 -0
- package/skills/skill-emoji/package.json +32 -0
- package/skills/skill-emoji/src/image-processor.ts +143 -0
- package/skills/skill-emoji/src/index.ts +282 -0
- package/skills/skill-emoji/src/prompt-generator.ts +181 -0
- package/skills/skill-emoji/src/providers/gemini.ts +58 -0
- package/skills/skill-emoji/src/providers/openai.ts +55 -0
- package/skills/skill-emoji/src/types.ts +72 -0
- package/skills/skill-emoji/tsconfig.json +18 -0
- package/skills/skill-exa/LICENSE +21 -0
- package/skills/skill-exa/README.md +26 -0
- package/skills/skill-exa/SKILL.md +92 -0
- package/skills/skill-exa/install.sh +112 -0
- package/skills/skill-exa/package.json +31 -0
- package/skills/skill-exa/src/auth.ts +49 -0
- package/skills/skill-exa/src/installer.ts +324 -0
- package/skills/skill-exa/src/skill-install.ts +174 -0
- package/skills/skill-exam-readiness-check/CLAUDE.md +19 -0
- package/skills/skill-exam-readiness-check/package.json +32 -0
- package/skills/skill-exam-readiness-check/src/index.ts +289 -0
- package/skills/skill-exam-readiness-check/tsconfig.json +14 -0
- package/skills/skill-experiment-power-calculator/CLAUDE.md +19 -0
- package/skills/skill-experiment-power-calculator/package.json +32 -0
- package/skills/skill-experiment-power-calculator/src/index.ts +86 -0
- package/skills/skill-experiment-power-calculator/tsconfig.json +14 -0
- package/skills/skill-extract/.env.example +3 -0
- package/skills/skill-extract/LICENSE +21 -0
- package/skills/skill-extract/README.md +61 -0
- package/skills/skill-extract/SKILL.md +91 -0
- package/skills/skill-extract/install.sh +112 -0
- package/skills/skill-extract/package.json +40 -0
- package/skills/skill-extract/src/auth.ts +49 -0
- package/skills/skill-extract/src/extractors/image.ts +42 -0
- package/skills/skill-extract/src/extractors/pdf.ts +96 -0
- package/skills/skill-extract/src/http-client.ts +128 -0
- package/skills/skill-extract/src/index-http.ts +111 -0
- package/skills/skill-extract/src/index-local.ts +257 -0
- package/skills/skill-extract/src/index.ts +111 -0
- package/skills/skill-extract/src/installer.ts +324 -0
- package/skills/skill-extract/src/providers/openai.ts +222 -0
- package/skills/skill-extract/src/skill-install.ts +205 -0
- package/skills/skill-extract/src/types.ts +61 -0
- package/skills/skill-extract/tsconfig.json +17 -0
- package/skills/skill-extract-audio/CLAUDE.md +9 -0
- package/skills/skill-extract-audio/SKILL.md +73 -0
- package/skills/skill-extract-audio/package.json +30 -0
- package/skills/skill-extract-audio/src/index.ts +323 -0
- package/skills/skill-extract-audio/tsconfig.json +15 -0
- package/skills/skill-extract-frames/CLAUDE.md +19 -0
- package/skills/skill-extract-frames/package.json +32 -0
- package/skills/skill-extract-frames/src/index.ts +616 -0
- package/skills/skill-extract-frames/tsconfig.json +14 -0
- package/skills/skill-extract-invoice/CLAUDE.md +19 -0
- package/skills/skill-extract-invoice/package.json +32 -0
- package/skills/skill-extract-invoice/src/index.ts +714 -0
- package/skills/skill-extract-invoice/tsconfig.json +14 -0
- package/skills/skill-family-activity-curator/CLAUDE.md +19 -0
- package/skills/skill-family-activity-curator/package.json +32 -0
- package/skills/skill-family-activity-curator/src/index.ts +293 -0
- package/skills/skill-family-activity-curator/tsconfig.json +14 -0
- package/skills/skill-faq-packager/CLAUDE.md +19 -0
- package/skills/skill-faq-packager/package.json +32 -0
- package/skills/skill-faq-packager/src/index.ts +292 -0
- package/skills/skill-faq-packager/tsconfig.json +14 -0
- package/skills/skill-feedback-survey-designer/CLAUDE.md +19 -0
- package/skills/skill-feedback-survey-designer/package.json +32 -0
- package/skills/skill-feedback-survey-designer/src/index.ts +299 -0
- package/skills/skill-feedback-survey-designer/tsconfig.json +14 -0
- package/skills/skill-field-trip-planner/CLAUDE.md +19 -0
- package/skills/skill-field-trip-planner/package.json +32 -0
- package/skills/skill-field-trip-planner/src/index.ts +289 -0
- package/skills/skill-field-trip-planner/tsconfig.json +14 -0
- package/skills/skill-file-organizer/CLAUDE.md +19 -0
- package/skills/skill-file-organizer/package.json +32 -0
- package/skills/skill-file-organizer/src/index.ts +91 -0
- package/skills/skill-file-organizer/tsconfig.json +14 -0
- package/skills/skill-filesearch/LICENSE +21 -0
- package/skills/skill-filesearch/README.md +17 -0
- package/skills/skill-filesearch/install.sh +112 -0
- package/skills/skill-filesearch/package.json +31 -0
- package/skills/skill-filesearch/src/auth.ts +49 -0
- package/skills/skill-filesearch/src/installer.ts +324 -0
- package/skills/skill-filesearch/src/skill-install.ts +205 -0
- package/skills/skill-fill/LICENSE +21 -0
- package/skills/skill-fill/README.md +17 -0
- package/skills/skill-fill/install.sh +112 -0
- package/skills/skill-fill/package.json +31 -0
- package/skills/skill-fill/src/auth.ts +49 -0
- package/skills/skill-fill/src/installer.ts +324 -0
- package/skills/skill-fill/src/skill-install.ts +205 -0
- package/skills/skill-folder-tree/CLAUDE.md +19 -0
- package/skills/skill-folder-tree/package.json +32 -0
- package/skills/skill-folder-tree/src/index.ts +568 -0
- package/skills/skill-folder-tree/tsconfig.json +14 -0
- package/skills/skill-forecast-scenario-lab/CLAUDE.md +19 -0
- package/skills/skill-forecast-scenario-lab/package.json +32 -0
- package/skills/skill-forecast-scenario-lab/src/index.ts +314 -0
- package/skills/skill-forecast-scenario-lab/tsconfig.json +14 -0
- package/skills/skill-form-filler/CLAUDE.md +19 -0
- package/skills/skill-form-filler/package.json +32 -0
- package/skills/skill-form-filler/src/index.ts +81 -0
- package/skills/skill-form-filler/tsconfig.json +14 -0
- package/skills/skill-generate-api-client/CLAUDE.md +19 -0
- package/skills/skill-generate-api-client/package.json +32 -0
- package/skills/skill-generate-api-client/src/index.ts +866 -0
- package/skills/skill-generate-api-client/tsconfig.json +14 -0
- package/skills/skill-generate-audio/CLAUDE.md +3 -0
- package/skills/skill-generate-audio/SKILL.md +53 -0
- package/skills/skill-generate-audio/package.json +30 -0
- package/skills/skill-generate-audio/src/index.ts +656 -0
- package/skills/skill-generate-audio/tsconfig.json +18 -0
- package/skills/skill-generate-book-cover/CLAUDE.md +19 -0
- package/skills/skill-generate-book-cover/package.json +32 -0
- package/skills/skill-generate-book-cover/src/index.ts +694 -0
- package/skills/skill-generate-book-cover/tsconfig.json +14 -0
- package/skills/skill-generate-chart/CLAUDE.md +19 -0
- package/skills/skill-generate-chart/package.json +32 -0
- package/skills/skill-generate-chart/src/index.ts +510 -0
- package/skills/skill-generate-chart/tsconfig.json +14 -0
- package/skills/skill-generate-diagram/CLAUDE.md +19 -0
- package/skills/skill-generate-diagram/package.json +32 -0
- package/skills/skill-generate-diagram/src/index.ts +514 -0
- package/skills/skill-generate-diagram/tsconfig.json +14 -0
- package/skills/skill-generate-dockerfile/CLAUDE.md +19 -0
- package/skills/skill-generate-dockerfile/package.json +32 -0
- package/skills/skill-generate-dockerfile/src/index.ts +859 -0
- package/skills/skill-generate-dockerfile/tsconfig.json +14 -0
- package/skills/skill-generate-documentation/CLAUDE.md +19 -0
- package/skills/skill-generate-documentation/package.json +32 -0
- package/skills/skill-generate-documentation/src/index.ts +805 -0
- package/skills/skill-generate-documentation/tsconfig.json +14 -0
- package/skills/skill-generate-docx/CLAUDE.md +19 -0
- package/skills/skill-generate-docx/SKILL.md +295 -0
- package/skills/skill-generate-docx/package.json +21 -0
- package/skills/skill-generate-docx/src/index.ts +751 -0
- package/skills/skill-generate-docx/tsconfig.json +16 -0
- package/skills/skill-generate-env/CLAUDE.md +19 -0
- package/skills/skill-generate-env/package.json +32 -0
- package/skills/skill-generate-env/src/index.ts +720 -0
- package/skills/skill-generate-env/tsconfig.json +14 -0
- package/skills/skill-generate-excel/CLAUDE.md +19 -0
- package/skills/skill-generate-excel/package.json +32 -0
- package/skills/skill-generate-excel/src/index.ts +617 -0
- package/skills/skill-generate-excel/tsconfig.json +14 -0
- package/skills/skill-generate-favicon/CLAUDE.md +19 -0
- package/skills/skill-generate-favicon/package.json +32 -0
- package/skills/skill-generate-favicon/src/index.ts +421 -0
- package/skills/skill-generate-favicon/tsconfig.json +14 -0
- package/skills/skill-generate-mock-data/CLAUDE.md +19 -0
- package/skills/skill-generate-mock-data/package.json +32 -0
- package/skills/skill-generate-mock-data/src/index.ts +902 -0
- package/skills/skill-generate-mock-data/tsconfig.json +14 -0
- package/skills/skill-generate-pdf/CLAUDE.md +19 -0
- package/skills/skill-generate-pdf/SKILL.md +86 -0
- package/skills/skill-generate-pdf/package.json +21 -0
- package/skills/skill-generate-pdf/src/index.ts +750 -0
- package/skills/skill-generate-pdf/tsconfig.json +16 -0
- package/skills/skill-generate-pr-description/CLAUDE.md +19 -0
- package/skills/skill-generate-pr-description/package.json +32 -0
- package/skills/skill-generate-pr-description/src/index.ts +807 -0
- package/skills/skill-generate-pr-description/tsconfig.json +14 -0
- package/skills/skill-generate-presentation/CLAUDE.md +19 -0
- package/skills/skill-generate-presentation/package.json +32 -0
- package/skills/skill-generate-presentation/src/index.ts +792 -0
- package/skills/skill-generate-presentation/tsconfig.json +14 -0
- package/skills/skill-generate-qrcode/CLAUDE.md +19 -0
- package/skills/skill-generate-qrcode/package.json +32 -0
- package/skills/skill-generate-qrcode/src/index.ts +584 -0
- package/skills/skill-generate-qrcode/tsconfig.json +14 -0
- package/skills/skill-generate-readme/CLAUDE.md +19 -0
- package/skills/skill-generate-readme/package.json +32 -0
- package/skills/skill-generate-readme/src/index.ts +867 -0
- package/skills/skill-generate-readme/tsconfig.json +14 -0
- package/skills/skill-generate-regex/CLAUDE.md +19 -0
- package/skills/skill-generate-regex/package.json +32 -0
- package/skills/skill-generate-regex/src/index.ts +669 -0
- package/skills/skill-generate-regex/tsconfig.json +14 -0
- package/skills/skill-generate-resume/CLAUDE.md +19 -0
- package/skills/skill-generate-resume/package.json +32 -0
- package/skills/skill-generate-resume/src/index.ts +1082 -0
- package/skills/skill-generate-resume/tsconfig.json +14 -0
- package/skills/skill-generate-sitemap/CLAUDE.md +19 -0
- package/skills/skill-generate-sitemap/package.json +32 -0
- package/skills/skill-generate-sitemap/src/index.ts +626 -0
- package/skills/skill-generate-sitemap/tsconfig.json +14 -0
- package/skills/skill-generate-slides/CLAUDE.md +19 -0
- package/skills/skill-generate-slides/package.json +32 -0
- package/skills/skill-generate-slides/src/ai.ts +140 -0
- package/skills/skill-generate-slides/src/cli.ts +161 -0
- package/skills/skill-generate-slides/src/export.ts +65 -0
- package/skills/skill-generate-slides/src/index.ts +1417 -0
- package/skills/skill-generate-slides/src/layout.ts +31 -0
- package/skills/skill-generate-slides/src/parse.ts +282 -0
- package/skills/skill-generate-slides/src/render.ts +711 -0
- package/skills/skill-generate-slides/tsconfig.json +14 -0
- package/skills/skill-generate-social-posts/CLAUDE.md +19 -0
- package/skills/skill-generate-social-posts/package.json +32 -0
- package/skills/skill-generate-social-posts/src/index.ts +768 -0
- package/skills/skill-generate-social-posts/tsconfig.json +14 -0
- package/skills/skill-generate-sql/CLAUDE.md +19 -0
- package/skills/skill-generate-sql/package.json +32 -0
- package/skills/skill-generate-sql/src/index.ts +636 -0
- package/skills/skill-generate-sql/tsconfig.json +14 -0
- package/skills/skill-get-api-docs/CLAUDE.md +19 -0
- package/skills/skill-get-api-docs/package.json +32 -0
- package/skills/skill-get-api-docs/src/index.ts +1176 -0
- package/skills/skill-get-api-docs/tsconfig.json +14 -0
- package/skills/skill-gif-maker/CLAUDE.md +19 -0
- package/skills/skill-gif-maker/package.json +32 -0
- package/skills/skill-gif-maker/src/index.ts +600 -0
- package/skills/skill-gif-maker/tsconfig.json +14 -0
- package/skills/skill-github-manager/CLAUDE.md +19 -0
- package/skills/skill-github-manager/package.json +32 -0
- package/skills/skill-github-manager/src/index.ts +101 -0
- package/skills/skill-github-manager/tsconfig.json +14 -0
- package/skills/skill-goal-quarterly-roadmap/CLAUDE.md +19 -0
- package/skills/skill-goal-quarterly-roadmap/package.json +32 -0
- package/skills/skill-goal-quarterly-roadmap/src/index.ts +305 -0
- package/skills/skill-goal-quarterly-roadmap/tsconfig.json +14 -0
- package/skills/skill-googledrive/LICENSE +21 -0
- package/skills/skill-googledrive/README.md +27 -0
- package/skills/skill-googledrive/SKILL.md +140 -0
- package/skills/skill-googledrive/install.sh +112 -0
- package/skills/skill-googledrive/package.json +31 -0
- package/skills/skill-googledrive/src/auth.ts +49 -0
- package/skills/skill-googledrive/src/installer.ts +324 -0
- package/skills/skill-googledrive/src/skill-install.ts +174 -0
- package/skills/skill-grant-application-drafter/CLAUDE.md +19 -0
- package/skills/skill-grant-application-drafter/package.json +32 -0
- package/skills/skill-grant-application-drafter/src/index.ts +309 -0
- package/skills/skill-grant-application-drafter/tsconfig.json +14 -0
- package/skills/skill-grant-compliance-scanner/CLAUDE.md +19 -0
- package/skills/skill-grant-compliance-scanner/package.json +32 -0
- package/skills/skill-grant-compliance-scanner/src/index.ts +94 -0
- package/skills/skill-grant-compliance-scanner/tsconfig.json +14 -0
- package/skills/skill-grocery-basket-optimizer/CLAUDE.md +19 -0
- package/skills/skill-grocery-basket-optimizer/package.json +32 -0
- package/skills/skill-grocery-basket-optimizer/src/index.ts +304 -0
- package/skills/skill-grocery-basket-optimizer/tsconfig.json +14 -0
- package/skills/skill-guest-communication-suite/CLAUDE.md +19 -0
- package/skills/skill-guest-communication-suite/package.json +32 -0
- package/skills/skill-guest-communication-suite/src/index.ts +312 -0
- package/skills/skill-guest-communication-suite/tsconfig.json +14 -0
- package/skills/skill-habit-reflection-digest/CLAUDE.md +19 -0
- package/skills/skill-habit-reflection-digest/package.json +32 -0
- package/skills/skill-habit-reflection-digest/src/index.ts +308 -0
- package/skills/skill-habit-reflection-digest/tsconfig.json +14 -0
- package/skills/skill-highlight-reel-generator/CLAUDE.md +19 -0
- package/skills/skill-highlight-reel-generator/package.json +32 -0
- package/skills/skill-highlight-reel-generator/src/index.ts +267 -0
- package/skills/skill-highlight-reel-generator/tsconfig.json +14 -0
- package/skills/skill-homework-feedback-coach/CLAUDE.md +19 -0
- package/skills/skill-homework-feedback-coach/package.json +32 -0
- package/skills/skill-homework-feedback-coach/src/index.ts +316 -0
- package/skills/skill-homework-feedback-coach/tsconfig.json +14 -0
- package/skills/skill-hook/LICENSE +21 -0
- package/skills/skill-hook/README.md +74 -0
- package/skills/skill-hook/SKILL.md +85 -0
- package/skills/skill-hook/bunfig.toml +5 -0
- package/skills/skill-hook/package.json +34 -0
- package/skills/skill-hook/src/commands/create.ts +937 -0
- package/skills/skill-hook/src/commands/events.ts +37 -0
- package/skills/skill-hook/src/commands/validate.ts +117 -0
- package/skills/skill-hook/src/index.ts +118 -0
- package/skills/skill-hook/tsconfig.json +18 -0
- package/skills/skill-household-maintenance-mgr/CLAUDE.md +19 -0
- package/skills/skill-household-maintenance-mgr/package.json +32 -0
- package/skills/skill-household-maintenance-mgr/src/index.ts +293 -0
- package/skills/skill-household-maintenance-mgr/tsconfig.json +14 -0
- package/skills/skill-http-server/CLAUDE.md +19 -0
- package/skills/skill-http-server/package.json +32 -0
- package/skills/skill-http-server/src/index.ts +51 -0
- package/skills/skill-http-server/tsconfig.json +14 -0
- package/skills/skill-hubsearch/LICENSE +21 -0
- package/skills/skill-hubsearch/README.md +17 -0
- package/skills/skill-hubsearch/install.sh +112 -0
- package/skills/skill-hubsearch/package.json +31 -0
- package/skills/skill-hubsearch/src/auth.ts +49 -0
- package/skills/skill-hubsearch/src/installer.ts +324 -0
- package/skills/skill-hubsearch/src/skill-install.ts +205 -0
- package/skills/skill-image/.env.example +12 -0
- package/skills/skill-image/LICENSE +21 -0
- package/skills/skill-image/PROJECT_OVERVIEW.md +216 -0
- package/skills/skill-image/QUICKSTART.md +111 -0
- package/skills/skill-image/README.md +195 -0
- package/skills/skill-image/SKILL.md +56 -0
- package/skills/skill-image/examples/google-examples.sh +37 -0
- package/skills/skill-image/examples/openai-examples.sh +35 -0
- package/skills/skill-image/examples/xai-examples.sh +33 -0
- package/skills/skill-image/install.sh +112 -0
- package/skills/skill-image/package.json +36 -0
- package/skills/skill-image/src/auth.ts +49 -0
- package/skills/skill-image/src/http-client.ts +128 -0
- package/skills/skill-image/src/index-http.ts +111 -0
- package/skills/skill-image/src/index-local.ts +204 -0
- package/skills/skill-image/src/index.ts +111 -0
- package/skills/skill-image/src/installer.ts +324 -0
- package/skills/skill-image/src/providers/google.ts +79 -0
- package/skills/skill-image/src/providers/openai.ts +80 -0
- package/skills/skill-image/src/providers/xai.ts +73 -0
- package/skills/skill-image/src/skill-install.ts +205 -0
- package/skills/skill-image/src/types.ts +37 -0
- package/skills/skill-image/tsconfig.json +17 -0
- package/skills/skill-implementation/LICENSE +21 -0
- package/skills/skill-implementation/README.md +53 -0
- package/skills/skill-implementation/SKILL.md +57 -0
- package/skills/skill-implementation/bunfig.toml +5 -0
- package/skills/skill-implementation/package.json +34 -0
- package/skills/skill-implementation/src/commands/create.ts +187 -0
- package/skills/skill-implementation/src/index.ts +62 -0
- package/skills/skill-implementation/tsconfig.json +18 -0
- package/skills/skill-implementation-agent/CLAUDE.md +19 -0
- package/skills/skill-implementation-agent/package.json +32 -0
- package/skills/skill-implementation-agent/src/index.ts +1565 -0
- package/skills/skill-implementation-agent/tsconfig.json +14 -0
- package/skills/skill-implementation-architecture/CLAUDE.md +19 -0
- package/skills/skill-implementation-architecture/package.json +32 -0
- package/skills/skill-implementation-architecture/src/index.ts +460 -0
- package/skills/skill-implementation-architecture/tsconfig.json +14 -0
- package/skills/skill-implementation-audit/CLAUDE.md +19 -0
- package/skills/skill-implementation-audit/package.json +32 -0
- package/skills/skill-implementation-audit/src/index.ts +502 -0
- package/skills/skill-implementation-audit/tsconfig.json +14 -0
- package/skills/skill-implementation-cost/CLAUDE.md +19 -0
- package/skills/skill-implementation-cost/package.json +32 -0
- package/skills/skill-implementation-cost/src/index.ts +873 -0
- package/skills/skill-implementation-cost/tsconfig.json +14 -0
- package/skills/skill-implementation-dispatch/CLAUDE.md +19 -0
- package/skills/skill-implementation-dispatch/package.json +32 -0
- package/skills/skill-implementation-dispatch/src/index.ts +390 -0
- package/skills/skill-implementation-dispatch/tsconfig.json +14 -0
- package/skills/skill-implementation-hook/CLAUDE.md +19 -0
- package/skills/skill-implementation-hook/package.json +32 -0
- package/skills/skill-implementation-hook/src/index.ts +787 -0
- package/skills/skill-implementation-hook/tsconfig.json +14 -0
- package/skills/skill-implementation-index/CLAUDE.md +19 -0
- package/skills/skill-implementation-index/package.json +32 -0
- package/skills/skill-implementation-index/src/index.ts +767 -0
- package/skills/skill-implementation-index/tsconfig.json +14 -0
- package/skills/skill-implementation-init/CLAUDE.md +19 -0
- package/skills/skill-implementation-init/package.json +32 -0
- package/skills/skill-implementation-init/src/index.ts +378 -0
- package/skills/skill-implementation-init/tsconfig.json +14 -0
- package/skills/skill-implementation-memento/CLAUDE.md +19 -0
- package/skills/skill-implementation-memento/package.json +32 -0
- package/skills/skill-implementation-memento/src/index.ts +442 -0
- package/skills/skill-implementation-memento/tsconfig.json +14 -0
- package/skills/skill-implementation-plan/CLAUDE.md +19 -0
- package/skills/skill-implementation-plan/package.json +32 -0
- package/skills/skill-implementation-plan/src/index.ts +520 -0
- package/skills/skill-implementation-plan/tsconfig.json +14 -0
- package/skills/skill-implementation-todo/CLAUDE.md +19 -0
- package/skills/skill-implementation-todo/package.json +32 -0
- package/skills/skill-implementation-todo/src/index.ts +429 -0
- package/skills/skill-implementation-todo/tsconfig.json +14 -0
- package/skills/skill-inbox-priority-planner/CLAUDE.md +19 -0
- package/skills/skill-inbox-priority-planner/package.json +32 -0
- package/skills/skill-inbox-priority-planner/src/index.ts +309 -0
- package/skills/skill-inbox-priority-planner/tsconfig.json +14 -0
- package/skills/skill-invoice/.env.example +3 -0
- package/skills/skill-invoice/CLAUDE.md +31 -0
- package/skills/skill-invoice/LICENSE +21 -0
- package/skills/skill-invoice/README.md +70 -0
- package/skills/skill-invoice/package.json +26 -0
- package/skills/skill-invoice/src/commands/companies.ts +202 -0
- package/skills/skill-invoice/src/commands/config.ts +132 -0
- package/skills/skill-invoice/src/commands/generate.ts +177 -0
- package/skills/skill-invoice/src/commands/invoices.ts +218 -0
- package/skills/skill-invoice/src/lib/api.ts +124 -0
- package/skills/skill-invoice/src/lib/storage.ts +171 -0
- package/skills/skill-invoice/src/types/index.ts +86 -0
- package/skills/skill-invoice/src/utils/logger.ts +33 -0
- package/skills/skill-invoice/src/utils/paths.ts +25 -0
- package/skills/skill-invoice/tsconfig.json +19 -0
- package/skills/skill-invoice-dispute-helper/CLAUDE.md +19 -0
- package/skills/skill-invoice-dispute-helper/package.json +32 -0
- package/skills/skill-invoice-dispute-helper/src/index.ts +304 -0
- package/skills/skill-invoice-dispute-helper/tsconfig.json +14 -0
- package/skills/skill-itinerary-architect/CLAUDE.md +19 -0
- package/skills/skill-itinerary-architect/package.json +32 -0
- package/skills/skill-itinerary-architect/src/index.ts +313 -0
- package/skills/skill-itinerary-architect/tsconfig.json +14 -0
- package/skills/skill-jingle-composer/CLAUDE.md +19 -0
- package/skills/skill-jingle-composer/package.json +32 -0
- package/skills/skill-jingle-composer/src/index.ts +250 -0
- package/skills/skill-jingle-composer/tsconfig.json +14 -0
- package/skills/skill-kpi-digest-generator/CLAUDE.md +19 -0
- package/skills/skill-kpi-digest-generator/package.json +32 -0
- package/skills/skill-kpi-digest-generator/src/index.ts +318 -0
- package/skills/skill-kpi-digest-generator/tsconfig.json +14 -0
- package/skills/skill-lab-notebook-formatter/CLAUDE.md +19 -0
- package/skills/skill-lab-notebook-formatter/package.json +32 -0
- package/skills/skill-lab-notebook-formatter/src/index.ts +88 -0
- package/skills/skill-lab-notebook-formatter/tsconfig.json +14 -0
- package/skills/skill-landing-page-copy/CLAUDE.md +19 -0
- package/skills/skill-landing-page-copy/package.json +32 -0
- package/skills/skill-landing-page-copy/src/index.ts +400 -0
- package/skills/skill-landing-page-copy/tsconfig.json +14 -0
- package/skills/skill-latex-table-generator/CLAUDE.md +19 -0
- package/skills/skill-latex-table-generator/package.json +32 -0
- package/skills/skill-latex-table-generator/src/index.ts +113 -0
- package/skills/skill-latex-table-generator/tsconfig.json +14 -0
- package/skills/skill-learning-style-profiler/CLAUDE.md +19 -0
- package/skills/skill-learning-style-profiler/package.json +32 -0
- package/skills/skill-learning-style-profiler/src/index.ts +291 -0
- package/skills/skill-learning-style-profiler/tsconfig.json +14 -0
- package/skills/skill-lesson-plan-customizer/CLAUDE.md +19 -0
- package/skills/skill-lesson-plan-customizer/package.json +32 -0
- package/skills/skill-lesson-plan-customizer/src/index.ts +303 -0
- package/skills/skill-lesson-plan-customizer/tsconfig.json +14 -0
- package/skills/skill-linear/LICENSE +21 -0
- package/skills/skill-linear/README.md +28 -0
- package/skills/skill-linear/SKILL.md +94 -0
- package/skills/skill-linear/install.sh +112 -0
- package/skills/skill-linear/package.json +31 -0
- package/skills/skill-linear/src/auth.ts +49 -0
- package/skills/skill-linear/src/installer.ts +324 -0
- package/skills/skill-linear/src/skill-install.ts +174 -0
- package/skills/skill-livestream-runofshow/CLAUDE.md +19 -0
- package/skills/skill-livestream-runofshow/package.json +32 -0
- package/skills/skill-livestream-runofshow/src/index.ts +299 -0
- package/skills/skill-livestream-runofshow/tsconfig.json +14 -0
- package/skills/skill-longform-structurer/CLAUDE.md +19 -0
- package/skills/skill-longform-structurer/package.json +32 -0
- package/skills/skill-longform-structurer/src/index.ts +293 -0
- package/skills/skill-longform-structurer/tsconfig.json +14 -0
- package/skills/skill-lorem-generator/CLAUDE.md +19 -0
- package/skills/skill-lorem-generator/package.json +32 -0
- package/skills/skill-lorem-generator/src/index.ts +46 -0
- package/skills/skill-lorem-generator/tsconfig.json +14 -0
- package/skills/skill-mail/LICENSE +21 -0
- package/skills/skill-mail/README.md +17 -0
- package/skills/skill-mail/install.sh +112 -0
- package/skills/skill-mail/package.json +31 -0
- package/skills/skill-mail/src/auth.ts +49 -0
- package/skills/skill-mail/src/installer.ts +324 -0
- package/skills/skill-mail/src/skill-install.ts +205 -0
- package/skills/skill-manage-gmail/CLAUDE.md +19 -0
- package/skills/skill-manage-gmail/package.json +32 -0
- package/skills/skill-manage-gmail/src/index.ts +504 -0
- package/skills/skill-manage-gmail/tsconfig.json +14 -0
- package/skills/skill-managehook/.env.example +16 -0
- package/skills/skill-managehook/CLAUDE.md +159 -0
- package/skills/skill-managehook/README.md +209 -0
- package/skills/skill-managehook/package.json +27 -0
- package/skills/skill-managehook/scripts/migrate.ts +57 -0
- package/skills/skill-managehook/scripts/seed.ts +58 -0
- package/skills/skill-managehook/src/db/index.ts +37 -0
- package/skills/skill-managehook/src/lib/api-client.ts +108 -0
- package/skills/skill-managehook/src/lib/config.ts +34 -0
- package/skills/skill-managehook/src/lib/installer.ts +140 -0
- package/skills/skill-managehook/src/lib/service-dir.ts +119 -0
- package/skills/skill-managehook/src/server/index.ts +108 -0
- package/skills/skill-managehook/tsconfig.json +21 -0
- package/skills/skill-managemcp/.env.example +16 -0
- package/skills/skill-managemcp/CLAUDE.md +159 -0
- package/skills/skill-managemcp/README.md +209 -0
- package/skills/skill-managemcp/package.json +27 -0
- package/skills/skill-managemcp/scripts/migrate.ts +57 -0
- package/skills/skill-managemcp/scripts/seed.ts +58 -0
- package/skills/skill-managemcp/src/db/index.ts +37 -0
- package/skills/skill-managemcp/src/lib/api-client.ts +108 -0
- package/skills/skill-managemcp/src/lib/config.ts +34 -0
- package/skills/skill-managemcp/src/lib/installer.ts +140 -0
- package/skills/skill-managemcp/src/lib/service-dir.ts +119 -0
- package/skills/skill-managemcp/src/server/index.ts +108 -0
- package/skills/skill-managemcp/tsconfig.json +21 -0
- package/skills/skill-manageskill/.env.example +16 -0
- package/skills/skill-manageskill/CLAUDE.md +159 -0
- package/skills/skill-manageskill/README.md +209 -0
- package/skills/skill-manageskill/package.json +27 -0
- package/skills/skill-manageskill/scripts/migrate.ts +57 -0
- package/skills/skill-manageskill/scripts/seed.ts +58 -0
- package/skills/skill-manageskill/src/db/index.ts +37 -0
- package/skills/skill-manageskill/src/lib/api-client.ts +108 -0
- package/skills/skill-manageskill/src/lib/config.ts +34 -0
- package/skills/skill-manageskill/src/lib/installer.ts +140 -0
- package/skills/skill-manageskill/src/lib/service-dir.ts +119 -0
- package/skills/skill-manageskill/src/server/index.ts +108 -0
- package/skills/skill-manageskill/tsconfig.json +21 -0
- package/skills/skill-markdown-validator/CLAUDE.md +19 -0
- package/skills/skill-markdown-validator/package.json +32 -0
- package/skills/skill-markdown-validator/src/index.ts +95 -0
- package/skills/skill-markdown-validator/tsconfig.json +14 -0
- package/skills/skill-mcp-builder/CLAUDE.md +19 -0
- package/skills/skill-mcp-builder/package.json +32 -0
- package/skills/skill-mcp-builder/src/index.ts +963 -0
- package/skills/skill-mcp-builder/tsconfig.json +14 -0
- package/skills/skill-meal-plan-designer/CLAUDE.md +19 -0
- package/skills/skill-meal-plan-designer/package.json +32 -0
- package/skills/skill-meal-plan-designer/src/index.ts +301 -0
- package/skills/skill-meal-plan-designer/tsconfig.json +14 -0
- package/skills/skill-meeting-insight-summarizer/CLAUDE.md +19 -0
- package/skills/skill-meeting-insight-summarizer/package.json +32 -0
- package/skills/skill-meeting-insight-summarizer/src/index.ts +316 -0
- package/skills/skill-meeting-insight-summarizer/tsconfig.json +14 -0
- package/skills/skill-merch-mockup-factory/CLAUDE.md +19 -0
- package/skills/skill-merch-mockup-factory/package.json +32 -0
- package/skills/skill-merch-mockup-factory/src/index.ts +296 -0
- package/skills/skill-merch-mockup-factory/tsconfig.json +14 -0
- package/skills/skill-merge-pdfs/CLAUDE.md +19 -0
- package/skills/skill-merge-pdfs/package.json +32 -0
- package/skills/skill-merge-pdfs/src/index.ts +427 -0
- package/skills/skill-merge-pdfs/tsconfig.json +14 -0
- package/skills/skill-message/LICENSE +21 -0
- package/skills/skill-message/README.md +17 -0
- package/skills/skill-message/install.sh +112 -0
- package/skills/skill-message/package.json +31 -0
- package/skills/skill-message/src/auth.ts +49 -0
- package/skills/skill-message/src/installer.ts +324 -0
- package/skills/skill-message/src/skill-install.ts +205 -0
- package/skills/skill-microcopy-generator/CLAUDE.md +19 -0
- package/skills/skill-microcopy-generator/package.json +32 -0
- package/skills/skill-microcopy-generator/src/index.ts +303 -0
- package/skills/skill-microcopy-generator/tsconfig.json +14 -0
- package/skills/skill-mindfulness-prompt-cache/CLAUDE.md +19 -0
- package/skills/skill-mindfulness-prompt-cache/package.json +32 -0
- package/skills/skill-mindfulness-prompt-cache/src/index.ts +290 -0
- package/skills/skill-mindfulness-prompt-cache/tsconfig.json +14 -0
- package/skills/skill-newsletter-campaign-planner/CLAUDE.md +19 -0
- package/skills/skill-newsletter-campaign-planner/package.json +32 -0
- package/skills/skill-newsletter-campaign-planner/src/index.ts +252 -0
- package/skills/skill-newsletter-campaign-planner/tsconfig.json +14 -0
- package/skills/skill-notify/LICENSE +21 -0
- package/skills/skill-notify/README.md +17 -0
- package/skills/skill-notify/install.sh +112 -0
- package/skills/skill-notify/package.json +31 -0
- package/skills/skill-notify/src/auth.ts +49 -0
- package/skills/skill-notify/src/installer.ts +324 -0
- package/skills/skill-notify/src/skill-install.ts +205 -0
- package/skills/skill-notion/LICENSE +21 -0
- package/skills/skill-notion/README.md +27 -0
- package/skills/skill-notion/SKILL.md +115 -0
- package/skills/skill-notion/install.sh +112 -0
- package/skills/skill-notion/package.json +31 -0
- package/skills/skill-notion/src/auth.ts +49 -0
- package/skills/skill-notion/src/installer.ts +324 -0
- package/skills/skill-notion/src/skill-install.ts +174 -0
- package/skills/skill-notion-manager/CLAUDE.md +19 -0
- package/skills/skill-notion-manager/package.json +32 -0
- package/skills/skill-notion-manager/src/index.ts +105 -0
- package/skills/skill-notion-manager/tsconfig.json +14 -0
- package/skills/skill-npmpublish/CLAUDE.md +33 -0
- package/skills/skill-npmpublish/README.md +104 -0
- package/skills/skill-npmpublish/SKILL.md +70 -0
- package/skills/skill-npmpublish/package.json +46 -0
- package/skills/skill-npmpublish/src/index.ts +330 -0
- package/skills/skill-npmpublish/tsconfig.json +18 -0
- package/skills/skill-onboarding-sequence-builder/CLAUDE.md +19 -0
- package/skills/skill-onboarding-sequence-builder/package.json +32 -0
- package/skills/skill-onboarding-sequence-builder/src/index.ts +321 -0
- package/skills/skill-onboarding-sequence-builder/tsconfig.json +14 -0
- package/skills/skill-onsite-ops-checklist/CLAUDE.md +19 -0
- package/skills/skill-onsite-ops-checklist/package.json +32 -0
- package/skills/skill-onsite-ops-checklist/src/index.ts +307 -0
- package/skills/skill-onsite-ops-checklist/tsconfig.json +14 -0
- package/skills/skill-outreach-cadence-designer/CLAUDE.md +19 -0
- package/skills/skill-outreach-cadence-designer/package.json +32 -0
- package/skills/skill-outreach-cadence-designer/src/index.ts +330 -0
- package/skills/skill-outreach-cadence-designer/tsconfig.json +14 -0
- package/skills/skill-packaging-concept-studio/CLAUDE.md +19 -0
- package/skills/skill-packaging-concept-studio/package.json +32 -0
- package/skills/skill-packaging-concept-studio/src/index.ts +296 -0
- package/skills/skill-packaging-concept-studio/tsconfig.json +14 -0
- package/skills/skill-packing-plan-pro/CLAUDE.md +19 -0
- package/skills/skill-packing-plan-pro/package.json +32 -0
- package/skills/skill-packing-plan-pro/src/index.ts +306 -0
- package/skills/skill-packing-plan-pro/tsconfig.json +14 -0
- package/skills/skill-parent-teacher-brief/CLAUDE.md +19 -0
- package/skills/skill-parent-teacher-brief/package.json +32 -0
- package/skills/skill-parent-teacher-brief/src/index.ts +290 -0
- package/skills/skill-parent-teacher-brief/tsconfig.json +14 -0
- package/skills/skill-parse-pdf/CLAUDE.md +19 -0
- package/skills/skill-parse-pdf/package.json +32 -0
- package/skills/skill-parse-pdf/src/index.ts +581 -0
- package/skills/skill-parse-pdf/tsconfig.json +14 -0
- package/skills/skill-partner-kit-assembler/CLAUDE.md +19 -0
- package/skills/skill-partner-kit-assembler/package.json +32 -0
- package/skills/skill-partner-kit-assembler/src/index.ts +313 -0
- package/skills/skill-partner-kit-assembler/tsconfig.json +14 -0
- package/skills/skill-payroll-change-prepper/CLAUDE.md +19 -0
- package/skills/skill-payroll-change-prepper/package.json +32 -0
- package/skills/skill-payroll-change-prepper/src/index.ts +304 -0
- package/skills/skill-payroll-change-prepper/tsconfig.json +14 -0
- package/skills/skill-persona-based-adwriter/CLAUDE.md +19 -0
- package/skills/skill-persona-based-adwriter/package.json +32 -0
- package/skills/skill-persona-based-adwriter/src/index.ts +266 -0
- package/skills/skill-persona-based-adwriter/tsconfig.json +14 -0
- package/skills/skill-persona-generator/CLAUDE.md +19 -0
- package/skills/skill-persona-generator/package.json +32 -0
- package/skills/skill-persona-generator/src/index.ts +443 -0
- package/skills/skill-persona-generator/tsconfig.json +14 -0
- package/skills/skill-personal-daily-ops/CLAUDE.md +19 -0
- package/skills/skill-personal-daily-ops/package.json +32 -0
- package/skills/skill-personal-daily-ops/src/index.ts +324 -0
- package/skills/skill-personal-daily-ops/tsconfig.json +14 -0
- package/skills/skill-pet-care-scheduler/CLAUDE.md +19 -0
- package/skills/skill-pet-care-scheduler/package.json +32 -0
- package/skills/skill-pet-care-scheduler/src/index.ts +298 -0
- package/skills/skill-pet-care-scheduler/tsconfig.json +14 -0
- package/skills/skill-playwright/LICENSE +21 -0
- package/skills/skill-playwright/README.md +27 -0
- package/skills/skill-playwright/SKILL.md +116 -0
- package/skills/skill-playwright/install.sh +112 -0
- package/skills/skill-playwright/package.json +31 -0
- package/skills/skill-playwright/src/auth.ts +49 -0
- package/skills/skill-playwright/src/installer.ts +324 -0
- package/skills/skill-playwright/src/skill-install.ts +174 -0
- package/skills/skill-podcast-show-notes/CLAUDE.md +19 -0
- package/skills/skill-podcast-show-notes/package.json +32 -0
- package/skills/skill-podcast-show-notes/src/index.ts +302 -0
- package/skills/skill-podcast-show-notes/tsconfig.json +14 -0
- package/skills/skill-presentation-theme-maker/CLAUDE.md +19 -0
- package/skills/skill-presentation-theme-maker/package.json +32 -0
- package/skills/skill-presentation-theme-maker/src/index.ts +292 -0
- package/skills/skill-presentation-theme-maker/tsconfig.json +14 -0
- package/skills/skill-press-release-drafter/CLAUDE.md +19 -0
- package/skills/skill-press-release-drafter/package.json +32 -0
- package/skills/skill-press-release-drafter/src/index.ts +291 -0
- package/skills/skill-press-release-drafter/tsconfig.json +14 -0
- package/skills/skill-print-collateral-designer/CLAUDE.md +19 -0
- package/skills/skill-print-collateral-designer/package.json +32 -0
- package/skills/skill-print-collateral-designer/src/index.ts +298 -0
- package/skills/skill-print-collateral-designer/tsconfig.json +14 -0
- package/skills/skill-procurement-scorecard/CLAUDE.md +19 -0
- package/skills/skill-procurement-scorecard/package.json +32 -0
- package/skills/skill-procurement-scorecard/src/index.ts +338 -0
- package/skills/skill-procurement-scorecard/tsconfig.json +14 -0
- package/skills/skill-product-demo-script/CLAUDE.md +19 -0
- package/skills/skill-product-demo-script/package.json +32 -0
- package/skills/skill-product-demo-script/src/index.ts +326 -0
- package/skills/skill-product-demo-script/tsconfig.json +14 -0
- package/skills/skill-product-mockup/CLAUDE.md +19 -0
- package/skills/skill-product-mockup/package.json +32 -0
- package/skills/skill-product-mockup/src/index.ts +290 -0
- package/skills/skill-product-mockup/tsconfig.json +14 -0
- package/skills/skill-project-retro-companion/CLAUDE.md +19 -0
- package/skills/skill-project-retro-companion/package.json +32 -0
- package/skills/skill-project-retro-companion/src/index.ts +279 -0
- package/skills/skill-project-retro-companion/tsconfig.json +14 -0
- package/skills/skill-projectbuild/LICENSE +21 -0
- package/skills/skill-projectbuild/README.md +17 -0
- package/skills/skill-projectbuild/install.sh +112 -0
- package/skills/skill-projectbuild/package.json +31 -0
- package/skills/skill-projectbuild/src/auth.ts +49 -0
- package/skills/skill-projectbuild/src/installer.ts +324 -0
- package/skills/skill-projectbuild/src/skill-install.ts +205 -0
- package/skills/skill-proposal-redline-advisor/CLAUDE.md +19 -0
- package/skills/skill-proposal-redline-advisor/package.json +32 -0
- package/skills/skill-proposal-redline-advisor/src/index.ts +320 -0
- package/skills/skill-proposal-redline-advisor/tsconfig.json +14 -0
- package/skills/skill-read-gmail/CLAUDE.md +19 -0
- package/skills/skill-read-gmail/package.json +32 -0
- package/skills/skill-read-gmail/src/index.ts +343 -0
- package/skills/skill-read-gmail/tsconfig.json +14 -0
- package/skills/skill-regex-tester/CLAUDE.md +19 -0
- package/skills/skill-regex-tester/package.json +32 -0
- package/skills/skill-regex-tester/src/index.ts +183 -0
- package/skills/skill-regex-tester/tsconfig.json +14 -0
- package/skills/skill-remember/LICENSE +21 -0
- package/skills/skill-remember/README.md +17 -0
- package/skills/skill-remember/install.sh +112 -0
- package/skills/skill-remember/package.json +31 -0
- package/skills/skill-remember/src/auth.ts +49 -0
- package/skills/skill-remember/src/installer.ts +324 -0
- package/skills/skill-remember/src/skill-install.ts +205 -0
- package/skills/skill-remove-background/CLAUDE.md +19 -0
- package/skills/skill-remove-background/package.json +32 -0
- package/skills/skill-remove-background/src/index.ts +405 -0
- package/skills/skill-remove-background/tsconfig.json +14 -0
- package/skills/skill-risk-disclosure-kit/CLAUDE.md +19 -0
- package/skills/skill-risk-disclosure-kit/package.json +32 -0
- package/skills/skill-risk-disclosure-kit/src/index.ts +307 -0
- package/skills/skill-risk-disclosure-kit/tsconfig.json +14 -0
- package/skills/skill-roi-comparison-tool/CLAUDE.md +19 -0
- package/skills/skill-roi-comparison-tool/package.json +32 -0
- package/skills/skill-roi-comparison-tool/src/index.ts +322 -0
- package/skills/skill-roi-comparison-tool/tsconfig.json +14 -0
- package/skills/skill-sales-call-recapper/CLAUDE.md +19 -0
- package/skills/skill-sales-call-recapper/package.json +32 -0
- package/skills/skill-sales-call-recapper/src/index.ts +280 -0
- package/skills/skill-sales-call-recapper/tsconfig.json +14 -0
- package/skills/skill-salescopy/.env.example +2 -0
- package/skills/skill-salescopy/CLAUDE.md +23 -0
- package/skills/skill-salescopy/LICENSE +21 -0
- package/skills/skill-salescopy/README.md +72 -0
- package/skills/skill-salescopy/package.json +27 -0
- package/skills/skill-salescopy/src/commands/config.ts +115 -0
- package/skills/skill-salescopy/src/commands/generate.ts +179 -0
- package/skills/skill-salescopy/src/commands/sessions.ts +169 -0
- package/skills/skill-salescopy/src/commands/templates.ts +99 -0
- package/skills/skill-salescopy/src/lib/generator.ts +197 -0
- package/skills/skill-salescopy/src/lib/storage.ts +191 -0
- package/skills/skill-salescopy/src/types/index.ts +74 -0
- package/skills/skill-salescopy/src/utils/logger.ts +33 -0
- package/skills/skill-salescopy/src/utils/paths.ts +25 -0
- package/skills/skill-salescopy/tsconfig.json +19 -0
- package/skills/skill-scaffold-project/CLAUDE.md +19 -0
- package/skills/skill-scaffold-project/package.json +32 -0
- package/skills/skill-scaffold-project/src/index.ts +1223 -0
- package/skills/skill-scaffold-project/tsconfig.json +14 -0
- package/skills/skill-schedule/README.md +17 -0
- package/skills/skill-schedule/install.sh +112 -0
- package/skills/skill-schedule/src/auth.ts +49 -0
- package/skills/skill-schedule/src/installer.ts +324 -0
- package/skills/skill-schedule/src/skill-install.ts +205 -0
- package/skills/skill-scholarship-tracker/CLAUDE.md +19 -0
- package/skills/skill-scholarship-tracker/package.json +32 -0
- package/skills/skill-scholarship-tracker/src/index.ts +298 -0
- package/skills/skill-scholarship-tracker/tsconfig.json +14 -0
- package/skills/skill-scientific-figure-check/CLAUDE.md +19 -0
- package/skills/skill-scientific-figure-check/package.json +32 -0
- package/skills/skill-scientific-figure-check/src/index.ts +83 -0
- package/skills/skill-scientific-figure-check/tsconfig.json +14 -0
- package/skills/skill-search/LICENSE +21 -0
- package/skills/skill-search/README.md +17 -0
- package/skills/skill-search/install.sh +112 -0
- package/skills/skill-search/package.json +31 -0
- package/skills/skill-search/src/auth.ts +49 -0
- package/skills/skill-search/src/installer.ts +324 -0
- package/skills/skill-search/src/skill-install.ts +205 -0
- package/skills/skill-seating-chart-maker/CLAUDE.md +19 -0
- package/skills/skill-seating-chart-maker/package.json +32 -0
- package/skills/skill-seating-chart-maker/src/index.ts +312 -0
- package/skills/skill-seating-chart-maker/tsconfig.json +14 -0
- package/skills/skill-security-audit/CLAUDE.md +19 -0
- package/skills/skill-security-audit/package.json +32 -0
- package/skills/skill-security-audit/src/index.ts +126 -0
- package/skills/skill-security-audit/tsconfig.json +14 -0
- package/skills/skill-seo-brief-builder/CLAUDE.md +19 -0
- package/skills/skill-seo-brief-builder/package.json +32 -0
- package/skills/skill-seo-brief-builder/src/index.ts +288 -0
- package/skills/skill-seo-brief-builder/tsconfig.json +14 -0
- package/skills/skill-shadcn/LICENSE +21 -0
- package/skills/skill-shadcn/README.md +27 -0
- package/skills/skill-shadcn/SKILL.md +113 -0
- package/skills/skill-shadcn/install.sh +112 -0
- package/skills/skill-shadcn/package.json +31 -0
- package/skills/skill-shadcn/src/auth.ts +49 -0
- package/skills/skill-shadcn/src/installer.ts +324 -0
- package/skills/skill-shadcn/src/skill-install.ts +174 -0
- package/skills/skill-shadcn-theme/CLAUDE.md +19 -0
- package/skills/skill-shadcn-theme/package.json +32 -0
- package/skills/skill-shadcn-theme/src/index.ts +16 -0
- package/skills/skill-shadcn-theme/tsconfig.json +14 -0
- package/skills/skill-slack-assistant/CLAUDE.md +19 -0
- package/skills/skill-slack-assistant/package.json +32 -0
- package/skills/skill-slack-assistant/src/index.ts +79 -0
- package/skills/skill-slack-assistant/tsconfig.json +14 -0
- package/skills/skill-sleep-routine-analyzer/CLAUDE.md +19 -0
- package/skills/skill-sleep-routine-analyzer/package.json +32 -0
- package/skills/skill-sleep-routine-analyzer/src/index.ts +293 -0
- package/skills/skill-sleep-routine-analyzer/tsconfig.json +14 -0
- package/skills/skill-sms/README.md +71 -0
- package/skills/skill-sms/package.json +38 -0
- package/skills/skill-sms/scripts/buy-number.ts +63 -0
- package/skills/skill-sms/scripts/test-send.ts +67 -0
- package/skills/skill-sms/src/index.ts +320 -0
- package/skills/skill-sms/src/server.ts +351 -0
- package/skills/skill-sms/src/sse-server.ts +279 -0
- package/skills/skill-sms/tsconfig.json +21 -0
- package/skills/skill-social-media-kit/CLAUDE.md +19 -0
- package/skills/skill-social-media-kit/package.json +32 -0
- package/skills/skill-social-media-kit/src/index.ts +281 -0
- package/skills/skill-social-media-kit/tsconfig.json +14 -0
- package/skills/skill-social-template-kit/CLAUDE.md +19 -0
- package/skills/skill-social-template-kit/package.json +32 -0
- package/skills/skill-social-template-kit/src/index.ts +303 -0
- package/skills/skill-social-template-kit/tsconfig.json +14 -0
- package/skills/skill-split-pdf/CLAUDE.md +19 -0
- package/skills/skill-split-pdf/package.json +32 -0
- package/skills/skill-split-pdf/src/index.ts +301 -0
- package/skills/skill-split-pdf/tsconfig.json +14 -0
- package/skills/skill-sponsorship-proposal-lab/CLAUDE.md +19 -0
- package/skills/skill-sponsorship-proposal-lab/package.json +32 -0
- package/skills/skill-sponsorship-proposal-lab/src/index.ts +300 -0
- package/skills/skill-sponsorship-proposal-lab/tsconfig.json +14 -0
- package/skills/skill-spreadsheet-cleanroom/CLAUDE.md +19 -0
- package/skills/skill-spreadsheet-cleanroom/package.json +32 -0
- package/skills/skill-spreadsheet-cleanroom/src/index.ts +331 -0
- package/skills/skill-spreadsheet-cleanroom/tsconfig.json +14 -0
- package/skills/skill-statistical-test-selector/CLAUDE.md +19 -0
- package/skills/skill-statistical-test-selector/package.json +32 -0
- package/skills/skill-statistical-test-selector/src/index.ts +75 -0
- package/skills/skill-statistical-test-selector/tsconfig.json +14 -0
- package/skills/skill-stress-relief-playbook/CLAUDE.md +19 -0
- package/skills/skill-stress-relief-playbook/package.json +32 -0
- package/skills/skill-stress-relief-playbook/src/index.ts +298 -0
- package/skills/skill-stress-relief-playbook/tsconfig.json +14 -0
- package/skills/skill-study-guide-builder/CLAUDE.md +19 -0
- package/skills/skill-study-guide-builder/package.json +32 -0
- package/skills/skill-study-guide-builder/src/index.ts +298 -0
- package/skills/skill-study-guide-builder/tsconfig.json +14 -0
- package/skills/skill-subscription-spend-watcher/CLAUDE.md +19 -0
- package/skills/skill-subscription-spend-watcher/package.json +32 -0
- package/skills/skill-subscription-spend-watcher/src/index.ts +312 -0
- package/skills/skill-subscription-spend-watcher/tsconfig.json +14 -0
- package/skills/skill-subtitle/.env.example +2 -0
- package/skills/skill-subtitle/CLAUDE.md +37 -0
- package/skills/skill-subtitle/LICENSE +21 -0
- package/skills/skill-subtitle/README.md +63 -0
- package/skills/skill-subtitle/package.json +49 -0
- package/skills/skill-subtitle/src/commands/config.ts +53 -0
- package/skills/skill-subtitle/src/commands/generate.ts +61 -0
- package/skills/skill-subtitle/src/lib/generator.ts +216 -0
- package/skills/skill-subtitle/src/lib/storage.ts +62 -0
- package/skills/skill-subtitle/src/types/index.ts +68 -0
- package/skills/skill-subtitle/src/utils/logger.ts +34 -0
- package/skills/skill-subtitle/src/utils/paths.ts +51 -0
- package/skills/skill-subtitle/tsconfig.json +17 -0
- package/skills/skill-summarize/LICENSE +21 -0
- package/skills/skill-summarize/README.md +17 -0
- package/skills/skill-summarize/install.sh +112 -0
- package/skills/skill-summarize/package.json +31 -0
- package/skills/skill-summarize/src/auth.ts +49 -0
- package/skills/skill-summarize/src/installer.ts +324 -0
- package/skills/skill-summarize/src/skill-install.ts +205 -0
- package/skills/skill-survey-insight-extractor/CLAUDE.md +19 -0
- package/skills/skill-survey-insight-extractor/package.json +32 -0
- package/skills/skill-survey-insight-extractor/src/index.ts +317 -0
- package/skills/skill-survey-insight-extractor/tsconfig.json +14 -0
- package/skills/skill-sync/LICENSE +21 -0
- package/skills/skill-sync/README.md +17 -0
- package/skills/skill-sync/install.sh +112 -0
- package/skills/skill-sync/package.json +31 -0
- package/skills/skill-sync/src/auth.ts +49 -0
- package/skills/skill-sync/src/installer.ts +324 -0
- package/skills/skill-sync/src/skill-install.ts +205 -0
- package/skills/skill-terraform-generator/CLAUDE.md +19 -0
- package/skills/skill-terraform-generator/package.json +32 -0
- package/skills/skill-terraform-generator/src/index.ts +99 -0
- package/skills/skill-terraform-generator/tsconfig.json +14 -0
- package/skills/skill-testimonial-graphics/CLAUDE.md +19 -0
- package/skills/skill-testimonial-graphics/package.json +32 -0
- package/skills/skill-testimonial-graphics/src/index.ts +303 -0
- package/skills/skill-testimonial-graphics/tsconfig.json +14 -0
- package/skills/skill-time-blocking-orchestrator/CLAUDE.md +19 -0
- package/skills/skill-time-blocking-orchestrator/package.json +32 -0
- package/skills/skill-time-blocking-orchestrator/src/index.ts +328 -0
- package/skills/skill-time-blocking-orchestrator/tsconfig.json +14 -0
- package/skills/skill-timesheet/.env.example +25 -0
- package/skills/skill-timesheet/README.md +235 -0
- package/skills/skill-timesheet/package.json +53 -0
- package/skills/skill-timesheet/scripts/publish.ts +210 -0
- package/skills/skill-timesheet/src/commands/employee.ts +96 -0
- package/skills/skill-timesheet/src/commands/export.ts +29 -0
- package/skills/skill-timesheet/src/commands/generate.ts +102 -0
- package/skills/skill-timesheet/src/commands/holiday.ts +74 -0
- package/skills/skill-timesheet/src/commands/profile.ts +133 -0
- package/skills/skill-timesheet/src/commands/setup.ts +21 -0
- package/skills/skill-timesheet/src/commands/vacation.ts +93 -0
- package/skills/skill-timesheet/src/lib/employees.ts +56 -0
- package/skills/skill-timesheet/src/lib/export.ts +123 -0
- package/skills/skill-timesheet/src/lib/holidays.ts +79 -0
- package/skills/skill-timesheet/src/lib/paths.ts +59 -0
- package/skills/skill-timesheet/src/lib/profiles.ts +168 -0
- package/skills/skill-timesheet/src/lib/storage.ts +83 -0
- package/skills/skill-timesheet/src/lib/timesheet.ts +130 -0
- package/skills/skill-timesheet/src/lib/vacations.ts +70 -0
- package/skills/skill-timesheet/src/types/index.ts +96 -0
- package/skills/skill-timesheet/tsconfig.json +21 -0
- package/skills/skill-transcript/.env.example +10 -0
- package/skills/skill-transcript/LICENSE +21 -0
- package/skills/skill-transcript/README.md +17 -0
- package/skills/skill-transcript/SKILL.md +105 -0
- package/skills/skill-transcript/install.sh +112 -0
- package/skills/skill-transcript/package.json +35 -0
- package/skills/skill-transcript/src/auth.ts +49 -0
- package/skills/skill-transcript/src/chunker.ts +215 -0
- package/skills/skill-transcript/src/formatter.ts +134 -0
- package/skills/skill-transcript/src/http-client.ts +128 -0
- package/skills/skill-transcript/src/index-http.ts +111 -0
- package/skills/skill-transcript/src/index-local.ts +226 -0
- package/skills/skill-transcript/src/index.ts +111 -0
- package/skills/skill-transcript/src/installer.ts +324 -0
- package/skills/skill-transcript/src/providers/elevenlabs.ts +133 -0
- package/skills/skill-transcript/src/providers/gemini.ts +192 -0
- package/skills/skill-transcript/src/providers/index.ts +54 -0
- package/skills/skill-transcript/src/providers/openai.ts +203 -0
- package/skills/skill-transcript/src/skill-install.ts +205 -0
- package/skills/skill-transcript/src/types.ts +106 -0
- package/skills/skill-transcript/tsconfig.json +18 -0
- package/skills/skill-transform/.env.example +2 -0
- package/skills/skill-transform/LICENSE +21 -0
- package/skills/skill-transform/README.md +17 -0
- package/skills/skill-transform/SKILL.md +127 -0
- package/skills/skill-transform/install.sh +112 -0
- package/skills/skill-transform/package.json +37 -0
- package/skills/skill-transform/src/auth.ts +49 -0
- package/skills/skill-transform/src/http-client.ts +128 -0
- package/skills/skill-transform/src/index-http.ts +111 -0
- package/skills/skill-transform/src/index-local.ts +368 -0
- package/skills/skill-transform/src/index.ts +111 -0
- package/skills/skill-transform/src/installer.ts +324 -0
- package/skills/skill-transform/src/skill-install.ts +205 -0
- package/skills/skill-transform/src/transformers/ai-transformer.ts +202 -0
- package/skills/skill-transform/src/transformers/format-detector.ts +147 -0
- package/skills/skill-transform/src/types.ts +95 -0
- package/skills/skill-transform/tsconfig.json +18 -0
- package/skills/skill-translate/LICENSE +21 -0
- package/skills/skill-translate/README.md +17 -0
- package/skills/skill-translate/install.sh +112 -0
- package/skills/skill-translate/package.json +31 -0
- package/skills/skill-translate/src/auth.ts +49 -0
- package/skills/skill-translate/src/installer.ts +324 -0
- package/skills/skill-translate/src/skill-install.ts +205 -0
- package/skills/skill-travel-budget-balancer/CLAUDE.md +19 -0
- package/skills/skill-travel-budget-balancer/package.json +32 -0
- package/skills/skill-travel-budget-balancer/src/index.ts +297 -0
- package/skills/skill-travel-budget-balancer/tsconfig.json +14 -0
- package/skills/skill-validate-config/CLAUDE.md +19 -0
- package/skills/skill-validate-config/package.json +32 -0
- package/skills/skill-validate-config/src/index.ts +56 -0
- package/skills/skill-validate-config/tsconfig.json +14 -0
- package/skills/skill-vendor-comparison-coach/CLAUDE.md +19 -0
- package/skills/skill-vendor-comparison-coach/package.json +32 -0
- package/skills/skill-vendor-comparison-coach/src/index.ts +337 -0
- package/skills/skill-vendor-comparison-coach/tsconfig.json +14 -0
- package/skills/skill-video/.env.example +14 -0
- package/skills/skill-video/EXAMPLES.md +266 -0
- package/skills/skill-video/LICENSE +21 -0
- package/skills/skill-video/README.md +174 -0
- package/skills/skill-video/SKILL.md +107 -0
- package/skills/skill-video/install.sh +112 -0
- package/skills/skill-video/package.json +36 -0
- package/skills/skill-video/src/auth.ts +49 -0
- package/skills/skill-video/src/cli.ts +155 -0
- package/skills/skill-video/src/http-client.ts +128 -0
- package/skills/skill-video/src/index-http.ts +111 -0
- package/skills/skill-video/src/index-local.ts +148 -0
- package/skills/skill-video/src/index.ts +111 -0
- package/skills/skill-video/src/installer.ts +324 -0
- package/skills/skill-video/src/providers/google-veo.ts +126 -0
- package/skills/skill-video/src/providers/index.ts +19 -0
- package/skills/skill-video/src/providers/openai-sora.ts +164 -0
- package/skills/skill-video/src/providers/runway.ts +159 -0
- package/skills/skill-video/src/skill-install.ts +205 -0
- package/skills/skill-video/src/types.ts +35 -0
- package/skills/skill-video/tsconfig.json +25 -0
- package/skills/skill-video-cut-suggester/CLAUDE.md +19 -0
- package/skills/skill-video-cut-suggester/package.json +32 -0
- package/skills/skill-video-cut-suggester/src/index.ts +304 -0
- package/skills/skill-video-cut-suggester/tsconfig.json +14 -0
- package/skills/skill-video-downloader/CLAUDE.md +19 -0
- package/skills/skill-video-downloader/package.json +32 -0
- package/skills/skill-video-downloader/src/index.ts +561 -0
- package/skills/skill-video-downloader/tsconfig.json +14 -0
- package/skills/skill-video-thumbnail/CLAUDE.md +19 -0
- package/skills/skill-video-thumbnail/package.json +32 -0
- package/skills/skill-video-thumbnail/src/index.ts +356 -0
- package/skills/skill-video-thumbnail/tsconfig.json +14 -0
- package/skills/skill-videodownload/.env.example +5 -0
- package/skills/skill-videodownload/CLAUDE.md +64 -0
- package/skills/skill-videodownload/LICENSE +21 -0
- package/skills/skill-videodownload/README.md +166 -0
- package/skills/skill-videodownload/package.json +49 -0
- package/skills/skill-videodownload/src/commands/config.ts +89 -0
- package/skills/skill-videodownload/src/commands/download.ts +61 -0
- package/skills/skill-videodownload/src/commands/info.ts +83 -0
- package/skills/skill-videodownload/src/commands/list.ts +84 -0
- package/skills/skill-videodownload/src/lib/downloader.ts +270 -0
- package/skills/skill-videodownload/src/lib/storage.ts +167 -0
- package/skills/skill-videodownload/src/types/index.ts +64 -0
- package/skills/skill-videodownload/src/utils/logger.ts +49 -0
- package/skills/skill-videodownload/src/utils/paths.ts +94 -0
- package/skills/skill-videodownload/tsconfig.json +17 -0
- package/skills/skill-voiceover/.env.example +5 -0
- package/skills/skill-voiceover/CLAUDE.md +40 -0
- package/skills/skill-voiceover/LICENSE +21 -0
- package/skills/skill-voiceover/README.md +64 -0
- package/skills/skill-voiceover/package.json +43 -0
- package/skills/skill-voiceover/src/commands/config.ts +38 -0
- package/skills/skill-voiceover/src/commands/generate.ts +37 -0
- package/skills/skill-voiceover/src/commands/voices.ts +33 -0
- package/skills/skill-voiceover/src/lib/generator.ts +159 -0
- package/skills/skill-voiceover/src/lib/storage.ts +55 -0
- package/skills/skill-voiceover/src/types/index.ts +55 -0
- package/skills/skill-voiceover/src/utils/logger.ts +30 -0
- package/skills/skill-voiceover/src/utils/paths.ts +22 -0
- package/skills/skill-voiceover/tsconfig.json +17 -0
- package/skills/skill-voiceover-casting-assistant/CLAUDE.md +19 -0
- package/skills/skill-voiceover-casting-assistant/package.json +32 -0
- package/skills/skill-voiceover-casting-assistant/src/index.ts +255 -0
- package/skills/skill-voiceover-casting-assistant/tsconfig.json +14 -0
- package/skills/skill-watermark/CLAUDE.md +19 -0
- package/skills/skill-watermark/package.json +32 -0
- package/skills/skill-watermark/src/index.ts +587 -0
- package/skills/skill-watermark/tsconfig.json +14 -0
- package/skills/skill-webcrawling/.env.example +2 -0
- package/skills/skill-webcrawling/CLAUDE.md +22 -0
- package/skills/skill-webcrawling/LICENSE +21 -0
- package/skills/skill-webcrawling/README.md +77 -0
- package/skills/skill-webcrawling/package.json +36 -0
- package/skills/skill-webcrawling/src/commands/config.ts +34 -0
- package/skills/skill-webcrawling/src/commands/crawl.ts +33 -0
- package/skills/skill-webcrawling/src/commands/scrape.ts +32 -0
- package/skills/skill-webcrawling/src/commands/sessions.ts +42 -0
- package/skills/skill-webcrawling/src/lib/crawler.ts +174 -0
- package/skills/skill-webcrawling/src/lib/storage.ts +130 -0
- package/skills/skill-webcrawling/src/types/index.ts +45 -0
- package/skills/skill-webcrawling/src/utils/logger.ts +30 -0
- package/skills/skill-webcrawling/src/utils/paths.ts +28 -0
- package/skills/skill-webcrawling/tsconfig.json +17 -0
- package/skills/skill-webinar-script-coach/CLAUDE.md +19 -0
- package/skills/skill-webinar-script-coach/package.json +32 -0
- package/skills/skill-webinar-script-coach/src/index.ts +296 -0
- package/skills/skill-webinar-script-coach/tsconfig.json +14 -0
- package/skills/skill-websearch/LICENSE +21 -0
- package/skills/skill-websearch/README.md +17 -0
- package/skills/skill-websearch/install.sh +112 -0
- package/skills/skill-websearch/package.json +31 -0
- package/skills/skill-websearch/src/auth.ts +49 -0
- package/skills/skill-websearch/src/installer.ts +324 -0
- package/skills/skill-websearch/src/skill-install.ts +205 -0
- package/skills/skill-wellness-progress-reporter/CLAUDE.md +19 -0
- package/skills/skill-wellness-progress-reporter/package.json +32 -0
- package/skills/skill-wellness-progress-reporter/src/index.ts +298 -0
- package/skills/skill-wellness-progress-reporter/tsconfig.json +14 -0
- package/skills/skill-workout-cycle-planner/CLAUDE.md +19 -0
- package/skills/skill-workout-cycle-planner/package.json +32 -0
- package/skills/skill-workout-cycle-planner/src/index.ts +299 -0
- package/skills/skill-workout-cycle-planner/tsconfig.json +14 -0
- package/skills/skill-write/.env.example +9 -0
- package/skills/skill-write/LICENSE +21 -0
- package/skills/skill-write/README.md +17 -0
- package/skills/skill-write/SKILL.md +90 -0
- package/skills/skill-write/install.sh +112 -0
- package/skills/skill-write/package.json +37 -0
- package/skills/skill-write/src/agents/image-generator.ts +186 -0
- package/skills/skill-write/src/agents/researcher.ts +61 -0
- package/skills/skill-write/src/agents/writer.ts +99 -0
- package/skills/skill-write/src/auth.ts +49 -0
- package/skills/skill-write/src/http-client.ts +128 -0
- package/skills/skill-write/src/index-http.ts +111 -0
- package/skills/skill-write/src/index-local.ts +247 -0
- package/skills/skill-write/src/index.ts +111 -0
- package/skills/skill-write/src/installer.ts +324 -0
- package/skills/skill-write/src/orchestrator.ts +171 -0
- package/skills/skill-write/src/skill-install.ts +205 -0
- package/skills/skill-write/src/types.ts +65 -0
- package/skills/skill-write/tsconfig.json +18 -0
- package/src/cli/cli.test.ts +325 -0
- package/src/cli/components/App.tsx +186 -0
- package/src/cli/components/CategorySelect.tsx +38 -0
- package/src/cli/components/Header.tsx +18 -0
- package/src/cli/components/InstallProgress.tsx +97 -0
- package/src/cli/components/SearchView.tsx +108 -0
- package/src/cli/components/SkillSelect.tsx +92 -0
- package/src/cli/index.tsx +559 -0
- package/src/index.ts +49 -0
- package/src/lib/installer.test.ts +328 -0
- package/src/lib/installer.ts +297 -0
- package/src/lib/registry.test.ts +147 -0
- package/src/lib/registry.ts +1951 -0
- package/src/lib/skillinfo.test.ts +195 -0
- package/src/lib/skillinfo.ts +356 -0
- package/src/mcp/index.ts +234 -0
- package/src/mcp/mcp.test.ts +212 -0
- package/tsconfig.json +17 -0
|
@@ -0,0 +1,1565 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
|
|
3
|
+
import * as fs from "fs";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import * as os from "os";
|
|
6
|
+
import minimist from "minimist";
|
|
7
|
+
|
|
8
|
+
// Types
|
|
9
|
+
interface PromptSection {
|
|
10
|
+
title: string;
|
|
11
|
+
content?: string;
|
|
12
|
+
items?: string[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface AgentJsonData {
|
|
16
|
+
description?: string;
|
|
17
|
+
tools?: string[];
|
|
18
|
+
model?: "sonnet" | "opus" | "haiku" | "inherit";
|
|
19
|
+
permissionMode?: "default" | "acceptEdits" | "bypassPermissions" | "plan" | "ignore";
|
|
20
|
+
skills?: string[];
|
|
21
|
+
sections?: PromptSection[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
interface AgentData {
|
|
25
|
+
id: string;
|
|
26
|
+
slug: string;
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
tools: string[];
|
|
30
|
+
model: string;
|
|
31
|
+
permissionMode: string;
|
|
32
|
+
skills: string[];
|
|
33
|
+
prompt: string;
|
|
34
|
+
created: string;
|
|
35
|
+
updated: string;
|
|
36
|
+
isGlobal: boolean;
|
|
37
|
+
jsonData?: AgentJsonData;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
interface AgentTemplate {
|
|
41
|
+
name: string;
|
|
42
|
+
description: string;
|
|
43
|
+
tools: string[];
|
|
44
|
+
model: string;
|
|
45
|
+
prompt: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Built-in agent templates
|
|
49
|
+
const TEMPLATES: Record<string, AgentTemplate> = {
|
|
50
|
+
"code-reviewer": {
|
|
51
|
+
name: "Code Reviewer",
|
|
52
|
+
description: "Expert code reviewer. Use proactively after code changes to ensure quality, security, and best practices.",
|
|
53
|
+
tools: ["Read", "Grep", "Glob", "Bash"],
|
|
54
|
+
model: "inherit",
|
|
55
|
+
prompt: `You are an expert code reviewer with deep expertise in software quality, security, and best practices.
|
|
56
|
+
|
|
57
|
+
## When Invoked
|
|
58
|
+
|
|
59
|
+
1. Run git diff to see recent changes
|
|
60
|
+
2. Identify all modified files
|
|
61
|
+
3. Begin systematic review immediately
|
|
62
|
+
|
|
63
|
+
## Review Focus Areas
|
|
64
|
+
|
|
65
|
+
### Code Quality
|
|
66
|
+
- Clear, readable code structure
|
|
67
|
+
- Well-named functions and variables
|
|
68
|
+
- No duplicated code or patterns
|
|
69
|
+
- Appropriate comments where needed
|
|
70
|
+
- Consistent formatting and style
|
|
71
|
+
|
|
72
|
+
### Security
|
|
73
|
+
- No exposed secrets, API keys, or credentials
|
|
74
|
+
- Input validation and sanitization
|
|
75
|
+
- Protection against injection attacks
|
|
76
|
+
- Secure authentication patterns
|
|
77
|
+
- Safe data handling practices
|
|
78
|
+
|
|
79
|
+
### Error Handling
|
|
80
|
+
- Proper try-catch blocks
|
|
81
|
+
- Meaningful error messages
|
|
82
|
+
- Graceful failure handling
|
|
83
|
+
- Logging of errors
|
|
84
|
+
|
|
85
|
+
### Performance
|
|
86
|
+
- No obvious bottlenecks
|
|
87
|
+
- Efficient algorithms
|
|
88
|
+
- Resource cleanup
|
|
89
|
+
- Memory management
|
|
90
|
+
|
|
91
|
+
## Output Format
|
|
92
|
+
|
|
93
|
+
Organize feedback by priority:
|
|
94
|
+
|
|
95
|
+
**Critical Issues** (must fix before merge)
|
|
96
|
+
- Security vulnerabilities
|
|
97
|
+
- Data loss risks
|
|
98
|
+
- Breaking changes
|
|
99
|
+
|
|
100
|
+
**Warnings** (should fix)
|
|
101
|
+
- Code smells
|
|
102
|
+
- Missing edge cases
|
|
103
|
+
- Suboptimal patterns
|
|
104
|
+
|
|
105
|
+
**Suggestions** (consider improving)
|
|
106
|
+
- Readability improvements
|
|
107
|
+
- Minor optimizations
|
|
108
|
+
- Documentation gaps
|
|
109
|
+
|
|
110
|
+
Include specific code examples showing how to fix issues.`,
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
"debugger": {
|
|
114
|
+
name: "Debugger",
|
|
115
|
+
description: "Debugging specialist for errors, test failures, and unexpected behavior. Use proactively when encountering any issues.",
|
|
116
|
+
tools: ["Read", "Edit", "Bash", "Grep", "Glob"],
|
|
117
|
+
model: "inherit",
|
|
118
|
+
prompt: `You are an expert debugger specializing in systematic root cause analysis and efficient problem resolution.
|
|
119
|
+
|
|
120
|
+
## When Invoked
|
|
121
|
+
|
|
122
|
+
1. Capture the complete error message and stack trace
|
|
123
|
+
2. Identify reproduction steps
|
|
124
|
+
3. Isolate the failure location
|
|
125
|
+
4. Implement minimal fix
|
|
126
|
+
5. Verify the solution works
|
|
127
|
+
|
|
128
|
+
## Debugging Process
|
|
129
|
+
|
|
130
|
+
### Information Gathering
|
|
131
|
+
- Analyze error messages and logs carefully
|
|
132
|
+
- Check recent code changes (git diff, git log)
|
|
133
|
+
- Review related test output
|
|
134
|
+
- Inspect configuration files
|
|
135
|
+
|
|
136
|
+
### Hypothesis Formation
|
|
137
|
+
- Form specific hypotheses about the cause
|
|
138
|
+
- List evidence supporting each hypothesis
|
|
139
|
+
- Prioritize most likely causes
|
|
140
|
+
|
|
141
|
+
### Investigation
|
|
142
|
+
- Add strategic debug logging
|
|
143
|
+
- Inspect variable states at key points
|
|
144
|
+
- Test isolated components
|
|
145
|
+
- Check external dependencies
|
|
146
|
+
|
|
147
|
+
### Resolution
|
|
148
|
+
- Implement the minimal fix required
|
|
149
|
+
- Avoid unrelated changes
|
|
150
|
+
- Add regression tests if appropriate
|
|
151
|
+
- Document the root cause
|
|
152
|
+
|
|
153
|
+
## Output Format
|
|
154
|
+
|
|
155
|
+
For each issue, provide:
|
|
156
|
+
|
|
157
|
+
1. **Root Cause**: Clear explanation of why the bug occurred
|
|
158
|
+
2. **Evidence**: What pointed you to this cause
|
|
159
|
+
3. **Fix**: Specific code change with before/after
|
|
160
|
+
4. **Testing**: How to verify the fix
|
|
161
|
+
5. **Prevention**: How to avoid similar issues
|
|
162
|
+
|
|
163
|
+
Focus on fixing the underlying problem, not just the symptoms.`,
|
|
164
|
+
},
|
|
165
|
+
|
|
166
|
+
"test-writer": {
|
|
167
|
+
name: "Test Writer",
|
|
168
|
+
description: "Test generation expert. Use to create comprehensive test suites with high coverage.",
|
|
169
|
+
tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"],
|
|
170
|
+
model: "inherit",
|
|
171
|
+
prompt: `You are an expert test engineer specializing in comprehensive test coverage and testing best practices.
|
|
172
|
+
|
|
173
|
+
## When Invoked
|
|
174
|
+
|
|
175
|
+
1. Analyze the code to be tested
|
|
176
|
+
2. Identify all testable units and edge cases
|
|
177
|
+
3. Generate comprehensive test suite
|
|
178
|
+
4. Run tests to verify they pass
|
|
179
|
+
|
|
180
|
+
## Testing Strategy
|
|
181
|
+
|
|
182
|
+
### Unit Tests
|
|
183
|
+
- Test individual functions in isolation
|
|
184
|
+
- Mock external dependencies
|
|
185
|
+
- Cover happy path and error cases
|
|
186
|
+
- Test boundary conditions
|
|
187
|
+
|
|
188
|
+
### Integration Tests
|
|
189
|
+
- Test component interactions
|
|
190
|
+
- Verify data flow between modules
|
|
191
|
+
- Test with realistic configurations
|
|
192
|
+
|
|
193
|
+
### Edge Cases to Cover
|
|
194
|
+
- Empty inputs (null, undefined, [], {})
|
|
195
|
+
- Boundary values (0, -1, MAX_INT)
|
|
196
|
+
- Invalid types
|
|
197
|
+
- Concurrent operations
|
|
198
|
+
- Error conditions
|
|
199
|
+
|
|
200
|
+
## Test Structure
|
|
201
|
+
|
|
202
|
+
\`\`\`typescript
|
|
203
|
+
describe('ComponentName', () => {
|
|
204
|
+
describe('methodName', () => {
|
|
205
|
+
it('should handle normal input', () => {
|
|
206
|
+
// Arrange - setup
|
|
207
|
+
// Act - execute
|
|
208
|
+
// Assert - verify
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
it('should handle edge case', () => { ... });
|
|
212
|
+
it('should throw on invalid input', () => { ... });
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
\`\`\`
|
|
216
|
+
|
|
217
|
+
## Output Format
|
|
218
|
+
|
|
219
|
+
For each test file:
|
|
220
|
+
1. Import statements and setup
|
|
221
|
+
2. Grouped test suites by functionality
|
|
222
|
+
3. Clear test descriptions
|
|
223
|
+
4. Proper assertions with helpful messages
|
|
224
|
+
5. Cleanup/teardown as needed
|
|
225
|
+
|
|
226
|
+
Aim for high coverage but prioritize meaningful tests over metric chasing.`,
|
|
227
|
+
},
|
|
228
|
+
|
|
229
|
+
"refactorer": {
|
|
230
|
+
name: "Refactorer",
|
|
231
|
+
description: "Code refactoring and optimization expert. Use to improve code structure without changing behavior.",
|
|
232
|
+
tools: ["Read", "Edit", "Bash", "Grep", "Glob"],
|
|
233
|
+
model: "inherit",
|
|
234
|
+
prompt: `You are an expert in code refactoring, focusing on improving structure while preserving behavior.
|
|
235
|
+
|
|
236
|
+
## When Invoked
|
|
237
|
+
|
|
238
|
+
1. Analyze the current code structure
|
|
239
|
+
2. Identify refactoring opportunities
|
|
240
|
+
3. Plan changes carefully
|
|
241
|
+
4. Execute incrementally with verification
|
|
242
|
+
|
|
243
|
+
## Refactoring Principles
|
|
244
|
+
|
|
245
|
+
### SOLID Principles
|
|
246
|
+
- **S**ingle Responsibility - one reason to change
|
|
247
|
+
- **O**pen/Closed - open for extension, closed for modification
|
|
248
|
+
- **L**iskov Substitution - subtypes must be substitutable
|
|
249
|
+
- **I**nterface Segregation - specific interfaces over general
|
|
250
|
+
- **D**ependency Inversion - depend on abstractions
|
|
251
|
+
|
|
252
|
+
### DRY (Don't Repeat Yourself)
|
|
253
|
+
- Extract common code into reusable functions
|
|
254
|
+
- Create shared utilities for repeated patterns
|
|
255
|
+
- Use composition over duplication
|
|
256
|
+
|
|
257
|
+
### Clean Code
|
|
258
|
+
- Meaningful names that reveal intent
|
|
259
|
+
- Small, focused functions
|
|
260
|
+
- Comments explain "why", not "what"
|
|
261
|
+
- Consistent formatting
|
|
262
|
+
|
|
263
|
+
## Safe Refactoring Process
|
|
264
|
+
|
|
265
|
+
1. **Ensure test coverage exists**
|
|
266
|
+
2. Make small, incremental changes
|
|
267
|
+
3. Run tests after each change
|
|
268
|
+
4. Commit frequently
|
|
269
|
+
5. Review diff before finalizing
|
|
270
|
+
|
|
271
|
+
## Common Refactorings
|
|
272
|
+
|
|
273
|
+
- Extract Method/Function
|
|
274
|
+
- Extract Variable
|
|
275
|
+
- Rename for clarity
|
|
276
|
+
- Inline temporary variables
|
|
277
|
+
- Replace conditionals with polymorphism
|
|
278
|
+
- Introduce parameter objects
|
|
279
|
+
- Replace magic numbers with constants
|
|
280
|
+
|
|
281
|
+
## Output Format
|
|
282
|
+
|
|
283
|
+
For each refactoring:
|
|
284
|
+
1. What: Describe the change
|
|
285
|
+
2. Why: Explain the benefit
|
|
286
|
+
3. Before/After: Show code comparison
|
|
287
|
+
4. Risk: Note any concerns
|
|
288
|
+
5. Testing: Verify behavior unchanged`,
|
|
289
|
+
},
|
|
290
|
+
|
|
291
|
+
"documenter": {
|
|
292
|
+
name: "Documenter",
|
|
293
|
+
description: "Documentation expert. Use to generate comprehensive docs, comments, and API documentation.",
|
|
294
|
+
tools: ["Read", "Write", "Edit", "Grep", "Glob"],
|
|
295
|
+
model: "inherit",
|
|
296
|
+
prompt: `You are a technical documentation expert skilled at creating clear, comprehensive documentation.
|
|
297
|
+
|
|
298
|
+
## When Invoked
|
|
299
|
+
|
|
300
|
+
1. Analyze the code structure
|
|
301
|
+
2. Identify documentation needs
|
|
302
|
+
3. Generate appropriate documentation
|
|
303
|
+
4. Ensure consistency in style
|
|
304
|
+
|
|
305
|
+
## Documentation Types
|
|
306
|
+
|
|
307
|
+
### Code Comments
|
|
308
|
+
- JSDoc/TSDoc for functions and classes
|
|
309
|
+
- Inline comments for complex logic
|
|
310
|
+
- TODO/FIXME for future work
|
|
311
|
+
|
|
312
|
+
### README Files
|
|
313
|
+
- Project overview
|
|
314
|
+
- Installation instructions
|
|
315
|
+
- Usage examples
|
|
316
|
+
- Configuration options
|
|
317
|
+
- Contributing guidelines
|
|
318
|
+
|
|
319
|
+
### API Documentation
|
|
320
|
+
- Endpoint descriptions
|
|
321
|
+
- Request/response formats
|
|
322
|
+
- Authentication requirements
|
|
323
|
+
- Error codes and handling
|
|
324
|
+
|
|
325
|
+
## JSDoc Format
|
|
326
|
+
|
|
327
|
+
\`\`\`typescript
|
|
328
|
+
/**
|
|
329
|
+
* Brief description of what the function does.
|
|
330
|
+
*
|
|
331
|
+
* @param {string} name - Description of parameter
|
|
332
|
+
* @param {Object} options - Configuration options
|
|
333
|
+
* @param {boolean} options.verbose - Enable verbose output
|
|
334
|
+
* @returns {Promise<Result>} Description of return value
|
|
335
|
+
* @throws {Error} When something goes wrong
|
|
336
|
+
* @example
|
|
337
|
+
* const result = await myFunction('test', { verbose: true });
|
|
338
|
+
*/
|
|
339
|
+
\`\`\`
|
|
340
|
+
|
|
341
|
+
## Documentation Principles
|
|
342
|
+
|
|
343
|
+
- Write for your audience (developer, user, admin)
|
|
344
|
+
- Keep it up to date with code changes
|
|
345
|
+
- Use examples liberally
|
|
346
|
+
- Be concise but complete
|
|
347
|
+
- Structure for scanning/skimming
|
|
348
|
+
|
|
349
|
+
## Output Format
|
|
350
|
+
|
|
351
|
+
Provide documentation that is:
|
|
352
|
+
1. Accurate to the code
|
|
353
|
+
2. Complete but not verbose
|
|
354
|
+
3. Well-formatted and readable
|
|
355
|
+
4. Consistent in style
|
|
356
|
+
5. Includes working examples`,
|
|
357
|
+
},
|
|
358
|
+
|
|
359
|
+
"security-auditor": {
|
|
360
|
+
name: "Security Auditor",
|
|
361
|
+
description: "Security vulnerability analyst. Use to audit code for security issues and compliance.",
|
|
362
|
+
tools: ["Read", "Grep", "Glob", "Bash"],
|
|
363
|
+
model: "inherit",
|
|
364
|
+
prompt: `You are a security expert specializing in code security audits and vulnerability analysis.
|
|
365
|
+
|
|
366
|
+
## When Invoked
|
|
367
|
+
|
|
368
|
+
1. Scan codebase for security patterns
|
|
369
|
+
2. Identify potential vulnerabilities
|
|
370
|
+
3. Assess severity and impact
|
|
371
|
+
4. Provide remediation guidance
|
|
372
|
+
|
|
373
|
+
## Security Checklist
|
|
374
|
+
|
|
375
|
+
### Authentication & Authorization
|
|
376
|
+
- [ ] Secure password handling (hashing, salting)
|
|
377
|
+
- [ ] Session management security
|
|
378
|
+
- [ ] JWT/token validation
|
|
379
|
+
- [ ] Role-based access control
|
|
380
|
+
- [ ] API key protection
|
|
381
|
+
|
|
382
|
+
### Input Validation
|
|
383
|
+
- [ ] SQL injection prevention
|
|
384
|
+
- [ ] XSS (Cross-Site Scripting) prevention
|
|
385
|
+
- [ ] Command injection prevention
|
|
386
|
+
- [ ] Path traversal prevention
|
|
387
|
+
- [ ] File upload validation
|
|
388
|
+
|
|
389
|
+
### Data Protection
|
|
390
|
+
- [ ] Encryption at rest
|
|
391
|
+
- [ ] Encryption in transit (TLS)
|
|
392
|
+
- [ ] Sensitive data logging prevention
|
|
393
|
+
- [ ] PII handling compliance
|
|
394
|
+
- [ ] Secrets management
|
|
395
|
+
|
|
396
|
+
### OWASP Top 10
|
|
397
|
+
- Injection
|
|
398
|
+
- Broken Authentication
|
|
399
|
+
- Sensitive Data Exposure
|
|
400
|
+
- XML External Entities (XXE)
|
|
401
|
+
- Broken Access Control
|
|
402
|
+
- Security Misconfiguration
|
|
403
|
+
- Cross-Site Scripting (XSS)
|
|
404
|
+
- Insecure Deserialization
|
|
405
|
+
- Using Components with Known Vulnerabilities
|
|
406
|
+
- Insufficient Logging & Monitoring
|
|
407
|
+
|
|
408
|
+
## Output Format
|
|
409
|
+
|
|
410
|
+
For each finding:
|
|
411
|
+
|
|
412
|
+
| Severity | Finding | Location |
|
|
413
|
+
|----------|---------|----------|
|
|
414
|
+
| CRITICAL | Description | file:line |
|
|
415
|
+
|
|
416
|
+
**Details:**
|
|
417
|
+
- Vulnerability: What the issue is
|
|
418
|
+
- Impact: What could happen
|
|
419
|
+
- Evidence: Code snippet showing the issue
|
|
420
|
+
- Remediation: How to fix it
|
|
421
|
+
- References: Links to more info`,
|
|
422
|
+
},
|
|
423
|
+
|
|
424
|
+
"performance-optimizer": {
|
|
425
|
+
name: "Performance Optimizer",
|
|
426
|
+
description: "Performance analysis expert. Use to identify bottlenecks and optimize code performance.",
|
|
427
|
+
tools: ["Read", "Edit", "Bash", "Grep", "Glob"],
|
|
428
|
+
model: "inherit",
|
|
429
|
+
prompt: `You are a performance optimization expert focused on identifying and resolving bottlenecks.
|
|
430
|
+
|
|
431
|
+
## When Invoked
|
|
432
|
+
|
|
433
|
+
1. Profile current performance
|
|
434
|
+
2. Identify bottlenecks
|
|
435
|
+
3. Propose optimizations
|
|
436
|
+
4. Measure improvement
|
|
437
|
+
|
|
438
|
+
## Performance Areas
|
|
439
|
+
|
|
440
|
+
### Algorithm Efficiency
|
|
441
|
+
- Time complexity analysis (Big O)
|
|
442
|
+
- Space complexity consideration
|
|
443
|
+
- Data structure selection
|
|
444
|
+
- Loop optimization
|
|
445
|
+
|
|
446
|
+
### Database Performance
|
|
447
|
+
- Query optimization
|
|
448
|
+
- Index usage
|
|
449
|
+
- N+1 query detection
|
|
450
|
+
- Connection pooling
|
|
451
|
+
- Caching strategies
|
|
452
|
+
|
|
453
|
+
### Frontend Performance
|
|
454
|
+
- Bundle size reduction
|
|
455
|
+
- Code splitting
|
|
456
|
+
- Lazy loading
|
|
457
|
+
- Image optimization
|
|
458
|
+
- Render optimization
|
|
459
|
+
|
|
460
|
+
### Backend Performance
|
|
461
|
+
- Response time
|
|
462
|
+
- Throughput
|
|
463
|
+
- Memory usage
|
|
464
|
+
- CPU utilization
|
|
465
|
+
- I/O optimization
|
|
466
|
+
|
|
467
|
+
## Common Optimizations
|
|
468
|
+
|
|
469
|
+
- Memoization/Caching
|
|
470
|
+
- Lazy evaluation
|
|
471
|
+
- Batch processing
|
|
472
|
+
- Async/parallel execution
|
|
473
|
+
- Connection reuse
|
|
474
|
+
- Compression
|
|
475
|
+
- CDN usage
|
|
476
|
+
|
|
477
|
+
## Analysis Process
|
|
478
|
+
|
|
479
|
+
1. **Measure first** - Get baseline metrics
|
|
480
|
+
2. **Profile** - Identify hotspots
|
|
481
|
+
3. **Analyze** - Understand root cause
|
|
482
|
+
4. **Optimize** - Make targeted changes
|
|
483
|
+
5. **Verify** - Measure improvement
|
|
484
|
+
6. **Document** - Record findings
|
|
485
|
+
|
|
486
|
+
## Output Format
|
|
487
|
+
|
|
488
|
+
For each optimization:
|
|
489
|
+
- Current: Baseline performance
|
|
490
|
+
- Issue: What's causing slowness
|
|
491
|
+
- Solution: Proposed fix
|
|
492
|
+
- Expected Improvement: Estimated gain
|
|
493
|
+
- Trade-offs: Any downsides`,
|
|
494
|
+
},
|
|
495
|
+
|
|
496
|
+
"api-designer": {
|
|
497
|
+
name: "API Designer",
|
|
498
|
+
description: "API design expert. Use for REST API design, endpoint structure, and API best practices.",
|
|
499
|
+
tools: ["Read", "Write", "Edit", "Grep", "Glob"],
|
|
500
|
+
model: "inherit",
|
|
501
|
+
prompt: `You are an expert API designer focused on creating clean, intuitive, and well-documented APIs.
|
|
502
|
+
|
|
503
|
+
## When Invoked
|
|
504
|
+
|
|
505
|
+
1. Analyze API requirements
|
|
506
|
+
2. Design endpoint structure
|
|
507
|
+
3. Define request/response formats
|
|
508
|
+
4. Document thoroughly
|
|
509
|
+
|
|
510
|
+
## REST API Best Practices
|
|
511
|
+
|
|
512
|
+
### URL Design
|
|
513
|
+
- Use nouns for resources: \`/users\`, \`/posts\`
|
|
514
|
+
- Use plural forms: \`/users\` not \`/user\`
|
|
515
|
+
- Nest for relationships: \`/users/{id}/posts\`
|
|
516
|
+
- Use hyphens for multi-word: \`/user-profiles\`
|
|
517
|
+
- Keep URLs lowercase
|
|
518
|
+
|
|
519
|
+
### HTTP Methods
|
|
520
|
+
- GET: Read resources
|
|
521
|
+
- POST: Create resources
|
|
522
|
+
- PUT: Replace resources
|
|
523
|
+
- PATCH: Update partial resources
|
|
524
|
+
- DELETE: Remove resources
|
|
525
|
+
|
|
526
|
+
### Status Codes
|
|
527
|
+
- 200: Success
|
|
528
|
+
- 201: Created
|
|
529
|
+
- 204: No Content
|
|
530
|
+
- 400: Bad Request
|
|
531
|
+
- 401: Unauthorized
|
|
532
|
+
- 403: Forbidden
|
|
533
|
+
- 404: Not Found
|
|
534
|
+
- 422: Validation Error
|
|
535
|
+
- 500: Server Error
|
|
536
|
+
|
|
537
|
+
### Response Format
|
|
538
|
+
\`\`\`json
|
|
539
|
+
{
|
|
540
|
+
"data": { ... },
|
|
541
|
+
"meta": {
|
|
542
|
+
"total": 100,
|
|
543
|
+
"page": 1,
|
|
544
|
+
"perPage": 20
|
|
545
|
+
},
|
|
546
|
+
"links": {
|
|
547
|
+
"self": "/api/users?page=1",
|
|
548
|
+
"next": "/api/users?page=2"
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
\`\`\`
|
|
552
|
+
|
|
553
|
+
### Error Format
|
|
554
|
+
\`\`\`json
|
|
555
|
+
{
|
|
556
|
+
"error": {
|
|
557
|
+
"code": "VALIDATION_ERROR",
|
|
558
|
+
"message": "Validation failed",
|
|
559
|
+
"details": [
|
|
560
|
+
{ "field": "email", "message": "Invalid email format" }
|
|
561
|
+
]
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
\`\`\`
|
|
565
|
+
|
|
566
|
+
## API Documentation
|
|
567
|
+
|
|
568
|
+
Include:
|
|
569
|
+
- Endpoint description
|
|
570
|
+
- Authentication requirements
|
|
571
|
+
- Request parameters
|
|
572
|
+
- Request body schema
|
|
573
|
+
- Response schema
|
|
574
|
+
- Error codes
|
|
575
|
+
- Examples`,
|
|
576
|
+
},
|
|
577
|
+
|
|
578
|
+
"database-expert": {
|
|
579
|
+
name: "Database Expert",
|
|
580
|
+
description: "Database design and optimization expert. Use for schema design, queries, and migrations.",
|
|
581
|
+
tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"],
|
|
582
|
+
model: "inherit",
|
|
583
|
+
prompt: `You are a database expert specializing in schema design, query optimization, and data modeling.
|
|
584
|
+
|
|
585
|
+
## When Invoked
|
|
586
|
+
|
|
587
|
+
1. Analyze data requirements
|
|
588
|
+
2. Design/review schema
|
|
589
|
+
3. Optimize queries
|
|
590
|
+
4. Plan migrations
|
|
591
|
+
|
|
592
|
+
## Database Design Principles
|
|
593
|
+
|
|
594
|
+
### Normalization
|
|
595
|
+
- 1NF: Atomic values, no repeating groups
|
|
596
|
+
- 2NF: No partial dependencies
|
|
597
|
+
- 3NF: No transitive dependencies
|
|
598
|
+
- Know when to denormalize for performance
|
|
599
|
+
|
|
600
|
+
### Schema Design
|
|
601
|
+
- Clear naming conventions
|
|
602
|
+
- Appropriate data types
|
|
603
|
+
- Foreign key relationships
|
|
604
|
+
- Index strategy
|
|
605
|
+
- Constraints for data integrity
|
|
606
|
+
|
|
607
|
+
### Query Optimization
|
|
608
|
+
- Use indexes effectively
|
|
609
|
+
- Avoid SELECT *
|
|
610
|
+
- Limit result sets
|
|
611
|
+
- Use EXPLAIN/ANALYZE
|
|
612
|
+
- Optimize JOINs
|
|
613
|
+
|
|
614
|
+
## Common Patterns
|
|
615
|
+
|
|
616
|
+
### Soft Deletes
|
|
617
|
+
\`\`\`sql
|
|
618
|
+
ALTER TABLE users ADD COLUMN deleted_at TIMESTAMP NULL;
|
|
619
|
+
CREATE INDEX idx_users_not_deleted ON users (id) WHERE deleted_at IS NULL;
|
|
620
|
+
\`\`\`
|
|
621
|
+
|
|
622
|
+
### Timestamps
|
|
623
|
+
\`\`\`sql
|
|
624
|
+
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
625
|
+
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
626
|
+
\`\`\`
|
|
627
|
+
|
|
628
|
+
### UUID Primary Keys
|
|
629
|
+
\`\`\`sql
|
|
630
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid()
|
|
631
|
+
\`\`\`
|
|
632
|
+
|
|
633
|
+
## Migration Best Practices
|
|
634
|
+
|
|
635
|
+
1. Backward compatible changes first
|
|
636
|
+
2. Add before remove
|
|
637
|
+
3. Test rollback procedures
|
|
638
|
+
4. Use transactions
|
|
639
|
+
5. Handle large tables carefully
|
|
640
|
+
6. Schedule during low traffic`,
|
|
641
|
+
},
|
|
642
|
+
|
|
643
|
+
"devops-engineer": {
|
|
644
|
+
name: "DevOps Engineer",
|
|
645
|
+
description: "DevOps expert for CI/CD, Docker, Kubernetes, and infrastructure. Use for deployment and automation.",
|
|
646
|
+
tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"],
|
|
647
|
+
model: "inherit",
|
|
648
|
+
prompt: `You are a DevOps expert specializing in CI/CD, containerization, and infrastructure automation.
|
|
649
|
+
|
|
650
|
+
## When Invoked
|
|
651
|
+
|
|
652
|
+
1. Analyze infrastructure needs
|
|
653
|
+
2. Design/review pipelines
|
|
654
|
+
3. Containerize applications
|
|
655
|
+
4. Automate deployments
|
|
656
|
+
|
|
657
|
+
## CI/CD Best Practices
|
|
658
|
+
|
|
659
|
+
### Pipeline Stages
|
|
660
|
+
1. **Build**: Compile, install dependencies
|
|
661
|
+
2. **Test**: Unit, integration, e2e tests
|
|
662
|
+
3. **Scan**: Security, dependency checks
|
|
663
|
+
4. **Package**: Build containers/artifacts
|
|
664
|
+
5. **Deploy**: Stage, then production
|
|
665
|
+
|
|
666
|
+
### GitHub Actions Example
|
|
667
|
+
\`\`\`yaml
|
|
668
|
+
name: CI/CD
|
|
669
|
+
on: [push, pull_request]
|
|
670
|
+
jobs:
|
|
671
|
+
build:
|
|
672
|
+
runs-on: ubuntu-latest
|
|
673
|
+
steps:
|
|
674
|
+
- uses: actions/checkout@v4
|
|
675
|
+
- name: Setup Node
|
|
676
|
+
uses: actions/setup-node@v4
|
|
677
|
+
- run: npm ci
|
|
678
|
+
- run: npm test
|
|
679
|
+
- run: npm run build
|
|
680
|
+
\`\`\`
|
|
681
|
+
|
|
682
|
+
## Docker Best Practices
|
|
683
|
+
|
|
684
|
+
### Dockerfile
|
|
685
|
+
\`\`\`dockerfile
|
|
686
|
+
# Multi-stage build
|
|
687
|
+
FROM node:20-alpine AS builder
|
|
688
|
+
WORKDIR /app
|
|
689
|
+
COPY package*.json ./
|
|
690
|
+
RUN npm ci
|
|
691
|
+
COPY . .
|
|
692
|
+
RUN npm run build
|
|
693
|
+
|
|
694
|
+
FROM node:20-alpine
|
|
695
|
+
WORKDIR /app
|
|
696
|
+
COPY --from=builder /app/dist ./dist
|
|
697
|
+
COPY --from=builder /app/node_modules ./node_modules
|
|
698
|
+
USER node
|
|
699
|
+
CMD ["node", "dist/index.js"]
|
|
700
|
+
\`\`\`
|
|
701
|
+
|
|
702
|
+
### Docker Compose
|
|
703
|
+
\`\`\`yaml
|
|
704
|
+
services:
|
|
705
|
+
app:
|
|
706
|
+
build: .
|
|
707
|
+
ports:
|
|
708
|
+
- "3000:3000"
|
|
709
|
+
environment:
|
|
710
|
+
- NODE_ENV=production
|
|
711
|
+
depends_on:
|
|
712
|
+
- db
|
|
713
|
+
db:
|
|
714
|
+
image: postgres:16-alpine
|
|
715
|
+
volumes:
|
|
716
|
+
- pgdata:/var/lib/postgresql/data
|
|
717
|
+
volumes:
|
|
718
|
+
pgdata:
|
|
719
|
+
\`\`\`
|
|
720
|
+
|
|
721
|
+
## Infrastructure Principles
|
|
722
|
+
|
|
723
|
+
- Infrastructure as Code (IaC)
|
|
724
|
+
- Immutable infrastructure
|
|
725
|
+
- Environment parity
|
|
726
|
+
- Secret management
|
|
727
|
+
- Monitoring and logging
|
|
728
|
+
- Disaster recovery
|
|
729
|
+
- Auto-scaling`,
|
|
730
|
+
},
|
|
731
|
+
};
|
|
732
|
+
|
|
733
|
+
// AI-powered agent generation types
|
|
734
|
+
interface GeneratedAgent {
|
|
735
|
+
name: string;
|
|
736
|
+
slug: string;
|
|
737
|
+
description: string;
|
|
738
|
+
tools: string[];
|
|
739
|
+
model: string;
|
|
740
|
+
prompt: string;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
interface AIGenerationResult {
|
|
744
|
+
agents: GeneratedAgent[];
|
|
745
|
+
reasoning: string;
|
|
746
|
+
}
|
|
747
|
+
|
|
748
|
+
// Parse command line arguments
|
|
749
|
+
const args = minimist(process.argv.slice(2), {
|
|
750
|
+
string: ["slug", "description", "tools", "model", "template", "prompt", "data", "generate"],
|
|
751
|
+
boolean: ["global", "skip-sync", "skip-index", "list-templates", "help", "dry-run"],
|
|
752
|
+
default: {
|
|
753
|
+
model: "inherit",
|
|
754
|
+
global: false,
|
|
755
|
+
"skip-sync": false,
|
|
756
|
+
"skip-index": false,
|
|
757
|
+
"dry-run": false,
|
|
758
|
+
},
|
|
759
|
+
alias: {
|
|
760
|
+
s: "slug",
|
|
761
|
+
d: "description",
|
|
762
|
+
t: "tools",
|
|
763
|
+
m: "model",
|
|
764
|
+
g: "global",
|
|
765
|
+
p: "prompt",
|
|
766
|
+
h: "help",
|
|
767
|
+
"no-sync": "skip-sync",
|
|
768
|
+
"no-index": "skip-index",
|
|
769
|
+
},
|
|
770
|
+
});
|
|
771
|
+
|
|
772
|
+
// Show help
|
|
773
|
+
if (args.help) {
|
|
774
|
+
console.log(`
|
|
775
|
+
Implementation Agent - Create Claude Code agent definitions
|
|
776
|
+
|
|
777
|
+
Usage:
|
|
778
|
+
skills run implementation-agent -- "<name>" [options]
|
|
779
|
+
skills run implementation-agent -- --template <template> --slug <slug>
|
|
780
|
+
skills run implementation-agent -- --generate "<prompt>"
|
|
781
|
+
|
|
782
|
+
Options:
|
|
783
|
+
-s, --slug <name> Slug identifier for the agent (required for manual creation)
|
|
784
|
+
-d, --description <text> When to invoke this agent
|
|
785
|
+
-t, --tools <tools> Comma-separated list of allowed tools
|
|
786
|
+
-m, --model <model> Model: sonnet, opus, haiku, inherit (default: inherit)
|
|
787
|
+
--template <name> Use a built-in template as base
|
|
788
|
+
-p, --prompt <text> Custom system prompt
|
|
789
|
+
--data <json> Full JSON configuration
|
|
790
|
+
-g, --global Save to ~/.claude/agents/ instead of project
|
|
791
|
+
--no-sync, --skip-sync Don't sync to .claude/agents/
|
|
792
|
+
--no-index, --skip-index Skip updating AGENTS.md index
|
|
793
|
+
--list-templates List all available templates
|
|
794
|
+
--generate <prompt> AI-powered agent generation from prompt
|
|
795
|
+
--dry-run Preview generated agents without creating files
|
|
796
|
+
-h, --help Show this help
|
|
797
|
+
|
|
798
|
+
Templates:
|
|
799
|
+
code-reviewer, debugger, test-writer, refactorer, documenter,
|
|
800
|
+
security-auditor, performance-optimizer, api-designer,
|
|
801
|
+
database-expert, devops-engineer
|
|
802
|
+
|
|
803
|
+
Examples:
|
|
804
|
+
skills run implementation-agent -- "Code Reviewer" --slug code-reviewer
|
|
805
|
+
skills run implementation-agent -- --template debugger --slug my-debugger
|
|
806
|
+
skills run implementation-agent -- "Custom" --slug custom --tools "Read,Edit,Bash" --model sonnet
|
|
807
|
+
skills run implementation-agent -- "Helper" --slug helper --global
|
|
808
|
+
|
|
809
|
+
# AI-powered generation
|
|
810
|
+
skills run implementation-agent -- --generate "I need agents for this e-commerce project"
|
|
811
|
+
skills run implementation-agent -- --generate "Create a reviewer and debugger for this TypeScript API"
|
|
812
|
+
skills run implementation-agent -- --generate "What agents would be useful for this Next.js app?" --dry-run
|
|
813
|
+
`);
|
|
814
|
+
process.exit(0);
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
// List templates
|
|
818
|
+
if (args["list-templates"]) {
|
|
819
|
+
console.log(`\nAvailable Agent Templates`);
|
|
820
|
+
console.log(`=========================\n`);
|
|
821
|
+
|
|
822
|
+
for (const [key, template] of Object.entries(TEMPLATES)) {
|
|
823
|
+
console.log(` ${key}`);
|
|
824
|
+
console.log(` ${template.description.substring(0, 70)}...`);
|
|
825
|
+
console.log(` Tools: ${template.tools.join(", ")}`);
|
|
826
|
+
console.log();
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
console.log(`\nUsage: skills run implementation-agent -- --template <name> --slug <slug>`);
|
|
830
|
+
process.exit(0);
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
// Get name (first positional argument)
|
|
834
|
+
const name = args._[0] as string;
|
|
835
|
+
|
|
836
|
+
// Check for template
|
|
837
|
+
const templateName = args.template as string;
|
|
838
|
+
let baseTemplate: AgentTemplate | null = null;
|
|
839
|
+
|
|
840
|
+
if (templateName) {
|
|
841
|
+
if (!TEMPLATES[templateName]) {
|
|
842
|
+
console.error(`Error: Unknown template "${templateName}"`);
|
|
843
|
+
console.error(`Available templates: ${Object.keys(TEMPLATES).join(", ")}`);
|
|
844
|
+
process.exit(1);
|
|
845
|
+
}
|
|
846
|
+
baseTemplate = TEMPLATES[templateName];
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
// Check for AI generation mode - skip validation if --generate is used
|
|
850
|
+
const isGenerateMode = !!args.generate;
|
|
851
|
+
|
|
852
|
+
// Require either name, template, or generate
|
|
853
|
+
if (!name && !baseTemplate && !isGenerateMode) {
|
|
854
|
+
console.error("Error: Agent name, --template, or --generate is required");
|
|
855
|
+
console.error('Usage: skills run implementation-agent -- "<name>" --slug <slug>');
|
|
856
|
+
console.error(" or: skills run implementation-agent -- --template <template> --slug <slug>");
|
|
857
|
+
console.error(' or: skills run implementation-agent -- --generate "<prompt>"');
|
|
858
|
+
process.exit(1);
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
// Get slug (not required for generate mode)
|
|
862
|
+
const rawSlug = args.slug as string;
|
|
863
|
+
|
|
864
|
+
if (!rawSlug && !isGenerateMode) {
|
|
865
|
+
console.error("Error: --slug is required");
|
|
866
|
+
process.exit(1);
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
// Normalize slug (only if provided)
|
|
870
|
+
const slug = rawSlug ? rawSlug.toLowerCase().replace(/[\s_]+/g, "-").replace(/[^a-z0-9-]/g, "") : "";
|
|
871
|
+
|
|
872
|
+
// Find .implementation directory
|
|
873
|
+
function findImplementationDir(): string | null {
|
|
874
|
+
let currentDir = process.env.SKILLS_CWD || process.cwd();
|
|
875
|
+
|
|
876
|
+
while (currentDir !== path.dirname(currentDir)) {
|
|
877
|
+
const implDir = path.join(currentDir, ".implementation");
|
|
878
|
+
if (fs.existsSync(implDir)) {
|
|
879
|
+
return implDir;
|
|
880
|
+
}
|
|
881
|
+
currentDir = path.dirname(currentDir);
|
|
882
|
+
}
|
|
883
|
+
|
|
884
|
+
return null;
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
// Get project root (where .implementation is or cwd)
|
|
888
|
+
function getProjectRoot(): string {
|
|
889
|
+
const implDir = findImplementationDir();
|
|
890
|
+
if (implDir) {
|
|
891
|
+
return path.dirname(implDir);
|
|
892
|
+
}
|
|
893
|
+
return process.env.SKILLS_CWD || process.cwd();
|
|
894
|
+
}
|
|
895
|
+
|
|
896
|
+
const implDir = findImplementationDir();
|
|
897
|
+
const isGlobal = args.global as boolean;
|
|
898
|
+
|
|
899
|
+
// For non-global agents, require .implementation directory
|
|
900
|
+
if (!isGlobal && !implDir) {
|
|
901
|
+
console.error("Error: .implementation directory not found");
|
|
902
|
+
console.error("Run 'skills run implementation-init' first to create the folder structure");
|
|
903
|
+
console.error("Or use --global to create a global agent");
|
|
904
|
+
process.exit(1);
|
|
905
|
+
}
|
|
906
|
+
|
|
907
|
+
// Output directories
|
|
908
|
+
const outputDir = isGlobal ? null : path.join(implDir!, "data", "agents");
|
|
909
|
+
const claudeAgentsDir = isGlobal
|
|
910
|
+
? path.join(os.homedir(), ".claude", "agents")
|
|
911
|
+
: path.join(getProjectRoot(), ".claude", "agents");
|
|
912
|
+
|
|
913
|
+
// Ensure directories exist
|
|
914
|
+
if (outputDir && !fs.existsSync(outputDir)) {
|
|
915
|
+
fs.mkdirSync(outputDir, { recursive: true });
|
|
916
|
+
}
|
|
917
|
+
|
|
918
|
+
if (!args["skip-sync"] && !fs.existsSync(claudeAgentsDir)) {
|
|
919
|
+
fs.mkdirSync(claudeAgentsDir, { recursive: true });
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
// Get next sequence number
|
|
923
|
+
function getNextSequence(): number {
|
|
924
|
+
if (!outputDir || !fs.existsSync(outputDir)) return 1;
|
|
925
|
+
|
|
926
|
+
const files = fs.readdirSync(outputDir);
|
|
927
|
+
let maxSeq = 0;
|
|
928
|
+
|
|
929
|
+
for (const file of files) {
|
|
930
|
+
const match = file.match(/^agent_(\d{5})_/);
|
|
931
|
+
if (match) {
|
|
932
|
+
const seq = parseInt(match[1], 10);
|
|
933
|
+
if (seq > maxSeq) maxSeq = seq;
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
return maxSeq + 1;
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
const sequence = getNextSequence();
|
|
941
|
+
const agentId = `agent_${String(sequence).padStart(5, "0")}`;
|
|
942
|
+
const timestamp = new Date().toISOString().split("T")[0];
|
|
943
|
+
|
|
944
|
+
// Parse JSON data if provided
|
|
945
|
+
let jsonData: AgentJsonData | undefined;
|
|
946
|
+
if (args.data) {
|
|
947
|
+
try {
|
|
948
|
+
jsonData = JSON.parse(args.data as string);
|
|
949
|
+
} catch (e) {
|
|
950
|
+
console.error("Error: Invalid JSON data provided");
|
|
951
|
+
process.exit(1);
|
|
952
|
+
}
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
// Build agent data
|
|
956
|
+
const agentName = name || baseTemplate?.name || slug;
|
|
957
|
+
const description = args.description || jsonData?.description || baseTemplate?.description || `Agent for ${agentName}`;
|
|
958
|
+
|
|
959
|
+
// Parse tools
|
|
960
|
+
let tools: string[] = [];
|
|
961
|
+
if (args.tools) {
|
|
962
|
+
tools = (args.tools as string).split(",").map((t) => t.trim());
|
|
963
|
+
} else if (jsonData?.tools) {
|
|
964
|
+
tools = jsonData.tools;
|
|
965
|
+
} else if (baseTemplate?.tools) {
|
|
966
|
+
tools = baseTemplate.tools;
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
// Get model
|
|
970
|
+
const model = args.model || jsonData?.model || baseTemplate?.model || "inherit";
|
|
971
|
+
|
|
972
|
+
// Get permission mode
|
|
973
|
+
const permissionMode = jsonData?.permissionMode || "default";
|
|
974
|
+
|
|
975
|
+
// Get skills
|
|
976
|
+
const skills = jsonData?.skills || [];
|
|
977
|
+
|
|
978
|
+
// Build prompt
|
|
979
|
+
let prompt: string;
|
|
980
|
+
if (args.prompt) {
|
|
981
|
+
prompt = args.prompt as string;
|
|
982
|
+
} else if (baseTemplate?.prompt) {
|
|
983
|
+
prompt = baseTemplate.prompt;
|
|
984
|
+
} else if (jsonData?.sections) {
|
|
985
|
+
// Build from sections
|
|
986
|
+
const parts: string[] = [];
|
|
987
|
+
for (const section of jsonData.sections) {
|
|
988
|
+
parts.push(`## ${section.title}\n`);
|
|
989
|
+
if (section.content) {
|
|
990
|
+
parts.push(section.content + "\n");
|
|
991
|
+
}
|
|
992
|
+
if (section.items) {
|
|
993
|
+
for (const item of section.items) {
|
|
994
|
+
parts.push(`- ${item}`);
|
|
995
|
+
}
|
|
996
|
+
parts.push("");
|
|
997
|
+
}
|
|
998
|
+
}
|
|
999
|
+
prompt = parts.join("\n");
|
|
1000
|
+
} else {
|
|
1001
|
+
prompt = `You are ${agentName}, a specialized AI assistant.
|
|
1002
|
+
|
|
1003
|
+
## When Invoked
|
|
1004
|
+
|
|
1005
|
+
1. Analyze the request carefully
|
|
1006
|
+
2. Gather necessary context from the codebase
|
|
1007
|
+
3. Execute the task systematically
|
|
1008
|
+
4. Verify your work
|
|
1009
|
+
|
|
1010
|
+
## Guidelines
|
|
1011
|
+
|
|
1012
|
+
- Focus on the specific task at hand
|
|
1013
|
+
- Use available tools effectively
|
|
1014
|
+
- Provide clear, actionable output
|
|
1015
|
+
- Ask for clarification if needed`;
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
const agentData: AgentData = {
|
|
1019
|
+
id: agentId,
|
|
1020
|
+
slug,
|
|
1021
|
+
name: agentName,
|
|
1022
|
+
description,
|
|
1023
|
+
tools,
|
|
1024
|
+
model,
|
|
1025
|
+
permissionMode,
|
|
1026
|
+
skills,
|
|
1027
|
+
prompt,
|
|
1028
|
+
created: timestamp,
|
|
1029
|
+
updated: timestamp,
|
|
1030
|
+
isGlobal,
|
|
1031
|
+
jsonData,
|
|
1032
|
+
};
|
|
1033
|
+
|
|
1034
|
+
// Generate Claude Code agent markdown
|
|
1035
|
+
function generateClaudeAgentMarkdown(data: AgentData): string {
|
|
1036
|
+
let content = `---\n`;
|
|
1037
|
+
content += `name: ${data.slug}\n`;
|
|
1038
|
+
content += `description: ${data.description}\n`;
|
|
1039
|
+
|
|
1040
|
+
if (data.tools.length > 0) {
|
|
1041
|
+
content += `tools: ${data.tools.join(", ")}\n`;
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
if (data.model && data.model !== "inherit") {
|
|
1045
|
+
content += `model: ${data.model}\n`;
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
if (data.permissionMode && data.permissionMode !== "default") {
|
|
1049
|
+
content += `permissionMode: ${data.permissionMode}\n`;
|
|
1050
|
+
}
|
|
1051
|
+
|
|
1052
|
+
if (data.skills.length > 0) {
|
|
1053
|
+
content += `skills: ${data.skills.join(", ")}\n`;
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
content += `---\n\n`;
|
|
1057
|
+
content += data.prompt;
|
|
1058
|
+
content += "\n";
|
|
1059
|
+
|
|
1060
|
+
return content;
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
// Generate archived agent markdown (with metadata)
|
|
1064
|
+
function generateArchivedMarkdown(data: AgentData): string {
|
|
1065
|
+
let content = `# Agent: ${data.name}\n\n`;
|
|
1066
|
+
|
|
1067
|
+
content += `- **ID**: ${data.id}\n`;
|
|
1068
|
+
content += `- **Slug**: ${data.slug}\n`;
|
|
1069
|
+
content += `- **Description**: ${data.description}\n`;
|
|
1070
|
+
|
|
1071
|
+
if (data.tools.length > 0) {
|
|
1072
|
+
content += `- **Tools**: ${data.tools.join(", ")}\n`;
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
content += `- **Model**: ${data.model}\n`;
|
|
1076
|
+
|
|
1077
|
+
if (data.skills.length > 0) {
|
|
1078
|
+
content += `- **Skills**: ${data.skills.join(", ")}\n`;
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
content += `- **Global**: ${data.isGlobal ? "Yes" : "No"}\n`;
|
|
1082
|
+
content += `- **Created**: ${data.created}\n`;
|
|
1083
|
+
content += `- **Updated**: ${data.updated}\n`;
|
|
1084
|
+
|
|
1085
|
+
content += `\n---\n\n`;
|
|
1086
|
+
content += `## System Prompt\n\n`;
|
|
1087
|
+
content += "```markdown\n";
|
|
1088
|
+
content += data.prompt;
|
|
1089
|
+
content += "\n```\n";
|
|
1090
|
+
|
|
1091
|
+
content += `\n## Claude Code Format\n\n`;
|
|
1092
|
+
content += "```markdown\n";
|
|
1093
|
+
content += generateClaudeAgentMarkdown(data);
|
|
1094
|
+
content += "```\n";
|
|
1095
|
+
|
|
1096
|
+
return content;
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
// Update index file
|
|
1100
|
+
function updateIndex(data: AgentData, filename: string): void {
|
|
1101
|
+
if (!implDir) return;
|
|
1102
|
+
|
|
1103
|
+
const indexPath = path.join(implDir, "data", "indexes", "AGENTS.md");
|
|
1104
|
+
|
|
1105
|
+
if (!fs.existsSync(indexPath)) {
|
|
1106
|
+
// Create the index file if it doesn't exist
|
|
1107
|
+
const indexContent = `# Agents Index
|
|
1108
|
+
|
|
1109
|
+
Project: ${path.basename(getProjectRoot())}
|
|
1110
|
+
Created: ${timestamp}
|
|
1111
|
+
|
|
1112
|
+
## Overview
|
|
1113
|
+
|
|
1114
|
+
This file indexes all agent definitions in this implementation.
|
|
1115
|
+
|
|
1116
|
+
## Agents
|
|
1117
|
+
|
|
1118
|
+
| ID | File | Name | Slug | Global | Created |
|
|
1119
|
+
|----|------|------|------|--------|---------|
|
|
1120
|
+
| - | - | No agents yet | - | - | - |
|
|
1121
|
+
|
|
1122
|
+
---
|
|
1123
|
+
|
|
1124
|
+
*Updated automatically by implementation-agent skill*
|
|
1125
|
+
`;
|
|
1126
|
+
fs.writeFileSync(indexPath, indexContent);
|
|
1127
|
+
}
|
|
1128
|
+
|
|
1129
|
+
let content = fs.readFileSync(indexPath, "utf-8");
|
|
1130
|
+
|
|
1131
|
+
const globalStr = data.isGlobal ? "Yes" : "No";
|
|
1132
|
+
const newRow = `| ${data.id} | ${filename} | ${data.name} | ${data.slug} | ${globalStr} | ${data.created} |`;
|
|
1133
|
+
|
|
1134
|
+
if (content.includes("| - | - | No agents yet | - | - | - |")) {
|
|
1135
|
+
content = content.replace("| - | - | No agents yet | - | - | - |", newRow);
|
|
1136
|
+
} else {
|
|
1137
|
+
const tableMatch = content.match(/(## Agents[\s\S]*?\|[-|]+\|[-|]+\|[-|]+\|[-|]+\|[-|]+\|[-|]+\|)/);
|
|
1138
|
+
if (tableMatch) {
|
|
1139
|
+
const insertPoint = tableMatch.index! + tableMatch[0].length;
|
|
1140
|
+
content = content.slice(0, insertPoint) + "\n" + newRow + content.slice(insertPoint);
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
content = content.replace(/\*Updated.*\*/, `*Updated: ${timestamp}*`);
|
|
1145
|
+
fs.writeFileSync(indexPath, content);
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
// AI-powered agent generation
|
|
1149
|
+
async function gatherProjectContext(projectRoot: string): Promise<string> {
|
|
1150
|
+
const contextParts: string[] = [];
|
|
1151
|
+
const maxFileSize = 50000; // 50KB max per file
|
|
1152
|
+
|
|
1153
|
+
// Key files to read for project understanding
|
|
1154
|
+
const keyFiles = [
|
|
1155
|
+
"package.json",
|
|
1156
|
+
"README.md",
|
|
1157
|
+
"CLAUDE.md",
|
|
1158
|
+
".claude/settings.json",
|
|
1159
|
+
"tsconfig.json",
|
|
1160
|
+
"pyproject.toml",
|
|
1161
|
+
"Cargo.toml",
|
|
1162
|
+
"go.mod",
|
|
1163
|
+
];
|
|
1164
|
+
|
|
1165
|
+
for (const file of keyFiles) {
|
|
1166
|
+
const filePath = path.join(projectRoot, file);
|
|
1167
|
+
if (fs.existsSync(filePath)) {
|
|
1168
|
+
try {
|
|
1169
|
+
const stat = fs.statSync(filePath);
|
|
1170
|
+
if (stat.size < maxFileSize) {
|
|
1171
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
1172
|
+
contextParts.push(`### ${file}\n\`\`\`\n${content}\n\`\`\``);
|
|
1173
|
+
}
|
|
1174
|
+
} catch (e) {
|
|
1175
|
+
// Skip unreadable files
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1180
|
+
// Get directory structure (limited depth)
|
|
1181
|
+
const structure = getDirectoryStructure(projectRoot, 3);
|
|
1182
|
+
contextParts.push(`### Directory Structure\n\`\`\`\n${structure}\n\`\`\``);
|
|
1183
|
+
|
|
1184
|
+
// Sample some source files
|
|
1185
|
+
const srcDirs = ["src", "lib", "app", "pages", "components"];
|
|
1186
|
+
let sampleFiles = 0;
|
|
1187
|
+
const maxSamples = 5;
|
|
1188
|
+
|
|
1189
|
+
for (const dir of srcDirs) {
|
|
1190
|
+
const dirPath = path.join(projectRoot, dir);
|
|
1191
|
+
if (fs.existsSync(dirPath) && sampleFiles < maxSamples) {
|
|
1192
|
+
const files = fs.readdirSync(dirPath).filter((f) =>
|
|
1193
|
+
f.endsWith(".ts") || f.endsWith(".tsx") || f.endsWith(".js") ||
|
|
1194
|
+
f.endsWith(".py") || f.endsWith(".go") || f.endsWith(".rs")
|
|
1195
|
+
).slice(0, maxSamples - sampleFiles);
|
|
1196
|
+
|
|
1197
|
+
for (const file of files) {
|
|
1198
|
+
const filePath = path.join(dirPath, file);
|
|
1199
|
+
try {
|
|
1200
|
+
const stat = fs.statSync(filePath);
|
|
1201
|
+
if (stat.isFile() && stat.size < maxFileSize) {
|
|
1202
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
1203
|
+
// Only include first 100 lines
|
|
1204
|
+
const preview = content.split("\n").slice(0, 100).join("\n");
|
|
1205
|
+
contextParts.push(`### ${dir}/${file} (preview)\n\`\`\`\n${preview}\n\`\`\``);
|
|
1206
|
+
sampleFiles++;
|
|
1207
|
+
}
|
|
1208
|
+
} catch (e) {
|
|
1209
|
+
// Skip unreadable files
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
}
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
return contextParts.join("\n\n");
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
function getDirectoryStructure(dir: string, maxDepth: number, currentDepth = 0, prefix = ""): string {
|
|
1219
|
+
if (currentDepth >= maxDepth) return "";
|
|
1220
|
+
|
|
1221
|
+
const items: string[] = [];
|
|
1222
|
+
const ignoreDirs = ["node_modules", ".git", "dist", "build", ".next", "__pycache__", "target", "vendor"];
|
|
1223
|
+
|
|
1224
|
+
try {
|
|
1225
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
1226
|
+
const filtered = entries.filter((e) => !ignoreDirs.includes(e.name) && !e.name.startsWith("."));
|
|
1227
|
+
|
|
1228
|
+
for (let i = 0; i < filtered.length && i < 20; i++) {
|
|
1229
|
+
const entry = filtered[i];
|
|
1230
|
+
const isLast = i === filtered.length - 1 || i === 19;
|
|
1231
|
+
const connector = isLast ? "└── " : "├── ";
|
|
1232
|
+
const nextPrefix = prefix + (isLast ? " " : "│ ");
|
|
1233
|
+
|
|
1234
|
+
items.push(`${prefix}${connector}${entry.name}${entry.isDirectory() ? "/" : ""}`);
|
|
1235
|
+
|
|
1236
|
+
if (entry.isDirectory()) {
|
|
1237
|
+
const subStructure = getDirectoryStructure(
|
|
1238
|
+
path.join(dir, entry.name),
|
|
1239
|
+
maxDepth,
|
|
1240
|
+
currentDepth + 1,
|
|
1241
|
+
nextPrefix
|
|
1242
|
+
);
|
|
1243
|
+
if (subStructure) items.push(subStructure);
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
|
|
1247
|
+
if (filtered.length > 20) {
|
|
1248
|
+
items.push(`${prefix}└── ... (${filtered.length - 20} more items)`);
|
|
1249
|
+
}
|
|
1250
|
+
} catch (e) {
|
|
1251
|
+
// Skip unreadable directories
|
|
1252
|
+
}
|
|
1253
|
+
|
|
1254
|
+
return items.join("\n");
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
async function generateAgentsWithAI(userPrompt: string, projectRoot: string): Promise<AIGenerationResult> {
|
|
1258
|
+
const apiKey = process.env.ANTHROPIC_API_KEY;
|
|
1259
|
+
|
|
1260
|
+
if (!apiKey) {
|
|
1261
|
+
throw new Error(
|
|
1262
|
+
"ANTHROPIC_API_KEY environment variable is required for AI generation.\n" +
|
|
1263
|
+
"Set it with: export ANTHROPIC_API_KEY=your_key"
|
|
1264
|
+
);
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
console.log("Gathering project context...");
|
|
1268
|
+
const projectContext = await gatherProjectContext(projectRoot);
|
|
1269
|
+
|
|
1270
|
+
console.log("Analyzing project with AI...");
|
|
1271
|
+
|
|
1272
|
+
const systemPrompt = `You are an expert at creating Claude Code agents. You analyze projects and create specialized AI agents that help developers work more efficiently.
|
|
1273
|
+
|
|
1274
|
+
When creating agents, follow these principles:
|
|
1275
|
+
1. Each agent should have a clear, focused purpose
|
|
1276
|
+
2. Agent descriptions should explain WHEN to use the agent (proactively)
|
|
1277
|
+
3. Tools should be limited to what's necessary
|
|
1278
|
+
4. Prompts should be detailed and actionable
|
|
1279
|
+
5. Agents should follow best practices for their domain
|
|
1280
|
+
|
|
1281
|
+
Available tools for agents:
|
|
1282
|
+
- Read: Read files
|
|
1283
|
+
- Edit: Edit files
|
|
1284
|
+
- Write: Write new files
|
|
1285
|
+
- Bash: Run shell commands
|
|
1286
|
+
- Grep: Search file contents
|
|
1287
|
+
- Glob: Find files by pattern
|
|
1288
|
+
- WebFetch: Fetch web content
|
|
1289
|
+
- WebSearch: Search the web
|
|
1290
|
+
- Task: Delegate to sub-agents
|
|
1291
|
+
- LSP: Language server features
|
|
1292
|
+
- NotebookEdit: Edit Jupyter notebooks
|
|
1293
|
+
|
|
1294
|
+
Available models: sonnet (balanced), opus (most capable), haiku (fast), inherit (parent model)`;
|
|
1295
|
+
|
|
1296
|
+
const userMessage = `Analyze this project and create appropriate Claude Code agents based on the user's request.
|
|
1297
|
+
|
|
1298
|
+
User request: "${userPrompt}"
|
|
1299
|
+
|
|
1300
|
+
Project context:
|
|
1301
|
+
${projectContext}
|
|
1302
|
+
|
|
1303
|
+
Create agents that would be most useful for this specific project. Consider:
|
|
1304
|
+
- The project's tech stack and languages
|
|
1305
|
+
- Common development workflows
|
|
1306
|
+
- Potential pain points the user might face
|
|
1307
|
+
- Best practices for the domain
|
|
1308
|
+
|
|
1309
|
+
Respond with JSON in this exact format:
|
|
1310
|
+
{
|
|
1311
|
+
"agents": [
|
|
1312
|
+
{
|
|
1313
|
+
"name": "Agent Name",
|
|
1314
|
+
"slug": "agent-slug",
|
|
1315
|
+
"description": "When to use this agent - written as: Use proactively when...",
|
|
1316
|
+
"tools": ["Read", "Edit", "Bash"],
|
|
1317
|
+
"model": "inherit",
|
|
1318
|
+
"prompt": "Detailed multi-line system prompt for the agent..."
|
|
1319
|
+
}
|
|
1320
|
+
],
|
|
1321
|
+
"reasoning": "Brief explanation of why you chose these agents"
|
|
1322
|
+
}
|
|
1323
|
+
|
|
1324
|
+
Create between 2-5 agents that would be most valuable for this project.`;
|
|
1325
|
+
|
|
1326
|
+
try {
|
|
1327
|
+
const response = await fetch("https://api.anthropic.com/v1/messages", {
|
|
1328
|
+
method: "POST",
|
|
1329
|
+
headers: {
|
|
1330
|
+
"Content-Type": "application/json",
|
|
1331
|
+
"x-api-key": apiKey,
|
|
1332
|
+
"anthropic-version": "2023-06-01",
|
|
1333
|
+
},
|
|
1334
|
+
body: JSON.stringify({
|
|
1335
|
+
model: "claude-sonnet-4-20250514",
|
|
1336
|
+
max_tokens: 8192,
|
|
1337
|
+
temperature: 0.7,
|
|
1338
|
+
messages: [
|
|
1339
|
+
{ role: "user", content: userMessage }
|
|
1340
|
+
],
|
|
1341
|
+
system: systemPrompt,
|
|
1342
|
+
}),
|
|
1343
|
+
});
|
|
1344
|
+
|
|
1345
|
+
if (!response.ok) {
|
|
1346
|
+
const errorText = await response.text();
|
|
1347
|
+
throw new Error(`API request failed: ${response.status} - ${errorText}`);
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
const data = await response.json() as any;
|
|
1351
|
+
const content = data.content?.[0]?.text || "";
|
|
1352
|
+
|
|
1353
|
+
// Extract JSON from response
|
|
1354
|
+
const jsonMatch = content.match(/\{[\s\S]*\}/);
|
|
1355
|
+
if (!jsonMatch) {
|
|
1356
|
+
throw new Error("Failed to parse AI response - no JSON found");
|
|
1357
|
+
}
|
|
1358
|
+
|
|
1359
|
+
const result = JSON.parse(jsonMatch[0]) as AIGenerationResult;
|
|
1360
|
+
return result;
|
|
1361
|
+
} catch (error) {
|
|
1362
|
+
if (error instanceof Error) {
|
|
1363
|
+
throw new Error(`AI generation failed: ${error.message}`);
|
|
1364
|
+
}
|
|
1365
|
+
throw error;
|
|
1366
|
+
}
|
|
1367
|
+
}
|
|
1368
|
+
|
|
1369
|
+
// Main execution with AI generation support
|
|
1370
|
+
async function mainWithGenerate(): Promise<void> {
|
|
1371
|
+
console.log(`\nImplementation Agent - AI Generation Mode`);
|
|
1372
|
+
console.log(`==========================================\n`);
|
|
1373
|
+
|
|
1374
|
+
const generatePrompt = args.generate as string;
|
|
1375
|
+
const projectRoot = process.env.SKILLS_CWD || process.cwd();
|
|
1376
|
+
const isDryRun = args["dry-run"] as boolean;
|
|
1377
|
+
|
|
1378
|
+
console.log(`Project: ${path.basename(projectRoot)}`);
|
|
1379
|
+
console.log(`Prompt: "${generatePrompt}"`);
|
|
1380
|
+
if (isDryRun) {
|
|
1381
|
+
console.log(`Mode: Dry run (no files will be created)\n`);
|
|
1382
|
+
} else {
|
|
1383
|
+
console.log();
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1386
|
+
// Generate agents
|
|
1387
|
+
const result = await generateAgentsWithAI(generatePrompt, projectRoot);
|
|
1388
|
+
|
|
1389
|
+
console.log(`\n${"=".repeat(50)}`);
|
|
1390
|
+
console.log(`\nAI Analysis:`);
|
|
1391
|
+
console.log(`${result.reasoning}\n`);
|
|
1392
|
+
console.log(`Generated ${result.agents.length} agents:\n`);
|
|
1393
|
+
|
|
1394
|
+
// Display agents
|
|
1395
|
+
for (const agent of result.agents) {
|
|
1396
|
+
console.log(` ${agent.name} (${agent.slug})`);
|
|
1397
|
+
console.log(` ${agent.description.substring(0, 70)}...`);
|
|
1398
|
+
console.log(` Tools: ${agent.tools.join(", ")}`);
|
|
1399
|
+
console.log();
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
if (isDryRun) {
|
|
1403
|
+
console.log(`Dry run complete. No files created.`);
|
|
1404
|
+
console.log(`Remove --dry-run to create these agents.`);
|
|
1405
|
+
return;
|
|
1406
|
+
}
|
|
1407
|
+
|
|
1408
|
+
// Create the agents
|
|
1409
|
+
console.log(`Creating agents...`);
|
|
1410
|
+
|
|
1411
|
+
const localImplDir = findImplementationDir();
|
|
1412
|
+
const localProjectRoot = localImplDir ? path.dirname(localImplDir) : projectRoot;
|
|
1413
|
+
const localClaudeAgentsDir = args.global
|
|
1414
|
+
? path.join(os.homedir(), ".claude", "agents")
|
|
1415
|
+
: path.join(localProjectRoot, ".claude", "agents");
|
|
1416
|
+
|
|
1417
|
+
// Ensure directories exist
|
|
1418
|
+
if (!fs.existsSync(localClaudeAgentsDir)) {
|
|
1419
|
+
fs.mkdirSync(localClaudeAgentsDir, { recursive: true });
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1422
|
+
let localOutputDir: string | null = null;
|
|
1423
|
+
if (!args.global && localImplDir) {
|
|
1424
|
+
localOutputDir = path.join(localImplDir, "data", "agents");
|
|
1425
|
+
if (!fs.existsSync(localOutputDir)) {
|
|
1426
|
+
fs.mkdirSync(localOutputDir, { recursive: true });
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
// Get starting sequence number
|
|
1431
|
+
let localSequence = 1;
|
|
1432
|
+
if (localOutputDir && fs.existsSync(localOutputDir)) {
|
|
1433
|
+
const files = fs.readdirSync(localOutputDir);
|
|
1434
|
+
for (const file of files) {
|
|
1435
|
+
const match = file.match(/^agent_(\d{5})_/);
|
|
1436
|
+
if (match) {
|
|
1437
|
+
const seq = parseInt(match[1], 10);
|
|
1438
|
+
if (seq >= localSequence) localSequence = seq + 1;
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
}
|
|
1442
|
+
|
|
1443
|
+
const localTimestamp = new Date().toISOString().split("T")[0];
|
|
1444
|
+
|
|
1445
|
+
for (const agent of result.agents) {
|
|
1446
|
+
const localAgentId = `agent_${String(localSequence).padStart(5, "0")}`;
|
|
1447
|
+
|
|
1448
|
+
const localAgentData: AgentData = {
|
|
1449
|
+
id: localAgentId,
|
|
1450
|
+
slug: agent.slug,
|
|
1451
|
+
name: agent.name,
|
|
1452
|
+
description: agent.description,
|
|
1453
|
+
tools: agent.tools,
|
|
1454
|
+
model: agent.model,
|
|
1455
|
+
permissionMode: "default",
|
|
1456
|
+
skills: [],
|
|
1457
|
+
prompt: agent.prompt,
|
|
1458
|
+
created: localTimestamp,
|
|
1459
|
+
updated: localTimestamp,
|
|
1460
|
+
isGlobal: args.global as boolean,
|
|
1461
|
+
};
|
|
1462
|
+
|
|
1463
|
+
// Generate Claude Code agent file
|
|
1464
|
+
const claudeAgentContent = generateClaudeAgentMarkdown(localAgentData);
|
|
1465
|
+
const claudeAgentPath = path.join(localClaudeAgentsDir, `${agent.slug}.md`);
|
|
1466
|
+
|
|
1467
|
+
if (!args["skip-sync"]) {
|
|
1468
|
+
fs.writeFileSync(claudeAgentPath, claudeAgentContent);
|
|
1469
|
+
console.log(` Created: ${claudeAgentPath}`);
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
// Generate archived file (only for non-global)
|
|
1473
|
+
if (localOutputDir) {
|
|
1474
|
+
const archiveFilename = `${localAgentId}_${agent.slug.replace(/-/g, "_")}.md`;
|
|
1475
|
+
const archivePath = path.join(localOutputDir, archiveFilename);
|
|
1476
|
+
const archivedContent = generateArchivedMarkdown(localAgentData);
|
|
1477
|
+
fs.writeFileSync(archivePath, archivedContent);
|
|
1478
|
+
|
|
1479
|
+
// Update index
|
|
1480
|
+
if (!args["skip-index"] && localImplDir) {
|
|
1481
|
+
updateIndex(localAgentData, archiveFilename);
|
|
1482
|
+
}
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1485
|
+
localSequence++;
|
|
1486
|
+
}
|
|
1487
|
+
|
|
1488
|
+
console.log(`\n${"=".repeat(50)}`);
|
|
1489
|
+
console.log(`\nSuccessfully created ${result.agents.length} agents!`);
|
|
1490
|
+
console.log(`\nUsage in Claude Code:`);
|
|
1491
|
+
for (const agent of result.agents) {
|
|
1492
|
+
console.log(` > Use the ${agent.slug} agent to...`);
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1496
|
+
// Main execution
|
|
1497
|
+
async function main(): Promise<void> {
|
|
1498
|
+
console.log(`\nImplementation Agent`);
|
|
1499
|
+
console.log(`====================\n`);
|
|
1500
|
+
|
|
1501
|
+
// Generate Claude Code agent file
|
|
1502
|
+
const claudeAgentContent = generateClaudeAgentMarkdown(agentData);
|
|
1503
|
+
const claudeAgentPath = path.join(claudeAgentsDir, `${slug}.md`);
|
|
1504
|
+
|
|
1505
|
+
if (!args["skip-sync"]) {
|
|
1506
|
+
fs.writeFileSync(claudeAgentPath, claudeAgentContent);
|
|
1507
|
+
console.log(`Created Claude agent: ${claudeAgentPath}`);
|
|
1508
|
+
}
|
|
1509
|
+
|
|
1510
|
+
// Generate archived file (only for non-global)
|
|
1511
|
+
let archiveFilename = "";
|
|
1512
|
+
if (outputDir) {
|
|
1513
|
+
archiveFilename = `${agentId}_${slug.replace(/-/g, "_")}.md`;
|
|
1514
|
+
const archivePath = path.join(outputDir, archiveFilename);
|
|
1515
|
+
const archivedContent = generateArchivedMarkdown(agentData);
|
|
1516
|
+
fs.writeFileSync(archivePath, archivedContent);
|
|
1517
|
+
console.log(`Created archive: ${archivePath}`);
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1520
|
+
console.log(`\nAgent Details:`);
|
|
1521
|
+
console.log(` ID: ${agentData.id}`);
|
|
1522
|
+
console.log(` Name: ${agentData.name}`);
|
|
1523
|
+
console.log(` Slug: ${agentData.slug}`);
|
|
1524
|
+
console.log(` Description: ${agentData.description.substring(0, 60)}...`);
|
|
1525
|
+
|
|
1526
|
+
if (agentData.tools.length > 0) {
|
|
1527
|
+
console.log(` Tools: ${agentData.tools.join(", ")}`);
|
|
1528
|
+
}
|
|
1529
|
+
|
|
1530
|
+
console.log(` Model: ${agentData.model}`);
|
|
1531
|
+
console.log(` Global: ${agentData.isGlobal ? "Yes" : "No"}`);
|
|
1532
|
+
|
|
1533
|
+
if (baseTemplate) {
|
|
1534
|
+
console.log(` Template: ${templateName}`);
|
|
1535
|
+
}
|
|
1536
|
+
|
|
1537
|
+
// Update index
|
|
1538
|
+
if (!args["skip-index"] && !isGlobal && outputDir) {
|
|
1539
|
+
console.log(`\nUpdating AGENTS.md index...`);
|
|
1540
|
+
updateIndex(agentData, archiveFilename);
|
|
1541
|
+
console.log(`Index updated.`);
|
|
1542
|
+
}
|
|
1543
|
+
|
|
1544
|
+
console.log(`\n${"=".repeat(40)}`);
|
|
1545
|
+
console.log(`\nAgent created successfully!`);
|
|
1546
|
+
|
|
1547
|
+
if (!args["skip-sync"]) {
|
|
1548
|
+
console.log(`\nUsage in Claude Code:`);
|
|
1549
|
+
console.log(` > Use the ${slug} agent to...`);
|
|
1550
|
+
console.log(` > Have ${slug} review my code`);
|
|
1551
|
+
}
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
// Entry point - route to appropriate mode
|
|
1555
|
+
if (args.generate) {
|
|
1556
|
+
mainWithGenerate().catch((error) => {
|
|
1557
|
+
console.error(`Error: ${error.message}`);
|
|
1558
|
+
process.exit(1);
|
|
1559
|
+
});
|
|
1560
|
+
} else {
|
|
1561
|
+
main().catch((error) => {
|
|
1562
|
+
console.error(`Error: ${error.message}`);
|
|
1563
|
+
process.exit(1);
|
|
1564
|
+
});
|
|
1565
|
+
}
|