openhands-extensions 0.20.0__tar.gz → 0.22.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.20.0 → openhands_extensions-0.22.0}/.github/workflows/check-extensions.yml +4 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/npm-publish.yml +9 -3
- openhands_extensions-0.22.0/.github/workflows/pr-artifacts.yml +294 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/pr-description-check.yml +4 -2
- openhands_extensions-0.22.0/.release-please-manifest.json +3 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/AGENTS.md +27 -3
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/PKG-INFO +1 -1
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/README.md +6 -2
- openhands_extensions-0.22.0/automations/bundle-index.js +37 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/github-agents-md-maintainer/manifest.json +2 -1
- openhands_extensions-0.22.0/automations/catalog/github-delivery-watchdog/manifest.json +79 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/github-issue-to-pr/manifest.json +24 -15
- openhands_extensions-0.22.0/automations/catalog/github-issue-triage/manifest.json +73 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/github-pr-reviewer/manifest.json +23 -15
- openhands_extensions-0.22.0/automations/catalog/gitlab-issue-to-mr/manifest.json +124 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog-index.js +17 -11
- openhands_extensions-0.22.0/integrations/catalog/reportportal.json +76 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog-index.js +6 -4
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/marketplaces/openhands-extensions.json +42 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/package.json +1 -1
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/README.md +1 -1
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/SKILL.md +18 -8
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-sdk/SKILL.md +2 -0
- openhands_extensions-0.22.0/plugins/vulnerability-remediation/skills/github/scripts/agent_conversation.py +143 -0
- openhands_extensions-0.22.0/plugins/vulnerability-remediation/skills/github/scripts/github_client.py +230 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/pyproject.toml +2 -2
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/python/openhands_extensions/_version.py +1 -1
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/SKILL.md +7 -1
- openhands_extensions-0.22.0/skills/github-agents-md-maintainer/scripts/github_client.py +1 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/scripts/main.py +4 -40
- openhands_extensions-0.22.0/skills/github-delivery-watchdog/.claude-plugin/plugin.json +9 -0
- openhands_extensions-0.22.0/skills/github-delivery-watchdog/README.md +10 -0
- openhands_extensions-0.22.0/skills/github-delivery-watchdog/SKILL.md +35 -0
- openhands_extensions-0.22.0/skills/github-delivery-watchdog/commands/github-delivery-watchdog.md +8 -0
- openhands_extensions-0.22.0/skills/github-delivery-watchdog/scripts/github_client.py +1 -0
- openhands_extensions-0.22.0/skills/github-delivery-watchdog/scripts/worker.py +96 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/SKILL.md +15 -1
- openhands_extensions-0.22.0/skills/github-issue-to-pr/scripts/agent_conversation.py +1 -0
- openhands_extensions-0.22.0/skills/github-issue-to-pr/scripts/github_client.py +1 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/scripts/main.py +19 -50
- openhands_extensions-0.22.0/skills/github-issue-to-pr/scripts/worker.py +172 -0
- openhands_extensions-0.22.0/skills/github-issue-triage/.claude-plugin/plugin.json +9 -0
- openhands_extensions-0.22.0/skills/github-issue-triage/README.md +9 -0
- openhands_extensions-0.22.0/skills/github-issue-triage/SKILL.md +34 -0
- openhands_extensions-0.22.0/skills/github-issue-triage/commands/github-issue-triage.md +8 -0
- openhands_extensions-0.22.0/skills/github-issue-triage/scripts/agent_conversation.py +1 -0
- openhands_extensions-0.22.0/skills/github-issue-triage/scripts/github_client.py +1 -0
- openhands_extensions-0.22.0/skills/github-issue-triage/scripts/worker.py +106 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/SKILL.md +15 -1
- openhands_extensions-0.22.0/skills/github-pr-reviewer/scripts/agent_conversation.py +1 -0
- openhands_extensions-0.22.0/skills/github-pr-reviewer/scripts/github_client.py +1 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/scripts/main.py +23 -49
- openhands_extensions-0.22.0/skills/github-pr-reviewer/scripts/worker.py +94 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/SKILL.md +7 -1
- openhands_extensions-0.22.0/skills/github-repo-monitor/scripts/github_client.py +1 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/scripts/main.py +4 -46
- openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/README.md +92 -0
- openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/SKILL.md +408 -0
- openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/commands/issue-to-mr-setup.md +8 -0
- openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/references/state-schema.md +140 -0
- openhands_extensions-0.22.0/skills/gitlab-issue-to-mr/scripts/main.py +1448 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/index.js +52 -6
- openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/.claude-plugin/plugin.json +20 -0
- openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/README.md +79 -0
- openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/SKILL.md +339 -0
- openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/references/diagnostics.md +698 -0
- openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/references/support-bundle-analysis.md +570 -0
- openhands_extensions-0.22.0/skills/openhands-enterprise-troubleshooting/scripts/bundle_triage.py +532 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/capabilities.json +6 -3
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/github-pr-reviewer.json +64 -43
- openhands_extensions-0.22.0/tests/github_automation_helpers.py +31 -0
- openhands_extensions-0.22.0/tests/test_agent_conversation_dispatch.py +180 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_automation_setup.py +3 -3
- openhands_extensions-0.22.0/tests/test_github_automation_foundation.py +73 -0
- openhands_extensions-0.22.0/tests/test_github_developer_delivery.py +150 -0
- openhands_extensions-0.22.0/tests/test_github_reviewer_delivery.py +110 -0
- openhands_extensions-0.22.0/tests/test_github_skill_installation.py +63 -0
- openhands_extensions-0.22.0/tests/test_github_triage_delivery.py +90 -0
- openhands_extensions-0.22.0/tests/test_github_watchdog_delivery.py +233 -0
- openhands_extensions-0.22.0/tests/test_gitlab_issue_to_mr.py +823 -0
- openhands_extensions-0.20.0/.pr/custom-automation-event-trigger.png +0 -0
- openhands_extensions-0.20.0/.pr/custom-automation-plugin-fields.png +0 -0
- openhands_extensions-0.20.0/.pr/custom-automation-prompt-review.png +0 -0
- openhands_extensions-0.20.0/.pr/custom-automation-prompt-scheduled.png +0 -0
- openhands_extensions-0.20.0/.pr/custom-automation-upload-fields.png +0 -0
- openhands_extensions-0.20.0/.release-please-manifest.json +0 -3
- openhands_extensions-0.20.0/automations/bundle-index.js +0 -18
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.agents/skills/custom-codereview-guide.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.claude-plugin/marketplace.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/dependabot.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/pull_request_template.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/release.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/scripts/check_issue_readiness.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/scripts/check_pr_description.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/scripts/post-readiness-comment.mjs +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/scripts/refresh_linked_pr_checks.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/deprecation-check.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/issue-readiness-check.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/pr.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/pypi-publish.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/release.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/tests.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/vulnerability-scan.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.gitignore +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/LICENSE +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/MIGRATION.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/analysis_results.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/custom-automation/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/github-repo-monitor/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/incident-retrospective-drafter/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/jira-issue-to-bitbucket-pr/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/jira-issue-to-gitlab-mr/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/jira-issue-to-pr/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/linear-issue-to-bitbucket-pr/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/linear-issue-to-github-pr/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/linear-issue-to-gitlab-mr/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/linear-triage-assistant/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/news-digest/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/qa-changes/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/research-brief-writer/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/slack-channel-monitor/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/slack-github-linear-daily-organization.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/slack-standup-digest/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog/upstream-fork-sync/manifest.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/catalog.schema.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/index.d.ts +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/index.js +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/interface.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/automations/interface.schema.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/index.d.ts +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/index.js +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/airtable.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/apify.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/asana.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/atlassian-rovo.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/atlassian.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/bitbucket.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/box.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/brave-search.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/browser-mcp.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/canva.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/clickhouse.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/cloudflare-bindings.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/cloudflare-browser-rendering.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/cloudflare-builds.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/cloudflare-docs.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/cloudflare-observability.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/confluence.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/datadog.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/deepwiki.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/discord.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/elevenlabs.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/everything.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/exa.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/fetch.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/figma.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/filesystem.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/firecrawl.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/git.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/github.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/gitlab.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/gmail.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/google-calendar.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/google-docs.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/google-drive.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/google-sheets.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/hubspot.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/huggingface.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/intercom.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/jira.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/kagi.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/linear.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/memory.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/microsoft-outlook.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/microsoft-teams.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/miro.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/monday.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/mongodb.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/neon.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/netlify.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/notion.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/obsidian.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/okta.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/onedrive.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/ordinal.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/paypal.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/playwright.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/posthog.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/quickbooks.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/redis.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/resend.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/salesforce.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/sentry.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/sequential-thinking.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/sharepoint.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/slack.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/sonarqube.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/stripe.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/supabase.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/superhuman-mail.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/tavily.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/time.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/trello.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/vanta.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/vercel.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/webflow.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/xero.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog/zoom.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/catalog.schema.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/icons/salesforce.svg +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/icons/slack.svg +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/index.d.ts +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/integrations/index.js +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/marketplaces/large-codebase.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/city-weather/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/city-weather/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/city-weather/commands/now.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/references/troubleshooting.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/build-setup/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/mainframe-removal/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/mainframe-removal/references/cics-transformation-examples.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/action.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.cjs +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.cjs +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/magic-test/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/magic-test/skills/magic-word/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/migration-mapping/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/migration-report/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/migration-scoring/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/score-quality/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/migration-scoring/skills/score-style/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/references/criteria.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/references/criteria.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/improve-agent-readiness/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/improve-agent-readiness/references/criteria.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-agents-md/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-agents-md/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-openhands/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-openhands/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-pr-review/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/onboarding/skills/setup-pr-review/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/commands/create.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/commands/openhands-cloud.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/scripts/run.sh +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/references/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/references/TROUBLESHOOTING.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/references/example_prompt.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.ts +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/commands/automation-create.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/references/ab-testing.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/references/custom-automation.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/references/security.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-automation/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-sdk/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-sdk/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/openhands/skills/openhands-sdk/commands/sdk.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/action.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/scripts/agent_script.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/scripts/evaluate_review.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/scripts/prompt.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/commands/codereview-roasted.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/commands/codereview.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/references/risk-evaluation.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/code-review/references/supply-chain-security.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/github-pr-review/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/github-pr-review/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/github-pr-review/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/github-pr-review/commands/github-pr-review.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/skills/github-pr-review/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/workflows/pr-review-by-openhands.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/pr-review/workflows/pr-review-evaluation.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/action.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/scripts/agent_script.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/scripts/evaluate_qa_changes.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/scripts/prompt.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/skills/qa-changes/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/skills/qa-changes/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/skills/qa-changes/commands/qa-changes.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/qa-changes/workflows/qa-changes-evaluation.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/action.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/commands/release-notes.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/scripts/agent_script.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/scripts/generate_release_notes.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/scripts/prompt.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/scripts/validate_release_notes.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/skills/release-notes/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/skills/release-notes/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/skills/release-notes/commands/release-notes.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/release-notes/workflows/release-notes.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/action.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/github/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/github/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/github/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/github/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/security/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/security/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/skills/security/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/python/openhands_extensions/__init__.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/python/openhands_extensions/deprecation.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/python/openhands_extensions/integration_models.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/python/openhands_extensions/integrations.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/release-please-config.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/build-automation-catalog.mjs +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/build-integration-catalog.mjs +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/build-skills-catalog.mjs +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/check_deprecations.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/sync_extensions.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/scripts/sync_openhands_sdk_skill.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-javadoc/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-javadoc/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-javadoc/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-javadoc/references/example.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-skill/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-skill/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-skill/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/add-skill/scripts/fetch_skill.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-canvas-environment/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-canvas-environment/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-canvas-environment/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-creator/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-creator/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-creator/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-creator/commands/agent-creator.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-creator/references/fallback.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-memory/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-memory/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-memory/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-memory/commands/remember.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-sdk-builder/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-sdk-builder/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-sdk-builder/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/agent-sdk-builder/commands/agent-builder.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/azure-devops/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/azure-devops/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/azure-devops/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-cloud/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-cloud/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-cloud/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-data-center/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-data-center/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/bitbucket-data-center/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/commands/simplify.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/references/code-quality-review.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/references/code-reuse-review.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/code-simplifier/references/efficiency-review.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/datadog/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/datadog/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/datadog/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/datadog/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/deno/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/deno/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/deno/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/deno/references/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/__init__.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/references/REFERENCE.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/scripts/__init__.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/scripts/_http.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/scripts/post_webhook.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/discord/scripts/send_message.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/docker/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/docker/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/docker/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/evidence-based-citations/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/evidence-based-citations/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/evidence-based-citations/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/flarglebargle/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/flarglebargle/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/flarglebargle/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/frontend-design/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/frontend-design/LICENSE.txt +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/frontend-design/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/frontend-design/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-actions/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-actions/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-actions/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/commands/agents-md-setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-agents-md-maintainer/references/state-schema.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/commands/issue-to-pr-setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-issue-to-pr/references/state-schema.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/commands/pr-reviewer-setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/references/state-schema.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-pr-reviewer/tests/test_main.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/commands/github-monitor-poll.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/references/github-api.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/references/state-schema.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/github-repo-monitor/tests/test_main.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/gitlab/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/gitlab/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/gitlab/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/incident-retrospective/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/incident-retrospective/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/incident-retrospective/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/incident-retrospective/commands/incident-retro-setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/index.d.ts +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/commands/babysit.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/commands/iterate.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/commands/verify.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/references/heuristics.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/references/verification.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/iterate/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jira-issue-to-pr/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jira-issue-to-pr/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jira-issue-to-pr/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jira-issue-to-pr/references/setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jira-issue-to-pr/scripts/main.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jupyter/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jupyter/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/jupyter/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/kubernetes/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/kubernetes/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/kubernetes/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/kubernetes/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/learn-from-code-review/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/learn-from-code-review/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/learn-from-code-review/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/learn-from-code-review/commands/learn-from-reviews.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear-triage/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear-triage/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear-triage/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/linear-triage/commands/linear-triage-setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/commands/news-digest-setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/references/state-schema.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/news-digest/scripts/main.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/notion/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/notion/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/notion/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/notion/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/npm/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/npm/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/npm/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/pdflatex/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/pdflatex/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/pdflatex/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/plain-english-content/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/plain-english-content/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/plain-english-content/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/prd/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/prd/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/prd/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/prd/commands/prd.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/research-brief/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/research-brief/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/research-brief/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/research-brief/commands/research-brief-setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/LICENSE.txt +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/references/output-patterns.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/references/workflows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/scripts/init_skill.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/skill-creator/scripts/quick_validate.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/commands/slack-monitor-poll.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/references/slack-api.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/references/state-schema.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-channel-monitor/scripts/main.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-standup-digest/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-standup-digest/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-standup-digest/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/slack-standup-digest/commands/standup-digest-setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/spark-version-upgrade/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/spark-version-upgrade/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/spark-version-upgrade/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ssh/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ssh/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ssh/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ssh/references/windows.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/swift-linux/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/swift-linux/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/swift-linux/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/technical-writing/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/technical-writing/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/technical-writing/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/LICENSE.txt +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/theme-showcase.pdf +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/arctic-frost.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/botanical-garden.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/desert-rose.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/forest-canopy.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/golden-hour.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/midnight-galaxy.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/modern-minimalist.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/ocean-depths.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/sunset-boulevard.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/theme-factory/themes/tech-innovation.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ticket-to-code-change/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ticket-to-code-change/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ticket-to-code-change/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/ticket-to-code-change/commands/ticket-to-code-change-setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/upstream-fork-sync/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/upstream-fork-sync/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/upstream-fork-sync/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/upstream-fork-sync/commands/upstream-fork-sync-setup.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/uv/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/uv/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/uv/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/uv/references/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/vercel/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/vercel/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/skills/vercel/SKILL.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/custom-automation.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/github-repo-monitor.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/incident-retrospective-drafter.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/fixtures/automations/upstream-fork-sync.json +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_add_skill_installs_to_agents_dir.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_catalog_schema.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_catalogs.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_check_issue_readiness.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_check_pr_description.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_code_review_risk_evaluation.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_deprecations.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_github_agents_md_maintainer.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_github_issue_to_pr.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_github_pr_review_skill.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_integration_catalog_in_sync.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_interface_manifest.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_issue_duplicate_checker.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_live_integration_smoke.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_news_digest.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_openhands_api_python.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_plugin_manifest.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_pr_review_diff_payload.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_pr_review_feedback.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_pr_review_prompt.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_pr_review_review_context.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_qa_changes.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_qa_changes_evaluation.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_refresh_linked_pr_checks.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_release_notes_generator.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_sdk_loading.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_skill_plugin_loading.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_skills_catalog.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_skills_have_readme.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_slack_channel_monitor.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_sync_extensions.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_version_alignment.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/tests/test_workflow_sync.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/utils/analysis/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/utils/analysis/laminar_signals/README.md +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/utils/analysis/laminar_signals/analyze.py +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/utils/analysis/laminar_signals/templates/default.j2 +0 -0
- {openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/utils/analysis/laminar_signals/templates/pr_review.j2 +0 -0
{openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/check-extensions.yml
RENAMED
|
@@ -58,6 +58,8 @@ jobs:
|
|
|
58
58
|
run: python scripts/sync_extensions.py --check
|
|
59
59
|
|
|
60
60
|
sync-sdk-skill:
|
|
61
|
+
permissions:
|
|
62
|
+
contents: read
|
|
61
63
|
runs-on: ubuntu-latest
|
|
62
64
|
steps:
|
|
63
65
|
- name: Checkout repository
|
|
@@ -69,4 +71,6 @@ jobs:
|
|
|
69
71
|
python-version: "3.12"
|
|
70
72
|
|
|
71
73
|
- name: Check SDK skill is up to date
|
|
74
|
+
env:
|
|
75
|
+
GITHUB_TOKEN: ${{ github.token }}
|
|
72
76
|
run: python scripts/sync_openhands_sdk_skill.py --check
|
{openhands_extensions-0.20.0 → openhands_extensions-0.22.0}/.github/workflows/npm-publish.yml
RENAMED
|
@@ -56,14 +56,19 @@ jobs:
|
|
|
56
56
|
fi
|
|
57
57
|
echo "✓ npm $NPM_VERSION meets trusted publishing requirements"
|
|
58
58
|
|
|
59
|
-
#
|
|
60
|
-
#
|
|
61
|
-
|
|
59
|
+
# npm omits symlinks. Materialize shared resources in a release-only copy;
|
|
60
|
+
# retain the canonical linked source layout in the checkout.
|
|
61
|
+
- name: Stage package with linked resources
|
|
62
|
+
run: |
|
|
63
|
+
mkdir -p "$RUNNER_TEMP/extensions-package"
|
|
64
|
+
cp -RL . "$RUNNER_TEMP/extensions-package/"
|
|
62
65
|
|
|
63
66
|
- name: Verify package contents
|
|
67
|
+
working-directory: ${{ runner.temp }}/extensions-package
|
|
64
68
|
run: npm pack --dry-run
|
|
65
69
|
|
|
66
70
|
- name: Validate package version matches release tag
|
|
71
|
+
working-directory: ${{ runner.temp }}/extensions-package
|
|
67
72
|
env:
|
|
68
73
|
# Pass inputs.tag via env var to prevent script injection from
|
|
69
74
|
# GitHub Actions expression interpolation inside run blocks.
|
|
@@ -86,4 +91,5 @@ jobs:
|
|
|
86
91
|
echo "✓ Version $PACKAGE_VERSION matches release tag"
|
|
87
92
|
|
|
88
93
|
- name: Publish to npm with provenance
|
|
94
|
+
working-directory: ${{ runner.temp }}/extensions-package
|
|
89
95
|
run: npm publish --access public --provenance
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: PR Artifacts
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
workflow_dispatch: # Manual trigger for testing
|
|
6
|
+
pull_request_target:
|
|
7
|
+
types: [opened, synchronize, reopened, closed]
|
|
8
|
+
branches: [main]
|
|
9
|
+
pull_request_review:
|
|
10
|
+
types: [submitted]
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
# Auto-remove .pr/ directory from same-repository PRs when approved.
|
|
14
|
+
cleanup-on-approval:
|
|
15
|
+
concurrency:
|
|
16
|
+
group: cleanup-pr-artifacts-${{ github.event.pull_request.number }}
|
|
17
|
+
cancel-in-progress: false
|
|
18
|
+
if: >-
|
|
19
|
+
github.event_name == 'pull_request_review' &&
|
|
20
|
+
github.event.review.state == 'approved' &&
|
|
21
|
+
github.event.pull_request.head.repo.full_name == github.repository
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
permissions:
|
|
24
|
+
contents: write
|
|
25
|
+
pull-requests: write
|
|
26
|
+
steps:
|
|
27
|
+
# Use PAT so the push triggers CI workflows that will complete and
|
|
28
|
+
# satisfy branch protection. We can't use [skip ci] because GitHub Apps
|
|
29
|
+
# can create stuck checks that block merging.
|
|
30
|
+
- uses: actions/checkout@v7
|
|
31
|
+
with:
|
|
32
|
+
ref: ${{ github.event.pull_request.head.ref }}
|
|
33
|
+
token: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC }}
|
|
34
|
+
|
|
35
|
+
- name: Remove .pr/ directory
|
|
36
|
+
id: remove
|
|
37
|
+
run: |
|
|
38
|
+
if [ -d ".pr" ]; then
|
|
39
|
+
git config user.name "allhands-bot"
|
|
40
|
+
git config user.email "allhands-bot@users.noreply.github.com"
|
|
41
|
+
git rm -rf .pr/
|
|
42
|
+
git commit -m "chore: Remove PR-only artifacts [automated]"
|
|
43
|
+
git push || {
|
|
44
|
+
echo "::error::Failed to push cleanup commit. Check branch protection rules."
|
|
45
|
+
exit 1
|
|
46
|
+
}
|
|
47
|
+
echo "removed=true" >> "$GITHUB_OUTPUT"
|
|
48
|
+
echo "::notice::Removed .pr/ directory"
|
|
49
|
+
else
|
|
50
|
+
echo "removed=false" >> "$GITHUB_OUTPUT"
|
|
51
|
+
echo "::notice::No .pr/ directory to remove"
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
- name: Update PR comment after cleanup
|
|
55
|
+
if: steps.remove.outputs.removed == 'true'
|
|
56
|
+
uses: actions/github-script@v9
|
|
57
|
+
with:
|
|
58
|
+
script: |
|
|
59
|
+
const marker = '<!-- pr-artifacts-notice -->';
|
|
60
|
+
const body = `${marker}
|
|
61
|
+
✅ **PR Artifacts Cleaned Up**
|
|
62
|
+
|
|
63
|
+
The \`.pr/\` directory has been automatically removed.
|
|
64
|
+
`;
|
|
65
|
+
|
|
66
|
+
const comments = await github.paginate(
|
|
67
|
+
github.rest.issues.listComments,
|
|
68
|
+
{
|
|
69
|
+
owner: context.repo.owner,
|
|
70
|
+
repo: context.repo.repo,
|
|
71
|
+
issue_number: context.issue.number,
|
|
72
|
+
per_page: 100,
|
|
73
|
+
},
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
const existing = comments.find(c => c.body.includes(marker));
|
|
77
|
+
if (existing) {
|
|
78
|
+
await github.rest.issues.updateComment({
|
|
79
|
+
owner: context.repo.owner,
|
|
80
|
+
repo: context.repo.repo,
|
|
81
|
+
comment_id: existing.id,
|
|
82
|
+
body: body,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
# Inspect the fork through the API; never check out untrusted code with a write token.
|
|
87
|
+
check-pr-artifacts:
|
|
88
|
+
if: >-
|
|
89
|
+
github.event_name == 'pull_request_target' &&
|
|
90
|
+
github.event.action != 'closed'
|
|
91
|
+
runs-on: ubuntu-latest
|
|
92
|
+
permissions:
|
|
93
|
+
contents: read
|
|
94
|
+
pull-requests: write
|
|
95
|
+
steps:
|
|
96
|
+
- name: Post or update PR comment
|
|
97
|
+
uses: actions/github-script@v9
|
|
98
|
+
with:
|
|
99
|
+
script: |
|
|
100
|
+
const marker = '<!-- pr-artifacts-notice -->';
|
|
101
|
+
const pullRequest = context.payload.pull_request;
|
|
102
|
+
const headRepository = pullRequest.head.repo;
|
|
103
|
+
let exists = true;
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
await github.rest.repos.getContent({
|
|
107
|
+
owner: headRepository.owner.login,
|
|
108
|
+
repo: headRepository.name,
|
|
109
|
+
path: '.pr',
|
|
110
|
+
ref: pullRequest.head.sha,
|
|
111
|
+
});
|
|
112
|
+
} catch (error) {
|
|
113
|
+
if (error.status === 404) {
|
|
114
|
+
exists = false;
|
|
115
|
+
} else {
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const comments = await github.paginate(
|
|
121
|
+
github.rest.issues.listComments,
|
|
122
|
+
{
|
|
123
|
+
owner: context.repo.owner,
|
|
124
|
+
repo: context.repo.repo,
|
|
125
|
+
issue_number: context.issue.number,
|
|
126
|
+
per_page: 100,
|
|
127
|
+
},
|
|
128
|
+
);
|
|
129
|
+
const existing = comments.find(c => c.body.includes(marker));
|
|
130
|
+
|
|
131
|
+
if (!exists) {
|
|
132
|
+
if (existing) {
|
|
133
|
+
await github.rest.issues.updateComment({
|
|
134
|
+
owner: context.repo.owner,
|
|
135
|
+
repo: context.repo.repo,
|
|
136
|
+
comment_id: existing.id,
|
|
137
|
+
body: `${marker}
|
|
138
|
+
✅ **PR Artifacts Cleaned Up**
|
|
139
|
+
|
|
140
|
+
The \`.pr/\` directory is no longer present.
|
|
141
|
+
`,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const isFork = headRepository.full_name !== context.payload.repository.full_name;
|
|
148
|
+
const cleanup = isFork
|
|
149
|
+
? 'Because this is a fork PR, the workflow will **open or update a cleanup PR against `main` after merge**.'
|
|
150
|
+
: 'The directory will be **automatically removed when the PR is approved**.';
|
|
151
|
+
const body = `${marker}
|
|
152
|
+
📁 **PR Artifacts Notice**
|
|
153
|
+
|
|
154
|
+
This PR contains a \`.pr/\` directory with temporary PR-specific documents. ${cleanup}
|
|
155
|
+
`;
|
|
156
|
+
|
|
157
|
+
core.warning('.pr/ directory contains temporary PR-only artifacts');
|
|
158
|
+
if (existing) {
|
|
159
|
+
await github.rest.issues.updateComment({
|
|
160
|
+
owner: context.repo.owner,
|
|
161
|
+
repo: context.repo.repo,
|
|
162
|
+
comment_id: existing.id,
|
|
163
|
+
body: body,
|
|
164
|
+
});
|
|
165
|
+
} else {
|
|
166
|
+
await github.rest.issues.createComment({
|
|
167
|
+
owner: context.repo.owner,
|
|
168
|
+
repo: context.repo.repo,
|
|
169
|
+
issue_number: context.issue.number,
|
|
170
|
+
body: body,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
# Fork branches cannot be modified reliably. If artifacts reach the trusted base,
|
|
175
|
+
# remove them through a pull request so branch protections remain enforced.
|
|
176
|
+
cleanup-after-merge:
|
|
177
|
+
concurrency:
|
|
178
|
+
group: cleanup-pr-artifacts-${{ github.event.pull_request.base.ref }}
|
|
179
|
+
cancel-in-progress: false
|
|
180
|
+
if: >-
|
|
181
|
+
github.event_name == 'pull_request_target' &&
|
|
182
|
+
github.event.action == 'closed' &&
|
|
183
|
+
github.event.pull_request.merged == true
|
|
184
|
+
runs-on: ubuntu-latest
|
|
185
|
+
permissions:
|
|
186
|
+
contents: write
|
|
187
|
+
pull-requests: write
|
|
188
|
+
steps:
|
|
189
|
+
- uses: actions/checkout@v7
|
|
190
|
+
with:
|
|
191
|
+
ref: ${{ github.event.pull_request.base.ref }}
|
|
192
|
+
token: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC }}
|
|
193
|
+
|
|
194
|
+
- name: Create or update cleanup PR
|
|
195
|
+
id: cleanup
|
|
196
|
+
env:
|
|
197
|
+
BASE_REF: ${{ github.event.pull_request.base.ref }}
|
|
198
|
+
CLEANUP_BRANCH: automation/remove-pr-artifacts
|
|
199
|
+
GH_TOKEN: ${{ secrets.OPENHANDS_BOT_GITHUB_PAT_PUBLIC }}
|
|
200
|
+
run: |
|
|
201
|
+
if [ ! -d ".pr" ]; then
|
|
202
|
+
echo "created=false" >> "$GITHUB_OUTPUT"
|
|
203
|
+
echo "::notice::No .pr/ directory to remove from $BASE_REF"
|
|
204
|
+
exit 0
|
|
205
|
+
fi
|
|
206
|
+
|
|
207
|
+
git config user.name "allhands-bot"
|
|
208
|
+
git config user.email "allhands-bot@users.noreply.github.com"
|
|
209
|
+
git fetch origin \
|
|
210
|
+
"+refs/heads/$CLEANUP_BRANCH:refs/remotes/origin/$CLEANUP_BRANCH" || true
|
|
211
|
+
git checkout -B "$CLEANUP_BRANCH"
|
|
212
|
+
git rm -rf .pr/
|
|
213
|
+
git commit \
|
|
214
|
+
-m "chore: remove merged PR artifacts" \
|
|
215
|
+
-m "Co-authored-by: openhands <openhands@all-hands.dev>"
|
|
216
|
+
git push --force-with-lease origin "HEAD:$CLEANUP_BRANCH"
|
|
217
|
+
|
|
218
|
+
cleanup_pr_url=$(gh pr list \
|
|
219
|
+
--base "$BASE_REF" \
|
|
220
|
+
--head "$CLEANUP_BRANCH" \
|
|
221
|
+
--state open \
|
|
222
|
+
--json url \
|
|
223
|
+
--jq '.[0].url')
|
|
224
|
+
|
|
225
|
+
if [ -z "$cleanup_pr_url" ]; then
|
|
226
|
+
cleanup_pr_url=$(gh pr create \
|
|
227
|
+
--base "$BASE_REF" \
|
|
228
|
+
--head "$CLEANUP_BRANCH" \
|
|
229
|
+
--title "chore: remove merged PR artifacts" \
|
|
230
|
+
--body-file - <<EOF
|
|
231
|
+
## Why
|
|
232
|
+
|
|
233
|
+
Temporary \`.pr/\` artifacts reached \`$BASE_REF\` through one or more merged PRs.
|
|
234
|
+
|
|
235
|
+
## Summary
|
|
236
|
+
|
|
237
|
+
- Remove the temporary \`.pr/\` directory from \`$BASE_REF\`.
|
|
238
|
+
|
|
239
|
+
## How to Test
|
|
240
|
+
|
|
241
|
+
- Confirm this PR only deletes files under \`.pr/\`.
|
|
242
|
+
- Let the required checks validate the cleanup commit.
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
_This PR was automatically created by the PR Artifacts workflow._
|
|
247
|
+
EOF
|
|
248
|
+
)
|
|
249
|
+
fi
|
|
250
|
+
|
|
251
|
+
echo "created=true" >> "$GITHUB_OUTPUT"
|
|
252
|
+
echo "pr_url=$cleanup_pr_url" >> "$GITHUB_OUTPUT"
|
|
253
|
+
echo "::notice::Cleanup PR ready: $cleanup_pr_url"
|
|
254
|
+
|
|
255
|
+
- name: Update source PR comment
|
|
256
|
+
if: steps.cleanup.outputs.created == 'true'
|
|
257
|
+
uses: actions/github-script@v9
|
|
258
|
+
env:
|
|
259
|
+
CLEANUP_PR_URL: ${{ steps.cleanup.outputs.pr_url }}
|
|
260
|
+
with:
|
|
261
|
+
script: |
|
|
262
|
+
const marker = '<!-- pr-artifacts-notice -->';
|
|
263
|
+
const body = `${marker}
|
|
264
|
+
🧹 **PR Artifact Cleanup Queued**
|
|
265
|
+
|
|
266
|
+
The \`.pr/\` directory reached \`${context.payload.pull_request.base.ref}\` after merge. A cleanup PR has been opened or updated: ${process.env.CLEANUP_PR_URL}
|
|
267
|
+
`;
|
|
268
|
+
|
|
269
|
+
const comments = await github.paginate(
|
|
270
|
+
github.rest.issues.listComments,
|
|
271
|
+
{
|
|
272
|
+
owner: context.repo.owner,
|
|
273
|
+
repo: context.repo.repo,
|
|
274
|
+
issue_number: context.issue.number,
|
|
275
|
+
per_page: 100,
|
|
276
|
+
},
|
|
277
|
+
);
|
|
278
|
+
const existing = comments.find(c => c.body.includes(marker));
|
|
279
|
+
|
|
280
|
+
if (existing) {
|
|
281
|
+
await github.rest.issues.updateComment({
|
|
282
|
+
owner: context.repo.owner,
|
|
283
|
+
repo: context.repo.repo,
|
|
284
|
+
comment_id: existing.id,
|
|
285
|
+
body: body,
|
|
286
|
+
});
|
|
287
|
+
} else {
|
|
288
|
+
await github.rest.issues.createComment({
|
|
289
|
+
owner: context.repo.owner,
|
|
290
|
+
repo: context.repo.repo,
|
|
291
|
+
issue_number: context.issue.number,
|
|
292
|
+
body: body,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
@@ -17,13 +17,15 @@ jobs:
|
|
|
17
17
|
validate-pr-description:
|
|
18
18
|
name: Validate PR description
|
|
19
19
|
# Draft PRs may still have incomplete descriptions; validate when review starts.
|
|
20
|
-
# Release PRs are generated by
|
|
20
|
+
# Release and artifact-cleanup PRs are generated by trusted workflows without
|
|
21
21
|
# the standard human-authored PR template.
|
|
22
22
|
if: >-
|
|
23
23
|
github.event.pull_request.draft == false &&
|
|
24
24
|
github.event.pull_request.user.login != 'dependabot[bot]' &&
|
|
25
25
|
!(github.event.pull_request.head.repo.full_name == github.repository &&
|
|
26
|
-
startsWith(github.event.pull_request.head.ref, 'release-please-')
|
|
26
|
+
(startsWith(github.event.pull_request.head.ref, 'release-please-') ||
|
|
27
|
+
(github.event.pull_request.base.ref == 'main' &&
|
|
28
|
+
github.event.pull_request.head.ref == 'automation/remove-pr-artifacts')))
|
|
27
29
|
runs-on: ubuntu-latest
|
|
28
30
|
steps:
|
|
29
31
|
- name: Checkout trusted workflow scripts
|
|
@@ -10,12 +10,11 @@ This repository owns the public registry of reusable OpenHands skills, plugins,
|
|
|
10
10
|
|
|
11
11
|
Related repositories have distinct responsibilities:
|
|
12
12
|
|
|
13
|
-
- [`OpenHands/software-agent-sdk`](https://github.com/OpenHands/software-agent-sdk) owns the Python SDK, Agent Server, agent/tool behavior, conversations, workspaces, events, and
|
|
14
|
-
- [`OpenHands/typescript-client`](https://github.com/OpenHands/typescript-client) owns the browser-compatible typed Agent Server client.
|
|
13
|
+
- [`OpenHands/software-agent-sdk`](https://github.com/OpenHands/software-agent-sdk) owns the Python SDK, Agent Server, agent/tool behavior, conversations, workspaces, events, canonical API, and browser-compatible TypeScript Agent Server client under `clients/typescript/`.
|
|
15
14
|
- [`OpenHands/OpenHands`](https://github.com/OpenHands/OpenHands) owns Agent Canvas UI and local-stack orchestration.
|
|
16
15
|
- [`OpenHands/automation`](https://github.com/OpenHands/automation) owns scheduling, webhooks, run history, dispatch, and sandbox lifecycle orchestration.
|
|
17
16
|
|
|
18
|
-
Put reusable skills, plugins, automations, and integrations here; put backend execution behavior
|
|
17
|
+
Put reusable skills, plugins, automations, and integrations here; put backend execution behavior and typed API access in the SDK, application UI in Agent Canvas, and scheduling/dispatch lifecycle code in `automation`. If a PR is opened in the wrong repository, explicitly recommend closing and moving it to the owning repository. PRs must follow this repository's applicable contribution and code-review guidance.
|
|
19
18
|
|
|
20
19
|
## What this repo contains
|
|
21
20
|
|
|
@@ -118,6 +117,31 @@ When editing or adding skills in this repo, follow these rules (and add new skil
|
|
|
118
117
|
- `plugins/release-notes` now has a standalone validator at `plugins/release-notes/scripts/validate_release_notes.py`; it rebuilds the deterministic tag-range context, fails if a change bullet omits explicit PR/commit refs or matching author handles, and enforces full PR/author coverage by appending a compact `### 🔎 Small Fixes/Internal Changes` appendix grouped by author when the agent omits lower-signal items. New contributor detection in `generate_release_notes.py` should use merged PR history for human authors (excluding bots) rather than commit-author lookup.
|
|
119
118
|
|
|
120
119
|
|
|
120
|
+
## PR-specific documents (`.pr/`)
|
|
121
|
+
|
|
122
|
+
When working on a PR that requires design documents, live-test logs, development-only scripts, or other temporary artifacts that should **not** be merged to `main`, store them in a `.pr/` directory at the repository root.
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
mkdir -p .pr
|
|
126
|
+
|
|
127
|
+
.pr/
|
|
128
|
+
├── design.md # Design decisions and architecture notes
|
|
129
|
+
├── analysis.md # Investigation or debugging notes
|
|
130
|
+
└── notes.md # Any other PR-specific content
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
The `PR Artifacts` workflow (`.github/workflows/pr-artifacts.yml`) owns the lifecycle of this directory:
|
|
134
|
+
|
|
135
|
+
1. **Notification**: When a PR contains `.pr/`, a single comment is posted to the PR conversation alerting reviewers.
|
|
136
|
+
2. **Auto-cleanup on approval**: For same-repository PRs, the directory is automatically removed by a follow-up commit when the PR is approved.
|
|
137
|
+
3. **Post-merge cleanup**: If artifacts reach `main`, including through a fork PR, the workflow opens or updates a cleanup PR against `main`.
|
|
138
|
+
|
|
139
|
+
Important notes:
|
|
140
|
+
|
|
141
|
+
- Do not put anything in `.pr/` that needs to be preserved.
|
|
142
|
+
- The `.pr/` check is informational during development; it posts a notice rather than blocking the PR.
|
|
143
|
+
- Cleanup PRs follow the normal review and required-check protections for `main`.
|
|
144
|
+
|
|
121
145
|
## CI / validation gotchas
|
|
122
146
|
|
|
123
147
|
- The test suite expects **every directory under `skills/`** to be listed in a marketplace. If you add a new skill (or rebase onto a main branch that added skills), update the appropriate marketplace file or CI will fail with `Skills missing from marketplace: [...]`.
|
|
@@ -96,7 +96,7 @@ The JS and Python versions are kept in lock-step by `release-please` and guarded
|
|
|
96
96
|
## Extensions Catalog
|
|
97
97
|
|
|
98
98
|
<!-- BEGIN AUTO-GENERATED CATALOG -->
|
|
99
|
-
This repository contains **2 marketplace(s)** with **
|
|
99
|
+
This repository contains **2 marketplace(s)** with **72 extensions** (62 skills, 10 plugins).
|
|
100
100
|
|
|
101
101
|
### large-codebase
|
|
102
102
|
|
|
@@ -115,7 +115,7 @@ OpenHands skills for interacting, improving, and refactoring large codebases
|
|
|
115
115
|
|
|
116
116
|
Official skills and plugins for OpenHands — the open-source AI software engineer.
|
|
117
117
|
|
|
118
|
-
**
|
|
118
|
+
**68 extensions** (60 skills, 8 plugins)
|
|
119
119
|
|
|
120
120
|
| Name | Type | Description | Commands |
|
|
121
121
|
|------|------|-------------|----------|
|
|
@@ -141,11 +141,14 @@ Official skills and plugins for OpenHands — the open-source AI software engine
|
|
|
141
141
|
| github | skill | Interact with GitHub repositories, pull requests, issues, and workflows using the GITHUB_TOKEN environment variable a... | — |
|
|
142
142
|
| github-actions | skill | Create, debug, and test GitHub Actions workflows and custom actions. Use when building CI/CD pipelines, automating wo... | — |
|
|
143
143
|
| github-agents-md-maintainer | skill | Create an automation that keeps AGENTS.md current in one or more GitHub repositories. On a schedule an agent reads th... | `/agents-md:setup` |
|
|
144
|
+
| github-delivery-watchdog | skill | Periodically check pull requests and merge only current heads with independent review, tests, and passing CI. | `/github-delivery-watchdog` |
|
|
144
145
|
| github-issue-to-pr | skill | Create an automation that implements GitHub issues when a configurable trigger label is applied. Clones the default b... | `/issue-to-pr:setup` |
|
|
146
|
+
| github-issue-triage | skill | Prioritize open issues and establish acceptance criteria before marking them ready for development. | `/github-issue-triage` |
|
|
145
147
|
| github-pr-review | skill | Post structured PR reviews to GitHub with inline comments/suggestions in a single API call. | `/github-pr-review` |
|
|
146
148
|
| github-pr-reviewer | skill | Create an automation that reviews GitHub pull requests when they are opened or updated. Inspects the diff, changed fi... | `/pr-reviewer:setup` |
|
|
147
149
|
| github-repo-monitor | skill | Create a cron automation that polls a GitHub repository for issue and PR comments containing a configurable trigger p... | `/github-monitor:poll` |
|
|
148
150
|
| gitlab | skill | Interact with GitLab repositories, merge requests, and APIs using the GITLAB_TOKEN environment variable. Use when wor... | — |
|
|
151
|
+
| gitlab-issue-to-mr | skill | Create an automation that implements GitLab issues when a configurable trigger label is applied. Clones the default b... | `/issue-to-mr:setup` |
|
|
149
152
|
| incident-retrospective | skill | Create an automation that drafts incident retrospectives by gathering incident-channel messages from Slack, collectin... | `/incident-retro:setup` |
|
|
150
153
|
| iterate | skill | Iterate on a GitHub pull request — drive it through CI, code review, and QA until merge-ready. Monitors state, fixes ... | `/iterate`, `/verify`, `/babysit` |
|
|
151
154
|
| jira-issue-to-pr | skill | Deploy a cron-based OpenHands automation that watches a Jira Cloud project for issues labeled with a configurable lab... | — |
|
|
@@ -162,6 +165,7 @@ Official skills and plugins for OpenHands — the open-source AI software engine
|
|
|
162
165
|
| openhands | plugin | Unified OpenHands plugin — bundles Cloud CLI, REST API (openhands-api), and Automations (openhands-automation) into a... | `/openhands-cloud` |
|
|
163
166
|
| openhands-api | skill | Use the OpenHands Cloud REST API (V1) and agent-server APIs to create and manage Cloud or local backend conversations... | — |
|
|
164
167
|
| openhands-automation | skill | Create and manage OpenHands automations - scheduled tasks that run in sandboxes. Use the prompt preset to create auto... | `/automation:create` |
|
|
168
|
+
| openhands-enterprise-troubleshooting | skill | Diagnose and resolve common issues on OpenHands Enterprise self-hosted installations. Covers sandbox startup failures... | — |
|
|
165
169
|
| openhands-sdk | skill | Reference skill for the OpenHands Software Agent SDK - build AI agents with custom tools, LLM configuration, conversa... | `/sdk` |
|
|
166
170
|
| pdflatex | skill | Install and use pdflatex to compile LaTeX documents into PDFs on Linux. Use when generating academic papers, research... | — |
|
|
167
171
|
| plain-english-content | skill | Write and edit clear, accessible prose in a plain English content style: active voice, front-loaded content, sentence... | — |
|