@funnycode/myclaude 0.1.183 → 0.1.185
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/LICENSE +21 -21
- package/dist/myclaude.js +16587 -19680
- package/dist/myclaude.mjs +16587 -19680
- package/package.json +131 -131
- package/seed/marketplaces/ecc/.claude/commands/add-language-rules.md +39 -0
- package/seed/marketplaces/ecc/.claude/commands/database-migration.md +36 -0
- package/seed/marketplaces/ecc/.claude/commands/feature-development.md +38 -0
- package/seed/marketplaces/ecc/.claude/ecc-tools.json +334 -0
- package/seed/marketplaces/ecc/.claude/enterprise/controls.md +15 -0
- package/seed/marketplaces/ecc/.claude/homunculus/instincts/inherited/everything-claude-code-instincts.yaml +162 -0
- package/seed/marketplaces/ecc/.claude/identity.json +14 -0
- package/seed/marketplaces/ecc/.claude/package-manager.json +4 -0
- package/seed/marketplaces/ecc/.claude/research/everything-claude-code-research-playbook.md +21 -0
- package/seed/marketplaces/ecc/.claude/rules/everything-claude-code-guardrails.md +43 -0
- package/seed/marketplaces/ecc/.claude/rules/node.md +56 -0
- package/seed/marketplaces/ecc/.claude/skills/everything-claude-code/SKILL.md +442 -0
- package/seed/marketplaces/ecc/.claude/team/everything-claude-code-team-config.json +15 -0
- package/seed/marketplaces/ecc/.opencode/package-lock.json +169 -169
- package/seed/marketplaces/ecc/.vscode/settings.json +17 -0
- package/seed/marketplaces/ecc/commands/aside.md +164 -164
- package/seed/marketplaces/ecc/commands/auto-update.md +28 -28
- package/seed/marketplaces/ecc/commands/build-fix.md +66 -66
- package/seed/marketplaces/ecc/commands/checkpoint.md +78 -78
- package/seed/marketplaces/ecc/commands/code-review.md +289 -289
- package/seed/marketplaces/ecc/commands/cost-report.md +107 -107
- package/seed/marketplaces/ecc/commands/cpp-build.md +173 -173
- package/seed/marketplaces/ecc/commands/cpp-review.md +132 -132
- package/seed/marketplaces/ecc/commands/cpp-test.md +251 -251
- package/seed/marketplaces/ecc/commands/ecc-guide.md +93 -93
- package/seed/marketplaces/ecc/commands/evolve.md +178 -178
- package/seed/marketplaces/ecc/commands/fastapi-review.md +39 -39
- package/seed/marketplaces/ecc/commands/feature-dev.md +49 -49
- package/seed/marketplaces/ecc/commands/flutter-build.md +164 -164
- package/seed/marketplaces/ecc/commands/flutter-review.md +116 -116
- package/seed/marketplaces/ecc/commands/flutter-test.md +144 -144
- package/seed/marketplaces/ecc/commands/gan-build.md +103 -103
- package/seed/marketplaces/ecc/commands/gan-design.md +39 -39
- package/seed/marketplaces/ecc/commands/go-build.md +183 -183
- package/seed/marketplaces/ecc/commands/go-review.md +148 -148
- package/seed/marketplaces/ecc/commands/go-test.md +268 -268
- package/seed/marketplaces/ecc/commands/gradle-build.md +70 -70
- package/seed/marketplaces/ecc/commands/harness-audit.md +84 -84
- package/seed/marketplaces/ecc/commands/hookify-configure.md +14 -14
- package/seed/marketplaces/ecc/commands/hookify-help.md +46 -46
- package/seed/marketplaces/ecc/commands/hookify-list.md +21 -21
- package/seed/marketplaces/ecc/commands/hookify.md +50 -50
- package/seed/marketplaces/ecc/commands/instinct-export.md +66 -66
- package/seed/marketplaces/ecc/commands/instinct-import.md +114 -114
- package/seed/marketplaces/ecc/commands/instinct-status.md +59 -59
- package/seed/marketplaces/ecc/commands/jira.md +106 -106
- package/seed/marketplaces/ecc/commands/kotlin-build.md +174 -174
- package/seed/marketplaces/ecc/commands/kotlin-review.md +140 -140
- package/seed/marketplaces/ecc/commands/kotlin-test.md +312 -312
- package/seed/marketplaces/ecc/commands/learn-eval.md +116 -116
- package/seed/marketplaces/ecc/commands/learn.md +74 -74
- package/seed/marketplaces/ecc/commands/loop-start.md +36 -36
- package/seed/marketplaces/ecc/commands/loop-status.md +77 -77
- package/seed/marketplaces/ecc/commands/marketing-campaign.md +129 -129
- package/seed/marketplaces/ecc/commands/model-route.md +30 -30
- package/seed/marketplaces/ecc/commands/multi-backend.md +162 -162
- package/seed/marketplaces/ecc/commands/multi-execute.md +319 -319
- package/seed/marketplaces/ecc/commands/multi-frontend.md +162 -162
- package/seed/marketplaces/ecc/commands/multi-plan.md +272 -272
- package/seed/marketplaces/ecc/commands/multi-workflow.md +195 -195
- package/seed/marketplaces/ecc/commands/plan-prd.md +160 -160
- package/seed/marketplaces/ecc/commands/plan.md +200 -200
- package/seed/marketplaces/ecc/commands/pm2.md +276 -276
- package/seed/marketplaces/ecc/commands/pr.md +184 -184
- package/seed/marketplaces/ecc/commands/project-init.md +86 -86
- package/seed/marketplaces/ecc/commands/projects.md +39 -39
- package/seed/marketplaces/ecc/commands/promote.md +41 -41
- package/seed/marketplaces/ecc/commands/prp-commit.md +112 -112
- package/seed/marketplaces/ecc/commands/prp-implement.md +385 -385
- package/seed/marketplaces/ecc/commands/prp-plan.md +502 -502
- package/seed/marketplaces/ecc/commands/prp-pr.md +184 -184
- package/seed/marketplaces/ecc/commands/prp-prd.md +447 -447
- package/seed/marketplaces/ecc/commands/prune.md +31 -31
- package/seed/marketplaces/ecc/commands/python-review.md +297 -297
- package/seed/marketplaces/ecc/commands/quality-gate.md +33 -33
- package/seed/marketplaces/ecc/commands/refactor-clean.md +84 -84
- package/seed/marketplaces/ecc/commands/resume-session.md +156 -156
- package/seed/marketplaces/ecc/commands/review-pr.md +37 -37
- package/seed/marketplaces/ecc/commands/rust-build.md +187 -187
- package/seed/marketplaces/ecc/commands/rust-review.md +142 -142
- package/seed/marketplaces/ecc/commands/rust-test.md +308 -308
- package/seed/marketplaces/ecc/commands/santa-loop.md +175 -175
- package/seed/marketplaces/ecc/commands/save-session.md +275 -275
- package/seed/marketplaces/ecc/commands/security-scan.md +92 -92
- package/seed/marketplaces/ecc/commands/sessions.md +339 -339
- package/seed/marketplaces/ecc/commands/setup-pm.md +80 -80
- package/seed/marketplaces/ecc/commands/skill-create.md +174 -174
- package/seed/marketplaces/ecc/commands/skill-health.md +54 -54
- package/seed/marketplaces/ecc/commands/test-coverage.md +73 -73
- package/seed/marketplaces/ecc/commands/update-codemaps.md +76 -76
- package/seed/marketplaces/ecc/commands/update-docs.md +88 -88
- package/seed/marketplaces/ecc/skills/accessibility/SKILL.md +146 -146
- package/seed/marketplaces/ecc/skills/agent-architecture-audit/SKILL.md +256 -256
- package/seed/marketplaces/ecc/skills/agent-eval/SKILL.md +145 -145
- package/seed/marketplaces/ecc/skills/agent-harness-construction/SKILL.md +73 -73
- package/seed/marketplaces/ecc/skills/agent-introspection-debugging/SKILL.md +153 -153
- package/seed/marketplaces/ecc/skills/agent-payment-x402/SKILL.md +224 -224
- package/seed/marketplaces/ecc/skills/agent-sort/SKILL.md +215 -215
- package/seed/marketplaces/ecc/skills/agentic-engineering/SKILL.md +63 -63
- package/seed/marketplaces/ecc/skills/agentic-os/SKILL.md +387 -387
- package/seed/marketplaces/ecc/skills/ai-first-engineering/SKILL.md +51 -51
- package/seed/marketplaces/ecc/skills/ai-regression-testing/SKILL.md +385 -385
- package/seed/marketplaces/ecc/skills/android-clean-architecture/SKILL.md +339 -339
- package/seed/marketplaces/ecc/skills/angular-developer/SKILL.md +154 -154
- package/seed/marketplaces/ecc/skills/angular-developer/references/angular-animations.md +160 -160
- package/seed/marketplaces/ecc/skills/angular-developer/references/angular-aria.md +410 -410
- package/seed/marketplaces/ecc/skills/angular-developer/references/cli.md +86 -86
- package/seed/marketplaces/ecc/skills/angular-developer/references/component-harnesses.md +59 -59
- package/seed/marketplaces/ecc/skills/angular-developer/references/component-styling.md +91 -91
- package/seed/marketplaces/ecc/skills/angular-developer/references/components.md +117 -117
- package/seed/marketplaces/ecc/skills/angular-developer/references/creating-services.md +97 -97
- package/seed/marketplaces/ecc/skills/angular-developer/references/data-resolvers.md +69 -69
- package/seed/marketplaces/ecc/skills/angular-developer/references/define-routes.md +67 -67
- package/seed/marketplaces/ecc/skills/angular-developer/references/defining-providers.md +72 -72
- package/seed/marketplaces/ecc/skills/angular-developer/references/di-fundamentals.md +120 -120
- package/seed/marketplaces/ecc/skills/angular-developer/references/e2e-testing.md +56 -56
- package/seed/marketplaces/ecc/skills/angular-developer/references/effects.md +83 -83
- package/seed/marketplaces/ecc/skills/angular-developer/references/hierarchical-injectors.md +43 -43
- package/seed/marketplaces/ecc/skills/angular-developer/references/host-elements.md +80 -80
- package/seed/marketplaces/ecc/skills/angular-developer/references/injection-context.md +63 -63
- package/seed/marketplaces/ecc/skills/angular-developer/references/inputs.md +101 -101
- package/seed/marketplaces/ecc/skills/angular-developer/references/linked-signal.md +59 -59
- package/seed/marketplaces/ecc/skills/angular-developer/references/loading-strategies.md +61 -61
- package/seed/marketplaces/ecc/skills/angular-developer/references/mcp.md +108 -108
- package/seed/marketplaces/ecc/skills/angular-developer/references/navigate-to-routes.md +69 -69
- package/seed/marketplaces/ecc/skills/angular-developer/references/outputs.md +86 -86
- package/seed/marketplaces/ecc/skills/angular-developer/references/reactive-forms.md +122 -122
- package/seed/marketplaces/ecc/skills/angular-developer/references/rendering-strategies.md +44 -44
- package/seed/marketplaces/ecc/skills/angular-developer/references/resource.md +77 -77
- package/seed/marketplaces/ecc/skills/angular-developer/references/route-animations.md +56 -56
- package/seed/marketplaces/ecc/skills/angular-developer/references/route-guards.md +52 -52
- package/seed/marketplaces/ecc/skills/angular-developer/references/router-lifecycle.md +45 -45
- package/seed/marketplaces/ecc/skills/angular-developer/references/router-testing.md +87 -87
- package/seed/marketplaces/ecc/skills/angular-developer/references/show-routes-with-outlets.md +68 -68
- package/seed/marketplaces/ecc/skills/angular-developer/references/signal-forms.md +795 -795
- package/seed/marketplaces/ecc/skills/angular-developer/references/signals-overview.md +94 -94
- package/seed/marketplaces/ecc/skills/angular-developer/references/tailwind-css.md +69 -69
- package/seed/marketplaces/ecc/skills/angular-developer/references/template-driven-forms.md +114 -114
- package/seed/marketplaces/ecc/skills/angular-developer/references/testing-fundamentals.md +65 -65
- package/seed/marketplaces/ecc/skills/api-connector-builder/SKILL.md +120 -120
- package/seed/marketplaces/ecc/skills/api-design/SKILL.md +523 -523
- package/seed/marketplaces/ecc/skills/architecture-decision-records/SKILL.md +179 -179
- package/seed/marketplaces/ecc/skills/article-writing/SKILL.md +79 -79
- package/seed/marketplaces/ecc/skills/automation-audit-ops/SKILL.md +142 -142
- package/seed/marketplaces/ecc/skills/autonomous-agent-harness/SKILL.md +273 -273
- package/seed/marketplaces/ecc/skills/autonomous-loops/SKILL.md +610 -610
- package/seed/marketplaces/ecc/skills/backend-patterns/SKILL.md +561 -561
- package/seed/marketplaces/ecc/skills/benchmark/SKILL.md +93 -93
- package/seed/marketplaces/ecc/skills/benchmark-optimization-loop/SKILL.md +69 -69
- package/seed/marketplaces/ecc/skills/blender-motion-state-inspection/SKILL.md +164 -164
- package/seed/marketplaces/ecc/skills/blueprint/SKILL.md +105 -105
- package/seed/marketplaces/ecc/skills/brand-voice/SKILL.md +97 -97
- package/seed/marketplaces/ecc/skills/brand-voice/references/voice-profile-schema.md +55 -55
- package/seed/marketplaces/ecc/skills/browser-qa/SKILL.md +87 -87
- package/seed/marketplaces/ecc/skills/bun-runtime/SKILL.md +84 -84
- package/seed/marketplaces/ecc/skills/canary-watch/SKILL.md +107 -107
- package/seed/marketplaces/ecc/skills/carrier-relationship-management/SKILL.md +212 -212
- package/seed/marketplaces/ecc/skills/cisco-ios-patterns/SKILL.md +163 -163
- package/seed/marketplaces/ecc/skills/ck/SKILL.md +147 -147
- package/seed/marketplaces/ecc/skills/ck/commands/forget.mjs +44 -44
- package/seed/marketplaces/ecc/skills/ck/commands/info.mjs +24 -24
- package/seed/marketplaces/ecc/skills/ck/commands/init.mjs +143 -143
- package/seed/marketplaces/ecc/skills/ck/commands/list.mjs +40 -40
- package/seed/marketplaces/ecc/skills/ck/commands/migrate.mjs +202 -202
- package/seed/marketplaces/ecc/skills/ck/commands/resume.mjs +36 -36
- package/seed/marketplaces/ecc/skills/ck/commands/save.mjs +210 -210
- package/seed/marketplaces/ecc/skills/ck/commands/shared.mjs +387 -387
- package/seed/marketplaces/ecc/skills/ck/hooks/session-start.mjs +224 -224
- package/seed/marketplaces/ecc/skills/claude-devfleet/SKILL.md +103 -103
- package/seed/marketplaces/ecc/skills/click-path-audit/SKILL.md +244 -244
- package/seed/marketplaces/ecc/skills/clickhouse-io/SKILL.md +439 -439
- package/seed/marketplaces/ecc/skills/code-tour/SKILL.md +236 -236
- package/seed/marketplaces/ecc/skills/codebase-onboarding/SKILL.md +233 -233
- package/seed/marketplaces/ecc/skills/coding-standards/SKILL.md +549 -549
- package/seed/marketplaces/ecc/skills/compose-multiplatform-patterns/SKILL.md +299 -299
- package/seed/marketplaces/ecc/skills/configure-ecc/SKILL.md +384 -384
- package/seed/marketplaces/ecc/skills/connections-optimizer/SKILL.md +189 -189
- package/seed/marketplaces/ecc/skills/content-engine/SKILL.md +131 -131
- package/seed/marketplaces/ecc/skills/content-hash-cache-pattern/SKILL.md +161 -161
- package/seed/marketplaces/ecc/skills/context-budget/SKILL.md +135 -135
- package/seed/marketplaces/ecc/skills/continuous-agent-loop/SKILL.md +45 -45
- package/seed/marketplaces/ecc/skills/continuous-learning/SKILL.md +131 -131
- package/seed/marketplaces/ecc/skills/continuous-learning/config.json +18 -18
- package/seed/marketplaces/ecc/skills/continuous-learning/evaluate-session.sh +69 -69
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/SKILL.md +360 -360
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/agents/observer-loop.sh +322 -322
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/agents/observer.md +198 -198
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/agents/session-guardian.sh +150 -150
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/agents/start-observer.sh +248 -248
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/config.json +8 -8
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/hooks/observe.sh +498 -498
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/scripts/detect-project.sh +322 -322
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/scripts/instinct-cli.py +1826 -1826
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -31
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -62
- package/seed/marketplaces/ecc/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -1018
- package/seed/marketplaces/ecc/skills/cost-aware-llm-pipeline/SKILL.md +183 -183
- package/seed/marketplaces/ecc/skills/cost-tracking/SKILL.md +147 -147
- package/seed/marketplaces/ecc/skills/council/SKILL.md +203 -203
- package/seed/marketplaces/ecc/skills/cpp-coding-standards/SKILL.md +723 -723
- package/seed/marketplaces/ecc/skills/cpp-testing/SKILL.md +324 -324
- package/seed/marketplaces/ecc/skills/crosspost/SKILL.md +111 -111
- package/seed/marketplaces/ecc/skills/csharp-testing/SKILL.md +321 -321
- package/seed/marketplaces/ecc/skills/customer-billing-ops/SKILL.md +140 -140
- package/seed/marketplaces/ecc/skills/customs-trade-compliance/SKILL.md +263 -263
- package/seed/marketplaces/ecc/skills/dart-flutter-patterns/SKILL.md +563 -563
- package/seed/marketplaces/ecc/skills/dashboard-builder/SKILL.md +108 -108
- package/seed/marketplaces/ecc/skills/data-scraper-agent/SKILL.md +764 -764
- package/seed/marketplaces/ecc/skills/data-throughput-accelerator/SKILL.md +72 -72
- package/seed/marketplaces/ecc/skills/database-migrations/SKILL.md +429 -429
- package/seed/marketplaces/ecc/skills/deep-research/SKILL.md +159 -159
- package/seed/marketplaces/ecc/skills/defi-amm-security/SKILL.md +166 -166
- package/seed/marketplaces/ecc/skills/deployment-patterns/SKILL.md +427 -427
- package/seed/marketplaces/ecc/skills/design-system/SKILL.md +82 -82
- package/seed/marketplaces/ecc/skills/django-celery/SKILL.md +457 -457
- package/seed/marketplaces/ecc/skills/django-patterns/SKILL.md +734 -734
- package/seed/marketplaces/ecc/skills/django-security/SKILL.md +593 -593
- package/seed/marketplaces/ecc/skills/django-tdd/SKILL.md +729 -729
- package/seed/marketplaces/ecc/skills/django-verification/SKILL.md +469 -469
- package/seed/marketplaces/ecc/skills/dmux-workflows/SKILL.md +191 -191
- package/seed/marketplaces/ecc/skills/docker-patterns/SKILL.md +364 -364
- package/seed/marketplaces/ecc/skills/documentation-lookup/SKILL.md +90 -90
- package/seed/marketplaces/ecc/skills/dotnet-patterns/SKILL.md +321 -321
- package/seed/marketplaces/ecc/skills/e2e-testing/SKILL.md +326 -326
- package/seed/marketplaces/ecc/skills/ecc-guide/SKILL.md +189 -189
- package/seed/marketplaces/ecc/skills/ecc-tools-cost-audit/SKILL.md +160 -160
- package/seed/marketplaces/ecc/skills/email-ops/SKILL.md +121 -121
- package/seed/marketplaces/ecc/skills/energy-procurement/SKILL.md +228 -228
- package/seed/marketplaces/ecc/skills/enterprise-agent-ops/SKILL.md +50 -50
- package/seed/marketplaces/ecc/skills/error-handling/SKILL.md +376 -376
- package/seed/marketplaces/ecc/skills/eval-harness/SKILL.md +270 -270
- package/seed/marketplaces/ecc/skills/evm-token-decimals/SKILL.md +130 -130
- package/seed/marketplaces/ecc/skills/exa-search/SKILL.md +107 -107
- package/seed/marketplaces/ecc/skills/fal-ai-media/SKILL.md +288 -288
- package/seed/marketplaces/ecc/skills/fastapi-patterns/SKILL.md +327 -327
- package/seed/marketplaces/ecc/skills/finance-billing-ops/SKILL.md +127 -127
- package/seed/marketplaces/ecc/skills/flox-environments/SKILL.md +496 -496
- package/seed/marketplaces/ecc/skills/flutter-dart-code-review/SKILL.md +435 -435
- package/seed/marketplaces/ecc/skills/foundation-models-on-device/SKILL.md +243 -243
- package/seed/marketplaces/ecc/skills/frontend-a11y/SKILL.md +446 -446
- package/seed/marketplaces/ecc/skills/frontend-design-direction/SKILL.md +92 -92
- package/seed/marketplaces/ecc/skills/frontend-patterns/SKILL.md +642 -642
- package/seed/marketplaces/ecc/skills/frontend-slides/SKILL.md +184 -184
- package/seed/marketplaces/ecc/skills/frontend-slides/STYLE_PRESETS.md +330 -330
- package/seed/marketplaces/ecc/skills/frontend-slides/animation-patterns.md +122 -122
- package/seed/marketplaces/ecc/skills/frontend-slides/html-template.md +419 -419
- package/seed/marketplaces/ecc/skills/frontend-slides/scripts/export-pdf.sh +418 -418
- package/seed/marketplaces/ecc/skills/frontend-slides/scripts/extract-pptx.py +96 -96
- package/seed/marketplaces/ecc/skills/frontend-slides/viewport-base.css +153 -153
- package/seed/marketplaces/ecc/skills/fsharp-testing/SKILL.md +280 -280
- package/seed/marketplaces/ecc/skills/gan-style-harness/SKILL.md +278 -278
- package/seed/marketplaces/ecc/skills/gateguard/SKILL.md +125 -125
- package/seed/marketplaces/ecc/skills/git-workflow/SKILL.md +715 -715
- package/seed/marketplaces/ecc/skills/github-ops/SKILL.md +144 -144
- package/seed/marketplaces/ecc/skills/golang-patterns/SKILL.md +674 -674
- package/seed/marketplaces/ecc/skills/golang-testing/SKILL.md +720 -720
- package/seed/marketplaces/ecc/skills/google-workspace-ops/SKILL.md +95 -95
- package/seed/marketplaces/ecc/skills/healthcare-cdss-patterns/SKILL.md +245 -245
- package/seed/marketplaces/ecc/skills/healthcare-emr-patterns/SKILL.md +159 -159
- package/seed/marketplaces/ecc/skills/healthcare-eval-harness/SKILL.md +207 -207
- package/seed/marketplaces/ecc/skills/healthcare-phi-compliance/SKILL.md +145 -145
- package/seed/marketplaces/ecc/skills/hermes-imports/SKILL.md +88 -88
- package/seed/marketplaces/ecc/skills/hexagonal-architecture/SKILL.md +276 -276
- package/seed/marketplaces/ecc/skills/hipaa-compliance/SKILL.md +78 -78
- package/seed/marketplaces/ecc/skills/homelab-network-readiness/SKILL.md +169 -169
- package/seed/marketplaces/ecc/skills/homelab-network-setup/SKILL.md +129 -129
- package/seed/marketplaces/ecc/skills/homelab-pihole-dns/SKILL.md +274 -274
- package/seed/marketplaces/ecc/skills/homelab-vlan-segmentation/SKILL.md +311 -311
- package/seed/marketplaces/ecc/skills/homelab-wireguard-vpn/SKILL.md +305 -305
- package/seed/marketplaces/ecc/skills/hookify-rules/SKILL.md +128 -128
- package/seed/marketplaces/ecc/skills/inventory-demand-planning/SKILL.md +247 -247
- package/seed/marketplaces/ecc/skills/investor-materials/SKILL.md +96 -96
- package/seed/marketplaces/ecc/skills/investor-outreach/SKILL.md +91 -91
- package/seed/marketplaces/ecc/skills/ios-icon-gen/SKILL.md +157 -157
- package/seed/marketplaces/ecc/skills/ios-icon-gen/scripts/generate_icons.swift +258 -258
- package/seed/marketplaces/ecc/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -235
- package/seed/marketplaces/ecc/skills/iterative-retrieval/SKILL.md +211 -211
- package/seed/marketplaces/ecc/skills/ito-basket-compare/SKILL.md +63 -63
- package/seed/marketplaces/ecc/skills/ito-data-atlas-agent/SKILL.md +63 -63
- package/seed/marketplaces/ecc/skills/ito-market-intelligence/SKILL.md +60 -60
- package/seed/marketplaces/ecc/skills/ito-trade-planner/SKILL.md +67 -67
- package/seed/marketplaces/ecc/skills/java-coding-standards/SKILL.md +383 -383
- package/seed/marketplaces/ecc/skills/jira-integration/SKILL.md +293 -293
- package/seed/marketplaces/ecc/skills/jpa-patterns/SKILL.md +151 -151
- package/seed/marketplaces/ecc/skills/knowledge-ops/SKILL.md +154 -154
- package/seed/marketplaces/ecc/skills/kotlin-coroutines-flows/SKILL.md +284 -284
- package/seed/marketplaces/ecc/skills/kotlin-exposed-patterns/SKILL.md +719 -719
- package/seed/marketplaces/ecc/skills/kotlin-ktor-patterns/SKILL.md +689 -689
- package/seed/marketplaces/ecc/skills/kotlin-patterns/SKILL.md +711 -711
- package/seed/marketplaces/ecc/skills/kotlin-testing/SKILL.md +824 -824
- package/seed/marketplaces/ecc/skills/laravel-patterns/SKILL.md +415 -415
- package/seed/marketplaces/ecc/skills/laravel-plugin-discovery/SKILL.md +229 -229
- package/seed/marketplaces/ecc/skills/laravel-security/SKILL.md +285 -285
- package/seed/marketplaces/ecc/skills/laravel-tdd/SKILL.md +283 -283
- package/seed/marketplaces/ecc/skills/laravel-verification/SKILL.md +179 -179
- package/seed/marketplaces/ecc/skills/latency-critical-systems/SKILL.md +73 -73
- package/seed/marketplaces/ecc/skills/lead-intelligence/SKILL.md +321 -321
- package/seed/marketplaces/ecc/skills/lead-intelligence/agents/enrichment-agent.md +85 -85
- package/seed/marketplaces/ecc/skills/lead-intelligence/agents/mutual-mapper.md +75 -75
- package/seed/marketplaces/ecc/skills/lead-intelligence/agents/outreach-drafter.md +98 -98
- package/seed/marketplaces/ecc/skills/lead-intelligence/agents/signal-scorer.md +60 -60
- package/seed/marketplaces/ecc/skills/liquid-glass-design/SKILL.md +279 -279
- package/seed/marketplaces/ecc/skills/llm-trading-agent-security/SKILL.md +146 -146
- package/seed/marketplaces/ecc/skills/logistics-exception-management/SKILL.md +222 -222
- package/seed/marketplaces/ecc/skills/make-interfaces-feel-better/SKILL.md +151 -151
- package/seed/marketplaces/ecc/skills/manim-video/SKILL.md +89 -89
- package/seed/marketplaces/ecc/skills/manim-video/assets/network_graph_scene.py +52 -52
- package/seed/marketplaces/ecc/skills/market-research/SKILL.md +75 -75
- package/seed/marketplaces/ecc/skills/marketing-campaign/SKILL.md +113 -113
- package/seed/marketplaces/ecc/skills/mcp-server-patterns/SKILL.md +69 -69
- package/seed/marketplaces/ecc/skills/messages-ops/SKILL.md +104 -104
- package/seed/marketplaces/ecc/skills/mle-workflow/SKILL.md +346 -346
- package/seed/marketplaces/ecc/skills/motion-advanced/SKILL.md +596 -596
- package/seed/marketplaces/ecc/skills/motion-foundations/SKILL.md +299 -299
- package/seed/marketplaces/ecc/skills/motion-patterns/SKILL.md +435 -435
- package/seed/marketplaces/ecc/skills/motion-ui/SKILL.md +575 -575
- package/seed/marketplaces/ecc/skills/mysql-patterns/SKILL.md +412 -412
- package/seed/marketplaces/ecc/skills/nanoclaw-repl/SKILL.md +33 -33
- package/seed/marketplaces/ecc/skills/nestjs-patterns/SKILL.md +230 -230
- package/seed/marketplaces/ecc/skills/netmiko-ssh-automation/SKILL.md +173 -173
- package/seed/marketplaces/ecc/skills/network-bgp-diagnostics/SKILL.md +167 -167
- package/seed/marketplaces/ecc/skills/network-config-validation/SKILL.md +210 -210
- package/seed/marketplaces/ecc/skills/network-interface-health/SKILL.md +152 -152
- package/seed/marketplaces/ecc/skills/nextjs-turbopack/SKILL.md +57 -57
- package/seed/marketplaces/ecc/skills/nodejs-keccak256/SKILL.md +102 -102
- package/seed/marketplaces/ecc/skills/nutrient-document-processing/SKILL.md +167 -167
- package/seed/marketplaces/ecc/skills/nuxt4-patterns/SKILL.md +100 -100
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/SKILL.md +288 -288
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/gacha.py +224 -224
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/gacha.sh +5 -5
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/avatar-style.md +124 -124
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/boundary-rules.md +53 -53
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/error-handling.md +53 -53
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/identity-tension.md +48 -48
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/naming-system.md +39 -39
- package/seed/marketplaces/ecc/skills/openclaw-persona-forge/references/output-template.md +166 -166
- package/seed/marketplaces/ecc/skills/opensource-pipeline/SKILL.md +255 -255
- package/seed/marketplaces/ecc/skills/parallel-execution-optimizer/SKILL.md +72 -72
- package/seed/marketplaces/ecc/skills/perl-patterns/SKILL.md +504 -504
- package/seed/marketplaces/ecc/skills/perl-security/SKILL.md +503 -503
- package/seed/marketplaces/ecc/skills/perl-testing/SKILL.md +475 -475
- package/seed/marketplaces/ecc/skills/plan-orchestrate/SKILL.md +262 -262
- package/seed/marketplaces/ecc/skills/plankton-code-quality/SKILL.md +236 -236
- package/seed/marketplaces/ecc/skills/postgres-patterns/SKILL.md +147 -147
- package/seed/marketplaces/ecc/skills/prediction-market-oracle-research/SKILL.md +63 -63
- package/seed/marketplaces/ecc/skills/prediction-market-risk-review/SKILL.md +60 -60
- package/seed/marketplaces/ecc/skills/prisma-patterns/SKILL.md +371 -371
- package/seed/marketplaces/ecc/skills/product-capability/SKILL.md +141 -141
- package/seed/marketplaces/ecc/skills/product-lens/SKILL.md +92 -92
- package/seed/marketplaces/ecc/skills/production-audit/SKILL.md +206 -206
- package/seed/marketplaces/ecc/skills/production-scheduling/SKILL.md +238 -238
- package/seed/marketplaces/ecc/skills/project-flow-ops/SKILL.md +111 -111
- package/seed/marketplaces/ecc/skills/prompt-optimizer/SKILL.md +398 -398
- package/seed/marketplaces/ecc/skills/python-patterns/SKILL.md +750 -750
- package/seed/marketplaces/ecc/skills/python-testing/SKILL.md +816 -816
- package/seed/marketplaces/ecc/skills/pytorch-patterns/SKILL.md +396 -396
- package/seed/marketplaces/ecc/skills/quality-nonconformance/SKILL.md +260 -260
- package/seed/marketplaces/ecc/skills/quarkus-patterns/SKILL.md +722 -722
- package/seed/marketplaces/ecc/skills/quarkus-security/SKILL.md +467 -467
- package/seed/marketplaces/ecc/skills/quarkus-tdd/SKILL.md +811 -811
- package/seed/marketplaces/ecc/skills/quarkus-verification/SKILL.md +479 -479
- package/seed/marketplaces/ecc/skills/ralphinho-rfc-pipeline/SKILL.md +67 -67
- package/seed/marketplaces/ecc/skills/recsys-pipeline-architect/SKILL.md +114 -114
- package/seed/marketplaces/ecc/skills/recursive-decision-ledger/SKILL.md +79 -79
- package/seed/marketplaces/ecc/skills/redis-patterns/SKILL.md +403 -403
- package/seed/marketplaces/ecc/skills/regex-vs-llm-structured-text/SKILL.md +220 -220
- package/seed/marketplaces/ecc/skills/remotion-video-creation/SKILL.md +43 -43
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/3d.md +86 -86
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/animations.md +29 -29
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -173
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -100
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -108
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/assets.md +78 -78
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/audio.md +172 -172
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/calculate-metadata.md +104 -104
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/can-decode.md +75 -75
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/charts.md +58 -58
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/compositions.md +146 -146
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/display-captions.md +126 -126
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/extract-frames.md +229 -229
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/fonts.md +152 -152
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/get-audio-duration.md +58 -58
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -68
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/get-video-duration.md +58 -58
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/gifs.md +138 -138
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/images.md +130 -130
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/import-srt-captions.md +67 -67
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/lottie.md +67 -67
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -34
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/measuring-text.md +143 -143
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/sequencing.md +106 -106
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/tailwind.md +11 -11
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/text-animations.md +20 -20
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/timing.md +179 -179
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/transcribe-captions.md +19 -19
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/transitions.md +122 -122
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/trimming.md +52 -52
- package/seed/marketplaces/ecc/skills/remotion-video-creation/rules/videos.md +171 -171
- package/seed/marketplaces/ecc/skills/repo-scan/SKILL.md +78 -78
- package/seed/marketplaces/ecc/skills/research-ops/SKILL.md +112 -112
- package/seed/marketplaces/ecc/skills/returns-reverse-logistics/SKILL.md +240 -240
- package/seed/marketplaces/ecc/skills/rules-distill/SKILL.md +264 -264
- package/seed/marketplaces/ecc/skills/rules-distill/scripts/scan-rules.sh +58 -58
- package/seed/marketplaces/ecc/skills/rules-distill/scripts/scan-skills.sh +129 -129
- package/seed/marketplaces/ecc/skills/rust-patterns/SKILL.md +499 -499
- package/seed/marketplaces/ecc/skills/rust-testing/SKILL.md +500 -500
- package/seed/marketplaces/ecc/skills/safety-guard/SKILL.md +75 -75
- package/seed/marketplaces/ecc/skills/santa-method/SKILL.md +306 -306
- package/seed/marketplaces/ecc/skills/scientific-db-pubmed-database/SKILL.md +175 -175
- package/seed/marketplaces/ecc/skills/scientific-db-uspto-database/SKILL.md +177 -177
- package/seed/marketplaces/ecc/skills/scientific-pkg-gget/SKILL.md +166 -166
- package/seed/marketplaces/ecc/skills/scientific-thinking-literature-review/SKILL.md +192 -192
- package/seed/marketplaces/ecc/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -160
- package/seed/marketplaces/ecc/skills/search-first/SKILL.md +182 -182
- package/seed/marketplaces/ecc/skills/security-bounty-hunter/SKILL.md +99 -99
- package/seed/marketplaces/ecc/skills/security-review/SKILL.md +503 -503
- package/seed/marketplaces/ecc/skills/security-review/cloud-infrastructure-security.md +361 -361
- package/seed/marketplaces/ecc/skills/security-scan/SKILL.md +165 -165
- package/seed/marketplaces/ecc/skills/seo/SKILL.md +154 -154
- package/seed/marketplaces/ecc/skills/skill-comply/SKILL.md +58 -58
- package/seed/marketplaces/ecc/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -5
- package/seed/marketplaces/ecc/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -3
- package/seed/marketplaces/ecc/skills/skill-comply/fixtures/tdd_spec.yaml +44 -44
- package/seed/marketplaces/ecc/skills/skill-comply/prompts/classifier.md +24 -24
- package/seed/marketplaces/ecc/skills/skill-comply/prompts/scenario_generator.md +62 -62
- package/seed/marketplaces/ecc/skills/skill-comply/prompts/spec_generator.md +42 -42
- package/seed/marketplaces/ecc/skills/skill-comply/pyproject.toml +15 -15
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/classifier.py +85 -85
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/grader.py +124 -124
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/parser.py +107 -107
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/report.py +170 -170
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/run.py +127 -127
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/runner.py +186 -186
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/scenario_generator.py +70 -70
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/spec_generator.py +72 -72
- package/seed/marketplaces/ecc/skills/skill-comply/scripts/utils.py +13 -13
- package/seed/marketplaces/ecc/skills/skill-comply/tests/test_grader.py +197 -197
- package/seed/marketplaces/ecc/skills/skill-comply/tests/test_parser.py +90 -90
- package/seed/marketplaces/ecc/skills/skill-comply/tests/test_runner.py +172 -172
- package/seed/marketplaces/ecc/skills/skill-scout/SKILL.md +140 -140
- package/seed/marketplaces/ecc/skills/skill-stocktake/SKILL.md +194 -194
- package/seed/marketplaces/ecc/skills/skill-stocktake/scripts/quick-diff.sh +87 -87
- package/seed/marketplaces/ecc/skills/skill-stocktake/scripts/save-results.sh +56 -56
- package/seed/marketplaces/ecc/skills/skill-stocktake/scripts/scan.sh +170 -170
- package/seed/marketplaces/ecc/skills/social-graph-ranker/SKILL.md +154 -154
- package/seed/marketplaces/ecc/skills/social-publisher/SKILL.md +115 -115
- package/seed/marketplaces/ecc/skills/springboot-patterns/SKILL.md +314 -314
- package/seed/marketplaces/ecc/skills/springboot-security/SKILL.md +272 -272
- package/seed/marketplaces/ecc/skills/springboot-tdd/SKILL.md +158 -158
- package/seed/marketplaces/ecc/skills/springboot-verification/SKILL.md +231 -231
- package/seed/marketplaces/ecc/skills/strategic-compact/SKILL.md +131 -131
- package/seed/marketplaces/ecc/skills/swift-actor-persistence/SKILL.md +143 -143
- package/seed/marketplaces/ecc/skills/swift-concurrency-6-2/SKILL.md +216 -216
- package/seed/marketplaces/ecc/skills/swift-protocol-di-testing/SKILL.md +190 -190
- package/seed/marketplaces/ecc/skills/swiftui-patterns/SKILL.md +259 -259
- package/seed/marketplaces/ecc/skills/tdd-workflow/SKILL.md +463 -463
- package/seed/marketplaces/ecc/skills/team-builder/SKILL.md +168 -168
- package/seed/marketplaces/ecc/skills/terminal-ops/SKILL.md +109 -109
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/SKILL.md +203 -203
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/architecture.md +90 -90
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/data-handling.md +60 -60
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/database.md +99 -99
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/routing.md +64 -64
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/system-usage.md +97 -97
- package/seed/marketplaces/ecc/skills/tinystruct-patterns/references/testing.md +72 -72
- package/seed/marketplaces/ecc/skills/token-budget-advisor/SKILL.md +133 -133
- package/seed/marketplaces/ecc/skills/ui-demo/SKILL.md +465 -465
- package/seed/marketplaces/ecc/skills/ui-to-vue/SKILL.md +134 -134
- package/seed/marketplaces/ecc/skills/uncloud/SKILL.md +343 -343
- package/seed/marketplaces/ecc/skills/unified-notifications-ops/SKILL.md +187 -187
- package/seed/marketplaces/ecc/skills/verification-loop/SKILL.md +126 -126
- package/seed/marketplaces/ecc/skills/video-editing/SKILL.md +310 -310
- package/seed/marketplaces/ecc/skills/videodb/SKILL.md +374 -374
- package/seed/marketplaces/ecc/skills/videodb/reference/api-reference.md +550 -550
- package/seed/marketplaces/ecc/skills/videodb/reference/capture-reference.md +407 -407
- package/seed/marketplaces/ecc/skills/videodb/reference/capture.md +101 -101
- package/seed/marketplaces/ecc/skills/videodb/reference/editor.md +443 -443
- package/seed/marketplaces/ecc/skills/videodb/reference/generative.md +331 -331
- package/seed/marketplaces/ecc/skills/videodb/reference/rtstream-reference.md +564 -564
- package/seed/marketplaces/ecc/skills/videodb/reference/rtstream.md +65 -65
- package/seed/marketplaces/ecc/skills/videodb/reference/search.md +230 -230
- package/seed/marketplaces/ecc/skills/videodb/reference/streaming.md +406 -406
- package/seed/marketplaces/ecc/skills/videodb/reference/use-cases.md +118 -118
- package/seed/marketplaces/ecc/skills/videodb/scripts/ws_listener.py +282 -282
- package/seed/marketplaces/ecc/skills/visa-doc-translate/README.md +86 -86
- package/seed/marketplaces/ecc/skills/visa-doc-translate/SKILL.md +117 -117
- package/seed/marketplaces/ecc/skills/vite-patterns/SKILL.md +449 -449
- package/seed/marketplaces/ecc/skills/windows-desktop-e2e/SKILL.md +887 -887
- package/seed/marketplaces/ecc/skills/workspace-surface-audit/SKILL.md +125 -125
- package/seed/marketplaces/ecc/skills/x-api/SKILL.md +234 -234
- package/dist/SKILL-r7zmg5v7.md +0 -3
- package/dist/cli-mvr5k580.md +0 -3
- package/dist/server-zyhc2a9z.md +0 -3
|
@@ -1,172 +1,172 @@
|
|
|
1
|
-
"""Tests for runner module — scenario execution + subprocess error handling."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
import subprocess
|
|
6
|
-
from dataclasses import dataclass
|
|
7
|
-
from unittest.mock import MagicMock, patch
|
|
8
|
-
|
|
9
|
-
import pytest
|
|
10
|
-
|
|
11
|
-
from scripts.runner import _setup_sandbox, run_scenario
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
@dataclass(frozen=True)
|
|
15
|
-
class _FakeScenario:
|
|
16
|
-
"""Minimal Scenario-like object for runner tests (avoids generator deps)."""
|
|
17
|
-
|
|
18
|
-
id: str
|
|
19
|
-
prompt: str = "do nothing"
|
|
20
|
-
setup_commands: tuple[str, ...] = ()
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class TestSetupSandboxSkipsShellBuiltins:
|
|
24
|
-
"""Setup commands containing shell builtins (cd/pushd/popd) must be skipped.
|
|
25
|
-
|
|
26
|
-
Regression: subprocess.run(["cd", ...]) raises FileNotFoundError because
|
|
27
|
-
cd is a shell builtin, not an external binary. Real-world scenarios often
|
|
28
|
-
include "cd subdir" in setup_commands assuming shell semantics, so the
|
|
29
|
-
runner must tolerate this rather than crashing the whole scenario.
|
|
30
|
-
"""
|
|
31
|
-
|
|
32
|
-
def test_skips_cd(self, tmp_path):
|
|
33
|
-
scenario = _FakeScenario(
|
|
34
|
-
id="t1",
|
|
35
|
-
setup_commands=("cd subdir",),
|
|
36
|
-
)
|
|
37
|
-
called_args: list[list[str]] = []
|
|
38
|
-
|
|
39
|
-
def fake_run(args, **kwargs):
|
|
40
|
-
called_args.append(args)
|
|
41
|
-
return subprocess.CompletedProcess(args=args, returncode=0)
|
|
42
|
-
|
|
43
|
-
with patch("scripts.runner.subprocess.run", side_effect=fake_run):
|
|
44
|
-
_setup_sandbox(tmp_path, scenario)
|
|
45
|
-
|
|
46
|
-
# git init runs once; "cd subdir" must NOT be passed to subprocess
|
|
47
|
-
assert ["git", "init"] in called_args
|
|
48
|
-
assert ["cd", "subdir"] not in called_args
|
|
49
|
-
|
|
50
|
-
def test_skips_pushd_popd(self, tmp_path):
|
|
51
|
-
scenario = _FakeScenario(
|
|
52
|
-
id="t2",
|
|
53
|
-
setup_commands=("pushd dir", "popd"),
|
|
54
|
-
)
|
|
55
|
-
called_args: list[list[str]] = []
|
|
56
|
-
|
|
57
|
-
def fake_run(args, **kwargs):
|
|
58
|
-
called_args.append(args)
|
|
59
|
-
return subprocess.CompletedProcess(args=args, returncode=0)
|
|
60
|
-
|
|
61
|
-
with patch("scripts.runner.subprocess.run", side_effect=fake_run):
|
|
62
|
-
_setup_sandbox(tmp_path, scenario)
|
|
63
|
-
|
|
64
|
-
assert ["pushd", "dir"] not in called_args
|
|
65
|
-
assert ["popd"] not in called_args
|
|
66
|
-
|
|
67
|
-
def test_tolerates_missing_executable(self, tmp_path):
|
|
68
|
-
"""A scenario referencing an unavailable tool must not crash setup."""
|
|
69
|
-
scenario = _FakeScenario(
|
|
70
|
-
id="t3",
|
|
71
|
-
setup_commands=("nonexistent-tool-xyz arg",),
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
def fake_run(args, **kwargs):
|
|
75
|
-
if args[0] == "nonexistent-tool-xyz":
|
|
76
|
-
raise FileNotFoundError(2, "No such file or directory")
|
|
77
|
-
return subprocess.CompletedProcess(args=args, returncode=0)
|
|
78
|
-
|
|
79
|
-
with patch("scripts.runner.subprocess.run", side_effect=fake_run):
|
|
80
|
-
# Must NOT raise — missing tools are skipped, not fatal
|
|
81
|
-
_setup_sandbox(tmp_path, scenario)
|
|
82
|
-
|
|
83
|
-
def test_real_commands_still_run(self, tmp_path):
|
|
84
|
-
"""Skip logic must not break legitimate setup commands."""
|
|
85
|
-
scenario = _FakeScenario(
|
|
86
|
-
id="t4",
|
|
87
|
-
setup_commands=("touch file.txt", "cd ignored", "echo hi"),
|
|
88
|
-
)
|
|
89
|
-
called_args: list[list[str]] = []
|
|
90
|
-
|
|
91
|
-
def fake_run(args, **kwargs):
|
|
92
|
-
called_args.append(args)
|
|
93
|
-
return subprocess.CompletedProcess(args=args, returncode=0)
|
|
94
|
-
|
|
95
|
-
with patch("scripts.runner.subprocess.run", side_effect=fake_run):
|
|
96
|
-
_setup_sandbox(tmp_path, scenario)
|
|
97
|
-
|
|
98
|
-
# Real commands present, cd absent
|
|
99
|
-
assert ["touch", "file.txt"] in called_args
|
|
100
|
-
assert ["echo", "hi"] in called_args
|
|
101
|
-
assert ["cd", "ignored"] not in called_args
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
class TestRunScenarioMaxTurnsTermination:
|
|
105
|
-
"""rc=1 with terminal_reason=max_turns is graceful termination, not failure.
|
|
106
|
-
|
|
107
|
-
claude -p returns rc=1 when --max-turns is reached, but the stream-json
|
|
108
|
-
output is still valid. Treating this as RuntimeError aborts scenarios
|
|
109
|
-
that would have produced useful observations. Detect the marker in stdout
|
|
110
|
-
and downgrade rc=1 + max_turns to non-fatal.
|
|
111
|
-
"""
|
|
112
|
-
|
|
113
|
-
def test_rc1_with_max_turns_marker_returns_normally(self, tmp_path, monkeypatch):
|
|
114
|
-
scenario = _FakeScenario(id="mt1", prompt="long task", setup_commands=())
|
|
115
|
-
|
|
116
|
-
# Skip sandbox setup side effects
|
|
117
|
-
monkeypatch.setattr("scripts.runner._setup_sandbox", lambda *a, **kw: None)
|
|
118
|
-
|
|
119
|
-
max_turns_stdout = (
|
|
120
|
-
'{"type":"system","subtype":"init","session_id":"s1"}\n'
|
|
121
|
-
'{"type":"result","terminal_reason":"max_turns"}\n'
|
|
122
|
-
)
|
|
123
|
-
|
|
124
|
-
fake_result = subprocess.CompletedProcess(
|
|
125
|
-
args=["claude"], returncode=1, stdout=max_turns_stdout, stderr=""
|
|
126
|
-
)
|
|
127
|
-
|
|
128
|
-
with patch("scripts.runner.subprocess.run", return_value=fake_result):
|
|
129
|
-
# Must NOT raise — max_turns is graceful termination
|
|
130
|
-
run_scenario(scenario, model="haiku")
|
|
131
|
-
|
|
132
|
-
def test_rc1_without_max_turns_marker_still_raises(self, tmp_path, monkeypatch):
|
|
133
|
-
"""Real failures (rc≠0 with no max_turns marker) must still raise."""
|
|
134
|
-
scenario = _FakeScenario(id="mt2", prompt="oops", setup_commands=())
|
|
135
|
-
monkeypatch.setattr("scripts.runner._setup_sandbox", lambda *a, **kw: None)
|
|
136
|
-
|
|
137
|
-
fake_result = subprocess.CompletedProcess(
|
|
138
|
-
args=["claude"], returncode=1, stdout="", stderr="auth error"
|
|
139
|
-
)
|
|
140
|
-
|
|
141
|
-
with patch("scripts.runner.subprocess.run", return_value=fake_result):
|
|
142
|
-
with pytest.raises(RuntimeError, match="claude -p failed"):
|
|
143
|
-
run_scenario(scenario, model="haiku")
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
class TestRunScenarioErrorIncludesStdoutTail:
|
|
147
|
-
"""Error messages must include stdout tail, not only stderr.
|
|
148
|
-
|
|
149
|
-
When claude -p fails inside an LLM call, useful diagnostic context often
|
|
150
|
-
appears in stdout (partial stream-json events, model error JSON), not
|
|
151
|
-
stderr. Including stdout tail in the RuntimeError message dramatically
|
|
152
|
-
improves debug-ability without adding any new dependency.
|
|
153
|
-
"""
|
|
154
|
-
|
|
155
|
-
def test_error_message_contains_stdout_tail(self, tmp_path, monkeypatch):
|
|
156
|
-
scenario = _FakeScenario(id="e1", prompt="x", setup_commands=())
|
|
157
|
-
monkeypatch.setattr("scripts.runner._setup_sandbox", lambda *a, **kw: None)
|
|
158
|
-
|
|
159
|
-
diagnostic_marker = "DIAG_STDOUT_MARKER_xyz123"
|
|
160
|
-
fake_result = subprocess.CompletedProcess(
|
|
161
|
-
args=["claude"],
|
|
162
|
-
returncode=2,
|
|
163
|
-
stdout=f"some context {diagnostic_marker} more text",
|
|
164
|
-
stderr="generic error",
|
|
165
|
-
)
|
|
166
|
-
|
|
167
|
-
with patch("scripts.runner.subprocess.run", return_value=fake_result):
|
|
168
|
-
with pytest.raises(RuntimeError) as excinfo:
|
|
169
|
-
run_scenario(scenario, model="haiku")
|
|
170
|
-
|
|
171
|
-
# Stdout marker MUST appear in the error message
|
|
172
|
-
assert diagnostic_marker in str(excinfo.value)
|
|
1
|
+
"""Tests for runner module — scenario execution + subprocess error handling."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import subprocess
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
from unittest.mock import MagicMock, patch
|
|
8
|
+
|
|
9
|
+
import pytest
|
|
10
|
+
|
|
11
|
+
from scripts.runner import _setup_sandbox, run_scenario
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass(frozen=True)
|
|
15
|
+
class _FakeScenario:
|
|
16
|
+
"""Minimal Scenario-like object for runner tests (avoids generator deps)."""
|
|
17
|
+
|
|
18
|
+
id: str
|
|
19
|
+
prompt: str = "do nothing"
|
|
20
|
+
setup_commands: tuple[str, ...] = ()
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class TestSetupSandboxSkipsShellBuiltins:
|
|
24
|
+
"""Setup commands containing shell builtins (cd/pushd/popd) must be skipped.
|
|
25
|
+
|
|
26
|
+
Regression: subprocess.run(["cd", ...]) raises FileNotFoundError because
|
|
27
|
+
cd is a shell builtin, not an external binary. Real-world scenarios often
|
|
28
|
+
include "cd subdir" in setup_commands assuming shell semantics, so the
|
|
29
|
+
runner must tolerate this rather than crashing the whole scenario.
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
def test_skips_cd(self, tmp_path):
|
|
33
|
+
scenario = _FakeScenario(
|
|
34
|
+
id="t1",
|
|
35
|
+
setup_commands=("cd subdir",),
|
|
36
|
+
)
|
|
37
|
+
called_args: list[list[str]] = []
|
|
38
|
+
|
|
39
|
+
def fake_run(args, **kwargs):
|
|
40
|
+
called_args.append(args)
|
|
41
|
+
return subprocess.CompletedProcess(args=args, returncode=0)
|
|
42
|
+
|
|
43
|
+
with patch("scripts.runner.subprocess.run", side_effect=fake_run):
|
|
44
|
+
_setup_sandbox(tmp_path, scenario)
|
|
45
|
+
|
|
46
|
+
# git init runs once; "cd subdir" must NOT be passed to subprocess
|
|
47
|
+
assert ["git", "init"] in called_args
|
|
48
|
+
assert ["cd", "subdir"] not in called_args
|
|
49
|
+
|
|
50
|
+
def test_skips_pushd_popd(self, tmp_path):
|
|
51
|
+
scenario = _FakeScenario(
|
|
52
|
+
id="t2",
|
|
53
|
+
setup_commands=("pushd dir", "popd"),
|
|
54
|
+
)
|
|
55
|
+
called_args: list[list[str]] = []
|
|
56
|
+
|
|
57
|
+
def fake_run(args, **kwargs):
|
|
58
|
+
called_args.append(args)
|
|
59
|
+
return subprocess.CompletedProcess(args=args, returncode=0)
|
|
60
|
+
|
|
61
|
+
with patch("scripts.runner.subprocess.run", side_effect=fake_run):
|
|
62
|
+
_setup_sandbox(tmp_path, scenario)
|
|
63
|
+
|
|
64
|
+
assert ["pushd", "dir"] not in called_args
|
|
65
|
+
assert ["popd"] not in called_args
|
|
66
|
+
|
|
67
|
+
def test_tolerates_missing_executable(self, tmp_path):
|
|
68
|
+
"""A scenario referencing an unavailable tool must not crash setup."""
|
|
69
|
+
scenario = _FakeScenario(
|
|
70
|
+
id="t3",
|
|
71
|
+
setup_commands=("nonexistent-tool-xyz arg",),
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
def fake_run(args, **kwargs):
|
|
75
|
+
if args[0] == "nonexistent-tool-xyz":
|
|
76
|
+
raise FileNotFoundError(2, "No such file or directory")
|
|
77
|
+
return subprocess.CompletedProcess(args=args, returncode=0)
|
|
78
|
+
|
|
79
|
+
with patch("scripts.runner.subprocess.run", side_effect=fake_run):
|
|
80
|
+
# Must NOT raise — missing tools are skipped, not fatal
|
|
81
|
+
_setup_sandbox(tmp_path, scenario)
|
|
82
|
+
|
|
83
|
+
def test_real_commands_still_run(self, tmp_path):
|
|
84
|
+
"""Skip logic must not break legitimate setup commands."""
|
|
85
|
+
scenario = _FakeScenario(
|
|
86
|
+
id="t4",
|
|
87
|
+
setup_commands=("touch file.txt", "cd ignored", "echo hi"),
|
|
88
|
+
)
|
|
89
|
+
called_args: list[list[str]] = []
|
|
90
|
+
|
|
91
|
+
def fake_run(args, **kwargs):
|
|
92
|
+
called_args.append(args)
|
|
93
|
+
return subprocess.CompletedProcess(args=args, returncode=0)
|
|
94
|
+
|
|
95
|
+
with patch("scripts.runner.subprocess.run", side_effect=fake_run):
|
|
96
|
+
_setup_sandbox(tmp_path, scenario)
|
|
97
|
+
|
|
98
|
+
# Real commands present, cd absent
|
|
99
|
+
assert ["touch", "file.txt"] in called_args
|
|
100
|
+
assert ["echo", "hi"] in called_args
|
|
101
|
+
assert ["cd", "ignored"] not in called_args
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
class TestRunScenarioMaxTurnsTermination:
|
|
105
|
+
"""rc=1 with terminal_reason=max_turns is graceful termination, not failure.
|
|
106
|
+
|
|
107
|
+
claude -p returns rc=1 when --max-turns is reached, but the stream-json
|
|
108
|
+
output is still valid. Treating this as RuntimeError aborts scenarios
|
|
109
|
+
that would have produced useful observations. Detect the marker in stdout
|
|
110
|
+
and downgrade rc=1 + max_turns to non-fatal.
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
def test_rc1_with_max_turns_marker_returns_normally(self, tmp_path, monkeypatch):
|
|
114
|
+
scenario = _FakeScenario(id="mt1", prompt="long task", setup_commands=())
|
|
115
|
+
|
|
116
|
+
# Skip sandbox setup side effects
|
|
117
|
+
monkeypatch.setattr("scripts.runner._setup_sandbox", lambda *a, **kw: None)
|
|
118
|
+
|
|
119
|
+
max_turns_stdout = (
|
|
120
|
+
'{"type":"system","subtype":"init","session_id":"s1"}\n'
|
|
121
|
+
'{"type":"result","terminal_reason":"max_turns"}\n'
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
fake_result = subprocess.CompletedProcess(
|
|
125
|
+
args=["claude"], returncode=1, stdout=max_turns_stdout, stderr=""
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
with patch("scripts.runner.subprocess.run", return_value=fake_result):
|
|
129
|
+
# Must NOT raise — max_turns is graceful termination
|
|
130
|
+
run_scenario(scenario, model="haiku")
|
|
131
|
+
|
|
132
|
+
def test_rc1_without_max_turns_marker_still_raises(self, tmp_path, monkeypatch):
|
|
133
|
+
"""Real failures (rc≠0 with no max_turns marker) must still raise."""
|
|
134
|
+
scenario = _FakeScenario(id="mt2", prompt="oops", setup_commands=())
|
|
135
|
+
monkeypatch.setattr("scripts.runner._setup_sandbox", lambda *a, **kw: None)
|
|
136
|
+
|
|
137
|
+
fake_result = subprocess.CompletedProcess(
|
|
138
|
+
args=["claude"], returncode=1, stdout="", stderr="auth error"
|
|
139
|
+
)
|
|
140
|
+
|
|
141
|
+
with patch("scripts.runner.subprocess.run", return_value=fake_result):
|
|
142
|
+
with pytest.raises(RuntimeError, match="claude -p failed"):
|
|
143
|
+
run_scenario(scenario, model="haiku")
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
class TestRunScenarioErrorIncludesStdoutTail:
|
|
147
|
+
"""Error messages must include stdout tail, not only stderr.
|
|
148
|
+
|
|
149
|
+
When claude -p fails inside an LLM call, useful diagnostic context often
|
|
150
|
+
appears in stdout (partial stream-json events, model error JSON), not
|
|
151
|
+
stderr. Including stdout tail in the RuntimeError message dramatically
|
|
152
|
+
improves debug-ability without adding any new dependency.
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
def test_error_message_contains_stdout_tail(self, tmp_path, monkeypatch):
|
|
156
|
+
scenario = _FakeScenario(id="e1", prompt="x", setup_commands=())
|
|
157
|
+
monkeypatch.setattr("scripts.runner._setup_sandbox", lambda *a, **kw: None)
|
|
158
|
+
|
|
159
|
+
diagnostic_marker = "DIAG_STDOUT_MARKER_xyz123"
|
|
160
|
+
fake_result = subprocess.CompletedProcess(
|
|
161
|
+
args=["claude"],
|
|
162
|
+
returncode=2,
|
|
163
|
+
stdout=f"some context {diagnostic_marker} more text",
|
|
164
|
+
stderr="generic error",
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
with patch("scripts.runner.subprocess.run", return_value=fake_result):
|
|
168
|
+
with pytest.raises(RuntimeError) as excinfo:
|
|
169
|
+
run_scenario(scenario, model="haiku")
|
|
170
|
+
|
|
171
|
+
# Stdout marker MUST appear in the error message
|
|
172
|
+
assert diagnostic_marker in str(excinfo.value)
|
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: skill-scout
|
|
3
|
-
description: Search existing local, marketplace, GitHub, and web skill sources before creating a new skill. Use when the user wants to create, build, fork, or find a skill for a workflow.
|
|
4
|
-
origin: community
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Skill Scout
|
|
8
|
-
|
|
9
|
-
Use this skill before creating a new skill. The goal is to avoid duplicating
|
|
10
|
-
existing community or marketplace work, while still vetting anything external
|
|
11
|
-
before adoption.
|
|
12
|
-
|
|
13
|
-
Source: salvaged from stale community PR #1232 by `redminwang`.
|
|
14
|
-
|
|
15
|
-
## When to Use
|
|
16
|
-
|
|
17
|
-
- The user says "create a skill", "build a skill", "make a skill", or "new
|
|
18
|
-
skill".
|
|
19
|
-
- The user asks "is there a skill for X?" or "does a skill exist that does Y?"
|
|
20
|
-
- The user describes a workflow and you are about to suggest creating a new
|
|
21
|
-
skill.
|
|
22
|
-
- The user wants to fork or extend an existing skill.
|
|
23
|
-
|
|
24
|
-
If the user explicitly says to skip search or create from scratch, acknowledge
|
|
25
|
-
that and proceed with the requested creation workflow.
|
|
26
|
-
|
|
27
|
-
## How It Works
|
|
28
|
-
|
|
29
|
-
### Step 1 - Capture Intent
|
|
30
|
-
|
|
31
|
-
Extract:
|
|
32
|
-
|
|
33
|
-
- The task the skill should perform.
|
|
34
|
-
- The trigger conditions for using it.
|
|
35
|
-
- The domain, tools, frameworks, or data sources involved.
|
|
36
|
-
- Three to five search keywords plus useful synonyms.
|
|
37
|
-
|
|
38
|
-
### Step 2 - Search Local Sources
|
|
39
|
-
|
|
40
|
-
Search installed and marketplace skill names first. Local sources are preferred
|
|
41
|
-
because they are already part of the user's environment.
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
find ~/.claude/skills -maxdepth 2 -name SKILL.md 2>/dev/null | grep -iE "keyword|synonym"
|
|
45
|
-
find ~/.claude/plugins/marketplaces -path '*/skills/*/SKILL.md' 2>/dev/null | grep -iE "keyword|synonym"
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
Then search frontmatter descriptions:
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
grep -RilE "keyword|synonym" ~/.claude/skills ~/.claude/plugins/marketplaces 2>/dev/null
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Step 3 - Search Remote Sources
|
|
55
|
-
|
|
56
|
-
Use available GitHub and web search tools. Prefer concise queries:
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
gh search repos "claude code skill keyword" --limit 10 --sort stars
|
|
60
|
-
gh search code "name: keyword" --filename SKILL.md --limit 10
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
For web search, use at most three targeted queries such as:
|
|
64
|
-
|
|
65
|
-
```text
|
|
66
|
-
"claude code skill" keyword
|
|
67
|
-
"SKILL.md" keyword
|
|
68
|
-
"everything-claude-code" keyword
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### Step 4 - Vet External Matches
|
|
72
|
-
|
|
73
|
-
Before recommending any external skill for adoption or forking:
|
|
74
|
-
|
|
75
|
-
- Read the `SKILL.md` frontmatter and instructions.
|
|
76
|
-
- Look for unexpected shell commands, file writes, network calls, credential
|
|
77
|
-
handling, or package installs.
|
|
78
|
-
- Check whether the repository appears maintained.
|
|
79
|
-
- Prefer copying into a fresh local branch and reviewing the diff over editing
|
|
80
|
-
marketplace originals.
|
|
81
|
-
|
|
82
|
-
### Step 5 - Rank Results
|
|
83
|
-
|
|
84
|
-
Rank candidates by:
|
|
85
|
-
|
|
86
|
-
1. Exact keyword match in the skill name.
|
|
87
|
-
2. Keyword or synonym match in description.
|
|
88
|
-
3. Local installed or marketplace source.
|
|
89
|
-
4. Maintained GitHub source with recent activity.
|
|
90
|
-
5. Web-only mention.
|
|
91
|
-
|
|
92
|
-
Cap the final list at 10 results.
|
|
93
|
-
|
|
94
|
-
### Step 6 - Present Decision Options
|
|
95
|
-
|
|
96
|
-
Give the user a short table:
|
|
97
|
-
|
|
98
|
-
| Option | Meaning |
|
|
99
|
-
| --- | --- |
|
|
100
|
-
| Use existing | Invoke or install a matching skill as-is. |
|
|
101
|
-
| Fork or extend | Copy the closest skill and modify it. |
|
|
102
|
-
| Create fresh | Build a new skill after confirming no close match exists. |
|
|
103
|
-
|
|
104
|
-
Only create a new skill after the user chooses that path or after the search
|
|
105
|
-
finds no close match.
|
|
106
|
-
|
|
107
|
-
## Examples
|
|
108
|
-
|
|
109
|
-
### Result Table
|
|
110
|
-
|
|
111
|
-
```markdown
|
|
112
|
-
| # | Skill | Source | Why it matches | Gap |
|
|
113
|
-
| --- | --- | --- | --- | --- |
|
|
114
|
-
| 1 | article-writing | Local ECC | Drafts articles and guides | Not focused on release notes |
|
|
115
|
-
| 2 | content-engine | Local ECC | Multi-format content workflow | Heavier than needed |
|
|
116
|
-
| 3 | blog-writer | GitHub | Blog writing skill with recent commits | Needs security review |
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### User-Facing Summary
|
|
120
|
-
|
|
121
|
-
```markdown
|
|
122
|
-
I found two close local matches and one external candidate. The closest fit is
|
|
123
|
-
`article-writing`; it covers drafting and revision, but it does not include the
|
|
124
|
-
release-note checklist you asked for. I can either use it as-is, fork it into a
|
|
125
|
-
release-note variant, or create a fresh skill.
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Anti-Patterns
|
|
129
|
-
|
|
130
|
-
- Do not jump directly to new skill creation when a search is reasonable.
|
|
131
|
-
- Do not install external skills without reading them first.
|
|
132
|
-
- Do not present a long unranked list of weak matches.
|
|
133
|
-
- Do not treat web-only mentions as trusted sources.
|
|
134
|
-
- Do not edit installed marketplace originals in place.
|
|
135
|
-
|
|
136
|
-
## Related
|
|
137
|
-
|
|
138
|
-
- `search-first` - General search-before-building workflow.
|
|
139
|
-
- `skill-stocktake` - Audit installed skills for health, duplicates, and gaps.
|
|
140
|
-
- `agent-sort` - Categorize and organize existing agents and skills.
|
|
1
|
+
---
|
|
2
|
+
name: skill-scout
|
|
3
|
+
description: Search existing local, marketplace, GitHub, and web skill sources before creating a new skill. Use when the user wants to create, build, fork, or find a skill for a workflow.
|
|
4
|
+
origin: community
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill Scout
|
|
8
|
+
|
|
9
|
+
Use this skill before creating a new skill. The goal is to avoid duplicating
|
|
10
|
+
existing community or marketplace work, while still vetting anything external
|
|
11
|
+
before adoption.
|
|
12
|
+
|
|
13
|
+
Source: salvaged from stale community PR #1232 by `redminwang`.
|
|
14
|
+
|
|
15
|
+
## When to Use
|
|
16
|
+
|
|
17
|
+
- The user says "create a skill", "build a skill", "make a skill", or "new
|
|
18
|
+
skill".
|
|
19
|
+
- The user asks "is there a skill for X?" or "does a skill exist that does Y?"
|
|
20
|
+
- The user describes a workflow and you are about to suggest creating a new
|
|
21
|
+
skill.
|
|
22
|
+
- The user wants to fork or extend an existing skill.
|
|
23
|
+
|
|
24
|
+
If the user explicitly says to skip search or create from scratch, acknowledge
|
|
25
|
+
that and proceed with the requested creation workflow.
|
|
26
|
+
|
|
27
|
+
## How It Works
|
|
28
|
+
|
|
29
|
+
### Step 1 - Capture Intent
|
|
30
|
+
|
|
31
|
+
Extract:
|
|
32
|
+
|
|
33
|
+
- The task the skill should perform.
|
|
34
|
+
- The trigger conditions for using it.
|
|
35
|
+
- The domain, tools, frameworks, or data sources involved.
|
|
36
|
+
- Three to five search keywords plus useful synonyms.
|
|
37
|
+
|
|
38
|
+
### Step 2 - Search Local Sources
|
|
39
|
+
|
|
40
|
+
Search installed and marketplace skill names first. Local sources are preferred
|
|
41
|
+
because they are already part of the user's environment.
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
find ~/.claude/skills -maxdepth 2 -name SKILL.md 2>/dev/null | grep -iE "keyword|synonym"
|
|
45
|
+
find ~/.claude/plugins/marketplaces -path '*/skills/*/SKILL.md' 2>/dev/null | grep -iE "keyword|synonym"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Then search frontmatter descriptions:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
grep -RilE "keyword|synonym" ~/.claude/skills ~/.claude/plugins/marketplaces 2>/dev/null
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Step 3 - Search Remote Sources
|
|
55
|
+
|
|
56
|
+
Use available GitHub and web search tools. Prefer concise queries:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
gh search repos "claude code skill keyword" --limit 10 --sort stars
|
|
60
|
+
gh search code "name: keyword" --filename SKILL.md --limit 10
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
For web search, use at most three targeted queries such as:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
"claude code skill" keyword
|
|
67
|
+
"SKILL.md" keyword
|
|
68
|
+
"everything-claude-code" keyword
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### Step 4 - Vet External Matches
|
|
72
|
+
|
|
73
|
+
Before recommending any external skill for adoption or forking:
|
|
74
|
+
|
|
75
|
+
- Read the `SKILL.md` frontmatter and instructions.
|
|
76
|
+
- Look for unexpected shell commands, file writes, network calls, credential
|
|
77
|
+
handling, or package installs.
|
|
78
|
+
- Check whether the repository appears maintained.
|
|
79
|
+
- Prefer copying into a fresh local branch and reviewing the diff over editing
|
|
80
|
+
marketplace originals.
|
|
81
|
+
|
|
82
|
+
### Step 5 - Rank Results
|
|
83
|
+
|
|
84
|
+
Rank candidates by:
|
|
85
|
+
|
|
86
|
+
1. Exact keyword match in the skill name.
|
|
87
|
+
2. Keyword or synonym match in description.
|
|
88
|
+
3. Local installed or marketplace source.
|
|
89
|
+
4. Maintained GitHub source with recent activity.
|
|
90
|
+
5. Web-only mention.
|
|
91
|
+
|
|
92
|
+
Cap the final list at 10 results.
|
|
93
|
+
|
|
94
|
+
### Step 6 - Present Decision Options
|
|
95
|
+
|
|
96
|
+
Give the user a short table:
|
|
97
|
+
|
|
98
|
+
| Option | Meaning |
|
|
99
|
+
| --- | --- |
|
|
100
|
+
| Use existing | Invoke or install a matching skill as-is. |
|
|
101
|
+
| Fork or extend | Copy the closest skill and modify it. |
|
|
102
|
+
| Create fresh | Build a new skill after confirming no close match exists. |
|
|
103
|
+
|
|
104
|
+
Only create a new skill after the user chooses that path or after the search
|
|
105
|
+
finds no close match.
|
|
106
|
+
|
|
107
|
+
## Examples
|
|
108
|
+
|
|
109
|
+
### Result Table
|
|
110
|
+
|
|
111
|
+
```markdown
|
|
112
|
+
| # | Skill | Source | Why it matches | Gap |
|
|
113
|
+
| --- | --- | --- | --- | --- |
|
|
114
|
+
| 1 | article-writing | Local ECC | Drafts articles and guides | Not focused on release notes |
|
|
115
|
+
| 2 | content-engine | Local ECC | Multi-format content workflow | Heavier than needed |
|
|
116
|
+
| 3 | blog-writer | GitHub | Blog writing skill with recent commits | Needs security review |
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### User-Facing Summary
|
|
120
|
+
|
|
121
|
+
```markdown
|
|
122
|
+
I found two close local matches and one external candidate. The closest fit is
|
|
123
|
+
`article-writing`; it covers drafting and revision, but it does not include the
|
|
124
|
+
release-note checklist you asked for. I can either use it as-is, fork it into a
|
|
125
|
+
release-note variant, or create a fresh skill.
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Anti-Patterns
|
|
129
|
+
|
|
130
|
+
- Do not jump directly to new skill creation when a search is reasonable.
|
|
131
|
+
- Do not install external skills without reading them first.
|
|
132
|
+
- Do not present a long unranked list of weak matches.
|
|
133
|
+
- Do not treat web-only mentions as trusted sources.
|
|
134
|
+
- Do not edit installed marketplace originals in place.
|
|
135
|
+
|
|
136
|
+
## Related
|
|
137
|
+
|
|
138
|
+
- `search-first` - General search-before-building workflow.
|
|
139
|
+
- `skill-stocktake` - Audit installed skills for health, duplicates, and gaps.
|
|
140
|
+
- `agent-sort` - Categorize and organize existing agents and skills.
|