@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,301 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
import { PDFDocument } from "pdf-lib";
|
|
4
|
-
import * as fs from "fs";
|
|
5
|
-
import * as path from "path";
|
|
6
|
-
import minimist from "minimist";
|
|
7
|
-
|
|
8
|
-
// Types
|
|
9
|
-
interface SplitOptions {
|
|
10
|
-
output: string;
|
|
11
|
-
pages: string;
|
|
12
|
-
chunkSize: number;
|
|
13
|
-
even: boolean;
|
|
14
|
-
odd: boolean;
|
|
15
|
-
first: number | null;
|
|
16
|
-
last: number | null;
|
|
17
|
-
reverse: boolean;
|
|
18
|
-
naming: string;
|
|
19
|
-
startNumber: number;
|
|
20
|
-
padDigits: number;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// Parse command line arguments
|
|
24
|
-
const args = minimist(process.argv.slice(2), {
|
|
25
|
-
string: ["output", "pages", "naming"],
|
|
26
|
-
boolean: ["even", "odd", "reverse", "help"],
|
|
27
|
-
default: {
|
|
28
|
-
output: "./split/",
|
|
29
|
-
pages: "all",
|
|
30
|
-
"chunk-size": 1,
|
|
31
|
-
even: false,
|
|
32
|
-
odd: false,
|
|
33
|
-
reverse: false,
|
|
34
|
-
naming: "page-{n}",
|
|
35
|
-
"start-number": 1,
|
|
36
|
-
"pad-digits": 3,
|
|
37
|
-
},
|
|
38
|
-
alias: {
|
|
39
|
-
o: "output",
|
|
40
|
-
p: "pages",
|
|
41
|
-
h: "help",
|
|
42
|
-
},
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
// Show help
|
|
46
|
-
if (args.help || args._.length === 0) {
|
|
47
|
-
console.log(`
|
|
48
|
-
Split PDF - Split PDF files into pages or ranges
|
|
49
|
-
|
|
50
|
-
Usage:
|
|
51
|
-
skills run split-pdf -- <file.pdf> [options]
|
|
52
|
-
|
|
53
|
-
Options:
|
|
54
|
-
-o, --output <path> Output directory or file (default: ./split/)
|
|
55
|
-
-p, --pages <range> Pages to extract: "1-5", "1,3,5", "all" (default: all)
|
|
56
|
-
--chunk-size <n> Pages per output file (default: 1)
|
|
57
|
-
--even Extract even pages only
|
|
58
|
-
--odd Extract odd pages only
|
|
59
|
-
--first <n> Extract first N pages
|
|
60
|
-
--last <n> Extract last N pages
|
|
61
|
-
--reverse Reverse page order
|
|
62
|
-
--naming <template> Output naming: page-{n}, chunk-{n}, {original}-{n}
|
|
63
|
-
--start-number <n> Starting number for output files (default: 1)
|
|
64
|
-
--pad-digits <n> Zero-padding digits (default: 3)
|
|
65
|
-
-h, --help Show this help message
|
|
66
|
-
|
|
67
|
-
Examples:
|
|
68
|
-
skills run split-pdf -- document.pdf -o ./pages/
|
|
69
|
-
skills run split-pdf -- document.pdf --pages "1-10" -o extract.pdf
|
|
70
|
-
skills run split-pdf -- document.pdf --chunk-size 5 -o ./chunks/
|
|
71
|
-
skills run split-pdf -- document.pdf --even -o even-pages.pdf
|
|
72
|
-
`);
|
|
73
|
-
process.exit(0);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Get input file
|
|
77
|
-
const inputFile = args._[0] as string;
|
|
78
|
-
|
|
79
|
-
if (!inputFile) {
|
|
80
|
-
console.error("Error: No input PDF file specified");
|
|
81
|
-
process.exit(1);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
if (!fs.existsSync(inputFile)) {
|
|
85
|
-
console.error(`Error: File not found: ${inputFile}`);
|
|
86
|
-
process.exit(1);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Parse options
|
|
90
|
-
const options: SplitOptions = {
|
|
91
|
-
output: args.output,
|
|
92
|
-
pages: args.pages,
|
|
93
|
-
chunkSize: parseInt(args["chunk-size"]) || 1,
|
|
94
|
-
even: args.even,
|
|
95
|
-
odd: args.odd,
|
|
96
|
-
first: args.first ? parseInt(args.first) : null,
|
|
97
|
-
last: args.last ? parseInt(args.last) : null,
|
|
98
|
-
reverse: args.reverse,
|
|
99
|
-
naming: args.naming,
|
|
100
|
-
startNumber: parseInt(args["start-number"]) || 1,
|
|
101
|
-
padDigits: parseInt(args["pad-digits"]) || 3,
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
// Parse page range into array of page indices (0-based)
|
|
105
|
-
function parsePageRange(pageStr: string, totalPages: number): number[] {
|
|
106
|
-
if (pageStr === "all") {
|
|
107
|
-
return Array.from({ length: totalPages }, (_, i) => i);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const pages: Set<number> = new Set();
|
|
111
|
-
const parts = pageStr.split(",").map((p) => p.trim());
|
|
112
|
-
|
|
113
|
-
for (const part of parts) {
|
|
114
|
-
if (part.includes("-")) {
|
|
115
|
-
const [startStr, endStr] = part.split("-");
|
|
116
|
-
const start = startStr ? parseInt(startStr) : 1;
|
|
117
|
-
const end = endStr ? parseInt(endStr) : totalPages;
|
|
118
|
-
for (let i = start - 1; i < Math.min(end, totalPages); i++) {
|
|
119
|
-
if (i >= 0) pages.add(i);
|
|
120
|
-
}
|
|
121
|
-
} else {
|
|
122
|
-
const pageNum = parseInt(part) - 1;
|
|
123
|
-
if (pageNum >= 0 && pageNum < totalPages) {
|
|
124
|
-
pages.add(pageNum);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return Array.from(pages).sort((a, b) => a - b);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// Filter pages based on options
|
|
133
|
-
function filterPages(
|
|
134
|
-
pages: number[],
|
|
135
|
-
totalPages: number,
|
|
136
|
-
options: SplitOptions
|
|
137
|
-
): number[] {
|
|
138
|
-
let filtered = [...pages];
|
|
139
|
-
|
|
140
|
-
// Apply even/odd filter
|
|
141
|
-
if (options.even) {
|
|
142
|
-
filtered = filtered.filter((p) => (p + 1) % 2 === 0);
|
|
143
|
-
} else if (options.odd) {
|
|
144
|
-
filtered = filtered.filter((p) => (p + 1) % 2 === 1);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
// Apply first/last
|
|
148
|
-
if (options.first !== null) {
|
|
149
|
-
filtered = filtered.slice(0, options.first);
|
|
150
|
-
} else if (options.last !== null) {
|
|
151
|
-
filtered = filtered.slice(-options.last);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// Apply reverse
|
|
155
|
-
if (options.reverse) {
|
|
156
|
-
filtered.reverse();
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return filtered;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
// Generate output filename
|
|
163
|
-
function generateFilename(
|
|
164
|
-
template: string,
|
|
165
|
-
index: number,
|
|
166
|
-
totalPages: number,
|
|
167
|
-
originalName: string,
|
|
168
|
-
padDigits: number
|
|
169
|
-
): string {
|
|
170
|
-
const paddedNum = String(index).padStart(padDigits, "0");
|
|
171
|
-
const date = new Date().toISOString().split("T")[0];
|
|
172
|
-
|
|
173
|
-
return (
|
|
174
|
-
template
|
|
175
|
-
.replace("{n}", paddedNum)
|
|
176
|
-
.replace("{original}", originalName)
|
|
177
|
-
.replace("{total}", String(totalPages))
|
|
178
|
-
.replace("{date}", date) + ".pdf"
|
|
179
|
-
);
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// Split into chunks
|
|
183
|
-
function chunkArray<T>(array: T[], size: number): T[][] {
|
|
184
|
-
const chunks: T[][] = [];
|
|
185
|
-
for (let i = 0; i < array.length; i += size) {
|
|
186
|
-
chunks.push(array.slice(i, i + size));
|
|
187
|
-
}
|
|
188
|
-
return chunks;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
// Main split function
|
|
192
|
-
async function splitPdf(): Promise<void> {
|
|
193
|
-
console.log(`\nLoading: ${inputFile}`);
|
|
194
|
-
|
|
195
|
-
// Load source PDF
|
|
196
|
-
const sourceBytes = fs.readFileSync(inputFile);
|
|
197
|
-
const sourcePdf = await PDFDocument.load(sourceBytes);
|
|
198
|
-
const totalPages = sourcePdf.getPageCount();
|
|
199
|
-
|
|
200
|
-
console.log(`Total pages: ${totalPages}`);
|
|
201
|
-
|
|
202
|
-
// Get and filter pages
|
|
203
|
-
let pageIndices = parsePageRange(options.pages, totalPages);
|
|
204
|
-
pageIndices = filterPages(pageIndices, totalPages, options);
|
|
205
|
-
|
|
206
|
-
if (pageIndices.length === 0) {
|
|
207
|
-
console.error("Error: No pages match the specified criteria");
|
|
208
|
-
process.exit(1);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
console.log(`Selected pages: ${pageIndices.length}`);
|
|
212
|
-
|
|
213
|
-
// Determine output mode
|
|
214
|
-
const outputIsFile = options.output.toLowerCase().endsWith(".pdf");
|
|
215
|
-
const originalName = path.basename(inputFile, ".pdf");
|
|
216
|
-
|
|
217
|
-
// Create chunks
|
|
218
|
-
const chunks = chunkArray(pageIndices, options.chunkSize);
|
|
219
|
-
console.log(`Output files: ${chunks.length}\n`);
|
|
220
|
-
|
|
221
|
-
// Ensure output directory exists
|
|
222
|
-
if (!outputIsFile) {
|
|
223
|
-
if (!fs.existsSync(options.output)) {
|
|
224
|
-
fs.mkdirSync(options.output, { recursive: true });
|
|
225
|
-
}
|
|
226
|
-
} else if (chunks.length > 1) {
|
|
227
|
-
// Multiple chunks but output is a file - create directory instead
|
|
228
|
-
const outputDir = options.output.replace(".pdf", "");
|
|
229
|
-
if (!fs.existsSync(outputDir)) {
|
|
230
|
-
fs.mkdirSync(outputDir, { recursive: true });
|
|
231
|
-
}
|
|
232
|
-
options.output = outputDir;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
const outputFiles: string[] = [];
|
|
236
|
-
|
|
237
|
-
// Process each chunk
|
|
238
|
-
for (let i = 0; i < chunks.length; i++) {
|
|
239
|
-
const chunk = chunks[i];
|
|
240
|
-
const fileNum = options.startNumber + i;
|
|
241
|
-
|
|
242
|
-
// Create new PDF for this chunk
|
|
243
|
-
const newPdf = await PDFDocument.create();
|
|
244
|
-
const copiedPages = await newPdf.copyPages(sourcePdf, chunk);
|
|
245
|
-
|
|
246
|
-
for (const page of copiedPages) {
|
|
247
|
-
newPdf.addPage(page);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// Set metadata
|
|
251
|
-
newPdf.setCreator("split-pdf skill");
|
|
252
|
-
newPdf.setProducer("pdf-lib");
|
|
253
|
-
|
|
254
|
-
// Generate output path
|
|
255
|
-
let outputPath: string;
|
|
256
|
-
if (outputIsFile && chunks.length === 1) {
|
|
257
|
-
outputPath = options.output;
|
|
258
|
-
} else {
|
|
259
|
-
const filename = generateFilename(
|
|
260
|
-
options.chunkSize > 1 ? options.naming.replace("page", "chunk") : options.naming,
|
|
261
|
-
fileNum,
|
|
262
|
-
totalPages,
|
|
263
|
-
originalName,
|
|
264
|
-
options.padDigits
|
|
265
|
-
);
|
|
266
|
-
outputPath = path.join(options.output, filename);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
// Save
|
|
270
|
-
const outputBytes = await newPdf.save();
|
|
271
|
-
fs.writeFileSync(outputPath, outputBytes);
|
|
272
|
-
outputFiles.push(outputPath);
|
|
273
|
-
|
|
274
|
-
// Progress
|
|
275
|
-
const pageRange =
|
|
276
|
-
chunk.length === 1
|
|
277
|
-
? `page ${chunk[0] + 1}`
|
|
278
|
-
: `pages ${chunk[0] + 1}-${chunk[chunk.length - 1] + 1}`;
|
|
279
|
-
console.log(`Created: ${path.basename(outputPath)} (${pageRange})`);
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
// Summary
|
|
283
|
-
console.log(`\n${"=".repeat(50)}`);
|
|
284
|
-
console.log(`Split complete!`);
|
|
285
|
-
console.log(` - Input: ${inputFile} (${totalPages} pages)`);
|
|
286
|
-
console.log(` - Output: ${outputFiles.length} file(s)`);
|
|
287
|
-
console.log(` - Location: ${outputIsFile && chunks.length === 1 ? options.output : options.output + "/"}`);
|
|
288
|
-
console.log("=".repeat(50));
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
// Main execution
|
|
292
|
-
async function main() {
|
|
293
|
-
try {
|
|
294
|
-
await splitPdf();
|
|
295
|
-
} catch (error: any) {
|
|
296
|
-
console.error(`Error: ${error.message}`);
|
|
297
|
-
process.exit(1);
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
main();
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# statistical-test-selector
|
|
2
|
-
|
|
3
|
-
Statistical Test Selector skill.
|
|
4
|
-
|
|
5
|
-
## Tech Stack
|
|
6
|
-
|
|
7
|
-
- Runtime: Bun
|
|
8
|
-
- Language: TypeScript
|
|
9
|
-
- CLI: Commander.js
|
|
10
|
-
|
|
11
|
-
## CLI
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
statistical-test-selector run
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Data Directory
|
|
18
|
-
|
|
19
|
-
~/.skill/statistical-test-selector/
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "statistical-test-selector",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"description": "Statistical Test Selector skill",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": {
|
|
7
|
-
"statistical-test-selector": "./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
|
-
"typecheck": "tsc --noEmit"
|
|
13
|
-
},
|
|
14
|
-
"dependencies": {},
|
|
15
|
-
"devDependencies": {
|
|
16
|
-
"@types/bun": "latest",
|
|
17
|
-
"typescript": "^5.7.0"
|
|
18
|
-
},
|
|
19
|
-
"publishConfig": {
|
|
20
|
-
"access": "restricted",
|
|
21
|
-
"registry": "https://registry.npmjs.org/"
|
|
22
|
-
},
|
|
23
|
-
"files": [
|
|
24
|
-
"src",
|
|
25
|
-
"tsconfig.json"
|
|
26
|
-
]
|
|
27
|
-
}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
import { parseArgs } from "util";
|
|
3
|
-
|
|
4
|
-
const { values } = parseArgs({
|
|
5
|
-
args: process.argv.slice(2),
|
|
6
|
-
options: {
|
|
7
|
-
independent: { type: "string" }, // categorical, continuous
|
|
8
|
-
dependent: { type: "string" }, // categorical, continuous
|
|
9
|
-
groups: { type: "string" }, // 1, 2, >2
|
|
10
|
-
paired: { type: "boolean" }, // true/false
|
|
11
|
-
parametric: { type: "boolean", default: true }, // true/false
|
|
12
|
-
help: { type: "boolean" },
|
|
13
|
-
},
|
|
14
|
-
allowPositionals: true,
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
if (values.help || !values.independent || !values.dependent) {
|
|
18
|
-
console.log(`
|
|
19
|
-
Statistical Test Selector
|
|
20
|
-
Usage: skills run statistical-test-selector --independent <type> --dependent <type> [options]
|
|
21
|
-
|
|
22
|
-
Options:
|
|
23
|
-
--independent <type> Type of independent variable (categorical, continuous)
|
|
24
|
-
--dependent <type> Type of dependent variable (categorical, continuous)
|
|
25
|
-
--groups <n> Number of groups/levels in independent variable (1, 2, >2)
|
|
26
|
-
--paired Whether data is paired/matched (e.g., pre/post)
|
|
27
|
-
--parametric Assume normal distribution (default: true)
|
|
28
|
-
`);
|
|
29
|
-
process.exit(0);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const ind = values.independent;
|
|
33
|
-
const dep = values.dependent;
|
|
34
|
-
const groups = values.groups || "2";
|
|
35
|
-
const paired = values.paired || false;
|
|
36
|
-
const parametric = values.parametric;
|
|
37
|
-
|
|
38
|
-
let recommendation = "Consult a statistician.";
|
|
39
|
-
|
|
40
|
-
if (ind === "categorical" && dep === "continuous") {
|
|
41
|
-
if (groups === "2") {
|
|
42
|
-
if (paired) {
|
|
43
|
-
recommendation = parametric ? "Paired t-test" : "Wilcoxon signed-rank test";
|
|
44
|
-
} else {
|
|
45
|
-
recommendation = parametric ? "Independent samples t-test" : "Mann-Whitney U test";
|
|
46
|
-
}
|
|
47
|
-
} else if (groups === ">2") {
|
|
48
|
-
if (paired) {
|
|
49
|
-
recommendation = parametric ? "Repeated measures ANOVA" : "Friedman test";
|
|
50
|
-
} else {
|
|
51
|
-
recommendation = parametric ? "One-way ANOVA" : "Kruskal-Wallis H test";
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
} else if (ind === "categorical" && dep === "categorical") {
|
|
55
|
-
if (paired) {
|
|
56
|
-
recommendation = "McNemar's test";
|
|
57
|
-
} else {
|
|
58
|
-
recommendation = "Chi-square test of independence (or Fisher's exact test for small samples)";
|
|
59
|
-
}
|
|
60
|
-
} else if (ind === "continuous" && dep === "continuous") {
|
|
61
|
-
recommendation = parametric ? "Pearson correlation or Linear Regression" : "Spearman rank correlation";
|
|
62
|
-
} else if (ind === "continuous" && dep === "categorical") {
|
|
63
|
-
recommendation = "Logistic Regression";
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
console.log(`
|
|
67
|
-
Recommended Test: ${recommendation}
|
|
68
|
-
|
|
69
|
-
Context:
|
|
70
|
-
- Independent Variable: ${ind}
|
|
71
|
-
- Dependent Variable: ${dep}
|
|
72
|
-
- Groups: ${groups}
|
|
73
|
-
- Paired: ${paired}
|
|
74
|
-
- Parametric Assumption: ${parametric}
|
|
75
|
-
`);
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: test-suite-generator
|
|
3
|
-
description: Generate API, unit, and browser test suite packages with runnable tests and coverage notes.
|
|
4
|
-
kind: instruction
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Test Suite Generator
|
|
8
|
-
|
|
9
|
-
Generate a test package for SaaS apps from routes, specs, or user flows.
|
|
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
|
-
| `spec` | Routes, specs, or user flows. Positional text also works. | required |
|
|
26
|
-
| `framework` | Application framework. | generic SaaS app |
|
|
27
|
-
| `runner` | Test runner style: `bun`, `vitest`, or `playwright`. | bun |
|
|
28
|
-
| `include-browser` | Include browser flow tests. | false |
|
|
29
|
-
|
|
30
|
-
## Deliverables
|
|
31
|
-
|
|
32
|
-
- `tests/api.test.ts`
|
|
33
|
-
- `tests/unit.test.ts`
|
|
34
|
-
- `tests/browser.spec.ts`
|
|
35
|
-
- `test-plan.md`
|
|
36
|
-
- `coverage-notes.md`
|
|
37
|
-
- `manifest.json`
|
|
38
|
-
|
|
39
|
-
## Method
|
|
40
|
-
|
|
41
|
-
1. Turn the natural-language spec into an explicit list of behaviours with their
|
|
42
|
-
expected outcomes before writing any test code.
|
|
43
|
-
2. Cover the boundaries first — empty, maximum, malformed, unauthorized,
|
|
44
|
-
concurrent. Happy-path-only suites give false confidence.
|
|
45
|
-
3. Write assertions against observable behaviour, not implementation detail, so
|
|
46
|
-
the suite survives refactoring.
|
|
47
|
-
4. Keep tests independent and order-agnostic; shared mutable fixtures are the
|
|
48
|
-
most common source of flakiness.
|
|
49
|
-
5. Match the project's existing framework and conventions — detect them from the
|
|
50
|
-
repo rather than imposing your own.
|
|
51
|
-
6. Note explicitly what you did NOT cover and why, so the gaps are visible.
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tmux-session
|
|
3
|
-
description: Create and manage grouped tmux sessions where each session focuses on its own window and its own folder. Knows workspace layout, naming conventions, and both multi-project and multi-agent patterns.
|
|
4
|
-
user_invocable: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# tmux-session
|
|
8
|
-
|
|
9
|
-
Use this skill when you need to add a window and session to an existing group, or create a new group from scratch. These are grouped tmux sessions where every named session locks onto its own window so `tmux attach -t <name>` lands directly in the intended project or tool.
|
|
10
|
-
|
|
11
|
-
## Workspace Layout
|
|
12
|
-
|
|
13
|
-
```text
|
|
14
|
-
~/workspace/ Linux hosts — always lowercase
|
|
15
|
-
~/Workspace/ macOS hosts — always capital W
|
|
16
|
-
|
|
17
|
-
[workspace]/
|
|
18
|
-
└── [division]/
|
|
19
|
-
└── [area]/
|
|
20
|
-
└── [area][status]/
|
|
21
|
-
└── [prefix]-[name]/
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Examples:
|
|
25
|
-
|
|
26
|
-
```text
|
|
27
|
-
workspace/hasna/opensource/opensourcedev/open-todos
|
|
28
|
-
workspace/hasna/opensource/opensourcedev/open-conversations
|
|
29
|
-
workspace/hasnaxyz/agent/agentdev/agent-claude
|
|
30
|
-
workspace/hasnaxyz/service/servicedev/service-chat
|
|
31
|
-
workspace/hasnastudio/hasnastudio-alumia/platform/platform-alumia
|
|
32
|
-
workspace/hasnaxyz/internalapp/iapp-takumi
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Local tools live under `~/local/local-[name]/`.
|
|
36
|
-
|
|
37
|
-
## How grouped sessions work
|
|
38
|
-
|
|
39
|
-
- A source session owns the windows.
|
|
40
|
-
- Named sessions join that source session and lock onto one window index.
|
|
41
|
-
- `tmux attach -t open-economy` should land in the `open-economy` window without manual switching.
|
|
42
|
-
|
|
43
|
-
## When to open a session
|
|
44
|
-
|
|
45
|
-
| Work type | Source session | Session/window naming |
|
|
46
|
-
|-----------|----------------|-----------------------|
|
|
47
|
-
| Multiple OSS repos | `opensourcemaintain` | `open-[name]` |
|
|
48
|
-
| Multiple agent repos | `agentdev` | `agent-[name]` |
|
|
49
|
-
| Multiple local tools | `local` | `local-[name]` |
|
|
50
|
-
| Multiple workers on one project | project name | `[project]-01`, `[project]-02`, ... |
|
|
51
|
-
|
|
52
|
-
Rule: tmux groups live at the area/team level, not the individual repo level.
|
|
53
|
-
|
|
54
|
-
## Add a window to an existing group
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
SOURCE="opensourcemaintain"
|
|
58
|
-
NAME="open-economy"
|
|
59
|
-
DIR="$HOME/workspace/hasna/opensource/opensourcedev/open-economy"
|
|
60
|
-
|
|
61
|
-
tmux new-window -t "$SOURCE" -n "$NAME" -c "$DIR"
|
|
62
|
-
IDX=$(tmux list-windows -t "$SOURCE" -F "#{window_index}:#{window_name}" | grep ":${NAME}$" | cut -d: -f1)
|
|
63
|
-
tmux new-session -d -s "$NAME" -t "$SOURCE"
|
|
64
|
-
tmux select-window -t "${NAME}:${IDX}"
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Create a new group
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
SOURCE="opensourcemaintain"
|
|
71
|
-
BASE="$HOME/workspace/hasna/opensource/opensourcedev"
|
|
72
|
-
|
|
73
|
-
WINDOWS=(
|
|
74
|
-
"open-todos:$BASE/open-todos"
|
|
75
|
-
"open-conversations:$BASE/open-conversations"
|
|
76
|
-
"open-mementos:$BASE/open-mementos"
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
tmux new-session -d -s "$SOURCE" -n "open-todos" -c "$BASE/open-todos"
|
|
80
|
-
|
|
81
|
-
for entry in "${WINDOWS[@]:1}"; do
|
|
82
|
-
tmux new-window -t "$SOURCE" -n "$(echo "$entry" | cut -d: -f1)" -c "$(echo "$entry" | cut -d: -f2)"
|
|
83
|
-
done
|
|
84
|
-
|
|
85
|
-
for entry in "${WINDOWS[@]}"; do
|
|
86
|
-
name=$(echo "$entry" | cut -d: -f1)
|
|
87
|
-
idx=$(tmux list-windows -t "$SOURCE" -F "#{window_index}:#{window_name}" | grep ":${name}$" | cut -d: -f1)
|
|
88
|
-
tmux new-session -d -s "$name" -t "$SOURCE"
|
|
89
|
-
tmux select-window -t "${name}:${idx}"
|
|
90
|
-
done
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
## Naming rules
|
|
94
|
-
|
|
95
|
-
- OSS project: `open-[name]`
|
|
96
|
-
- Agent repo: `agent-[name]`
|
|
97
|
-
- Service repo: `service-[name]`
|
|
98
|
-
- Local tool: `local-[name]`
|
|
99
|
-
- Multi-agent on one project: `[project]-01..N`
|
|
100
|
-
|
|
101
|
-
Always use the full prefixed name for both the window name and the session name.
|
|
102
|
-
|
|
103
|
-
## Verification
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
tmux display-message -t open-economy -p "#{window_index}:#{window_name} @ #{pane_current_path}"
|
|
107
|
-
tmux list-sessions | grep "(group opensourcemaintain)"
|
|
108
|
-
tmux list-panes -a -F "#{session_name}:#{window_name} dead=#{pane_dead}" | grep "dead=1"
|
|
109
|
-
```
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "tmux-session",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"description": "Instruction-set skill for creating grouped tmux sessions with repo-aware naming",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "src/index.ts",
|
|
7
|
-
"bin": {
|
|
8
|
-
"tmux-session": "src/index.ts"
|
|
9
|
-
},
|
|
10
|
-
"files": [
|
|
11
|
-
"src",
|
|
12
|
-
"SKILL.md",
|
|
13
|
-
"tsconfig.json"
|
|
14
|
-
],
|
|
15
|
-
"publishConfig": {
|
|
16
|
-
"access": "restricted"
|
|
17
|
-
},
|
|
18
|
-
"keywords": [
|
|
19
|
-
"tmux",
|
|
20
|
-
"sessions",
|
|
21
|
-
"workspace",
|
|
22
|
-
"automation",
|
|
23
|
-
"skill"
|
|
24
|
-
],
|
|
25
|
-
"scripts": {
|
|
26
|
-
"start": "bun run src/index.ts",
|
|
27
|
-
"typecheck": "tsc --noEmit"
|
|
28
|
-
},
|
|
29
|
-
"devDependencies": {
|
|
30
|
-
"@types/bun": "latest",
|
|
31
|
-
"typescript": "^5.7.0"
|
|
32
|
-
}
|
|
33
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bun
|
|
2
|
-
|
|
3
|
-
const VERSION = "0.1.0";
|
|
4
|
-
|
|
5
|
-
function printHelp(): void {
|
|
6
|
-
console.log(`tmux-session - Instruction-set skill
|
|
7
|
-
|
|
8
|
-
DESCRIPTION:
|
|
9
|
-
Guides an agent through grouped tmux session setup with workspace-aware naming:
|
|
10
|
-
- create source sessions
|
|
11
|
-
- add windows for repos or local tools
|
|
12
|
-
- attach named sessions to the correct window index
|
|
13
|
-
- verify pane focus and dead sessions
|
|
14
|
-
|
|
15
|
-
USAGE:
|
|
16
|
-
skills docs tmux-session
|
|
17
|
-
skills install tmux-session --for claude
|
|
18
|
-
`);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const args = process.argv.slice(2);
|
|
22
|
-
|
|
23
|
-
if (args.includes("--version") || args.includes("-v")) {
|
|
24
|
-
console.log(VERSION);
|
|
25
|
-
process.exit(0);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (args.includes("--help") || args.includes("-h") || args.length === 0) {
|
|
29
|
-
printHelp();
|
|
30
|
-
process.exit(0);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
console.log("This is an instruction-set skill. Install it for an agent with:");
|
|
34
|
-
console.log(" skills install tmux-session --for claude");
|