@elizaos/skills 2.0.0-alpha.53 → 2.0.0-alpha.533
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 +4 -0
- package/dist/formatter.d.ts.map +1 -1
- package/dist/formatter.js +2 -1
- package/dist/frontmatter.d.ts +13 -1
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +51 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +10 -3
- package/dist/resolver.d.ts +17 -0
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +54 -1
- package/dist/types.d.ts +38 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +57 -53
- package/skills/build-monetized-app/SKILL.md +67 -0
- package/skills/build-monetized-app/references/failure-modes.md +69 -0
- package/skills/build-monetized-app/references/sdk-flow.md +159 -0
- package/skills/build-monetized-app/references/survival-economics.md +64 -0
- package/skills/claude-subagent-eliza-bridge/SKILL.md +34 -0
- package/skills/eliza-app-development/SKILL.md +62 -0
- package/skills/eliza-app-development/references/repo-map.md +70 -0
- package/skills/eliza-app-development/references/runtime-and-cloud.md +61 -0
- package/skills/eliza-cloud/SKILL.md +39 -0
- package/skills/eliza-cloud/references/apps-and-containers.md +73 -0
- package/skills/eliza-cloud/references/cloud-backend-and-monetization.md +99 -0
- package/skills/elizaos/SKILL.md +27 -0
- package/skills/elizaos/references/core-abstractions.md +101 -0
- package/skills/elizaos/references/plugin-development.md +74 -0
- package/skills/yara-authoring/SKILL.md +111 -0
- package/skills/bear-notes/SKILL.md +0 -107
- package/skills/bird/SKILL.md +0 -224
- package/skills/blogwatcher/SKILL.md +0 -69
- package/skills/clawhub/SKILL.md +0 -77
- package/skills/crow/SKILL.md +0 -261
- package/skills/crow/references/api-reference.md +0 -370
- package/skills/crow/references/card-payments.md +0 -124
- package/skills/crow/references/error-handling.md +0 -154
- package/skills/crow/references/x402-flow.md +0 -170
- package/skills/eightctl/SKILL.md +0 -50
- package/skills/food-order/SKILL.md +0 -48
- package/skills/gemini/SKILL.md +0 -43
- package/skills/gifgrep/SKILL.md +0 -79
- package/skills/gog/SKILL.md +0 -116
- package/skills/goplaces/SKILL.md +0 -52
- package/skills/himalaya/SKILL.md +0 -257
- package/skills/himalaya/references/configuration.md +0 -184
- package/skills/himalaya/references/message-composition.md +0 -199
- package/skills/local-places/SERVER_README.md +0 -101
- package/skills/local-places/SKILL.md +0 -102
- package/skills/local-places/pyproject.toml +0 -21
- package/skills/local-places/src/local_places/__init__.py +0 -2
- package/skills/local-places/src/local_places/google_places.py +0 -314
- package/skills/local-places/src/local_places/main.py +0 -65
- package/skills/local-places/src/local_places/schemas.py +0 -107
- package/skills/mcporter/SKILL.md +0 -61
- package/skills/model-usage/SKILL.md +0 -69
- package/skills/model-usage/references/codexbar-cli.md +0 -33
- package/skills/model-usage/scripts/model_usage.py +0 -310
- package/skills/nightmarket/SKILL.md +0 -145
- package/skills/nightmarket/references/api.md +0 -176
- package/skills/nightmarket/references/crow-payments.md +0 -67
- package/skills/nightmarket/references/mcp.md +0 -53
- package/skills/openai-image-gen/SKILL.md +0 -89
- package/skills/openai-image-gen/scripts/gen.py +0 -240
- package/skills/openai-whisper/SKILL.md +0 -38
- package/skills/openai-whisper-api/SKILL.md +0 -52
- package/skills/openai-whisper-api/scripts/transcribe.sh +0 -85
- package/skills/openhue/SKILL.md +0 -51
- package/skills/oracle/SKILL.md +0 -125
- package/skills/peekaboo/SKILL.md +0 -190
- package/skills/sag/SKILL.md +0 -87
- package/skills/security-ask-questions-if-underspecified/.claude-plugin/plugin.json +0 -10
- package/skills/security-ask-questions-if-underspecified/README.md +0 -24
- package/skills/security-ask-questions-if-underspecified/skills/ask-questions-if-underspecified/SKILL.md +0 -85
- package/skills/security-audit-context-building/.claude-plugin/plugin.json +0 -10
- package/skills/security-audit-context-building/README.md +0 -58
- package/skills/security-audit-context-building/commands/audit-context.md +0 -21
- package/skills/security-audit-context-building/skills/audit-context-building/SKILL.md +0 -297
- package/skills/security-audit-context-building/skills/audit-context-building/resources/COMPLETENESS_CHECKLIST.md +0 -47
- package/skills/security-audit-context-building/skills/audit-context-building/resources/FUNCTION_MICRO_ANALYSIS_EXAMPLE.md +0 -355
- package/skills/security-audit-context-building/skills/audit-context-building/resources/OUTPUT_REQUIREMENTS.md +0 -71
- package/skills/security-building-secure-contracts/.claude-plugin/plugin.json +0 -10
- package/skills/security-building-secure-contracts/README.md +0 -241
- package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/SKILL.md +0 -284
- package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -405
- package/skills/security-building-secure-contracts/skills/audit-prep-assistant/SKILL.md +0 -409
- package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/SKILL.md +0 -329
- package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -722
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/SKILL.md +0 -218
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/ASSESSMENT_CRITERIA.md +0 -355
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/EXAMPLE_REPORT.md +0 -248
- package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/REPORT_FORMAT.md +0 -33
- package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/SKILL.md +0 -334
- package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -740
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/SKILL.md +0 -252
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/ASSESSMENT_AREAS.md +0 -329
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/DELIVERABLES.md +0 -118
- package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/EXAMPLE_REPORT.md +0 -298
- package/skills/security-building-secure-contracts/skills/secure-workflow-guide/SKILL.md +0 -161
- package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/EXAMPLE_REPORT.md +0 -279
- package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/WORKFLOW_STEPS.md +0 -132
- package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/SKILL.md +0 -389
- package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -669
- package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/SKILL.md +0 -298
- package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -791
- package/skills/security-building-secure-contracts/skills/token-integration-analyzer/SKILL.md +0 -362
- package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/ASSESSMENT_CATEGORIES.md +0 -571
- package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/REPORT_TEMPLATES.md +0 -141
- package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/SKILL.md +0 -388
- package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +0 -595
- package/skills/security-burpsuite-project-parser/.claude-plugin/plugin.json +0 -10
- package/skills/security-burpsuite-project-parser/README.md +0 -103
- package/skills/security-burpsuite-project-parser/commands/burp-search.md +0 -18
- package/skills/security-burpsuite-project-parser/skills/SKILL.md +0 -358
- package/skills/security-burpsuite-project-parser/skills/scripts/burp-search.sh +0 -99
- package/skills/security-claude-in-chrome-troubleshooting/.claude-plugin/plugin.json +0 -8
- package/skills/security-claude-in-chrome-troubleshooting/README.md +0 -31
- package/skills/security-claude-in-chrome-troubleshooting/skills/claude-in-chrome-troubleshooting/SKILL.md +0 -251
- package/skills/security-constant-time-analysis/.claude-plugin/plugin.json +0 -9
- package/skills/security-constant-time-analysis/README.md +0 -381
- package/skills/security-constant-time-analysis/commands/ct-check.md +0 -20
- package/skills/security-constant-time-analysis/ct_analyzer/__init__.py +0 -49
- package/skills/security-constant-time-analysis/ct_analyzer/analyzer.py +0 -1284
- package/skills/security-constant-time-analysis/ct_analyzer/script_analyzers.py +0 -3081
- package/skills/security-constant-time-analysis/ct_analyzer/tests/__init__.py +0 -1
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_analyzer.py +0 -1397
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/bn_excerpt.js +0 -205
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_constant_time.c +0 -181
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.c +0 -74
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.go +0 -78
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.rs +0 -92
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.cs +0 -174
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.java +0 -161
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.kt +0 -181
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.php +0 -140
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.py +0 -252
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.rb +0 -188
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.swift +0 -199
- package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.ts +0 -154
- package/skills/security-constant-time-analysis/pyproject.toml +0 -52
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/README.md +0 -90
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/SKILL.md +0 -219
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/compiled.md +0 -129
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/javascript.md +0 -136
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/kotlin.md +0 -252
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/php.md +0 -172
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/python.md +0 -179
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/ruby.md +0 -198
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/swift.md +0 -288
- package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/vm-compiled.md +0 -354
- package/skills/security-constant-time-analysis/uv.lock +0 -8
- package/skills/security-culture-index/.claude-plugin/plugin.json +0 -8
- package/skills/security-culture-index/README.md +0 -79
- package/skills/security-culture-index/skills/interpreting-culture-index/SKILL.md +0 -293
- package/skills/security-culture-index/skills/interpreting-culture-index/references/anti-patterns.md +0 -255
- package/skills/security-culture-index/skills/interpreting-culture-index/references/conversation-starters.md +0 -408
- package/skills/security-culture-index/skills/interpreting-culture-index/references/interview-trait-signals.md +0 -253
- package/skills/security-culture-index/skills/interpreting-culture-index/references/motivators.md +0 -158
- package/skills/security-culture-index/skills/interpreting-culture-index/references/patterns-archetypes.md +0 -147
- package/skills/security-culture-index/skills/interpreting-culture-index/references/primary-traits.md +0 -307
- package/skills/security-culture-index/skills/interpreting-culture-index/references/secondary-traits.md +0 -228
- package/skills/security-culture-index/skills/interpreting-culture-index/references/team-composition.md +0 -148
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/check_deps.py +0 -108
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/__init__.py +0 -20
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/constants.py +0 -122
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/extract.py +0 -187
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/models.py +0 -16
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/opencv_extractor.py +0 -520
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/extract_pdf.py +0 -237
- package/skills/security-culture-index/skills/interpreting-culture-index/scripts/pyproject.toml +0 -18
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/burnout-report.md +0 -113
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/comparison-report.md +0 -103
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/hiring-profile.md +0 -127
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/individual-report.md +0 -85
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/predicted-profile.md +0 -165
- package/skills/security-culture-index/skills/interpreting-culture-index/templates/team-report.md +0 -109
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/analyze-team.md +0 -188
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/coach-manager.md +0 -267
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/compare-profiles.md +0 -188
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/define-hiring-profile.md +0 -220
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/detect-burnout.md +0 -206
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/extract-from-pdf.md +0 -121
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interpret-individual.md +0 -183
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interview-debrief.md +0 -234
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/mediate-conflict.md +0 -306
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/plan-onboarding.md +0 -322
- package/skills/security-culture-index/skills/interpreting-culture-index/workflows/predict-from-interview.md +0 -250
- package/skills/security-differential-review/.claude-plugin/plugin.json +0 -10
- package/skills/security-differential-review/README.md +0 -109
- package/skills/security-differential-review/commands/diff-review.md +0 -21
- package/skills/security-differential-review/skills/differential-review/SKILL.md +0 -220
- package/skills/security-differential-review/skills/differential-review/adversarial.md +0 -203
- package/skills/security-differential-review/skills/differential-review/methodology.md +0 -234
- package/skills/security-differential-review/skills/differential-review/patterns.md +0 -300
- package/skills/security-differential-review/skills/differential-review/reporting.md +0 -369
- package/skills/security-dwarf-expert/.claude-plugin/plugin.json +0 -10
- package/skills/security-dwarf-expert/README.md +0 -38
- package/skills/security-dwarf-expert/skills/dwarf-expert/SKILL.md +0 -93
- package/skills/security-dwarf-expert/skills/dwarf-expert/reference/coding.md +0 -31
- package/skills/security-dwarf-expert/skills/dwarf-expert/reference/dwarfdump.md +0 -50
- package/skills/security-dwarf-expert/skills/dwarf-expert/reference/readelf.md +0 -8
- package/skills/security-entry-point-analyzer/.claude-plugin/plugin.json +0 -10
- package/skills/security-entry-point-analyzer/README.md +0 -74
- package/skills/security-entry-point-analyzer/commands/entry-points.md +0 -18
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/SKILL.md +0 -251
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/cosmwasm.md +0 -182
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-aptos.md +0 -107
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-sui.md +0 -87
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solana.md +0 -155
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solidity.md +0 -135
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/ton.md +0 -185
- package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/vyper.md +0 -141
- package/skills/security-firebase-apk-scanner/.claude-plugin/plugin.json +0 -10
- package/skills/security-firebase-apk-scanner/README.md +0 -85
- package/skills/security-firebase-apk-scanner/commands/scan-apk.md +0 -18
- package/skills/security-firebase-apk-scanner/scanner.sh +0 -1408
- package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/SKILL.md +0 -197
- package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/references/vulnerabilities.md +0 -803
- package/skills/security-fix-review/.claude-plugin/plugin.json +0 -13
- package/skills/security-fix-review/README.md +0 -118
- package/skills/security-fix-review/commands/fix-review.md +0 -24
- package/skills/security-fix-review/skills/fix-review/SKILL.md +0 -264
- package/skills/security-fix-review/skills/fix-review/references/bug-detection.md +0 -408
- package/skills/security-fix-review/skills/fix-review/references/finding-matching.md +0 -298
- package/skills/security-fix-review/skills/fix-review/references/report-parsing.md +0 -398
- package/skills/security-insecure-defaults/.claude-plugin/plugin.json +0 -10
- package/skills/security-insecure-defaults/README.md +0 -45
- package/skills/security-insecure-defaults/skills/insecure-defaults/SKILL.md +0 -117
- package/skills/security-insecure-defaults/skills/insecure-defaults/references/examples.md +0 -409
- package/skills/security-modern-python/.claude-plugin/plugin.json +0 -10
- package/skills/security-modern-python/README.md +0 -58
- package/skills/security-modern-python/hooks/hooks.json +0 -16
- package/skills/security-modern-python/hooks/intercept-legacy-python.bats +0 -388
- package/skills/security-modern-python/hooks/intercept-legacy-python.sh +0 -109
- package/skills/security-modern-python/hooks/test_helper.bash +0 -75
- package/skills/security-modern-python/skills/modern-python/SKILL.md +0 -333
- package/skills/security-modern-python/skills/modern-python/references/dependabot.md +0 -43
- package/skills/security-modern-python/skills/modern-python/references/migration-checklist.md +0 -141
- package/skills/security-modern-python/skills/modern-python/references/pep723-scripts.md +0 -259
- package/skills/security-modern-python/skills/modern-python/references/prek.md +0 -211
- package/skills/security-modern-python/skills/modern-python/references/pyproject.md +0 -254
- package/skills/security-modern-python/skills/modern-python/references/ruff-config.md +0 -240
- package/skills/security-modern-python/skills/modern-python/references/security-setup.md +0 -255
- package/skills/security-modern-python/skills/modern-python/references/testing.md +0 -284
- package/skills/security-modern-python/skills/modern-python/references/uv-commands.md +0 -200
- package/skills/security-modern-python/skills/modern-python/templates/dependabot.yml +0 -36
- package/skills/security-modern-python/skills/modern-python/templates/pre-commit-config.yaml +0 -66
- package/skills/security-property-based-testing/.claude-plugin/plugin.json +0 -9
- package/skills/security-property-based-testing/README.md +0 -47
- package/skills/security-property-based-testing/skills/property-based-testing/README.md +0 -88
- package/skills/security-property-based-testing/skills/property-based-testing/SKILL.md +0 -109
- package/skills/security-property-based-testing/skills/property-based-testing/references/design.md +0 -191
- package/skills/security-property-based-testing/skills/property-based-testing/references/generating.md +0 -200
- package/skills/security-property-based-testing/skills/property-based-testing/references/libraries.md +0 -130
- package/skills/security-property-based-testing/skills/property-based-testing/references/refactoring.md +0 -181
- package/skills/security-property-based-testing/skills/property-based-testing/references/reviewing.md +0 -209
- package/skills/security-property-based-testing/skills/property-based-testing/references/strategies.md +0 -124
- package/skills/semgrep-rule-creator/.claude-plugin/plugin.json +0 -8
- package/skills/semgrep-rule-creator/README.md +0 -43
- package/skills/semgrep-rule-creator/commands/semgrep-rule.md +0 -26
- package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/SKILL.md +0 -168
- package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/quick-reference.md +0 -203
- package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/workflow.md +0 -240
- package/skills/semgrep-rule-variant-creator/.claude-plugin/plugin.json +0 -9
- package/skills/semgrep-rule-variant-creator/README.md +0 -86
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/SKILL.md +0 -205
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/applicability-analysis.md +0 -250
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/language-syntax-guide.md +0 -324
- package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/workflow.md +0 -518
- package/skills/session-logs/SKILL.md +0 -115
- package/skills/sharp-edges/.claude-plugin/plugin.json +0 -10
- package/skills/sharp-edges/README.md +0 -48
- package/skills/sharp-edges/SKILL.md +0 -292
- package/skills/sharp-edges/skills/sharp-edges/SKILL.md +0 -292
- package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +0 -252
- package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +0 -274
- package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +0 -333
- package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +0 -190
- package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +0 -205
- package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +0 -285
- package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +0 -270
- package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +0 -263
- package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +0 -269
- package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +0 -265
- package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +0 -245
- package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +0 -274
- package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +0 -273
- package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +0 -272
- package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +0 -287
- package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +0 -588
- package/skills/sherpa-onnx-tts/SKILL.md +0 -103
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
- package/skills/songsee/SKILL.md +0 -49
- package/skills/sonoscli/SKILL.md +0 -46
- package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +0 -10
- package/skills/spec-to-code-compliance/README.md +0 -67
- package/skills/spec-to-code-compliance/SKILL.md +0 -349
- package/skills/spec-to-code-compliance/commands/spec-compliance.md +0 -22
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +0 -349
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +0 -69
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +0 -417
- package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +0 -105
- package/skills/static-analysis/.claude-plugin/plugin.json +0 -8
- package/skills/static-analysis/README.md +0 -59
- package/skills/static-analysis/SKILL.md +0 -91
- package/skills/static-analysis/skills/codeql/SKILL.md +0 -315
- package/skills/static-analysis/skills/sarif-parsing/SKILL.md +0 -479
- package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +0 -162
- package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +0 -331
- package/skills/static-analysis/skills/semgrep/SKILL.md +0 -337
- package/skills/summarize/SKILL.md +0 -87
- package/skills/testing-handbook-skills/.claude-plugin/plugin.json +0 -8
- package/skills/testing-handbook-skills/README.md +0 -241
- package/skills/testing-handbook-skills/SKILL.md +0 -104
- package/skills/testing-handbook-skills/scripts/pyproject.toml +0 -8
- package/skills/testing-handbook-skills/scripts/validate-skills.py +0 -657
- package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +0 -341
- package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +0 -640
- package/skills/testing-handbook-skills/skills/atheris/SKILL.md +0 -522
- package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +0 -460
- package/skills/testing-handbook-skills/skills/codeql/SKILL.md +0 -552
- package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +0 -512
- package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +0 -612
- package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +0 -303
- package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +0 -433
- package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +0 -621
- package/skills/testing-handbook-skills/skills/libafl/SKILL.md +0 -632
- package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +0 -795
- package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +0 -434
- package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +0 -443
- package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +0 -605
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +0 -372
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +0 -280
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +0 -452
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +0 -504
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +0 -454
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +0 -527
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +0 -366
- package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +0 -482
- package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +0 -539
- package/skills/variant-analysis/.claude-plugin/plugin.json +0 -8
- package/skills/variant-analysis/README.md +0 -41
- package/skills/variant-analysis/commands/variants.md +0 -23
- package/skills/variant-analysis/skills/variant-analysis/METHODOLOGY.md +0 -327
- package/skills/variant-analysis/skills/variant-analysis/SKILL.md +0 -142
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/cpp.ql +0 -119
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/go.ql +0 -69
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/java.ql +0 -71
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/javascript.ql +0 -63
- package/skills/variant-analysis/skills/variant-analysis/resources/codeql/python.ql +0 -80
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/cpp.yaml +0 -98
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/go.yaml +0 -63
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/java.yaml +0 -61
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/javascript.yaml +0 -60
- package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/python.yaml +0 -72
- package/skills/variant-analysis/skills/variant-analysis/resources/variant-report-template.md +0 -75
- package/skills/video-frames/SKILL.md +0 -46
- package/skills/video-frames/scripts/frame.sh +0 -81
- package/skills/voice-call/SKILL.md +0 -45
- package/skills/yara-authoring/.claude-plugin/plugin.json +0 -9
- package/skills/yara-authoring/README.md +0 -131
- package/skills/yara-authoring/skills/yara-rule-authoring/SKILL.md +0 -645
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Mac_ProtonRAT_Jan25.yar +0 -99
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_NPM_SupplyChain_Jan25.yar +0 -170
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Win_Remcos_Jan25.yar +0 -103
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_CRX_SuspiciousPermissions.yar +0 -134
- package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_JS_Obfuscation_Jan25.yar +0 -185
- package/skills/yara-authoring/skills/yara-rule-authoring/references/crx-module.md +0 -214
- package/skills/yara-authoring/skills/yara-rule-authoring/references/dex-module.md +0 -383
- package/skills/yara-authoring/skills/yara-rule-authoring/references/performance.md +0 -333
- package/skills/yara-authoring/skills/yara-rule-authoring/references/strings.md +0 -433
- package/skills/yara-authoring/skills/yara-rule-authoring/references/style-guide.md +0 -257
- package/skills/yara-authoring/skills/yara-rule-authoring/references/testing.md +0 -399
- package/skills/yara-authoring/skills/yara-rule-authoring/scripts/atom_analyzer.py +0 -526
- package/skills/yara-authoring/skills/yara-rule-authoring/scripts/pyproject.toml +0 -25
- package/skills/yara-authoring/skills/yara-rule-authoring/scripts/yara_lint.py +0 -631
- package/skills/yara-authoring/skills/yara-rule-authoring/workflows/rule-development.md +0 -493
package/README.md
CHANGED
|
@@ -62,6 +62,10 @@ const commands = buildSkillCommandSpecs(entries);
|
|
|
62
62
|
// Returns array of command specs for chat interfaces
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
+
## Bundled documentation skills
|
|
66
|
+
|
|
67
|
+
Alongside community-oriented skills, this package ships **`elizaos`**, **`eliza-cloud`**, and **`eliza-app-development`** — concise references for elizaOS runtime concepts, Eliza Cloud as a backend, and building elizaOS-based applications (including the Eliza app repository layout).
|
|
68
|
+
|
|
65
69
|
## Skill Discovery
|
|
66
70
|
|
|
67
71
|
Skills are loaded from multiple locations in precedence order (later overrides earlier):
|
package/dist/formatter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiBtE;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CA8B7D;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAMzE;
|
|
1
|
+
{"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiBtE;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CA8B7D;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAMzE;AA0DD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,UAAU,EAAE,EACrB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B,gBAAgB,EAAE,CAgEpB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAEvD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAExD"}
|
package/dist/formatter.js
CHANGED
|
@@ -73,7 +73,8 @@ const SKILL_COMMAND_DESCRIPTION_MAX_LENGTH = 100;
|
|
|
73
73
|
* @returns Sanitized command name
|
|
74
74
|
*/
|
|
75
75
|
function sanitizeSkillCommandName(raw) {
|
|
76
|
-
const
|
|
76
|
+
const clamped = raw.length > 1024 ? raw.slice(0, 1024) : raw;
|
|
77
|
+
const normalized = clamped
|
|
77
78
|
.toLowerCase()
|
|
78
79
|
.replace(/[^a-z0-9_]+/g, "_")
|
|
79
80
|
.replace(/_+/g, "_")
|
package/dist/frontmatter.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SkillFrontmatter, SkillInvocationPolicy, SkillMetadata } from "./types.js";
|
|
1
|
+
import type { SkillFrontmatter, SkillInvocationPolicy, SkillMetadata, SkillProvenance } from "./types.js";
|
|
2
2
|
/**
|
|
3
3
|
* Result of parsing frontmatter from a file
|
|
4
4
|
*/
|
|
@@ -36,4 +36,16 @@ export declare function resolveSkillMetadata(frontmatter: SkillFrontmatter): Ski
|
|
|
36
36
|
* @returns Invocation policy
|
|
37
37
|
*/
|
|
38
38
|
export declare function resolveSkillInvocationPolicy(frontmatter: SkillFrontmatter): SkillInvocationPolicy;
|
|
39
|
+
/**
|
|
40
|
+
* Best-effort provenance parsing from a frontmatter block. Returns `undefined`
|
|
41
|
+
* when the block is missing or malformed (we do not fail loading on bad
|
|
42
|
+
* provenance — it is informational metadata).
|
|
43
|
+
*/
|
|
44
|
+
export declare function resolveSkillProvenance(frontmatter: SkillFrontmatter): SkillProvenance | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Serialize a SKILL.md file with updated frontmatter, preserving body content.
|
|
47
|
+
* Used by the closed learning loop to rewrite provenance after refinement and
|
|
48
|
+
* scoring.
|
|
49
|
+
*/
|
|
50
|
+
export declare function serializeSkillFile(frontmatter: SkillFrontmatter, body: string): string;
|
|
39
51
|
//# sourceMappingURL=frontmatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,gCAAgC;IAChC,WAAW,EAAE,CAAC,CAAC;IACf,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;CACd;AAkCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAOvC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,gBAAgB,GAC5B,aAAa,CAmCf;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,gBAAgB,GAC5B,qBAAqB,CAmBvB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,gBAAgB,GAC5B,eAAe,GAAG,SAAS,CAwC7B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,gBAAgB,EAC7B,IAAI,EAAE,MAAM,GACX,MAAM,CAIR"}
|
package/dist/frontmatter.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parse } from "yaml";
|
|
1
|
+
import { parse, stringify } from "yaml";
|
|
2
2
|
/**
|
|
3
3
|
* Normalize line endings to Unix-style LF
|
|
4
4
|
*/
|
|
@@ -103,3 +103,53 @@ export function resolveSkillInvocationPolicy(frontmatter) {
|
|
|
103
103
|
}
|
|
104
104
|
return policy;
|
|
105
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Best-effort provenance parsing from a frontmatter block. Returns `undefined`
|
|
108
|
+
* when the block is missing or malformed (we do not fail loading on bad
|
|
109
|
+
* provenance — it is informational metadata).
|
|
110
|
+
*/
|
|
111
|
+
export function resolveSkillProvenance(frontmatter) {
|
|
112
|
+
const raw = frontmatter.provenance;
|
|
113
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
const record = raw;
|
|
117
|
+
const source = record.source;
|
|
118
|
+
if (source !== "human" &&
|
|
119
|
+
source !== "agent-generated" &&
|
|
120
|
+
source !== "agent-refined") {
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
const createdAt = typeof record.createdAt === "string" ? record.createdAt : undefined;
|
|
124
|
+
if (!createdAt) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
const refinedCountRaw = record.refinedCount;
|
|
128
|
+
const refinedCount = typeof refinedCountRaw === "number" && Number.isFinite(refinedCountRaw)
|
|
129
|
+
? Math.max(0, Math.floor(refinedCountRaw))
|
|
130
|
+
: 0;
|
|
131
|
+
const provenance = {
|
|
132
|
+
source,
|
|
133
|
+
createdAt,
|
|
134
|
+
refinedCount,
|
|
135
|
+
};
|
|
136
|
+
if (typeof record.derivedFromTrajectory === "string") {
|
|
137
|
+
provenance.derivedFromTrajectory = record.derivedFromTrajectory;
|
|
138
|
+
}
|
|
139
|
+
if (typeof record.lastEvalScore === "number" &&
|
|
140
|
+
Number.isFinite(record.lastEvalScore)) {
|
|
141
|
+
const score = record.lastEvalScore;
|
|
142
|
+
provenance.lastEvalScore = Math.max(0, Math.min(1, score));
|
|
143
|
+
}
|
|
144
|
+
return provenance;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Serialize a SKILL.md file with updated frontmatter, preserving body content.
|
|
148
|
+
* Used by the closed learning loop to rewrite provenance after refinement and
|
|
149
|
+
* scoring.
|
|
150
|
+
*/
|
|
151
|
+
export function serializeSkillFile(frontmatter, body) {
|
|
152
|
+
const yaml = stringify(frontmatter).trimEnd();
|
|
153
|
+
const trimmedBody = body.replace(/^\n+/, "");
|
|
154
|
+
return `---\n${yaml}\n---\n\n${trimmedBody}`;
|
|
155
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
24
|
export { buildSkillCommandSpecs, formatSkillEntriesForPrompt, formatSkillSummary, formatSkillsForPrompt, formatSkillsList, } from "./formatter.js";
|
|
25
|
-
export { type ParsedFrontmatter, parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, stripFrontmatter, } from "./frontmatter.js";
|
|
25
|
+
export { type ParsedFrontmatter, parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, resolveSkillProvenance, serializeSkillFile, stripFrontmatter, } from "./frontmatter.js";
|
|
26
26
|
export { loadSkillEntries, loadSkills, loadSkillsFromDir } from "./loader.js";
|
|
27
|
-
export { clearSkillsDirCache, getSkillsDir } from "./resolver.js";
|
|
28
|
-
export type { LoadSkillsFromDirOptions, LoadSkillsOptions, LoadSkillsResult, Skill, SkillActionDefinition, SkillCommandSpec, SkillDiagnostic, SkillEntry, SkillFrontmatter, SkillInvocationPolicy, SkillMetadata, SkillProviderDefinition, SkillToolDefinition, } from "./types.js";
|
|
27
|
+
export { clearSkillsDirCache, getCuratedActiveDir, getProposedSkillsDir, getSkillsDir, promoteSkill, } from "./resolver.js";
|
|
28
|
+
export type { LoadSkillsFromDirOptions, LoadSkillsOptions, LoadSkillsResult, Skill, SkillActionDefinition, SkillCommandSpec, SkillDiagnostic, SkillEntry, SkillFrontmatter, SkillInvocationPolicy, SkillMetadata, SkillProvenance, SkillProviderDefinition, SkillToolDefinition, } from "./types.js";
|
|
29
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,YAAY,GACb,MAAM,eAAe,CAAC;AAEvB,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,EACL,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
// Prompt formatting
|
|
25
25
|
export { buildSkillCommandSpecs, formatSkillEntriesForPrompt, formatSkillSummary, formatSkillsForPrompt, formatSkillsList, } from "./formatter.js";
|
|
26
26
|
// Frontmatter parsing
|
|
27
|
-
export { parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, stripFrontmatter, } from "./frontmatter.js";
|
|
27
|
+
export { parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, resolveSkillProvenance, serializeSkillFile, stripFrontmatter, } from "./frontmatter.js";
|
|
28
28
|
// Skill loading
|
|
29
29
|
export { loadSkillEntries, loadSkills, loadSkillsFromDir } from "./loader.js";
|
|
30
30
|
// Path resolution
|
|
31
|
-
export { clearSkillsDirCache, getSkillsDir } from "./resolver.js";
|
|
31
|
+
export { clearSkillsDirCache, getCuratedActiveDir, getProposedSkillsDir, getSkillsDir, promoteSkill, } from "./resolver.js";
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAGhB,UAAU,EAEX,MAAM,YAAY,CAAC;AAqMpB;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,gBAAgB,CAGlB;AA8CD;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAiI5E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,GAAE,iBAAsB,GAC9B,UAAU,EAAE,CAuBd"}
|
package/dist/loader.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync, realpathSync, statSync, } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { basename, dirname, isAbsolute, join, resolve, sep } from "node:path";
|
|
4
|
-
import { parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, } from "./frontmatter.js";
|
|
5
|
-
import { getSkillsDir } from "./resolver.js";
|
|
4
|
+
import { parseFrontmatter, resolveSkillInvocationPolicy, resolveSkillMetadata, resolveSkillProvenance, } from "./frontmatter.js";
|
|
5
|
+
import { getCuratedActiveDir, getSkillsDir } from "./resolver.js";
|
|
6
6
|
/** Maximum skill name length per Agent Skills spec */
|
|
7
7
|
const MAX_NAME_LENGTH = 64;
|
|
8
8
|
/** Maximum description length per Agent Skills spec */
|
|
@@ -83,6 +83,7 @@ function loadSkillFromFile(filePath, source) {
|
|
|
83
83
|
if (!frontmatter.description || frontmatter.description.trim() === "") {
|
|
84
84
|
return { skill: null, diagnostics };
|
|
85
85
|
}
|
|
86
|
+
const provenance = resolveSkillProvenance(frontmatter);
|
|
86
87
|
return {
|
|
87
88
|
skill: {
|
|
88
89
|
name,
|
|
@@ -91,6 +92,7 @@ function loadSkillFromFile(filePath, source) {
|
|
|
91
92
|
baseDir: skillDir,
|
|
92
93
|
source,
|
|
93
94
|
disableModelInvocation: frontmatter["disable-model-invocation"] === true,
|
|
95
|
+
...(provenance ? { provenance } : {}),
|
|
94
96
|
},
|
|
95
97
|
diagnostics,
|
|
96
98
|
};
|
|
@@ -276,11 +278,16 @@ export function loadSkills(options = {}) {
|
|
|
276
278
|
}
|
|
277
279
|
}
|
|
278
280
|
if (includeDefaults) {
|
|
279
|
-
// Load in precedence order: bundled < managed < project
|
|
281
|
+
// Load in precedence order: bundled < managed < curated < project.
|
|
282
|
+
// The curated namespace holds agent-derived skills that were promoted to
|
|
283
|
+
// "active" by the closed learning loop or the user. Skills under the
|
|
284
|
+
// sibling "proposed" directory are intentionally NOT scanned here — they
|
|
285
|
+
// are pending human review and only surfaced via the curated-skills API.
|
|
280
286
|
if (resolvedBundledDir) {
|
|
281
287
|
addSkills(loadSkillsFromDirInternal(resolvedBundledDir, "bundled", true));
|
|
282
288
|
}
|
|
283
289
|
addSkills(loadSkillsFromDirInternal(resolvedManagedDir, "managed", true));
|
|
290
|
+
addSkills(loadSkillsFromDirInternal(getCuratedActiveDir(), "curated", true));
|
|
284
291
|
addSkills(loadSkillsFromDirInternal(projectSkillsDir, "project", true));
|
|
285
292
|
}
|
|
286
293
|
// Determine source for explicit paths
|
package/dist/resolver.d.ts
CHANGED
|
@@ -15,4 +15,21 @@ export declare function getSkillsDir(): string;
|
|
|
15
15
|
* Useful for testing or when the directory may have changed.
|
|
16
16
|
*/
|
|
17
17
|
export declare function clearSkillsDirCache(): void;
|
|
18
|
+
/**
|
|
19
|
+
* Absolute path to the curated **active** skills directory. Skills here are
|
|
20
|
+
* loaded into the runtime alongside bundled and managed skills.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getCuratedActiveDir(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Absolute path to the curated **proposed** skills directory. Skills here are
|
|
25
|
+
* NEVER loaded into the runtime — they are staged for human review via the
|
|
26
|
+
* Settings → Learned Skills UI.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getProposedSkillsDir(): string;
|
|
29
|
+
/**
|
|
30
|
+
* Promote a proposed skill to active by moving its directory atomically.
|
|
31
|
+
* Returns the destination path. Throws if the source does not exist or the
|
|
32
|
+
* destination already exists.
|
|
33
|
+
*/
|
|
34
|
+
export declare function promoteSkill(name: string): string;
|
|
18
35
|
//# sourceMappingURL=resolver.d.ts.map
|
package/dist/resolver.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"AA+CA;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,IAAI,MAAM,CA6CrC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAgBD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoBjD"}
|
package/dist/resolver.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { existsSync, readdirSync } from "node:fs";
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, renameSync, statSync, } from "node:fs";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { resolveStateDir } from "@elizaos/core";
|
|
4
5
|
/**
|
|
5
6
|
* Cached skills directory path
|
|
6
7
|
*/
|
|
@@ -88,3 +89,55 @@ export function getSkillsDir() {
|
|
|
88
89
|
export function clearSkillsDirCache() {
|
|
89
90
|
cachedSkillsDir = undefined;
|
|
90
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Default base directory for the curated learning loop. Lives alongside the
|
|
94
|
+
* Eliza state dir (`~/.eliza/`) and holds two sibling namespaces:
|
|
95
|
+
*
|
|
96
|
+
* curated/active/ — auto-promoted or human-promoted skills (loaded)
|
|
97
|
+
* curated/proposed/ — staged drafts awaiting human review (NOT loaded)
|
|
98
|
+
*
|
|
99
|
+
* Honors `ELIZA_STATE_DIR` and `ELIZA_STATE_DIR` (in that order); falls back
|
|
100
|
+
* to `~/.eliza`.
|
|
101
|
+
*/
|
|
102
|
+
function resolveCuratedBaseDir() {
|
|
103
|
+
return join(resolveStateDir(), "skills", "curated");
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Absolute path to the curated **active** skills directory. Skills here are
|
|
107
|
+
* loaded into the runtime alongside bundled and managed skills.
|
|
108
|
+
*/
|
|
109
|
+
export function getCuratedActiveDir() {
|
|
110
|
+
return join(resolveCuratedBaseDir(), "active");
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Absolute path to the curated **proposed** skills directory. Skills here are
|
|
114
|
+
* NEVER loaded into the runtime — they are staged for human review via the
|
|
115
|
+
* Settings → Learned Skills UI.
|
|
116
|
+
*/
|
|
117
|
+
export function getProposedSkillsDir() {
|
|
118
|
+
return join(resolveCuratedBaseDir(), "proposed");
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Promote a proposed skill to active by moving its directory atomically.
|
|
122
|
+
* Returns the destination path. Throws if the source does not exist or the
|
|
123
|
+
* destination already exists.
|
|
124
|
+
*/
|
|
125
|
+
export function promoteSkill(name) {
|
|
126
|
+
if (!/^[a-z0-9-]+$/.test(name)) {
|
|
127
|
+
throw new Error(`Invalid skill name "${name}" — must be lowercase a-z, 0-9, hyphens only`);
|
|
128
|
+
}
|
|
129
|
+
const proposedDir = join(getProposedSkillsDir(), name);
|
|
130
|
+
if (!existsSync(proposedDir) || !statSync(proposedDir).isDirectory()) {
|
|
131
|
+
throw new Error(`Proposed skill "${name}" not found at ${proposedDir}`);
|
|
132
|
+
}
|
|
133
|
+
const activeRoot = getCuratedActiveDir();
|
|
134
|
+
if (!existsSync(activeRoot)) {
|
|
135
|
+
mkdirSync(activeRoot, { recursive: true });
|
|
136
|
+
}
|
|
137
|
+
const activeDir = join(activeRoot, name);
|
|
138
|
+
if (existsSync(activeDir)) {
|
|
139
|
+
throw new Error(`Active skill "${name}" already exists at ${activeDir}`);
|
|
140
|
+
}
|
|
141
|
+
renameSync(proposedDir, activeDir);
|
|
142
|
+
return activeDir;
|
|
143
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provenance of a skill — distinguishes human-authored from agent-derived
|
|
3
|
+
* skills, and tracks self-improvement signal across the closed learning loop.
|
|
4
|
+
*/
|
|
5
|
+
export interface SkillProvenance {
|
|
6
|
+
/** Whether the skill was authored by a human or derived by the agent. */
|
|
7
|
+
source: "human" | "agent-generated" | "agent-refined";
|
|
8
|
+
/** Trajectory that produced or last refined the skill, if any. */
|
|
9
|
+
derivedFromTrajectory?: string;
|
|
10
|
+
/** ISO8601 timestamp when this provenance entry was recorded. */
|
|
11
|
+
createdAt: string;
|
|
12
|
+
/** Number of times the agent has automatically refined this skill. */
|
|
13
|
+
refinedCount: number;
|
|
14
|
+
/** Most recent eval score from the scoring cron, in [0, 1]. */
|
|
15
|
+
lastEvalScore?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Audit trail for native-optimizer-driven skill refinements.
|
|
18
|
+
*
|
|
19
|
+
* Populated by the gradient-mode branch of `skillRefinementEvaluator` —
|
|
20
|
+
* after the LLM-diff auto-budget is exhausted, the evaluator switches to
|
|
21
|
+
* the native `prompt-evolution` optimizer and appends one entry per run.
|
|
22
|
+
*/
|
|
23
|
+
optimizationLineage?: Array<{
|
|
24
|
+
optimizer: "instruction-search" | "prompt-evolution" | "bootstrap-fewshot";
|
|
25
|
+
score: number;
|
|
26
|
+
datasetSize: number;
|
|
27
|
+
generatedAt: string;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
1
30
|
/**
|
|
2
31
|
* Skill frontmatter parsed from SKILL.md YAML header
|
|
3
32
|
*/
|
|
@@ -28,6 +57,8 @@ export interface SkillFrontmatter {
|
|
|
28
57
|
"command-arg-mode"?: string;
|
|
29
58
|
/** Whether skill can be invoked by users via commands */
|
|
30
59
|
"user-invocable"?: boolean;
|
|
60
|
+
/** Provenance metadata — present on agent-derived/curated skills. */
|
|
61
|
+
provenance?: SkillProvenance;
|
|
31
62
|
/** Additional arbitrary metadata */
|
|
32
63
|
[key: string]: unknown;
|
|
33
64
|
}
|
|
@@ -46,10 +77,16 @@ export interface Skill {
|
|
|
46
77
|
filePath?: string;
|
|
47
78
|
/** Absolute path to the skill's base directory (optional for inline skills) */
|
|
48
79
|
baseDir?: string;
|
|
49
|
-
/** Source identifier (e.g., "bundled", "workspace", "managed", "inline") */
|
|
80
|
+
/** Source identifier (e.g., "bundled", "workspace", "managed", "inline", "curated") */
|
|
50
81
|
source?: string;
|
|
51
82
|
/** If true, skill won't be included in model prompts */
|
|
52
83
|
disableModelInvocation?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Provenance metadata when the skill was derived from a trajectory or
|
|
86
|
+
* user-authored as a "curated" skill. Optional for backward compatibility:
|
|
87
|
+
* existing on-disk skills with no provenance block are treated as `human`.
|
|
88
|
+
*/
|
|
89
|
+
provenance?: SkillProvenance;
|
|
53
90
|
/** Unique slug identifier for the skill */
|
|
54
91
|
slug?: string;
|
|
55
92
|
/** Skill version */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,uDAAuD;IACvD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,oCAAoC;IACpC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,WAAW,KAAK;IACpB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,55 +1,59 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
2
|
+
"name": "@elizaos/skills",
|
|
3
|
+
"version": "2.0.0-alpha.533",
|
|
4
|
+
"description": "Bundled skills and skill loading utilities for elizaOS agents",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./skills": "./skills/",
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"scripts": {
|
|
17
|
+
"clean": "rm -rf dist",
|
|
18
|
+
"build": "tsc -p tsconfig.build.json",
|
|
19
|
+
"dev": "tsgo -p tsconfig.build.json --watch --preserveWatchOutput",
|
|
20
|
+
"test": "bun test ./test",
|
|
21
|
+
"prepublishOnly": "bun run clean && bun run build",
|
|
22
|
+
"lint": "bunx @biomejs/biome check --write ./src",
|
|
23
|
+
"lint:check": "bunx @biomejs/biome check ./src"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist/**/*",
|
|
27
|
+
"skills/**/*",
|
|
28
|
+
"README.md"
|
|
29
|
+
],
|
|
30
|
+
"keywords": [
|
|
31
|
+
"elizaos",
|
|
32
|
+
"skills",
|
|
33
|
+
"agent",
|
|
34
|
+
"ai",
|
|
35
|
+
"llm",
|
|
36
|
+
"automation"
|
|
37
|
+
],
|
|
38
|
+
"author": "elizaOS",
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "git+https://github.com/elizaos/eliza.git",
|
|
43
|
+
"directory": "packages/skills"
|
|
44
|
+
},
|
|
45
|
+
"engines": {
|
|
46
|
+
"node": ">=22.0.0"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@elizaos/core": "2.0.0-alpha.533",
|
|
50
|
+
"yaml": "^2.8.2"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"tsx": "^4.19.2"
|
|
54
|
+
},
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public"
|
|
57
|
+
},
|
|
58
|
+
"gitHead": "05dabeb45ed8d069d15ca63082c42c315d1540e7"
|
|
55
59
|
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-monetized-app
|
|
3
|
+
description: "Use when the task is building a new app on Eliza Cloud that earns money — chat apps, agent apps, MCP-backed tools, anything that calls the cloud's chat/messages/inference endpoints on behalf of users. Covers app registration, container deploy, markup configuration, affiliate header, and the survival-economics loop where earnings auto-fund the agent's own hosting. Pairs with the `eliza-cloud` skill (which covers Cloud as a backend in general) by focusing specifically on the build-and-monetize flow."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Build a monetized app on Eliza Cloud
|
|
7
|
+
|
|
8
|
+
Use this skill when you need to build an app that takes a markup on every chat or inference call and credits the earnings back to your owner. Eliza Cloud already supports app registration, per-app API keys, container deploys, the `appId`-based auth and redirect flow, the affiliate-header revenue path, and creator-monetization plumbing — you do not need to invent any of these.
|
|
9
|
+
|
|
10
|
+
Read `references/sdk-flow.md` for the 6-step build flow with a self-contained code example. External references (all public):
|
|
11
|
+
|
|
12
|
+
- **Working chat-app**: [`elizaOS/cloud-mini-apps/apps/edad-chat`](https://github.com/elizaOS/cloud-mini-apps/tree/main/apps/edad-chat) — copyable end-to-end implementation. Read its `server.ts` and `api/proxy.ts` for the canonical chat-forwarder shape using `@elizaos/cloud-sdk`.
|
|
13
|
+
- **SDK reference**: [`@elizaos/cloud-sdk` README](https://github.com/elizaOS/cloud/tree/develop/packages/sdk) — typed methods + helpers + auth.
|
|
14
|
+
- **Human-readable recipe**: [`docs/building-a-monetized-app.md`](https://github.com/elizaOS/cloud/blob/develop/docs/building-a-monetized-app.md) — same loop, narrative form, with the schema fields explained.
|
|
15
|
+
|
|
16
|
+
## The survival-economics loop
|
|
17
|
+
|
|
18
|
+
A Eliza-style agent running in an Eliza Cloud container costs ~$0.67/day at the default tier (256 MB CPU + 512 MB RAM). When the org's credit balance and the owner's redeemable earnings both hit zero, the container is stopped after a 48-hour grace window. The container-billing cron pulls earnings before credits, so an app that earns more than its hosting costs keeps the agent alive indefinitely. See `references/survival-economics.md` for the exact accounting (`redeemable_earnings_ledger`, `credit_transactions`, the cron at `app/api/cron/container-billing/route.ts`).
|
|
19
|
+
|
|
20
|
+
This is why the skill exists: making money is how the agent stays online.
|
|
21
|
+
|
|
22
|
+
## Default flow
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
import { ElizaCloudClient } from "@elizaos/cloud-sdk";
|
|
26
|
+
|
|
27
|
+
const cloud = new ElizaCloudClient({ apiKey: process.env.ELIZAOS_CLOUD_API_KEY });
|
|
28
|
+
|
|
29
|
+
// 1. register the app
|
|
30
|
+
const { app, apiKey } = await cloud.routes.postApiV1Apps({
|
|
31
|
+
json: { name, app_url: "https://placeholder.invalid", skipGitHubRepo: true },
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
// 2. build + push container image
|
|
35
|
+
// 3. deploy container
|
|
36
|
+
// 4. set markup %
|
|
37
|
+
// 5. patch app_url + allowed_origins to the container URL
|
|
38
|
+
// 6. report URLs to the human
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Full code in `references/sdk-flow.md`. The skill assumes you have:
|
|
42
|
+
|
|
43
|
+
- `ELIZAOS_CLOUD_API_KEY` in env (Eliza packages this for you)
|
|
44
|
+
- `@elizaos/cloud-sdk` available (already a runtime dependency)
|
|
45
|
+
- A goal and a name (make the name up if not given; collisions retry once with a 6-char suffix)
|
|
46
|
+
|
|
47
|
+
## Auth + monetization headers
|
|
48
|
+
|
|
49
|
+
Every cloud-SDK call your deployed app makes on behalf of a user MUST carry:
|
|
50
|
+
|
|
51
|
+
- `Authorization: Bearer <user_jwt>` — the JWT from the app-auth OAuth redirect
|
|
52
|
+
- `x-affiliate-code: <your_affiliate_code>` — the owner's affiliate code; this is what credits earnings
|
|
53
|
+
|
|
54
|
+
This pattern is shared with the [`eliza-cloud`](../eliza-cloud/SKILL.md) skill; see that skill for the auth flow itself. This skill assumes you've already read it.
|
|
55
|
+
|
|
56
|
+
## Read these references in order
|
|
57
|
+
|
|
58
|
+
1. `references/sdk-flow.md` — the 6-step deploy + monetize flow with full code
|
|
59
|
+
2. `references/survival-economics.md` — why this matters; how earnings flow into hosting
|
|
60
|
+
3. `references/failure-modes.md` — recovery table for the failures you'll actually hit (name collision, container deploy failure, auth blocker, etc.)
|
|
61
|
+
|
|
62
|
+
## What this skill is NOT
|
|
63
|
+
|
|
64
|
+
- **It is not the app's product code.** The skill is the deploy + monetize + survive surface. What the app DOES is up to you given the task.
|
|
65
|
+
- **It is not a retry loop.** Each SDK call is idempotent; if step 5 fails, restart from there.
|
|
66
|
+
- **It does not configure affiliate codes.** Affiliate codes belong to the owner, not the app, and live across all of an owner's apps. The skill inherits whatever is configured.
|
|
67
|
+
- **It does not assume always-on billing.** The org may have set `pay_as_you_go_from_earnings = false`, in which case hosting comes purely from credits and earnings stay on the redemption ledger. The skill works either way; the org's owner controls the toggle.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Failure modes and recovery
|
|
2
|
+
|
|
3
|
+
The recovery table for the failures you'll actually encounter when running the SDK flow. Each row is a real failure shape, what causes it, and what you do.
|
|
4
|
+
|
|
5
|
+
## Registration failures (step 1)
|
|
6
|
+
|
|
7
|
+
| Symptom | Cause | Recovery |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `409 name_collision` from `postApiV1Apps` | Another app on the org or globally already uses this name | Append a 6-char random base36 suffix (`Math.random().toString(36).slice(2, 8)`) and retry once. If the retry also collides, surface to the human — that's a naming conflict the agent shouldn't auto-resolve a second time. |
|
|
10
|
+
| `400 invalid_app_url` | The placeholder URL doesn't match the cloud's URL-format check | Use `https://placeholder.invalid` (the canonical placeholder); RFC-2606 reserves `.invalid` so it always parses but never resolves. |
|
|
11
|
+
| `403 quota_exceeded` on app creation | Org has hit its `apps_per_org` limit | Tell the human; they need to retire an old app or upgrade the tier. Do not silently delete an existing app. |
|
|
12
|
+
|
|
13
|
+
## Image build / push failures (step 2)
|
|
14
|
+
|
|
15
|
+
The agent's job, not the SDK's. Common shapes:
|
|
16
|
+
|
|
17
|
+
| Symptom | Cause | Recovery |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `denied: requested access to the resource is denied` on push | Registry credentials missing or wrong scope | Ask the human to fix registry creds; pause until resolved. |
|
|
20
|
+
| `manifest unknown` / `403` from registry | The image tag doesn't exist (build silently failed) | Re-run the build with `--quiet=false` to see the actual error; surface that to the human if it's a Dockerfile issue. |
|
|
21
|
+
| Image pushes fine but container deploy fails health-check | Image's server doesn't bind to `$PORT`, or binds to `127.0.0.1` instead of `0.0.0.0` | Read `cloud.routes.getApiV1ContainersByIdLogs(id)`, find the bind line, fix the Dockerfile or server.ts. |
|
|
22
|
+
|
|
23
|
+
## Container deploy failures (step 3)
|
|
24
|
+
|
|
25
|
+
| Symptom | Cause | Recovery |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| `402 insufficient_balance` from `postApiV1Containers` | Org has zero credits AND zero earnings | Tell the human to top up at `/dashboard/billing`. There's no auto-recovery here — an agent that can't pay can't deploy. |
|
|
28
|
+
| Container starts but `status` stays `pending` for >5 min | Image pull is slow (large image) or scheduler is congested | Wait up to 10 min before declaring failure. Past that, pull container logs and surface. |
|
|
29
|
+
| Container hits `crash_loop` immediately | Image runs but exits non-zero on startup | Pull `getApiV1ContainersByIdLogs(id)`, surface the stderr to the human, pause. Common causes: missing env var, server bind issue, missing dependency in the image. |
|
|
30
|
+
| `403 quota_exceeded` on container deploy | Org has hit `containers_per_org` | Tell the human; they need to remove a container or upgrade. |
|
|
31
|
+
|
|
32
|
+
## Markup configuration (step 4)
|
|
33
|
+
|
|
34
|
+
Generally bulletproof since `inference_markup_percentage` is just a number on the apps table. Rare:
|
|
35
|
+
|
|
36
|
+
| Symptom | Cause | Recovery |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| `400 markup_out_of_range` | Markup outside the allowed bound (typically 0–50%) | Cap your value at the bound and retry. |
|
|
39
|
+
|
|
40
|
+
## Patch app_url + origins (step 5)
|
|
41
|
+
|
|
42
|
+
| Symptom | Cause | Recovery |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| `400 invalid_origin` | Container's `load_balancer_url` is nil because container isn't ready yet | Re-poll `getApiV1ContainersById` until `status === "running"` and `load_balancer_url` is populated, then patch. |
|
|
45
|
+
|
|
46
|
+
## Custom domain (post-skill, optional)
|
|
47
|
+
|
|
48
|
+
If the human asks for a custom domain after deploy:
|
|
49
|
+
|
|
50
|
+
| Symptom | Cause | Recovery |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| `verified: false` on the domain after add | DNS hasn't propagated | Tell the human; verification is async and depends on their DNS provider. The skill's job is done after step 6 — domain verification is not part of the skill. |
|
|
53
|
+
|
|
54
|
+
## Auth flow failures (during user signup)
|
|
55
|
+
|
|
56
|
+
These hit AFTER the skill is complete, when users actually try to sign in to the deployed app. Not the skill's responsibility, but worth knowing:
|
|
57
|
+
|
|
58
|
+
| Symptom | Cause | Recovery |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| OAuth redirect lands on `404` at `/api/v1/app-auth/connect` | Cloud hasn't deployed the steward-sync path yet | Out of scope for this skill — it's an upstream cloud deploy issue. |
|
|
61
|
+
| User completes OAuth but chat returns `401 invalid_jwt` | The user's JWT shape changed between signup and request | Have the user re-sign-in. If it persists, the issue is upstream. |
|
|
62
|
+
|
|
63
|
+
## What you don't recover from
|
|
64
|
+
|
|
65
|
+
If the agent can't deploy at all (zero credits AND zero earnings) the loop has bottomed out. There's no programmatic recovery — only the human can top up. Tell them clearly:
|
|
66
|
+
|
|
67
|
+
> "I can't deploy a new app — both org credits and your redeemable earnings are zero. Top up at https://www.elizacloud.ai/dashboard/billing or earn enough on existing apps to cover the next deploy."
|
|
68
|
+
|
|
69
|
+
This is a survival-economics terminal state, not a code bug.
|