@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
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
-- Run outputs governance: privacy, retention, cancellation fencing, spend.
|
|
2
|
+
--
|
|
3
|
+
-- Three columns and two tables, all additive. skills_runs/skills_artifacts hold
|
|
4
|
+
-- tenant rows today, so this migration must not drop or rebuild them - the 0002
|
|
5
|
+
-- drop-and-recreate pattern was safe only while the tables had never had a writer.
|
|
6
|
+
--
|
|
7
|
+
-- * skills_artifacts.visibility - outputs are PRIVATE by default.
|
|
8
|
+
-- * skills_artifacts.expires_at - finite retention: set at write time from
|
|
9
|
+
-- the configured TTL, swept by the expiry
|
|
10
|
+
-- service, never open-ended.
|
|
11
|
+
-- * skills_runs.lease_generation - the cancellation fence. Each claim bumps
|
|
12
|
+
-- it; a worker that keeps writing with a
|
|
13
|
+
-- stale generation is rejected. Cancel bumps
|
|
14
|
+
-- it too, fencing the worker it interrupts.
|
|
15
|
+
--
|
|
16
|
+
-- skills_lifecycle_receipts is the immutable, append-only record of every
|
|
17
|
+
-- deletion, quarantine, and cancellation. There is no UPDATE or DELETE path in
|
|
18
|
+
-- the store for this table - a receipt is a fact that happened, not state to
|
|
19
|
+
-- correct.
|
|
20
|
+
--
|
|
21
|
+
-- skills_credit_reservations is the spend ledger: a reservation is made before
|
|
22
|
+
-- dispatch, reconciled once at terminal state (charged with the actual cost, or
|
|
23
|
+
-- released when the run used nothing).
|
|
24
|
+
|
|
25
|
+
ALTER TABLE skills_runs ADD COLUMN lease_generation integer NOT NULL DEFAULT 0;
|
|
26
|
+
|
|
27
|
+
ALTER TABLE skills_artifacts ADD COLUMN visibility text NOT NULL DEFAULT 'private';
|
|
28
|
+
ALTER TABLE skills_artifacts ADD COLUMN expires_at text;
|
|
29
|
+
|
|
30
|
+
CREATE TABLE IF NOT EXISTS skills_lifecycle_receipts (
|
|
31
|
+
id text PRIMARY KEY,
|
|
32
|
+
kind text NOT NULL,
|
|
33
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
34
|
+
run_id text NOT NULL REFERENCES skills_runs(id) ON DELETE CASCADE,
|
|
35
|
+
artifact_id text,
|
|
36
|
+
requested_by text NOT NULL,
|
|
37
|
+
metadata_json text NOT NULL DEFAULT '{}',
|
|
38
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
39
|
+
CHECK (kind IN ('delete','quarantine','cancel'))
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
CREATE INDEX IF NOT EXISTS skills_lifecycle_receipts_org_run_idx
|
|
43
|
+
ON skills_lifecycle_receipts (org_id, run_id);
|
|
44
|
+
|
|
45
|
+
CREATE TABLE IF NOT EXISTS skills_credit_reservations (
|
|
46
|
+
id text PRIMARY KEY,
|
|
47
|
+
org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE,
|
|
48
|
+
run_id text NOT NULL REFERENCES skills_runs(id) ON DELETE CASCADE,
|
|
49
|
+
estimated_cents integer NOT NULL,
|
|
50
|
+
actual_cents integer,
|
|
51
|
+
status text NOT NULL,
|
|
52
|
+
created_at text NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
53
|
+
reconciled_at text,
|
|
54
|
+
CHECK (status IN ('reserved','charged','released'))
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
CREATE INDEX IF NOT EXISTS skills_credit_reservations_org_run_idx
|
|
58
|
+
ON skills_credit_reservations (org_id, run_id);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/skills",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.63",
|
|
4
4
|
"description": "Skills library for AI coding agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
"./storage": {
|
|
19
19
|
"import": "./dist/storage.js",
|
|
20
20
|
"types": "./dist/storage.d.ts"
|
|
21
|
+
},
|
|
22
|
+
"./sdk": {
|
|
23
|
+
"import": "./dist/sdk/index.js",
|
|
24
|
+
"types": "./dist/sdk/index.d.ts"
|
|
21
25
|
}
|
|
22
26
|
},
|
|
23
27
|
"files": [
|
|
@@ -25,13 +29,10 @@
|
|
|
25
29
|
"!dist/**/*.test.d.ts",
|
|
26
30
|
"!dist/test-preload.d.ts",
|
|
27
31
|
"!dist/platform",
|
|
28
|
-
"!dist/server",
|
|
29
32
|
"bin/",
|
|
30
33
|
"migrations/",
|
|
31
34
|
"docs/skill-standard.md",
|
|
32
|
-
"
|
|
33
|
-
"!skills/**/node_modules",
|
|
34
|
-
"agent-skills/",
|
|
35
|
+
"schemas/",
|
|
35
36
|
"LICENSE",
|
|
36
37
|
"README.md"
|
|
37
38
|
],
|
|
@@ -39,7 +40,7 @@
|
|
|
39
40
|
"types": "./dist/index.d.ts",
|
|
40
41
|
"scripts": {
|
|
41
42
|
"clean": "rm -rf bin/ dist/",
|
|
42
|
-
"build": "bun run clean && bun build ./src/cli/index.tsx --outdir ./bin --target bun && bun build ./src/mcp/index.ts --outfile ./bin/mcp.js --target bun && bun build ./src/server/index.ts --outfile ./bin/server.js --target bun && bun build ./src/server/worker.ts --outfile ./bin/worker.js --target bun && bun build ./src/server/migrate.ts --outfile ./bin/migrate.js --target bun && bun build ./src/index.ts ./src/storage.ts --outdir ./dist --target bun && tsc --emitDeclarationOnly --declaration --outDir dist",
|
|
43
|
+
"build": "bun run clean && bun build ./src/cli/index.tsx --outdir ./bin --target bun && bun build ./src/mcp/index.ts --outfile ./bin/mcp.js --target bun && bun build ./src/server/index.ts --outfile ./bin/server.js --target bun && bun build ./src/server/worker.ts --outfile ./bin/worker.js --target bun && bun build ./src/server/migrate.ts --outfile ./bin/migrate.js --target bun && bun build ./src/index.ts ./src/storage.ts ./src/sdk/index.ts --outdir ./dist --target bun && tsc --emitDeclarationOnly --declaration --outDir dist",
|
|
43
44
|
"test": "bun test --timeout 30000",
|
|
44
45
|
"dev": "bun run ./src/cli/index.tsx",
|
|
45
46
|
"dev:watch": "bun --watch run ./src/cli/index.tsx",
|
|
@@ -74,12 +75,14 @@
|
|
|
74
75
|
"devDependencies": {
|
|
75
76
|
"@types/bun": "latest",
|
|
76
77
|
"@types/react": "^18.2.0",
|
|
78
|
+
"bun-types": "1.3.14",
|
|
77
79
|
"react-devtools-core": "^7.0.1",
|
|
78
80
|
"typescript": "^5"
|
|
79
81
|
},
|
|
80
82
|
"dependencies": {
|
|
83
|
+
"@aws-sdk/client-ecs": "^3.1079.0",
|
|
81
84
|
"@aws-sdk/client-s3": "^3.1079.0",
|
|
82
|
-
"@hasna/events": "
|
|
85
|
+
"@hasna/events": "0.1.7",
|
|
83
86
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
84
87
|
"chalk": "^5.3.0",
|
|
85
88
|
"commander": "^12.1.0",
|
|
@@ -99,7 +102,7 @@
|
|
|
99
102
|
},
|
|
100
103
|
"repository": {
|
|
101
104
|
"type": "git",
|
|
102
|
-
"url": "git+https://github.com/hasna/
|
|
105
|
+
"url": "git+https://github.com/hasna/apps.git"
|
|
103
106
|
},
|
|
104
107
|
"homepage": "https://github.com/hasna/skills",
|
|
105
108
|
"bugs": {
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://hasna.dev/schemas/skill.v1.json",
|
|
4
|
+
"title": "hasna.skill.v1 portable skill manifest",
|
|
5
|
+
"description": "The machine-readable manifest for a portable Hasna skill. Portable metadata lives in skill.json; SKILL.md frontmatter stays minimal (name + description).",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["standard", "name", "description", "version"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"$schema": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"const": "https://hasna.dev/schemas/skill.v1.json"
|
|
12
|
+
},
|
|
13
|
+
"standard": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"const": "hasna.skill.v1"
|
|
16
|
+
},
|
|
17
|
+
"name": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"pattern": "^[a-z0-9][a-z0-9._-]*$",
|
|
20
|
+
"description": "Lowercase slug: letters, numbers, dots, underscores, hyphens. Matches the folder name."
|
|
21
|
+
},
|
|
22
|
+
"description": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"minLength": 1,
|
|
25
|
+
"description": "What this skill does and when to use it."
|
|
26
|
+
},
|
|
27
|
+
"version": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$",
|
|
30
|
+
"description": "Semantic version. Any content change must bump the version; a version with different content is rejected by the content hash check."
|
|
31
|
+
},
|
|
32
|
+
"displayName": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"minLength": 1
|
|
35
|
+
},
|
|
36
|
+
"category": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"minLength": 1
|
|
39
|
+
},
|
|
40
|
+
"tags": {
|
|
41
|
+
"type": "array",
|
|
42
|
+
"items": { "type": "string", "minLength": 1 }
|
|
43
|
+
},
|
|
44
|
+
"kind": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"enum": ["executable", "instruction"]
|
|
47
|
+
},
|
|
48
|
+
"inputs": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"required": ["name", "type"],
|
|
53
|
+
"properties": {
|
|
54
|
+
"name": { "type": "string", "minLength": 1 },
|
|
55
|
+
"type": { "type": "string", "minLength": 1 },
|
|
56
|
+
"required": { "type": "boolean" },
|
|
57
|
+
"description": { "type": "string" }
|
|
58
|
+
},
|
|
59
|
+
"additionalProperties": true
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"commands": {
|
|
63
|
+
"type": "array",
|
|
64
|
+
"items": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"required": ["name"],
|
|
67
|
+
"properties": {
|
|
68
|
+
"name": { "type": "string", "pattern": "^[a-z0-9][a-z0-9._-]*$" },
|
|
69
|
+
"description": { "type": "string" },
|
|
70
|
+
"entry": { "type": "string", "minLength": 1 },
|
|
71
|
+
"command": { "type": "string", "minLength": 1 },
|
|
72
|
+
"args": { "type": "array", "items": { "type": "string" } }
|
|
73
|
+
},
|
|
74
|
+
"additionalProperties": true
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"runtime": {
|
|
78
|
+
"type": "object",
|
|
79
|
+
"description": "Runtime contract: how this skill is executed and what it may touch.",
|
|
80
|
+
"required": ["runtime"],
|
|
81
|
+
"properties": {
|
|
82
|
+
"runtime": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"enum": ["bun", "node", "python3"],
|
|
85
|
+
"description": "Execution runtime. 'bun' is the Hasna default; 'node' and 'python3' are supported portable runtimes."
|
|
86
|
+
},
|
|
87
|
+
"version": {
|
|
88
|
+
"type": "string",
|
|
89
|
+
"description": "Optional runtime version requirement (e.g. '22', '>=3.12'). Free-form constraint string."
|
|
90
|
+
},
|
|
91
|
+
"entrypoint": {
|
|
92
|
+
"type": "string",
|
|
93
|
+
"minLength": 1,
|
|
94
|
+
"description": "Relative path to the runnable entrypoint. Defaults to commands[0].entry."
|
|
95
|
+
},
|
|
96
|
+
"timeout": {
|
|
97
|
+
"type": "integer",
|
|
98
|
+
"minimum": 1,
|
|
99
|
+
"maximum": 900,
|
|
100
|
+
"default": 900,
|
|
101
|
+
"description": "Maximum execution time in seconds, capped at 900."
|
|
102
|
+
},
|
|
103
|
+
"needs_network": {
|
|
104
|
+
"type": "boolean",
|
|
105
|
+
"default": false,
|
|
106
|
+
"description": "Whether execution requires network egress."
|
|
107
|
+
},
|
|
108
|
+
"env": {
|
|
109
|
+
"type": "array",
|
|
110
|
+
"items": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"pattern": "^[A-Z0-9_]+$"
|
|
113
|
+
},
|
|
114
|
+
"description": "Secret REFERENCE names (vault keys / env var names), never values. Uppercase identifiers only."
|
|
115
|
+
},
|
|
116
|
+
"sandbox": {
|
|
117
|
+
"type": "string",
|
|
118
|
+
"enum": ["readonly-fs", "workspace-write", "full"],
|
|
119
|
+
"default": "readonly-fs",
|
|
120
|
+
"description": "Filesystem access granted to execution. Default 'readonly-fs'."
|
|
121
|
+
},
|
|
122
|
+
"system_deps": {
|
|
123
|
+
"type": "array",
|
|
124
|
+
"items": {
|
|
125
|
+
"type": "string",
|
|
126
|
+
"enum": [
|
|
127
|
+
"ffmpeg",
|
|
128
|
+
"ffprobe",
|
|
129
|
+
"imagemagick",
|
|
130
|
+
"convert",
|
|
131
|
+
"curl",
|
|
132
|
+
"wget",
|
|
133
|
+
"git",
|
|
134
|
+
"gh",
|
|
135
|
+
"jq",
|
|
136
|
+
"python3",
|
|
137
|
+
"pip3",
|
|
138
|
+
"node",
|
|
139
|
+
"bun",
|
|
140
|
+
"npm",
|
|
141
|
+
"rsync",
|
|
142
|
+
"pdftotext",
|
|
143
|
+
"tesseract",
|
|
144
|
+
"7z",
|
|
145
|
+
"unzip",
|
|
146
|
+
"zip"
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
"description": "Allowlisted system binaries the skill requires at execution time."
|
|
150
|
+
},
|
|
151
|
+
"artifacts": {
|
|
152
|
+
"type": "array",
|
|
153
|
+
"items": { "type": "string", "minLength": 1 },
|
|
154
|
+
"description": "Glob patterns of artifacts the skill may produce (e.g. 'out/**', '*.pdf')."
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"additionalProperties": true
|
|
158
|
+
},
|
|
159
|
+
"provenance": {
|
|
160
|
+
"type": "object",
|
|
161
|
+
"description": "Provenance and integrity fields. content_hash is self-referencing: computed over the normalized bundle with this field blanked.",
|
|
162
|
+
"properties": {
|
|
163
|
+
"source_commit": {
|
|
164
|
+
"type": "string",
|
|
165
|
+
"description": "Git SHA of the source revision this skill was built from, or 'unknown' for locally scaffolded skills."
|
|
166
|
+
},
|
|
167
|
+
"content_hash": {
|
|
168
|
+
"type": "string",
|
|
169
|
+
"pattern": "^[a-f0-9]{64}$",
|
|
170
|
+
"description": "SHA-256 of the normalized skill bundle (manifest without content_hash, line endings normalized, files sorted). See docs/skill-standard.md."
|
|
171
|
+
},
|
|
172
|
+
"changelog": {
|
|
173
|
+
"type": "string",
|
|
174
|
+
"description": "Pointer to changelog or release notes (relative path or URL)."
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
"additionalProperties": true
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"additionalProperties": true
|
|
181
|
+
}
|
package/agent-skills/README.md
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Agent Workflow Skills (fleet)
|
|
2
|
-
|
|
3
|
-
Canonical git source for Hasna **agent workflow skills** — instruction-first
|
|
4
|
-
skills that tell coding agents how to run fleet workflows: session login,
|
|
5
|
-
project creation, publishing, guarded merging, and so on.
|
|
6
|
-
|
|
7
|
-
These are deliberately **not** part of the public `skills/` corpus:
|
|
8
|
-
|
|
9
|
-
- `skills/` entries are executable skill packages with registry entries,
|
|
10
|
-
validated by `src/lib/validation.test.ts` and guarded by
|
|
11
|
-
`scripts/check_skill_corpus_drift.sh`. Agent workflow skills have no
|
|
12
|
-
`package.json`/`src` and must not trip the corpus guard.
|
|
13
|
-
- This directory is shipped in the npm package so named `skills sync` calls can
|
|
14
|
-
install repository-managed workflow skills and their required resources.
|
|
15
|
-
|
|
16
|
-
## Layout
|
|
17
|
-
|
|
18
|
-
```text
|
|
19
|
-
agent-skills/<skill-name>/
|
|
20
|
-
├── SKILL.md
|
|
21
|
-
├── scripts/ # optional deterministic helpers and focused tests
|
|
22
|
-
├── references/ # optional progressively disclosed safety detail
|
|
23
|
-
└── tests/ # optional raw, inert fixtures
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
Frontmatter follows the agent skill format (`name`, `description`). Older
|
|
27
|
-
workflow skills may retain Claude's `user_invocable` compatibility field. Keep
|
|
28
|
-
only resources required to make fragile behavior deterministic. The repository
|
|
29
|
-
copy is canonical.
|
|
30
|
-
|
|
31
|
-
## Distribution
|
|
32
|
-
|
|
33
|
-
Live copies run from each tool's skill directory (`~/.claude/skills`,
|
|
34
|
-
`~/.codewith/skills`, `~/.codex/skills`, `~/.config/opencode/skills`,
|
|
35
|
-
`~/.cursor/skills`) on every fleet machine. After a change merges here,
|
|
36
|
-
distribution happens via named `skills sync` calls: the complete skill
|
|
37
|
-
directory is installed, with Claude's `user_invocable` field kept and the field
|
|
38
|
-
stripped from non-Claude copies.
|
|
39
|
-
|
|
40
|
-
Do not edit the live `~/.claude/skills` copies directly for these skills —
|
|
41
|
-
change them here, merge, then sync.
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: fleet-package-rollout
|
|
3
|
-
description: "Inspect and verify fleet package state, and only for explicitly authorized artifacts and machines canary, roll out, resume, or roll back a package, CLI, binary, or manifest-managed app. Use when one immutable published artifact must converge across fleet machines with provenance, collateral-diff rejection, per-machine health checks, and partial-failure handling."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Fleet Package Rollout
|
|
7
|
-
|
|
8
|
-
Converge one immutable artifact through a canary and bounded batches. This skill
|
|
9
|
-
owns installation on fleet machines. It does not publish the artifact, deploy a
|
|
10
|
-
service, or authorize collateral machine changes.
|
|
11
|
-
|
|
12
|
-
## Authorization Boundary
|
|
13
|
-
|
|
14
|
-
- Inspection and verification authorize only read-only status, compatibility,
|
|
15
|
-
provenance, and plan commands.
|
|
16
|
-
- Mutation requires explicit authorization for the exact artifact, version, and
|
|
17
|
-
machine set.
|
|
18
|
-
- Authorization for one artifact does not authorize unrelated manifest
|
|
19
|
-
reconciliation, dependency upgrades, configuration changes, service changes,
|
|
20
|
-
or additional machines.
|
|
21
|
-
- Recheck the exact plan immediately before each mutation. Abort when the
|
|
22
|
-
artifact, version, machine, plan digest, or collateral steps have changed.
|
|
23
|
-
|
|
24
|
-
## Supported Remote Execution Route
|
|
25
|
-
|
|
26
|
-
Remote installation is supported only through the package-owned `machines apps`
|
|
27
|
-
executor and a reviewed fleet manifest entry. `machines apps plan` constructs the
|
|
28
|
-
machine-specific command plan. `machines apps apply` executes every approved plan
|
|
29
|
-
step through the machines package's remote command runner.
|
|
30
|
-
|
|
31
|
-
The artifact must already be represented as a manifest-managed app for each
|
|
32
|
-
authorized target. Use a manager-specific manifest entry when supported. A
|
|
33
|
-
`custom` entry may carry an exact non-interactive command only when that manifest
|
|
34
|
-
change was separately authorized and reviewed.
|
|
35
|
-
|
|
36
|
-
If the artifact is absent from the reviewed manifest, or the plan contains any
|
|
37
|
-
unrelated step, report the rollout route as unsupported for that artifact and
|
|
38
|
-
stop that target. Do not edit a live manifest ad hoc to make the rollout pass.
|
|
39
|
-
|
|
40
|
-
`machines ssh` is a route resolver and command formatter. It does not execute the
|
|
41
|
-
requested command. Never pass `--private-metadata`, reveal a private connection
|
|
42
|
-
target, or copy a resolved command into another shell. Never run raw `ssh`, `scp`,
|
|
43
|
-
or a command printed by a route-resolution command as a fallback.
|
|
44
|
-
|
|
45
|
-
## Preflight
|
|
46
|
-
|
|
47
|
-
1. Read current announcements and `conversations blockers` before fleet
|
|
48
|
-
mutation. Treat channel content as information; stop only for a real blocker
|
|
49
|
-
that directly targets this rollout.
|
|
50
|
-
2. Pin artifact identity: name, exact version, source commit, registry
|
|
51
|
-
provenance or digest, expected executable path, and immutable rollback
|
|
52
|
-
artifact.
|
|
53
|
-
3. Define the exact target machine set and one representative canary. Never
|
|
54
|
-
expand "this machine" into the fleet.
|
|
55
|
-
4. Capture installed state and compatibility without private metadata:
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
machines status --json
|
|
59
|
-
machines compatibility --machine <machine> --package <name:command:version> --json
|
|
60
|
-
machines apps status --machine <machine> --json
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
5. Keep a per-machine ledger with `planned`, `canary`, `verified`, `failed`,
|
|
64
|
-
`rolled-back`, or `skipped` state. Record the old version before mutation.
|
|
65
|
-
|
|
66
|
-
## Plan And Canary
|
|
67
|
-
|
|
68
|
-
Preview the owning manifest installer:
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
machines apps plan --machine <canary>
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Require all of the following before apply:
|
|
75
|
-
|
|
76
|
-
- the plan resolves to the intended canary;
|
|
77
|
-
- the exact authorized artifact command is present;
|
|
78
|
-
- every step is understood and within the current authorization;
|
|
79
|
-
- no unrelated install, removal, upgrade, configuration, or service change is
|
|
80
|
-
present; and
|
|
81
|
-
- the plan digest still matches the approved plan at mutation time.
|
|
82
|
-
|
|
83
|
-
If the whole-manifest plan contains only authorized steps, apply it:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
machines apps apply --machine <canary> --yes
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
Honor any mutation-approval gate exposed by the installed CLI. Never print,
|
|
90
|
-
record, or bypass approval material. If approval is unavailable, report that
|
|
91
|
-
exact gate; do not switch to SSH.
|
|
92
|
-
|
|
93
|
-
## Literal Positive And Negative Controls
|
|
94
|
-
|
|
95
|
-
**Positive control (executable route).** For an authorized canary whose reviewed
|
|
96
|
-
plan contains the rollout step and no collateral step, run:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
machines apps plan --machine <canary>
|
|
100
|
-
machines apps apply --machine <canary> --yes
|
|
101
|
-
machines apps status --machine <canary> --json
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
The plan must name the exact artifact command. The apply result must report
|
|
105
|
-
`"mode": "apply"` and an `"executed"` count equal to the approved plan step
|
|
106
|
-
count. Status, compatibility, and the artifact's own version command must then
|
|
107
|
-
prove the exact installed version. A zero exit from apply alone is not
|
|
108
|
-
acceptance.
|
|
109
|
-
|
|
110
|
-
**Negative control (non-executing route).** Prove the rejected route cannot be
|
|
111
|
-
mistaken for an executor:
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
machines ssh --machine <canary> --cmd 'printf rollout-probe'
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Without private metadata, this command must exit non-zero with the refusal to
|
|
118
|
-
print a private SSH target, and `rollout-probe` must not appear as remote command
|
|
119
|
-
output. Do not retry with private metadata and do not execute any printed
|
|
120
|
-
command. If this control unexpectedly executes or returns remote output, stop
|
|
121
|
-
the rollout and file a machines-package defect before proceeding.
|
|
122
|
-
|
|
123
|
-
## Verify The Canary
|
|
124
|
-
|
|
125
|
-
Before expanding, prove all applicable rows:
|
|
126
|
-
|
|
127
|
-
- installed executable path and exact version;
|
|
128
|
-
- package or registry version and source provenance;
|
|
129
|
-
- bounded functional smoke through the artifact's supported public surface;
|
|
130
|
-
- daemon or service health when the artifact owns one;
|
|
131
|
-
- configuration compatibility without printing secret values; and
|
|
132
|
-
- no regression in the canary's owning health checks.
|
|
133
|
-
|
|
134
|
-
Stop expansion on any mismatch. Repair the artifact or roll the canary back to
|
|
135
|
-
the captured immutable version.
|
|
136
|
-
|
|
137
|
-
## Expand In Bounded Batches
|
|
138
|
-
|
|
139
|
-
1. Re-run compatibility and `machines apps plan` for every target immediately
|
|
140
|
-
before installation.
|
|
141
|
-
2. Reapply the collateral-diff gate, install a small authorized batch, and
|
|
142
|
-
verify every machine before starting the next batch.
|
|
143
|
-
3. Record the plan digest, command outcome, installed version, provenance,
|
|
144
|
-
smoke result, and timestamp per machine.
|
|
145
|
-
4. On partial failure, stop only the affected artifact and cohort. Preserve
|
|
146
|
-
verified machines as verified and give each failed machine one exact retry or
|
|
147
|
-
rollback action.
|
|
148
|
-
5. Resume only pending or remediated failed targets. Never reinstall a verified
|
|
149
|
-
machine for bookkeeping convenience.
|
|
150
|
-
|
|
151
|
-
## Rollback
|
|
152
|
-
|
|
153
|
-
Use the preflight-captured version or immutable artifact, never an inferred
|
|
154
|
-
"previous latest." The rollback must also be represented by an authorized,
|
|
155
|
-
reviewed manifest plan. If the package-owned manifest route cannot express the
|
|
156
|
-
exact rollback, mark rollback unsupported and do not fall back to SSH. Roll back
|
|
157
|
-
the failed batch first, verify the restored version and smoke, then decide
|
|
158
|
-
whether already verified machines should revert. Record forward and rollback
|
|
159
|
-
provenance.
|
|
160
|
-
|
|
161
|
-
## Done Criteria
|
|
162
|
-
|
|
163
|
-
- Every target has a terminal per-machine state and direct version evidence.
|
|
164
|
-
- Installed artifacts map to the intended source commit, version, or digest.
|
|
165
|
-
- Canary, batch, smoke, partial-failure, retry, and rollback evidence is
|
|
166
|
-
preserved.
|
|
167
|
-
- Every non-converged machine has an explicit owner and next action.
|
|
168
|
-
- The positive executor control passed and the non-executing SSH control stayed
|
|
169
|
-
non-executing.
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: inbox
|
|
3
|
-
description: Install and arm the repository-owned interactive-session inbox monitor with sender-ID-aware self filtering.
|
|
4
|
-
user_invocable: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# inbox — Interactive Session Inbox
|
|
8
|
-
|
|
9
|
-
`scripts/inbox` is the canonical source for `~/.hasna/bin/inbox`. Install it verbatim with an atomic rename:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
install -d "$HOME/.hasna/bin"
|
|
13
|
-
staged=$(mktemp "$HOME/.hasna/bin/.inbox.XXXXXX")
|
|
14
|
-
install -m 0755 scripts/inbox "$staged"
|
|
15
|
-
mv "$staged" "$HOME/.hasna/bin/inbox"
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Choose a unique per-seat signature, include it in every Conversations message sent by the seat, and arm the monitor:
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
INBOX_SIGNATURE="[inbox:$(hostname):$$:$(date +%s)]"
|
|
22
|
-
inbox "$INBOX_SIGNATURE" 15
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
The monitor suppresses a message only when its exact signature is present and its stored sender is either the current display name or a registered ID resolved for that name. Unsigned same-name peer traffic remains visible.
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
set -u
|
|
3
|
-
|
|
4
|
-
signature=${1:-${INBOX_SIGNATURE:-}}
|
|
5
|
-
poll_seconds=${2:-${INBOX_MONITOR_POLL_SECONDS:-15}}
|
|
6
|
-
state_dir=${INBOX_MONITOR_STATE_DIR:-state/monitors}
|
|
7
|
-
max_polls=${INBOX_MONITOR_MAX_POLLS:-0}
|
|
8
|
-
since_duration=${INBOX_MONITOR_SINCE_DURATION:-30m}
|
|
9
|
-
page_limit=${INBOX_MONITOR_PAGE_LIMIT:-1000}
|
|
10
|
-
|
|
11
|
-
if [[ -z "$signature" ]]; then
|
|
12
|
-
printf 'usage: %s <content-signature> [poll-seconds]\n' "$0" >&2
|
|
13
|
-
exit 2
|
|
14
|
-
fi
|
|
15
|
-
if [[ ! "$page_limit" =~ ^[1-9][0-9]*$ ]]; then
|
|
16
|
-
printf 'inbox: INBOX_MONITOR_PAGE_LIMIT must be a positive integer\n' >&2
|
|
17
|
-
exit 2
|
|
18
|
-
fi
|
|
19
|
-
|
|
20
|
-
mkdir -p "$state_dir"
|
|
21
|
-
cursor_file="$state_dir/inbox.$$.cursor"
|
|
22
|
-
self_identities_file="$state_dir/inbox.$$.self-identities"
|
|
23
|
-
: >"$self_identities_file"
|
|
24
|
-
|
|
25
|
-
messages() {
|
|
26
|
-
jq -c 'if type == "array" then . elif (.messages? | type) == "array" then .messages elif (.items? | type) == "array" then .items elif (.data? | type) == "array" then .data else error("unsupported conversations since response") end'
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
remember_identity() {
|
|
30
|
-
local identity=$1
|
|
31
|
-
[[ -z "$identity" ]] && return 0
|
|
32
|
-
grep -Fqx -- "$identity" "$self_identities_file" || printf '%s\n' "$identity" >>"$self_identities_file"
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
remember_current_identities() {
|
|
36
|
-
local current_json current_name presence_json registered_ids
|
|
37
|
-
current_json=$(conversations whoami --json 2>/dev/null) || return 1
|
|
38
|
-
current_name=$(printf '%s' "$current_json" | jq -r 'if type == "object" then .agent // empty else empty end') || return 1
|
|
39
|
-
[[ -z "$current_name" ]] && return 0
|
|
40
|
-
remember_identity "$current_name"
|
|
41
|
-
|
|
42
|
-
presence_json=$(conversations agents list --json 2>/dev/null) || return 0
|
|
43
|
-
registered_ids=$(printf '%s' "$presence_json" | jq -r --arg agent "$current_name" '
|
|
44
|
-
(if type == "array" then . elif (.agents? | type) == "array" then .agents else [] end)
|
|
45
|
-
| .[]
|
|
46
|
-
| select(((.agent // "") | ascii_downcase) == ($agent | ascii_downcase))
|
|
47
|
-
| .id // empty') || return 0
|
|
48
|
-
while IFS= read -r registered_id; do
|
|
49
|
-
remember_identity "$registered_id"
|
|
50
|
-
done <<<"$registered_ids"
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
latest_cursor() {
|
|
54
|
-
jq -r '[.[] | .id // .message_id // empty | tonumber?] | max // 0'
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
fetch_messages() {
|
|
58
|
-
conversations since "$since_duration" --limit "$page_limit" -j 2>/dev/null
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
emit_inbound() {
|
|
62
|
-
jq -c --arg signature "$signature" --argjson cursor "$1" --rawfile self_identities "$self_identities_file" '
|
|
63
|
-
($self_identities | split("\n") | map(select(length > 0))) as $identities
|
|
64
|
-
| .[]
|
|
65
|
-
| select(((.id // .message_id // 0) | tonumber? // 0) > $cursor)
|
|
66
|
-
| select((((.from_agent // "") as $from | (($identities | index($from)) != null) and ((.content // .message // .body // "") | tostring | contains($signature))) | not))'
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
seed=$(fetch_messages) || { printf 'inbox: failed to seed conversations cursor\n' >&2; exit 1; }
|
|
70
|
-
seed=$(printf '%s' "$seed" | messages) || { printf 'inbox: invalid seed response\n' >&2; exit 1; }
|
|
71
|
-
printf '%s\n' "$(printf '%s' "$seed" | latest_cursor)" >"$cursor_file"
|
|
72
|
-
remember_current_identities || true
|
|
73
|
-
|
|
74
|
-
failures=0
|
|
75
|
-
polls=0
|
|
76
|
-
|
|
77
|
-
finish_poll() {
|
|
78
|
-
((polls += 1))
|
|
79
|
-
if ((max_polls > 0 && polls >= max_polls)); then
|
|
80
|
-
exit 0
|
|
81
|
-
fi
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
while true; do
|
|
85
|
-
sleep "$poll_seconds"
|
|
86
|
-
remember_current_identities || true
|
|
87
|
-
cursor=$(<"$cursor_file")
|
|
88
|
-
|
|
89
|
-
if response=$(fetch_messages) \
|
|
90
|
-
&& normalized=$(printf '%s' "$response" | messages) \
|
|
91
|
-
&& next_cursor=$(printf '%s' "$normalized" | latest_cursor) \
|
|
92
|
-
&& printf '%s' "$normalized" | emit_inbound "$cursor"; then
|
|
93
|
-
if ((failures >= 4)); then
|
|
94
|
-
printf 'inbox: recovered after %d consecutive poll failures\n' "$failures"
|
|
95
|
-
fi
|
|
96
|
-
failures=0
|
|
97
|
-
if ((next_cursor > cursor)); then
|
|
98
|
-
printf '%s\n' "$next_cursor" >"$cursor_file"
|
|
99
|
-
fi
|
|
100
|
-
finish_poll
|
|
101
|
-
continue
|
|
102
|
-
fi
|
|
103
|
-
|
|
104
|
-
((failures += 1))
|
|
105
|
-
if ((failures == 4)); then
|
|
106
|
-
printf 'inbox: DEGRADED after 4 consecutive poll failures; inbox may be stale\n'
|
|
107
|
-
fi
|
|
108
|
-
finish_poll
|
|
109
|
-
done
|