@hasna/skills 0.1.60 → 0.1.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +189 -60
- package/agent-skills/README.md +41 -0
- package/agent-skills/fleet-package-rollout/SKILL.md +169 -0
- package/agent-skills/inbox/SKILL.md +25 -0
- package/agent-skills/inbox/scripts/inbox +109 -0
- package/agent-skills/inbox/tests/test_registered_sender_id.sh +92 -0
- package/agent-skills/inbox-monitor/SKILL.md +41 -0
- package/agent-skills/inbox-monitor/scripts/inbox_monitor.sh +91 -0
- package/agent-skills/inbox-monitor/scripts/test_inbox_monitor.sh +71 -0
- package/agent-skills/merge-pr/SKILL.md +85 -0
- package/agent-skills/merge-pr/references/merge-safety.md +82 -0
- package/agent-skills/merge-pr/scripts/merge_pr_guard.py +694 -0
- package/agent-skills/merge-pr/scripts/test_merge_pr_guard.py +647 -0
- package/agent-skills/merge-pr/tests/fixtures/multi-commit-synthesized.json +28 -0
- package/agent-skills/merge-pr/tests/fixtures/trailer-free-provider.json +28 -0
- package/agent-skills/skill-goal-execute/SKILL.md +115 -0
- package/agent-skills/skill-login/SKILL.md +109 -0
- package/agent-skills/skill-project-create/SKILL.md +91 -0
- package/agent-skills/skill-publish/SKILL.md +207 -0
- package/bin/index.js +2406 -3336
- package/bin/mcp.js +1127 -2641
- package/bin/migrate.js +955 -33
- package/bin/server.js +2367 -1989
- package/bin/worker.js +2089 -151
- package/dist/cli/cli.test-utils.d.ts +13 -2
- package/dist/cli/commands/publish.d.ts +30 -0
- package/dist/cli/commands/registry.d.ts +8 -0
- package/dist/index.d.ts +8 -6
- package/dist/index.js +1734 -2720
- package/dist/lib/agent-sync.d.ts +123 -0
- package/dist/lib/api-url.d.ts +34 -0
- package/dist/lib/auth-store.d.ts +21 -5
- package/dist/lib/blog-article.d.ts +37 -0
- package/dist/lib/config.d.ts +56 -2
- package/dist/lib/content-scan.d.ts +62 -9
- package/dist/lib/discovery.d.ts +10 -10
- package/dist/lib/doc-derived-counts.d.ts +56 -0
- package/dist/lib/feedback.d.ts +7 -0
- package/dist/lib/file-bytes.d.ts +43 -0
- package/dist/lib/hosted-skill-set.d.ts +69 -0
- package/dist/lib/infra-identifiers.d.ts +144 -0
- package/dist/lib/installer.d.ts +20 -6
- package/dist/lib/native-storage.d.ts +14 -11
- package/dist/lib/packlist.d.ts +13 -0
- package/dist/lib/portable-skills-files.d.ts +25 -0
- package/dist/lib/portable-skills-types.d.ts +105 -0
- package/dist/lib/portable-skills.d.ts +52 -103
- package/dist/lib/pull.d.ts +41 -0
- package/dist/lib/registry-merge.d.ts +57 -0
- package/dist/lib/registry-types.d.ts +1 -14
- package/dist/lib/registry.d.ts +6 -3
- package/dist/lib/remote-client.d.ts +15 -1
- package/dist/lib/remote-registry.d.ts +1 -1
- package/dist/lib/remote-run-contract.d.ts +0 -7
- package/dist/lib/retired-settings.d.ts +100 -0
- package/dist/lib/run-state.d.ts +14 -0
- package/dist/lib/skill-aliases.d.ts +0 -12
- package/dist/lib/skill-bundle.d.ts +37 -0
- package/dist/lib/vendor-host-code-scan.d.ts +66 -0
- package/dist/lib/vendor-host-folding.d.ts +40 -0
- package/dist/lib/vendor-host-guard.d.ts +47 -0
- package/dist/lib/vendor-host-package.d.ts +42 -0
- package/dist/lib/vendor-host-policy.d.ts +96 -0
- package/dist/lib/vendor-host-url.d.ts +81 -0
- package/dist/mcp/mcp-test-client.d.ts +18 -0
- package/dist/storage.d.ts +1 -1
- package/dist/storage.js +104 -51
- package/docs/skill-standard.md +1 -1
- package/migrations/postgres/0002_org_scoped_skill_registry.sql +72 -0
- package/migrations/sqlite/0001_open_skills_self_hosted.sql +150 -0
- package/migrations/sqlite/0002_org_scoped_skill_registry.sql +47 -0
- package/package.json +4 -4
- package/skills/_common/http-client.ts +17 -2
- package/skills/_common/install.sh +2 -2
- package/skills/_common/installer.ts +4 -5
- package/skills/_common/skill-install.ts +3 -3
- package/skills/ad-creative-pack/SKILL.md +28 -18
- package/skills/ad-creative-pack/package.json +1 -2
- package/skills/analyze-data/SKILL.md +1 -1
- package/skills/analyze-data/src/formatters.ts +2 -2
- package/skills/api-docs-portal/SKILL.md +62 -24
- package/skills/api-docs-portal/package.json +28 -4
- package/skills/api-docs-portal/src/index.ts +919 -0
- package/skills/audio-extract/SKILL.md +1 -1
- package/skills/blog-article/SKILL.md +32 -22
- package/skills/blog-article/package.json +1 -2
- package/skills/brand-assets/SKILL.md +94 -33
- package/skills/brand-assets/package.json +28 -4
- package/skills/brand-assets/src/cli.ts +155 -0
- package/skills/brand-assets/src/constants.ts +8 -0
- package/skills/brand-assets/src/extract.ts +236 -0
- package/skills/brand-assets/src/index.ts +668 -0
- package/skills/brand-assets/src/types.ts +59 -0
- package/skills/brand-kit/SKILL.md +27 -18
- package/skills/brand-kit/package.json +1 -2
- package/skills/compress-video/SKILL.md +1 -1
- package/skills/contract-review-report/SKILL.md +27 -18
- package/skills/contract-review-report/package.json +1 -2
- package/skills/customer-feedback-report/SKILL.md +27 -19
- package/skills/customer-feedback-report/package.json +1 -2
- package/skills/email-sequence/SKILL.md +26 -17
- package/skills/email-sequence/package.json +1 -2
- package/skills/generate-sitemap/src/index.ts +1 -1
- package/skills/invoice-reconciliation/SKILL.md +75 -19
- package/skills/invoice-reconciliation/package.json +29 -4
- package/skills/invoice-reconciliation/src/index.ts +743 -0
- package/skills/{convert → invoice-reconciliation}/tsconfig.json +3 -1
- package/skills/landing-page-pack/SKILL.md +27 -19
- package/skills/landing-page-pack/package.json +1 -2
- package/skills/logo-design/SKILL.md +69 -26
- package/skills/logo-design/package.json +28 -4
- package/skills/logo-design/src/cli.ts +132 -0
- package/skills/logo-design/src/constants.ts +5 -0
- package/skills/logo-design/src/docs.ts +102 -0
- package/skills/logo-design/src/geometry.ts +324 -0
- package/skills/logo-design/src/index.ts +212 -0
- package/skills/logo-design/src/palette.ts +258 -0
- package/skills/logo-design/src/types.ts +50 -0
- package/skills/logo-design/tsconfig.json +11 -2
- package/skills/market-research-report/SKILL.md +28 -18
- package/skills/market-research-report/package.json +2 -3
- package/skills/meeting-pack/SKILL.md +26 -17
- package/skills/meeting-pack/package.json +1 -2
- package/skills/merge-pdfs/src/index.ts +1 -1
- package/skills/migration-plan-pack/SKILL.md +30 -19
- package/skills/migration-plan-pack/package.json +1 -2
- package/skills/one-page-website/SKILL.md +105 -23
- package/skills/one-page-website/package.json +27 -4
- package/skills/one-page-website/src/design.ts +336 -0
- package/skills/one-page-website/src/docs.ts +159 -0
- package/skills/one-page-website/src/index.ts +357 -0
- package/skills/one-page-website/src/page.ts +340 -0
- package/skills/one-page-website/src/styles.ts +508 -0
- package/skills/one-page-website/src/types.ts +78 -0
- package/skills/one-page-website/tsconfig.json +11 -2
- package/skills/pdf-generate/SKILL.md +1 -1
- package/skills/pdf-to-dataset/SKILL.md +64 -21
- package/skills/pdf-to-dataset/package.json +30 -4
- package/skills/pdf-to-dataset/src/index.ts +790 -0
- package/skills/{emoji → pdf-to-dataset}/tsconfig.json +3 -4
- package/skills/pdf-to-markdown/SKILL.md +55 -23
- package/skills/pdf-to-markdown/package.json +28 -4
- package/skills/pdf-to-markdown/src/index.ts +694 -0
- package/skills/pdf-to-markdown/tsconfig.json +11 -4
- package/skills/performance-audit-report/SKILL.md +24 -17
- package/skills/performance-audit-report/package.json +1 -2
- package/skills/pitch-deck/SKILL.md +27 -19
- package/skills/pitch-deck/package.json +1 -2
- package/skills/product-mockup/SKILL.md +85 -23
- package/skills/product-mockup/package.json +25 -4
- package/skills/product-mockup/src/cli.ts +150 -0
- package/skills/product-mockup/src/design.ts +151 -0
- package/skills/product-mockup/src/docs.ts +134 -0
- package/skills/product-mockup/src/index.ts +182 -0
- package/skills/product-mockup/src/render.ts +407 -0
- package/skills/product-mockup/src/types.ts +66 -0
- package/skills/product-mockup/tsconfig.json +11 -2
- package/skills/proposal-pack/SKILL.md +27 -19
- package/skills/proposal-pack/package.json +2 -3
- package/skills/repo-onboarding-report/SKILL.md +26 -16
- package/skills/repo-onboarding-report/package.json +1 -2
- package/skills/security-audit/src/index.ts +1 -1
- package/skills/security-audit-report/SKILL.md +28 -16
- package/skills/security-audit-report/package.json +2 -3
- package/skills/seo-content-pack/SKILL.md +27 -17
- package/skills/seo-content-pack/package.json +1 -2
- package/skills/slide-deck-generator/SKILL.md +70 -21
- package/skills/slide-deck-generator/package.json +31 -4
- package/skills/slide-deck-generator/src/cli.ts +133 -0
- package/skills/slide-deck-generator/src/index.ts +148 -0
- package/skills/slide-deck-generator/src/model.ts +307 -0
- package/skills/slide-deck-generator/src/pptx.ts +143 -0
- package/skills/slide-deck-generator/src/render.ts +248 -0
- package/skills/slide-deck-generator/src/types.ts +114 -0
- package/skills/slide-deck-generator/src/utils.ts +53 -0
- package/skills/slide-deck-generator/tsconfig.json +17 -0
- package/skills/social-content-calendar/SKILL.md +27 -18
- package/skills/social-content-calendar/package.json +1 -2
- package/skills/split-pdf/src/index.ts +1 -1
- package/skills/test-suite-generator/SKILL.md +26 -16
- package/skills/test-suite-generator/package.json +2 -3
- package/skills/todos-plan/SKILL.md +339 -170
- package/skills/video-highlight-pack/SKILL.md +27 -17
- package/skills/video-highlight-pack/package.json +1 -2
- package/dist/cli/onboarding.d.ts +0 -13
- package/dist/lib/hosted-availability.d.ts +0 -13
- package/dist/lib/pricing.d.ts +0 -89
- package/skills/academic-journal-matcher/CLAUDE.md +0 -19
- package/skills/academic-journal-matcher/package.json +0 -27
- package/skills/academic-journal-matcher/src/index.ts +0 -86
- package/skills/academic-journal-matcher/tsconfig.json +0 -10
- package/skills/action-item-router/CLAUDE.md +0 -19
- package/skills/action-item-router/package.json +0 -27
- package/skills/action-item-router/src/index.ts +0 -304
- package/skills/action-item-router/tsconfig.json +0 -10
- package/skills/ad-creative-generator/CLAUDE.md +0 -19
- package/skills/ad-creative-generator/package.json +0 -27
- package/skills/ad-creative-generator/src/index.ts +0 -419
- package/skills/ad-creative-generator/tsconfig.json +0 -10
- package/skills/advanced-math/CLAUDE.md +0 -19
- package/skills/advanced-math/package.json +0 -29
- package/skills/advanced-math/src/calculators.ts +0 -118
- package/skills/advanced-math/src/cli.ts +0 -130
- package/skills/advanced-math/src/conversion.ts +0 -90
- package/skills/advanced-math/src/finance.ts +0 -75
- package/skills/advanced-math/src/formatting.ts +0 -95
- package/skills/advanced-math/src/index.ts +0 -133
- package/skills/advanced-math/src/runtime.ts +0 -49
- package/skills/advanced-math/src/symbolic.ts +0 -110
- package/skills/advanced-math/src/types.ts +0 -36
- package/skills/advanced-math/tsconfig.json +0 -10
- package/skills/anomaly-investigator/CLAUDE.md +0 -19
- package/skills/anomaly-investigator/package.json +0 -27
- package/skills/anomaly-investigator/src/index.ts +0 -311
- package/skills/anomaly-investigator/tsconfig.json +0 -10
- package/skills/apidocs/.env.example +0 -8
- package/skills/apidocs/CLAUDE.md +0 -278
- package/skills/apidocs/LICENSE +0 -192
- package/skills/apidocs/README.md +0 -196
- package/skills/apidocs/api-docs-list.json +0 -186
- package/skills/apidocs/package.json +0 -53
- package/skills/apidocs/scripts/crawl-all.ts +0 -157
- package/skills/apidocs/scripts/publish.ts +0 -210
- package/skills/apidocs/src/commands/add.ts +0 -279
- package/skills/apidocs/src/commands/endpoints.ts +0 -157
- package/skills/apidocs/src/commands/list.ts +0 -51
- package/skills/apidocs/src/commands/query.ts +0 -63
- package/skills/apidocs/src/commands/remove.ts +0 -39
- package/skills/apidocs/src/commands/sync.ts +0 -227
- package/skills/apidocs/src/index.ts +0 -3
- package/skills/apidocs/src/lib/crawler.ts +0 -427
- package/skills/apidocs/src/lib/discovery.ts +0 -244
- package/skills/apidocs/src/lib/embeddings.ts +0 -136
- package/skills/apidocs/src/lib/endpoint-extractor.ts +0 -359
- package/skills/apidocs/src/lib/html-to-md.ts +0 -163
- package/skills/apidocs/src/lib/parser.ts +0 -288
- package/skills/apidocs/src/lib/search.ts +0 -189
- package/skills/apidocs/src/lib/storage.ts +0 -242
- package/skills/apidocs/src/lib/vectors-local.ts +0 -220
- package/skills/apidocs/src/lib/vectors-s3.ts +0 -255
- package/skills/apidocs/src/lib/vectors.ts +0 -97
- package/skills/apidocs/src/types/index.ts +0 -297
- package/skills/apidocs/src/utils/output.ts +0 -132
- package/skills/apidocs/src/utils/paths.ts +0 -126
- package/skills/apidocs/tsconfig.json +0 -24
- package/skills/audio/SKILL.md +0 -35
- package/skills/audio/package.json +0 -11
- package/skills/audio-cleanup-lab/CLAUDE.md +0 -3
- package/skills/audio-cleanup-lab/SKILL.md +0 -81
- package/skills/audio-cleanup-lab/package.json +0 -23
- package/skills/audio-cleanup-lab/src/index.ts +0 -274
- package/skills/audio-cleanup-lab/tsconfig.json +0 -14
- package/skills/audio-transcript-pack/SKILL.md +0 -43
- package/skills/audio-transcript-pack/package.json +0 -11
- package/skills/banner-ad-suite/CLAUDE.md +0 -19
- package/skills/banner-ad-suite/package.json +0 -27
- package/skills/banner-ad-suite/src/index.ts +0 -331
- package/skills/banner-ad-suite/tsconfig.json +0 -10
- package/skills/benchmark-finder/CLAUDE.md +0 -19
- package/skills/benchmark-finder/package.json +0 -27
- package/skills/benchmark-finder/src/index.ts +0 -294
- package/skills/benchmark-finder/tsconfig.json +0 -10
- package/skills/blog-topic-cluster/CLAUDE.md +0 -19
- package/skills/blog-topic-cluster/package.json +0 -27
- package/skills/blog-topic-cluster/src/index.ts +0 -274
- package/skills/blog-topic-cluster/tsconfig.json +0 -10
- package/skills/brand-photo-shoot/SKILL.md +0 -28
- package/skills/brand-photo-shoot/package.json +0 -11
- package/skills/brand-style-guide/CLAUDE.md +0 -20
- package/skills/brand-style-guide/SKILL.md +0 -13
- package/skills/brand-style-guide/package.json +0 -26
- package/skills/brand-style-guide/src/index.ts +0 -288
- package/skills/brand-style-guide/tsconfig.json +0 -22
- package/skills/brand-voice-audit/CLAUDE.md +0 -19
- package/skills/brand-voice-audit/package.json +0 -27
- package/skills/brand-voice-audit/src/index.ts +0 -302
- package/skills/brand-voice-audit/tsconfig.json +0 -10
- package/skills/browse/LICENSE +0 -192
- package/skills/browse/README.md +0 -25
- package/skills/browse/SKILL.md +0 -35
- package/skills/browse/package.json +0 -11
- package/skills/browse/tsconfig.json +0 -22
- package/skills/budget-variance-analyzer/CLAUDE.md +0 -16
- package/skills/budget-variance-analyzer/SKILL.md +0 -83
- package/skills/budget-variance-analyzer/package.json +0 -24
- package/skills/budget-variance-analyzer/src/index.ts +0 -298
- package/skills/budget-variance-analyzer/tsconfig.json +0 -21
- package/skills/calendar-events/CLAUDE.md +0 -19
- package/skills/calendar-events/package.json +0 -27
- package/skills/calendar-events/src/ai-parser.ts +0 -103
- package/skills/calendar-events/src/api.ts +0 -157
- package/skills/calendar-events/src/auth.ts +0 -22
- package/skills/calendar-events/src/config.ts +0 -6
- package/skills/calendar-events/src/format.ts +0 -96
- package/skills/calendar-events/src/help.ts +0 -54
- package/skills/calendar-events/src/index.ts +0 -415
- package/skills/calendar-events/src/logger.ts +0 -34
- package/skills/calendar-events/src/types.ts +0 -67
- package/skills/calendar-events/tsconfig.json +0 -10
- package/skills/campaign-metric-brief/CLAUDE.md +0 -19
- package/skills/campaign-metric-brief/package.json +0 -27
- package/skills/campaign-metric-brief/src/index.ts +0 -307
- package/skills/campaign-metric-brief/tsconfig.json +0 -10
- package/skills/campaign-moodboard/CLAUDE.md +0 -19
- package/skills/campaign-moodboard/package.json +0 -27
- package/skills/campaign-moodboard/src/index.ts +0 -288
- package/skills/campaign-moodboard/tsconfig.json +0 -10
- package/skills/caption-style-stylist/CLAUDE.md +0 -19
- package/skills/caption-style-stylist/package.json +0 -27
- package/skills/caption-style-stylist/src/index.ts +0 -275
- package/skills/caption-style-stylist/tsconfig.json +0 -10
- package/skills/chemistry-calculator/CLAUDE.md +0 -19
- package/skills/chemistry-calculator/package.json +0 -27
- package/skills/chemistry-calculator/src/index.ts +0 -110
- package/skills/chemistry-calculator/tsconfig.json +0 -10
- package/skills/churn-risk-notifier/CLAUDE.md +0 -19
- package/skills/churn-risk-notifier/package.json +0 -27
- package/skills/churn-risk-notifier/src/index.ts +0 -308
- package/skills/churn-risk-notifier/tsconfig.json +0 -10
- package/skills/citation-formatter/CLAUDE.md +0 -19
- package/skills/citation-formatter/package.json +0 -27
- package/skills/citation-formatter/src/index.ts +0 -83
- package/skills/citation-formatter/tsconfig.json +0 -10
- package/skills/classroom-newsletter-kit/CLAUDE.md +0 -19
- package/skills/classroom-newsletter-kit/package.json +0 -27
- package/skills/classroom-newsletter-kit/src/index.ts +0 -293
- package/skills/classroom-newsletter-kit/tsconfig.json +0 -10
- package/skills/color-palette-harmonizer/CLAUDE.md +0 -19
- package/skills/color-palette-harmonizer/package.json +0 -27
- package/skills/color-palette-harmonizer/src/index.ts +0 -278
- package/skills/color-palette-harmonizer/tsconfig.json +0 -10
- package/skills/colorextract/SKILL.md +0 -35
- package/skills/colorextract/bun.lock +0 -102
- package/skills/colorextract/package.json +0 -25
- package/skills/colorextract/src/index.ts +0 -405
- package/skills/competitor-ad-analyzer/CLAUDE.md +0 -19
- package/skills/competitor-ad-analyzer/package.json +0 -27
- package/skills/competitor-ad-analyzer/src/index.ts +0 -350
- package/skills/competitor-ad-analyzer/tsconfig.json +0 -10
- package/skills/compliance-copy-check/CLAUDE.md +0 -19
- package/skills/compliance-copy-check/package.json +0 -27
- package/skills/compliance-copy-check/src/index.ts +0 -289
- package/skills/compliance-copy-check/tsconfig.json +0 -10
- package/skills/compliance-report-pack/CLAUDE.md +0 -19
- package/skills/compliance-report-pack/package.json +0 -27
- package/skills/compliance-report-pack/src/index.ts +0 -301
- package/skills/compliance-report-pack/tsconfig.json +0 -10
- package/skills/consolelog/.env.example +0 -19
- package/skills/consolelog/CLAUDE.md +0 -157
- package/skills/consolelog/LICENSE +0 -192
- package/skills/consolelog/README.md +0 -239
- package/skills/consolelog/data/.gitkeep +0 -0
- package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.csv +0 -16
- package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.json +0 -227
- package/skills/consolelog/package.json +0 -40
- package/skills/consolelog/scripts/migrate.ts +0 -26
- package/skills/consolelog/scripts/seed.ts +0 -48
- package/skills/consolelog/src/db/index.ts +0 -44
- package/skills/consolelog/src/db/queries.ts +0 -348
- package/skills/consolelog/src/db/schema.ts +0 -93
- package/skills/consolelog/src/index.ts +0 -3
- package/skills/consolelog/src/lib/config.ts +0 -110
- package/skills/consolelog/src/lib/installer.ts +0 -294
- package/skills/consolelog/src/lib/monitor.ts +0 -194
- package/skills/consolelog/src/lib/types.ts +0 -189
- package/skills/consolelog/src/lib/watcher.ts +0 -207
- package/skills/consolelog/tests/api.test.ts +0 -154
- package/skills/consolelog/tests/config.test.ts +0 -192
- package/skills/consolelog/tests/db.test.ts +0 -447
- package/skills/consolelog/tests/installer.test.ts +0 -155
- package/skills/consolelog/tsconfig.json +0 -24
- package/skills/contract-plainlanguage/CLAUDE.md +0 -19
- package/skills/contract-plainlanguage/package.json +0 -27
- package/skills/contract-plainlanguage/src/index.ts +0 -294
- package/skills/contract-plainlanguage/tsconfig.json +0 -10
- package/skills/convert/.env.example +0 -7
- package/skills/convert/LICENSE +0 -192
- package/skills/convert/README.md +0 -250
- package/skills/convert/SKILL.md +0 -106
- package/skills/convert/package.json +0 -37
- package/skills/convert/src/converters/ai.ts +0 -375
- package/skills/convert/src/converters/data.ts +0 -339
- package/skills/convert/src/converters/document.ts +0 -189
- package/skills/convert/src/converters/image.ts +0 -227
- package/skills/convert/src/converters/index.ts +0 -9
- package/skills/convert/src/converters/pdf.ts +0 -255
- package/skills/convert/src/index-local.ts +0 -568
- package/skills/convert/src/index.ts +0 -4
- package/skills/convert/src/types.ts +0 -192
- package/skills/copytone-translator/CLAUDE.md +0 -19
- package/skills/copytone-translator/package.json +0 -27
- package/skills/copytone-translator/src/index.ts +0 -295
- package/skills/copytone-translator/tsconfig.json +0 -10
- package/skills/create-ebook/CLAUDE.md +0 -19
- package/skills/create-ebook/package.json +0 -27
- package/skills/create-ebook/src/index.ts +0 -637
- package/skills/create-ebook/tsconfig.json +0 -10
- package/skills/crm-note-enhancer/CLAUDE.md +0 -19
- package/skills/crm-note-enhancer/package.json +0 -27
- package/skills/crm-note-enhancer/src/index.ts +0 -317
- package/skills/crm-note-enhancer/tsconfig.json +0 -10
- package/skills/customer-journey-mapper/CLAUDE.md +0 -19
- package/skills/customer-journey-mapper/package.json +0 -27
- package/skills/customer-journey-mapper/src/index.ts +0 -312
- package/skills/customer-journey-mapper/tsconfig.json +0 -10
- package/skills/dashboard-narrator/CLAUDE.md +0 -19
- package/skills/dashboard-narrator/package.json +0 -27
- package/skills/dashboard-narrator/src/index.ts +0 -307
- package/skills/dashboard-narrator/tsconfig.json +0 -10
- package/skills/dataset-health-check/CLAUDE.md +0 -19
- package/skills/dataset-health-check/package.json +0 -27
- package/skills/dataset-health-check/src/index.ts +0 -323
- package/skills/dataset-health-check/tsconfig.json +0 -10
- package/skills/decision-journal/CLAUDE.md +0 -19
- package/skills/decision-journal/package.json +0 -27
- package/skills/decision-journal/src/index.ts +0 -313
- package/skills/decision-journal/tsconfig.json +0 -10
- package/skills/deepresearch/CLAUDE.md +0 -11
- package/skills/deepresearch/README.md +0 -26
- package/skills/deepresearch/SKILL.md +0 -41
- package/skills/deepresearch/package.json +0 -11
- package/skills/deepresearch/tsconfig.json +0 -29
- package/skills/delegation-brief-writer/CLAUDE.md +0 -19
- package/skills/delegation-brief-writer/package.json +0 -27
- package/skills/delegation-brief-writer/src/index.ts +0 -314
- package/skills/delegation-brief-writer/tsconfig.json +0 -10
- package/skills/deploy/LICENSE +0 -192
- package/skills/deploy/README.md +0 -382
- package/skills/deploy/SKILL.md +0 -138
- package/skills/deploy/package.json +0 -18
- package/skills/deploy/src/deployer.ts +0 -256
- package/skills/deploy/src/health.ts +0 -103
- package/skills/deploy/src/hosts.ts +0 -45
- package/skills/deploy/src/http-client.ts +0 -128
- package/skills/deploy/src/index-local.ts +0 -366
- package/skills/deploy/src/index.ts +0 -4
- package/skills/deploy/src/types.ts +0 -56
- package/skills/deploy/tsconfig.json +0 -18
- package/skills/destination-briefing/CLAUDE.md +0 -19
- package/skills/destination-briefing/package.json +0 -27
- package/skills/destination-briefing/src/index.ts +0 -291
- package/skills/destination-briefing/tsconfig.json +0 -10
- package/skills/doc-generate/CLAUDE.md +0 -19
- package/skills/doc-generate/SKILL.md +0 -295
- package/skills/doc-generate/package.json +0 -23
- package/skills/doc-generate/src/ai.ts +0 -50
- package/skills/doc-generate/src/cli.ts +0 -203
- package/skills/doc-generate/src/dependencies.ts +0 -44
- package/skills/doc-generate/src/document-builder.ts +0 -299
- package/skills/doc-generate/src/index.ts +0 -90
- package/skills/doc-generate/src/markdown-parser.ts +0 -125
- package/skills/doc-generate/src/types.ts +0 -68
- package/skills/doc-generate/tsconfig.json +0 -16
- package/skills/domainsearch/.env.example +0 -7
- package/skills/domainsearch/LICENSE +0 -192
- package/skills/domainsearch/SKILL.md +0 -41
- package/skills/domainsearch/package.json +0 -33
- package/skills/domainsearch/src/index.ts +0 -3
- package/skills/domainsearch/src/lib/api-client.ts +0 -181
- package/skills/domainsearch/src/lib/config.ts +0 -72
- package/skills/domainsearch/src/lib/installer.ts +0 -164
- package/skills/domainsearch/tsconfig.json +0 -22
- package/skills/educational-resource-finder/CLAUDE.md +0 -19
- package/skills/educational-resource-finder/package.json +0 -27
- package/skills/educational-resource-finder/src/index.ts +0 -289
- package/skills/educational-resource-finder/tsconfig.json +0 -10
- package/skills/email-campaign/CLAUDE.md +0 -19
- package/skills/email-campaign/package.json +0 -27
- package/skills/email-campaign/src/index.ts +0 -339
- package/skills/email-campaign/tsconfig.json +0 -10
- package/skills/emoji/.env.example +0 -7
- package/skills/emoji/QUICKSTART.md +0 -52
- package/skills/emoji/README.md +0 -175
- package/skills/emoji/SKILL.md +0 -63
- package/skills/emoji/package.json +0 -31
- package/skills/emoji/src/image-processor.ts +0 -143
- package/skills/emoji/src/index.ts +0 -282
- package/skills/emoji/src/prompt-generator.ts +0 -181
- package/skills/emoji/src/providers/gemini.ts +0 -58
- package/skills/emoji/src/providers/openai.ts +0 -55
- package/skills/emoji/src/types.ts +0 -72
- package/skills/exam-readiness-check/CLAUDE.md +0 -19
- package/skills/exam-readiness-check/package.json +0 -27
- package/skills/exam-readiness-check/src/index.ts +0 -289
- package/skills/exam-readiness-check/tsconfig.json +0 -10
- package/skills/excel/CLAUDE.md +0 -19
- package/skills/excel/SKILL.md +0 -38
- package/skills/excel/package.json +0 -30
- package/skills/excel/src/index.ts +0 -644
- package/skills/excel/tsconfig.json +0 -10
- package/skills/extract/.env.example +0 -3
- package/skills/extract/LICENSE +0 -192
- package/skills/extract/README.md +0 -61
- package/skills/extract/SKILL.md +0 -91
- package/skills/extract/package.json +0 -35
- package/skills/extract/src/extractors/image.ts +0 -42
- package/skills/extract/src/extractors/pdf.ts +0 -96
- package/skills/extract/src/index-local.ts +0 -258
- package/skills/extract/src/index.ts +0 -4
- package/skills/extract/src/providers/openai.ts +0 -222
- package/skills/extract/src/types.ts +0 -61
- package/skills/extract/tsconfig.json +0 -19
- package/skills/extract-invoice/CLAUDE.md +0 -19
- package/skills/extract-invoice/package.json +0 -27
- package/skills/extract-invoice/src/cli.ts +0 -97
- package/skills/extract-invoice/src/extractor.ts +0 -170
- package/skills/extract-invoice/src/file-utils.ts +0 -46
- package/skills/extract-invoice/src/formatters.ts +0 -144
- package/skills/extract-invoice/src/index.ts +0 -129
- package/skills/extract-invoice/src/runtime.ts +0 -46
- package/skills/extract-invoice/src/types.ts +0 -88
- package/skills/extract-invoice/tsconfig.json +0 -10
- package/skills/family-activity-curator/CLAUDE.md +0 -19
- package/skills/family-activity-curator/package.json +0 -27
- package/skills/family-activity-curator/src/index.ts +0 -293
- package/skills/family-activity-curator/tsconfig.json +0 -10
- package/skills/faq-packager/CLAUDE.md +0 -19
- package/skills/faq-packager/package.json +0 -27
- package/skills/faq-packager/src/index.ts +0 -292
- package/skills/faq-packager/tsconfig.json +0 -10
- package/skills/feedback-survey-designer/CLAUDE.md +0 -19
- package/skills/feedback-survey-designer/package.json +0 -27
- package/skills/feedback-survey-designer/src/index.ts +0 -299
- package/skills/feedback-survey-designer/tsconfig.json +0 -10
- package/skills/field-trip-planner/CLAUDE.md +0 -19
- package/skills/field-trip-planner/package.json +0 -27
- package/skills/field-trip-planner/src/index.ts +0 -289
- package/skills/field-trip-planner/tsconfig.json +0 -10
- package/skills/forecast-scenario-lab/CLAUDE.md +0 -19
- package/skills/forecast-scenario-lab/package.json +0 -27
- package/skills/forecast-scenario-lab/src/index.ts +0 -314
- package/skills/forecast-scenario-lab/tsconfig.json +0 -10
- package/skills/generate-book-cover/CLAUDE.md +0 -19
- package/skills/generate-book-cover/package.json +0 -11
- package/skills/generate-book-cover/tsconfig.json +0 -10
- package/skills/generate-diagram/CLAUDE.md +0 -19
- package/skills/generate-diagram/package.json +0 -27
- package/skills/generate-diagram/src/index.ts +0 -514
- package/skills/generate-diagram/tsconfig.json +0 -10
- package/skills/generate-documentation/CLAUDE.md +0 -19
- package/skills/generate-documentation/package.json +0 -27
- package/skills/generate-documentation/src/ai.ts +0 -131
- package/skills/generate-documentation/src/cli.ts +0 -71
- package/skills/generate-documentation/src/code-parser.ts +0 -300
- package/skills/generate-documentation/src/file-processing.ts +0 -182
- package/skills/generate-documentation/src/index.ts +0 -65
- package/skills/generate-documentation/src/runtime.ts +0 -35
- package/skills/generate-documentation/src/types.ts +0 -30
- package/skills/generate-documentation/tsconfig.json +0 -10
- package/skills/generate-mock-data/CLAUDE.md +0 -19
- package/skills/generate-mock-data/package.json +0 -29
- package/skills/generate-mock-data/src/ai.ts +0 -102
- package/skills/generate-mock-data/src/formatters.ts +0 -84
- package/skills/generate-mock-data/src/generator.ts +0 -377
- package/skills/generate-mock-data/src/index.ts +0 -201
- package/skills/generate-mock-data/src/logger.ts +0 -37
- package/skills/generate-mock-data/src/presets.ts +0 -110
- package/skills/generate-mock-data/src/types.ts +0 -21
- package/skills/generate-mock-data/tsconfig.json +0 -10
- package/skills/generate-pr-description/CLAUDE.md +0 -19
- package/skills/generate-pr-description/package.json +0 -27
- package/skills/generate-pr-description/src/ai.ts +0 -144
- package/skills/generate-pr-description/src/cli.ts +0 -80
- package/skills/generate-pr-description/src/clipboard.ts +0 -30
- package/skills/generate-pr-description/src/formatters.ts +0 -231
- package/skills/generate-pr-description/src/git.ts +0 -153
- package/skills/generate-pr-description/src/index.ts +0 -114
- package/skills/generate-pr-description/src/types.ts +0 -49
- package/skills/generate-pr-description/tsconfig.json +0 -10
- package/skills/generate-presentation/CLAUDE.md +0 -19
- package/skills/generate-presentation/package.json +0 -27
- package/skills/generate-presentation/src/ai-clients.ts +0 -61
- package/skills/generate-presentation/src/cli.ts +0 -126
- package/skills/generate-presentation/src/index.ts +0 -44
- package/skills/generate-presentation/src/logger.ts +0 -67
- package/skills/generate-presentation/src/presentation-generator.ts +0 -425
- package/skills/generate-presentation/src/runtime.ts +0 -6
- package/skills/generate-presentation/src/security.ts +0 -12
- package/skills/generate-presentation/src/types.ts +0 -28
- package/skills/generate-presentation/tsconfig.json +0 -10
- package/skills/generate-regex/CLAUDE.md +0 -19
- package/skills/generate-regex/package.json +0 -29
- package/skills/generate-regex/src/index.ts +0 -669
- package/skills/generate-regex/tsconfig.json +0 -10
- package/skills/generate-social-posts/CLAUDE.md +0 -19
- package/skills/generate-social-posts/package.json +0 -27
- package/skills/generate-social-posts/src/ai.ts +0 -88
- package/skills/generate-social-posts/src/cli.ts +0 -118
- package/skills/generate-social-posts/src/exporters.ts +0 -126
- package/skills/generate-social-posts/src/generator.ts +0 -130
- package/skills/generate-social-posts/src/index.ts +0 -78
- package/skills/generate-social-posts/src/platforms.ts +0 -39
- package/skills/generate-social-posts/src/runtime.ts +0 -34
- package/skills/generate-social-posts/src/source.ts +0 -116
- package/skills/generate-social-posts/src/types.ts +0 -58
- package/skills/generate-social-posts/tsconfig.json +0 -10
- package/skills/generate-sql/CLAUDE.md +0 -19
- package/skills/generate-sql/package.json +0 -27
- package/skills/generate-sql/src/index.ts +0 -636
- package/skills/generate-sql/tsconfig.json +0 -10
- package/skills/github-manager/CLAUDE.md +0 -19
- package/skills/github-manager/package.json +0 -29
- package/skills/github-manager/src/index.ts +0 -101
- package/skills/github-manager/tsconfig.json +0 -10
- package/skills/gmail/CLAUDE.md +0 -19
- package/skills/gmail/package.json +0 -27
- package/skills/gmail/src/index.ts +0 -410
- package/skills/gmail/tsconfig.json +0 -10
- package/skills/goal-quarterly-roadmap/CLAUDE.md +0 -19
- package/skills/goal-quarterly-roadmap/package.json +0 -27
- package/skills/goal-quarterly-roadmap/src/index.ts +0 -305
- package/skills/goal-quarterly-roadmap/tsconfig.json +0 -10
- package/skills/grant-application-drafter/CLAUDE.md +0 -19
- package/skills/grant-application-drafter/package.json +0 -27
- package/skills/grant-application-drafter/src/index.ts +0 -309
- package/skills/grant-application-drafter/tsconfig.json +0 -10
- package/skills/grocery-basket-optimizer/CLAUDE.md +0 -19
- package/skills/grocery-basket-optimizer/package.json +0 -27
- package/skills/grocery-basket-optimizer/src/index.ts +0 -304
- package/skills/grocery-basket-optimizer/tsconfig.json +0 -10
- package/skills/guest-communication-suite/CLAUDE.md +0 -19
- package/skills/guest-communication-suite/package.json +0 -27
- package/skills/guest-communication-suite/src/index.ts +0 -312
- package/skills/guest-communication-suite/tsconfig.json +0 -10
- package/skills/habit-reflection-digest/CLAUDE.md +0 -19
- package/skills/habit-reflection-digest/package.json +0 -27
- package/skills/habit-reflection-digest/src/index.ts +0 -308
- package/skills/habit-reflection-digest/tsconfig.json +0 -10
- package/skills/highlight-reel-generator/CLAUDE.md +0 -19
- package/skills/highlight-reel-generator/package.json +0 -27
- package/skills/highlight-reel-generator/src/index.ts +0 -286
- package/skills/highlight-reel-generator/tsconfig.json +0 -10
- package/skills/homework-feedback-coach/CLAUDE.md +0 -19
- package/skills/homework-feedback-coach/package.json +0 -27
- package/skills/homework-feedback-coach/src/index.ts +0 -316
- package/skills/homework-feedback-coach/tsconfig.json +0 -10
- package/skills/household-maintenance-mgr/CLAUDE.md +0 -19
- package/skills/household-maintenance-mgr/package.json +0 -27
- package/skills/household-maintenance-mgr/src/index.ts +0 -293
- package/skills/household-maintenance-mgr/tsconfig.json +0 -10
- package/skills/icon-pack/README.md +0 -28
- package/skills/icon-pack/SKILL.md +0 -23
- package/skills/icon-pack/package.json +0 -11
- package/skills/icon-pack/tsconfig.json +0 -20
- package/skills/image/LICENSE +0 -192
- package/skills/image/README.md +0 -25
- package/skills/image/SKILL.md +0 -49
- package/skills/image/examples/aurora-examples.sh +0 -33
- package/skills/image/examples/google-examples.sh +0 -37
- package/skills/image/examples/openai-examples.sh +0 -35
- package/skills/image/package.json +0 -11
- package/skills/image/tsconfig.json +0 -19
- package/skills/implementation-agent/CLAUDE.md +0 -19
- package/skills/implementation-agent/package.json +0 -29
- package/skills/implementation-agent/src/ai-generation.ts +0 -225
- package/skills/implementation-agent/src/index.ts +0 -608
- package/skills/implementation-agent/src/minimist.d.ts +0 -15
- package/skills/implementation-agent/src/templates.ts +0 -686
- package/skills/implementation-agent/src/types.ts +0 -53
- package/skills/implementation-agent/tsconfig.json +0 -10
- package/skills/inbox-priority-planner/CLAUDE.md +0 -19
- package/skills/inbox-priority-planner/package.json +0 -27
- package/skills/inbox-priority-planner/src/index.ts +0 -309
- package/skills/inbox-priority-planner/tsconfig.json +0 -10
- package/skills/invoice-dispute-helper/CLAUDE.md +0 -19
- package/skills/invoice-dispute-helper/package.json +0 -27
- package/skills/invoice-dispute-helper/src/index.ts +0 -304
- package/skills/invoice-dispute-helper/tsconfig.json +0 -10
- package/skills/itinerary-architect/CLAUDE.md +0 -19
- package/skills/itinerary-architect/package.json +0 -27
- package/skills/itinerary-architect/src/index.ts +0 -313
- package/skills/itinerary-architect/tsconfig.json +0 -10
- package/skills/kpi-digest-generator/CLAUDE.md +0 -19
- package/skills/kpi-digest-generator/package.json +0 -27
- package/skills/kpi-digest-generator/src/index.ts +0 -318
- package/skills/kpi-digest-generator/tsconfig.json +0 -10
- package/skills/lab-notebook-formatter/CLAUDE.md +0 -19
- package/skills/lab-notebook-formatter/package.json +0 -27
- package/skills/lab-notebook-formatter/src/index.ts +0 -88
- package/skills/lab-notebook-formatter/tsconfig.json +0 -10
- package/skills/landing-page-copy/CLAUDE.md +0 -19
- package/skills/landing-page-copy/package.json +0 -27
- package/skills/landing-page-copy/src/index.ts +0 -400
- package/skills/landing-page-copy/tsconfig.json +0 -10
- package/skills/learning-style-profiler/CLAUDE.md +0 -19
- package/skills/learning-style-profiler/package.json +0 -27
- package/skills/learning-style-profiler/src/index.ts +0 -291
- package/skills/learning-style-profiler/tsconfig.json +0 -10
- package/skills/lesson-plan-customizer/CLAUDE.md +0 -19
- package/skills/lesson-plan-customizer/package.json +0 -27
- package/skills/lesson-plan-customizer/src/index.ts +0 -303
- package/skills/lesson-plan-customizer/tsconfig.json +0 -10
- package/skills/livestream-runofshow/CLAUDE.md +0 -19
- package/skills/livestream-runofshow/package.json +0 -27
- package/skills/livestream-runofshow/src/index.ts +0 -299
- package/skills/livestream-runofshow/tsconfig.json +0 -10
- package/skills/longform-structurer/CLAUDE.md +0 -19
- package/skills/longform-structurer/package.json +0 -27
- package/skills/longform-structurer/src/index.ts +0 -293
- package/skills/longform-structurer/tsconfig.json +0 -10
- package/skills/managehook/.env.example +0 -16
- package/skills/managehook/CLAUDE.md +0 -48
- package/skills/managehook/README.md +0 -210
- package/skills/managehook/package.json +0 -24
- package/skills/managehook/scripts/migrate.ts +0 -57
- package/skills/managehook/scripts/seed.ts +0 -58
- package/skills/managehook/src/db/index.ts +0 -37
- package/skills/managehook/src/index.ts +0 -3
- package/skills/managehook/src/lib/api-client.ts +0 -108
- package/skills/managehook/src/lib/config.ts +0 -34
- package/skills/managehook/src/lib/installer.ts +0 -140
- package/skills/managehook/src/lib/service-dir.ts +0 -119
- package/skills/managehook/tsconfig.json +0 -29
- package/skills/manageskill/.env.example +0 -16
- package/skills/manageskill/CLAUDE.md +0 -48
- package/skills/manageskill/README.md +0 -210
- package/skills/manageskill/package.json +0 -24
- package/skills/manageskill/scripts/migrate.ts +0 -57
- package/skills/manageskill/scripts/seed.ts +0 -58
- package/skills/manageskill/src/db/index.ts +0 -37
- package/skills/manageskill/src/index.ts +0 -3
- package/skills/manageskill/src/lib/api-client.ts +0 -108
- package/skills/manageskill/src/lib/config.ts +0 -34
- package/skills/manageskill/src/lib/installer.ts +0 -140
- package/skills/manageskill/src/lib/service-dir.ts +0 -119
- package/skills/manageskill/tsconfig.json +0 -29
- package/skills/mcp-builder/CLAUDE.md +0 -19
- package/skills/mcp-builder/package.json +0 -30
- package/skills/mcp-builder/src/ai-descriptions.ts +0 -37
- package/skills/mcp-builder/src/generators.ts +0 -513
- package/skills/mcp-builder/src/index.ts +0 -62
- package/skills/mcp-builder/src/minimist.d.ts +0 -15
- package/skills/mcp-builder/src/naming.ts +0 -12
- package/skills/mcp-builder/src/options.ts +0 -170
- package/skills/mcp-builder/src/templates.ts +0 -149
- package/skills/mcp-builder/src/types.ts +0 -42
- package/skills/mcp-builder/tsconfig.json +0 -10
- package/skills/meal-plan-designer/CLAUDE.md +0 -19
- package/skills/meal-plan-designer/package.json +0 -27
- package/skills/meal-plan-designer/src/index.ts +0 -301
- package/skills/meal-plan-designer/tsconfig.json +0 -10
- package/skills/meeting-insight-summarizer/CLAUDE.md +0 -19
- package/skills/meeting-insight-summarizer/package.json +0 -27
- package/skills/meeting-insight-summarizer/src/index.ts +0 -316
- package/skills/meeting-insight-summarizer/tsconfig.json +0 -10
- package/skills/microcopy-generator/CLAUDE.md +0 -19
- package/skills/microcopy-generator/package.json +0 -27
- package/skills/microcopy-generator/src/index.ts +0 -303
- package/skills/microcopy-generator/tsconfig.json +0 -10
- package/skills/mindfulness-prompt-cache/CLAUDE.md +0 -19
- package/skills/mindfulness-prompt-cache/package.json +0 -27
- package/skills/mindfulness-prompt-cache/src/index.ts +0 -290
- package/skills/mindfulness-prompt-cache/tsconfig.json +0 -10
- package/skills/music/SKILL.md +0 -33
- package/skills/music/package.json +0 -11
- package/skills/music-album/SKILL.md +0 -37
- package/skills/music-album/package.json +0 -11
- package/skills/notion-manager/CLAUDE.md +0 -19
- package/skills/notion-manager/package.json +0 -29
- package/skills/notion-manager/src/index.ts +0 -105
- package/skills/notion-manager/tsconfig.json +0 -10
- package/skills/npmpublish/CLAUDE.md +0 -30
- package/skills/npmpublish/README.md +0 -83
- package/skills/npmpublish/SKILL.md +0 -70
- package/skills/npmpublish/package.json +0 -41
- package/skills/npmpublish/src/index.ts +0 -192
- package/skills/npmpublish/tsconfig.json +0 -18
- package/skills/onboarding-sequence-builder/CLAUDE.md +0 -19
- package/skills/onboarding-sequence-builder/package.json +0 -27
- package/skills/onboarding-sequence-builder/src/index.ts +0 -321
- package/skills/onboarding-sequence-builder/tsconfig.json +0 -10
- package/skills/onsite-ops-checklist/CLAUDE.md +0 -19
- package/skills/onsite-ops-checklist/package.json +0 -27
- package/skills/onsite-ops-checklist/src/index.ts +0 -307
- package/skills/onsite-ops-checklist/tsconfig.json +0 -10
- package/skills/outreach-cadence-designer/CLAUDE.md +0 -19
- package/skills/outreach-cadence-designer/package.json +0 -27
- package/skills/outreach-cadence-designer/src/index.ts +0 -330
- package/skills/outreach-cadence-designer/tsconfig.json +0 -10
- package/skills/packaging-concept-studio/CLAUDE.md +0 -19
- package/skills/packaging-concept-studio/package.json +0 -27
- package/skills/packaging-concept-studio/src/index.ts +0 -296
- package/skills/packaging-concept-studio/tsconfig.json +0 -10
- package/skills/packing-plan-pro/CLAUDE.md +0 -19
- package/skills/packing-plan-pro/package.json +0 -27
- package/skills/packing-plan-pro/src/index.ts +0 -306
- package/skills/packing-plan-pro/tsconfig.json +0 -10
- package/skills/parent-teacher-brief/CLAUDE.md +0 -19
- package/skills/parent-teacher-brief/package.json +0 -27
- package/skills/parent-teacher-brief/src/index.ts +0 -290
- package/skills/parent-teacher-brief/tsconfig.json +0 -10
- package/skills/partner-kit-assembler/CLAUDE.md +0 -19
- package/skills/partner-kit-assembler/package.json +0 -27
- package/skills/partner-kit-assembler/src/index.ts +0 -313
- package/skills/partner-kit-assembler/tsconfig.json +0 -10
- package/skills/payroll-change-prepper/CLAUDE.md +0 -19
- package/skills/payroll-change-prepper/package.json +0 -27
- package/skills/payroll-change-prepper/src/index.ts +0 -304
- package/skills/payroll-change-prepper/tsconfig.json +0 -10
- package/skills/pdf-read/SKILL.md +0 -56
- package/skills/pdf-read/package.json +0 -11
- package/skills/pdf-read/tsconfig.json +0 -8
- package/skills/persona-based-adwriter/CLAUDE.md +0 -19
- package/skills/persona-based-adwriter/package.json +0 -27
- package/skills/persona-based-adwriter/src/index.ts +0 -285
- package/skills/persona-based-adwriter/tsconfig.json +0 -10
- package/skills/persona-generator/CLAUDE.md +0 -19
- package/skills/persona-generator/package.json +0 -27
- package/skills/persona-generator/src/index.ts +0 -443
- package/skills/persona-generator/tsconfig.json +0 -10
- package/skills/personal-daily-ops/CLAUDE.md +0 -19
- package/skills/personal-daily-ops/package.json +0 -27
- package/skills/personal-daily-ops/src/index.ts +0 -324
- package/skills/personal-daily-ops/tsconfig.json +0 -10
- package/skills/pet-care-scheduler/CLAUDE.md +0 -19
- package/skills/pet-care-scheduler/package.json +0 -27
- package/skills/pet-care-scheduler/src/index.ts +0 -298
- package/skills/pet-care-scheduler/tsconfig.json +0 -10
- package/skills/photo-album/SKILL.md +0 -29
- package/skills/photo-album/package.json +0 -11
- package/skills/photo-album/tsconfig.json +0 -4
- package/skills/playlist-maker/SKILL.md +0 -33
- package/skills/playlist-maker/package.json +0 -11
- package/skills/playlist-maker/tsconfig.json +0 -4
- package/skills/podcast-show-notes/CLAUDE.md +0 -19
- package/skills/podcast-show-notes/package.json +0 -27
- package/skills/podcast-show-notes/src/index.ts +0 -302
- package/skills/podcast-show-notes/tsconfig.json +0 -10
- package/skills/presentation-theme-maker/CLAUDE.md +0 -19
- package/skills/presentation-theme-maker/package.json +0 -27
- package/skills/presentation-theme-maker/src/index.ts +0 -292
- package/skills/presentation-theme-maker/tsconfig.json +0 -10
- package/skills/press-release-drafter/CLAUDE.md +0 -19
- package/skills/press-release-drafter/package.json +0 -27
- package/skills/press-release-drafter/src/index.ts +0 -291
- package/skills/press-release-drafter/tsconfig.json +0 -10
- package/skills/print-collateral-designer/CLAUDE.md +0 -19
- package/skills/print-collateral-designer/package.json +0 -27
- package/skills/print-collateral-designer/src/index.ts +0 -298
- package/skills/print-collateral-designer/tsconfig.json +0 -10
- package/skills/procurement-scorecard/CLAUDE.md +0 -19
- package/skills/procurement-scorecard/package.json +0 -27
- package/skills/procurement-scorecard/src/index.ts +0 -338
- package/skills/procurement-scorecard/tsconfig.json +0 -10
- package/skills/product-demo-script/CLAUDE.md +0 -19
- package/skills/product-demo-script/package.json +0 -27
- package/skills/product-demo-script/src/index.ts +0 -326
- package/skills/product-demo-script/tsconfig.json +0 -10
- package/skills/project-dashboard-reports/SKILL.md +0 -78
- package/skills/project-dashboard-reports/package.json +0 -25
- package/skills/project-dashboard-reports/src/index.ts +0 -67
- package/skills/project-retro-companion/CLAUDE.md +0 -19
- package/skills/project-retro-companion/package.json +0 -27
- package/skills/project-retro-companion/src/index.ts +0 -298
- package/skills/project-retro-companion/tsconfig.json +0 -10
- package/skills/proposal-redline-advisor/CLAUDE.md +0 -19
- package/skills/proposal-redline-advisor/package.json +0 -27
- package/skills/proposal-redline-advisor/src/index.ts +0 -320
- package/skills/proposal-redline-advisor/tsconfig.json +0 -10
- package/skills/read-image/SKILL.md +0 -47
- package/skills/read-image/package.json +0 -33
- package/skills/read-image/src/index.ts +0 -264
- package/skills/read-pdf/SKILL.md +0 -53
- package/skills/read-pdf/package.json +0 -11
- package/skills/remove-background/CLAUDE.md +0 -19
- package/skills/remove-background/package.json +0 -11
- package/skills/remove-background/tsconfig.json +0 -10
- package/skills/risk-disclosure-kit/CLAUDE.md +0 -19
- package/skills/risk-disclosure-kit/package.json +0 -27
- package/skills/risk-disclosure-kit/src/index.ts +0 -307
- package/skills/risk-disclosure-kit/tsconfig.json +0 -10
- package/skills/roi-comparison-tool/CLAUDE.md +0 -19
- package/skills/roi-comparison-tool/package.json +0 -27
- package/skills/roi-comparison-tool/src/index.ts +0 -322
- package/skills/roi-comparison-tool/tsconfig.json +0 -10
- package/skills/sales-call-recapper/CLAUDE.md +0 -19
- package/skills/sales-call-recapper/package.json +0 -27
- package/skills/sales-call-recapper/src/index.ts +0 -300
- package/skills/sales-call-recapper/tsconfig.json +0 -10
- package/skills/salescopy/.env.example +0 -2
- package/skills/salescopy/CLAUDE.md +0 -23
- package/skills/salescopy/LICENSE +0 -192
- package/skills/salescopy/README.md +0 -72
- package/skills/salescopy/package.json +0 -27
- package/skills/salescopy/src/commands/config.ts +0 -115
- package/skills/salescopy/src/commands/generate.ts +0 -179
- package/skills/salescopy/src/commands/sessions.ts +0 -169
- package/skills/salescopy/src/commands/templates.ts +0 -99
- package/skills/salescopy/src/index.ts +0 -3
- package/skills/salescopy/src/lib/generator.ts +0 -197
- package/skills/salescopy/src/lib/storage.ts +0 -191
- package/skills/salescopy/src/types/index.ts +0 -74
- package/skills/salescopy/src/utils/logger.ts +0 -33
- package/skills/salescopy/src/utils/paths.ts +0 -25
- package/skills/salescopy/tsconfig.json +0 -23
- package/skills/scaffold-project/CLAUDE.md +0 -19
- package/skills/scaffold-project/package.json +0 -29
- package/skills/scaffold-project/src/ai-detect.ts +0 -136
- package/skills/scaffold-project/src/file-generators.ts +0 -292
- package/skills/scaffold-project/src/index.ts +0 -240
- package/skills/scaffold-project/src/project-config.ts +0 -338
- package/skills/scaffold-project/src/templates.ts +0 -173
- package/skills/scaffold-project/src/types.ts +0 -58
- package/skills/scaffold-project/tsconfig.json +0 -10
- package/skills/scholarship-tracker/CLAUDE.md +0 -19
- package/skills/scholarship-tracker/package.json +0 -27
- package/skills/scholarship-tracker/src/index.ts +0 -298
- package/skills/scholarship-tracker/tsconfig.json +0 -10
- package/skills/sdk-generator/SKILL.md +0 -45
- package/skills/sdk-generator/package.json +0 -11
- package/skills/sdk-generator/tsconfig.json +0 -8
- package/skills/seating-chart-maker/CLAUDE.md +0 -19
- package/skills/seating-chart-maker/package.json +0 -27
- package/skills/seating-chart-maker/src/index.ts +0 -312
- package/skills/seating-chart-maker/tsconfig.json +0 -10
- package/skills/seo-brief-builder/CLAUDE.md +0 -19
- package/skills/seo-brief-builder/package.json +0 -27
- package/skills/seo-brief-builder/src/index.ts +0 -288
- package/skills/seo-brief-builder/tsconfig.json +0 -10
- package/skills/short-video-pack/SKILL.md +0 -30
- package/skills/short-video-pack/package.json +0 -11
- package/skills/slack-assistant/CLAUDE.md +0 -19
- package/skills/slack-assistant/package.json +0 -29
- package/skills/slack-assistant/src/index.ts +0 -79
- package/skills/slack-assistant/tsconfig.json +0 -10
- package/skills/sleep-routine-analyzer/CLAUDE.md +0 -19
- package/skills/sleep-routine-analyzer/package.json +0 -27
- package/skills/sleep-routine-analyzer/src/index.ts +0 -293
- package/skills/sleep-routine-analyzer/tsconfig.json +0 -10
- package/skills/sms/README.md +0 -33
- package/skills/sms/package.json +0 -35
- package/skills/sms/src/index.ts +0 -335
- package/skills/sms/tsconfig.json +0 -21
- package/skills/social-media-kit/CLAUDE.md +0 -19
- package/skills/social-media-kit/package.json +0 -27
- package/skills/social-media-kit/src/index.ts +0 -281
- package/skills/social-media-kit/tsconfig.json +0 -10
- package/skills/sponsorship-proposal-lab/CLAUDE.md +0 -19
- package/skills/sponsorship-proposal-lab/package.json +0 -27
- package/skills/sponsorship-proposal-lab/src/index.ts +0 -300
- package/skills/sponsorship-proposal-lab/tsconfig.json +0 -10
- package/skills/spreadsheet-cleanroom/CLAUDE.md +0 -19
- package/skills/spreadsheet-cleanroom/package.json +0 -27
- package/skills/spreadsheet-cleanroom/src/index.ts +0 -331
- package/skills/spreadsheet-cleanroom/tsconfig.json +0 -10
- package/skills/stress-relief-playbook/CLAUDE.md +0 -19
- package/skills/stress-relief-playbook/package.json +0 -27
- package/skills/stress-relief-playbook/src/index.ts +0 -298
- package/skills/stress-relief-playbook/tsconfig.json +0 -10
- package/skills/study-guide-builder/CLAUDE.md +0 -19
- package/skills/study-guide-builder/package.json +0 -27
- package/skills/study-guide-builder/src/index.ts +0 -298
- package/skills/study-guide-builder/tsconfig.json +0 -10
- package/skills/subscription-spend-watcher/CLAUDE.md +0 -19
- package/skills/subscription-spend-watcher/package.json +0 -27
- package/skills/subscription-spend-watcher/src/index.ts +0 -312
- package/skills/subscription-spend-watcher/tsconfig.json +0 -10
- package/skills/subtitle/.env.example +0 -2
- package/skills/subtitle/CLAUDE.md +0 -37
- package/skills/subtitle/LICENSE +0 -192
- package/skills/subtitle/README.md +0 -63
- package/skills/subtitle/package.json +0 -43
- package/skills/subtitle/src/commands/config.ts +0 -53
- package/skills/subtitle/src/commands/generate.ts +0 -61
- package/skills/subtitle/src/index.ts +0 -3
- package/skills/subtitle/src/lib/generator.ts +0 -216
- package/skills/subtitle/src/lib/storage.ts +0 -62
- package/skills/subtitle/src/types/index.ts +0 -68
- package/skills/subtitle/src/utils/logger.ts +0 -34
- package/skills/subtitle/src/utils/paths.ts +0 -51
- package/skills/subtitle/tsconfig.json +0 -21
- package/skills/survey-insight-extractor/CLAUDE.md +0 -19
- package/skills/survey-insight-extractor/package.json +0 -27
- package/skills/survey-insight-extractor/src/index.ts +0 -317
- package/skills/survey-insight-extractor/tsconfig.json +0 -10
- package/skills/terraform-generator/CLAUDE.md +0 -19
- package/skills/terraform-generator/package.json +0 -29
- package/skills/terraform-generator/src/index.ts +0 -99
- package/skills/terraform-generator/tsconfig.json +0 -10
- package/skills/testimonial-graphics/CLAUDE.md +0 -19
- package/skills/testimonial-graphics/package.json +0 -27
- package/skills/testimonial-graphics/src/index.ts +0 -303
- package/skills/testimonial-graphics/tsconfig.json +0 -10
- package/skills/timesheet/.env.example +0 -25
- package/skills/timesheet/README.md +0 -235
- package/skills/timesheet/package.json +0 -47
- package/skills/timesheet/scripts/publish.ts +0 -210
- package/skills/timesheet/src/commands/employee.ts +0 -96
- package/skills/timesheet/src/commands/export.ts +0 -29
- package/skills/timesheet/src/commands/generate.ts +0 -102
- package/skills/timesheet/src/commands/holiday.ts +0 -74
- package/skills/timesheet/src/commands/profile.ts +0 -133
- package/skills/timesheet/src/commands/setup.ts +0 -21
- package/skills/timesheet/src/commands/vacation.ts +0 -93
- package/skills/timesheet/src/index.ts +0 -3
- package/skills/timesheet/src/lib/employees.ts +0 -56
- package/skills/timesheet/src/lib/export.ts +0 -123
- package/skills/timesheet/src/lib/holidays.ts +0 -79
- package/skills/timesheet/src/lib/paths.ts +0 -59
- package/skills/timesheet/src/lib/profiles.ts +0 -168
- package/skills/timesheet/src/lib/storage.ts +0 -83
- package/skills/timesheet/src/lib/timesheet.ts +0 -130
- package/skills/timesheet/src/lib/vacations.ts +0 -70
- package/skills/timesheet/src/types/index.ts +0 -96
- package/skills/timesheet/tsconfig.json +0 -29
- package/skills/transcript/LICENSE +0 -192
- package/skills/transcript/README.md +0 -17
- package/skills/transcript/SKILL.md +0 -80
- package/skills/transcript/package.json +0 -11
- package/skills/transcript/tsconfig.json +0 -18
- package/skills/travel-budget-balancer/CLAUDE.md +0 -19
- package/skills/travel-budget-balancer/package.json +0 -27
- package/skills/travel-budget-balancer/src/index.ts +0 -297
- package/skills/travel-budget-balancer/tsconfig.json +0 -10
- package/skills/video/SKILL.md +0 -37
- package/skills/video/package.json +0 -11
- package/skills/video-cut-suggester/CLAUDE.md +0 -19
- package/skills/video-cut-suggester/package.json +0 -27
- package/skills/video-cut-suggester/src/index.ts +0 -304
- package/skills/video-cut-suggester/tsconfig.json +0 -10
- package/skills/video-thumbnail/CLAUDE.md +0 -19
- package/skills/video-thumbnail/package.json +0 -27
- package/skills/video-thumbnail/src/index.ts +0 -356
- package/skills/video-thumbnail/tsconfig.json +0 -10
- package/skills/voiceover-jingle-pack/SKILL.md +0 -28
- package/skills/voiceover-jingle-pack/package.json +0 -11
- package/skills/webcrawling/CLAUDE.md +0 -11
- package/skills/webcrawling/LICENSE +0 -192
- package/skills/webcrawling/README.md +0 -24
- package/skills/webcrawling/package.json +0 -11
- package/skills/webcrawling/tsconfig.json +0 -22
- package/skills/webinar-script-coach/CLAUDE.md +0 -19
- package/skills/webinar-script-coach/package.json +0 -27
- package/skills/webinar-script-coach/src/index.ts +0 -296
- package/skills/webinar-script-coach/tsconfig.json +0 -10
- package/skills/wellness-progress-reporter/CLAUDE.md +0 -19
- package/skills/wellness-progress-reporter/package.json +0 -27
- package/skills/wellness-progress-reporter/src/index.ts +0 -298
- package/skills/wellness-progress-reporter/tsconfig.json +0 -10
- package/skills/workout-cycle-planner/CLAUDE.md +0 -19
- package/skills/workout-cycle-planner/package.json +0 -27
- package/skills/workout-cycle-planner/src/index.ts +0 -299
- package/skills/workout-cycle-planner/tsconfig.json +0 -10
- package/skills/write/.env.example +0 -9
- package/skills/write/LICENSE +0 -192
- package/skills/write/README.md +0 -17
- package/skills/write/SKILL.md +0 -90
- package/skills/write/package.json +0 -32
- package/skills/write/src/agents/image-generator.ts +0 -186
- package/skills/write/src/agents/researcher.ts +0 -61
- package/skills/write/src/agents/writer.ts +0 -99
- package/skills/write/src/index-local.ts +0 -248
- package/skills/write/src/index.ts +0 -4
- package/skills/write/src/orchestrator.ts +0 -171
- package/skills/write/src/types.ts +0 -65
- package/skills/write/tsconfig.json +0 -18
- /package/migrations/{0001_open_skills_self_hosted.sql → postgres/0001_open_skills_self_hosted.sql} +0 -0
- /package/skills/{read-image → api-docs-portal}/tsconfig.json +0 -0
- /package/skills/{read-pdf → brand-assets}/tsconfig.json +0 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
export interface Sentinels {
|
|
2
|
+
/** Stands for `{…}` / `${…}` template syntax inside a single literal. */
|
|
3
|
+
placeholder: string;
|
|
4
|
+
/** Stands for a value computed by code (a non-constant concatenation operand). */
|
|
5
|
+
hole: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Normalise text before any URL is read out of it.
|
|
9
|
+
*
|
|
10
|
+
* - Private Use Area characters are removed, so sentinels stay out of band.
|
|
11
|
+
* - Tab, LF and CR are removed because the WHATWG URL parser removes them
|
|
12
|
+
* before parsing: `https://example.com\n@vendor.invalid/x` is a request to
|
|
13
|
+
* vendor.invalid with `example.com` as userinfo, and a scanner that stops at the
|
|
14
|
+
* newline reads the opposite of what the runtime does.
|
|
15
|
+
*/
|
|
16
|
+
export declare function sanitizeForScanning(text: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Sanitiser for free text (Markdown, JSON, shell, dotenv).
|
|
19
|
+
*
|
|
20
|
+
* Deliberately does NOT strip newlines. Removing them is right inside a single
|
|
21
|
+
* URL string, where the runtime parser removes them too; applied to a whole
|
|
22
|
+
* file it concatenates unrelated lines, and a verbatim `https://vendor.invalid` at
|
|
23
|
+
* end-of-line became `vendor.invalidUse` — invisible to every host rule.
|
|
24
|
+
*/
|
|
25
|
+
export declare function sanitizeProseForScanning(text: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Two distinct sentinel characters.
|
|
28
|
+
*
|
|
29
|
+
* They are not searched for: `sanitizeForScanning` deletes the whole Private Use
|
|
30
|
+
* Area from every literal as it is read, so these characters cannot appear in
|
|
31
|
+
* the input and no per-input search is needed.
|
|
32
|
+
*/
|
|
33
|
+
export declare function pickSentinels(): Sentinels;
|
|
34
|
+
export interface UrlReference {
|
|
35
|
+
/** The matched URL, trimmed of trailing punctuation. Sentinels removed. */
|
|
36
|
+
url: string;
|
|
37
|
+
/** Host as far as it is statically known, with sentinels still in place. */
|
|
38
|
+
markedHost: string;
|
|
39
|
+
/** Registrable domain, or undefined when it cannot be determined statically. */
|
|
40
|
+
domain?: string;
|
|
41
|
+
/** When `domain` is undefined, what supplied the undeterminable tail. */
|
|
42
|
+
undeterminedBy?: "placeholder" | "hole";
|
|
43
|
+
}
|
|
44
|
+
export declare function stripSentinels(text: string, sentinels: Sentinels): string;
|
|
45
|
+
/**
|
|
46
|
+
* Every absolute http(s) URL in a blob of text.
|
|
47
|
+
*
|
|
48
|
+
* `text` is expected to be already sentinel-marked when it came from folding.
|
|
49
|
+
* Placeholder syntax inside the text is masked here so that a `{…}` body
|
|
50
|
+
* containing `/`, `?` or `#` cannot cut the authority in half.
|
|
51
|
+
*/
|
|
52
|
+
export declare function extractUrlReferences(text: string, sentinels?: Sentinels): UrlReference[];
|
|
53
|
+
export interface ScanSource {
|
|
54
|
+
/** Package-relative path, used for reporting. */
|
|
55
|
+
file: string;
|
|
56
|
+
content: string;
|
|
57
|
+
/** Set when the bytes could not be decoded as text; `content` is then empty. */
|
|
58
|
+
undecodable?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface VendorHostFinding {
|
|
61
|
+
file: string;
|
|
62
|
+
url: string;
|
|
63
|
+
host: string;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Find known vendor domains even when they do not appear in a complete URL.
|
|
67
|
+
*/
|
|
68
|
+
export declare function findVendorDomainTokens(text: string): {
|
|
69
|
+
domain: string;
|
|
70
|
+
index: number;
|
|
71
|
+
}[];
|
|
72
|
+
/**
|
|
73
|
+
* WEAK backstop: known vendor domains anywhere in the shipped bytes.
|
|
74
|
+
*
|
|
75
|
+
* A denylist over raw text. It cannot see a vendor domain that is not on
|
|
76
|
+
* `VENDOR_CONTROLLED_DOMAINS`, and it cannot see a host split across string
|
|
77
|
+
* literals. Both gaps are closed for executable code by `findDisallowedCodeUrls`,
|
|
78
|
+
* which folds constants and works from an allowlist. This check exists for prose,
|
|
79
|
+
* which cannot issue a request.
|
|
80
|
+
*/
|
|
81
|
+
export declare function findVendorHostReferences(sources: Iterable<ScanSource>): VendorHostFinding[];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const EXPECTED_ALL_SKILL_COUNT: number;
|
|
2
|
+
export declare const EXPECTED_BASIC_SKILL_COUNT: 8;
|
|
3
|
+
/**
|
|
4
|
+
* Helper class to communicate with the MCP server over stdio.
|
|
5
|
+
*/
|
|
6
|
+
export declare class McpClient {
|
|
7
|
+
private proc;
|
|
8
|
+
private buffer;
|
|
9
|
+
private messages;
|
|
10
|
+
private reader;
|
|
11
|
+
constructor(env?: Record<string, string>);
|
|
12
|
+
private _readLoop;
|
|
13
|
+
send(msg: any): void;
|
|
14
|
+
waitForMessage(id: number, timeout?: number): Promise<any>;
|
|
15
|
+
initialize(): Promise<void>;
|
|
16
|
+
request(method: string, params?: Record<string, unknown>, id?: number): Promise<any>;
|
|
17
|
+
close(): Promise<void>;
|
|
18
|
+
}
|
package/dist/storage.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SKILLS_NATIVE_STORAGE_ENV, SKILLS_NATIVE_STORAGE_FALLBACK_ENV, SKILLS_STORAGE_ENV, SKILLS_STORAGE_FALLBACK_ENV, SKILLS_STORAGE_TABLES, STORAGE_TABLES, SkillsPostgresSyncStore, SkillsS3ObjectStore, buildSkillsS3ObjectUrl, createSkillsPostgresSyncStore, createSkillsS3ObjectStore, createSkillsSnapshotSyncRecord, exportSkillsLocalSnapshot, getSkillsNativeStorageStatus, getSkillsStorageDatabaseEnv, getSkillsStorageDatabaseUrl,
|
|
1
|
+
export { SKILLS_NATIVE_STORAGE_ENV, SKILLS_NATIVE_STORAGE_FALLBACK_ENV, SKILLS_STORAGE_ENV, SKILLS_STORAGE_FALLBACK_ENV, SKILLS_STORAGE_TABLES, STORAGE_TABLES, SkillsPostgresSyncStore, SkillsS3ObjectStore, buildSkillsS3ObjectUrl, createSkillsPostgresSyncStore, createSkillsS3ObjectStore, createSkillsSnapshotSyncRecord, exportSkillsLocalSnapshot, getSkillsNativeStorageStatus, getSkillsStorageDatabaseEnv, getSkillsStorageDatabaseUrl, getSkillsStorageStatus, getStorageDatabaseEnv, getStorageDatabaseUrl, getStorageStatus, importSkillsLocalSnapshot, planSkillsS3SnapshotUpload, resolveSkillsNativeStorageConfig, resolveStorageConfig, signSkillsAwsV4Request, skillsPostgresSyncSchemaSql, uploadSkillsSnapshotFilesToS3, type AwsCredentials, type SignSkillsAwsV4RequestOptions, type SkillsFetch, type SkillsLocalSnapshot, type SkillsNativeStorageConfig, type SkillsNativeStorageStatus, type SkillsPostgresQueryClient, type SkillsS3ObjectStoreOptions, type SkillsS3PutObjectOptions, type SkillsS3SnapshotPlanEntry, type SkillsS3StoredObject, type SkillsSnapshotFile, type SkillsStorageTable, type SkillsSyncRecord, } from "./lib/native-storage.js";
|
package/dist/storage.js
CHANGED
|
@@ -30,29 +30,64 @@ import { dirname as dirname2, join as join3, normalize, relative, sep } from "pa
|
|
|
30
30
|
import { existsSync, readFileSync, writeFileSync, mkdirSync, copyFileSync, readdirSync, statSync } from "fs";
|
|
31
31
|
import { join, dirname } from "path";
|
|
32
32
|
import { homedir } from "os";
|
|
33
|
+
|
|
34
|
+
// src/lib/retired-settings.ts
|
|
35
|
+
var RETIRED_ENV_SUFFIXES = ["_STORAGE_MODE", "_DEPLOYMENT_MODE", "_CLOUD_MODE"];
|
|
36
|
+
var RETIRED_CONFIG_KEYS = {
|
|
37
|
+
mode: "apiUrl"
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
class RetiredSettingError extends Error {
|
|
41
|
+
code = "RETIRED_SETTING";
|
|
42
|
+
setting;
|
|
43
|
+
constructor(setting, message) {
|
|
44
|
+
super(message);
|
|
45
|
+
this.name = "RetiredSettingError";
|
|
46
|
+
this.setting = setting;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function isRetiredModeEnvVar(name, app) {
|
|
50
|
+
const upper = name.toUpperCase();
|
|
51
|
+
if (!upper.includes(app.toUpperCase()))
|
|
52
|
+
return false;
|
|
53
|
+
return RETIRED_ENV_SUFFIXES.some((suffix) => upper.endsWith(suffix));
|
|
54
|
+
}
|
|
55
|
+
function findRetiredModeEnvVars(env, app) {
|
|
56
|
+
const found = [];
|
|
57
|
+
for (const [name, value] of Object.entries(env)) {
|
|
58
|
+
if (value === undefined || value === "")
|
|
59
|
+
continue;
|
|
60
|
+
if (isRetiredModeEnvVar(name, app))
|
|
61
|
+
found.push({ name, value });
|
|
62
|
+
}
|
|
63
|
+
return found.sort((a, b) => a.name.localeCompare(b.name));
|
|
64
|
+
}
|
|
65
|
+
function assertNoRetiredModeEnvVars(env, options) {
|
|
66
|
+
const found = findRetiredModeEnvVars(env, options.app);
|
|
67
|
+
if (found.length === 0)
|
|
68
|
+
return;
|
|
69
|
+
const names = found.map((entry) => entry.name);
|
|
70
|
+
throw new RetiredSettingError(names[0], `${names.join(", ")} ${names.length === 1 ? "is" : "are"} no longer read. ` + "Deployment modes were removed: where a server keeps its data is decided by the " + `database it is given, not by a declared label. Set ${options.replacement} to a ` + "postgres:// URL to use PostgreSQL, or leave it unset for the on-box SQLite database. " + `Then unset ${names.join(" and ")}. ` + "Refused rather than ignored, because a discarded setting looks exactly like a " + "working one until something needs the data.");
|
|
71
|
+
}
|
|
72
|
+
function assertNoRetiredConfigKeys(config, source) {
|
|
73
|
+
for (const [key, replacement] of Object.entries(RETIRED_CONFIG_KEYS)) {
|
|
74
|
+
if (!(key in config))
|
|
75
|
+
continue;
|
|
76
|
+
throw new RetiredSettingError(key, `${source}: "${key}" is no longer a configuration key. ` + "Deployment modes were removed: a Skills client either has an API origin " + "configured or it does not, and that is the whole of it. " + `Use "${replacement}" instead (skills config set ${replacement} <origin>), and ` + `remove the old key with: skills config unset ${key}. ` + "Refused rather than ignored, because silently dropping it would leave an " + "operator believing they had pointed this install at a server.");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// src/lib/config.ts
|
|
33
81
|
var ENUM_KEYS = {
|
|
34
82
|
defaultAgent: ["claude", "codex", "gemini", "pi", "opencode", "all"],
|
|
35
83
|
defaultScope: ["global", "project"],
|
|
36
84
|
format: ["compact", "json", "csv"]
|
|
37
85
|
};
|
|
38
|
-
var STRING_KEYS = ["apiUrl"];
|
|
39
|
-
var MODE_VALUES = ["local", "self-hosted"];
|
|
40
|
-
var MODE_ALIASES = {
|
|
41
|
-
local: "local",
|
|
42
|
-
offline: "local",
|
|
43
|
-
"self-hosted": "self-hosted",
|
|
44
|
-
selfhosted: "self-hosted",
|
|
45
|
-
self_hosted: "self-hosted",
|
|
46
|
-
hosted: "self-hosted",
|
|
47
|
-
"skills.md": "self-hosted",
|
|
48
|
-
skillsmd: "self-hosted"
|
|
49
|
-
};
|
|
86
|
+
var STRING_KEYS = ["apiUrl", "extensionsDir"];
|
|
50
87
|
function validKeys() {
|
|
51
|
-
return [
|
|
88
|
+
return [...Object.keys(ENUM_KEYS), ...STRING_KEYS];
|
|
52
89
|
}
|
|
53
90
|
function allowedValues(key) {
|
|
54
|
-
if (key === "mode")
|
|
55
|
-
return MODE_VALUES;
|
|
56
91
|
return ENUM_KEYS[key];
|
|
57
92
|
}
|
|
58
93
|
function mergeDirectoryContents(sourceDir, targetDir) {
|
|
@@ -76,8 +111,6 @@ function mergeDirectoryContents(sourceDir, targetDir) {
|
|
|
76
111
|
function normalizeConfigValue(key, value) {
|
|
77
112
|
if (typeof value !== "string")
|
|
78
113
|
return;
|
|
79
|
-
if (key === "mode")
|
|
80
|
-
return MODE_ALIASES[value.trim().toLowerCase()];
|
|
81
114
|
const allowed = allowedValues(key);
|
|
82
115
|
if (allowed)
|
|
83
116
|
return allowed.includes(value) ? value : undefined;
|
|
@@ -91,9 +124,20 @@ function normalizeConfigValue(key, value) {
|
|
|
91
124
|
return;
|
|
92
125
|
}
|
|
93
126
|
}
|
|
127
|
+
if (key === "extensionsDir")
|
|
128
|
+
return value.trim() ? value : undefined;
|
|
94
129
|
return;
|
|
95
130
|
}
|
|
131
|
+
var DATA_DIR_ENV = "HASNA_SKILLS_DIR";
|
|
132
|
+
var INSTALLED_SKILLS_DIRNAME = "installed";
|
|
96
133
|
function getDataDir() {
|
|
134
|
+
const override = process.env[DATA_DIR_ENV];
|
|
135
|
+
if (override) {
|
|
136
|
+
try {
|
|
137
|
+
mkdirSync(override, { recursive: true });
|
|
138
|
+
} catch {}
|
|
139
|
+
return override;
|
|
140
|
+
}
|
|
97
141
|
const home = process.env["HOME"] || process.env["USERPROFILE"] || homedir();
|
|
98
142
|
const newDir = join(home, ".hasna", "skills");
|
|
99
143
|
const oldDir = join(home, ".skills");
|
|
@@ -118,21 +162,22 @@ function getConfigPath(scope) {
|
|
|
118
162
|
function readConfigFile(path) {
|
|
119
163
|
if (!existsSync(path))
|
|
120
164
|
return {};
|
|
165
|
+
let parsed;
|
|
121
166
|
try {
|
|
122
|
-
|
|
123
|
-
const parsed = JSON.parse(raw);
|
|
124
|
-
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
|
|
125
|
-
return {};
|
|
126
|
-
const config = {};
|
|
127
|
-
for (const key of validKeys()) {
|
|
128
|
-
const value = normalizeConfigValue(key, parsed[key]);
|
|
129
|
-
if (value !== undefined)
|
|
130
|
-
config[key] = value;
|
|
131
|
-
}
|
|
132
|
-
return config;
|
|
167
|
+
parsed = JSON.parse(readFileSync(path, "utf-8"));
|
|
133
168
|
} catch {
|
|
134
169
|
return {};
|
|
135
170
|
}
|
|
171
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
|
|
172
|
+
return {};
|
|
173
|
+
assertNoRetiredConfigKeys(parsed, path);
|
|
174
|
+
const config = {};
|
|
175
|
+
for (const key of validKeys()) {
|
|
176
|
+
const value = normalizeConfigValue(key, parsed[key]);
|
|
177
|
+
if (value !== undefined)
|
|
178
|
+
config[key] = value;
|
|
179
|
+
}
|
|
180
|
+
return config;
|
|
136
181
|
}
|
|
137
182
|
function loadConfig() {
|
|
138
183
|
const globalConfig = readConfigFile(getConfigPath("global"));
|
|
@@ -140,13 +185,14 @@ function loadConfig() {
|
|
|
140
185
|
return { ...globalConfig, ...projectConfig };
|
|
141
186
|
}
|
|
142
187
|
function saveConfig(key, value, scope = "project") {
|
|
188
|
+
assertNoRetiredConfigKeys({ [key]: value }, `config set ${key}`);
|
|
143
189
|
if (!validKeys().includes(key)) {
|
|
144
190
|
throw new Error(`Unknown config key: ${key}. Valid keys: ${validKeys().join(", ")}`);
|
|
145
191
|
}
|
|
146
192
|
const normalized = normalizeConfigValue(key, value);
|
|
147
193
|
if (normalized === undefined) {
|
|
148
194
|
const allowed = allowedValues(key);
|
|
149
|
-
throw new Error(allowed ? `Invalid value '${value}' for ${key}. Allowed: ${allowed.join(", ")}` : `Invalid value '${value}' for ${key}. Expected an http(s) URL`);
|
|
195
|
+
throw new Error(allowed ? `Invalid value '${value}' for ${key}. Allowed: ${allowed.join(", ")}` : `Invalid value '${value}' for ${key}. Expected ${key === "apiUrl" ? "an http(s) URL" : "a non-empty path"}`);
|
|
150
196
|
}
|
|
151
197
|
const filePath = getConfigPath(scope);
|
|
152
198
|
let existing = {};
|
|
@@ -165,10 +211,34 @@ function saveConfig(key, value, scope = "project") {
|
|
|
165
211
|
mkdirSync(dir, { recursive: true });
|
|
166
212
|
}
|
|
167
213
|
}
|
|
214
|
+
assertNoRetiredConfigKeys(existing, filePath);
|
|
168
215
|
existing[key] = normalized;
|
|
169
216
|
writeFileSync(filePath, JSON.stringify(existing, null, 2) + `
|
|
170
217
|
`);
|
|
171
218
|
}
|
|
219
|
+
function unsetConfig(key, scope = "project") {
|
|
220
|
+
if (!validKeys().includes(key) && !(key in RETIRED_CONFIG_KEYS)) {
|
|
221
|
+
throw new Error(`Unknown config key: ${key}. Valid keys: ${validKeys().join(", ")}`);
|
|
222
|
+
}
|
|
223
|
+
const filePath = getConfigPath(scope);
|
|
224
|
+
if (!existsSync(filePath))
|
|
225
|
+
return false;
|
|
226
|
+
let existing;
|
|
227
|
+
try {
|
|
228
|
+
const parsed = JSON.parse(readFileSync(filePath, "utf-8"));
|
|
229
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
|
|
230
|
+
return false;
|
|
231
|
+
existing = parsed;
|
|
232
|
+
} catch {
|
|
233
|
+
return false;
|
|
234
|
+
}
|
|
235
|
+
if (!(key in existing))
|
|
236
|
+
return false;
|
|
237
|
+
delete existing[key];
|
|
238
|
+
writeFileSync(filePath, JSON.stringify(existing, null, 2) + `
|
|
239
|
+
`);
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
172
242
|
|
|
173
243
|
// src/lib/project-state.ts
|
|
174
244
|
import { existsSync as existsSync2, mkdirSync as mkdirSync2, readFileSync as readFileSync2, writeFileSync as writeFileSync2 } from "fs";
|
|
@@ -324,7 +394,6 @@ var SKILLS_STORAGE_TABLES = [
|
|
|
324
394
|
];
|
|
325
395
|
var STORAGE_TABLES = SKILLS_STORAGE_TABLES;
|
|
326
396
|
var SKILLS_NATIVE_STORAGE_ENV = {
|
|
327
|
-
mode: "HASNA_SKILLS_STORAGE_MODE",
|
|
328
397
|
databaseUrl: "HASNA_SKILLS_DATABASE_URL",
|
|
329
398
|
databaseSsl: "HASNA_SKILLS_DATABASE_SSL",
|
|
330
399
|
databaseSchema: "HASNA_SKILLS_DATABASE_SCHEMA",
|
|
@@ -340,7 +409,6 @@ var SKILLS_NATIVE_STORAGE_ENV = {
|
|
|
340
409
|
dryRun: "HASNA_SKILLS_SYNC_DRY_RUN"
|
|
341
410
|
};
|
|
342
411
|
var SKILLS_NATIVE_STORAGE_FALLBACK_ENV = {
|
|
343
|
-
mode: "SKILLS_STORAGE_MODE",
|
|
344
412
|
databaseUrl: "SKILLS_DATABASE_URL",
|
|
345
413
|
databaseSsl: "SKILLS_DATABASE_SSL",
|
|
346
414
|
databaseSchema: "SKILLS_DATABASE_SCHEMA",
|
|
@@ -357,10 +425,13 @@ var SKILLS_NATIVE_STORAGE_FALLBACK_ENV = {
|
|
|
357
425
|
};
|
|
358
426
|
var SKILLS_STORAGE_ENV = SKILLS_NATIVE_STORAGE_ENV;
|
|
359
427
|
var SKILLS_STORAGE_FALLBACK_ENV = SKILLS_NATIVE_STORAGE_FALLBACK_ENV;
|
|
428
|
+
var SKILLS_ENV_NAMESPACE = "SKILLS";
|
|
360
429
|
function resolveSkillsNativeStorageConfig(env = process.env) {
|
|
361
|
-
|
|
430
|
+
assertNoRetiredModeEnvVars(env, {
|
|
431
|
+
app: SKILLS_ENV_NAMESPACE,
|
|
432
|
+
replacement: SKILLS_NATIVE_STORAGE_ENV.databaseUrl
|
|
433
|
+
});
|
|
362
434
|
return {
|
|
363
|
-
mode,
|
|
364
435
|
databaseUrl: getSkillsStorageDatabaseUrl(env),
|
|
365
436
|
databaseSsl: parseBoolean(readStorageEnv(env, "databaseSsl").value),
|
|
366
437
|
databaseSchema: readStorageEnv(env, "databaseSchema").value,
|
|
@@ -376,12 +447,6 @@ function resolveSkillsNativeStorageConfig(env = process.env) {
|
|
|
376
447
|
function resolveStorageConfig(env = process.env) {
|
|
377
448
|
return resolveSkillsNativeStorageConfig(env);
|
|
378
449
|
}
|
|
379
|
-
function getSkillsStorageMode(env = process.env) {
|
|
380
|
-
return parseMode(readStorageEnv(env, "mode").value);
|
|
381
|
-
}
|
|
382
|
-
function getStorageMode(env = process.env) {
|
|
383
|
-
return getSkillsStorageMode(env);
|
|
384
|
-
}
|
|
385
450
|
function getSkillsStorageDatabaseEnv(env = process.env) {
|
|
386
451
|
return readStorageEnv(env, "databaseUrl").name;
|
|
387
452
|
}
|
|
@@ -397,16 +462,13 @@ function getStorageDatabaseUrl(env = process.env) {
|
|
|
397
462
|
function getSkillsNativeStorageStatus(options = {}) {
|
|
398
463
|
const env = options.env ?? process.env;
|
|
399
464
|
const config = resolveSkillsNativeStorageConfig(env);
|
|
400
|
-
const modeEnv = readStorageEnv(env, "mode");
|
|
401
465
|
const databaseEnv = readStorageEnv(env, "databaseUrl");
|
|
402
466
|
const s3BucketEnv = readStorageEnv(env, "s3Bucket");
|
|
403
467
|
const targetDir = options.targetDir ?? process.cwd();
|
|
404
468
|
return {
|
|
405
469
|
package: "open-skills",
|
|
406
|
-
mode: config.mode,
|
|
407
470
|
tables: [...SKILLS_STORAGE_TABLES],
|
|
408
471
|
env: {
|
|
409
|
-
mode: SKILLS_NATIVE_STORAGE_ENV.mode,
|
|
410
472
|
databaseUrl: SKILLS_NATIVE_STORAGE_ENV.databaseUrl,
|
|
411
473
|
s3Bucket: SKILLS_NATIVE_STORAGE_ENV.s3Bucket
|
|
412
474
|
},
|
|
@@ -420,7 +482,6 @@ function getSkillsNativeStorageStatus(options = {}) {
|
|
|
420
482
|
s3Configured: Boolean(config.s3Bucket),
|
|
421
483
|
databaseEnv: SKILLS_NATIVE_STORAGE_ENV.databaseUrl,
|
|
422
484
|
s3BucketEnv: SKILLS_NATIVE_STORAGE_ENV.s3Bucket,
|
|
423
|
-
activeModeEnv: modeEnv.name,
|
|
424
485
|
activeDatabaseEnv: databaseEnv.name,
|
|
425
486
|
activeS3BucketEnv: s3BucketEnv.name,
|
|
426
487
|
region: config.awsRegion ?? "us-east-1",
|
|
@@ -737,12 +798,6 @@ function buildSkillsS3ObjectUrl(params) {
|
|
|
737
798
|
}
|
|
738
799
|
return params.forcePathStyle ? `https://s3.${region}.amazonaws.com/${encodeURIComponent(params.bucket)}/${key}` : `https://${params.bucket}.s3.${region}.amazonaws.com/${key}`;
|
|
739
800
|
}
|
|
740
|
-
function parseMode(value) {
|
|
741
|
-
const normalized = value?.trim().toLowerCase();
|
|
742
|
-
if (normalized === "remote" || normalized === "hybrid")
|
|
743
|
-
return normalized;
|
|
744
|
-
return "local";
|
|
745
|
-
}
|
|
746
801
|
function readStorageEnv(env, key) {
|
|
747
802
|
const primaryName = SKILLS_NATIVE_STORAGE_ENV[key];
|
|
748
803
|
const primaryValue = cleanOptional(env[primaryName]);
|
|
@@ -863,11 +918,9 @@ export {
|
|
|
863
918
|
planSkillsS3SnapshotUpload,
|
|
864
919
|
importSkillsLocalSnapshot,
|
|
865
920
|
getStorageStatus,
|
|
866
|
-
getStorageMode,
|
|
867
921
|
getStorageDatabaseUrl,
|
|
868
922
|
getStorageDatabaseEnv,
|
|
869
923
|
getSkillsStorageStatus,
|
|
870
|
-
getSkillsStorageMode,
|
|
871
924
|
getSkillsStorageDatabaseUrl,
|
|
872
925
|
getSkillsStorageDatabaseEnv,
|
|
873
926
|
getSkillsNativeStorageStatus,
|
package/docs/skill-standard.md
CHANGED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
-- Org-scope the skill registry and give it content-addressed bundle storage.
|
|
2
|
+
--
|
|
3
|
+
-- 0001 declared skills_registry with `slug` as its whole primary key, no org_id, and no
|
|
4
|
+
-- reference to any stored content. Nothing in src/ ever read or wrote it. Publishing
|
|
5
|
+
-- makes it real, and a published skill is tenant data: two organizations on one instance
|
|
6
|
+
-- must both be able to publish `deploy-notes` without colliding, and neither may read the
|
|
7
|
+
-- other's. That makes the primary key (org_id, slug).
|
|
8
|
+
--
|
|
9
|
+
-- The table is DROPPED and recreated rather than altered. A primary key cannot be
|
|
10
|
+
-- redefined by ALTER TABLE in SQLite at all, and the two dialect files must declare the
|
|
11
|
+
-- same shape, so an ALTER-based Postgres migration and a rebuild-based SQLite one would
|
|
12
|
+
-- diverge in exactly the way the parallel set exists to prevent.
|
|
13
|
+
--
|
|
14
|
+
-- Dropping is safe only because the table has never had a writer - `grep -rn
|
|
15
|
+
-- skills_registry src/` before this migration found one reference, in the schema-parity
|
|
16
|
+
-- test's table list - so there is no row anywhere whose owning organization we would have
|
|
17
|
+
-- to invent. That is stated rather than assumed, because the identical statement would be
|
|
18
|
+
-- data loss the day after this migration ships.
|
|
19
|
+
DROP TABLE IF EXISTS skills_registry;
|
|
20
|
+
|
|
21
|
+
-- Bundle bytes, addressed by content.
|
|
22
|
+
--
|
|
23
|
+
-- Separate from skills_registry for two reasons. Content addressing is only real if two
|
|
24
|
+
-- rows that happen to hold identical bytes share one blob, which requires the digest to
|
|
25
|
+
-- be the key. And listing an org's skills must not drag megabytes of tarball through the
|
|
26
|
+
-- row mapper to render a name and a description.
|
|
27
|
+
--
|
|
28
|
+
-- Scoped by org even though a digest is globally unique: a bundle is a tenant's source
|
|
29
|
+
-- code, and deduplicating across tenants would let org B confirm the exact contents of
|
|
30
|
+
-- org A's private skill by uploading a guess and watching for a shared row.
|
|
31
|
+
CREATE TABLE IF NOT EXISTS skills_bundles (
|
|
32
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
33
|
+
sha256 text NOT NULL,
|
|
34
|
+
byte_size integer NOT NULL,
|
|
35
|
+
content_type text NOT NULL DEFAULT 'application/gzip',
|
|
36
|
+
storage_kind text NOT NULL DEFAULT 'db',
|
|
37
|
+
storage_key text,
|
|
38
|
+
-- bytea, not text. A skill bundle is a gzipped tar; skills_artifacts.body_text could
|
|
39
|
+
-- stay text because a run artifact is a document, but there is no encoding under which
|
|
40
|
+
-- a tarball survives a text column intact.
|
|
41
|
+
body_blob bytea,
|
|
42
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
43
|
+
PRIMARY KEY (org_id, sha256)
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
CREATE TABLE IF NOT EXISTS skills_registry (
|
|
47
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
48
|
+
slug text NOT NULL,
|
|
49
|
+
display_name text NOT NULL,
|
|
50
|
+
description text NOT NULL DEFAULT '',
|
|
51
|
+
category text NOT NULL DEFAULT 'Remote',
|
|
52
|
+
tags_json jsonb NOT NULL DEFAULT '[]'::jsonb,
|
|
53
|
+
source text NOT NULL DEFAULT 'custom',
|
|
54
|
+
kind text NOT NULL DEFAULT 'executable',
|
|
55
|
+
version text,
|
|
56
|
+
-- The agent-facing document, kept alongside the metadata so GET /skills/:slug/skill.md
|
|
57
|
+
-- can answer for a published skill without the server ever unpacking a tarball.
|
|
58
|
+
skill_md text,
|
|
59
|
+
-- Soft reference to skills_bundles(org_id, sha256). Deliberately not a composite
|
|
60
|
+
-- foreign key: the only usable ON DELETE action for it would be SET NULL, which on a
|
|
61
|
+
-- composite key would also null org_id, and org_id is NOT NULL. Orphan collection is an
|
|
62
|
+
-- application-level concern (deleteSkill drops a bundle no remaining row references).
|
|
63
|
+
bundle_sha256 text,
|
|
64
|
+
bundle_byte_size integer,
|
|
65
|
+
published_by_user_id text REFERENCES users(id) ON DELETE SET NULL,
|
|
66
|
+
created_at timestamptz NOT NULL DEFAULT now(),
|
|
67
|
+
updated_at timestamptz NOT NULL DEFAULT now(),
|
|
68
|
+
PRIMARY KEY (org_id, slug),
|
|
69
|
+
CHECK (kind IN ('executable','instruction'))
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
CREATE INDEX IF NOT EXISTS skills_registry_org_updated_idx ON skills_registry (org_id, updated_at DESC);
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
-- SQLite dialect of 0001_open_skills_self_hosted.
|
|
2
|
+
--
|
|
3
|
+
-- This is a hand-written parallel of migrations/postgres/0001_open_skills_self_hosted.sql,
|
|
4
|
+
-- not a translation produced at runtime. The two files MUST declare the same schema
|
|
5
|
+
-- *shape* - same tables, same column names, same primary keys, same NOT NULL columns,
|
|
6
|
+
-- same uniqueness constraints, same foreign keys, same status domain - because the
|
|
7
|
+
-- org-scoped data model is the OSS layer's and is not per-backend negotiable.
|
|
8
|
+
-- src/server/schema-parity.test.ts executes this file and compares the result against
|
|
9
|
+
-- the parsed Postgres DDL, so drift fails CI rather than surfacing as a cross-backend
|
|
10
|
+
-- behaviour difference in production.
|
|
11
|
+
--
|
|
12
|
+
-- Deliberate, shape-preserving dialect differences:
|
|
13
|
+
-- * pgcrypto is not created - no column defaults to a database-generated UUID; every
|
|
14
|
+
-- id is minted in TypeScript (runId()/artifactId()/randomUUID()) for both backends.
|
|
15
|
+
-- * timestamptz -> text holding a UTC ISO-8601 instant. strftime('...%fZ','now')
|
|
16
|
+
-- produces exactly the format Date#toISOString() emits, so values written by raw
|
|
17
|
+
-- SQL and values written by the store are byte-identical and sort lexicographically
|
|
18
|
+
-- in the same order timestamptz sorts chronologically.
|
|
19
|
+
-- * jsonb -> text holding JSON. The row mappers already accept either a parsed object
|
|
20
|
+
-- or a JSON string (parseJsonObject/parseJsonArray in store.ts), so one mapper
|
|
21
|
+
-- serves both backends.
|
|
22
|
+
-- * bigserial -> integer PRIMARY KEY AUTOINCREMENT, SQLite's monotonic surrogate key.
|
|
23
|
+
|
|
24
|
+
CREATE TABLE IF NOT EXISTS organizations (
|
|
25
|
+
id text PRIMARY KEY,
|
|
26
|
+
slug text NOT NULL UNIQUE,
|
|
27
|
+
name text NOT NULL,
|
|
28
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
CREATE TABLE IF NOT EXISTS users (
|
|
32
|
+
id text PRIMARY KEY,
|
|
33
|
+
email text NOT NULL UNIQUE,
|
|
34
|
+
name text,
|
|
35
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
CREATE TABLE IF NOT EXISTS organization_members (
|
|
39
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
40
|
+
user_id text NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
41
|
+
role text NOT NULL DEFAULT 'owner',
|
|
42
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
43
|
+
PRIMARY KEY (org_id, user_id)
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
CREATE TABLE IF NOT EXISTS api_keys (
|
|
47
|
+
id text PRIMARY KEY,
|
|
48
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
49
|
+
user_id text NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
50
|
+
name text NOT NULL,
|
|
51
|
+
key_hash text NOT NULL UNIQUE,
|
|
52
|
+
scopes_json text NOT NULL DEFAULT '["skills:read","runs:write"]',
|
|
53
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
54
|
+
last_used_at text,
|
|
55
|
+
revoked_at text
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
CREATE TABLE IF NOT EXISTS skills_registry (
|
|
59
|
+
slug text PRIMARY KEY,
|
|
60
|
+
display_name text NOT NULL,
|
|
61
|
+
description text NOT NULL DEFAULT '',
|
|
62
|
+
category text NOT NULL DEFAULT 'Remote',
|
|
63
|
+
tags_json text NOT NULL DEFAULT '[]',
|
|
64
|
+
source text NOT NULL DEFAULT 'bundled',
|
|
65
|
+
version text,
|
|
66
|
+
updated_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
CREATE TABLE IF NOT EXISTS skills_runs (
|
|
70
|
+
id text PRIMARY KEY,
|
|
71
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
72
|
+
user_id text NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
73
|
+
skill_slug text NOT NULL,
|
|
74
|
+
requested_slug text NOT NULL,
|
|
75
|
+
status text NOT NULL,
|
|
76
|
+
input_json text NOT NULL DEFAULT '{}',
|
|
77
|
+
args_json text NOT NULL DEFAULT '[]',
|
|
78
|
+
idempotency_key text,
|
|
79
|
+
correlation_id text NOT NULL,
|
|
80
|
+
cost_cents integer NOT NULL DEFAULT 0,
|
|
81
|
+
output_type text,
|
|
82
|
+
output_preview text,
|
|
83
|
+
error_code text,
|
|
84
|
+
error_message text,
|
|
85
|
+
locked_by text,
|
|
86
|
+
locked_at text,
|
|
87
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
88
|
+
started_at text,
|
|
89
|
+
completed_at text,
|
|
90
|
+
CHECK (status IN ('queued','waiting_for_approval','running','succeeded','failed','cancel_requested','cancelled','retrying','expired','refunded'))
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
CREATE UNIQUE INDEX IF NOT EXISTS skills_runs_org_idempotency_idx
|
|
94
|
+
ON skills_runs (org_id, idempotency_key)
|
|
95
|
+
WHERE idempotency_key IS NOT NULL;
|
|
96
|
+
|
|
97
|
+
CREATE INDEX IF NOT EXISTS skills_runs_org_created_idx ON skills_runs (org_id, created_at DESC);
|
|
98
|
+
CREATE INDEX IF NOT EXISTS skills_runs_status_created_idx ON skills_runs (status, created_at ASC);
|
|
99
|
+
|
|
100
|
+
CREATE TABLE IF NOT EXISTS skills_run_logs (
|
|
101
|
+
id integer PRIMARY KEY AUTOINCREMENT,
|
|
102
|
+
run_id text NOT NULL REFERENCES skills_runs(id) ON DELETE CASCADE,
|
|
103
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
104
|
+
sequence integer NOT NULL,
|
|
105
|
+
level text NOT NULL DEFAULT 'info',
|
|
106
|
+
message text NOT NULL,
|
|
107
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
108
|
+
UNIQUE (run_id, sequence)
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
CREATE TABLE IF NOT EXISTS skills_artifacts (
|
|
112
|
+
id text PRIMARY KEY,
|
|
113
|
+
run_id text NOT NULL REFERENCES skills_runs(id) ON DELETE CASCADE,
|
|
114
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
115
|
+
file_name text NOT NULL,
|
|
116
|
+
relative_path text NOT NULL,
|
|
117
|
+
content_type text NOT NULL,
|
|
118
|
+
byte_size integer NOT NULL,
|
|
119
|
+
sha256 text NOT NULL,
|
|
120
|
+
storage_kind text NOT NULL DEFAULT 'db',
|
|
121
|
+
storage_key text,
|
|
122
|
+
body_text text,
|
|
123
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
CREATE INDEX IF NOT EXISTS skills_artifacts_run_idx ON skills_artifacts (run_id);
|
|
127
|
+
|
|
128
|
+
CREATE TABLE IF NOT EXISTS skills_approvals (
|
|
129
|
+
id text PRIMARY KEY,
|
|
130
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
131
|
+
run_id text REFERENCES skills_runs(id) ON DELETE CASCADE,
|
|
132
|
+
approved_by_user_id text REFERENCES users(id) ON DELETE SET NULL,
|
|
133
|
+
policy_digest text NOT NULL,
|
|
134
|
+
status text NOT NULL,
|
|
135
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
136
|
+
decided_at text,
|
|
137
|
+
CHECK (status IN ('pending','approved','rejected','expired'))
|
|
138
|
+
);
|
|
139
|
+
|
|
140
|
+
CREATE TABLE IF NOT EXISTS skills_audit_events (
|
|
141
|
+
id integer PRIMARY KEY AUTOINCREMENT,
|
|
142
|
+
org_id text REFERENCES organizations(id) ON DELETE SET NULL,
|
|
143
|
+
user_id text REFERENCES users(id) ON DELETE SET NULL,
|
|
144
|
+
api_key_id text REFERENCES api_keys(id) ON DELETE SET NULL,
|
|
145
|
+
action text NOT NULL,
|
|
146
|
+
target_type text NOT NULL,
|
|
147
|
+
target_id text,
|
|
148
|
+
metadata_json text NOT NULL DEFAULT '{}',
|
|
149
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
150
|
+
);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
-- SQLite dialect of 0002_org_scoped_skill_registry.
|
|
2
|
+
--
|
|
3
|
+
-- Hand-written parallel of migrations/postgres/0002_org_scoped_skill_registry.sql. Read
|
|
4
|
+
-- that file for why the registry is org-scoped and why the table is dropped rather than
|
|
5
|
+
-- altered; the rationale is not repeated here, only the dialect differences are.
|
|
6
|
+
--
|
|
7
|
+
-- Deliberate, shape-preserving dialect differences (same set as 0001):
|
|
8
|
+
-- * timestamptz -> text holding a UTC ISO-8601 instant.
|
|
9
|
+
-- * jsonb -> text holding JSON.
|
|
10
|
+
-- * bytea -> blob. Both are "opaque bytes"; bun:sqlite round-trips a Uint8Array
|
|
11
|
+
-- through a blob column and Bun's SQL client round-trips one through
|
|
12
|
+
-- bytea, so the store hands the same Uint8Array to either backend.
|
|
13
|
+
DROP TABLE IF EXISTS skills_registry;
|
|
14
|
+
|
|
15
|
+
CREATE TABLE IF NOT EXISTS skills_bundles (
|
|
16
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
17
|
+
sha256 text NOT NULL,
|
|
18
|
+
byte_size integer NOT NULL,
|
|
19
|
+
content_type text NOT NULL DEFAULT 'application/gzip',
|
|
20
|
+
storage_kind text NOT NULL DEFAULT 'db',
|
|
21
|
+
storage_key text,
|
|
22
|
+
body_blob blob,
|
|
23
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
24
|
+
PRIMARY KEY (org_id, sha256)
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
CREATE TABLE IF NOT EXISTS skills_registry (
|
|
28
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
29
|
+
slug text NOT NULL,
|
|
30
|
+
display_name text NOT NULL,
|
|
31
|
+
description text NOT NULL DEFAULT '',
|
|
32
|
+
category text NOT NULL DEFAULT 'Remote',
|
|
33
|
+
tags_json text NOT NULL DEFAULT '[]',
|
|
34
|
+
source text NOT NULL DEFAULT 'custom',
|
|
35
|
+
kind text NOT NULL DEFAULT 'executable',
|
|
36
|
+
version text,
|
|
37
|
+
skill_md text,
|
|
38
|
+
bundle_sha256 text,
|
|
39
|
+
bundle_byte_size integer,
|
|
40
|
+
published_by_user_id text REFERENCES users(id) ON DELETE SET NULL,
|
|
41
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
42
|
+
updated_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
43
|
+
PRIMARY KEY (org_id, slug),
|
|
44
|
+
CHECK (kind IN ('executable','instruction'))
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
CREATE INDEX IF NOT EXISTS skills_registry_org_updated_idx ON skills_registry (org_id, updated_at DESC);
|