@hasna/skills 0.1.62 → 0.1.63
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 +10 -6
- package/bin/index.js +14271 -21602
- package/bin/mcp.js +3527 -11449
- package/bin/migrate.js +53 -3
- package/bin/server.js +5140 -2675
- package/bin/worker.js +4542 -2129
- package/dist/cli/commands/publish.d.ts +2 -0
- package/dist/cli/components/App.d.ts +2 -1
- package/dist/cli/components/CategorySelect.d.ts +2 -1
- package/dist/cli/components/Header.d.ts +2 -1
- package/dist/cli/components/InstallProgress.d.ts +2 -1
- package/dist/cli/components/SearchView.d.ts +2 -1
- package/dist/cli/components/SkillSelect.d.ts +2 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +5094 -13755
- package/dist/lib/agent-sync.d.ts +38 -3
- package/dist/lib/home-adoption.d.ts +91 -0
- package/dist/lib/home-census.d.ts +22 -0
- package/dist/lib/home-migration.d.ts +61 -0
- package/dist/lib/portable-skills-files.d.ts +21 -1
- package/dist/lib/portable-skills-types.d.ts +46 -0
- package/dist/lib/pull.d.ts +66 -0
- package/dist/lib/remote-client.d.ts +6 -0
- package/dist/lib/run-state.d.ts +5 -0
- package/dist/lib/skill-bundles.d.ts +54 -0
- package/dist/lib/skill-contract.d.ts +35 -0
- package/dist/lib/skill-hash.d.ts +77 -0
- package/dist/sdk/cancel.d.ts +30 -0
- package/dist/sdk/dispatcher.d.ts +40 -0
- package/dist/sdk/event-sink.d.ts +2 -0
- package/dist/sdk/events.d.ts +79 -0
- package/dist/sdk/execution/admission.d.ts +44 -0
- package/dist/sdk/execution/dispatchers/e2b.d.ts +17 -0
- package/dist/sdk/execution/dispatchers/ecs.d.ts +151 -0
- package/dist/sdk/execution/image-profile.d.ts +73 -0
- package/dist/sdk/execution/index.d.ts +15 -0
- package/dist/sdk/execution/receipts.d.ts +44 -0
- package/dist/sdk/execution/state-machine.d.ts +38 -0
- package/dist/sdk/execution/storage.d.ts +158 -0
- package/dist/sdk/execution/types.d.ts +130 -0
- package/dist/sdk/executor.d.ts +17 -0
- package/dist/sdk/governance-store.d.ts +156 -0
- package/dist/sdk/governance.d.ts +92 -0
- package/dist/sdk/index.d.ts +26 -0
- package/dist/sdk/index.js +48730 -0
- package/dist/sdk/offline.d.ts +16 -0
- package/dist/sdk/outputs.d.ts +71 -0
- package/dist/sdk/registry.d.ts +28 -0
- package/dist/sdk/runs.d.ts +229 -0
- package/dist/sdk/server.d.ts +35 -0
- package/dist/sdk/spend.d.ts +36 -0
- package/dist/sdk/storage.d.ts +25 -0
- package/dist/server/app.d.ts +42 -0
- package/dist/server/artifact-storage.d.ts +102 -0
- package/dist/server/auth.d.ts +5 -0
- package/dist/server/config.d.ts +40 -0
- package/dist/server/database-url.d.ts +42 -0
- package/dist/server/handlers.d.ts +3 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/migrate.d.ts +13 -0
- package/dist/server/migrations-dir.d.ts +18 -0
- package/dist/server/redaction.d.ts +1 -0
- package/dist/server/registry.d.ts +5 -0
- package/dist/server/rows.d.ts +23 -0
- package/dist/server/skills-api.d.ts +68 -0
- package/dist/server/sqlite-store.d.ts +114 -0
- package/dist/server/store-fixtures.d.ts +25 -0
- package/dist/server/store.d.ts +144 -0
- package/dist/server/types.d.ts +242 -0
- package/dist/server/worker.d.ts +4 -0
- package/dist/storage.js +32 -0
- package/docs/skill-standard.md +211 -39
- package/migrations/postgres/0003_run_outputs_governance.sql +83 -0
- package/migrations/sqlite/0003_run_outputs_governance.sql +58 -0
- package/package.json +11 -8
- package/schemas/skill.schema.json +181 -0
- package/agent-skills/README.md +0 -41
- package/agent-skills/fleet-package-rollout/SKILL.md +0 -169
- package/agent-skills/inbox/SKILL.md +0 -25
- package/agent-skills/inbox/scripts/inbox +0 -109
- package/agent-skills/inbox/tests/test_registered_sender_id.sh +0 -92
- package/agent-skills/inbox-monitor/SKILL.md +0 -41
- package/agent-skills/inbox-monitor/scripts/inbox_monitor.sh +0 -91
- package/agent-skills/inbox-monitor/scripts/test_inbox_monitor.sh +0 -71
- package/agent-skills/merge-pr/SKILL.md +0 -85
- package/agent-skills/merge-pr/references/merge-safety.md +0 -82
- package/agent-skills/merge-pr/scripts/merge_pr_guard.py +0 -694
- package/agent-skills/merge-pr/scripts/test_merge_pr_guard.py +0 -647
- package/agent-skills/merge-pr/tests/fixtures/multi-commit-synthesized.json +0 -28
- package/agent-skills/merge-pr/tests/fixtures/trailer-free-provider.json +0 -28
- package/agent-skills/skill-goal-execute/SKILL.md +0 -115
- package/agent-skills/skill-login/SKILL.md +0 -109
- package/agent-skills/skill-project-create/SKILL.md +0 -91
- package/agent-skills/skill-publish/SKILL.md +0 -254
- package/agent-skills/skill-publish/scripts/capture_registry.js +0 -47
- package/agent-skills/skill-publish/scripts/publish_with_git_head.sh +0 -143
- package/agent-skills/skill-publish/scripts/test_publish_with_git_head.sh +0 -231
- package/skills/_common/auth.ts +0 -45
- package/skills/_common/http-client.ts +0 -143
- package/skills/_common/index.ts +0 -26
- package/skills/_common/install.sh +0 -7
- package/skills/_common/installer.ts +0 -72
- package/skills/_common/skill-install.ts +0 -37
- package/skills/_common/vision.ts +0 -374
- package/skills/ad-creative-pack/SKILL.md +0 -55
- package/skills/ad-creative-pack/package.json +0 -10
- package/skills/analyze-data/CLAUDE.md +0 -16
- package/skills/analyze-data/SKILL.md +0 -112
- package/skills/analyze-data/package.json +0 -23
- package/skills/analyze-data/src/analysis.ts +0 -401
- package/skills/analyze-data/src/cli.ts +0 -66
- package/skills/analyze-data/src/formatters.ts +0 -235
- package/skills/analyze-data/src/index.ts +0 -74
- package/skills/analyze-data/src/logger.ts +0 -36
- package/skills/analyze-data/src/parsers.ts +0 -57
- package/skills/analyze-data/src/stats.ts +0 -151
- package/skills/analyze-data/src/types.ts +0 -85
- package/skills/analyze-data/tsconfig.json +0 -19
- package/skills/api-docs-portal/SKILL.md +0 -84
- package/skills/api-docs-portal/package.json +0 -35
- package/skills/api-docs-portal/src/index.ts +0 -919
- package/skills/api-docs-portal/tsconfig.json +0 -17
- package/skills/api-test-suite/CLAUDE.md +0 -19
- package/skills/api-test-suite/package.json +0 -27
- package/skills/api-test-suite/src/index.ts +0 -381
- package/skills/api-test-suite/tsconfig.json +0 -10
- package/skills/audio-extract/CLAUDE.md +0 -9
- package/skills/audio-extract/SKILL.md +0 -73
- package/skills/audio-extract/package.json +0 -23
- package/skills/audio-extract/src/index.ts +0 -323
- package/skills/audio-extract/tsconfig.json +0 -11
- package/skills/bio-sequence-tool/CLAUDE.md +0 -19
- package/skills/bio-sequence-tool/package.json +0 -27
- package/skills/bio-sequence-tool/src/index.ts +0 -85
- package/skills/bio-sequence-tool/tsconfig.json +0 -10
- package/skills/blog-article/CLAUDE.md +0 -12
- package/skills/blog-article/SKILL.md +0 -55
- package/skills/blog-article/package.json +0 -10
- package/skills/blog-article/tsconfig.json +0 -10
- package/skills/brand-assets/SKILL.md +0 -118
- package/skills/brand-assets/package.json +0 -35
- package/skills/brand-assets/src/cli.ts +0 -155
- package/skills/brand-assets/src/constants.ts +0 -8
- package/skills/brand-assets/src/extract.ts +0 -236
- package/skills/brand-assets/src/index.ts +0 -668
- package/skills/brand-assets/src/types.ts +0 -59
- package/skills/brand-assets/tsconfig.json +0 -17
- package/skills/brand-kit/SKILL.md +0 -54
- package/skills/brand-kit/package.json +0 -10
- package/skills/businessactivity/CLAUDE.md +0 -176
- package/skills/businessactivity/LICENSE +0 -192
- package/skills/businessactivity/README.md +0 -287
- package/skills/businessactivity/package.json +0 -25
- package/skills/businessactivity/scripts/publish.ts +0 -210
- package/skills/businessactivity/src/commands/activity.ts +0 -211
- package/skills/businessactivity/src/commands/function.ts +0 -227
- package/skills/businessactivity/src/commands/owner.ts +0 -193
- package/skills/businessactivity/src/commands/profile.ts +0 -121
- package/skills/businessactivity/src/commands/responsibility.ts +0 -264
- package/skills/businessactivity/src/commands/team.ts +0 -244
- package/skills/businessactivity/src/commands/workflow.ts +0 -359
- package/skills/businessactivity/src/index.ts +0 -3
- package/skills/businessactivity/src/lib/config.ts +0 -167
- package/skills/businessactivity/src/lib/output.ts +0 -76
- package/skills/businessactivity/src/lib/paths.ts +0 -79
- package/skills/businessactivity/src/lib/storage.ts +0 -95
- package/skills/businessactivity/src/types/index.ts +0 -86
- package/skills/businessactivity/tsconfig.json +0 -29
- package/skills/codefix/LICENSE +0 -192
- package/skills/codefix/README.md +0 -232
- package/skills/codefix/SKILL.md +0 -94
- package/skills/codefix/package.json +0 -21
- package/skills/codefix/src/fixers/batch.ts +0 -213
- package/skills/codefix/src/fixers/detector.ts +0 -160
- package/skills/codefix/src/fixers/index.ts +0 -7
- package/skills/codefix/src/fixers/runner.ts +0 -522
- package/skills/codefix/src/index-local.ts +0 -431
- package/skills/codefix/src/index.ts +0 -4
- package/skills/codefix/src/types.ts +0 -211
- package/skills/codefix/tsconfig.json +0 -15
- package/skills/commitpush/SKILL.md +0 -57
- package/skills/commitpush/package.json +0 -33
- package/skills/commitpush/src/index.ts +0 -34
- package/skills/commitpush/tsconfig.json +0 -17
- package/skills/commitpushpr/SKILL.md +0 -55
- package/skills/commitpushpr/package.json +0 -33
- package/skills/commitpushpr/src/index.ts +0 -34
- package/skills/commitpushpr/tsconfig.json +0 -17
- package/skills/compress-video/CLAUDE.md +0 -9
- package/skills/compress-video/SKILL.md +0 -79
- package/skills/compress-video/package.json +0 -23
- package/skills/compress-video/src/index.ts +0 -473
- package/skills/compress-video/tsconfig.json +0 -11
- package/skills/contract-review-report/SKILL.md +0 -52
- package/skills/contract-review-report/package.json +0 -10
- package/skills/customer-feedback-report/SKILL.md +0 -52
- package/skills/customer-feedback-report/package.json +0 -10
- package/skills/dashboard-builder/CLAUDE.md +0 -19
- package/skills/dashboard-builder/package.json +0 -29
- package/skills/dashboard-builder/src/index.ts +0 -150
- package/skills/dashboard-builder/tsconfig.json +0 -10
- package/skills/data-anonymizer/CLAUDE.md +0 -19
- package/skills/data-anonymizer/package.json +0 -27
- package/skills/data-anonymizer/src/index.ts +0 -183
- package/skills/data-anonymizer/tsconfig.json +0 -10
- package/skills/database-explorer/CLAUDE.md +0 -19
- package/skills/database-explorer/package.json +0 -29
- package/skills/database-explorer/src/index.ts +0 -95
- package/skills/database-explorer/tsconfig.json +0 -10
- package/skills/diff-viewer/CLAUDE.md +0 -19
- package/skills/diff-viewer/package.json +0 -30
- package/skills/diff-viewer/src/index.ts +0 -164
- package/skills/diff-viewer/tsconfig.json +0 -10
- package/skills/doc-read/SKILL.md +0 -45
- package/skills/doc-read/package.json +0 -29
- package/skills/doc-read/src/index.ts +0 -324
- package/skills/doc-read/tsconfig.json +0 -8
- package/skills/domainpurchase/LICENSE +0 -192
- package/skills/domainpurchase/SKILL.md +0 -29
- package/skills/domainpurchase/package.json +0 -30
- package/skills/domainpurchase/src/index.ts +0 -3
- package/skills/domainpurchase/tsconfig.json +0 -21
- package/skills/email-sequence/SKILL.md +0 -53
- package/skills/email-sequence/package.json +0 -10
- package/skills/experiment-power-calculator/CLAUDE.md +0 -19
- package/skills/experiment-power-calculator/package.json +0 -29
- package/skills/experiment-power-calculator/src/index.ts +0 -86
- package/skills/experiment-power-calculator/tsconfig.json +0 -10
- package/skills/extract-frames/CLAUDE.md +0 -19
- package/skills/extract-frames/package.json +0 -27
- package/skills/extract-frames/src/index.ts +0 -616
- package/skills/extract-frames/tsconfig.json +0 -10
- package/skills/file-organizer/CLAUDE.md +0 -19
- package/skills/file-organizer/package.json +0 -27
- package/skills/file-organizer/src/index.ts +0 -91
- package/skills/file-organizer/tsconfig.json +0 -10
- package/skills/folder-tree/CLAUDE.md +0 -19
- package/skills/folder-tree/package.json +0 -29
- package/skills/folder-tree/src/index.ts +0 -568
- package/skills/folder-tree/tsconfig.json +0 -10
- package/skills/form-filler/CLAUDE.md +0 -19
- package/skills/form-filler/package.json +0 -29
- package/skills/form-filler/src/index.ts +0 -81
- package/skills/form-filler/tsconfig.json +0 -10
- package/skills/generate-api-client/CLAUDE.md +0 -19
- package/skills/generate-api-client/package.json +0 -29
- package/skills/generate-api-client/src/generator.ts +0 -47
- package/skills/generate-api-client/src/index.ts +0 -92
- package/skills/generate-api-client/src/logger.ts +0 -34
- package/skills/generate-api-client/src/python-generator.ts +0 -245
- package/skills/generate-api-client/src/spec-loader.ts +0 -48
- package/skills/generate-api-client/src/type-mappers.ts +0 -79
- package/skills/generate-api-client/src/types.ts +0 -76
- package/skills/generate-api-client/src/typescript-generator.ts +0 -247
- package/skills/generate-api-client/tsconfig.json +0 -10
- package/skills/generate-chart/CLAUDE.md +0 -19
- package/skills/generate-chart/package.json +0 -27
- package/skills/generate-chart/src/index.ts +0 -510
- package/skills/generate-chart/tsconfig.json +0 -10
- package/skills/generate-dockerfile/CLAUDE.md +0 -19
- package/skills/generate-dockerfile/package.json +0 -27
- package/skills/generate-dockerfile/src/cli.ts +0 -78
- package/skills/generate-dockerfile/src/dockerfile-templates.ts +0 -392
- package/skills/generate-dockerfile/src/index.ts +0 -81
- package/skills/generate-dockerfile/src/logger.ts +0 -30
- package/skills/generate-dockerfile/src/project-detection.ts +0 -68
- package/skills/generate-dockerfile/src/support-files.ts +0 -171
- package/skills/generate-dockerfile/src/types.ts +0 -29
- package/skills/generate-dockerfile/tsconfig.json +0 -10
- package/skills/generate-env/CLAUDE.md +0 -19
- package/skills/generate-env/package.json +0 -29
- package/skills/generate-env/src/cli.ts +0 -85
- package/skills/generate-env/src/detection.ts +0 -161
- package/skills/generate-env/src/env-data.ts +0 -66
- package/skills/generate-env/src/generators.ts +0 -240
- package/skills/generate-env/src/index.ts +0 -120
- package/skills/generate-env/src/runtime.ts +0 -30
- package/skills/generate-env/src/types.ts +0 -32
- package/skills/generate-env/tsconfig.json +0 -10
- package/skills/generate-favicon/CLAUDE.md +0 -19
- package/skills/generate-favicon/package.json +0 -29
- package/skills/generate-favicon/src/index.ts +0 -421
- package/skills/generate-favicon/tsconfig.json +0 -10
- package/skills/generate-qrcode/CLAUDE.md +0 -19
- package/skills/generate-qrcode/package.json +0 -30
- package/skills/generate-qrcode/src/index.ts +0 -584
- package/skills/generate-qrcode/tsconfig.json +0 -10
- package/skills/generate-resume/CLAUDE.md +0 -19
- package/skills/generate-resume/package.json +0 -27
- package/skills/generate-resume/src/cli.ts +0 -157
- package/skills/generate-resume/src/index.ts +0 -178
- package/skills/generate-resume/src/parsers.ts +0 -95
- package/skills/generate-resume/src/renderers.ts +0 -538
- package/skills/generate-resume/src/security.ts +0 -39
- package/skills/generate-resume/src/types.ts +0 -86
- package/skills/generate-resume/tsconfig.json +0 -10
- package/skills/generate-sitemap/CLAUDE.md +0 -19
- package/skills/generate-sitemap/package.json +0 -27
- package/skills/generate-sitemap/src/index.ts +0 -626
- package/skills/generate-sitemap/tsconfig.json +0 -10
- package/skills/gif-maker/CLAUDE.md +0 -19
- package/skills/gif-maker/package.json +0 -30
- package/skills/gif-maker/src/index.ts +0 -600
- package/skills/gif-maker/tsconfig.json +0 -10
- package/skills/hook/LICENSE +0 -192
- package/skills/hook/README.md +0 -74
- package/skills/hook/SKILL.md +0 -85
- package/skills/hook/bunfig.toml +0 -5
- package/skills/hook/package.json +0 -28
- package/skills/hook/src/commands/create.ts +0 -112
- package/skills/hook/src/commands/events.ts +0 -37
- package/skills/hook/src/commands/validate.ts +0 -117
- package/skills/hook/src/index.ts +0 -118
- package/skills/hook/src/templates/root.ts +0 -196
- package/skills/hook/src/templates/source.ts +0 -647
- package/skills/hook/tsconfig.json +0 -18
- package/skills/http-server/CLAUDE.md +0 -19
- package/skills/http-server/package.json +0 -29
- package/skills/http-server/src/index.ts +0 -51
- package/skills/http-server/tsconfig.json +0 -10
- package/skills/implementation/LICENSE +0 -192
- package/skills/implementation/README.md +0 -53
- package/skills/implementation/SKILL.md +0 -57
- package/skills/implementation/bunfig.toml +0 -5
- package/skills/implementation/package.json +0 -28
- package/skills/implementation/src/commands/create.ts +0 -187
- package/skills/implementation/src/index.ts +0 -62
- package/skills/implementation/tsconfig.json +0 -18
- package/skills/implementation-plan/CLAUDE.md +0 -19
- package/skills/implementation-plan/package.json +0 -29
- package/skills/implementation-plan/src/index.ts +0 -520
- package/skills/implementation-plan/tsconfig.json +0 -10
- package/skills/implementation-todo/CLAUDE.md +0 -19
- package/skills/implementation-todo/package.json +0 -29
- package/skills/implementation-todo/src/index.ts +0 -429
- package/skills/implementation-todo/tsconfig.json +0 -10
- package/skills/invoice/.env.example +0 -3
- package/skills/invoice/CLAUDE.md +0 -31
- package/skills/invoice/LICENSE +0 -192
- package/skills/invoice/README.md +0 -70
- package/skills/invoice/package.json +0 -26
- package/skills/invoice/src/commands/companies.ts +0 -202
- package/skills/invoice/src/commands/config.ts +0 -132
- package/skills/invoice/src/commands/generate.ts +0 -177
- package/skills/invoice/src/commands/invoices.ts +0 -218
- package/skills/invoice/src/index.ts +0 -3
- package/skills/invoice/src/lib/api.ts +0 -124
- package/skills/invoice/src/lib/storage.ts +0 -171
- package/skills/invoice/src/types/index.ts +0 -86
- package/skills/invoice/src/utils/logger.ts +0 -33
- package/skills/invoice/src/utils/paths.ts +0 -25
- package/skills/invoice/tsconfig.json +0 -23
- package/skills/invoice-reconciliation/SKILL.md +0 -98
- package/skills/invoice-reconciliation/package.json +0 -36
- package/skills/invoice-reconciliation/src/index.ts +0 -743
- package/skills/invoice-reconciliation/tsconfig.json +0 -17
- package/skills/landing-page-pack/SKILL.md +0 -55
- package/skills/landing-page-pack/package.json +0 -10
- package/skills/latex-table-generator/CLAUDE.md +0 -19
- package/skills/latex-table-generator/package.json +0 -29
- package/skills/latex-table-generator/src/index.ts +0 -113
- package/skills/latex-table-generator/tsconfig.json +0 -10
- package/skills/logo-design/SKILL.md +0 -94
- package/skills/logo-design/package.json +0 -35
- package/skills/logo-design/src/cli.ts +0 -132
- package/skills/logo-design/src/constants.ts +0 -5
- package/skills/logo-design/src/docs.ts +0 -102
- package/skills/logo-design/src/geometry.ts +0 -324
- package/skills/logo-design/src/index.ts +0 -212
- package/skills/logo-design/src/palette.ts +0 -258
- package/skills/logo-design/src/types.ts +0 -50
- package/skills/logo-design/tsconfig.json +0 -17
- package/skills/lorem-generator/CLAUDE.md +0 -19
- package/skills/lorem-generator/package.json +0 -29
- package/skills/lorem-generator/src/index.ts +0 -59
- package/skills/lorem-generator/tsconfig.json +0 -10
- package/skills/managemcp/CLAUDE.md +0 -14
- package/skills/managemcp/README.md +0 -24
- package/skills/managemcp/package.json +0 -16
- package/skills/managemcp/src/index.ts +0 -3
- package/skills/managemcp/tsconfig.json +0 -27
- package/skills/markdown-validator/CLAUDE.md +0 -19
- package/skills/markdown-validator/package.json +0 -29
- package/skills/markdown-validator/src/index.ts +0 -92
- package/skills/markdown-validator/tsconfig.json +0 -10
- package/skills/market-research-report/SKILL.md +0 -51
- package/skills/market-research-report/package.json +0 -10
- package/skills/meeting-pack/SKILL.md +0 -52
- package/skills/meeting-pack/package.json +0 -10
- package/skills/merge-pdfs/CLAUDE.md +0 -19
- package/skills/merge-pdfs/package.json +0 -31
- package/skills/merge-pdfs/src/index.ts +0 -427
- package/skills/merge-pdfs/tsconfig.json +0 -10
- package/skills/migration-plan-pack/SKILL.md +0 -56
- package/skills/migration-plan-pack/package.json +0 -10
- package/skills/monitor/SKILL.md +0 -69
- package/skills/monitor/package.json +0 -33
- package/skills/monitor/src/index.ts +0 -34
- package/skills/monitor/tsconfig.json +0 -17
- package/skills/one-page-website/SKILL.md +0 -128
- package/skills/one-page-website/package.json +0 -34
- package/skills/one-page-website/src/design.ts +0 -336
- package/skills/one-page-website/src/docs.ts +0 -159
- package/skills/one-page-website/src/index.ts +0 -357
- package/skills/one-page-website/src/page.ts +0 -340
- package/skills/one-page-website/src/styles.ts +0 -508
- package/skills/one-page-website/src/types.ts +0 -78
- package/skills/one-page-website/tsconfig.json +0 -17
- package/skills/pdf-generate/CLAUDE.md +0 -19
- package/skills/pdf-generate/SKILL.md +0 -86
- package/skills/pdf-generate/package.json +0 -21
- package/skills/pdf-generate/src/cli.ts +0 -162
- package/skills/pdf-generate/src/html.ts +0 -84
- package/skills/pdf-generate/src/index.ts +0 -62
- package/skills/pdf-generate/src/markdown.ts +0 -27
- package/skills/pdf-generate/src/pdf-writer.ts +0 -78
- package/skills/pdf-generate/src/runtime.ts +0 -34
- package/skills/pdf-generate/src/security.ts +0 -37
- package/skills/pdf-generate/src/templates.ts +0 -311
- package/skills/pdf-generate/src/types.ts +0 -28
- package/skills/pdf-generate/tsconfig.json +0 -16
- package/skills/pdf-to-dataset/SKILL.md +0 -88
- package/skills/pdf-to-dataset/package.json +0 -37
- package/skills/pdf-to-dataset/src/index.ts +0 -790
- package/skills/pdf-to-dataset/tsconfig.json +0 -17
- package/skills/pdf-to-markdown/SKILL.md +0 -81
- package/skills/pdf-to-markdown/package.json +0 -35
- package/skills/pdf-to-markdown/src/index.ts +0 -694
- package/skills/pdf-to-markdown/tsconfig.json +0 -17
- package/skills/performance-audit-report/SKILL.md +0 -49
- package/skills/performance-audit-report/package.json +0 -10
- package/skills/pitch-deck/SKILL.md +0 -51
- package/skills/pitch-deck/package.json +0 -10
- package/skills/product-mockup/SKILL.md +0 -107
- package/skills/product-mockup/package.json +0 -32
- package/skills/product-mockup/src/cli.ts +0 -150
- package/skills/product-mockup/src/design.ts +0 -151
- package/skills/product-mockup/src/docs.ts +0 -134
- package/skills/product-mockup/src/index.ts +0 -182
- package/skills/product-mockup/src/render.ts +0 -407
- package/skills/product-mockup/src/types.ts +0 -66
- package/skills/product-mockup/tsconfig.json +0 -17
- package/skills/proposal-pack/SKILL.md +0 -53
- package/skills/proposal-pack/package.json +0 -10
- package/skills/read-csv/SKILL.md +0 -62
- package/skills/read-csv/package.json +0 -37
- package/skills/read-csv/src/index.ts +0 -356
- package/skills/read-csv/tsconfig.json +0 -17
- package/skills/read-excel/SKILL.md +0 -64
- package/skills/read-excel/package.json +0 -36
- package/skills/read-excel/src/index.ts +0 -266
- package/skills/read-excel/tsconfig.json +0 -17
- package/skills/regex-tester/CLAUDE.md +0 -19
- package/skills/regex-tester/package.json +0 -27
- package/skills/regex-tester/src/index.ts +0 -183
- package/skills/regex-tester/tsconfig.json +0 -10
- package/skills/repo-onboarding-report/SKILL.md +0 -52
- package/skills/repo-onboarding-report/package.json +0 -10
- package/skills/scancommitpr/SKILL.md +0 -178
- package/skills/scancommitpr/package.json +0 -34
- package/skills/scancommitpr/src/index.ts +0 -44
- package/skills/scancommitpr/tsconfig.json +0 -13
- package/skills/scancommitpush/SKILL.md +0 -174
- package/skills/scancommitpush/package.json +0 -32
- package/skills/scancommitpush/src/index.ts +0 -44
- package/skills/scancommitpush/tsconfig.json +0 -13
- package/skills/scientific-figure-check/CLAUDE.md +0 -19
- package/skills/scientific-figure-check/package.json +0 -29
- package/skills/scientific-figure-check/src/index.ts +0 -83
- package/skills/scientific-figure-check/tsconfig.json +0 -10
- package/skills/security-audit/CLAUDE.md +0 -19
- package/skills/security-audit/package.json +0 -27
- package/skills/security-audit/src/index.ts +0 -145
- package/skills/security-audit/tsconfig.json +0 -10
- package/skills/security-audit-report/SKILL.md +0 -52
- package/skills/security-audit-report/package.json +0 -10
- package/skills/seo-content-pack/SKILL.md +0 -54
- package/skills/seo-content-pack/package.json +0 -10
- package/skills/siteanalyze/SKILL.md +0 -25
- package/skills/siteanalyze/package.json +0 -27
- package/skills/siteanalyze/src/index.ts +0 -592
- package/skills/slide-deck-generator/SKILL.md +0 -93
- package/skills/slide-deck-generator/package.json +0 -38
- package/skills/slide-deck-generator/src/cli.ts +0 -133
- package/skills/slide-deck-generator/src/index.ts +0 -148
- package/skills/slide-deck-generator/src/model.ts +0 -307
- package/skills/slide-deck-generator/src/pptx.ts +0 -143
- package/skills/slide-deck-generator/src/render.ts +0 -248
- package/skills/slide-deck-generator/src/types.ts +0 -114
- package/skills/slide-deck-generator/src/utils.ts +0 -53
- package/skills/slide-deck-generator/tsconfig.json +0 -17
- package/skills/social-content-calendar/SKILL.md +0 -54
- package/skills/social-content-calendar/package.json +0 -10
- package/skills/split-pdf/CLAUDE.md +0 -19
- package/skills/split-pdf/package.json +0 -30
- package/skills/split-pdf/src/index.ts +0 -301
- package/skills/split-pdf/tsconfig.json +0 -10
- package/skills/statistical-test-selector/CLAUDE.md +0 -19
- package/skills/statistical-test-selector/package.json +0 -27
- package/skills/statistical-test-selector/src/index.ts +0 -75
- package/skills/statistical-test-selector/tsconfig.json +0 -10
- package/skills/test-suite-generator/SKILL.md +0 -51
- package/skills/test-suite-generator/package.json +0 -10
- package/skills/tmux-session/SKILL.md +0 -109
- package/skills/tmux-session/package.json +0 -33
- package/skills/tmux-session/src/index.ts +0 -34
- package/skills/tmux-session/tsconfig.json +0 -17
- package/skills/todos-plan/SKILL.md +0 -363
- package/skills/todos-plan/agents/openai.yaml +0 -4
- package/skills/todos-plan/package.json +0 -9
- package/skills/todos-plan/src/index.ts +0 -68
- package/skills/tsconfig.base.json +0 -12
- package/skills/validate-config/CLAUDE.md +0 -19
- package/skills/validate-config/package.json +0 -29
- package/skills/validate-config/src/index.ts +0 -56
- package/skills/validate-config/tsconfig.json +0 -10
- package/skills/video-downloader/CLAUDE.md +0 -19
- package/skills/video-downloader/package.json +0 -29
- package/skills/video-downloader/src/index.ts +0 -561
- package/skills/video-downloader/tsconfig.json +0 -10
- package/skills/video-highlight-pack/SKILL.md +0 -54
- package/skills/video-highlight-pack/package.json +0 -10
- package/skills/watermark/CLAUDE.md +0 -19
- package/skills/watermark/package.json +0 -32
- package/skills/watermark/src/index.ts +0 -587
- package/skills/watermark/tsconfig.json +0 -10
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Legacy install command boundary for bundled skill packages.
|
|
3
|
-
*
|
|
4
|
-
* Per-skill packages must not write into agent-native skill directories.
|
|
5
|
-
* The root Skills CLI renders skills into agent-native skill directories.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
interface SkillMeta {
|
|
9
|
-
name: string;
|
|
10
|
-
description: string;
|
|
11
|
-
version: string;
|
|
12
|
-
commands: string;
|
|
13
|
-
requiredEnvVars?: string[];
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export async function handleInstallCommand(meta: SkillMeta, args: string[]): Promise<boolean> {
|
|
17
|
-
const command = args[0];
|
|
18
|
-
const assistant = args[1];
|
|
19
|
-
|
|
20
|
-
if (command !== "install" && command !== "uninstall") {
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (!assistant || !["claude", "codex", "windsurf", "cursor"].includes(assistant)) {
|
|
25
|
-
console.error("Direct per-skill installs are disabled.");
|
|
26
|
-
console.error("Use: skills render");
|
|
27
|
-
process.exit(1);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (command === "install") {
|
|
31
|
-
console.error(`Direct installs for ${meta.name} are disabled.`);
|
|
32
|
-
} else {
|
|
33
|
-
console.error(`Direct uninstalls for ${meta.name} are disabled.`);
|
|
34
|
-
}
|
|
35
|
-
console.error("Use: skills render");
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
package/skills/_common/vision.ts
DELETED
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified vision client for AI providers.
|
|
3
|
-
* Follows @hasna/connectors pattern — auto-detects from env vars.
|
|
4
|
-
* Providers: anthropic, openai, xai, gemini
|
|
5
|
-
*
|
|
6
|
-
* Uses built-in fetch only — no external SDK dependencies.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export type VisionProvider = "anthropic" | "openai" | "xai" | "gemini";
|
|
10
|
-
|
|
11
|
-
export interface VisionOptions {
|
|
12
|
-
provider?: VisionProvider;
|
|
13
|
-
model?: string;
|
|
14
|
-
maxTokens?: number;
|
|
15
|
-
systemPrompt?: string;
|
|
16
|
-
jsonMode?: boolean; // wrap prompt to request JSON response
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface VisionResult {
|
|
20
|
-
text: string;
|
|
21
|
-
provider: VisionProvider;
|
|
22
|
-
model: string;
|
|
23
|
-
inputTokens?: number;
|
|
24
|
-
outputTokens?: number;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// Default models per provider (vision-capable)
|
|
28
|
-
export const DEFAULT_MODELS: Record<VisionProvider, string> = {
|
|
29
|
-
anthropic: "claude-sonnet-4-6",
|
|
30
|
-
openai: "gpt-4o",
|
|
31
|
-
xai: "grok-2-vision-1212",
|
|
32
|
-
gemini: "gemini-2.0-flash",
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
// API key env vars per provider
|
|
36
|
-
export const API_KEY_VARS: Record<VisionProvider, string> = {
|
|
37
|
-
anthropic: "ANTHROPIC_API_KEY",
|
|
38
|
-
openai: "OPENAI_API_KEY",
|
|
39
|
-
xai: "XAI_API_KEY",
|
|
40
|
-
gemini: "GEMINI_API_KEY",
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
// Base URLs
|
|
44
|
-
const BASE_URLS: Record<VisionProvider, string> = {
|
|
45
|
-
anthropic: "https://api.anthropic.com/v1/messages",
|
|
46
|
-
openai: "https://api.openai.com/v1/chat/completions",
|
|
47
|
-
xai: "https://api.x.ai/v1/chat/completions",
|
|
48
|
-
gemini: "https://generativelanguage.googleapis.com/v1beta/models",
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Auto-detect provider from env vars.
|
|
53
|
-
* Priority: ANTHROPIC_API_KEY → OPENAI_API_KEY → XAI_API_KEY → GEMINI_API_KEY
|
|
54
|
-
*/
|
|
55
|
-
export function detectProvider(): VisionProvider | null {
|
|
56
|
-
const order: VisionProvider[] = ["anthropic", "openai", "xai", "gemini"];
|
|
57
|
-
for (const provider of order) {
|
|
58
|
-
if (process.env[API_KEY_VARS[provider]]) {
|
|
59
|
-
return provider;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Get API key for a provider. Throws if not set.
|
|
67
|
-
*/
|
|
68
|
-
export function getApiKey(provider: VisionProvider): string {
|
|
69
|
-
const key = process.env[API_KEY_VARS[provider]];
|
|
70
|
-
if (!key) {
|
|
71
|
-
throw new Error(
|
|
72
|
-
`${API_KEY_VARS[provider]} is not set. Run: connectors setup ${provider}`
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
return key;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Strip markdown code fences and JSON.parse.
|
|
80
|
-
* Throws with raw text on failure.
|
|
81
|
-
*/
|
|
82
|
-
export function parseJsonResponse(text: string): unknown {
|
|
83
|
-
let str = text.trim();
|
|
84
|
-
if (str.startsWith("```")) {
|
|
85
|
-
str = str
|
|
86
|
-
.replace(/^```(?:json)?\n?/, "")
|
|
87
|
-
.replace(/\n?```$/, "")
|
|
88
|
-
.trim();
|
|
89
|
-
}
|
|
90
|
-
try {
|
|
91
|
-
return JSON.parse(str);
|
|
92
|
-
} catch {
|
|
93
|
-
throw new Error(
|
|
94
|
-
`Failed to parse response as JSON.\nRaw response:\n${text}`
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Returns all providers that have an API key set.
|
|
101
|
-
*/
|
|
102
|
-
export function listAvailableProviders(): VisionProvider[] {
|
|
103
|
-
return (["anthropic", "openai", "xai", "gemini"] as VisionProvider[]).filter(
|
|
104
|
-
(p) => !!process.env[API_KEY_VARS[p]]
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Returns availability status for all providers.
|
|
110
|
-
*/
|
|
111
|
-
export function getProviderInfo(): Record<
|
|
112
|
-
VisionProvider,
|
|
113
|
-
{ available: boolean; model: string; keyVar: string }
|
|
114
|
-
> {
|
|
115
|
-
return {
|
|
116
|
-
anthropic: {
|
|
117
|
-
available: !!process.env[API_KEY_VARS.anthropic],
|
|
118
|
-
model: DEFAULT_MODELS.anthropic,
|
|
119
|
-
keyVar: API_KEY_VARS.anthropic,
|
|
120
|
-
},
|
|
121
|
-
openai: {
|
|
122
|
-
available: !!process.env[API_KEY_VARS.openai],
|
|
123
|
-
model: DEFAULT_MODELS.openai,
|
|
124
|
-
keyVar: API_KEY_VARS.openai,
|
|
125
|
-
},
|
|
126
|
-
xai: {
|
|
127
|
-
available: !!process.env[API_KEY_VARS.xai],
|
|
128
|
-
model: DEFAULT_MODELS.xai,
|
|
129
|
-
keyVar: API_KEY_VARS.xai,
|
|
130
|
-
},
|
|
131
|
-
gemini: {
|
|
132
|
-
available: !!process.env[API_KEY_VARS.gemini],
|
|
133
|
-
model: DEFAULT_MODELS.gemini,
|
|
134
|
-
keyVar: API_KEY_VARS.gemini,
|
|
135
|
-
},
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// ============================================================================
|
|
140
|
-
// Provider implementations
|
|
141
|
-
// ============================================================================
|
|
142
|
-
|
|
143
|
-
async function analyzeWithAnthropic(
|
|
144
|
-
imageBase64: string,
|
|
145
|
-
mediaType: string,
|
|
146
|
-
prompt: string,
|
|
147
|
-
model: string,
|
|
148
|
-
options: VisionOptions
|
|
149
|
-
): Promise<VisionResult> {
|
|
150
|
-
const apiKey = getApiKey("anthropic");
|
|
151
|
-
const body: Record<string, unknown> = {
|
|
152
|
-
model,
|
|
153
|
-
max_tokens: options.maxTokens ?? 1024,
|
|
154
|
-
messages: [
|
|
155
|
-
{
|
|
156
|
-
role: "user",
|
|
157
|
-
content: [
|
|
158
|
-
{
|
|
159
|
-
type: "image",
|
|
160
|
-
source: { type: "base64", media_type: mediaType, data: imageBase64 },
|
|
161
|
-
},
|
|
162
|
-
{ type: "text", text: prompt },
|
|
163
|
-
],
|
|
164
|
-
},
|
|
165
|
-
],
|
|
166
|
-
};
|
|
167
|
-
if (options.systemPrompt) {
|
|
168
|
-
body.system = options.systemPrompt;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
const response = await fetch(BASE_URLS.anthropic, {
|
|
172
|
-
method: "POST",
|
|
173
|
-
headers: {
|
|
174
|
-
"x-api-key": apiKey,
|
|
175
|
-
"anthropic-version": "2023-06-01",
|
|
176
|
-
"content-type": "application/json",
|
|
177
|
-
},
|
|
178
|
-
body: JSON.stringify(body),
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
if (!response.ok) {
|
|
182
|
-
const err = await response.text();
|
|
183
|
-
throw new Error(`Anthropic API error ${response.status}: ${err}`);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
const data = (await response.json()) as {
|
|
187
|
-
content: Array<{ type: string; text: string }>;
|
|
188
|
-
usage: { input_tokens: number; output_tokens: number };
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
return {
|
|
192
|
-
text: data.content[0].text,
|
|
193
|
-
provider: "anthropic",
|
|
194
|
-
model,
|
|
195
|
-
inputTokens: data.usage?.input_tokens,
|
|
196
|
-
outputTokens: data.usage?.output_tokens,
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
async function analyzeWithOpenAICompat(
|
|
201
|
-
provider: "openai" | "xai",
|
|
202
|
-
imageBase64: string,
|
|
203
|
-
mediaType: string,
|
|
204
|
-
prompt: string,
|
|
205
|
-
model: string,
|
|
206
|
-
options: VisionOptions
|
|
207
|
-
): Promise<VisionResult> {
|
|
208
|
-
const apiKey = getApiKey(provider);
|
|
209
|
-
const messages: unknown[] = [];
|
|
210
|
-
|
|
211
|
-
if (options.systemPrompt) {
|
|
212
|
-
messages.push({ role: "system", content: options.systemPrompt });
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
messages.push({
|
|
216
|
-
role: "user",
|
|
217
|
-
content: [
|
|
218
|
-
{
|
|
219
|
-
type: "image_url",
|
|
220
|
-
image_url: {
|
|
221
|
-
url: `data:${mediaType};base64,${imageBase64}`,
|
|
222
|
-
detail: "high",
|
|
223
|
-
},
|
|
224
|
-
},
|
|
225
|
-
{ type: "text", text: prompt },
|
|
226
|
-
],
|
|
227
|
-
});
|
|
228
|
-
|
|
229
|
-
const body = {
|
|
230
|
-
model,
|
|
231
|
-
max_tokens: options.maxTokens ?? 1024,
|
|
232
|
-
messages,
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
const response = await fetch(BASE_URLS[provider], {
|
|
236
|
-
method: "POST",
|
|
237
|
-
headers: {
|
|
238
|
-
Authorization: `Bearer ${apiKey}`,
|
|
239
|
-
"content-type": "application/json",
|
|
240
|
-
},
|
|
241
|
-
body: JSON.stringify(body),
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
if (!response.ok) {
|
|
245
|
-
const err = await response.text();
|
|
246
|
-
throw new Error(
|
|
247
|
-
`${provider.toUpperCase()} API error ${response.status}: ${err}`
|
|
248
|
-
);
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
const data = (await response.json()) as {
|
|
252
|
-
choices: Array<{ message: { content: string } }>;
|
|
253
|
-
usage: { prompt_tokens: number; completion_tokens: number };
|
|
254
|
-
};
|
|
255
|
-
|
|
256
|
-
return {
|
|
257
|
-
text: data.choices[0].message.content,
|
|
258
|
-
provider,
|
|
259
|
-
model,
|
|
260
|
-
inputTokens: data.usage?.prompt_tokens,
|
|
261
|
-
outputTokens: data.usage?.completion_tokens,
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
async function analyzeWithGemini(
|
|
266
|
-
imageBase64: string,
|
|
267
|
-
mediaType: string,
|
|
268
|
-
prompt: string,
|
|
269
|
-
model: string,
|
|
270
|
-
options: VisionOptions
|
|
271
|
-
): Promise<VisionResult> {
|
|
272
|
-
const apiKey = getApiKey("gemini");
|
|
273
|
-
const url = `${BASE_URLS.gemini}/${model}:generateContent?key=${apiKey}`;
|
|
274
|
-
|
|
275
|
-
const body: Record<string, unknown> = {
|
|
276
|
-
contents: [
|
|
277
|
-
{
|
|
278
|
-
parts: [
|
|
279
|
-
{ inlineData: { mimeType: mediaType, data: imageBase64 } },
|
|
280
|
-
{ text: prompt },
|
|
281
|
-
],
|
|
282
|
-
},
|
|
283
|
-
],
|
|
284
|
-
generationConfig: {
|
|
285
|
-
maxOutputTokens: options.maxTokens ?? 1024,
|
|
286
|
-
...(options.jsonMode ? { responseMimeType: "application/json" } : {}),
|
|
287
|
-
},
|
|
288
|
-
};
|
|
289
|
-
|
|
290
|
-
if (options.systemPrompt) {
|
|
291
|
-
body.systemInstruction = { parts: [{ text: options.systemPrompt }] };
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
const response = await fetch(url, {
|
|
295
|
-
method: "POST",
|
|
296
|
-
headers: { "content-type": "application/json" },
|
|
297
|
-
body: JSON.stringify(body),
|
|
298
|
-
});
|
|
299
|
-
|
|
300
|
-
if (!response.ok) {
|
|
301
|
-
const err = await response.text();
|
|
302
|
-
throw new Error(`Gemini API error ${response.status}: ${err}`);
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
const data = (await response.json()) as {
|
|
306
|
-
candidates: Array<{
|
|
307
|
-
content: { parts: Array<{ text: string }> };
|
|
308
|
-
}>;
|
|
309
|
-
usageMetadata?: { promptTokenCount: number; candidatesTokenCount: number };
|
|
310
|
-
};
|
|
311
|
-
|
|
312
|
-
return {
|
|
313
|
-
text: data.candidates[0].content.parts[0].text,
|
|
314
|
-
provider: "gemini",
|
|
315
|
-
model,
|
|
316
|
-
inputTokens: data.usageMetadata?.promptTokenCount,
|
|
317
|
-
outputTokens: data.usageMetadata?.candidatesTokenCount,
|
|
318
|
-
};
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
// ============================================================================
|
|
322
|
-
// Main entry point
|
|
323
|
-
// ============================================================================
|
|
324
|
-
|
|
325
|
-
/**
|
|
326
|
-
* Analyze an image with a vision-capable model.
|
|
327
|
-
* Auto-detects provider from env vars unless options.provider is specified.
|
|
328
|
-
*/
|
|
329
|
-
export async function analyzeImage(
|
|
330
|
-
imageBase64: string,
|
|
331
|
-
mediaType: string,
|
|
332
|
-
prompt: string,
|
|
333
|
-
options: VisionOptions = {}
|
|
334
|
-
): Promise<VisionResult> {
|
|
335
|
-
const provider = options.provider ?? detectProvider();
|
|
336
|
-
if (!provider) {
|
|
337
|
-
throw new Error(
|
|
338
|
-
"No AI provider API key found. Set one of: ANTHROPIC_API_KEY, OPENAI_API_KEY, XAI_API_KEY, GEMINI_API_KEY"
|
|
339
|
-
);
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
const model = options.model ?? DEFAULT_MODELS[provider];
|
|
343
|
-
const jsonPrompt =
|
|
344
|
-
options.jsonMode
|
|
345
|
-
? `${prompt}\n\nIMPORTANT: Respond ONLY with valid JSON. No markdown, no code fences, no commentary.`
|
|
346
|
-
: prompt;
|
|
347
|
-
|
|
348
|
-
switch (provider) {
|
|
349
|
-
case "anthropic":
|
|
350
|
-
return analyzeWithAnthropic(
|
|
351
|
-
imageBase64,
|
|
352
|
-
mediaType,
|
|
353
|
-
jsonPrompt,
|
|
354
|
-
model,
|
|
355
|
-
options
|
|
356
|
-
);
|
|
357
|
-
case "openai":
|
|
358
|
-
case "xai":
|
|
359
|
-
return analyzeWithOpenAICompat(
|
|
360
|
-
provider,
|
|
361
|
-
imageBase64,
|
|
362
|
-
mediaType,
|
|
363
|
-
jsonPrompt,
|
|
364
|
-
model,
|
|
365
|
-
options
|
|
366
|
-
);
|
|
367
|
-
case "gemini":
|
|
368
|
-
return analyzeWithGemini(imageBase64, mediaType, jsonPrompt, model, options);
|
|
369
|
-
default: {
|
|
370
|
-
const _exhaustive: never = provider;
|
|
371
|
-
throw new Error(`Unknown provider: ${_exhaustive}`);
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ad-creative-pack
|
|
3
|
-
description: Generate paid-ad copy, creative concepts, image prompts, audience angles, and test matrices.
|
|
4
|
-
kind: instruction
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Ad Creative Pack
|
|
8
|
-
|
|
9
|
-
Generate a paid-ad launch package for Meta, Google, and LinkedIn.
|
|
10
|
-
|
|
11
|
-
## Requirements
|
|
12
|
-
|
|
13
|
-
None. This is an instruction skill: it is prose an agent follows, so it needs no
|
|
14
|
-
credentials, no network access, and no local runtime.
|
|
15
|
-
|
|
16
|
-
## Usage
|
|
17
|
-
|
|
18
|
-
Ask an agent for the deliverables below and give it the inputs. Reading this file
|
|
19
|
-
IS the invocation; `skills run` refuses instruction skills on purpose.
|
|
20
|
-
|
|
21
|
-
## Inputs
|
|
22
|
-
|
|
23
|
-
| Input | Description | Default |
|
|
24
|
-
|--------|-------------|---------|
|
|
25
|
-
| `product` | Product, service, or campaign brief. Positional text also works. | required |
|
|
26
|
-
| `audience` | Target buyer or segment. | software teams |
|
|
27
|
-
| `offer` | Campaign promise or offer. | derived from product |
|
|
28
|
-
| `goal` | Conversion goal. | book demos |
|
|
29
|
-
| `platforms` | Comma-separated platforms. | Meta, Google, LinkedIn |
|
|
30
|
-
| `tone` | `direct`, `premium`, `friendly`, or `technical`. | direct |
|
|
31
|
-
|
|
32
|
-
## Deliverables
|
|
33
|
-
|
|
34
|
-
- `platform-copy.md`
|
|
35
|
-
- `ad-copy.json`
|
|
36
|
-
- `creative-concepts.md`
|
|
37
|
-
- `image-prompts.md`
|
|
38
|
-
- `audience-angles.csv`
|
|
39
|
-
- `test-matrix.csv`
|
|
40
|
-
- `launch-checklist.md`
|
|
41
|
-
- `manifest.json`
|
|
42
|
-
|
|
43
|
-
## Method
|
|
44
|
-
|
|
45
|
-
1. Restate the offer, audience and platform mix in one line, and name the single
|
|
46
|
-
conversion action every asset drives toward.
|
|
47
|
-
2. Draft 3-5 distinct creative concepts. Each needs a different *angle* (pain,
|
|
48
|
-
aspiration, proof, novelty, objection), not a different adjective.
|
|
49
|
-
3. For each platform, write copy to that platform's real limits — headline and
|
|
50
|
-
primary text lengths differ, so do not reuse one block everywhere.
|
|
51
|
-
4. Write image prompts as briefs a designer or an image model could act on:
|
|
52
|
-
subject, composition, mood, colour, text placement.
|
|
53
|
-
5. Build the test matrix so exactly one variable changes per row; a matrix that
|
|
54
|
-
varies two things at once cannot attribute a win.
|
|
55
|
-
6. Close with a launch checklist covering tracking, naming, and budget split.
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# analyze-data
|
|
2
|
-
|
|
3
|
-
Data science insights for CSV and JSON.
|
|
4
|
-
|
|
5
|
-
## Development
|
|
6
|
-
|
|
7
|
-
- Runtime: Bun
|
|
8
|
-
- Use `bun install` to install dependencies
|
|
9
|
-
- Use `bun run dev` to run in development
|
|
10
|
-
- Use `bun run build` to build for production
|
|
11
|
-
|
|
12
|
-
## Structure
|
|
13
|
-
|
|
14
|
-
- `src/` - Source code
|
|
15
|
-
- `bin/cli.ts` - CLI entry point using Commander.js
|
|
16
|
-
- `SKILL.md` - Skill definition and prompts
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: analyze-data
|
|
3
|
-
version: 0.1.0
|
|
4
|
-
description: Instant data science insights for CSV and JSON files with statistical summaries, quality audits, and trend detection
|
|
5
|
-
author: Hasna
|
|
6
|
-
category: Data & Analytics
|
|
7
|
-
tags:
|
|
8
|
-
- data
|
|
9
|
-
- analytics
|
|
10
|
-
- statistics
|
|
11
|
-
- csv
|
|
12
|
-
- json
|
|
13
|
-
- insights
|
|
14
|
-
- quality-assurance
|
|
15
|
-
credits: 5
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
# Analyze Data
|
|
19
|
-
|
|
20
|
-
Instant data science insights for your CSV and JSON files. Automatically generates comprehensive reports including statistical summaries, data quality audits, correlation matrices, and trend detection without sending your data to external APIs.
|
|
21
|
-
|
|
22
|
-
> **This is a CLI skill.** It requires the `skills` CLI to execute. Install it with `npm install -g @hasna/skills`, then run the commands below.
|
|
23
|
-
|
|
24
|
-
## Features
|
|
25
|
-
|
|
26
|
-
- **Statistical Profiling**: Calculates mean, median, mode, standard deviation, quartiles, and custom percentiles for all numeric columns.
|
|
27
|
-
- **Data Quality Audit**: Detects missing values, duplicates, mixed data types, and outliers to assess dataset health.
|
|
28
|
-
- **Correlation Discovery**: Identifies relationships between variables using Pearson correlation coefficients.
|
|
29
|
-
- **Trend Detection**: Automatically spots time-series patterns, seasonality, and growth trends.
|
|
30
|
-
- **Visualization Ready**: Recommends the best chart types (histograms, line charts, scatter plots) based on data distribution.
|
|
31
|
-
- **Multi-Format Reports**: Exports findings as interactive HTML, structured JSON, or readable Markdown.
|
|
32
|
-
- **Scalable**: Efficiently processes large files using stream processing and sampling options.
|
|
33
|
-
|
|
34
|
-
## Usage
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
skills run analyze-data -- <file-path> [options]
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Options
|
|
41
|
-
|
|
42
|
-
| Option | Description | Default |
|
|
43
|
-
| --------------- | ------------------------------------------------------------ | -------------------- |
|
|
44
|
-
| `--format` | Output format: `markdown`, `json`, or `html` | `markdown` |
|
|
45
|
-
| `--output` | Save report to file path | (prints to console) |
|
|
46
|
-
| `--correlations`| Calculate correlation matrix for numeric columns | `false` |
|
|
47
|
-
| `--outliers` | Detect and report outliers using IQR method | `false` |
|
|
48
|
-
| `--trends` | Analyze trends if time-series data is detected | `false` |
|
|
49
|
-
| `--sample` | Analyze only the first N rows (for large files) | (all rows) |
|
|
50
|
-
| `--percentiles` | Custom percentiles to calculate (comma-separated) | `25,50,75,90,95` |
|
|
51
|
-
| `--verbose` | Show detailed processing logs | `false` |
|
|
52
|
-
|
|
53
|
-
## Examples
|
|
54
|
-
|
|
55
|
-
### Quick Health Check
|
|
56
|
-
```bash
|
|
57
|
-
# Analyze a CSV file and print report to console
|
|
58
|
-
skills run analyze-data -- sales-data.csv
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
### Deep Dive Analysis
|
|
62
|
-
```bash
|
|
63
|
-
# Full analysis with correlations, outliers, and HTML report
|
|
64
|
-
skills run analyze-data -- dataset.csv \
|
|
65
|
-
--correlations \
|
|
66
|
-
--outliers \
|
|
67
|
-
--format html \
|
|
68
|
-
--output report.html
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Large File Sampling
|
|
72
|
-
```bash
|
|
73
|
-
# Quickly analyze the first 10,000 rows of a large dataset
|
|
74
|
-
skills run analyze-data -- huge-log-file.json \
|
|
75
|
-
--sample 10000 \
|
|
76
|
-
--verbose
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### JSON Export for Pipelines
|
|
80
|
-
```bash
|
|
81
|
-
# Generate JSON stats for downstream processing
|
|
82
|
-
skills run analyze-data -- metrics.json \
|
|
83
|
-
--format json \
|
|
84
|
-
--output analysis.json
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
## Report Sections
|
|
88
|
-
|
|
89
|
-
1. **Dataset Overview**: File size, row/column counts, memory usage.
|
|
90
|
-
2. **Column Analysis**: Data types, unique values, null counts, and sample data.
|
|
91
|
-
3. **Statistical Summary**: Detailed metrics for numeric columns (mean, std dev, etc.).
|
|
92
|
-
4. **Data Quality**: Quality score (0-100), missing data summary, and duplicate detection.
|
|
93
|
-
5. **Correlations**: (Optional) Matrix of relationships between variables.
|
|
94
|
-
6. **Trends**: (Optional) Time-series patterns and anomalies.
|
|
95
|
-
7. **Visualization Recommendations**: Suggested charts for exploring the data.
|
|
96
|
-
8. **Key Insights**: Auto-generated observations about the dataset.
|
|
97
|
-
|
|
98
|
-
## Supported Formats
|
|
99
|
-
|
|
100
|
-
- **CSV**: Standard comma-separated, TSV, and custom delimiters.
|
|
101
|
-
- **JSON**: Arrays of objects or objects containing data arrays.
|
|
102
|
-
|
|
103
|
-
## Performance
|
|
104
|
-
|
|
105
|
-
- **Small (<10MB)**: Instant analysis.
|
|
106
|
-
- **Medium (10-100MB)**: 2-10 seconds.
|
|
107
|
-
- **Large (>100MB)**: Use `--sample` for best performance.
|
|
108
|
-
|
|
109
|
-
## Requirements
|
|
110
|
-
|
|
111
|
-
- Bun runtime.
|
|
112
|
-
- No external API keys required (runs locally).
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "analyze-data",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"description": "Data science insights for CSV and JSON",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"analyze-data": "./src/index.ts"
|
|
8
|
-
},
|
|
9
|
-
"scripts": {
|
|
10
|
-
"dev": "bun run src/index.ts",
|
|
11
|
-
"build": "bun build src/index.ts --outdir dist --target node",
|
|
12
|
-
"start": "bun run src/index.ts"
|
|
13
|
-
},
|
|
14
|
-
"dependencies": {},
|
|
15
|
-
"devDependencies": {
|
|
16
|
-
"@types/bun": "latest",
|
|
17
|
-
"typescript": "^5.7.0"
|
|
18
|
-
},
|
|
19
|
-
"publishConfig": {
|
|
20
|
-
"registry": "https://registry.npmjs.org",
|
|
21
|
-
"access": "restricted"
|
|
22
|
-
}
|
|
23
|
-
}
|