@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,49 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: performance-audit-report
|
|
3
|
-
description: Generate performance audit reports for web apps, APIs, or SaaS surfaces with metrics, findings, budgets, remediation plans, and manifest metadata.
|
|
4
|
-
kind: instruction
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Performance Audit Report
|
|
8
|
-
|
|
9
|
-
Generate a performance audit package from a URL, repo notes, trace summary, or product brief. Hosted runs can gather richer measurements, while local direct execution produces deterministic artifacts for validation.
|
|
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
|
-
| `target` | App URL, route, repo path, or service name. | optional |
|
|
26
|
-
| `notes` | Performance notes, metrics, trace summary, or constraints. Positional text also works. | optional |
|
|
27
|
-
| `app` | Application or product name. | Performance Target |
|
|
28
|
-
| `surface` | `web`, `api`, `mobile`, or `worker`. | web |
|
|
29
|
-
| `budget` | `strict`, `balanced`, or `growth`. | balanced |
|
|
30
|
-
|
|
31
|
-
## Deliverables
|
|
32
|
-
|
|
33
|
-
- `performance-audit-report.md`
|
|
34
|
-
- `findings.csv`
|
|
35
|
-
- `performance-budget.json`
|
|
36
|
-
- `remediation-plan.md`
|
|
37
|
-
- `metrics.json`
|
|
38
|
-
- `manifest.json`
|
|
39
|
-
|
|
40
|
-
## Method
|
|
41
|
-
|
|
42
|
-
1. State what evidence you actually have. If no measurements were supplied, say
|
|
43
|
-
so — an audit that presents guesses as measurements is worse than none.
|
|
44
|
-
2. Establish the budget before the findings: target metrics and thresholds.
|
|
45
|
-
3. Order findings by user-perceived impact, not by how easy they are to describe.
|
|
46
|
-
4. For each finding, give the mechanism (why it is slow), not just the symptom.
|
|
47
|
-
5. Attach an estimated saving and a confidence level to each recommendation.
|
|
48
|
-
6. Separate quick wins from structural work, and say what must be measured again
|
|
49
|
-
after each change to confirm it worked.
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pitch-deck
|
|
3
|
-
description: Generate investor or sales pitch deck packages with PPTX, PDF, notes, and design direction.
|
|
4
|
-
kind: instruction
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Pitch Deck
|
|
8
|
-
|
|
9
|
-
Generate investor or sales deck packages from a short brief.
|
|
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
|
-
| `brief` | Company, product, offer, or campaign brief. Positional text also works. | required |
|
|
26
|
-
| `company` | Company or product name. | Company |
|
|
27
|
-
| `audience` | `investors`, `sales`, or `internal`. | investors |
|
|
28
|
-
| `slides` | Number of slides, 5-15. | 10 |
|
|
29
|
-
| `tone` | `concise`, `bold`, or `technical`. | concise |
|
|
30
|
-
|
|
31
|
-
## Deliverables
|
|
32
|
-
|
|
33
|
-
- `deck.md`
|
|
34
|
-
- `slides.json`
|
|
35
|
-
- `speaker-notes.md`
|
|
36
|
-
- `design-direction.md`
|
|
37
|
-
- `manifest.json`
|
|
38
|
-
|
|
39
|
-
## Method
|
|
40
|
-
|
|
41
|
-
1. Fix the narrative before the slides: problem, why now, what changes, why you.
|
|
42
|
-
A deck is an argument with pictures, not a list of topics.
|
|
43
|
-
2. One idea per slide, stated in the headline. If the headline is a noun phrase
|
|
44
|
-
("Market"), rewrite it as the claim ("The market reprices every 18 months").
|
|
45
|
-
3. Put the number that matters on the slide, with its source and period.
|
|
46
|
-
4. Order for a live read: the appendix carries the detail, the body carries the
|
|
47
|
-
argument.
|
|
48
|
-
5. Write speaker notes as what to say, including the transition into the next slide.
|
|
49
|
-
6. Give design direction (hierarchy, palette, chart style) as instructions a
|
|
50
|
-
designer can follow. For rendered .pdf/.pptx files, hand `slides.json` to the
|
|
51
|
-
`slide-deck-generator` skill, which renders binaries locally.
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: product-mockup
|
|
3
|
-
description: Generate parametric SVG product mockup frames — browser chrome, phone and laptop devices, or an analytics dashboard — plus a scene plan, asset metadata, usage notes, and written image prompts.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Product Mockup
|
|
7
|
-
|
|
8
|
-
Draw real product mockup frames locally as SVG geometry. Browser chrome with a
|
|
9
|
-
tab bar and URL pill, a phone or laptop bezel, or a full dashboard layout with
|
|
10
|
-
KPI cards, charts, and a table — all composed from parameters, not from an image
|
|
11
|
-
model.
|
|
12
|
-
|
|
13
|
-
The package also ships `image-prompts.md`: written prompts you can paste into
|
|
14
|
-
whichever image tool you use. This skill deliberately does not call one, so it
|
|
15
|
-
needs no keys and no network.
|
|
16
|
-
|
|
17
|
-
## Requirements
|
|
18
|
-
|
|
19
|
-
- Bun (the skill runs as `bun run src/index.ts`).
|
|
20
|
-
- No API keys, no network access, no environment variables.
|
|
21
|
-
- No runtime dependencies. `bun install` in this directory only pulls dev types.
|
|
22
|
-
- Optional for raster export: any SVG renderer on your machine
|
|
23
|
-
(`rsvg-convert`, `inkscape`, or a browser's print-to-PNG).
|
|
24
|
-
|
|
25
|
-
## Usage
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
# browser frame, three variants
|
|
29
|
-
skills run product-mockup -- "Usage-based billing dashboard" --scene browser -n 3
|
|
30
|
-
|
|
31
|
-
# dashboard scene with a locked brand accent
|
|
32
|
-
skills run product-mockup -- --product "MeterKit" --scene dashboard --accent "#2E86C1"
|
|
33
|
-
|
|
34
|
-
# phone and laptop from one run (device + auto alternates)
|
|
35
|
-
skills run product-mockup -- -p "AI meeting assistant" --scene device -n 2
|
|
36
|
-
|
|
37
|
-
# dark style, custom headline and address bar
|
|
38
|
-
skills run product-mockup -- -p "Relay" --title "Ship faster with Relay" --style noir --url https://relay.dev
|
|
39
|
-
|
|
40
|
-
# machine-readable summary
|
|
41
|
-
skills run product-mockup -- -p "MeterKit" --scene dashboard --json
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Run it directly from the skill directory with `bun run src/index.ts --help`.
|
|
45
|
-
|
|
46
|
-
## Options
|
|
47
|
-
|
|
48
|
-
| Option | Description | Default |
|
|
49
|
-
|--------|-------------|---------|
|
|
50
|
-
| `--product <text>`, `-p` | Product, feature, or campaign. A positional string also works. | required |
|
|
51
|
-
| `--title <text>` | Headline rendered inside the frame. | the product text |
|
|
52
|
-
| `--scene <name>`, `-s` | `browser`, `device`, or `dashboard`. | `browser` |
|
|
53
|
-
| `--device <kind>` | `auto`, `phone`, or `laptop`. Only used when `--scene device`. `auto` alternates per variant. | `auto` |
|
|
54
|
-
| `--variants <1-4>`, `-n` | Number of mockup variants. | `3` |
|
|
55
|
-
| `--style <text>` | Style direction. Matched against keyword presets (below). | `polished SaaS, crisp product UI` |
|
|
56
|
-
| `--audience <text>` | Target audience, recorded in the brief and the prompts. | `software buyers` |
|
|
57
|
-
| `--accent <hex>` | Force the accent color instead of deriving it. | derived from style |
|
|
58
|
-
| `--url <text>` | URL shown in the browser address pill. | `https://example.com` |
|
|
59
|
-
| `--output <dir>`, `-o` | Output directory. | `./product-mockup` |
|
|
60
|
-
| `--json` | Print the run summary as JSON on stdout. | off |
|
|
61
|
-
| `--help` | Show help and exit 0. | |
|
|
62
|
-
| `--version` | Print the version. | |
|
|
63
|
-
|
|
64
|
-
### Style presets
|
|
65
|
-
|
|
66
|
-
`--style` is free text; the first matching keyword wins.
|
|
67
|
-
|
|
68
|
-
| Preset | Triggers on | Look |
|
|
69
|
-
|--------|-------------|------|
|
|
70
|
-
| `polished` (default) | polished, quiet, refined, saas, crisp, restrained, clean | Light neutral, blue accent, 12px radii |
|
|
71
|
-
| `noir` | dark, noir, midnight, night, black | Dark surfaces, violet accent |
|
|
72
|
-
| `warm` | warm, sunset, amber, friendly, human | Light warm neutrals, amber accent, soft radii |
|
|
73
|
-
| `editorial` | editorial, sharp, print, serif, magazine | Light, near-square corners, red accent |
|
|
74
|
-
| `technical` | technical, terminal, developer, mono, engineering | Dark, tight radii, teal accent |
|
|
75
|
-
| `vivid` | vivid, bold, playful, loud, energetic | Light, large radii, magenta accent |
|
|
76
|
-
|
|
77
|
-
The accent hue rotates 26 degrees per variant so a set reads as a family. Pass
|
|
78
|
-
`--accent` to lock it.
|
|
79
|
-
|
|
80
|
-
## Scenes
|
|
81
|
-
|
|
82
|
-
| Scene | Canvas | What is drawn |
|
|
83
|
-
|-------|--------|---------------|
|
|
84
|
-
| `browser` | 1280x800 | Window with traffic lights, three-tab bar, URL pill with lock glyph and toolbar buttons, two-column page body with eyebrow, headline, CTA pair, and a side panel of cards. |
|
|
85
|
-
| `device` + `phone` | 720x1000 | Rounded body with side buttons, notch, status bar, headline, primary button, three content cards, four-item tab bar and home indicator. |
|
|
86
|
-
| `device` + `laptop` | 1280x840 | Bezelled lid with camera dot, in-screen app window with title bar, headline and CTA, bar-chart panel, tapered base with trackpad edge. |
|
|
87
|
-
| `dashboard` | 1440x900 | Six-item sidebar, header with search and avatar, four KPI cards with deltas, bar chart, line chart, and a four-row account table. |
|
|
88
|
-
|
|
89
|
-
## Outputs
|
|
90
|
-
|
|
91
|
-
| File | Contents |
|
|
92
|
-
|------|----------|
|
|
93
|
-
| `variants/variant-NN.svg` | The mockup frame. Named `<g>` layers, `<title>`/`<desc>` for accessibility. |
|
|
94
|
-
| `scene-plan.json` | Scene, resolved design tokens, seed, and notes for every variant. |
|
|
95
|
-
| `asset-metadata.json` | Per file: format, width, height, viewBox, aspect ratio, layer names, accent. |
|
|
96
|
-
| `image-prompts.md` | Prompt plus negative prompt per variant, and a compositing recipe. |
|
|
97
|
-
| `mockup-brief.md` | Product, audience, style interpretation, and what was generated. |
|
|
98
|
-
| `usage-notes.md` | How to edit layers, drop in a real screenshot, and export to PNG. |
|
|
99
|
-
| `manifest.json` | Every file written, with byte sizes and the run inputs. |
|
|
100
|
-
|
|
101
|
-
## Working with the output
|
|
102
|
-
|
|
103
|
-
- Delete the `canvas` layer for a transparent-background export.
|
|
104
|
-
- Replace `page-content` / `app-content` with a real screenshot clipped to the
|
|
105
|
-
`screen` rect; keep the frame hardware on top.
|
|
106
|
-
- Variant geometry is seeded from the product text, scene, style, and index, so
|
|
107
|
-
re-running the same command reproduces the same files exactly.
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "product-mockup",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"private": true,
|
|
5
|
-
"description": "Generate parametric SVG product mockup frames with scene plans, asset metadata, and image prompts",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"main": "src/index.ts",
|
|
8
|
-
"bin": {
|
|
9
|
-
"product-mockup": "src/index.ts"
|
|
10
|
-
},
|
|
11
|
-
"files": [
|
|
12
|
-
"src",
|
|
13
|
-
"SKILL.md",
|
|
14
|
-
"tsconfig.json"
|
|
15
|
-
],
|
|
16
|
-
"keywords": [
|
|
17
|
-
"mockup",
|
|
18
|
-
"svg",
|
|
19
|
-
"product",
|
|
20
|
-
"ui",
|
|
21
|
-
"skill"
|
|
22
|
-
],
|
|
23
|
-
"scripts": {
|
|
24
|
-
"start": "bun run src/index.ts",
|
|
25
|
-
"typecheck": "tsc --noEmit"
|
|
26
|
-
},
|
|
27
|
-
"dependencies": {},
|
|
28
|
-
"devDependencies": {
|
|
29
|
-
"@types/bun": "latest",
|
|
30
|
-
"typescript": "^5.7.0"
|
|
31
|
-
}
|
|
32
|
-
}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import { normalizeHex } from "./design.js";
|
|
2
|
-
import type { CliOptions } from "./types.js";
|
|
3
|
-
|
|
4
|
-
const VERSION = "0.1.0";
|
|
5
|
-
|
|
6
|
-
function printHelp(): void {
|
|
7
|
-
console.log(`product-mockup v${VERSION}
|
|
8
|
-
|
|
9
|
-
Emit parametric SVG product mockup frames. Everything is drawn locally as real
|
|
10
|
-
SVG geometry: no image model, no network access, no API keys. The package also
|
|
11
|
-
includes written image prompts you can hand to an image model yourself.
|
|
12
|
-
|
|
13
|
-
USAGE:
|
|
14
|
-
product-mockup --product <text> [options]
|
|
15
|
-
product-mockup "<product text>" [options]
|
|
16
|
-
|
|
17
|
-
OPTIONS:
|
|
18
|
-
-p, --product <text> Product, feature, or campaign (positional works) [required]
|
|
19
|
-
--title <text> Headline rendered inside the frame [product text]
|
|
20
|
-
-s, --scene <name> browser | device | dashboard [browser]
|
|
21
|
-
--device <kind> auto | phone | laptop (scene=device) [auto]
|
|
22
|
-
-n, --variants <1-4> Number of mockup variants [3]
|
|
23
|
-
--style <text> Style direction keyword or phrase [polished SaaS, crisp product UI]
|
|
24
|
-
--audience <text> Target audience, recorded in the brief [software buyers]
|
|
25
|
-
--accent <hex> Force the accent color (#RRGGBB) [derived from style]
|
|
26
|
-
--url <text> URL shown in the browser address pill [https://example.com]
|
|
27
|
-
-o, --output <dir> Output directory [./product-mockup]
|
|
28
|
-
--json Print the run summary as JSON
|
|
29
|
-
--help Show this help message
|
|
30
|
-
--version Show the current version
|
|
31
|
-
|
|
32
|
-
STYLE KEYWORDS:
|
|
33
|
-
polished (default) | noir/dark | warm | editorial | technical | vivid
|
|
34
|
-
|
|
35
|
-
OUTPUTS:
|
|
36
|
-
variants/variant-NN.svg Real SVG frames, one per variant
|
|
37
|
-
scene-plan.json Scene, tokens, and seed for every variant
|
|
38
|
-
asset-metadata.json Dimensions, viewBox, and layer names per file
|
|
39
|
-
image-prompts.md Text prompts for your own image model
|
|
40
|
-
mockup-brief.md Brief, audience, and style interpretation
|
|
41
|
-
usage-notes.md How to edit, export, and place the frames
|
|
42
|
-
manifest.json Every file written, with byte sizes
|
|
43
|
-
|
|
44
|
-
EXAMPLES:
|
|
45
|
-
product-mockup "Usage-based billing dashboard" --scene dashboard -n 3
|
|
46
|
-
product-mockup --product "AI meeting assistant" --scene device --device phone
|
|
47
|
-
product-mockup -p "MeterKit" --scene browser --style noir --url https://example.com
|
|
48
|
-
`);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export function parseArgs(argv: string[]): CliOptions {
|
|
52
|
-
const options: CliOptions = {
|
|
53
|
-
scene: "browser",
|
|
54
|
-
device: "auto",
|
|
55
|
-
variants: 3,
|
|
56
|
-
style: "polished SaaS, crisp product UI",
|
|
57
|
-
audience: "software buyers",
|
|
58
|
-
url: "https://example.com",
|
|
59
|
-
output: "./product-mockup",
|
|
60
|
-
json: false,
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
for (let i = 0; i < argv.length; i += 1) {
|
|
64
|
-
const arg = argv[i];
|
|
65
|
-
switch (arg) {
|
|
66
|
-
case "--help":
|
|
67
|
-
case "-h":
|
|
68
|
-
printHelp();
|
|
69
|
-
process.exit(0);
|
|
70
|
-
case "--version":
|
|
71
|
-
case "-v":
|
|
72
|
-
console.log(VERSION);
|
|
73
|
-
process.exit(0);
|
|
74
|
-
case "--product":
|
|
75
|
-
case "-p":
|
|
76
|
-
options.product = argv[++i];
|
|
77
|
-
break;
|
|
78
|
-
case "--title":
|
|
79
|
-
options.title = argv[++i];
|
|
80
|
-
break;
|
|
81
|
-
case "--scene":
|
|
82
|
-
case "-s": {
|
|
83
|
-
const value = (argv[++i] ?? "").toLowerCase();
|
|
84
|
-
if (value !== "browser" && value !== "device" && value !== "dashboard") {
|
|
85
|
-
throw new Error(`Invalid --scene value: ${value} (expected browser | device | dashboard)`);
|
|
86
|
-
}
|
|
87
|
-
options.scene = value;
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
case "--device": {
|
|
91
|
-
const value = (argv[++i] ?? "").toLowerCase();
|
|
92
|
-
if (value !== "auto" && value !== "phone" && value !== "laptop") {
|
|
93
|
-
throw new Error(`Invalid --device value: ${value} (expected auto | phone | laptop)`);
|
|
94
|
-
}
|
|
95
|
-
options.device = value;
|
|
96
|
-
break;
|
|
97
|
-
}
|
|
98
|
-
case "--variants":
|
|
99
|
-
case "-n": {
|
|
100
|
-
const value = Number.parseInt(argv[++i] ?? "", 10);
|
|
101
|
-
if (!Number.isFinite(value) || value < 1 || value > 4) {
|
|
102
|
-
throw new Error(`Invalid --variants value: ${argv[i]} (expected 1-4)`);
|
|
103
|
-
}
|
|
104
|
-
options.variants = value;
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
case "--style":
|
|
108
|
-
options.style = argv[++i] ?? options.style;
|
|
109
|
-
break;
|
|
110
|
-
case "--audience":
|
|
111
|
-
options.audience = argv[++i] ?? options.audience;
|
|
112
|
-
break;
|
|
113
|
-
case "--accent": {
|
|
114
|
-
const value = normalizeHex(argv[++i] ?? "");
|
|
115
|
-
if (!value) {
|
|
116
|
-
throw new Error(`Invalid --accent value: ${argv[i]} (expected a hex color such as #2E86C1)`);
|
|
117
|
-
}
|
|
118
|
-
options.accent = value;
|
|
119
|
-
break;
|
|
120
|
-
}
|
|
121
|
-
case "--url":
|
|
122
|
-
options.url = argv[++i] ?? options.url;
|
|
123
|
-
break;
|
|
124
|
-
case "--output":
|
|
125
|
-
case "-o":
|
|
126
|
-
options.output = argv[++i] ?? options.output;
|
|
127
|
-
break;
|
|
128
|
-
case "--json":
|
|
129
|
-
options.json = true;
|
|
130
|
-
break;
|
|
131
|
-
default:
|
|
132
|
-
if (arg.startsWith("-")) {
|
|
133
|
-
throw new Error(`Unknown option: ${arg}`);
|
|
134
|
-
}
|
|
135
|
-
if (!options.product) {
|
|
136
|
-
options.product = arg;
|
|
137
|
-
break;
|
|
138
|
-
}
|
|
139
|
-
throw new Error(`Unexpected argument: ${arg}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
if (!options.product || options.product.trim() === "") {
|
|
144
|
-
throw new Error("Missing required --product <text> argument (a positional description also works)");
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
return options;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
import type { Tokens } from "./types.js";
|
|
2
|
-
|
|
3
|
-
export function fnv1a(input: string): number {
|
|
4
|
-
let hash = 0x811c9dc5;
|
|
5
|
-
for (let i = 0; i < input.length; i += 1) {
|
|
6
|
-
hash ^= input.charCodeAt(i);
|
|
7
|
-
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
8
|
-
}
|
|
9
|
-
return hash >>> 0;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export function mulberry32(seed: number): () => number {
|
|
13
|
-
let a = seed >>> 0;
|
|
14
|
-
return () => {
|
|
15
|
-
a = (a + 0x6d2b79f5) >>> 0;
|
|
16
|
-
let t = a;
|
|
17
|
-
t = Math.imul(t ^ (t >>> 15), t | 1);
|
|
18
|
-
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
|
|
19
|
-
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
/* ------------------------------------------------------------------ */
|
|
24
|
-
/* color + style tokens */
|
|
25
|
-
/* ------------------------------------------------------------------ */
|
|
26
|
-
|
|
27
|
-
function clamp(value: number, min: number, max: number): number {
|
|
28
|
-
return Math.min(max, Math.max(min, value));
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function hslToHex(h: number, s: number, l: number): string {
|
|
32
|
-
const hue = ((h % 360) + 360) % 360;
|
|
33
|
-
const sat = clamp(s, 0, 1);
|
|
34
|
-
const lit = clamp(l, 0, 1);
|
|
35
|
-
const c = (1 - Math.abs(2 * lit - 1)) * sat;
|
|
36
|
-
const x = c * (1 - Math.abs(((hue / 60) % 2) - 1));
|
|
37
|
-
const m = lit - c / 2;
|
|
38
|
-
let rgb: [number, number, number];
|
|
39
|
-
if (hue < 60) rgb = [c, x, 0];
|
|
40
|
-
else if (hue < 120) rgb = [x, c, 0];
|
|
41
|
-
else if (hue < 180) rgb = [0, c, x];
|
|
42
|
-
else if (hue < 240) rgb = [0, x, c];
|
|
43
|
-
else if (hue < 300) rgb = [x, 0, c];
|
|
44
|
-
else rgb = [c, 0, x];
|
|
45
|
-
const toHex = (v: number) =>
|
|
46
|
-
Math.round((v + m) * 255)
|
|
47
|
-
.toString(16)
|
|
48
|
-
.padStart(2, "0")
|
|
49
|
-
.toUpperCase();
|
|
50
|
-
return `#${toHex(rgb[0])}${toHex(rgb[1])}${toHex(rgb[2])}`;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export function normalizeHex(token: string): string | null {
|
|
54
|
-
const match = /^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(token.trim());
|
|
55
|
-
if (!match) return null;
|
|
56
|
-
const body = match[1];
|
|
57
|
-
const full =
|
|
58
|
-
body.length === 3
|
|
59
|
-
? body
|
|
60
|
-
.split("")
|
|
61
|
-
.map((c) => c + c)
|
|
62
|
-
.join("")
|
|
63
|
-
: body;
|
|
64
|
-
return `#${full.toUpperCase()}`;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export interface StylePreset {
|
|
68
|
-
name: string;
|
|
69
|
-
dark: boolean;
|
|
70
|
-
hue: number;
|
|
71
|
-
radius: number;
|
|
72
|
-
keywords: string[];
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const STYLE_PRESETS: StylePreset[] = [
|
|
76
|
-
{ name: "noir", dark: true, hue: 258, radius: 14, keywords: ["dark", "noir", "midnight", "night", "black"] },
|
|
77
|
-
{ name: "warm", dark: false, hue: 24, radius: 18, keywords: ["warm", "sunset", "amber", "friendly", "human"] },
|
|
78
|
-
{ name: "editorial", dark: false, hue: 8, radius: 4, keywords: ["editorial", "sharp", "print", "serif", "magazine"] },
|
|
79
|
-
{ name: "technical", dark: true, hue: 168, radius: 6, keywords: ["technical", "terminal", "developer", "mono", "engineering"] },
|
|
80
|
-
{ name: "vivid", dark: false, hue: 292, radius: 22, keywords: ["vivid", "bold", "playful", "loud", "energetic"] },
|
|
81
|
-
{ name: "polished", dark: false, hue: 222, radius: 12, keywords: ["polished", "quiet", "refined", "saas", "crisp", "restrained", "clean"] },
|
|
82
|
-
];
|
|
83
|
-
|
|
84
|
-
export function selectPreset(style: string): StylePreset {
|
|
85
|
-
const lower = style.toLowerCase();
|
|
86
|
-
for (const preset of STYLE_PRESETS) {
|
|
87
|
-
if (preset.keywords.some((keyword) => lower.includes(keyword))) return preset;
|
|
88
|
-
}
|
|
89
|
-
return STYLE_PRESETS[STYLE_PRESETS.length - 1];
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export function buildTokens(preset: StylePreset, variantIndex: number, accentOverride?: string): Tokens {
|
|
93
|
-
const hue = (preset.hue + variantIndex * 26) % 360;
|
|
94
|
-
const accent = accentOverride ?? hslToHex(hue, preset.dark ? 0.66 : 0.62, preset.dark ? 0.6 : 0.48);
|
|
95
|
-
const accentSoft = hslToHex(hue, preset.dark ? 0.4 : 0.62, preset.dark ? 0.24 : 0.92);
|
|
96
|
-
|
|
97
|
-
if (preset.dark) {
|
|
98
|
-
return {
|
|
99
|
-
name: preset.name,
|
|
100
|
-
background: hslToHex(hue, 0.14, 0.09),
|
|
101
|
-
surface: hslToHex(hue, 0.12, 0.14),
|
|
102
|
-
surfaceAlt: hslToHex(hue, 0.11, 0.19),
|
|
103
|
-
border: hslToHex(hue, 0.1, 0.27),
|
|
104
|
-
text: "#F2F4F8",
|
|
105
|
-
muted: hslToHex(hue, 0.08, 0.62),
|
|
106
|
-
accent,
|
|
107
|
-
accentSoft,
|
|
108
|
-
radius: preset.radius,
|
|
109
|
-
dark: true,
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
return {
|
|
114
|
-
name: preset.name,
|
|
115
|
-
background: hslToHex(hue, 0.28, 0.965),
|
|
116
|
-
surface: "#FFFFFF",
|
|
117
|
-
surfaceAlt: hslToHex(hue, 0.3, 0.975),
|
|
118
|
-
border: hslToHex(hue, 0.18, 0.87),
|
|
119
|
-
text: hslToHex(hue, 0.24, 0.14),
|
|
120
|
-
muted: hslToHex(hue, 0.1, 0.46),
|
|
121
|
-
accent,
|
|
122
|
-
accentSoft,
|
|
123
|
-
radius: preset.radius,
|
|
124
|
-
dark: false,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/* ------------------------------------------------------------------ */
|
|
129
|
-
/* svg helpers */
|
|
130
|
-
/* ------------------------------------------------------------------ */
|
|
131
|
-
|
|
132
|
-
export function xmlEscape(value: string): string {
|
|
133
|
-
return value.replace(/[&<>"']/g, (char) => {
|
|
134
|
-
switch (char) {
|
|
135
|
-
case "&":
|
|
136
|
-
return "&";
|
|
137
|
-
case "<":
|
|
138
|
-
return "<";
|
|
139
|
-
case ">":
|
|
140
|
-
return ">";
|
|
141
|
-
case '"':
|
|
142
|
-
return """;
|
|
143
|
-
default:
|
|
144
|
-
return "'";
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
export const FONT_STACK =
|
|
150
|
-
"'Inter','Helvetica Neue',Helvetica,'Segoe UI',Arial,'DejaVu Sans',sans-serif";
|
|
151
|
-
export const MONO_STACK = "'JetBrains Mono','SF Mono',Menlo,Consolas,'DejaVu Sans Mono',monospace";
|