openhands-extensions 0.6.0__tar.gz
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.
- openhands_extensions-0.6.0/.agents/skills/custom-codereview-guide.md +25 -0
- openhands_extensions-0.6.0/.claude-plugin/marketplace.json +1 -0
- openhands_extensions-0.6.0/.github/pull_request_template.md +38 -0
- openhands_extensions-0.6.0/.github/release.yml +14 -0
- openhands_extensions-0.6.0/.github/workflows/check-extensions.yml +72 -0
- openhands_extensions-0.6.0/.github/workflows/npm-publish.yml +89 -0
- openhands_extensions-0.6.0/.github/workflows/pr.yml +30 -0
- openhands_extensions-0.6.0/.github/workflows/pypi-publish.yml +104 -0
- openhands_extensions-0.6.0/.github/workflows/release.yml +24 -0
- openhands_extensions-0.6.0/.github/workflows/tests.yml +31 -0
- openhands_extensions-0.6.0/.github/workflows/vulnerability-scan.yml +87 -0
- openhands_extensions-0.6.0/.gitignore +32 -0
- openhands_extensions-0.6.0/.release-please-manifest.json +3 -0
- openhands_extensions-0.6.0/AGENTS.md +132 -0
- openhands_extensions-0.6.0/LICENSE +21 -0
- openhands_extensions-0.6.0/MIGRATION.md +62 -0
- openhands_extensions-0.6.0/PKG-INFO +6 -0
- openhands_extensions-0.6.0/README.md +199 -0
- openhands_extensions-0.6.0/analysis_results.md +162 -0
- openhands_extensions-0.6.0/automations/README.md +15 -0
- openhands_extensions-0.6.0/automations/catalog/github-pr-reviewer.json +13 -0
- openhands_extensions-0.6.0/automations/catalog/github-repo-monitor.json +11 -0
- openhands_extensions-0.6.0/automations/catalog/incident-retrospective-drafter.json +15 -0
- openhands_extensions-0.6.0/automations/catalog/linear-triage-assistant.json +13 -0
- openhands_extensions-0.6.0/automations/catalog/research-brief-writer.json +14 -0
- openhands_extensions-0.6.0/automations/catalog/slack-channel-monitor.json +11 -0
- openhands_extensions-0.6.0/automations/catalog/slack-standup-digest.json +13 -0
- openhands_extensions-0.6.0/automations/index.d.ts +14 -0
- openhands_extensions-0.6.0/automations/index.js +18 -0
- openhands_extensions-0.6.0/index.d.ts +19 -0
- openhands_extensions-0.6.0/index.js +3 -0
- openhands_extensions-0.6.0/integrations/README.md +49 -0
- openhands_extensions-0.6.0/integrations/catalog/airtable.json +74 -0
- openhands_extensions-0.6.0/integrations/catalog/apify.json +41 -0
- openhands_extensions-0.6.0/integrations/catalog/asana.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/atlassian.json +28 -0
- openhands_extensions-0.6.0/integrations/catalog/bitbucket.json +39 -0
- openhands_extensions-0.6.0/integrations/catalog/box.json +39 -0
- openhands_extensions-0.6.0/integrations/catalog/brave-search.json +42 -0
- openhands_extensions-0.6.0/integrations/catalog/browser-mcp.json +31 -0
- openhands_extensions-0.6.0/integrations/catalog/canva.json +35 -0
- openhands_extensions-0.6.0/integrations/catalog/clickhouse.json +55 -0
- openhands_extensions-0.6.0/integrations/catalog/clickup.json +36 -0
- openhands_extensions-0.6.0/integrations/catalog/cloudflare-bindings.json +29 -0
- openhands_extensions-0.6.0/integrations/catalog/cloudflare-browser-rendering.json +27 -0
- openhands_extensions-0.6.0/integrations/catalog/cloudflare-builds.json +28 -0
- openhands_extensions-0.6.0/integrations/catalog/cloudflare-docs.json +27 -0
- openhands_extensions-0.6.0/integrations/catalog/cloudflare-observability.json +28 -0
- openhands_extensions-0.6.0/integrations/catalog/confluence.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/datadog.json +34 -0
- openhands_extensions-0.6.0/integrations/catalog/deepwiki.json +28 -0
- openhands_extensions-0.6.0/integrations/catalog/discord.json +39 -0
- openhands_extensions-0.6.0/integrations/catalog/dropbox.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/elevenlabs.json +41 -0
- openhands_extensions-0.6.0/integrations/catalog/everything.json +30 -0
- openhands_extensions-0.6.0/integrations/catalog/exa.json +41 -0
- openhands_extensions-0.6.0/integrations/catalog/fetch.json +30 -0
- openhands_extensions-0.6.0/integrations/catalog/figma.json +76 -0
- openhands_extensions-0.6.0/integrations/catalog/filesystem.json +41 -0
- openhands_extensions-0.6.0/integrations/catalog/firecrawl.json +41 -0
- openhands_extensions-0.6.0/integrations/catalog/freshdesk.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/git.json +42 -0
- openhands_extensions-0.6.0/integrations/catalog/github.json +68 -0
- openhands_extensions-0.6.0/integrations/catalog/gitlab.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/gmail.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/google-calendar.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/google-docs.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/google-drive.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/google-sheets.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/hubspot.json +34 -0
- openhands_extensions-0.6.0/integrations/catalog/huggingface.json +31 -0
- openhands_extensions-0.6.0/integrations/catalog/intercom.json +39 -0
- openhands_extensions-0.6.0/integrations/catalog/jira.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/kagi.json +41 -0
- openhands_extensions-0.6.0/integrations/catalog/linear.json +63 -0
- openhands_extensions-0.6.0/integrations/catalog/mailchimp.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/memory.json +31 -0
- openhands_extensions-0.6.0/integrations/catalog/microsoft-outlook.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/microsoft-teams.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/miro.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/monday.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/mongodb.json +42 -0
- openhands_extensions-0.6.0/integrations/catalog/neon.json +42 -0
- openhands_extensions-0.6.0/integrations/catalog/netlify.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/notion.json +73 -0
- openhands_extensions-0.6.0/integrations/catalog/obsidian.json +41 -0
- openhands_extensions-0.6.0/integrations/catalog/okta.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/onedrive.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/ordinal.json +33 -0
- openhands_extensions-0.6.0/integrations/catalog/paypal.json +26 -0
- openhands_extensions-0.6.0/integrations/catalog/pipedrive.json +39 -0
- openhands_extensions-0.6.0/integrations/catalog/plaid.json +31 -0
- openhands_extensions-0.6.0/integrations/catalog/playwright.json +32 -0
- openhands_extensions-0.6.0/integrations/catalog/posthog.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/quickbooks.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/redis.json +44 -0
- openhands_extensions-0.6.0/integrations/catalog/resend.json +48 -0
- openhands_extensions-0.6.0/integrations/catalog/salesforce.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/sentry.json +68 -0
- openhands_extensions-0.6.0/integrations/catalog/sequential-thinking.json +30 -0
- openhands_extensions-0.6.0/integrations/catalog/servicenow.json +39 -0
- openhands_extensions-0.6.0/integrations/catalog/sharepoint.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/shopify.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/slack.json +91 -0
- openhands_extensions-0.6.0/integrations/catalog/stripe.json +60 -0
- openhands_extensions-0.6.0/integrations/catalog/supabase.json +70 -0
- openhands_extensions-0.6.0/integrations/catalog/tavily.json +44 -0
- openhands_extensions-0.6.0/integrations/catalog/time.json +29 -0
- openhands_extensions-0.6.0/integrations/catalog/trello.json +31 -0
- openhands_extensions-0.6.0/integrations/catalog/vercel.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/webflow.json +34 -0
- openhands_extensions-0.6.0/integrations/catalog/xero.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/zendesk.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog/zoom.json +38 -0
- openhands_extensions-0.6.0/integrations/catalog-index.js +171 -0
- openhands_extensions-0.6.0/integrations/index.d.ts +133 -0
- openhands_extensions-0.6.0/integrations/index.js +34 -0
- openhands_extensions-0.6.0/marketplaces/large-codebase.json +66 -0
- openhands_extensions-0.6.0/marketplaces/openhands-extensions.json +708 -0
- openhands_extensions-0.6.0/package.json +55 -0
- openhands_extensions-0.6.0/plugins/README.md +30 -0
- openhands_extensions-0.6.0/plugins/city-weather/.claude-plugin/plugin.json +13 -0
- openhands_extensions-0.6.0/plugins/city-weather/README.md +145 -0
- openhands_extensions-0.6.0/plugins/city-weather/commands/now.md +56 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/README.md +201 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/references/troubleshooting.md +18 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/skills/build-setup/SKILL.md +78 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +32 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +113 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +78 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/skills/mainframe-removal/SKILL.md +62 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/skills/mainframe-removal/references/cics-transformation-examples.md +45 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +59 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +58 -0
- openhands_extensions-0.6.0/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +19 -0
- openhands_extensions-0.6.0/plugins/issue-duplicate-checker/.claude-plugin/plugin.json +13 -0
- openhands_extensions-0.6.0/plugins/issue-duplicate-checker/README.md +51 -0
- openhands_extensions-0.6.0/plugins/issue-duplicate-checker/action.yml +349 -0
- openhands_extensions-0.6.0/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +569 -0
- openhands_extensions-0.6.0/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +681 -0
- openhands_extensions-0.6.0/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.cjs +220 -0
- openhands_extensions-0.6.0/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.cjs +27 -0
- openhands_extensions-0.6.0/plugins/magic-test/.claude-plugin/plugin.json +13 -0
- openhands_extensions-0.6.0/plugins/magic-test/skills/magic-word/SKILL.md +34 -0
- openhands_extensions-0.6.0/plugins/migration-scoring/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/plugins/migration-scoring/README.md +244 -0
- openhands_extensions-0.6.0/plugins/migration-scoring/skills/migration-mapping/SKILL.md +72 -0
- openhands_extensions-0.6.0/plugins/migration-scoring/skills/migration-report/SKILL.md +118 -0
- openhands_extensions-0.6.0/plugins/migration-scoring/skills/migration-scoring/SKILL.md +126 -0
- openhands_extensions-0.6.0/plugins/migration-scoring/skills/score-quality/SKILL.md +54 -0
- openhands_extensions-0.6.0/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +30 -0
- openhands_extensions-0.6.0/plugins/migration-scoring/skills/score-style/SKILL.md +106 -0
- openhands_extensions-0.6.0/plugins/onboarding/.claude-plugin/plugin.json +20 -0
- openhands_extensions-0.6.0/plugins/onboarding/README.md +30 -0
- openhands_extensions-0.6.0/plugins/onboarding/references/criteria.md +144 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/README.md +23 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/SKILL.md +122 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/references/criteria.md +1 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +88 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +114 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +133 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +113 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +127 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/improve-agent-readiness/README.md +19 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +167 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/improve-agent-readiness/references/criteria.md +1 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/setup-agents-md/README.md +15 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/setup-agents-md/SKILL.md +150 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/setup-openhands/README.md +20 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/setup-openhands/SKILL.md +56 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/setup-pr-review/README.md +23 -0
- openhands_extensions-0.6.0/plugins/onboarding/skills/setup-pr-review/SKILL.md +72 -0
- openhands_extensions-0.6.0/plugins/openhands/.claude-plugin/plugin.json +13 -0
- openhands_extensions-0.6.0/plugins/openhands/README.md +52 -0
- openhands_extensions-0.6.0/plugins/openhands/SKILL.md +61 -0
- openhands_extensions-0.6.0/plugins/openhands/commands/create.md +55 -0
- openhands_extensions-0.6.0/plugins/openhands/commands/openhands-cloud.md +8 -0
- openhands_extensions-0.6.0/plugins/openhands/scripts/run.sh +69 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/.claude-plugin/plugin.json +22 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/README.md +52 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/SKILL.md +468 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/references/README.md +33 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/references/TROUBLESHOOTING.md +81 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/references/example_prompt.md +12 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/scripts/openhands_api.py +606 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-api/scripts/openhands_api.ts +252 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/README.md +89 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/SKILL.md +877 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/commands/automation-create.md +8 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/references/ab-testing.md +185 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-automation/references/custom-automation.md +810 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-sdk/.claude-plugin/plugin.json +20 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-sdk/README.md +22 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-sdk/SKILL.md +239 -0
- openhands_extensions-0.6.0/plugins/openhands/skills/openhands-sdk/commands/sdk.md +8 -0
- openhands_extensions-0.6.0/plugins/pr-review/.claude-plugin/plugin.json +13 -0
- openhands_extensions-0.6.0/plugins/pr-review/README.md +393 -0
- openhands_extensions-0.6.0/plugins/pr-review/action.yml +298 -0
- openhands_extensions-0.6.0/plugins/pr-review/scripts/agent_script.py +1282 -0
- openhands_extensions-0.6.0/plugins/pr-review/scripts/evaluate_review.py +655 -0
- openhands_extensions-0.6.0/plugins/pr-review/scripts/prompt.py +260 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/README.md +18 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/SKILL.md +208 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/commands/codereview-roasted.md +8 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/commands/codereview.md +8 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/references/risk-evaluation.md +41 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/code-review/references/supply-chain-security.md +31 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/github-pr-review/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/github-pr-review/README.md +145 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/github-pr-review/SKILL.md +186 -0
- openhands_extensions-0.6.0/plugins/pr-review/skills/github-pr-review/commands/github-pr-review.md +8 -0
- openhands_extensions-0.6.0/plugins/pr-review/workflows/pr-review-by-openhands.yml +51 -0
- openhands_extensions-0.6.0/plugins/pr-review/workflows/pr-review-evaluation.yml +85 -0
- openhands_extensions-0.6.0/plugins/qa-changes/.claude-plugin/plugin.json +11 -0
- openhands_extensions-0.6.0/plugins/qa-changes/README.md +185 -0
- openhands_extensions-0.6.0/plugins/qa-changes/action.yml +183 -0
- openhands_extensions-0.6.0/plugins/qa-changes/scripts/agent_script.py +406 -0
- openhands_extensions-0.6.0/plugins/qa-changes/scripts/evaluate_qa_changes.py +385 -0
- openhands_extensions-0.6.0/plugins/qa-changes/scripts/prompt.py +174 -0
- openhands_extensions-0.6.0/plugins/qa-changes/skills/qa-changes/README.md +18 -0
- openhands_extensions-0.6.0/plugins/qa-changes/skills/qa-changes/SKILL.md +229 -0
- openhands_extensions-0.6.0/plugins/qa-changes/skills/qa-changes/commands/qa-changes.md +8 -0
- openhands_extensions-0.6.0/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +50 -0
- openhands_extensions-0.6.0/plugins/qa-changes/workflows/qa-changes-evaluation.yml +85 -0
- openhands_extensions-0.6.0/plugins/release-notes/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/plugins/release-notes/README.md +283 -0
- openhands_extensions-0.6.0/plugins/release-notes/SKILL.md +83 -0
- openhands_extensions-0.6.0/plugins/release-notes/action.yml +118 -0
- openhands_extensions-0.6.0/plugins/release-notes/commands/release-notes.md +8 -0
- openhands_extensions-0.6.0/plugins/release-notes/scripts/agent_script.py +292 -0
- openhands_extensions-0.6.0/plugins/release-notes/scripts/generate_release_notes.py +733 -0
- openhands_extensions-0.6.0/plugins/release-notes/scripts/prompt.py +90 -0
- openhands_extensions-0.6.0/plugins/release-notes/scripts/validate_release_notes.py +328 -0
- openhands_extensions-0.6.0/plugins/release-notes/skills/release-notes/README.md +24 -0
- openhands_extensions-0.6.0/plugins/release-notes/skills/release-notes/SKILL.md +19 -0
- openhands_extensions-0.6.0/plugins/release-notes/skills/release-notes/commands/release-notes.md +8 -0
- openhands_extensions-0.6.0/plugins/release-notes/workflows/release-notes.yml +82 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/README.md +219 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/action.yml +191 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +561 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/github/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/github/README.md +42 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/github/SKILL.md +106 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/security/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/security/README.md +38 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/skills/security/SKILL.md +33 -0
- openhands_extensions-0.6.0/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +87 -0
- openhands_extensions-0.6.0/pyproject.toml +26 -0
- openhands_extensions-0.6.0/python/openhands_extensions/__init__.py +24 -0
- openhands_extensions-0.6.0/python/openhands_extensions/_version.py +24 -0
- openhands_extensions-0.6.0/python/openhands_extensions/integrations.py +92 -0
- openhands_extensions-0.6.0/release-please-config.json +17 -0
- openhands_extensions-0.6.0/scripts/build-integration-catalog.mjs +45 -0
- openhands_extensions-0.6.0/scripts/build-skills-catalog.mjs +100 -0
- openhands_extensions-0.6.0/scripts/sync_extensions.py +495 -0
- openhands_extensions-0.6.0/scripts/sync_openhands_sdk_skill.py +264 -0
- openhands_extensions-0.6.0/skills/README.md +159 -0
- openhands_extensions-0.6.0/skills/add-javadoc/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/add-javadoc/README.md +40 -0
- openhands_extensions-0.6.0/skills/add-javadoc/SKILL.md +35 -0
- openhands_extensions-0.6.0/skills/add-javadoc/references/example.md +32 -0
- openhands_extensions-0.6.0/skills/add-skill/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/add-skill/README.md +67 -0
- openhands_extensions-0.6.0/skills/add-skill/SKILL.md +47 -0
- openhands_extensions-0.6.0/skills/add-skill/scripts/fetch_skill.py +259 -0
- openhands_extensions-0.6.0/skills/agent-canvas-environment/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/skills/agent-canvas-environment/README.md +5 -0
- openhands_extensions-0.6.0/skills/agent-canvas-environment/SKILL.md +141 -0
- openhands_extensions-0.6.0/skills/agent-creator/.claude-plugin/plugin.json +20 -0
- openhands_extensions-0.6.0/skills/agent-creator/README.md +104 -0
- openhands_extensions-0.6.0/skills/agent-creator/SKILL.md +190 -0
- openhands_extensions-0.6.0/skills/agent-creator/commands/agent-creator.md +8 -0
- openhands_extensions-0.6.0/skills/agent-creator/references/fallback.md +117 -0
- openhands_extensions-0.6.0/skills/agent-memory/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/agent-memory/README.md +35 -0
- openhands_extensions-0.6.0/skills/agent-memory/SKILL.md +30 -0
- openhands_extensions-0.6.0/skills/agent-memory/commands/remember.md +8 -0
- openhands_extensions-0.6.0/skills/agent-sdk-builder/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/agent-sdk-builder/README.md +40 -0
- openhands_extensions-0.6.0/skills/agent-sdk-builder/SKILL.md +37 -0
- openhands_extensions-0.6.0/skills/agent-sdk-builder/commands/agent-builder.md +8 -0
- openhands_extensions-0.6.0/skills/azure-devops/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/azure-devops/README.md +55 -0
- openhands_extensions-0.6.0/skills/azure-devops/SKILL.md +50 -0
- openhands_extensions-0.6.0/skills/bitbucket/.claude-plugin/plugin.json +17 -0
- openhands_extensions-0.6.0/skills/bitbucket/README.md +50 -0
- openhands_extensions-0.6.0/skills/bitbucket/SKILL.md +45 -0
- openhands_extensions-0.6.0/skills/code-simplifier/.claude-plugin/plugin.json +21 -0
- openhands_extensions-0.6.0/skills/code-simplifier/README.md +30 -0
- openhands_extensions-0.6.0/skills/code-simplifier/SKILL.md +91 -0
- openhands_extensions-0.6.0/skills/code-simplifier/commands/simplify.md +8 -0
- openhands_extensions-0.6.0/skills/code-simplifier/references/code-quality-review.md +86 -0
- openhands_extensions-0.6.0/skills/code-simplifier/references/code-reuse-review.md +63 -0
- openhands_extensions-0.6.0/skills/code-simplifier/references/efficiency-review.md +81 -0
- openhands_extensions-0.6.0/skills/datadog/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/skills/datadog/README.md +100 -0
- openhands_extensions-0.6.0/skills/datadog/SKILL.md +95 -0
- openhands_extensions-0.6.0/skills/deno/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/deno/README.md +5 -0
- openhands_extensions-0.6.0/skills/deno/SKILL.md +99 -0
- openhands_extensions-0.6.0/skills/deno/references/README.md +6 -0
- openhands_extensions-0.6.0/skills/discord/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/discord/README.md +31 -0
- openhands_extensions-0.6.0/skills/discord/SKILL.md +109 -0
- openhands_extensions-0.6.0/skills/discord/__init__.py +0 -0
- openhands_extensions-0.6.0/skills/discord/references/REFERENCE.md +78 -0
- openhands_extensions-0.6.0/skills/discord/scripts/__init__.py +0 -0
- openhands_extensions-0.6.0/skills/discord/scripts/_http.py +127 -0
- openhands_extensions-0.6.0/skills/discord/scripts/post_webhook.py +106 -0
- openhands_extensions-0.6.0/skills/discord/scripts/send_message.py +102 -0
- openhands_extensions-0.6.0/skills/docker/.claude-plugin/plugin.json +17 -0
- openhands_extensions-0.6.0/skills/docker/README.md +34 -0
- openhands_extensions-0.6.0/skills/docker/SKILL.md +29 -0
- openhands_extensions-0.6.0/skills/evidence-based-citations/.claude-plugin/plugin.json +20 -0
- openhands_extensions-0.6.0/skills/evidence-based-citations/README.md +31 -0
- openhands_extensions-0.6.0/skills/evidence-based-citations/SKILL.md +59 -0
- openhands_extensions-0.6.0/skills/flarglebargle/.claude-plugin/plugin.json +16 -0
- openhands_extensions-0.6.0/skills/flarglebargle/README.md +14 -0
- openhands_extensions-0.6.0/skills/flarglebargle/SKILL.md +9 -0
- openhands_extensions-0.6.0/skills/frontend-design/.claude-plugin/plugin.json +21 -0
- openhands_extensions-0.6.0/skills/frontend-design/LICENSE.txt +177 -0
- openhands_extensions-0.6.0/skills/frontend-design/README.md +42 -0
- openhands_extensions-0.6.0/skills/frontend-design/SKILL.md +42 -0
- openhands_extensions-0.6.0/skills/github-actions/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/skills/github-actions/README.md +190 -0
- openhands_extensions-0.6.0/skills/github-actions/SKILL.md +44 -0
- openhands_extensions-0.6.0/skills/github-pr-reviewer/.claude-plugin/plugin.json +20 -0
- openhands_extensions-0.6.0/skills/github-pr-reviewer/README.md +40 -0
- openhands_extensions-0.6.0/skills/github-pr-reviewer/SKILL.md +251 -0
- openhands_extensions-0.6.0/skills/github-pr-reviewer/commands/pr-reviewer-setup.md +8 -0
- openhands_extensions-0.6.0/skills/github-pr-reviewer/references/state-schema.md +140 -0
- openhands_extensions-0.6.0/skills/github-pr-reviewer/scripts/main.py +662 -0
- openhands_extensions-0.6.0/skills/github-repo-monitor/.claude-plugin/plugin.json +22 -0
- openhands_extensions-0.6.0/skills/github-repo-monitor/README.md +70 -0
- openhands_extensions-0.6.0/skills/github-repo-monitor/SKILL.md +316 -0
- openhands_extensions-0.6.0/skills/github-repo-monitor/commands/github-monitor-poll.md +8 -0
- openhands_extensions-0.6.0/skills/github-repo-monitor/references/github-api.md +241 -0
- openhands_extensions-0.6.0/skills/github-repo-monitor/references/state-schema.md +167 -0
- openhands_extensions-0.6.0/skills/github-repo-monitor/scripts/main.py +963 -0
- openhands_extensions-0.6.0/skills/github-repo-monitor/tests/test_main.py +459 -0
- openhands_extensions-0.6.0/skills/gitlab/.claude-plugin/plugin.json +17 -0
- openhands_extensions-0.6.0/skills/gitlab/README.md +37 -0
- openhands_extensions-0.6.0/skills/gitlab/SKILL.md +32 -0
- openhands_extensions-0.6.0/skills/incident-retrospective/.claude-plugin/plugin.json +21 -0
- openhands_extensions-0.6.0/skills/incident-retrospective/README.md +34 -0
- openhands_extensions-0.6.0/skills/incident-retrospective/SKILL.md +98 -0
- openhands_extensions-0.6.0/skills/incident-retrospective/commands/incident-retro-setup.md +8 -0
- openhands_extensions-0.6.0/skills/index.d.ts +11 -0
- openhands_extensions-0.6.0/skills/index.js +491 -0
- openhands_extensions-0.6.0/skills/iterate/.claude-plugin/plugin.json +13 -0
- openhands_extensions-0.6.0/skills/iterate/README.md +25 -0
- openhands_extensions-0.6.0/skills/iterate/SKILL.md +399 -0
- openhands_extensions-0.6.0/skills/iterate/commands/babysit.md +8 -0
- openhands_extensions-0.6.0/skills/iterate/commands/iterate.md +8 -0
- openhands_extensions-0.6.0/skills/iterate/commands/verify.md +8 -0
- openhands_extensions-0.6.0/skills/iterate/references/heuristics.md +58 -0
- openhands_extensions-0.6.0/skills/iterate/references/verification.md +96 -0
- openhands_extensions-0.6.0/skills/jupyter/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/jupyter/README.md +55 -0
- openhands_extensions-0.6.0/skills/jupyter/SKILL.md +50 -0
- openhands_extensions-0.6.0/skills/kubernetes/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/kubernetes/README.md +53 -0
- openhands_extensions-0.6.0/skills/kubernetes/SKILL.md +48 -0
- openhands_extensions-0.6.0/skills/learn-from-code-review/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/skills/learn-from-code-review/README.md +64 -0
- openhands_extensions-0.6.0/skills/learn-from-code-review/SKILL.md +186 -0
- openhands_extensions-0.6.0/skills/learn-from-code-review/commands/learn-from-reviews.md +8 -0
- openhands_extensions-0.6.0/skills/linear/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/skills/linear/README.md +58 -0
- openhands_extensions-0.6.0/skills/linear/SKILL.md +213 -0
- openhands_extensions-0.6.0/skills/linear-triage/.claude-plugin/plugin.json +21 -0
- openhands_extensions-0.6.0/skills/linear-triage/README.md +34 -0
- openhands_extensions-0.6.0/skills/linear-triage/SKILL.md +91 -0
- openhands_extensions-0.6.0/skills/linear-triage/commands/linear-triage-setup.md +8 -0
- openhands_extensions-0.6.0/skills/notion/.claude-plugin/plugin.json +17 -0
- openhands_extensions-0.6.0/skills/notion/README.md +114 -0
- openhands_extensions-0.6.0/skills/notion/SKILL.md +109 -0
- openhands_extensions-0.6.0/skills/npm/.claude-plugin/plugin.json +17 -0
- openhands_extensions-0.6.0/skills/npm/README.md +14 -0
- openhands_extensions-0.6.0/skills/npm/SKILL.md +9 -0
- openhands_extensions-0.6.0/skills/pdflatex/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/pdflatex/README.md +39 -0
- openhands_extensions-0.6.0/skills/pdflatex/SKILL.md +34 -0
- openhands_extensions-0.6.0/skills/prd/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/skills/prd/README.md +28 -0
- openhands_extensions-0.6.0/skills/prd/SKILL.md +237 -0
- openhands_extensions-0.6.0/skills/prd/commands/prd.md +8 -0
- openhands_extensions-0.6.0/skills/research-brief/.claude-plugin/plugin.json +20 -0
- openhands_extensions-0.6.0/skills/research-brief/README.md +34 -0
- openhands_extensions-0.6.0/skills/research-brief/SKILL.md +99 -0
- openhands_extensions-0.6.0/skills/research-brief/commands/research-brief-setup.md +8 -0
- openhands_extensions-0.6.0/skills/skill-creator/.claude-plugin/plugin.json +17 -0
- openhands_extensions-0.6.0/skills/skill-creator/LICENSE.txt +202 -0
- openhands_extensions-0.6.0/skills/skill-creator/README.md +182 -0
- openhands_extensions-0.6.0/skills/skill-creator/SKILL.md +545 -0
- openhands_extensions-0.6.0/skills/skill-creator/references/output-patterns.md +82 -0
- openhands_extensions-0.6.0/skills/skill-creator/references/workflows.md +28 -0
- openhands_extensions-0.6.0/skills/skill-creator/scripts/init_skill.py +303 -0
- openhands_extensions-0.6.0/skills/skill-creator/scripts/quick_validate.py +95 -0
- openhands_extensions-0.6.0/skills/slack-channel-monitor/.claude-plugin/plugin.json +21 -0
- openhands_extensions-0.6.0/skills/slack-channel-monitor/README.md +96 -0
- openhands_extensions-0.6.0/skills/slack-channel-monitor/SKILL.md +304 -0
- openhands_extensions-0.6.0/skills/slack-channel-monitor/commands/slack-monitor-poll.md +8 -0
- openhands_extensions-0.6.0/skills/slack-channel-monitor/references/slack-api.md +209 -0
- openhands_extensions-0.6.0/skills/slack-channel-monitor/references/state-schema.md +214 -0
- openhands_extensions-0.6.0/skills/slack-channel-monitor/scripts/main.py +1234 -0
- openhands_extensions-0.6.0/skills/slack-standup-digest/.claude-plugin/plugin.json +21 -0
- openhands_extensions-0.6.0/skills/slack-standup-digest/README.md +34 -0
- openhands_extensions-0.6.0/skills/slack-standup-digest/SKILL.md +92 -0
- openhands_extensions-0.6.0/skills/slack-standup-digest/commands/standup-digest-setup.md +8 -0
- openhands_extensions-0.6.0/skills/spark-version-upgrade/.claude-plugin/plugin.json +20 -0
- openhands_extensions-0.6.0/skills/spark-version-upgrade/README.md +54 -0
- openhands_extensions-0.6.0/skills/spark-version-upgrade/SKILL.md +233 -0
- openhands_extensions-0.6.0/skills/ssh/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/ssh/README.md +140 -0
- openhands_extensions-0.6.0/skills/ssh/SKILL.md +135 -0
- openhands_extensions-0.6.0/skills/swift-linux/.claude-plugin/plugin.json +17 -0
- openhands_extensions-0.6.0/skills/swift-linux/README.md +86 -0
- openhands_extensions-0.6.0/skills/swift-linux/SKILL.md +81 -0
- openhands_extensions-0.6.0/skills/theme-factory/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.6.0/skills/theme-factory/LICENSE.txt +202 -0
- openhands_extensions-0.6.0/skills/theme-factory/README.md +58 -0
- openhands_extensions-0.6.0/skills/theme-factory/SKILL.md +59 -0
- openhands_extensions-0.6.0/skills/theme-factory/theme-showcase.pdf +0 -0
- openhands_extensions-0.6.0/skills/theme-factory/themes/arctic-frost.md +19 -0
- openhands_extensions-0.6.0/skills/theme-factory/themes/botanical-garden.md +19 -0
- openhands_extensions-0.6.0/skills/theme-factory/themes/desert-rose.md +19 -0
- openhands_extensions-0.6.0/skills/theme-factory/themes/forest-canopy.md +19 -0
- openhands_extensions-0.6.0/skills/theme-factory/themes/golden-hour.md +19 -0
- openhands_extensions-0.6.0/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- openhands_extensions-0.6.0/skills/theme-factory/themes/modern-minimalist.md +19 -0
- openhands_extensions-0.6.0/skills/theme-factory/themes/ocean-depths.md +19 -0
- openhands_extensions-0.6.0/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- openhands_extensions-0.6.0/skills/theme-factory/themes/tech-innovation.md +19 -0
- openhands_extensions-0.6.0/skills/uv/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/uv/README.md +5 -0
- openhands_extensions-0.6.0/skills/uv/SKILL.md +95 -0
- openhands_extensions-0.6.0/skills/uv/references/README.md +5 -0
- openhands_extensions-0.6.0/skills/vercel/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.6.0/skills/vercel/README.md +108 -0
- openhands_extensions-0.6.0/skills/vercel/SKILL.md +103 -0
- openhands_extensions-0.6.0/tests/test_add_skill_installs_to_agents_dir.py +42 -0
- openhands_extensions-0.6.0/tests/test_catalogs.py +127 -0
- openhands_extensions-0.6.0/tests/test_code_review_risk_evaluation.py +94 -0
- openhands_extensions-0.6.0/tests/test_github_pr_review_skill.py +114 -0
- openhands_extensions-0.6.0/tests/test_integration_catalog_in_sync.py +204 -0
- openhands_extensions-0.6.0/tests/test_issue_duplicate_checker.py +240 -0
- openhands_extensions-0.6.0/tests/test_openhands_api_python.py +152 -0
- openhands_extensions-0.6.0/tests/test_plugin_manifest.py +83 -0
- openhands_extensions-0.6.0/tests/test_pr_review_diff_payload.py +202 -0
- openhands_extensions-0.6.0/tests/test_pr_review_feedback.py +263 -0
- openhands_extensions-0.6.0/tests/test_pr_review_prompt.py +152 -0
- openhands_extensions-0.6.0/tests/test_pr_review_review_context.py +253 -0
- openhands_extensions-0.6.0/tests/test_qa_changes.py +232 -0
- openhands_extensions-0.6.0/tests/test_qa_changes_evaluation.py +259 -0
- openhands_extensions-0.6.0/tests/test_release_notes_generator.py +990 -0
- openhands_extensions-0.6.0/tests/test_sdk_loading.py +150 -0
- openhands_extensions-0.6.0/tests/test_skill_plugin_loading.py +149 -0
- openhands_extensions-0.6.0/tests/test_skills_catalog.py +336 -0
- openhands_extensions-0.6.0/tests/test_skills_have_readme.py +66 -0
- openhands_extensions-0.6.0/tests/test_slack_channel_monitor.py +142 -0
- openhands_extensions-0.6.0/tests/test_sync_extensions.py +306 -0
- openhands_extensions-0.6.0/tests/test_version_alignment.py +64 -0
- openhands_extensions-0.6.0/tests/test_workflow_sync.py +46 -0
- openhands_extensions-0.6.0/utils/analysis/README.md +7 -0
- openhands_extensions-0.6.0/utils/analysis/laminar_signals/README.md +211 -0
- openhands_extensions-0.6.0/utils/analysis/laminar_signals/analyze.py +780 -0
- openhands_extensions-0.6.0/utils/analysis/laminar_signals/templates/default.j2 +49 -0
- openhands_extensions-0.6.0/utils/analysis/laminar_signals/templates/pr_review.j2 +61 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: custom-codereview-guide
|
|
3
|
+
description: Repository-specific code review guidelines for OpenHands/extensions
|
|
4
|
+
triggers:
|
|
5
|
+
- /codereview
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Extensions Repo — Code Review Guidelines
|
|
9
|
+
|
|
10
|
+
## SDK Documentation Placement
|
|
11
|
+
|
|
12
|
+
If a PR adds or modifies OpenHands SDK-specific documentation (API guides, SDK usage examples, SDK feature descriptions), flag it:
|
|
13
|
+
|
|
14
|
+
- The canonical source of truth for SDK documentation is <https://docs.openhands.dev/sdk> and its `llms.txt` index.
|
|
15
|
+
- The `skills/openhands-sdk/SKILL.md` in this repo is a thin pointer to the docs site. It should NOT contain duplicated SDK content.
|
|
16
|
+
- **Push back**: ask the submitter to contribute SDK documentation changes to [OpenHands/docs](https://github.com/OpenHands/docs) instead.
|
|
17
|
+
|
|
18
|
+
## Pre-release Integration Catalog Changes
|
|
19
|
+
|
|
20
|
+
The `@openhands/extensions/mcps` catalog was experimental and pre-release. If a
|
|
21
|
+
PR intentionally replaces it with the broader `integrations` catalog and updates
|
|
22
|
+
known downstream consumers in the same coordinated stack, do not require
|
|
23
|
+
backward-compatible `mcps` aliases or a deprecation window. Require migration
|
|
24
|
+
documentation for consumers, but accept a clean breaking change for this
|
|
25
|
+
pre-release surface.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
../marketplaces/openhands-extensions.json
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<!-- Keep this PR as draft until it is ready for review. -->
|
|
2
|
+
|
|
3
|
+
<!-- AI/LLM agents: be concise and specific. Do not check the box below. -->
|
|
4
|
+
|
|
5
|
+
- [ ] A human has tested these changes.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Why
|
|
10
|
+
|
|
11
|
+
<!-- Describe problem, motivation, etc.-->
|
|
12
|
+
|
|
13
|
+
## Summary
|
|
14
|
+
|
|
15
|
+
<!-- 1-3 bullets describing what changed. -->
|
|
16
|
+
-
|
|
17
|
+
|
|
18
|
+
## Issue Number
|
|
19
|
+
<!-- Required if there is a relevant issue to this PR. -->
|
|
20
|
+
|
|
21
|
+
## How to Test
|
|
22
|
+
|
|
23
|
+
<!--
|
|
24
|
+
Required. Share the steps for the reviewer to be able to test your PR. e.g. You can test by running `npm install` then `npm build dev`.
|
|
25
|
+
|
|
26
|
+
If you could not test this, say why.
|
|
27
|
+
-->
|
|
28
|
+
|
|
29
|
+
## Video/Screenshots
|
|
30
|
+
|
|
31
|
+
<!--
|
|
32
|
+
Provide a video or screenshots of testing your PR. e.g. you added a new feature to the gui, show us the video of you testing it successfully.
|
|
33
|
+
|
|
34
|
+
-->
|
|
35
|
+
|
|
36
|
+
## Notes
|
|
37
|
+
|
|
38
|
+
<!-- Optional: migrations, config changes, rollout concerns, follow-ups, or anything reviewers should know. -->
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
changelog:
|
|
2
|
+
categories:
|
|
3
|
+
- title: Features
|
|
4
|
+
labels: ["type: feat"]
|
|
5
|
+
- title: Bug Fixes
|
|
6
|
+
labels: ["type: fix"]
|
|
7
|
+
- title: Performance
|
|
8
|
+
labels: ["type: perf"]
|
|
9
|
+
- title: Documentation
|
|
10
|
+
labels: ["type: docs"]
|
|
11
|
+
- title: Maintenance
|
|
12
|
+
labels: ["type: chore", "type: build", "type: ci", "type: refactor", "type: style", "type: test", "type: revert"]
|
|
13
|
+
- title: Other Changes
|
|
14
|
+
labels: ["*"]
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
name: Check Extensions
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
branches: ["*"]
|
|
6
|
+
push:
|
|
7
|
+
branches: ["main", "master"]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
validate-claude-code:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout repository
|
|
14
|
+
uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- name: Setup Node.js
|
|
17
|
+
uses: actions/setup-node@v4
|
|
18
|
+
with:
|
|
19
|
+
node-version: "20"
|
|
20
|
+
|
|
21
|
+
- name: Install Claude Code CLI
|
|
22
|
+
run: npm install -g @anthropic-ai/claude-code
|
|
23
|
+
|
|
24
|
+
- name: Validate all plugins with Claude Code
|
|
25
|
+
run: |
|
|
26
|
+
failed=0
|
|
27
|
+
for plugin_dir in plugins/*/; do
|
|
28
|
+
if [ -d "${plugin_dir}.plugin" ]; then
|
|
29
|
+
echo "Validating ${plugin_dir}..."
|
|
30
|
+
if ! claude plugin validate "${plugin_dir}"; then
|
|
31
|
+
echo "❌ Validation failed for ${plugin_dir}"
|
|
32
|
+
failed=1
|
|
33
|
+
else
|
|
34
|
+
echo "✅ ${plugin_dir} is valid"
|
|
35
|
+
fi
|
|
36
|
+
fi
|
|
37
|
+
done
|
|
38
|
+
if [ "$failed" -ne 0 ]; then
|
|
39
|
+
echo "::error::One or more plugins failed Claude Code validation"
|
|
40
|
+
exit 1
|
|
41
|
+
fi
|
|
42
|
+
|
|
43
|
+
sync-extensions:
|
|
44
|
+
runs-on: ubuntu-latest
|
|
45
|
+
steps:
|
|
46
|
+
- name: Checkout repository
|
|
47
|
+
uses: actions/checkout@v4
|
|
48
|
+
|
|
49
|
+
- name: Setup Python
|
|
50
|
+
uses: actions/setup-python@v5
|
|
51
|
+
with:
|
|
52
|
+
python-version: "3.12"
|
|
53
|
+
|
|
54
|
+
- name: Install dependencies
|
|
55
|
+
run: pip install pyyaml
|
|
56
|
+
|
|
57
|
+
- name: Check extensions are in sync
|
|
58
|
+
run: python scripts/sync_extensions.py --check
|
|
59
|
+
|
|
60
|
+
sync-sdk-skill:
|
|
61
|
+
runs-on: ubuntu-latest
|
|
62
|
+
steps:
|
|
63
|
+
- name: Checkout repository
|
|
64
|
+
uses: actions/checkout@v4
|
|
65
|
+
|
|
66
|
+
- name: Setup Python
|
|
67
|
+
uses: actions/setup-python@v5
|
|
68
|
+
with:
|
|
69
|
+
python-version: "3.12"
|
|
70
|
+
|
|
71
|
+
- name: Check SDK skill is up to date
|
|
72
|
+
run: python scripts/sync_openhands_sdk_skill.py --check
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
name: Publish to npm
|
|
2
|
+
|
|
3
|
+
# Publishes @openhands/extensions to npm via OIDC trusted publishing (no token).
|
|
4
|
+
# Fires when release-please pushes a version tag (v*) cut from main; the manual
|
|
5
|
+
# dispatch path re-publishes a specific tag. Trusted publishing must be
|
|
6
|
+
# configured for this package on npmjs.com (this repo + this workflow file).
|
|
7
|
+
on:
|
|
8
|
+
push:
|
|
9
|
+
tags:
|
|
10
|
+
- 'v*'
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
inputs:
|
|
13
|
+
tag:
|
|
14
|
+
description: 'Release tag to publish (e.g. v0.1.0)'
|
|
15
|
+
required: true
|
|
16
|
+
type: string
|
|
17
|
+
|
|
18
|
+
concurrency:
|
|
19
|
+
group: npm-publish-${{ inputs.tag || github.ref }}
|
|
20
|
+
cancel-in-progress: false
|
|
21
|
+
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
id-token: write
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
publish:
|
|
28
|
+
name: Publish to npm
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
timeout-minutes: 15
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- name: Check out repository
|
|
34
|
+
uses: actions/checkout@v6
|
|
35
|
+
with:
|
|
36
|
+
ref: ${{ inputs.tag || github.ref }}
|
|
37
|
+
|
|
38
|
+
# Trusted publishing requires Node 22.14.0+ and npm 11.5.1+
|
|
39
|
+
# See: https://docs.npmjs.com/trusted-publishers/
|
|
40
|
+
- name: Set up Node.js for npm trusted publishing
|
|
41
|
+
uses: actions/setup-node@v6
|
|
42
|
+
with:
|
|
43
|
+
node-version: '24'
|
|
44
|
+
registry-url: https://registry.npmjs.org
|
|
45
|
+
|
|
46
|
+
- name: Verify npm version supports trusted publishing
|
|
47
|
+
run: |
|
|
48
|
+
echo "Node version: $(node --version)"
|
|
49
|
+
echo "npm version: $(npm --version)"
|
|
50
|
+
NPM_VERSION=$(npm --version)
|
|
51
|
+
NPM_MAJOR=$(echo $NPM_VERSION | cut -d. -f1)
|
|
52
|
+
NPM_MINOR=$(echo $NPM_VERSION | cut -d. -f2)
|
|
53
|
+
if [ "$NPM_MAJOR" -lt 11 ] || ([ "$NPM_MAJOR" -eq 11 ] && [ "$NPM_MINOR" -lt 5 ]); then
|
|
54
|
+
echo "Error: npm 11.5.1+ required for trusted publishing, got $NPM_VERSION"
|
|
55
|
+
exit 1
|
|
56
|
+
fi
|
|
57
|
+
echo "✓ npm $NPM_VERSION meets trusted publishing requirements"
|
|
58
|
+
|
|
59
|
+
# No install/test/build steps: @openhands/extensions ships source directly
|
|
60
|
+
# (plain ESM + hand-written .d.ts + JSON catalogs) with only peerDependencies,
|
|
61
|
+
# and has no build script, test suite, or lockfile.
|
|
62
|
+
|
|
63
|
+
- name: Verify package contents
|
|
64
|
+
run: npm pack --dry-run
|
|
65
|
+
|
|
66
|
+
- name: Validate package version matches release tag
|
|
67
|
+
env:
|
|
68
|
+
# Pass inputs.tag via env var to prevent script injection from
|
|
69
|
+
# GitHub Actions expression interpolation inside run blocks.
|
|
70
|
+
INPUT_TAG: ${{ inputs.tag }}
|
|
71
|
+
run: |
|
|
72
|
+
PACKAGE_VERSION=$(node -p "require('./package.json').version")
|
|
73
|
+
# Resolve tag: prefer workflow_dispatch input, fall back to push-event GITHUB_REF
|
|
74
|
+
if [ -n "$INPUT_TAG" ]; then
|
|
75
|
+
RAW_TAG="$INPUT_TAG"
|
|
76
|
+
else
|
|
77
|
+
RAW_TAG="${GITHUB_REF#refs/tags/}"
|
|
78
|
+
fi
|
|
79
|
+
TAG_VERSION="${RAW_TAG#v}"
|
|
80
|
+
echo "Package version: $PACKAGE_VERSION"
|
|
81
|
+
echo "Release tag version: $TAG_VERSION"
|
|
82
|
+
if [ "$PACKAGE_VERSION" != "$TAG_VERSION" ]; then
|
|
83
|
+
echo "Error: package.json version ($PACKAGE_VERSION) doesn't match release tag ($TAG_VERSION)"
|
|
84
|
+
exit 1
|
|
85
|
+
fi
|
|
86
|
+
echo "✓ Version $PACKAGE_VERSION matches release tag"
|
|
87
|
+
|
|
88
|
+
- name: Publish to npm with provenance
|
|
89
|
+
run: npm publish --access public --provenance
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: pr
|
|
2
|
+
|
|
3
|
+
# Caller workflow for the shared PR-title lint/label in OpenHands/release-actions.
|
|
4
|
+
#
|
|
5
|
+
# Trigger is pull_request_target (NOT pull_request) so the lint/label also runs
|
|
6
|
+
# on PRs from forks — e.g. external contributors who aren't org members. On a
|
|
7
|
+
# fork-originated `pull_request`, GITHUB_TOKEN is read-only, so the label step
|
|
8
|
+
# (which needs pull-requests: write) would fail; pull_request_target runs in the
|
|
9
|
+
# base repo's context with a writable token.
|
|
10
|
+
#
|
|
11
|
+
# pull_request_target is safe here — and only stays safe — because of two
|
|
12
|
+
# invariants enforced by the reusable workflow:
|
|
13
|
+
# 1. It NEVER checks out or executes any code from the PR. It only reads the
|
|
14
|
+
# PR title from the event payload, so fork code never runs with the base
|
|
15
|
+
# repo's token/secrets. Do not add a checkout step.
|
|
16
|
+
# 2. This caller does NOT pass `secrets: inherit`, so the release App's
|
|
17
|
+
# credentials are not in scope for the title workflow — it runs on the
|
|
18
|
+
# default GITHUB_TOKEN alone. Do not add `secrets: inherit`.
|
|
19
|
+
on:
|
|
20
|
+
pull_request_target:
|
|
21
|
+
# synchronize is needed alongside the title events: required status checks
|
|
22
|
+
# attach to a head SHA, and release-please force-pushes new commits to its
|
|
23
|
+
# release PR, so the lint must re-run on each update to stay green.
|
|
24
|
+
types: [opened, edited, reopened, synchronize]
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
pr-title:
|
|
28
|
+
permissions:
|
|
29
|
+
pull-requests: write
|
|
30
|
+
uses: OpenHands/release-actions/.github/workflows/pr-title.yml@main
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
release:
|
|
6
|
+
types: [published]
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: pypi-publish-${{ github.event.release.tag_name || github.ref }}
|
|
10
|
+
cancel-in-progress: false
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
build:
|
|
17
|
+
name: Build Python distributions
|
|
18
|
+
runs-on: ubuntu-24.04
|
|
19
|
+
timeout-minutes: 15
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- name: Check out repository
|
|
23
|
+
uses: actions/checkout@v6
|
|
24
|
+
|
|
25
|
+
- name: Extract version
|
|
26
|
+
id: extract_version
|
|
27
|
+
env:
|
|
28
|
+
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
|
29
|
+
run: |
|
|
30
|
+
if [ "${{ github.event_name }}" = "release" ]; then
|
|
31
|
+
VERSION="${RELEASE_TAG#v}"
|
|
32
|
+
else
|
|
33
|
+
VERSION=$(python - <<'PY'
|
|
34
|
+
import tomllib
|
|
35
|
+
from pathlib import Path
|
|
36
|
+
|
|
37
|
+
print(tomllib.loads(Path("pyproject.toml").read_text())["project"]["version"])
|
|
38
|
+
PY
|
|
39
|
+
)
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
43
|
+
echo "📦 Version: $VERSION"
|
|
44
|
+
|
|
45
|
+
- name: Install uv
|
|
46
|
+
uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
|
|
47
|
+
with:
|
|
48
|
+
version: latest
|
|
49
|
+
python-version: '3.12'
|
|
50
|
+
|
|
51
|
+
- name: Validate package version matches release tag
|
|
52
|
+
if: github.event_name == 'release'
|
|
53
|
+
env:
|
|
54
|
+
VERSION: ${{ steps.extract_version.outputs.version }}
|
|
55
|
+
run: |
|
|
56
|
+
PACKAGE_VERSION=$(python - <<'PY'
|
|
57
|
+
import tomllib
|
|
58
|
+
from pathlib import Path
|
|
59
|
+
|
|
60
|
+
print(tomllib.loads(Path("pyproject.toml").read_text())["project"]["version"])
|
|
61
|
+
PY
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
echo "Package version: $PACKAGE_VERSION"
|
|
65
|
+
echo "Release tag version: $VERSION"
|
|
66
|
+
if [ "$PACKAGE_VERSION" != "$VERSION" ]; then
|
|
67
|
+
echo "Error: pyproject.toml version ($PACKAGE_VERSION) doesn't match release tag ($VERSION)"
|
|
68
|
+
exit 1
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
- name: Build package
|
|
72
|
+
run: uv build
|
|
73
|
+
|
|
74
|
+
- name: Upload distributions
|
|
75
|
+
uses: actions/upload-artifact@v6
|
|
76
|
+
with:
|
|
77
|
+
name: python-package-distributions
|
|
78
|
+
path: dist/
|
|
79
|
+
if-no-files-found: error
|
|
80
|
+
|
|
81
|
+
publish:
|
|
82
|
+
name: Publish openhands-extensions to PyPI
|
|
83
|
+
if: >
|
|
84
|
+
github.event_name == 'workflow_dispatch' ||
|
|
85
|
+
!github.event.release.prerelease
|
|
86
|
+
needs: build
|
|
87
|
+
runs-on: ubuntu-24.04
|
|
88
|
+
timeout-minutes: 15
|
|
89
|
+
environment:
|
|
90
|
+
name: pypi
|
|
91
|
+
url: https://pypi.org/p/openhands-extensions
|
|
92
|
+
permissions:
|
|
93
|
+
contents: read
|
|
94
|
+
id-token: write
|
|
95
|
+
|
|
96
|
+
steps:
|
|
97
|
+
- name: Download distributions
|
|
98
|
+
uses: actions/download-artifact@v6
|
|
99
|
+
with:
|
|
100
|
+
name: python-package-distributions
|
|
101
|
+
path: dist/
|
|
102
|
+
|
|
103
|
+
- name: Publish to PyPI
|
|
104
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
|
|
3
|
+
# Caller workflow for the shared release automation in OpenHands/release-actions.
|
|
4
|
+
# This file owns the trigger; the reusable workflow owns the logic.
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches:
|
|
8
|
+
- main
|
|
9
|
+
# Maintenance/freeze branches (e.g. release/0.2). The reusable workflow
|
|
10
|
+
# scopes the release to whichever branch triggered this run.
|
|
11
|
+
- 'release/**'
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
release-please:
|
|
15
|
+
# The caller must grant the permissions the reusable workflow needs; the
|
|
16
|
+
# effective token is the intersection of the two.
|
|
17
|
+
permissions:
|
|
18
|
+
contents: write
|
|
19
|
+
pull-requests: write
|
|
20
|
+
# Passes the org-level RELEASE_APP_ID / RELEASE_APP_PRIVATE_KEY through so the
|
|
21
|
+
# reusable workflow can mint the GitHub App token. These are org secrets —
|
|
22
|
+
# nothing to create per-repo.
|
|
23
|
+
secrets: inherit
|
|
24
|
+
uses: OpenHands/release-actions/.github/workflows/release-please.yml@main
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Tests
|
|
2
|
+
|
|
3
|
+
# NOTE: pull_request (not pull_request_target) so checks run against the PR head.
|
|
4
|
+
on:
|
|
5
|
+
pull_request:
|
|
6
|
+
branches: ["*"]
|
|
7
|
+
push:
|
|
8
|
+
branches: ["main", "master"]
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
test:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- name: Checkout repository
|
|
15
|
+
uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Install uv
|
|
18
|
+
uses: astral-sh/setup-uv@v7
|
|
19
|
+
with:
|
|
20
|
+
enable-cache: true
|
|
21
|
+
python-version: "3.12"
|
|
22
|
+
|
|
23
|
+
- name: Setup Node.js
|
|
24
|
+
uses: actions/setup-node@v4
|
|
25
|
+
with:
|
|
26
|
+
node-version: "20"
|
|
27
|
+
|
|
28
|
+
- name: Run tests
|
|
29
|
+
run: uv run --group test pytest tests/
|
|
30
|
+
env:
|
|
31
|
+
PYTHONPATH: ${{ github.workspace }}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Vulnerability Scan and Remediation Workflow
|
|
2
|
+
#
|
|
3
|
+
# This is a thin wrapper that uses the OpenHands vulnerability-remediation action.
|
|
4
|
+
# It auto-updates when the action in OpenHands/extensions is updated.
|
|
5
|
+
#
|
|
6
|
+
# INSTALLATION:
|
|
7
|
+
# curl -o .github/workflows/vulnerability-scan.yml \
|
|
8
|
+
# https://raw.githubusercontent.com/OpenHands/extensions/main/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml
|
|
9
|
+
#
|
|
10
|
+
# REQUIRED SECRETS:
|
|
11
|
+
# - LLM_API_KEY: API key for your LLM provider (OpenAI, Anthropic, etc.)
|
|
12
|
+
#
|
|
13
|
+
# OPTIONAL SECRETS:
|
|
14
|
+
# - PAT_TOKEN: GitHub PAT for creating PRs (uses GITHUB_TOKEN if not set)
|
|
15
|
+
#
|
|
16
|
+
# The action will:
|
|
17
|
+
# 1. Run a Trivy security scan
|
|
18
|
+
# 2. Skip agent if no vulnerabilities found (saves costs)
|
|
19
|
+
# 3. Create PRs for fixable vulnerabilities
|
|
20
|
+
|
|
21
|
+
name: Vulnerability Scan and Remediation
|
|
22
|
+
|
|
23
|
+
on:
|
|
24
|
+
# Run weekly on Monday at 9am UTC
|
|
25
|
+
schedule:
|
|
26
|
+
- cron: '0 9 * * 1'
|
|
27
|
+
|
|
28
|
+
# Allow manual trigger
|
|
29
|
+
workflow_dispatch:
|
|
30
|
+
inputs:
|
|
31
|
+
severity_threshold:
|
|
32
|
+
description: 'Minimum severity to remediate'
|
|
33
|
+
required: false
|
|
34
|
+
default: 'HIGH'
|
|
35
|
+
type: choice
|
|
36
|
+
options:
|
|
37
|
+
- CRITICAL
|
|
38
|
+
- HIGH
|
|
39
|
+
- MEDIUM
|
|
40
|
+
- LOW
|
|
41
|
+
max_vulnerabilities:
|
|
42
|
+
description: 'Maximum vulnerabilities to fix (0 = unlimited)'
|
|
43
|
+
required: false
|
|
44
|
+
default: '5'
|
|
45
|
+
type: string
|
|
46
|
+
llm_model:
|
|
47
|
+
description: 'LLM model to use for remediation'
|
|
48
|
+
required: false
|
|
49
|
+
default: 'anthropic/claude-sonnet-4-5-20250929'
|
|
50
|
+
type: string
|
|
51
|
+
llm_base_url:
|
|
52
|
+
description: 'Custom LLM base URL (optional)'
|
|
53
|
+
required: false
|
|
54
|
+
default: ''
|
|
55
|
+
type: string
|
|
56
|
+
|
|
57
|
+
permissions:
|
|
58
|
+
contents: write
|
|
59
|
+
pull-requests: write
|
|
60
|
+
security-events: read
|
|
61
|
+
|
|
62
|
+
jobs:
|
|
63
|
+
scan-and-remediate:
|
|
64
|
+
runs-on: ubuntu-latest
|
|
65
|
+
timeout-minutes: 60
|
|
66
|
+
|
|
67
|
+
steps:
|
|
68
|
+
# Uses @main to auto-update when the action is improved
|
|
69
|
+
- name: Run Vulnerability Remediation
|
|
70
|
+
id: remediate
|
|
71
|
+
uses: OpenHands/extensions/plugins/vulnerability-remediation@main
|
|
72
|
+
with:
|
|
73
|
+
severity-threshold: ${{ inputs.severity_threshold || 'HIGH' }}
|
|
74
|
+
max-vulnerabilities: ${{ inputs.max_vulnerabilities || '5' }}
|
|
75
|
+
llm-model: ${{ inputs.llm_model || 'anthropic/claude-sonnet-4-5-20250929' }}
|
|
76
|
+
llm-base-url: ${{ inputs.llm_base_url || '' }}
|
|
77
|
+
llm-api-key: ${{ secrets.LLM_API_KEY }}
|
|
78
|
+
github-token: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC || secrets.GITHUB_TOKEN }}
|
|
79
|
+
|
|
80
|
+
- name: Summary
|
|
81
|
+
run: |
|
|
82
|
+
echo "### Vulnerability Scan Results" >> $GITHUB_STEP_SUMMARY
|
|
83
|
+
if [ "${{ steps.remediate.outputs.scan-only }}" == "true" ]; then
|
|
84
|
+
echo "✅ No vulnerabilities found that need remediation." >> $GITHUB_STEP_SUMMARY
|
|
85
|
+
else
|
|
86
|
+
echo "🔍 Found ${{ steps.remediate.outputs.vulnerabilities-found }} vulnerabilities to remediate." >> $GITHUB_STEP_SUMMARY
|
|
87
|
+
fi
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# pytest cache
|
|
7
|
+
.pytest_cache/
|
|
8
|
+
|
|
9
|
+
# Virtual environments
|
|
10
|
+
venv/
|
|
11
|
+
.venv/
|
|
12
|
+
env/
|
|
13
|
+
|
|
14
|
+
# IDE
|
|
15
|
+
.idea/
|
|
16
|
+
.vscode/
|
|
17
|
+
*.swp
|
|
18
|
+
*.swo
|
|
19
|
+
|
|
20
|
+
# OS
|
|
21
|
+
.DS_Store
|
|
22
|
+
Thumbs.db
|
|
23
|
+
.agents/*
|
|
24
|
+
!.agents/skills/
|
|
25
|
+
.agents/skills/*
|
|
26
|
+
!.agents/skills/custom-codereview-guide.md
|
|
27
|
+
|
|
28
|
+
# uv lock file (no application code in this repo)
|
|
29
|
+
uv.lock
|
|
30
|
+
|
|
31
|
+
# npm pack artifacts (also keeps stray tarballs out of the published package)
|
|
32
|
+
*.tgz
|