@hasna/skills 0.1.60 → 0.1.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +189 -60
- package/agent-skills/README.md +41 -0
- package/agent-skills/fleet-package-rollout/SKILL.md +169 -0
- package/agent-skills/inbox/SKILL.md +25 -0
- package/agent-skills/inbox/scripts/inbox +109 -0
- package/agent-skills/inbox/tests/test_registered_sender_id.sh +92 -0
- package/agent-skills/inbox-monitor/SKILL.md +41 -0
- package/agent-skills/inbox-monitor/scripts/inbox_monitor.sh +91 -0
- package/agent-skills/inbox-monitor/scripts/test_inbox_monitor.sh +71 -0
- package/agent-skills/merge-pr/SKILL.md +85 -0
- package/agent-skills/merge-pr/references/merge-safety.md +82 -0
- package/agent-skills/merge-pr/scripts/merge_pr_guard.py +694 -0
- package/agent-skills/merge-pr/scripts/test_merge_pr_guard.py +647 -0
- package/agent-skills/merge-pr/tests/fixtures/multi-commit-synthesized.json +28 -0
- package/agent-skills/merge-pr/tests/fixtures/trailer-free-provider.json +28 -0
- package/agent-skills/skill-goal-execute/SKILL.md +115 -0
- package/agent-skills/skill-login/SKILL.md +109 -0
- package/agent-skills/skill-project-create/SKILL.md +91 -0
- package/agent-skills/skill-publish/SKILL.md +207 -0
- package/bin/index.js +2406 -3336
- package/bin/mcp.js +1127 -2641
- package/bin/migrate.js +955 -33
- package/bin/server.js +2367 -1989
- package/bin/worker.js +2089 -151
- package/dist/cli/cli.test-utils.d.ts +13 -2
- package/dist/cli/commands/publish.d.ts +30 -0
- package/dist/cli/commands/registry.d.ts +8 -0
- package/dist/index.d.ts +8 -6
- package/dist/index.js +1734 -2720
- package/dist/lib/agent-sync.d.ts +123 -0
- package/dist/lib/api-url.d.ts +34 -0
- package/dist/lib/auth-store.d.ts +21 -5
- package/dist/lib/blog-article.d.ts +37 -0
- package/dist/lib/config.d.ts +56 -2
- package/dist/lib/content-scan.d.ts +62 -9
- package/dist/lib/discovery.d.ts +10 -10
- package/dist/lib/doc-derived-counts.d.ts +56 -0
- package/dist/lib/feedback.d.ts +7 -0
- package/dist/lib/file-bytes.d.ts +43 -0
- package/dist/lib/hosted-skill-set.d.ts +69 -0
- package/dist/lib/infra-identifiers.d.ts +144 -0
- package/dist/lib/installer.d.ts +20 -6
- package/dist/lib/native-storage.d.ts +14 -11
- package/dist/lib/packlist.d.ts +13 -0
- package/dist/lib/portable-skills-files.d.ts +25 -0
- package/dist/lib/portable-skills-types.d.ts +105 -0
- package/dist/lib/portable-skills.d.ts +52 -103
- package/dist/lib/pull.d.ts +41 -0
- package/dist/lib/registry-merge.d.ts +57 -0
- package/dist/lib/registry-types.d.ts +1 -14
- package/dist/lib/registry.d.ts +6 -3
- package/dist/lib/remote-client.d.ts +15 -1
- package/dist/lib/remote-registry.d.ts +1 -1
- package/dist/lib/remote-run-contract.d.ts +0 -7
- package/dist/lib/retired-settings.d.ts +100 -0
- package/dist/lib/run-state.d.ts +14 -0
- package/dist/lib/skill-aliases.d.ts +0 -12
- package/dist/lib/skill-bundle.d.ts +37 -0
- package/dist/lib/vendor-host-code-scan.d.ts +66 -0
- package/dist/lib/vendor-host-folding.d.ts +40 -0
- package/dist/lib/vendor-host-guard.d.ts +47 -0
- package/dist/lib/vendor-host-package.d.ts +42 -0
- package/dist/lib/vendor-host-policy.d.ts +96 -0
- package/dist/lib/vendor-host-url.d.ts +81 -0
- package/dist/mcp/mcp-test-client.d.ts +18 -0
- package/dist/storage.d.ts +1 -1
- package/dist/storage.js +104 -51
- package/docs/skill-standard.md +1 -1
- package/migrations/postgres/0002_org_scoped_skill_registry.sql +72 -0
- package/migrations/sqlite/0001_open_skills_self_hosted.sql +150 -0
- package/migrations/sqlite/0002_org_scoped_skill_registry.sql +47 -0
- package/package.json +4 -4
- package/skills/_common/http-client.ts +17 -2
- package/skills/_common/install.sh +2 -2
- package/skills/_common/installer.ts +4 -5
- package/skills/_common/skill-install.ts +3 -3
- package/skills/ad-creative-pack/SKILL.md +28 -18
- package/skills/ad-creative-pack/package.json +1 -2
- package/skills/analyze-data/SKILL.md +1 -1
- package/skills/analyze-data/src/formatters.ts +2 -2
- package/skills/api-docs-portal/SKILL.md +62 -24
- package/skills/api-docs-portal/package.json +28 -4
- package/skills/api-docs-portal/src/index.ts +919 -0
- package/skills/audio-extract/SKILL.md +1 -1
- package/skills/blog-article/SKILL.md +32 -22
- package/skills/blog-article/package.json +1 -2
- package/skills/brand-assets/SKILL.md +94 -33
- package/skills/brand-assets/package.json +28 -4
- package/skills/brand-assets/src/cli.ts +155 -0
- package/skills/brand-assets/src/constants.ts +8 -0
- package/skills/brand-assets/src/extract.ts +236 -0
- package/skills/brand-assets/src/index.ts +668 -0
- package/skills/brand-assets/src/types.ts +59 -0
- package/skills/brand-kit/SKILL.md +27 -18
- package/skills/brand-kit/package.json +1 -2
- package/skills/compress-video/SKILL.md +1 -1
- package/skills/contract-review-report/SKILL.md +27 -18
- package/skills/contract-review-report/package.json +1 -2
- package/skills/customer-feedback-report/SKILL.md +27 -19
- package/skills/customer-feedback-report/package.json +1 -2
- package/skills/email-sequence/SKILL.md +26 -17
- package/skills/email-sequence/package.json +1 -2
- package/skills/generate-sitemap/src/index.ts +1 -1
- package/skills/invoice-reconciliation/SKILL.md +75 -19
- package/skills/invoice-reconciliation/package.json +29 -4
- package/skills/invoice-reconciliation/src/index.ts +743 -0
- package/skills/{convert → invoice-reconciliation}/tsconfig.json +3 -1
- package/skills/landing-page-pack/SKILL.md +27 -19
- package/skills/landing-page-pack/package.json +1 -2
- package/skills/logo-design/SKILL.md +69 -26
- package/skills/logo-design/package.json +28 -4
- package/skills/logo-design/src/cli.ts +132 -0
- package/skills/logo-design/src/constants.ts +5 -0
- package/skills/logo-design/src/docs.ts +102 -0
- package/skills/logo-design/src/geometry.ts +324 -0
- package/skills/logo-design/src/index.ts +212 -0
- package/skills/logo-design/src/palette.ts +258 -0
- package/skills/logo-design/src/types.ts +50 -0
- package/skills/logo-design/tsconfig.json +11 -2
- package/skills/market-research-report/SKILL.md +28 -18
- package/skills/market-research-report/package.json +2 -3
- package/skills/meeting-pack/SKILL.md +26 -17
- package/skills/meeting-pack/package.json +1 -2
- package/skills/merge-pdfs/src/index.ts +1 -1
- package/skills/migration-plan-pack/SKILL.md +30 -19
- package/skills/migration-plan-pack/package.json +1 -2
- package/skills/one-page-website/SKILL.md +105 -23
- package/skills/one-page-website/package.json +27 -4
- package/skills/one-page-website/src/design.ts +336 -0
- package/skills/one-page-website/src/docs.ts +159 -0
- package/skills/one-page-website/src/index.ts +357 -0
- package/skills/one-page-website/src/page.ts +340 -0
- package/skills/one-page-website/src/styles.ts +508 -0
- package/skills/one-page-website/src/types.ts +78 -0
- package/skills/one-page-website/tsconfig.json +11 -2
- package/skills/pdf-generate/SKILL.md +1 -1
- package/skills/pdf-to-dataset/SKILL.md +64 -21
- package/skills/pdf-to-dataset/package.json +30 -4
- package/skills/pdf-to-dataset/src/index.ts +790 -0
- package/skills/{emoji → pdf-to-dataset}/tsconfig.json +3 -4
- package/skills/pdf-to-markdown/SKILL.md +55 -23
- package/skills/pdf-to-markdown/package.json +28 -4
- package/skills/pdf-to-markdown/src/index.ts +694 -0
- package/skills/pdf-to-markdown/tsconfig.json +11 -4
- package/skills/performance-audit-report/SKILL.md +24 -17
- package/skills/performance-audit-report/package.json +1 -2
- package/skills/pitch-deck/SKILL.md +27 -19
- package/skills/pitch-deck/package.json +1 -2
- package/skills/product-mockup/SKILL.md +85 -23
- package/skills/product-mockup/package.json +25 -4
- package/skills/product-mockup/src/cli.ts +150 -0
- package/skills/product-mockup/src/design.ts +151 -0
- package/skills/product-mockup/src/docs.ts +134 -0
- package/skills/product-mockup/src/index.ts +182 -0
- package/skills/product-mockup/src/render.ts +407 -0
- package/skills/product-mockup/src/types.ts +66 -0
- package/skills/product-mockup/tsconfig.json +11 -2
- package/skills/proposal-pack/SKILL.md +27 -19
- package/skills/proposal-pack/package.json +2 -3
- package/skills/repo-onboarding-report/SKILL.md +26 -16
- package/skills/repo-onboarding-report/package.json +1 -2
- package/skills/security-audit/src/index.ts +1 -1
- package/skills/security-audit-report/SKILL.md +28 -16
- package/skills/security-audit-report/package.json +2 -3
- package/skills/seo-content-pack/SKILL.md +27 -17
- package/skills/seo-content-pack/package.json +1 -2
- package/skills/slide-deck-generator/SKILL.md +70 -21
- package/skills/slide-deck-generator/package.json +31 -4
- package/skills/slide-deck-generator/src/cli.ts +133 -0
- package/skills/slide-deck-generator/src/index.ts +148 -0
- package/skills/slide-deck-generator/src/model.ts +307 -0
- package/skills/slide-deck-generator/src/pptx.ts +143 -0
- package/skills/slide-deck-generator/src/render.ts +248 -0
- package/skills/slide-deck-generator/src/types.ts +114 -0
- package/skills/slide-deck-generator/src/utils.ts +53 -0
- package/skills/slide-deck-generator/tsconfig.json +17 -0
- package/skills/social-content-calendar/SKILL.md +27 -18
- package/skills/social-content-calendar/package.json +1 -2
- package/skills/split-pdf/src/index.ts +1 -1
- package/skills/test-suite-generator/SKILL.md +26 -16
- package/skills/test-suite-generator/package.json +2 -3
- package/skills/todos-plan/SKILL.md +339 -170
- package/skills/video-highlight-pack/SKILL.md +27 -17
- package/skills/video-highlight-pack/package.json +1 -2
- package/dist/cli/onboarding.d.ts +0 -13
- package/dist/lib/hosted-availability.d.ts +0 -13
- package/dist/lib/pricing.d.ts +0 -89
- package/skills/academic-journal-matcher/CLAUDE.md +0 -19
- package/skills/academic-journal-matcher/package.json +0 -27
- package/skills/academic-journal-matcher/src/index.ts +0 -86
- package/skills/academic-journal-matcher/tsconfig.json +0 -10
- package/skills/action-item-router/CLAUDE.md +0 -19
- package/skills/action-item-router/package.json +0 -27
- package/skills/action-item-router/src/index.ts +0 -304
- package/skills/action-item-router/tsconfig.json +0 -10
- package/skills/ad-creative-generator/CLAUDE.md +0 -19
- package/skills/ad-creative-generator/package.json +0 -27
- package/skills/ad-creative-generator/src/index.ts +0 -419
- package/skills/ad-creative-generator/tsconfig.json +0 -10
- package/skills/advanced-math/CLAUDE.md +0 -19
- package/skills/advanced-math/package.json +0 -29
- package/skills/advanced-math/src/calculators.ts +0 -118
- package/skills/advanced-math/src/cli.ts +0 -130
- package/skills/advanced-math/src/conversion.ts +0 -90
- package/skills/advanced-math/src/finance.ts +0 -75
- package/skills/advanced-math/src/formatting.ts +0 -95
- package/skills/advanced-math/src/index.ts +0 -133
- package/skills/advanced-math/src/runtime.ts +0 -49
- package/skills/advanced-math/src/symbolic.ts +0 -110
- package/skills/advanced-math/src/types.ts +0 -36
- package/skills/advanced-math/tsconfig.json +0 -10
- package/skills/anomaly-investigator/CLAUDE.md +0 -19
- package/skills/anomaly-investigator/package.json +0 -27
- package/skills/anomaly-investigator/src/index.ts +0 -311
- package/skills/anomaly-investigator/tsconfig.json +0 -10
- package/skills/apidocs/.env.example +0 -8
- package/skills/apidocs/CLAUDE.md +0 -278
- package/skills/apidocs/LICENSE +0 -192
- package/skills/apidocs/README.md +0 -196
- package/skills/apidocs/api-docs-list.json +0 -186
- package/skills/apidocs/package.json +0 -53
- package/skills/apidocs/scripts/crawl-all.ts +0 -157
- package/skills/apidocs/scripts/publish.ts +0 -210
- package/skills/apidocs/src/commands/add.ts +0 -279
- package/skills/apidocs/src/commands/endpoints.ts +0 -157
- package/skills/apidocs/src/commands/list.ts +0 -51
- package/skills/apidocs/src/commands/query.ts +0 -63
- package/skills/apidocs/src/commands/remove.ts +0 -39
- package/skills/apidocs/src/commands/sync.ts +0 -227
- package/skills/apidocs/src/index.ts +0 -3
- package/skills/apidocs/src/lib/crawler.ts +0 -427
- package/skills/apidocs/src/lib/discovery.ts +0 -244
- package/skills/apidocs/src/lib/embeddings.ts +0 -136
- package/skills/apidocs/src/lib/endpoint-extractor.ts +0 -359
- package/skills/apidocs/src/lib/html-to-md.ts +0 -163
- package/skills/apidocs/src/lib/parser.ts +0 -288
- package/skills/apidocs/src/lib/search.ts +0 -189
- package/skills/apidocs/src/lib/storage.ts +0 -242
- package/skills/apidocs/src/lib/vectors-local.ts +0 -220
- package/skills/apidocs/src/lib/vectors-s3.ts +0 -255
- package/skills/apidocs/src/lib/vectors.ts +0 -97
- package/skills/apidocs/src/types/index.ts +0 -297
- package/skills/apidocs/src/utils/output.ts +0 -132
- package/skills/apidocs/src/utils/paths.ts +0 -126
- package/skills/apidocs/tsconfig.json +0 -24
- package/skills/audio/SKILL.md +0 -35
- package/skills/audio/package.json +0 -11
- package/skills/audio-cleanup-lab/CLAUDE.md +0 -3
- package/skills/audio-cleanup-lab/SKILL.md +0 -81
- package/skills/audio-cleanup-lab/package.json +0 -23
- package/skills/audio-cleanup-lab/src/index.ts +0 -274
- package/skills/audio-cleanup-lab/tsconfig.json +0 -14
- package/skills/audio-transcript-pack/SKILL.md +0 -43
- package/skills/audio-transcript-pack/package.json +0 -11
- package/skills/banner-ad-suite/CLAUDE.md +0 -19
- package/skills/banner-ad-suite/package.json +0 -27
- package/skills/banner-ad-suite/src/index.ts +0 -331
- package/skills/banner-ad-suite/tsconfig.json +0 -10
- package/skills/benchmark-finder/CLAUDE.md +0 -19
- package/skills/benchmark-finder/package.json +0 -27
- package/skills/benchmark-finder/src/index.ts +0 -294
- package/skills/benchmark-finder/tsconfig.json +0 -10
- package/skills/blog-topic-cluster/CLAUDE.md +0 -19
- package/skills/blog-topic-cluster/package.json +0 -27
- package/skills/blog-topic-cluster/src/index.ts +0 -274
- package/skills/blog-topic-cluster/tsconfig.json +0 -10
- package/skills/brand-photo-shoot/SKILL.md +0 -28
- package/skills/brand-photo-shoot/package.json +0 -11
- package/skills/brand-style-guide/CLAUDE.md +0 -20
- package/skills/brand-style-guide/SKILL.md +0 -13
- package/skills/brand-style-guide/package.json +0 -26
- package/skills/brand-style-guide/src/index.ts +0 -288
- package/skills/brand-style-guide/tsconfig.json +0 -22
- package/skills/brand-voice-audit/CLAUDE.md +0 -19
- package/skills/brand-voice-audit/package.json +0 -27
- package/skills/brand-voice-audit/src/index.ts +0 -302
- package/skills/brand-voice-audit/tsconfig.json +0 -10
- package/skills/browse/LICENSE +0 -192
- package/skills/browse/README.md +0 -25
- package/skills/browse/SKILL.md +0 -35
- package/skills/browse/package.json +0 -11
- package/skills/browse/tsconfig.json +0 -22
- package/skills/budget-variance-analyzer/CLAUDE.md +0 -16
- package/skills/budget-variance-analyzer/SKILL.md +0 -83
- package/skills/budget-variance-analyzer/package.json +0 -24
- package/skills/budget-variance-analyzer/src/index.ts +0 -298
- package/skills/budget-variance-analyzer/tsconfig.json +0 -21
- package/skills/calendar-events/CLAUDE.md +0 -19
- package/skills/calendar-events/package.json +0 -27
- package/skills/calendar-events/src/ai-parser.ts +0 -103
- package/skills/calendar-events/src/api.ts +0 -157
- package/skills/calendar-events/src/auth.ts +0 -22
- package/skills/calendar-events/src/config.ts +0 -6
- package/skills/calendar-events/src/format.ts +0 -96
- package/skills/calendar-events/src/help.ts +0 -54
- package/skills/calendar-events/src/index.ts +0 -415
- package/skills/calendar-events/src/logger.ts +0 -34
- package/skills/calendar-events/src/types.ts +0 -67
- package/skills/calendar-events/tsconfig.json +0 -10
- package/skills/campaign-metric-brief/CLAUDE.md +0 -19
- package/skills/campaign-metric-brief/package.json +0 -27
- package/skills/campaign-metric-brief/src/index.ts +0 -307
- package/skills/campaign-metric-brief/tsconfig.json +0 -10
- package/skills/campaign-moodboard/CLAUDE.md +0 -19
- package/skills/campaign-moodboard/package.json +0 -27
- package/skills/campaign-moodboard/src/index.ts +0 -288
- package/skills/campaign-moodboard/tsconfig.json +0 -10
- package/skills/caption-style-stylist/CLAUDE.md +0 -19
- package/skills/caption-style-stylist/package.json +0 -27
- package/skills/caption-style-stylist/src/index.ts +0 -275
- package/skills/caption-style-stylist/tsconfig.json +0 -10
- package/skills/chemistry-calculator/CLAUDE.md +0 -19
- package/skills/chemistry-calculator/package.json +0 -27
- package/skills/chemistry-calculator/src/index.ts +0 -110
- package/skills/chemistry-calculator/tsconfig.json +0 -10
- package/skills/churn-risk-notifier/CLAUDE.md +0 -19
- package/skills/churn-risk-notifier/package.json +0 -27
- package/skills/churn-risk-notifier/src/index.ts +0 -308
- package/skills/churn-risk-notifier/tsconfig.json +0 -10
- package/skills/citation-formatter/CLAUDE.md +0 -19
- package/skills/citation-formatter/package.json +0 -27
- package/skills/citation-formatter/src/index.ts +0 -83
- package/skills/citation-formatter/tsconfig.json +0 -10
- package/skills/classroom-newsletter-kit/CLAUDE.md +0 -19
- package/skills/classroom-newsletter-kit/package.json +0 -27
- package/skills/classroom-newsletter-kit/src/index.ts +0 -293
- package/skills/classroom-newsletter-kit/tsconfig.json +0 -10
- package/skills/color-palette-harmonizer/CLAUDE.md +0 -19
- package/skills/color-palette-harmonizer/package.json +0 -27
- package/skills/color-palette-harmonizer/src/index.ts +0 -278
- package/skills/color-palette-harmonizer/tsconfig.json +0 -10
- package/skills/colorextract/SKILL.md +0 -35
- package/skills/colorextract/bun.lock +0 -102
- package/skills/colorextract/package.json +0 -25
- package/skills/colorextract/src/index.ts +0 -405
- package/skills/competitor-ad-analyzer/CLAUDE.md +0 -19
- package/skills/competitor-ad-analyzer/package.json +0 -27
- package/skills/competitor-ad-analyzer/src/index.ts +0 -350
- package/skills/competitor-ad-analyzer/tsconfig.json +0 -10
- package/skills/compliance-copy-check/CLAUDE.md +0 -19
- package/skills/compliance-copy-check/package.json +0 -27
- package/skills/compliance-copy-check/src/index.ts +0 -289
- package/skills/compliance-copy-check/tsconfig.json +0 -10
- package/skills/compliance-report-pack/CLAUDE.md +0 -19
- package/skills/compliance-report-pack/package.json +0 -27
- package/skills/compliance-report-pack/src/index.ts +0 -301
- package/skills/compliance-report-pack/tsconfig.json +0 -10
- package/skills/consolelog/.env.example +0 -19
- package/skills/consolelog/CLAUDE.md +0 -157
- package/skills/consolelog/LICENSE +0 -192
- package/skills/consolelog/README.md +0 -239
- package/skills/consolelog/data/.gitkeep +0 -0
- package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.csv +0 -16
- package/skills/consolelog/exports/products-2025-12-14T13-50-53-041Z.json +0 -227
- package/skills/consolelog/package.json +0 -40
- package/skills/consolelog/scripts/migrate.ts +0 -26
- package/skills/consolelog/scripts/seed.ts +0 -48
- package/skills/consolelog/src/db/index.ts +0 -44
- package/skills/consolelog/src/db/queries.ts +0 -348
- package/skills/consolelog/src/db/schema.ts +0 -93
- package/skills/consolelog/src/index.ts +0 -3
- package/skills/consolelog/src/lib/config.ts +0 -110
- package/skills/consolelog/src/lib/installer.ts +0 -294
- package/skills/consolelog/src/lib/monitor.ts +0 -194
- package/skills/consolelog/src/lib/types.ts +0 -189
- package/skills/consolelog/src/lib/watcher.ts +0 -207
- package/skills/consolelog/tests/api.test.ts +0 -154
- package/skills/consolelog/tests/config.test.ts +0 -192
- package/skills/consolelog/tests/db.test.ts +0 -447
- package/skills/consolelog/tests/installer.test.ts +0 -155
- package/skills/consolelog/tsconfig.json +0 -24
- package/skills/contract-plainlanguage/CLAUDE.md +0 -19
- package/skills/contract-plainlanguage/package.json +0 -27
- package/skills/contract-plainlanguage/src/index.ts +0 -294
- package/skills/contract-plainlanguage/tsconfig.json +0 -10
- package/skills/convert/.env.example +0 -7
- package/skills/convert/LICENSE +0 -192
- package/skills/convert/README.md +0 -250
- package/skills/convert/SKILL.md +0 -106
- package/skills/convert/package.json +0 -37
- package/skills/convert/src/converters/ai.ts +0 -375
- package/skills/convert/src/converters/data.ts +0 -339
- package/skills/convert/src/converters/document.ts +0 -189
- package/skills/convert/src/converters/image.ts +0 -227
- package/skills/convert/src/converters/index.ts +0 -9
- package/skills/convert/src/converters/pdf.ts +0 -255
- package/skills/convert/src/index-local.ts +0 -568
- package/skills/convert/src/index.ts +0 -4
- package/skills/convert/src/types.ts +0 -192
- package/skills/copytone-translator/CLAUDE.md +0 -19
- package/skills/copytone-translator/package.json +0 -27
- package/skills/copytone-translator/src/index.ts +0 -295
- package/skills/copytone-translator/tsconfig.json +0 -10
- package/skills/create-ebook/CLAUDE.md +0 -19
- package/skills/create-ebook/package.json +0 -27
- package/skills/create-ebook/src/index.ts +0 -637
- package/skills/create-ebook/tsconfig.json +0 -10
- package/skills/crm-note-enhancer/CLAUDE.md +0 -19
- package/skills/crm-note-enhancer/package.json +0 -27
- package/skills/crm-note-enhancer/src/index.ts +0 -317
- package/skills/crm-note-enhancer/tsconfig.json +0 -10
- package/skills/customer-journey-mapper/CLAUDE.md +0 -19
- package/skills/customer-journey-mapper/package.json +0 -27
- package/skills/customer-journey-mapper/src/index.ts +0 -312
- package/skills/customer-journey-mapper/tsconfig.json +0 -10
- package/skills/dashboard-narrator/CLAUDE.md +0 -19
- package/skills/dashboard-narrator/package.json +0 -27
- package/skills/dashboard-narrator/src/index.ts +0 -307
- package/skills/dashboard-narrator/tsconfig.json +0 -10
- package/skills/dataset-health-check/CLAUDE.md +0 -19
- package/skills/dataset-health-check/package.json +0 -27
- package/skills/dataset-health-check/src/index.ts +0 -323
- package/skills/dataset-health-check/tsconfig.json +0 -10
- package/skills/decision-journal/CLAUDE.md +0 -19
- package/skills/decision-journal/package.json +0 -27
- package/skills/decision-journal/src/index.ts +0 -313
- package/skills/decision-journal/tsconfig.json +0 -10
- package/skills/deepresearch/CLAUDE.md +0 -11
- package/skills/deepresearch/README.md +0 -26
- package/skills/deepresearch/SKILL.md +0 -41
- package/skills/deepresearch/package.json +0 -11
- package/skills/deepresearch/tsconfig.json +0 -29
- package/skills/delegation-brief-writer/CLAUDE.md +0 -19
- package/skills/delegation-brief-writer/package.json +0 -27
- package/skills/delegation-brief-writer/src/index.ts +0 -314
- package/skills/delegation-brief-writer/tsconfig.json +0 -10
- package/skills/deploy/LICENSE +0 -192
- package/skills/deploy/README.md +0 -382
- package/skills/deploy/SKILL.md +0 -138
- package/skills/deploy/package.json +0 -18
- package/skills/deploy/src/deployer.ts +0 -256
- package/skills/deploy/src/health.ts +0 -103
- package/skills/deploy/src/hosts.ts +0 -45
- package/skills/deploy/src/http-client.ts +0 -128
- package/skills/deploy/src/index-local.ts +0 -366
- package/skills/deploy/src/index.ts +0 -4
- package/skills/deploy/src/types.ts +0 -56
- package/skills/deploy/tsconfig.json +0 -18
- package/skills/destination-briefing/CLAUDE.md +0 -19
- package/skills/destination-briefing/package.json +0 -27
- package/skills/destination-briefing/src/index.ts +0 -291
- package/skills/destination-briefing/tsconfig.json +0 -10
- package/skills/doc-generate/CLAUDE.md +0 -19
- package/skills/doc-generate/SKILL.md +0 -295
- package/skills/doc-generate/package.json +0 -23
- package/skills/doc-generate/src/ai.ts +0 -50
- package/skills/doc-generate/src/cli.ts +0 -203
- package/skills/doc-generate/src/dependencies.ts +0 -44
- package/skills/doc-generate/src/document-builder.ts +0 -299
- package/skills/doc-generate/src/index.ts +0 -90
- package/skills/doc-generate/src/markdown-parser.ts +0 -125
- package/skills/doc-generate/src/types.ts +0 -68
- package/skills/doc-generate/tsconfig.json +0 -16
- package/skills/domainsearch/.env.example +0 -7
- package/skills/domainsearch/LICENSE +0 -192
- package/skills/domainsearch/SKILL.md +0 -41
- package/skills/domainsearch/package.json +0 -33
- package/skills/domainsearch/src/index.ts +0 -3
- package/skills/domainsearch/src/lib/api-client.ts +0 -181
- package/skills/domainsearch/src/lib/config.ts +0 -72
- package/skills/domainsearch/src/lib/installer.ts +0 -164
- package/skills/domainsearch/tsconfig.json +0 -22
- package/skills/educational-resource-finder/CLAUDE.md +0 -19
- package/skills/educational-resource-finder/package.json +0 -27
- package/skills/educational-resource-finder/src/index.ts +0 -289
- package/skills/educational-resource-finder/tsconfig.json +0 -10
- package/skills/email-campaign/CLAUDE.md +0 -19
- package/skills/email-campaign/package.json +0 -27
- package/skills/email-campaign/src/index.ts +0 -339
- package/skills/email-campaign/tsconfig.json +0 -10
- package/skills/emoji/.env.example +0 -7
- package/skills/emoji/QUICKSTART.md +0 -52
- package/skills/emoji/README.md +0 -175
- package/skills/emoji/SKILL.md +0 -63
- package/skills/emoji/package.json +0 -31
- package/skills/emoji/src/image-processor.ts +0 -143
- package/skills/emoji/src/index.ts +0 -282
- package/skills/emoji/src/prompt-generator.ts +0 -181
- package/skills/emoji/src/providers/gemini.ts +0 -58
- package/skills/emoji/src/providers/openai.ts +0 -55
- package/skills/emoji/src/types.ts +0 -72
- package/skills/exam-readiness-check/CLAUDE.md +0 -19
- package/skills/exam-readiness-check/package.json +0 -27
- package/skills/exam-readiness-check/src/index.ts +0 -289
- package/skills/exam-readiness-check/tsconfig.json +0 -10
- package/skills/excel/CLAUDE.md +0 -19
- package/skills/excel/SKILL.md +0 -38
- package/skills/excel/package.json +0 -30
- package/skills/excel/src/index.ts +0 -644
- package/skills/excel/tsconfig.json +0 -10
- package/skills/extract/.env.example +0 -3
- package/skills/extract/LICENSE +0 -192
- package/skills/extract/README.md +0 -61
- package/skills/extract/SKILL.md +0 -91
- package/skills/extract/package.json +0 -35
- package/skills/extract/src/extractors/image.ts +0 -42
- package/skills/extract/src/extractors/pdf.ts +0 -96
- package/skills/extract/src/index-local.ts +0 -258
- package/skills/extract/src/index.ts +0 -4
- package/skills/extract/src/providers/openai.ts +0 -222
- package/skills/extract/src/types.ts +0 -61
- package/skills/extract/tsconfig.json +0 -19
- package/skills/extract-invoice/CLAUDE.md +0 -19
- package/skills/extract-invoice/package.json +0 -27
- package/skills/extract-invoice/src/cli.ts +0 -97
- package/skills/extract-invoice/src/extractor.ts +0 -170
- package/skills/extract-invoice/src/file-utils.ts +0 -46
- package/skills/extract-invoice/src/formatters.ts +0 -144
- package/skills/extract-invoice/src/index.ts +0 -129
- package/skills/extract-invoice/src/runtime.ts +0 -46
- package/skills/extract-invoice/src/types.ts +0 -88
- package/skills/extract-invoice/tsconfig.json +0 -10
- package/skills/family-activity-curator/CLAUDE.md +0 -19
- package/skills/family-activity-curator/package.json +0 -27
- package/skills/family-activity-curator/src/index.ts +0 -293
- package/skills/family-activity-curator/tsconfig.json +0 -10
- package/skills/faq-packager/CLAUDE.md +0 -19
- package/skills/faq-packager/package.json +0 -27
- package/skills/faq-packager/src/index.ts +0 -292
- package/skills/faq-packager/tsconfig.json +0 -10
- package/skills/feedback-survey-designer/CLAUDE.md +0 -19
- package/skills/feedback-survey-designer/package.json +0 -27
- package/skills/feedback-survey-designer/src/index.ts +0 -299
- package/skills/feedback-survey-designer/tsconfig.json +0 -10
- package/skills/field-trip-planner/CLAUDE.md +0 -19
- package/skills/field-trip-planner/package.json +0 -27
- package/skills/field-trip-planner/src/index.ts +0 -289
- package/skills/field-trip-planner/tsconfig.json +0 -10
- package/skills/forecast-scenario-lab/CLAUDE.md +0 -19
- package/skills/forecast-scenario-lab/package.json +0 -27
- package/skills/forecast-scenario-lab/src/index.ts +0 -314
- package/skills/forecast-scenario-lab/tsconfig.json +0 -10
- package/skills/generate-book-cover/CLAUDE.md +0 -19
- package/skills/generate-book-cover/package.json +0 -11
- package/skills/generate-book-cover/tsconfig.json +0 -10
- package/skills/generate-diagram/CLAUDE.md +0 -19
- package/skills/generate-diagram/package.json +0 -27
- package/skills/generate-diagram/src/index.ts +0 -514
- package/skills/generate-diagram/tsconfig.json +0 -10
- package/skills/generate-documentation/CLAUDE.md +0 -19
- package/skills/generate-documentation/package.json +0 -27
- package/skills/generate-documentation/src/ai.ts +0 -131
- package/skills/generate-documentation/src/cli.ts +0 -71
- package/skills/generate-documentation/src/code-parser.ts +0 -300
- package/skills/generate-documentation/src/file-processing.ts +0 -182
- package/skills/generate-documentation/src/index.ts +0 -65
- package/skills/generate-documentation/src/runtime.ts +0 -35
- package/skills/generate-documentation/src/types.ts +0 -30
- package/skills/generate-documentation/tsconfig.json +0 -10
- package/skills/generate-mock-data/CLAUDE.md +0 -19
- package/skills/generate-mock-data/package.json +0 -29
- package/skills/generate-mock-data/src/ai.ts +0 -102
- package/skills/generate-mock-data/src/formatters.ts +0 -84
- package/skills/generate-mock-data/src/generator.ts +0 -377
- package/skills/generate-mock-data/src/index.ts +0 -201
- package/skills/generate-mock-data/src/logger.ts +0 -37
- package/skills/generate-mock-data/src/presets.ts +0 -110
- package/skills/generate-mock-data/src/types.ts +0 -21
- package/skills/generate-mock-data/tsconfig.json +0 -10
- package/skills/generate-pr-description/CLAUDE.md +0 -19
- package/skills/generate-pr-description/package.json +0 -27
- package/skills/generate-pr-description/src/ai.ts +0 -144
- package/skills/generate-pr-description/src/cli.ts +0 -80
- package/skills/generate-pr-description/src/clipboard.ts +0 -30
- package/skills/generate-pr-description/src/formatters.ts +0 -231
- package/skills/generate-pr-description/src/git.ts +0 -153
- package/skills/generate-pr-description/src/index.ts +0 -114
- package/skills/generate-pr-description/src/types.ts +0 -49
- package/skills/generate-pr-description/tsconfig.json +0 -10
- package/skills/generate-presentation/CLAUDE.md +0 -19
- package/skills/generate-presentation/package.json +0 -27
- package/skills/generate-presentation/src/ai-clients.ts +0 -61
- package/skills/generate-presentation/src/cli.ts +0 -126
- package/skills/generate-presentation/src/index.ts +0 -44
- package/skills/generate-presentation/src/logger.ts +0 -67
- package/skills/generate-presentation/src/presentation-generator.ts +0 -425
- package/skills/generate-presentation/src/runtime.ts +0 -6
- package/skills/generate-presentation/src/security.ts +0 -12
- package/skills/generate-presentation/src/types.ts +0 -28
- package/skills/generate-presentation/tsconfig.json +0 -10
- package/skills/generate-regex/CLAUDE.md +0 -19
- package/skills/generate-regex/package.json +0 -29
- package/skills/generate-regex/src/index.ts +0 -669
- package/skills/generate-regex/tsconfig.json +0 -10
- package/skills/generate-social-posts/CLAUDE.md +0 -19
- package/skills/generate-social-posts/package.json +0 -27
- package/skills/generate-social-posts/src/ai.ts +0 -88
- package/skills/generate-social-posts/src/cli.ts +0 -118
- package/skills/generate-social-posts/src/exporters.ts +0 -126
- package/skills/generate-social-posts/src/generator.ts +0 -130
- package/skills/generate-social-posts/src/index.ts +0 -78
- package/skills/generate-social-posts/src/platforms.ts +0 -39
- package/skills/generate-social-posts/src/runtime.ts +0 -34
- package/skills/generate-social-posts/src/source.ts +0 -116
- package/skills/generate-social-posts/src/types.ts +0 -58
- package/skills/generate-social-posts/tsconfig.json +0 -10
- package/skills/generate-sql/CLAUDE.md +0 -19
- package/skills/generate-sql/package.json +0 -27
- package/skills/generate-sql/src/index.ts +0 -636
- package/skills/generate-sql/tsconfig.json +0 -10
- package/skills/github-manager/CLAUDE.md +0 -19
- package/skills/github-manager/package.json +0 -29
- package/skills/github-manager/src/index.ts +0 -101
- package/skills/github-manager/tsconfig.json +0 -10
- package/skills/gmail/CLAUDE.md +0 -19
- package/skills/gmail/package.json +0 -27
- package/skills/gmail/src/index.ts +0 -410
- package/skills/gmail/tsconfig.json +0 -10
- package/skills/goal-quarterly-roadmap/CLAUDE.md +0 -19
- package/skills/goal-quarterly-roadmap/package.json +0 -27
- package/skills/goal-quarterly-roadmap/src/index.ts +0 -305
- package/skills/goal-quarterly-roadmap/tsconfig.json +0 -10
- package/skills/grant-application-drafter/CLAUDE.md +0 -19
- package/skills/grant-application-drafter/package.json +0 -27
- package/skills/grant-application-drafter/src/index.ts +0 -309
- package/skills/grant-application-drafter/tsconfig.json +0 -10
- package/skills/grocery-basket-optimizer/CLAUDE.md +0 -19
- package/skills/grocery-basket-optimizer/package.json +0 -27
- package/skills/grocery-basket-optimizer/src/index.ts +0 -304
- package/skills/grocery-basket-optimizer/tsconfig.json +0 -10
- package/skills/guest-communication-suite/CLAUDE.md +0 -19
- package/skills/guest-communication-suite/package.json +0 -27
- package/skills/guest-communication-suite/src/index.ts +0 -312
- package/skills/guest-communication-suite/tsconfig.json +0 -10
- package/skills/habit-reflection-digest/CLAUDE.md +0 -19
- package/skills/habit-reflection-digest/package.json +0 -27
- package/skills/habit-reflection-digest/src/index.ts +0 -308
- package/skills/habit-reflection-digest/tsconfig.json +0 -10
- package/skills/highlight-reel-generator/CLAUDE.md +0 -19
- package/skills/highlight-reel-generator/package.json +0 -27
- package/skills/highlight-reel-generator/src/index.ts +0 -286
- package/skills/highlight-reel-generator/tsconfig.json +0 -10
- package/skills/homework-feedback-coach/CLAUDE.md +0 -19
- package/skills/homework-feedback-coach/package.json +0 -27
- package/skills/homework-feedback-coach/src/index.ts +0 -316
- package/skills/homework-feedback-coach/tsconfig.json +0 -10
- package/skills/household-maintenance-mgr/CLAUDE.md +0 -19
- package/skills/household-maintenance-mgr/package.json +0 -27
- package/skills/household-maintenance-mgr/src/index.ts +0 -293
- package/skills/household-maintenance-mgr/tsconfig.json +0 -10
- package/skills/icon-pack/README.md +0 -28
- package/skills/icon-pack/SKILL.md +0 -23
- package/skills/icon-pack/package.json +0 -11
- package/skills/icon-pack/tsconfig.json +0 -20
- package/skills/image/LICENSE +0 -192
- package/skills/image/README.md +0 -25
- package/skills/image/SKILL.md +0 -49
- package/skills/image/examples/aurora-examples.sh +0 -33
- package/skills/image/examples/google-examples.sh +0 -37
- package/skills/image/examples/openai-examples.sh +0 -35
- package/skills/image/package.json +0 -11
- package/skills/image/tsconfig.json +0 -19
- package/skills/implementation-agent/CLAUDE.md +0 -19
- package/skills/implementation-agent/package.json +0 -29
- package/skills/implementation-agent/src/ai-generation.ts +0 -225
- package/skills/implementation-agent/src/index.ts +0 -608
- package/skills/implementation-agent/src/minimist.d.ts +0 -15
- package/skills/implementation-agent/src/templates.ts +0 -686
- package/skills/implementation-agent/src/types.ts +0 -53
- package/skills/implementation-agent/tsconfig.json +0 -10
- package/skills/inbox-priority-planner/CLAUDE.md +0 -19
- package/skills/inbox-priority-planner/package.json +0 -27
- package/skills/inbox-priority-planner/src/index.ts +0 -309
- package/skills/inbox-priority-planner/tsconfig.json +0 -10
- package/skills/invoice-dispute-helper/CLAUDE.md +0 -19
- package/skills/invoice-dispute-helper/package.json +0 -27
- package/skills/invoice-dispute-helper/src/index.ts +0 -304
- package/skills/invoice-dispute-helper/tsconfig.json +0 -10
- package/skills/itinerary-architect/CLAUDE.md +0 -19
- package/skills/itinerary-architect/package.json +0 -27
- package/skills/itinerary-architect/src/index.ts +0 -313
- package/skills/itinerary-architect/tsconfig.json +0 -10
- package/skills/kpi-digest-generator/CLAUDE.md +0 -19
- package/skills/kpi-digest-generator/package.json +0 -27
- package/skills/kpi-digest-generator/src/index.ts +0 -318
- package/skills/kpi-digest-generator/tsconfig.json +0 -10
- package/skills/lab-notebook-formatter/CLAUDE.md +0 -19
- package/skills/lab-notebook-formatter/package.json +0 -27
- package/skills/lab-notebook-formatter/src/index.ts +0 -88
- package/skills/lab-notebook-formatter/tsconfig.json +0 -10
- package/skills/landing-page-copy/CLAUDE.md +0 -19
- package/skills/landing-page-copy/package.json +0 -27
- package/skills/landing-page-copy/src/index.ts +0 -400
- package/skills/landing-page-copy/tsconfig.json +0 -10
- package/skills/learning-style-profiler/CLAUDE.md +0 -19
- package/skills/learning-style-profiler/package.json +0 -27
- package/skills/learning-style-profiler/src/index.ts +0 -291
- package/skills/learning-style-profiler/tsconfig.json +0 -10
- package/skills/lesson-plan-customizer/CLAUDE.md +0 -19
- package/skills/lesson-plan-customizer/package.json +0 -27
- package/skills/lesson-plan-customizer/src/index.ts +0 -303
- package/skills/lesson-plan-customizer/tsconfig.json +0 -10
- package/skills/livestream-runofshow/CLAUDE.md +0 -19
- package/skills/livestream-runofshow/package.json +0 -27
- package/skills/livestream-runofshow/src/index.ts +0 -299
- package/skills/livestream-runofshow/tsconfig.json +0 -10
- package/skills/longform-structurer/CLAUDE.md +0 -19
- package/skills/longform-structurer/package.json +0 -27
- package/skills/longform-structurer/src/index.ts +0 -293
- package/skills/longform-structurer/tsconfig.json +0 -10
- package/skills/managehook/.env.example +0 -16
- package/skills/managehook/CLAUDE.md +0 -48
- package/skills/managehook/README.md +0 -210
- package/skills/managehook/package.json +0 -24
- package/skills/managehook/scripts/migrate.ts +0 -57
- package/skills/managehook/scripts/seed.ts +0 -58
- package/skills/managehook/src/db/index.ts +0 -37
- package/skills/managehook/src/index.ts +0 -3
- package/skills/managehook/src/lib/api-client.ts +0 -108
- package/skills/managehook/src/lib/config.ts +0 -34
- package/skills/managehook/src/lib/installer.ts +0 -140
- package/skills/managehook/src/lib/service-dir.ts +0 -119
- package/skills/managehook/tsconfig.json +0 -29
- package/skills/manageskill/.env.example +0 -16
- package/skills/manageskill/CLAUDE.md +0 -48
- package/skills/manageskill/README.md +0 -210
- package/skills/manageskill/package.json +0 -24
- package/skills/manageskill/scripts/migrate.ts +0 -57
- package/skills/manageskill/scripts/seed.ts +0 -58
- package/skills/manageskill/src/db/index.ts +0 -37
- package/skills/manageskill/src/index.ts +0 -3
- package/skills/manageskill/src/lib/api-client.ts +0 -108
- package/skills/manageskill/src/lib/config.ts +0 -34
- package/skills/manageskill/src/lib/installer.ts +0 -140
- package/skills/manageskill/src/lib/service-dir.ts +0 -119
- package/skills/manageskill/tsconfig.json +0 -29
- package/skills/mcp-builder/CLAUDE.md +0 -19
- package/skills/mcp-builder/package.json +0 -30
- package/skills/mcp-builder/src/ai-descriptions.ts +0 -37
- package/skills/mcp-builder/src/generators.ts +0 -513
- package/skills/mcp-builder/src/index.ts +0 -62
- package/skills/mcp-builder/src/minimist.d.ts +0 -15
- package/skills/mcp-builder/src/naming.ts +0 -12
- package/skills/mcp-builder/src/options.ts +0 -170
- package/skills/mcp-builder/src/templates.ts +0 -149
- package/skills/mcp-builder/src/types.ts +0 -42
- package/skills/mcp-builder/tsconfig.json +0 -10
- package/skills/meal-plan-designer/CLAUDE.md +0 -19
- package/skills/meal-plan-designer/package.json +0 -27
- package/skills/meal-plan-designer/src/index.ts +0 -301
- package/skills/meal-plan-designer/tsconfig.json +0 -10
- package/skills/meeting-insight-summarizer/CLAUDE.md +0 -19
- package/skills/meeting-insight-summarizer/package.json +0 -27
- package/skills/meeting-insight-summarizer/src/index.ts +0 -316
- package/skills/meeting-insight-summarizer/tsconfig.json +0 -10
- package/skills/microcopy-generator/CLAUDE.md +0 -19
- package/skills/microcopy-generator/package.json +0 -27
- package/skills/microcopy-generator/src/index.ts +0 -303
- package/skills/microcopy-generator/tsconfig.json +0 -10
- package/skills/mindfulness-prompt-cache/CLAUDE.md +0 -19
- package/skills/mindfulness-prompt-cache/package.json +0 -27
- package/skills/mindfulness-prompt-cache/src/index.ts +0 -290
- package/skills/mindfulness-prompt-cache/tsconfig.json +0 -10
- package/skills/music/SKILL.md +0 -33
- package/skills/music/package.json +0 -11
- package/skills/music-album/SKILL.md +0 -37
- package/skills/music-album/package.json +0 -11
- package/skills/notion-manager/CLAUDE.md +0 -19
- package/skills/notion-manager/package.json +0 -29
- package/skills/notion-manager/src/index.ts +0 -105
- package/skills/notion-manager/tsconfig.json +0 -10
- package/skills/npmpublish/CLAUDE.md +0 -30
- package/skills/npmpublish/README.md +0 -83
- package/skills/npmpublish/SKILL.md +0 -70
- package/skills/npmpublish/package.json +0 -41
- package/skills/npmpublish/src/index.ts +0 -192
- package/skills/npmpublish/tsconfig.json +0 -18
- package/skills/onboarding-sequence-builder/CLAUDE.md +0 -19
- package/skills/onboarding-sequence-builder/package.json +0 -27
- package/skills/onboarding-sequence-builder/src/index.ts +0 -321
- package/skills/onboarding-sequence-builder/tsconfig.json +0 -10
- package/skills/onsite-ops-checklist/CLAUDE.md +0 -19
- package/skills/onsite-ops-checklist/package.json +0 -27
- package/skills/onsite-ops-checklist/src/index.ts +0 -307
- package/skills/onsite-ops-checklist/tsconfig.json +0 -10
- package/skills/outreach-cadence-designer/CLAUDE.md +0 -19
- package/skills/outreach-cadence-designer/package.json +0 -27
- package/skills/outreach-cadence-designer/src/index.ts +0 -330
- package/skills/outreach-cadence-designer/tsconfig.json +0 -10
- package/skills/packaging-concept-studio/CLAUDE.md +0 -19
- package/skills/packaging-concept-studio/package.json +0 -27
- package/skills/packaging-concept-studio/src/index.ts +0 -296
- package/skills/packaging-concept-studio/tsconfig.json +0 -10
- package/skills/packing-plan-pro/CLAUDE.md +0 -19
- package/skills/packing-plan-pro/package.json +0 -27
- package/skills/packing-plan-pro/src/index.ts +0 -306
- package/skills/packing-plan-pro/tsconfig.json +0 -10
- package/skills/parent-teacher-brief/CLAUDE.md +0 -19
- package/skills/parent-teacher-brief/package.json +0 -27
- package/skills/parent-teacher-brief/src/index.ts +0 -290
- package/skills/parent-teacher-brief/tsconfig.json +0 -10
- package/skills/partner-kit-assembler/CLAUDE.md +0 -19
- package/skills/partner-kit-assembler/package.json +0 -27
- package/skills/partner-kit-assembler/src/index.ts +0 -313
- package/skills/partner-kit-assembler/tsconfig.json +0 -10
- package/skills/payroll-change-prepper/CLAUDE.md +0 -19
- package/skills/payroll-change-prepper/package.json +0 -27
- package/skills/payroll-change-prepper/src/index.ts +0 -304
- package/skills/payroll-change-prepper/tsconfig.json +0 -10
- package/skills/pdf-read/SKILL.md +0 -56
- package/skills/pdf-read/package.json +0 -11
- package/skills/pdf-read/tsconfig.json +0 -8
- package/skills/persona-based-adwriter/CLAUDE.md +0 -19
- package/skills/persona-based-adwriter/package.json +0 -27
- package/skills/persona-based-adwriter/src/index.ts +0 -285
- package/skills/persona-based-adwriter/tsconfig.json +0 -10
- package/skills/persona-generator/CLAUDE.md +0 -19
- package/skills/persona-generator/package.json +0 -27
- package/skills/persona-generator/src/index.ts +0 -443
- package/skills/persona-generator/tsconfig.json +0 -10
- package/skills/personal-daily-ops/CLAUDE.md +0 -19
- package/skills/personal-daily-ops/package.json +0 -27
- package/skills/personal-daily-ops/src/index.ts +0 -324
- package/skills/personal-daily-ops/tsconfig.json +0 -10
- package/skills/pet-care-scheduler/CLAUDE.md +0 -19
- package/skills/pet-care-scheduler/package.json +0 -27
- package/skills/pet-care-scheduler/src/index.ts +0 -298
- package/skills/pet-care-scheduler/tsconfig.json +0 -10
- package/skills/photo-album/SKILL.md +0 -29
- package/skills/photo-album/package.json +0 -11
- package/skills/photo-album/tsconfig.json +0 -4
- package/skills/playlist-maker/SKILL.md +0 -33
- package/skills/playlist-maker/package.json +0 -11
- package/skills/playlist-maker/tsconfig.json +0 -4
- package/skills/podcast-show-notes/CLAUDE.md +0 -19
- package/skills/podcast-show-notes/package.json +0 -27
- package/skills/podcast-show-notes/src/index.ts +0 -302
- package/skills/podcast-show-notes/tsconfig.json +0 -10
- package/skills/presentation-theme-maker/CLAUDE.md +0 -19
- package/skills/presentation-theme-maker/package.json +0 -27
- package/skills/presentation-theme-maker/src/index.ts +0 -292
- package/skills/presentation-theme-maker/tsconfig.json +0 -10
- package/skills/press-release-drafter/CLAUDE.md +0 -19
- package/skills/press-release-drafter/package.json +0 -27
- package/skills/press-release-drafter/src/index.ts +0 -291
- package/skills/press-release-drafter/tsconfig.json +0 -10
- package/skills/print-collateral-designer/CLAUDE.md +0 -19
- package/skills/print-collateral-designer/package.json +0 -27
- package/skills/print-collateral-designer/src/index.ts +0 -298
- package/skills/print-collateral-designer/tsconfig.json +0 -10
- package/skills/procurement-scorecard/CLAUDE.md +0 -19
- package/skills/procurement-scorecard/package.json +0 -27
- package/skills/procurement-scorecard/src/index.ts +0 -338
- package/skills/procurement-scorecard/tsconfig.json +0 -10
- package/skills/product-demo-script/CLAUDE.md +0 -19
- package/skills/product-demo-script/package.json +0 -27
- package/skills/product-demo-script/src/index.ts +0 -326
- package/skills/product-demo-script/tsconfig.json +0 -10
- package/skills/project-dashboard-reports/SKILL.md +0 -78
- package/skills/project-dashboard-reports/package.json +0 -25
- package/skills/project-dashboard-reports/src/index.ts +0 -67
- package/skills/project-retro-companion/CLAUDE.md +0 -19
- package/skills/project-retro-companion/package.json +0 -27
- package/skills/project-retro-companion/src/index.ts +0 -298
- package/skills/project-retro-companion/tsconfig.json +0 -10
- package/skills/proposal-redline-advisor/CLAUDE.md +0 -19
- package/skills/proposal-redline-advisor/package.json +0 -27
- package/skills/proposal-redline-advisor/src/index.ts +0 -320
- package/skills/proposal-redline-advisor/tsconfig.json +0 -10
- package/skills/read-image/SKILL.md +0 -47
- package/skills/read-image/package.json +0 -33
- package/skills/read-image/src/index.ts +0 -264
- package/skills/read-pdf/SKILL.md +0 -53
- package/skills/read-pdf/package.json +0 -11
- package/skills/remove-background/CLAUDE.md +0 -19
- package/skills/remove-background/package.json +0 -11
- package/skills/remove-background/tsconfig.json +0 -10
- package/skills/risk-disclosure-kit/CLAUDE.md +0 -19
- package/skills/risk-disclosure-kit/package.json +0 -27
- package/skills/risk-disclosure-kit/src/index.ts +0 -307
- package/skills/risk-disclosure-kit/tsconfig.json +0 -10
- package/skills/roi-comparison-tool/CLAUDE.md +0 -19
- package/skills/roi-comparison-tool/package.json +0 -27
- package/skills/roi-comparison-tool/src/index.ts +0 -322
- package/skills/roi-comparison-tool/tsconfig.json +0 -10
- package/skills/sales-call-recapper/CLAUDE.md +0 -19
- package/skills/sales-call-recapper/package.json +0 -27
- package/skills/sales-call-recapper/src/index.ts +0 -300
- package/skills/sales-call-recapper/tsconfig.json +0 -10
- package/skills/salescopy/.env.example +0 -2
- package/skills/salescopy/CLAUDE.md +0 -23
- package/skills/salescopy/LICENSE +0 -192
- package/skills/salescopy/README.md +0 -72
- package/skills/salescopy/package.json +0 -27
- package/skills/salescopy/src/commands/config.ts +0 -115
- package/skills/salescopy/src/commands/generate.ts +0 -179
- package/skills/salescopy/src/commands/sessions.ts +0 -169
- package/skills/salescopy/src/commands/templates.ts +0 -99
- package/skills/salescopy/src/index.ts +0 -3
- package/skills/salescopy/src/lib/generator.ts +0 -197
- package/skills/salescopy/src/lib/storage.ts +0 -191
- package/skills/salescopy/src/types/index.ts +0 -74
- package/skills/salescopy/src/utils/logger.ts +0 -33
- package/skills/salescopy/src/utils/paths.ts +0 -25
- package/skills/salescopy/tsconfig.json +0 -23
- package/skills/scaffold-project/CLAUDE.md +0 -19
- package/skills/scaffold-project/package.json +0 -29
- package/skills/scaffold-project/src/ai-detect.ts +0 -136
- package/skills/scaffold-project/src/file-generators.ts +0 -292
- package/skills/scaffold-project/src/index.ts +0 -240
- package/skills/scaffold-project/src/project-config.ts +0 -338
- package/skills/scaffold-project/src/templates.ts +0 -173
- package/skills/scaffold-project/src/types.ts +0 -58
- package/skills/scaffold-project/tsconfig.json +0 -10
- package/skills/scholarship-tracker/CLAUDE.md +0 -19
- package/skills/scholarship-tracker/package.json +0 -27
- package/skills/scholarship-tracker/src/index.ts +0 -298
- package/skills/scholarship-tracker/tsconfig.json +0 -10
- package/skills/sdk-generator/SKILL.md +0 -45
- package/skills/sdk-generator/package.json +0 -11
- package/skills/sdk-generator/tsconfig.json +0 -8
- package/skills/seating-chart-maker/CLAUDE.md +0 -19
- package/skills/seating-chart-maker/package.json +0 -27
- package/skills/seating-chart-maker/src/index.ts +0 -312
- package/skills/seating-chart-maker/tsconfig.json +0 -10
- package/skills/seo-brief-builder/CLAUDE.md +0 -19
- package/skills/seo-brief-builder/package.json +0 -27
- package/skills/seo-brief-builder/src/index.ts +0 -288
- package/skills/seo-brief-builder/tsconfig.json +0 -10
- package/skills/short-video-pack/SKILL.md +0 -30
- package/skills/short-video-pack/package.json +0 -11
- package/skills/slack-assistant/CLAUDE.md +0 -19
- package/skills/slack-assistant/package.json +0 -29
- package/skills/slack-assistant/src/index.ts +0 -79
- package/skills/slack-assistant/tsconfig.json +0 -10
- package/skills/sleep-routine-analyzer/CLAUDE.md +0 -19
- package/skills/sleep-routine-analyzer/package.json +0 -27
- package/skills/sleep-routine-analyzer/src/index.ts +0 -293
- package/skills/sleep-routine-analyzer/tsconfig.json +0 -10
- package/skills/sms/README.md +0 -33
- package/skills/sms/package.json +0 -35
- package/skills/sms/src/index.ts +0 -335
- package/skills/sms/tsconfig.json +0 -21
- package/skills/social-media-kit/CLAUDE.md +0 -19
- package/skills/social-media-kit/package.json +0 -27
- package/skills/social-media-kit/src/index.ts +0 -281
- package/skills/social-media-kit/tsconfig.json +0 -10
- package/skills/sponsorship-proposal-lab/CLAUDE.md +0 -19
- package/skills/sponsorship-proposal-lab/package.json +0 -27
- package/skills/sponsorship-proposal-lab/src/index.ts +0 -300
- package/skills/sponsorship-proposal-lab/tsconfig.json +0 -10
- package/skills/spreadsheet-cleanroom/CLAUDE.md +0 -19
- package/skills/spreadsheet-cleanroom/package.json +0 -27
- package/skills/spreadsheet-cleanroom/src/index.ts +0 -331
- package/skills/spreadsheet-cleanroom/tsconfig.json +0 -10
- package/skills/stress-relief-playbook/CLAUDE.md +0 -19
- package/skills/stress-relief-playbook/package.json +0 -27
- package/skills/stress-relief-playbook/src/index.ts +0 -298
- package/skills/stress-relief-playbook/tsconfig.json +0 -10
- package/skills/study-guide-builder/CLAUDE.md +0 -19
- package/skills/study-guide-builder/package.json +0 -27
- package/skills/study-guide-builder/src/index.ts +0 -298
- package/skills/study-guide-builder/tsconfig.json +0 -10
- package/skills/subscription-spend-watcher/CLAUDE.md +0 -19
- package/skills/subscription-spend-watcher/package.json +0 -27
- package/skills/subscription-spend-watcher/src/index.ts +0 -312
- package/skills/subscription-spend-watcher/tsconfig.json +0 -10
- package/skills/subtitle/.env.example +0 -2
- package/skills/subtitle/CLAUDE.md +0 -37
- package/skills/subtitle/LICENSE +0 -192
- package/skills/subtitle/README.md +0 -63
- package/skills/subtitle/package.json +0 -43
- package/skills/subtitle/src/commands/config.ts +0 -53
- package/skills/subtitle/src/commands/generate.ts +0 -61
- package/skills/subtitle/src/index.ts +0 -3
- package/skills/subtitle/src/lib/generator.ts +0 -216
- package/skills/subtitle/src/lib/storage.ts +0 -62
- package/skills/subtitle/src/types/index.ts +0 -68
- package/skills/subtitle/src/utils/logger.ts +0 -34
- package/skills/subtitle/src/utils/paths.ts +0 -51
- package/skills/subtitle/tsconfig.json +0 -21
- package/skills/survey-insight-extractor/CLAUDE.md +0 -19
- package/skills/survey-insight-extractor/package.json +0 -27
- package/skills/survey-insight-extractor/src/index.ts +0 -317
- package/skills/survey-insight-extractor/tsconfig.json +0 -10
- package/skills/terraform-generator/CLAUDE.md +0 -19
- package/skills/terraform-generator/package.json +0 -29
- package/skills/terraform-generator/src/index.ts +0 -99
- package/skills/terraform-generator/tsconfig.json +0 -10
- package/skills/testimonial-graphics/CLAUDE.md +0 -19
- package/skills/testimonial-graphics/package.json +0 -27
- package/skills/testimonial-graphics/src/index.ts +0 -303
- package/skills/testimonial-graphics/tsconfig.json +0 -10
- package/skills/timesheet/.env.example +0 -25
- package/skills/timesheet/README.md +0 -235
- package/skills/timesheet/package.json +0 -47
- package/skills/timesheet/scripts/publish.ts +0 -210
- package/skills/timesheet/src/commands/employee.ts +0 -96
- package/skills/timesheet/src/commands/export.ts +0 -29
- package/skills/timesheet/src/commands/generate.ts +0 -102
- package/skills/timesheet/src/commands/holiday.ts +0 -74
- package/skills/timesheet/src/commands/profile.ts +0 -133
- package/skills/timesheet/src/commands/setup.ts +0 -21
- package/skills/timesheet/src/commands/vacation.ts +0 -93
- package/skills/timesheet/src/index.ts +0 -3
- package/skills/timesheet/src/lib/employees.ts +0 -56
- package/skills/timesheet/src/lib/export.ts +0 -123
- package/skills/timesheet/src/lib/holidays.ts +0 -79
- package/skills/timesheet/src/lib/paths.ts +0 -59
- package/skills/timesheet/src/lib/profiles.ts +0 -168
- package/skills/timesheet/src/lib/storage.ts +0 -83
- package/skills/timesheet/src/lib/timesheet.ts +0 -130
- package/skills/timesheet/src/lib/vacations.ts +0 -70
- package/skills/timesheet/src/types/index.ts +0 -96
- package/skills/timesheet/tsconfig.json +0 -29
- package/skills/transcript/LICENSE +0 -192
- package/skills/transcript/README.md +0 -17
- package/skills/transcript/SKILL.md +0 -80
- package/skills/transcript/package.json +0 -11
- package/skills/transcript/tsconfig.json +0 -18
- package/skills/travel-budget-balancer/CLAUDE.md +0 -19
- package/skills/travel-budget-balancer/package.json +0 -27
- package/skills/travel-budget-balancer/src/index.ts +0 -297
- package/skills/travel-budget-balancer/tsconfig.json +0 -10
- package/skills/video/SKILL.md +0 -37
- package/skills/video/package.json +0 -11
- package/skills/video-cut-suggester/CLAUDE.md +0 -19
- package/skills/video-cut-suggester/package.json +0 -27
- package/skills/video-cut-suggester/src/index.ts +0 -304
- package/skills/video-cut-suggester/tsconfig.json +0 -10
- package/skills/video-thumbnail/CLAUDE.md +0 -19
- package/skills/video-thumbnail/package.json +0 -27
- package/skills/video-thumbnail/src/index.ts +0 -356
- package/skills/video-thumbnail/tsconfig.json +0 -10
- package/skills/voiceover-jingle-pack/SKILL.md +0 -28
- package/skills/voiceover-jingle-pack/package.json +0 -11
- package/skills/webcrawling/CLAUDE.md +0 -11
- package/skills/webcrawling/LICENSE +0 -192
- package/skills/webcrawling/README.md +0 -24
- package/skills/webcrawling/package.json +0 -11
- package/skills/webcrawling/tsconfig.json +0 -22
- package/skills/webinar-script-coach/CLAUDE.md +0 -19
- package/skills/webinar-script-coach/package.json +0 -27
- package/skills/webinar-script-coach/src/index.ts +0 -296
- package/skills/webinar-script-coach/tsconfig.json +0 -10
- package/skills/wellness-progress-reporter/CLAUDE.md +0 -19
- package/skills/wellness-progress-reporter/package.json +0 -27
- package/skills/wellness-progress-reporter/src/index.ts +0 -298
- package/skills/wellness-progress-reporter/tsconfig.json +0 -10
- package/skills/workout-cycle-planner/CLAUDE.md +0 -19
- package/skills/workout-cycle-planner/package.json +0 -27
- package/skills/workout-cycle-planner/src/index.ts +0 -299
- package/skills/workout-cycle-planner/tsconfig.json +0 -10
- package/skills/write/.env.example +0 -9
- package/skills/write/LICENSE +0 -192
- package/skills/write/README.md +0 -17
- package/skills/write/SKILL.md +0 -90
- package/skills/write/package.json +0 -32
- package/skills/write/src/agents/image-generator.ts +0 -186
- package/skills/write/src/agents/researcher.ts +0 -61
- package/skills/write/src/agents/writer.ts +0 -99
- package/skills/write/src/index-local.ts +0 -248
- package/skills/write/src/index.ts +0 -4
- package/skills/write/src/orchestrator.ts +0 -171
- package/skills/write/src/types.ts +0 -65
- package/skills/write/tsconfig.json +0 -18
- /package/migrations/{0001_open_skills_self_hosted.sql → postgres/0001_open_skills_self_hosted.sql} +0 -0
- /package/skills/{read-image → api-docs-portal}/tsconfig.json +0 -0
- /package/skills/{read-pdf → brand-assets}/tsconfig.json +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
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
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root=$(cd "$(dirname "$0")/../../.." && pwd)
|
|
5
|
+
candidate=${INBOX_UNDER_TEST:-$root/agent-skills/inbox/scripts/inbox}
|
|
6
|
+
if [[ ! -f "$candidate" ]]; then
|
|
7
|
+
printf 'FAIL: inbox command not found: %s\n' "$candidate" >&2
|
|
8
|
+
exit 2
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
temporary=$(mktemp -d)
|
|
12
|
+
trap 'rm -rf "$temporary"' EXIT
|
|
13
|
+
mkdir -p "$temporary/bin" "$temporary/mock" "$temporary/state"
|
|
14
|
+
|
|
15
|
+
cat >"$temporary/bin/conversations" <<'MOCK'
|
|
16
|
+
#!/usr/bin/env bash
|
|
17
|
+
set -euo pipefail
|
|
18
|
+
|
|
19
|
+
case "${1:-}" in
|
|
20
|
+
whoami)
|
|
21
|
+
if [[ "${2:-}" == '--json' ]]; then
|
|
22
|
+
printf '%s\n' '{"agent":"Herminia"}'
|
|
23
|
+
else
|
|
24
|
+
printf '%s\n' 'Herminia'
|
|
25
|
+
fi
|
|
26
|
+
;;
|
|
27
|
+
agents)
|
|
28
|
+
[[ "${2:-}" == 'list' && "${3:-}" == '--json' ]]
|
|
29
|
+
printf '%s\n' '{"agents":[{"id":"b27c591d","agent":"herminia"}]}'
|
|
30
|
+
;;
|
|
31
|
+
since)
|
|
32
|
+
[[ "${2:-}" == '30m' \
|
|
33
|
+
&& "${3:-}" == '--limit' \
|
|
34
|
+
&& "${4:-}" == '1000' \
|
|
35
|
+
&& "${5:-}" == '-j' \
|
|
36
|
+
&& "${6:-}" == '' ]]
|
|
37
|
+
calls_file="$MOCK_CONVERSATIONS_STATE/since.calls"
|
|
38
|
+
calls=0
|
|
39
|
+
[[ -f "$calls_file" ]] && calls=$(<"$calls_file")
|
|
40
|
+
calls=$((calls + 1))
|
|
41
|
+
printf '%s\n' "$calls" >"$calls_file"
|
|
42
|
+
|
|
43
|
+
if ((calls == 1)); then
|
|
44
|
+
printf '%s\n' '[{"id":200,"from_agent":"seed-agent","content":"seed","channel":"open-skills"}]'
|
|
45
|
+
elif ((calls == 2)); then
|
|
46
|
+
printf '%s\n' '[{"id":201,"from_agent":"b27c591d","content":"own signed post [inbox:test-seat]","channel":"open-skills"},{"id":202,"from_agent":"Herminia","content":"unsigned same-name peer traffic","channel":"open-skills"},{"id":203,"from_agent":"incident-agent","content":"incident traffic","channel":"incidents"},{"id":204,"from_agent":"project-agent","content":"project traffic","channel":"open-skills"}]'
|
|
47
|
+
else
|
|
48
|
+
printf '%s\n' '[]'
|
|
49
|
+
fi
|
|
50
|
+
;;
|
|
51
|
+
*)
|
|
52
|
+
printf 'unexpected conversations command: %s\n' "$*" >&2
|
|
53
|
+
exit 64
|
|
54
|
+
;;
|
|
55
|
+
esac
|
|
56
|
+
MOCK
|
|
57
|
+
chmod +x "$temporary/bin/conversations"
|
|
58
|
+
|
|
59
|
+
set +e
|
|
60
|
+
output=$(PATH="$temporary/bin:$PATH" \
|
|
61
|
+
MOCK_CONVERSATIONS_STATE="$temporary/mock" \
|
|
62
|
+
INBOX_MONITOR_STATE_DIR="$temporary/state" \
|
|
63
|
+
INBOX_MONITOR_MAX_POLLS=1 \
|
|
64
|
+
bash "$candidate" '[inbox:test-seat]' 0 2>"$temporary/stderr")
|
|
65
|
+
command_status=$?
|
|
66
|
+
set -e
|
|
67
|
+
|
|
68
|
+
if ((command_status != 0)); then
|
|
69
|
+
printf 'FAIL: inbox command exited %d before behavior could be checked\n' "$command_status" >&2
|
|
70
|
+
sed -n '1,20p' "$temporary/stderr" >&2
|
|
71
|
+
exit 2
|
|
72
|
+
fi
|
|
73
|
+
|
|
74
|
+
if ! actual_ids=$(printf '%s\n' "$output" | jq -r '.id'); then
|
|
75
|
+
printf '%s\n' 'FAIL: inbox command output was not newline-delimited message JSON' >&2
|
|
76
|
+
exit 2
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
v120_ids=$'201\n202\n203\n204'
|
|
80
|
+
expected_ids=$'202\n203\n204'
|
|
81
|
+
if [[ "$actual_ids" == "$v120_ids" ]]; then
|
|
82
|
+
printf '%s\n' 'observed v1.2.0 visible IDs: 201,202,203,204' >&2
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
if [[ "$actual_ids" != "$expected_ids" ]]; then
|
|
86
|
+
printf '%s\n' 'FAIL: signed own post stored under registered sender ID b27c591d remained visible' >&2
|
|
87
|
+
printf '%s\n' 'expected visible IDs: 202,203,204' >&2
|
|
88
|
+
printf 'actual visible IDs: %s\n' "${actual_ids//$'\n'/,}" >&2
|
|
89
|
+
exit 1
|
|
90
|
+
fi
|
|
91
|
+
|
|
92
|
+
printf '%s\n' 'PASS: own registered sender ID suppressed; same-name peer, incident, and project traffic visible'
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: inbox-monitor
|
|
3
|
+
description: Arm a resilient interactive-session inbox monitor over the unified conversations feed, with per-session cursors, rotating-identity-safe self filtering, and degraded-monitor reporting.
|
|
4
|
+
user_invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# inbox-monitor — Interactive Session Inbox Monitor
|
|
8
|
+
|
|
9
|
+
Arm this monitor at the start of every interactive session after login. It surfaces new channel messages, DMs, and blockers through one `conversations since` feed without replaying messages already present when the monitor starts.
|
|
10
|
+
|
|
11
|
+
## Arm the monitor
|
|
12
|
+
|
|
13
|
+
Choose an opaque signature unique to this seat and session. Include it in **every** channel message, DM, and blocker the session writes. Do not reuse a signature across concurrently active seats.
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
INBOX_SIGNATURE="[inbox:$(hostname):$$:$(date +%s)]"
|
|
17
|
+
mkdir -p state/monitors
|
|
18
|
+
nohup bash ~/.claude/skills/inbox-monitor/scripts/inbox_monitor.sh \
|
|
19
|
+
"$INBOX_SIGNATURE" >state/monitors/inbox.log 2>&1 &
|
|
20
|
+
echo $! >state/monitors/inbox.pid
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Use the corresponding installed skill path for non-Claude agents. Keep `INBOX_SIGNATURE` in session context and append it verbatim to everything this session sends through `conversations`.
|
|
24
|
+
|
|
25
|
+
## Self-filter contract
|
|
26
|
+
|
|
27
|
+
The monitor refreshes `conversations whoami` on every poll and persists the union of every non-empty name observed during that monitor process. A message is self-noise only when both conditions hold:
|
|
28
|
+
|
|
29
|
+
1. `from_agent` is in that persisted union.
|
|
30
|
+
2. Its textual content contains this seat's exact `INBOX_SIGNATURE`.
|
|
31
|
+
|
|
32
|
+
Both checks are required. The identity file is machine-level and can rotate mid-session, while a name observed on this machine can also belong to a real message from another seat. Never replace the conjunction with a single-name comparison or a name-only exclusion.
|
|
33
|
+
|
|
34
|
+
## Runtime guarantees
|
|
35
|
+
|
|
36
|
+
- Uses one `conversations since <duration> --limit <n> -j` call per poll for channels, DMs, and blockers.
|
|
37
|
+
- Keys max-message-id cursor and self-name state by monitor PID so concurrent sessions do not share progress.
|
|
38
|
+
- Seeds the cursor at arm time and emits only later messages.
|
|
39
|
+
- Emits a degraded-monitor warning after four consecutive failed polls and a recovery notice after the next successful poll.
|
|
40
|
+
|
|
41
|
+
Treat a degraded warning as inbox uncertainty, not a quiet inbox. Check `conversations context` manually and repair or restart the monitor.
|
|
@@ -0,0 +1,91 @@
|
|
|
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-monitor: 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_names_file="$state_dir/inbox.$$.self-names"
|
|
23
|
+
: >"$self_names_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_current_name() {
|
|
30
|
+
local current_name
|
|
31
|
+
current_name=$(conversations whoami 2>/dev/null | head -n 1 | tr -d '\r') || return 1
|
|
32
|
+
[[ -z "$current_name" ]] && return 0
|
|
33
|
+
grep -Fqx -- "$current_name" "$self_names_file" || printf '%s\n' "$current_name" >>"$self_names_file"
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
latest_cursor() {
|
|
37
|
+
jq -r '[.[] | .id // .message_id // empty | tonumber?] | max // 0'
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
fetch_messages() {
|
|
41
|
+
conversations since "$since_duration" --limit "$page_limit" -j 2>/dev/null
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
emit_inbound() {
|
|
45
|
+
jq -c --arg signature "$signature" --argjson cursor "$1" --rawfile self_names "$self_names_file" '
|
|
46
|
+
($self_names | split("\n") | map(select(length > 0))) as $names
|
|
47
|
+
| .[]
|
|
48
|
+
| select(((.id // .message_id // 0) | tonumber? // 0) > $cursor)
|
|
49
|
+
| select((((.from_agent // "") as $from | (($names | index($from)) != null) and ((.content // .message // .body // "") | tostring | contains($signature))) | not))'
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
seed=$(fetch_messages) || { printf 'inbox-monitor: failed to seed conversations cursor\n' >&2; exit 1; }
|
|
53
|
+
seed=$(printf '%s' "$seed" | messages) || { printf 'inbox-monitor: invalid seed response\n' >&2; exit 1; }
|
|
54
|
+
printf '%s\n' "$(printf '%s' "$seed" | latest_cursor)" >"$cursor_file"
|
|
55
|
+
remember_current_name || true
|
|
56
|
+
|
|
57
|
+
failures=0
|
|
58
|
+
polls=0
|
|
59
|
+
|
|
60
|
+
finish_poll() {
|
|
61
|
+
((polls += 1))
|
|
62
|
+
if (( max_polls > 0 && polls >= max_polls )); then
|
|
63
|
+
exit 0
|
|
64
|
+
fi
|
|
65
|
+
}
|
|
66
|
+
while true; do
|
|
67
|
+
sleep "$poll_seconds"
|
|
68
|
+
remember_current_name || true
|
|
69
|
+
cursor=$(cat "$cursor_file")
|
|
70
|
+
|
|
71
|
+
if response=$(fetch_messages) \
|
|
72
|
+
&& normalized=$(printf '%s' "$response" | messages) \
|
|
73
|
+
&& next_cursor=$(printf '%s' "$normalized" | latest_cursor) \
|
|
74
|
+
&& printf '%s' "$normalized" | emit_inbound "$cursor"; then
|
|
75
|
+
if (( failures >= 4 )); then
|
|
76
|
+
printf 'inbox-monitor: recovered after %d consecutive poll failures\n' "$failures"
|
|
77
|
+
fi
|
|
78
|
+
failures=0
|
|
79
|
+
if (( next_cursor > cursor )); then
|
|
80
|
+
printf '%s\n' "$next_cursor" >"$cursor_file"
|
|
81
|
+
fi
|
|
82
|
+
finish_poll
|
|
83
|
+
continue
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
((failures += 1))
|
|
87
|
+
if (( failures == 4 )); then
|
|
88
|
+
printf 'inbox-monitor: DEGRADED after 4 consecutive poll failures; inbox may be stale\n'
|
|
89
|
+
fi
|
|
90
|
+
finish_poll
|
|
91
|
+
done
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
root=$(cd "$(dirname "$0")/../../.." && pwd)
|
|
5
|
+
temporary=$(mktemp -d)
|
|
6
|
+
trap 'rm -rf "$temporary"' EXIT
|
|
7
|
+
mkdir -p "$temporary/bin" "$temporary/state"
|
|
8
|
+
|
|
9
|
+
cat >"$temporary/bin/conversations" <<'MOCK'
|
|
10
|
+
#!/usr/bin/env bash
|
|
11
|
+
set -euo pipefail
|
|
12
|
+
|
|
13
|
+
counter_file="$MOCK_STATE/${1}.calls"
|
|
14
|
+
count=0
|
|
15
|
+
[[ -f "$counter_file" ]] && count=$(cat "$counter_file")
|
|
16
|
+
count=$((count + 1))
|
|
17
|
+
printf '%s\n' "$count" >"$counter_file"
|
|
18
|
+
|
|
19
|
+
expect_since() {
|
|
20
|
+
[[ "${1:-}" == 'since' \
|
|
21
|
+
&& "${2:-}" == '30m' \
|
|
22
|
+
&& "${3:-}" == '--limit' \
|
|
23
|
+
&& "${4:-}" == '1000' \
|
|
24
|
+
&& "${5:-}" == '-j' \
|
|
25
|
+
&& "${6:-}" == '' ]]
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
case "$1:$count" in
|
|
29
|
+
whoami:1) printf 'manius\n' ;;
|
|
30
|
+
whoami:2) printf 'fabricius\n' ;;
|
|
31
|
+
whoami:3) printf 'agent-ceo\n' ;;
|
|
32
|
+
since:1)
|
|
33
|
+
expect_since "$@"
|
|
34
|
+
printf '[{"id":100,"from_agent":"old","content":"seed"}]\n'
|
|
35
|
+
;;
|
|
36
|
+
since:2)
|
|
37
|
+
expect_since "$@"
|
|
38
|
+
printf '%s\n' '[{"id":101,"from_agent":"fabricius","content":"own [seat-signature]"},{"id":102,"from_agent":"agent-ceo","content":"genuine before observation"}]'
|
|
39
|
+
;;
|
|
40
|
+
since:3)
|
|
41
|
+
expect_since "$@"
|
|
42
|
+
printf '%s\n' '[{"id":103,"from_agent":"manius","content":"own after rotation [seat-signature]"},{"id":104,"from_agent":"agent-ceo","content":"own current [seat-signature]"},{"id":105,"from_agent":"agent-ceo","content":"genuine from same-name seat"}]'
|
|
43
|
+
;;
|
|
44
|
+
*) exit 1 ;;
|
|
45
|
+
esac
|
|
46
|
+
MOCK
|
|
47
|
+
chmod +x "$temporary/bin/conversations"
|
|
48
|
+
|
|
49
|
+
output=$(PATH="$temporary/bin:$PATH" \
|
|
50
|
+
MOCK_STATE="$temporary" \
|
|
51
|
+
INBOX_MONITOR_STATE_DIR="$temporary/state" \
|
|
52
|
+
INBOX_MONITOR_MAX_POLLS=2 \
|
|
53
|
+
bash "$root/agent-skills/inbox-monitor/scripts/inbox_monitor.sh" '[seat-signature]' 0)
|
|
54
|
+
|
|
55
|
+
actual_ids=$(printf '%s\n' "$output" | jq -r '.id')
|
|
56
|
+
[[ "$actual_ids" == $'102\n105' ]]
|
|
57
|
+
! printf '%s\n' "$output" | jq -e 'select(.id == 101 or .id == 103 or .id == 104)' >/dev/null
|
|
58
|
+
|
|
59
|
+
names_file=$(find "$temporary/state" -name 'inbox.*.self-names' -type f)
|
|
60
|
+
[[ $(sort "$names_file") == $'agent-ceo\nfabricius\nmanius' ]]
|
|
61
|
+
cursor_file=$(find "$temporary/state" -name 'inbox.*.cursor' -type f)
|
|
62
|
+
[[ $(cat "$cursor_file") == 105 ]]
|
|
63
|
+
|
|
64
|
+
fixture='[{"id":101,"from_agent":"fabricius","content":"own [seat-signature]"},{"id":105,"from_agent":"agent-ceo","content":"genuine from same-name seat"}]'
|
|
65
|
+
[[ $(printf '%s' "$fixture" | jq --arg me manius '[.[] | select(.from_agent != $me) | .id]') == '[
|
|
66
|
+
101,
|
|
67
|
+
105
|
|
68
|
+
]' ]]
|
|
69
|
+
[[ $(printf '%s' "$fixture" | jq --arg me agent-ceo '[.[] | select(.from_agent != $me) | .id]') == '[
|
|
70
|
+
101
|
|
71
|
+
]' ]]
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: merge-pr
|
|
3
|
+
description: Merge a GitHub pull request, merge when green, use a merge queue, or decide whether a pull request is mergeable. Use only for explicit merge intent, not ordinary review.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Merge PR
|
|
7
|
+
|
|
8
|
+
Keep merge authority tied to fresh exact-head evidence. Read
|
|
9
|
+
[merge-safety.md](references/merge-safety.md) before an actual merge.
|
|
10
|
+
|
|
11
|
+
## Modes
|
|
12
|
+
|
|
13
|
+
- `preflight`: read-only advice; never fetch, checkout, push, comment, label,
|
|
14
|
+
approve, close, enqueue, or merge.
|
|
15
|
+
- `immediate-merge`: merge now after every gate passes.
|
|
16
|
+
- `auto-merge`: use only when the user explicitly requested delayed merge.
|
|
17
|
+
- `merge-queue`: follow the repository queue; it is not a merge strategy.
|
|
18
|
+
|
|
19
|
+
## Required contract
|
|
20
|
+
|
|
21
|
+
For an actual merge:
|
|
22
|
+
|
|
23
|
+
1. Reuse the owning native goal/plan and exact Todo. Freeze one nonblank
|
|
24
|
+
`acceptance_scope`; record the cumulative repair-cycle count.
|
|
25
|
+
2. Declare `routine` or `elevated`. Unknown is elevated and cannot authorize a
|
|
26
|
+
merge. Routine requires one independent exact-head artifact and permits one
|
|
27
|
+
repair cycle; elevated requires two and permits two. A head change
|
|
28
|
+
invalidates artifacts without resetting the cap.
|
|
29
|
+
3. Keep worker, reviewers, and executor distinct. Every artifact must name the
|
|
30
|
+
repository, PR, exact head SHA, frozen scope, reviewer identity or run ID,
|
|
31
|
+
timestamp, verdict, checked risks, and blocking findings.
|
|
32
|
+
4. Immediately before execution, re-read the PR, exact head, checks, reviews,
|
|
33
|
+
draft/conflict state, base/protection policy, and queue behavior. Do not use
|
|
34
|
+
stale preflight as merge authority.
|
|
35
|
+
5. Generate the command with
|
|
36
|
+
`scripts/merge_pr_guard.py build --preflight <fresh.json>
|
|
37
|
+
--task-id <todo-id> --acceptance-scope <frozen-scope>
|
|
38
|
+
--repair-cycle-count <cumulative-count> ...`. Never hand compose a squash
|
|
39
|
+
command.
|
|
40
|
+
6. Execute the returned argv exactly once. It always includes
|
|
41
|
+
`--match-head-commit`; it never includes admin, force, direct-main push, or
|
|
42
|
+
branch deletion. Use auto mode only with explicit delayed intent.
|
|
43
|
+
7. Run `scripts/merge_pr_guard.py postverify` against the provider result and
|
|
44
|
+
save its required receipt. For auto or queue mode, wait until the provider
|
|
45
|
+
reports `MERGED`; enablement or enqueue is not merge completion. Do not
|
|
46
|
+
report clean until postverify exits zero.
|
|
47
|
+
|
|
48
|
+
## Squash message rule
|
|
49
|
+
|
|
50
|
+
Every squash command must carry an explicit one-line subject and explicit body.
|
|
51
|
+
An omitted body becomes the empty string. Custom bodies retain their text after
|
|
52
|
+
line-ending normalization. Subject or body input containing a
|
|
53
|
+
`Co-Authored-By` trailer, with any case or whitespace variation, fails before
|
|
54
|
+
merge; never strip and continue.
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
python3 agent-skills/merge-pr/scripts/merge_pr_guard.py build \
|
|
58
|
+
--preflight /path/to/fresh-preflight.json \
|
|
59
|
+
--task-id "00000000-0000-4000-8000-000000000000" \
|
|
60
|
+
--acceptance-scope "task-owned-frozen-scope" \
|
|
61
|
+
--repair-cycle-count 0 \
|
|
62
|
+
--strategy squash \
|
|
63
|
+
--subject "fix: preserve merge provenance" \
|
|
64
|
+
--body ""
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
This guard authorizes explicit squash merges and policy-owned merge queues.
|
|
68
|
+
Merge and rebase strategies need a different guard that verifies every
|
|
69
|
+
resulting commit, so this workflow rejects them.
|
|
70
|
+
|
|
71
|
+
## Postverify
|
|
72
|
+
|
|
73
|
+
Postverify must query the actual provider merge commit, not source commits or a
|
|
74
|
+
locally predicted message. It writes a durable `clean` or `failed` receipt,
|
|
75
|
+
including message digest and forbidden-trailer line numbers without echoing the
|
|
76
|
+
message. Here `clean` means trailer-clean, not byte-for-byte equality with the
|
|
77
|
+
requested message. A synthesized trailer is a failed result. Fixture mode is
|
|
78
|
+
test-only, marks receipts non-authoritative, and can never complete a live
|
|
79
|
+
merge. Pass the build result's task, mode, scope, cycle count, base, exact head,
|
|
80
|
+
preflight digest, and command-argv digest to postverify. Postverify must also
|
|
81
|
+
read the exact preflight and saved command-plan JSON; it recomputes both digests
|
|
82
|
+
and rejects any field, message, or argv mismatch before querying the provider.
|
|
83
|
+
|
|
84
|
+
Never rewrite protected-main history, revert, force push, or delete the branch
|
|
85
|
+
in response. Record the failure and escalate through the owning task.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Merge safety contract
|
|
2
|
+
|
|
3
|
+
## Read-only preflight
|
|
4
|
+
|
|
5
|
+
Capture a fresh JSON snapshot with:
|
|
6
|
+
|
|
7
|
+
- mode, repository, PR, URL, base, head, and exact head SHA;
|
|
8
|
+
- explicit risk tier and frozen acceptance scope;
|
|
9
|
+
- cumulative repair-cycle count and cap;
|
|
10
|
+
- checks, reviews, draft/conflict/merge state, and branch/queue policy;
|
|
11
|
+
- exactly the tier-required independent reviewer artifacts;
|
|
12
|
+
- worker and executor identities;
|
|
13
|
+
- blocking reasons, warnings, verdict, and observation time.
|
|
14
|
+
|
|
15
|
+
Preflight may use read-only `gh pr view`, `gh pr checks`, and repository-rule
|
|
16
|
+
queries. It must not mutate local git or GitHub. `mergeable` is advisory until
|
|
17
|
+
the executor repeats the checks immediately before merge.
|
|
18
|
+
|
|
19
|
+
## Bounded review
|
|
20
|
+
|
|
21
|
+
- Routine: one exact-head artifact and at most one cumulative repair/re-review
|
|
22
|
+
cycle.
|
|
23
|
+
- Elevated: two independent exact-head artifacts and at most two cumulative
|
|
24
|
+
cycles.
|
|
25
|
+
- Worker and executor cannot review. Reviewer identities and run IDs must be
|
|
26
|
+
distinct.
|
|
27
|
+
- Every artifact must match repository, PR, exact head, and frozen scope. A
|
|
28
|
+
stale, future, malformed, blocking, duplicate, worker-authored,
|
|
29
|
+
executor-authored, or scope-mismatched artifact blocks.
|
|
30
|
+
- A head change invalidates artifacts but never resets the repair-cycle count.
|
|
31
|
+
- At the cap, land only if frozen acceptance passes; otherwise simplify, split,
|
|
32
|
+
close, or defer. Do not add another review layer.
|
|
33
|
+
|
|
34
|
+
## Command construction
|
|
35
|
+
|
|
36
|
+
Use the guard's argv output. For squash it always supplies `--subject`,
|
|
37
|
+
`--body`, and `--match-head-commit`. The guard rejects a
|
|
38
|
+
`Co-Authored-By` trailer rather than deleting it. It has no interface for
|
|
39
|
+
`--admin`, force, direct pushes, or branch deletion. Auto mode additionally
|
|
40
|
+
requires the explicit `--delayed-intent` acknowledgement. The executor must
|
|
41
|
+
pass the Todo ID, task-owned frozen scope, and cumulative repair-cycle count
|
|
42
|
+
separately; all must match the fresh snapshot. This guard permits squash and
|
|
43
|
+
policy-owned queues only. It rejects merge and rebase strategies because their
|
|
44
|
+
multi-commit results require a wider provenance check.
|
|
45
|
+
|
|
46
|
+
## Provider postverify
|
|
47
|
+
|
|
48
|
+
After provider mutation:
|
|
49
|
+
|
|
50
|
+
For auto and queue modes, start these checks only after the provider reports
|
|
51
|
+
`MERGED`; an enabled or queued PR is still pending.
|
|
52
|
+
|
|
53
|
+
1. Recompute the preflight and complete command-argv digests, then match the
|
|
54
|
+
saved command plan.
|
|
55
|
+
2. Re-read the PR and require `MERGED`.
|
|
56
|
+
3. Match the provider-reported source head to the reviewed head.
|
|
57
|
+
4. Resolve the provider merge-commit SHA.
|
|
58
|
+
5. Fetch that commit's actual message.
|
|
59
|
+
6. Scan it for forbidden trailers.
|
|
60
|
+
7. Bind the receipt to the task, mode, scope, cycle count, preflight digest,
|
|
61
|
+
provider URL, base, source head, and merge commit.
|
|
62
|
+
8. Persist the receipt before interpreting success.
|
|
63
|
+
|
|
64
|
+
A forbidden trailer or provider mismatch produces a durable failed receipt and
|
|
65
|
+
nonzero exit. Do not claim a clean merge, rewrite protected main, revert, force
|
|
66
|
+
push, or delete the branch. Postverify is evidence-only and cannot reopen the
|
|
67
|
+
review budget.
|
|
68
|
+
|
|
69
|
+
`clean` is scoped to the forbidden-trailer policy; it is not a byte-for-byte
|
|
70
|
+
message assertion. `--fixture` exists only for inert tests. Fixture receipts
|
|
71
|
+
name their source, set `authoritative: false`, bind their target to the supplied
|
|
72
|
+
repository and PR, and cannot satisfy live postverify.
|
|
73
|
+
|
|
74
|
+
## Recovery and workflow rollback
|
|
75
|
+
|
|
76
|
+
On failed postverify, preserve the failed receipt, mark the owning Todo blocked,
|
|
77
|
+
and report the provider mismatch through the normal incident or blocker
|
|
78
|
+
surface. Do not retry the same mutation or automate a protected-history revert.
|
|
79
|
+
Correct product behavior, if needed, through a new reviewed PR that preserves
|
|
80
|
+
history. Before further merges, roll back a faulty workflow version through an
|
|
81
|
+
ordinary PR that reverts the skill change, then repeat the full exact-head
|
|
82
|
+
review and release gates.
|