@hasna/skills 0.1.59 → 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 +2457 -3344
- 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,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `skills sync` — the last mile: write skills from this machine's corpus
|
|
3
|
+
* (~/.hasna/skills/installed/<name>/) into each coding agent's global skills directory,
|
|
4
|
+
* per-tool adapted, so an agent auto-loads them.
|
|
5
|
+
*
|
|
6
|
+
* This is the deliberate reversal of the old "pins, not installs" stub: agent skill
|
|
7
|
+
* folders used to be left entirely unmanaged and every write path returned success:false.
|
|
8
|
+
* They are now written — but only the ones this tool owns. Ownership is tracked with a
|
|
9
|
+
* marker file. An unmarked directory is left alone by default; only one that already has
|
|
10
|
+
* SKILL.md can be explicitly adopted, while any other unmarked directory is never touched.
|
|
11
|
+
*/
|
|
12
|
+
import { renameSync } from "node:fs";
|
|
13
|
+
/**
|
|
14
|
+
* The coding agents `skills sync` targets by default. These runtimes load a
|
|
15
|
+
* `<home>/.<agent>/skills/<name>/SKILL.md` tree (OpenCode is the one path exception).
|
|
16
|
+
* Gemini is retired; Windsurf/pi are addressable through installSkillForAgent but are
|
|
17
|
+
* not in the default fan-out.
|
|
18
|
+
*/
|
|
19
|
+
export type SyncAgent = "claude" | "codewith" | "codex" | "opencode" | "cursor";
|
|
20
|
+
export declare const SYNC_AGENTS: readonly SyncAgent[];
|
|
21
|
+
/**
|
|
22
|
+
* Ownership marker written beside every SKILL.md this tool syncs. Its presence is how a
|
|
23
|
+
* re-sync tells "a skill I wrote, safe to update" from "a skill the user hand-authored,
|
|
24
|
+
* do not touch". A hidden sidecar rather than a frontmatter field so the SKILL.md the
|
|
25
|
+
* agent loads stays exactly the adapted document and nothing else.
|
|
26
|
+
*/
|
|
27
|
+
export declare const SYNC_MARKER_FILE = ".hasna-skills.json";
|
|
28
|
+
export declare const SYNC_MARKER_MANAGED_BY = "@hasna/skills";
|
|
29
|
+
export interface SyncMarker {
|
|
30
|
+
managedBy: string;
|
|
31
|
+
skill: string;
|
|
32
|
+
source: string;
|
|
33
|
+
syncedAt: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function isSyncAgent(value: string): value is SyncAgent;
|
|
36
|
+
export declare function resolveSyncAgents(arg?: string): SyncAgent[];
|
|
37
|
+
/** The global skills directory for an agent, honouring a test-supplied home. */
|
|
38
|
+
export declare function agentGlobalSkillsDir(agent: SyncAgent, homeDir?: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Adapt a SKILL.md for a target agent.
|
|
41
|
+
*
|
|
42
|
+
* `user_invocable` is a Claude-only frontmatter field (it controls Claude's slash menu).
|
|
43
|
+
* The Claude copy carries it; every other agent's copy has it stripped, because the field
|
|
44
|
+
* is meaningless there and skill-sync policy is that non-Claude copies must not carry
|
|
45
|
+
* Claude-specific frontmatter. The body is left verbatim: automatically rewriting prose
|
|
46
|
+
* would corrupt meaning, and corpus/instruction skills are authored tool-neutral.
|
|
47
|
+
*/
|
|
48
|
+
export declare function adaptSkillMdForAgent(skillMd: string, agent: string): string;
|
|
49
|
+
/** A pointer SKILL.md for an executable skill: what it is and how to actually run it. */
|
|
50
|
+
export declare function pointerSkillMd(name: string, description: string): string;
|
|
51
|
+
export type SyncActionKind = "create" | "update" | "skip";
|
|
52
|
+
export interface AgentSyncAction {
|
|
53
|
+
skill: string;
|
|
54
|
+
agent: SyncAgent;
|
|
55
|
+
path: string;
|
|
56
|
+
action: SyncActionKind;
|
|
57
|
+
reason?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface SyncSkillsOptions {
|
|
60
|
+
/** Specific skills to sync. When empty, every corpus skill is synced. */
|
|
61
|
+
names?: string[];
|
|
62
|
+
/** Explicit; the default when no names are given is already "all". */
|
|
63
|
+
all?: boolean;
|
|
64
|
+
/** Target agents. Defaults to SYNC_AGENTS. */
|
|
65
|
+
agents?: SyncAgent[];
|
|
66
|
+
/** Report intended actions without writing anything. */
|
|
67
|
+
dryRun?: boolean;
|
|
68
|
+
/** Adopt an unmanaged agent skill only when its directory already contains SKILL.md. */
|
|
69
|
+
force?: boolean;
|
|
70
|
+
/** Corpus root override. Tests only. */
|
|
71
|
+
rootDir?: string;
|
|
72
|
+
/** Home directory override for agent skill dirs. Tests only. */
|
|
73
|
+
homeDir?: string;
|
|
74
|
+
}
|
|
75
|
+
export interface SyncSkillsResult {
|
|
76
|
+
actions: AgentSyncAction[];
|
|
77
|
+
}
|
|
78
|
+
export declare function syncSkillsToAgents(options?: SyncSkillsOptions): SyncSkillsResult;
|
|
79
|
+
export interface WriteManagedAgentSkillParams {
|
|
80
|
+
skill: string;
|
|
81
|
+
agent: SyncAgent;
|
|
82
|
+
skillMd: string;
|
|
83
|
+
source?: "bundled" | "corpus";
|
|
84
|
+
resourceDir?: string;
|
|
85
|
+
homeDir?: string;
|
|
86
|
+
dryRun?: boolean;
|
|
87
|
+
force?: boolean;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Write one skill into one agent's global folder, non-clobbering.
|
|
91
|
+
*
|
|
92
|
+
* A directory this tool has written before carries the marker file and is replaced with
|
|
93
|
+
* an exact mirror. A directory with a SKILL.md but no marker is the user's own skill and
|
|
94
|
+
* is skipped unless `force` explicitly adopts it. Any other pre-existing unmarked
|
|
95
|
+
* directory is always left untouched. A fresh directory is created.
|
|
96
|
+
*/
|
|
97
|
+
export declare function writeManagedAgentSkill(params: WriteManagedAgentSkillParams): AgentSyncAction;
|
|
98
|
+
export interface ManagedDirWriteResult {
|
|
99
|
+
action: SyncActionKind;
|
|
100
|
+
path: string;
|
|
101
|
+
reason?: string;
|
|
102
|
+
}
|
|
103
|
+
export interface ManagedDirWriteOptions {
|
|
104
|
+
skill: string;
|
|
105
|
+
source?: string;
|
|
106
|
+
resourceDir?: string;
|
|
107
|
+
dryRun?: boolean;
|
|
108
|
+
force?: boolean;
|
|
109
|
+
/** Test seam for exercising rollback after the original directory has moved. */
|
|
110
|
+
renameDirectory?: typeof renameSync;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The primitive both the fan-out sync and the single-skill installer share: replace one
|
|
114
|
+
* owned skill directory with an exact staged mirror, non-clobbering, and stamp it as ours.
|
|
115
|
+
* `dir` is the skill's own directory (…/skills/<name>), so callers control scope (global
|
|
116
|
+
* vs project) by choosing the directory.
|
|
117
|
+
*/
|
|
118
|
+
export declare function writeManagedSkillDir(dir: string, skillMd: string, options: ManagedDirWriteOptions): ManagedDirWriteResult;
|
|
119
|
+
/**
|
|
120
|
+
* Remove a skill this tool synced from an agent folder. Refuses to delete a directory it
|
|
121
|
+
* did not write (no marker), so it can never remove a user's hand-authored skill.
|
|
122
|
+
*/
|
|
123
|
+
export declare function removeManagedAgentSkill(skill: string, agent: SyncAgent, homeDir?: string): boolean;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for resolving the Skills API endpoint.
|
|
3
|
+
*
|
|
4
|
+
* Boundary rule (R1): an unconfigured install must never produce a URL on a
|
|
5
|
+
* vendor-controlled host.
|
|
6
|
+
*
|
|
7
|
+
* - Read paths fail closed: `resolveApiUrl()` returns `undefined` and the
|
|
8
|
+
* caller keeps working against the bundled local registry.
|
|
9
|
+
* - Auth and write paths fail loudly: `requireApiUrl()` throws an error that
|
|
10
|
+
* names the missing configuration.
|
|
11
|
+
*
|
|
12
|
+
* There is deliberately no fallback endpoint and no localhost default. An
|
|
13
|
+
* unconfigured CLI has nothing sane to point a credential-bearing request at,
|
|
14
|
+
* so it must say so rather than pick a host on the user's behalf.
|
|
15
|
+
*/
|
|
16
|
+
import { type SkillsConfig } from "./config.js";
|
|
17
|
+
export declare const API_URL_ENV_VAR = "SKILLS_API_URL";
|
|
18
|
+
export declare const API_URL_CONFIG_KEY = "apiUrl";
|
|
19
|
+
/** Hint shown wherever a Skills API URL is required but absent. */
|
|
20
|
+
export declare const MISSING_API_URL_HINT: string;
|
|
21
|
+
export declare class MissingApiUrlError extends Error {
|
|
22
|
+
readonly code = "MISSING_API_URL";
|
|
23
|
+
constructor(action?: string);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Resolve the configured Skills API origin, or `undefined` when the install has
|
|
27
|
+
* not been pointed at an instance. `SKILLS_API_URL` wins over the config file.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveApiUrl(config?: SkillsConfig, env?: Record<string, string | undefined>): string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Resolve the configured Skills API origin, or throw naming the missing
|
|
32
|
+
* configuration. Use this on every auth and write path.
|
|
33
|
+
*/
|
|
34
|
+
export declare function requireApiUrl(action?: string, config?: SkillsConfig, env?: Record<string, string | undefined>): string;
|
package/dist/lib/auth-store.d.ts
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stored credentials for a Skills API instance.
|
|
3
|
+
*
|
|
4
|
+
* `apiKey` is the only credential. The identity fields are display metadata
|
|
5
|
+
* echoed back from the instance's `whoami`, so they are optional: an instance
|
|
6
|
+
* that does not return them leaves them unset. They are never invented locally
|
|
7
|
+
* — a placeholder written here is indistinguishable from a value the server
|
|
8
|
+
* actually returned once it is read back out of `auth.json`.
|
|
9
|
+
*/
|
|
1
10
|
export interface AuthConfig {
|
|
2
11
|
apiKey: string;
|
|
3
|
-
email
|
|
4
|
-
orgId
|
|
5
|
-
orgSlug
|
|
6
|
-
userId
|
|
12
|
+
email?: string;
|
|
13
|
+
orgId?: string;
|
|
14
|
+
orgSlug?: string;
|
|
15
|
+
userId?: string;
|
|
7
16
|
}
|
|
8
17
|
export declare function getAuthConfig(): AuthConfig | null;
|
|
9
18
|
export declare function saveAuthConfig(config: AuthConfig): void;
|
|
10
19
|
export declare function clearAuthConfig(): void;
|
|
11
20
|
export declare function getApiKey(): string | null;
|
|
12
21
|
export declare function normalizeSkillsApiOrigin(apiUrl: string): string;
|
|
13
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Origin every credential-bearing request is sent to.
|
|
24
|
+
*
|
|
25
|
+
* Throws `MissingApiUrlError` when the install has not been pointed at an
|
|
26
|
+
* instance. There is no fallback endpoint: an unconfigured CLI must not decide
|
|
27
|
+
* on the user's behalf where their email address, login code, or API key goes.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getApiUrl(action?: string): string;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input validation for the `blog-article` skill.
|
|
3
|
+
*
|
|
4
|
+
* This is ordinary run-option validation — topic, tone, length, SEO flag, and
|
|
5
|
+
* article count — surfaced at the CLI/MCP layer so a bad invocation fails with a
|
|
6
|
+
* clear message before the skill runs. It carries no pricing or billing concern.
|
|
7
|
+
*/
|
|
8
|
+
export declare const ARTICLE_GENERATION_SLUG = "blog-article";
|
|
9
|
+
export declare const ARTICLE_MAX_COUNT = 12;
|
|
10
|
+
export declare const ARTICLE_COUNT_ERROR = "Count must be an integer between 1 and 12.";
|
|
11
|
+
declare const ARTICLE_TONES: readonly ["professional", "casual", "technical", "friendly"];
|
|
12
|
+
declare const ARTICLE_LENGTHS: readonly ["short", "medium", "long"];
|
|
13
|
+
export type ArticleTone = typeof ARTICLE_TONES[number];
|
|
14
|
+
export type ArticleLength = typeof ARTICLE_LENGTHS[number];
|
|
15
|
+
export interface BlogArticleRunOptions {
|
|
16
|
+
topic?: string;
|
|
17
|
+
audience?: string;
|
|
18
|
+
tone: ArticleTone;
|
|
19
|
+
length: ArticleLength;
|
|
20
|
+
seo: boolean;
|
|
21
|
+
outline?: string;
|
|
22
|
+
count: number;
|
|
23
|
+
}
|
|
24
|
+
export type BlogArticleValidationResult = {
|
|
25
|
+
ok: true;
|
|
26
|
+
options: BlogArticleRunOptions;
|
|
27
|
+
input: Record<string, unknown>;
|
|
28
|
+
errors: [];
|
|
29
|
+
} | {
|
|
30
|
+
ok: false;
|
|
31
|
+
input: Record<string, unknown>;
|
|
32
|
+
errors: string[];
|
|
33
|
+
};
|
|
34
|
+
export declare function validateBlogArticleRunOptions(input?: unknown, args?: string[], validation?: {
|
|
35
|
+
requireTopic?: boolean;
|
|
36
|
+
}): BlogArticleValidationResult;
|
|
37
|
+
export {};
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -8,17 +8,59 @@
|
|
|
8
8
|
*
|
|
9
9
|
* Values from the project config override global config.
|
|
10
10
|
*/
|
|
11
|
+
/**
|
|
12
|
+
* There is no deployment "mode" key.
|
|
13
|
+
*
|
|
14
|
+
* Skills has one deployment story: you run it. Whether this CLI talks to a
|
|
15
|
+
* server is not a product variant, it is one fact — whether an API origin is
|
|
16
|
+
* configured (apiUrl here, or $SKILLS_API_URL). Nothing else may be derived
|
|
17
|
+
* from a declared label, because a label can disagree with the configuration
|
|
18
|
+
* it claims to describe.
|
|
19
|
+
*
|
|
20
|
+
* One caveat, true at the time of writing and tracked separately: getApiUrl()
|
|
21
|
+
* in auth-store.ts still falls back to a built-in origin when neither is set,
|
|
22
|
+
* so "no origin configured" is not yet the same as "sends nothing anywhere" on
|
|
23
|
+
* the auth path. Removing that fallback belongs to the no-vendor-defaults work,
|
|
24
|
+
* not here; remote-registry.ts already fails closed and is the model.
|
|
25
|
+
*
|
|
26
|
+
* Configs written by older versions may still carry a "mode" key on disk. That is
|
|
27
|
+
* refused rather than ignored - see lib/retired-settings.ts for why silence is
|
|
28
|
+
* the worse of the two failures - and `skills config unset mode` removes it.
|
|
29
|
+
*/
|
|
11
30
|
export interface SkillsConfig {
|
|
12
|
-
mode?: "local" | "self-hosted";
|
|
13
31
|
defaultAgent?: "claude" | "codex" | "gemini" | "pi" | "opencode" | "all";
|
|
14
32
|
defaultScope?: "global" | "project";
|
|
15
33
|
format?: "compact" | "json" | "csv";
|
|
16
34
|
apiUrl?: string;
|
|
35
|
+
extensionsDir?: string;
|
|
17
36
|
}
|
|
18
37
|
export type ConfigScope = "global" | "project";
|
|
38
|
+
/**
|
|
39
|
+
* Environment variable that relocates the skills data directory.
|
|
40
|
+
*
|
|
41
|
+
* Exported so that every reader agrees on the name: previously the literal was
|
|
42
|
+
* duplicated in portable-skills.ts and honoured there but *not* in getDataDir(),
|
|
43
|
+
* which is what made the override only half work (see getDataDir below).
|
|
44
|
+
*/
|
|
45
|
+
export declare const DATA_DIR_ENV = "HASNA_SKILLS_DIR";
|
|
46
|
+
/**
|
|
47
|
+
* Subfolder of the data directory holding the installed skill corpus.
|
|
48
|
+
*
|
|
49
|
+
* ~/.hasna/skills is the skills *app* folder, matching every sibling Hasna app:
|
|
50
|
+
* mementos keeps agents/ beside config.json and mementos.db, accounts keeps
|
|
51
|
+
* profiles/ beside accounts.json, knowledge keeps artifacts/ and cache/ beside
|
|
52
|
+
* auth.json. Each puts app data at the app root and content in a named subfolder.
|
|
53
|
+
*
|
|
54
|
+
* Skills used to be the exception, writing one folder per skill straight into the
|
|
55
|
+
* app root next to config.json and skills.db. That is the only reason a denylist
|
|
56
|
+
* of "entries that look like skills but aren't" ever had to exist; no sibling app
|
|
57
|
+
* needs one. With the corpus under installed/, a skill may be named `config` or
|
|
58
|
+
* `custom` without colliding with anything.
|
|
59
|
+
*/
|
|
60
|
+
export declare const INSTALLED_SKILLS_DIRNAME = "installed";
|
|
19
61
|
/**
|
|
20
62
|
* Get the data directory for skills global config/data.
|
|
21
|
-
*
|
|
63
|
+
* Default: ~/.hasna/skills/, overridable with $HASNA_SKILLS_DIR.
|
|
22
64
|
* Auto-migrates from ~/.skills/ and ~/.skillsrc without deleting legacy data.
|
|
23
65
|
*/
|
|
24
66
|
export declare function getDataDir(): string;
|
|
@@ -34,3 +76,15 @@ export declare function loadConfig(): SkillsConfig;
|
|
|
34
76
|
* Save a single config key-value pair to the specified scope
|
|
35
77
|
*/
|
|
36
78
|
export declare function saveConfig(key: string, value: string, scope?: ConfigScope): void;
|
|
79
|
+
/**
|
|
80
|
+
* Remove a single config key from the specified scope.
|
|
81
|
+
*
|
|
82
|
+
* This is the counterpart that makes "no deployment mode" workable. Running on
|
|
83
|
+
* this machine is the absence of a configured apiUrl, so there has to be a way
|
|
84
|
+
* to get back to that state; previously the only way to express the intent was
|
|
85
|
+
* to set mode=local, and that key is gone.
|
|
86
|
+
*
|
|
87
|
+
* Returns whether the key was actually present, so callers can distinguish
|
|
88
|
+
* "removed" from "there was nothing to remove" instead of guessing.
|
|
89
|
+
*/
|
|
90
|
+
export declare function unsetConfig(key: string, scope?: ConfigScope): boolean;
|
|
@@ -2,17 +2,32 @@
|
|
|
2
2
|
* content-scan.ts — scans skill BODIES (not just package.json/README) for content
|
|
3
3
|
* that must never ship in the public @hasna/skills package.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
5
|
+
* Five finding categories:
|
|
6
6
|
* - secret-value: credential-shaped values (API keys, tokens, private keys)
|
|
7
|
-
* - pii-contact: personal contact PII (E.164 phone numbers
|
|
7
|
+
* - pii-contact: personal contact PII (E.164 phone numbers, consumer-provider
|
|
8
|
+
* email addresses)
|
|
9
|
+
* - pii-personal: personal data ABOUT an identified individual — a real human
|
|
10
|
+
* name paired with employment/HR/leave/health status, or a
|
|
11
|
+
* government identifier carrying a real-looking value
|
|
8
12
|
* - private-context: internal/operational context that leaks the private fleet
|
|
9
13
|
* (fleet hostnames, home-directory paths with a real user,
|
|
10
14
|
* internal CLI invocations, internal infra/product names)
|
|
15
|
+
* - committed-output: operational tool output committed into the package — a
|
|
16
|
+
* run artifact (timestamped filename, data file under an
|
|
17
|
+
* exports/ directory) rather than an authored fixture
|
|
11
18
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
19
|
+
* The first four categories are matched against file CONTENT (see {@link scanText}).
|
|
20
|
+
* `committed-output` is matched against the package-relative PATH instead (see
|
|
21
|
+
* {@link scanPaths}), because what makes an artifact wrong is where it came from,
|
|
22
|
+
* not what is inside it — a scraped catalog and a hand-written fixture can be
|
|
23
|
+
* byte-identical in shape.
|
|
24
|
+
*
|
|
25
|
+
* All output is REDACTED: secret values are never emitted, phone numbers, emails and
|
|
26
|
+
* personal names are masked, and only the rule id + a safe redacted marker are
|
|
27
|
+
* reported. Findings are surfaced in (potentially public) CI logs, so a rule must
|
|
28
|
+
* never echo the personal data it just found.
|
|
14
29
|
*/
|
|
15
|
-
export type ScanCategory = "secret-value" | "pii-contact" | "private-context";
|
|
30
|
+
export type ScanCategory = "secret-value" | "pii-contact" | "pii-personal" | "private-context" | "committed-output";
|
|
16
31
|
export interface ScanRule {
|
|
17
32
|
category: ScanCategory;
|
|
18
33
|
/** Stable, human-readable rule id (safe to print — never a secret value). */
|
|
@@ -21,6 +36,13 @@ export interface ScanRule {
|
|
|
21
36
|
pattern: RegExp;
|
|
22
37
|
/** Optional predicate to drop known-safe example matches (e.g. 555 phone numbers). */
|
|
23
38
|
isExample?: (match: string) => boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Match against the whole text rather than line by line. Needed for record
|
|
41
|
+
* shapes whose fields sit on DIFFERENT lines — a YAML export writes the
|
|
42
|
+
* person on one line and the status on the next, and a per-line regex can
|
|
43
|
+
* never see that pairing.
|
|
44
|
+
*/
|
|
45
|
+
multiline?: boolean;
|
|
24
46
|
}
|
|
25
47
|
export interface ScanFinding {
|
|
26
48
|
file: string;
|
|
@@ -32,11 +54,33 @@ export interface ScanFinding {
|
|
|
32
54
|
redacted: string;
|
|
33
55
|
}
|
|
34
56
|
export declare const SCAN_RULES: ScanRule[];
|
|
57
|
+
/** A rule matched against a package-relative path rather than file content. */
|
|
58
|
+
export interface ScanPathRule {
|
|
59
|
+
category: ScanCategory;
|
|
60
|
+
id: string;
|
|
61
|
+
description: string;
|
|
62
|
+
pattern: RegExp;
|
|
63
|
+
/** Optional predicate to drop known-safe paths (e.g. source trees). */
|
|
64
|
+
isExample?: (path: string) => boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Scan package-relative PATHS for committed tool output. Unlike the content
|
|
68
|
+
* scanners this reads nothing from disk — the path itself is the evidence. The
|
|
69
|
+
* reported marker is the path verbatim: it is not sensitive, and the maintainer
|
|
70
|
+
* needs it in order to delete the file.
|
|
71
|
+
*/
|
|
72
|
+
export declare function scanPaths(paths: string[]): ScanFinding[];
|
|
35
73
|
/**
|
|
36
74
|
* Produce a redacted marker for a matched value. Secret values are NEVER emitted;
|
|
37
|
-
* phone numbers
|
|
38
|
-
* matches (hostnames, paths, CLI
|
|
39
|
-
* maintainer can locate and
|
|
75
|
+
* PII (phone numbers, emails, personal names and identifiers) keeps only a short
|
|
76
|
+
* two-character locating prefix; private-context matches (hostnames, paths, CLI
|
|
77
|
+
* names — not credentials) are shown verbatim so a maintainer can locate and
|
|
78
|
+
* remove them.
|
|
79
|
+
*
|
|
80
|
+
* Personal data must be masked here as well as elsewhere: findings are printed
|
|
81
|
+
* into (potentially public) CI logs, so reporting a leaked name in full would
|
|
82
|
+
* republish the very data the rule exists to catch. The rule id plus file:line is
|
|
83
|
+
* enough for a maintainer to find it in the working tree.
|
|
40
84
|
*/
|
|
41
85
|
export declare function redactMatch(category: ScanCategory, ruleId: string, match: string): string;
|
|
42
86
|
/**
|
|
@@ -44,7 +88,16 @@ export declare function redactMatch(category: ScanCategory, ruleId: string, matc
|
|
|
44
88
|
* reporting; it is never read from disk here.
|
|
45
89
|
*/
|
|
46
90
|
export declare function scanText(text: string, file?: string): ScanFinding[];
|
|
47
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* Read a file and scan its contents.
|
|
93
|
+
*
|
|
94
|
+
* This used to skip any file whose first 8000 bytes contained a NUL, which made
|
|
95
|
+
* a NUL byte a silent opt-out from secret and PII scanning: the identical
|
|
96
|
+
* credential-shaped literal was caught without a NUL and passed with one. Only
|
|
97
|
+
* genuinely compiled/compressed content is skipped now, decided by magic number
|
|
98
|
+
* rather than by the presence of a byte, and NULs are stripped during decoding
|
|
99
|
+
* so they cannot be used to break a pattern apart either.
|
|
100
|
+
*/
|
|
48
101
|
export declare function scanFile(path: string, reportedName?: string): ScanFinding[];
|
|
49
102
|
/**
|
|
50
103
|
* Scan a list of files. `nameFor` maps an absolute path to the name reported in
|
package/dist/lib/discovery.d.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import type { SkillMeta } from "./registry-types.js";
|
|
2
|
-
import { type PublicSkillPricing } from "./pricing.js";
|
|
3
2
|
export interface CompactSkillDiscovery {
|
|
4
3
|
name: string;
|
|
5
4
|
category: string;
|
|
6
5
|
description: string;
|
|
7
|
-
pricing: PublicSkillPricing;
|
|
8
6
|
}
|
|
9
7
|
export type PublicSkillDiscovery<T extends SkillMeta = SkillMeta> = Omit<T, "description" | "tags"> & {
|
|
10
8
|
description: string;
|
|
11
9
|
tags: string[];
|
|
12
|
-
pricing: PublicSkillPricing;
|
|
13
10
|
};
|
|
14
11
|
export declare function getCompactSkillDiscovery(skill: SkillMeta): CompactSkillDiscovery;
|
|
15
12
|
export declare function getPublicSkillDiscovery<T extends SkillMeta>(skill: T): PublicSkillDiscovery<T>;
|
|
16
|
-
export declare function publicDiscoveryPriceLabel(skill: {
|
|
17
|
-
name: string;
|
|
18
|
-
pricing?: PublicSkillPricing;
|
|
19
|
-
}): string;
|
|
20
13
|
export declare function publicDiscoveryTags(tags: string[]): string[];
|
|
21
14
|
export declare function sanitizePublicDiscoveryText(text: string): string;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Every skill now runs from bundled source or is instruction prose, so the
|
|
17
|
+
* environment it declares IS the environment a caller must provide. A BYO-key
|
|
18
|
+
* skill's variable is the single most important thing to surface, not to redact.
|
|
19
|
+
*/
|
|
20
|
+
export declare function publicDiscoveryEnvVars(_skillName: string, envVars: string[]): string[];
|
|
21
|
+
/** Dependencies are installed locally now, so the real list is the useful one. */
|
|
22
|
+
export declare function publicDiscoveryDependencies(_skillName: string, dependencies: Record<string, string>): Record<string, string>;
|
|
23
|
+
/** The skill's own docs are the truth; there is no hosted runtime to describe. */
|
|
24
|
+
export declare function publicDiscoveryDocumentation(_skill: SkillMeta, documentation: string | null): string | null;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* doc-derived-counts.ts — the one place that re-derives the counts our docs assert.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS IS A MODULE AND NOT INLINE IN ONE TEST
|
|
5
|
+
*
|
|
6
|
+
* CLAUDE.md rotted once (it claimed 202 skills against a real 229) and grew the
|
|
7
|
+
* guard in `claude-md.test.ts`. README.md then rotted the SAME number in the same
|
|
8
|
+
* direction and nobody noticed for weeks, because the guard was scoped to a single
|
|
9
|
+
* hard-coded path: `202+` sat in README while the guarded table two files away read
|
|
10
|
+
* 85. One document was fixed and its neighbour was left asserting the old figure.
|
|
11
|
+
*
|
|
12
|
+
* A guard that covers one of the two places a number is written is not a guard on
|
|
13
|
+
* the number; it is a guard on a file. So the derivation and the table parser live
|
|
14
|
+
* here, and every document that asserts these counts is checked by the same code.
|
|
15
|
+
* Adding a third document is a two-line test, which is the point — the cheap path
|
|
16
|
+
* has to be the correct one or the next document will hand-copy the numbers again.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* The heading every guarded table sits under. Fixed rather than per-document so a
|
|
20
|
+
* document cannot opt out of the guard by renaming its own section.
|
|
21
|
+
*/
|
|
22
|
+
export declare const TABLE_HEADING = "### Derived counts";
|
|
23
|
+
/**
|
|
24
|
+
* Parse the `### Derived counts` table in `docPath` into {label -> value}.
|
|
25
|
+
*
|
|
26
|
+
* Scoped to the section rather than the whole file so an unrelated markdown table
|
|
27
|
+
* elsewhere in the document cannot inject rows. Throws rather than returning empty
|
|
28
|
+
* when the section is missing: an empty map would make every assertion pass or fail
|
|
29
|
+
* for the wrong reason.
|
|
30
|
+
*
|
|
31
|
+
* The three tolerances below are not incidental — each one is a way this guard
|
|
32
|
+
* could have failed for a reason that has nothing to do with doc drift, and a doc
|
|
33
|
+
* test that cries wolf is a doc test that gets deleted:
|
|
34
|
+
*
|
|
35
|
+
* - Up to three leading spaces before `|`. GFM permits them, so an editor that
|
|
36
|
+
* indents the table would otherwise yield zero rows and a diff that looks like
|
|
37
|
+
* catastrophic drift.
|
|
38
|
+
* - A delimiter row of ANY dash count, with or without alignment colons. `|-|-|-|`
|
|
39
|
+
* is legal GFM; an earlier `-{2,}` test let it through as a data row named "-".
|
|
40
|
+
* - The header is dropped BY POSITION (first row), not by matching the literal
|
|
41
|
+
* "Count". Renaming that cell to "Metric" must not break the guard.
|
|
42
|
+
*/
|
|
43
|
+
export declare function readDocumentedCounts(docPath: string): Record<string, string>;
|
|
44
|
+
export declare function deriveCounts(): Promise<Record<string, string>>;
|
|
45
|
+
/**
|
|
46
|
+
* Narrow the derived set to the rows a given document actually publishes.
|
|
47
|
+
*
|
|
48
|
+
* README and CLAUDE.md have different audiences and deliberately carry different
|
|
49
|
+
* subsets — forcing every document to restate all seven rows would mean every skill
|
|
50
|
+
* PR edits every document, which is the tax that gets a guard deleted.
|
|
51
|
+
*
|
|
52
|
+
* Throws on a key the derivation does not produce. Without that, a typo in a
|
|
53
|
+
* document's expected-key list would silently shrink the comparison to the rows that
|
|
54
|
+
* happened to match, and the guard would pass while checking less than it claims.
|
|
55
|
+
*/
|
|
56
|
+
export declare function selectCounts(derived: Record<string, string>, keys: readonly string[]): Record<string, string>;
|
package/dist/lib/feedback.d.ts
CHANGED
|
@@ -11,5 +11,12 @@ export interface FeedbackResult {
|
|
|
11
11
|
category: FeedbackCategory;
|
|
12
12
|
path: string;
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Resolved via getDataDir() rather than homedir() so that it agrees with the
|
|
16
|
+
* path `skills storage` advertises (native-storage.ts builds `feedbackDbPath`
|
|
17
|
+
* from getDataDir()). While this read the home directly, setting
|
|
18
|
+
* $HASNA_SKILLS_DIR made the reported path and the written path diverge - the
|
|
19
|
+
* CLI would name a database it was not using.
|
|
20
|
+
*/
|
|
14
21
|
export declare function getFeedbackDbPath(): string;
|
|
15
22
|
export declare function saveFeedback(input: FeedbackInput): FeedbackResult;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* file-bytes.ts — turning bytes into text that a content guard can actually scan.
|
|
3
|
+
*
|
|
4
|
+
* Every guard in this repo that reads files used to decide "is this text?" with
|
|
5
|
+
* some form of `buffer.includes(0)` and skip the file when the answer was no.
|
|
6
|
+
* That is not a heuristic, it is an opt-out: appending or prepending one NUL
|
|
7
|
+
* byte removed a file from the scan entirely, silently, and the guard still
|
|
8
|
+
* exited 0. It was live in three places at once — the R4 infrastructure scan,
|
|
9
|
+
* `content-scan.ts`'s secret/PII scanner, and `release-guard.ts`'s own marker
|
|
10
|
+
* scan, which is the actual publish gate.
|
|
11
|
+
*
|
|
12
|
+
* The rule here is: decode everything, skip almost nothing, and let the caller
|
|
13
|
+
* treat a skip as a finding.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Whether the bytes are a compiled/compressed binary.
|
|
17
|
+
*
|
|
18
|
+
* Decided by CONTENT, never by filename. A filename-based version of this check
|
|
19
|
+
* was itself a bypass: a plain-text file named `leak.gz` was skipped without
|
|
20
|
+
* ever being opened. An extension is attacker-chosen; the leading bytes are not.
|
|
21
|
+
*
|
|
22
|
+
* Note what this deliberately does NOT do: it does not treat "contains a NUL"
|
|
23
|
+
* as binary. Plenty of legitimate text files contain NUL — fixtures, test
|
|
24
|
+
* corpora, anything storing a NUL-separated key — and treating that byte as a
|
|
25
|
+
* skip signal is exactly the hole being closed.
|
|
26
|
+
*/
|
|
27
|
+
export declare function looksBinary(buffer: Buffer): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Decode file bytes to scannable text.
|
|
30
|
+
*
|
|
31
|
+
* - UTF-16 (BOM-marked, or detected from the alternating-NUL pattern of
|
|
32
|
+
* BOM-less ASCII) is decoded properly, so an identifier stored as UTF-16 is
|
|
33
|
+
* ordinary text by the time any rule sees it.
|
|
34
|
+
* - NUL bytes are stripped AFTER decoding, which defeats NUL-interleaved
|
|
35
|
+
* payloads (`1\0"2\0"3456789012`) and, as a bonus, renders BOM-less UTF-16
|
|
36
|
+
* ASCII readable even when the heuristic misses it.
|
|
37
|
+
* - Line structure is preserved: NUL is not a newline, so reported line
|
|
38
|
+
* numbers stay correct.
|
|
39
|
+
*
|
|
40
|
+
* Stripping NULs cannot cause a false negative — no rule in this repo matches a
|
|
41
|
+
* NUL — and it removes the single byte that most reliably blinded these guards.
|
|
42
|
+
*/
|
|
43
|
+
export declare function decodeForScanning(buffer: Buffer): string;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* hosted-skill-set.ts — the single authoritative derivation of the
|
|
3
|
+
* "hosted metadata skill" set.
|
|
4
|
+
*
|
|
5
|
+
* A hosted metadata skill ships its `package.json` and docs but NOT its `src/`.
|
|
6
|
+
* That set is expressed in three places that can silently drift apart:
|
|
7
|
+
*
|
|
8
|
+
* 1. Each skill's own `package.json` -> `skills.runtime` / `skills.source`.
|
|
9
|
+
* 2. The negated `!skills/{...}/src` glob(s) in the root `package.json` `files`.
|
|
10
|
+
*
|
|
11
|
+
* (1) is AUTHORITATIVE. It lives next to the thing it describes, so it cannot be
|
|
12
|
+
* forgotten when a directory is added, removed, or converted. (2) and (3) are
|
|
13
|
+
* projections of it and are guarded against drift in `hosted-skill-set.test.ts`.
|
|
14
|
+
*
|
|
15
|
+
* Two accessors, deliberately different:
|
|
16
|
+
*
|
|
17
|
+
* THIS REPO now has ZERO hosted skills: every catalog entry ships bundled source
|
|
18
|
+
* or is instruction prose. The guard-facing `requireHostedMetadataSlugs`
|
|
19
|
+
* accessor, and the five guards derived from it, were retired in the change that
|
|
20
|
+
* emptied the set — which is precisely what its own emptiness error demanded.
|
|
21
|
+
* `catalog-runnable.test.ts` now asserts the set stays empty, so re-introducing
|
|
22
|
+
* a hosted skill fails loudly rather than silently.
|
|
23
|
+
*
|
|
24
|
+
* The parsing helpers below remain: `release-guard.ts` still applies them to
|
|
25
|
+
* ARBITRARY packages, where a non-empty hosted set is a legitimate answer, and
|
|
26
|
+
* `release-guard.integration.test.ts` exercises them against synthetic fixtures.
|
|
27
|
+
*/
|
|
28
|
+
/** Shape of the only part of a skill `package.json` this module reads. */
|
|
29
|
+
export interface HostedSkillPackageMarkers {
|
|
30
|
+
skills?: {
|
|
31
|
+
runtime?: unknown;
|
|
32
|
+
source?: unknown;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The authoritative predicate: does this parsed skill `package.json` declare
|
|
37
|
+
* itself as hosted metadata (implementation lives off-repo)?
|
|
38
|
+
*/
|
|
39
|
+
export declare function isHostedMetadataPackage(pkg: unknown): boolean;
|
|
40
|
+
/** Read a skill directory's `package.json` and apply the authoritative predicate. */
|
|
41
|
+
export declare function isHostedMetadataSkillDir(skillDir: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Enumerate the hosted metadata slugs under a `skills/` root, sorted.
|
|
44
|
+
* Returns `[]` for this repo, and may legitimately be non-empty for another.
|
|
45
|
+
*/
|
|
46
|
+
export declare function listHostedMetadataSlugs(skillsRoot: string): string[];
|
|
47
|
+
export declare const HOSTED_METADATA_SET_EMPTY_ERROR: string;
|
|
48
|
+
/**
|
|
49
|
+
* Extract the set of slugs whose `src/` the root `files` array genuinely
|
|
50
|
+
* excludes from the published package, sorted and de-duplicated.
|
|
51
|
+
*
|
|
52
|
+
* Only negations that survive to the end of the array count: a later entry that
|
|
53
|
+
* re-includes `skills/` discards every exclusion before it, exactly as npm
|
|
54
|
+
* resolves them.
|
|
55
|
+
*/
|
|
56
|
+
export declare function parseHostedSourceExclusionSlugs(files: readonly string[]): string[];
|
|
57
|
+
/**
|
|
58
|
+
* Render the canonical `files` exclusion entry for a slug set, so a drift
|
|
59
|
+
* failure can print the exact line to paste. Emits the bare form for a single
|
|
60
|
+
* slug because the one-element brace form is inert under `npm pack`.
|
|
61
|
+
*/
|
|
62
|
+
export declare function buildHostedSourceExclusionGlob(slugs: readonly string[]): string;
|
|
63
|
+
/** Paths in a packed file list that would ship a hosted skill's implementation source. */
|
|
64
|
+
export declare function findHostedSourcePacklistLeaks(packedPaths: readonly string[], hostedSlugs: Iterable<string>): string[];
|
|
65
|
+
/** Symmetric difference between two slug sets, for readable drift failures. */
|
|
66
|
+
export declare function diffSlugSets(expected: readonly string[], actual: readonly string[]): {
|
|
67
|
+
missing: string[];
|
|
68
|
+
unexpected: string[];
|
|
69
|
+
};
|