openhands-extensions 0.35.0__tar.gz → 0.37.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.35.0 → openhands_extensions-0.37.0}/.agents/skills/custom-codereview-guide.md +21 -5
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/dependabot.yml +4 -0
- openhands_extensions-0.37.0/.github/workflows/kanban-app.yml +34 -0
- openhands_extensions-0.37.0/.release-please-manifest.json +3 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/AGENTS.md +36 -1
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/PKG-INFO +1 -1
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/README.md +6 -2
- openhands_extensions-0.37.0/apps/catalog.json +18 -0
- openhands_extensions-0.37.0/apps/kanban-manager/.gitignore +2 -0
- openhands_extensions-0.37.0/apps/kanban-manager/.npmignore +4 -0
- openhands_extensions-0.37.0/apps/kanban-manager/LICENSE +21 -0
- openhands_extensions-0.37.0/apps/kanban-manager/README.md +184 -0
- openhands_extensions-0.37.0/apps/kanban-manager/build.mjs +122 -0
- openhands_extensions-0.37.0/apps/kanban-manager/canvas-extension.json +19 -0
- openhands_extensions-0.37.0/apps/kanban-manager/extension.js +3744 -0
- openhands_extensions-0.37.0/apps/kanban-manager/package-lock.json +878 -0
- openhands_extensions-0.37.0/apps/kanban-manager/package.json +17 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/automation/main.py +665 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/automation/vibectl.py +214 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/automation/vibestore.py +649 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/board.css +811 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/extension.js +1685 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/live.js +320 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/manager.js +206 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/managerchat.js +173 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/markup.js +216 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/setup.css +91 -0
- openhands_extensions-0.37.0/apps/kanban-manager/src/store.js +625 -0
- openhands_extensions-0.37.0/apps/kanban-manager/test/extension.test.js +1395 -0
- openhands_extensions-0.37.0/apps/kanban-manager/test/manager.test.mjs +125 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/README.md +10 -4
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/bundle-index.js +9 -3
- openhands_extensions-0.37.0/automations/catalog/github-comment-cleanup/manifest.json +98 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/github-issue-to-pr/manifest.json +4 -4
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/gitlab-issue-to-mr/manifest.json +4 -4
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/news-digest/manifest.json +1 -1
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog-index.js +2 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog.schema.json +2 -2
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/index.d.ts +21 -2
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/interface.json +14 -1
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/interface.schema.json +42 -6
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/marketplaces/openhands-extensions.json +59 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/package.json +1 -1
- openhands_extensions-0.37.0/plugins/github-comment-cleanup/.claude-plugin/plugin.json +101 -0
- openhands_extensions-0.37.0/plugins/github-comment-cleanup/scripts/main.py +640 -0
- openhands_extensions-0.37.0/plugins/github-comment-cleanup/scripts/plugin_runner.py +27 -0
- openhands_extensions-0.37.0/plugins/github-comment-cleanup/scripts/selection.py +123 -0
- openhands_extensions-0.37.0/plugins/github-comment-cleanup/skills/comment-cleanup/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.37.0/plugins/github-comment-cleanup/skills/comment-cleanup/README.md +21 -0
- openhands_extensions-0.37.0/plugins/github-comment-cleanup/skills/comment-cleanup/SKILL.md +133 -0
- openhands_extensions-0.37.0/plugins/github-comment-cleanup/skills/comment-cleanup/references/patterns.md +166 -0
- openhands_extensions-0.37.0/plugins/github-comment-cleanup/skills/comment-cleanup/scripts/comment_syntax.py +166 -0
- openhands_extensions-0.37.0/plugins/github-comment-cleanup/skills/comment-cleanup/scripts/verify_comment_only.py +86 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-automation/README.md +7 -5
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-automation/SKILL.md +220 -22
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/README.md +5 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/action.yml +5 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/scripts/agent_script.py +6 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/scripts/prompt.py +19 -1
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/skills/github/README.md +9 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/skills/github/SKILL.md +19 -0
- openhands_extensions-0.37.0/plugins/vulnerability-remediation/skills/github/scripts/github_client.py +402 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/pyproject.toml +8 -1
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/python/openhands_extensions/_version.py +1 -1
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/scripts/build-automation-catalog.mjs +2 -2
- openhands_extensions-0.37.0/skills/cortex-training-rl/.claude-plugin/plugin.json +25 -0
- openhands_extensions-0.37.0/skills/cortex-training-rl/README.md +24 -0
- openhands_extensions-0.37.0/skills/cortex-training-rl/SKILL.md +135 -0
- openhands_extensions-0.37.0/skills/cortex-training-rl/commands/cortex-training-rl.md +8 -0
- openhands_extensions-0.37.0/skills/cortex-training-rl/references/monitoring.md +131 -0
- openhands_extensions-0.37.0/skills/cortex-training-rl/references/troubleshooting.md +122 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-agents-md-maintainer/scripts/main.py +13 -11
- openhands_extensions-0.37.0/skills/github-comment-cleanup/.claude-plugin/plugin.json +19 -0
- openhands_extensions-0.37.0/skills/github-comment-cleanup/README.md +23 -0
- openhands_extensions-0.37.0/skills/github-comment-cleanup/SKILL.md +90 -0
- openhands_extensions-0.37.0/skills/github-comment-cleanup/commands/comment-cleanup-setup.md +8 -0
- openhands_extensions-0.37.0/skills/github-comment-cleanup/references/state-schema.md +124 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/gitlab-issue-to-mr/scripts/main.py +13 -11
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/index.js +45 -5
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/jira-issue-to-pr/scripts/main.py +8 -2
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/news-digest/scripts/main.py +13 -11
- openhands_extensions-0.37.0/skills/show-me/.claude-plugin/plugin.json +18 -0
- openhands_extensions-0.37.0/skills/show-me/LICENSE +202 -0
- openhands_extensions-0.37.0/skills/show-me/NOTICE +10 -0
- openhands_extensions-0.37.0/skills/show-me/README.md +20 -0
- openhands_extensions-0.37.0/skills/show-me/SKILL.md +120 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-channel-monitor/SKILL.md +1 -1
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-channel-monitor/scripts/main.py +13 -11
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/software-factory/README.md +3 -1
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/software-factory/SKILL.md +13 -2
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/software-factory/scripts/factory.py +83 -7
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_apps_catalog.py +12 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_agents_md_maintainer.py +38 -0
- openhands_extensions-0.37.0/tests/test_github_comment_cleanup.py +635 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_skill_installation.py +22 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_gitlab_issue_to_mr.py +38 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_interface_manifest.py +19 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_jira_issue_to_pr.py +26 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_news_digest.py +38 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_pr_review_prompt.py +86 -2
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_pr_review_prompt_injection.py +8 -1
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_skills_catalog.py +16 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_slack_channel_monitor.py +37 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_software_factory_script.py +131 -1
- openhands_extensions-0.35.0/.release-please-manifest.json +0 -3
- openhands_extensions-0.35.0/apps/catalog.json +0 -10
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.claude-plugin/marketplace.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/pull_request_template.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/release.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/scripts/check_pr_description.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/scripts/markdown_sections.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/scripts/refresh_linked_pr_checks.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/build-vscode-app.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/check-extensions.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/deprecation-check.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/issue-readiness-check.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/npm-publish.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/pr-artifacts.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/pr-description-check.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/pr.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/pypi-publish.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/release.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/tests.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.github/workflows/vulnerability-scan.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.gitignore +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/.npmignore +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/LICENSE +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/MIGRATION.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/analysis_results.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/apps/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/apps/index.d.ts +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/apps/index.js +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/apps/vscode/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/apps/vscode/canvas-extension.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/apps/vscode/extension.js +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/apps/vscode/scripts/package.mjs +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/custom-automation/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/github-agents-md-maintainer/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/github-delivery-watchdog/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/github-issue-triage/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/github-pr-reviewer/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/github-repo-monitor/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/github-stale-ci-pr-closer/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/incident-retrospective-drafter/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/jira-issue-to-bitbucket-pr/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/jira-issue-to-gitlab-mr/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/jira-issue-to-pr/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/linear-issue-to-bitbucket-pr/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/linear-issue-to-github-pr/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/linear-issue-to-gitlab-mr/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/linear-triage-assistant/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/qa-changes/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/research-brief-writer/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/slack-channel-monitor/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/slack-github-linear-daily-organization.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/slack-standup-digest/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/catalog/upstream-fork-sync/manifest.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/automations/index.js +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/index.d.ts +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/index.js +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/airtable.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/apify.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/asana.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/atlassian-rovo.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/atlassian.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/bitbucket.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/box.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/brave-search.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/browser-mcp.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/canva.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/clickhouse.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/cloudflare-bindings.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/cloudflare-browser-rendering.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/cloudflare-builds.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/cloudflare-docs.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/cloudflare-observability.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/confluence.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/datadog.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/deepwiki.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/discord.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/elevenlabs.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/everything.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/exa.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/fetch.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/figma.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/filesystem.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/firecrawl.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/git.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/github.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/gitlab.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/gmail.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/google-calendar.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/google-docs.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/google-drive.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/google-sheets.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/granola.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/hubspot.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/huggingface.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/intercom.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/jira.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/kagi.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/linear.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/memory.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/microsoft-outlook.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/microsoft-teams.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/miro.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/monday.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/mongodb.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/neon.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/netlify.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/notion.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/obsidian.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/okta.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/onedrive.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/ordinal.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/paypal.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/playwright.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/posthog.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/quickbooks.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/redis.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/reportportal.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/resend.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/salesforce.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/sentry.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/sequential-thinking.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/sharepoint.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/slack.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/sonarqube.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/stripe.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/supabase.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/superhuman-mail.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/tavily.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/time.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/trello.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/vanta.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/vercel.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/webflow.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/xero.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog/zoom.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog-index.js +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/catalog.schema.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/icons/salesforce.svg +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/icons/slack.svg +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/index.d.ts +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/integrations/index.js +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/marketplaces/large-codebase.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/city-weather/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/city-weather/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/city-weather/commands/now.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/references/troubleshooting.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/skills/build-setup/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/skills/cobol-modernization/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/skills/mainframe-removal/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/skills/mainframe-removal/references/cics-transformation-examples.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +0 -0
- {openhands_extensions-0.35.0/plugins/vulnerability-remediation/skills/github → openhands_extensions-0.37.0/plugins/github-comment-cleanup}/scripts/github_client.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/issue-duplicate-checker/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/issue-duplicate-checker/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/issue-duplicate-checker/action.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.cjs +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.cjs +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/magic-test/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/magic-test/skills/magic-word/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/migration-scoring/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/migration-scoring/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/migration-scoring/skills/migration-mapping/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/migration-scoring/skills/migration-report/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/migration-scoring/skills/migration-scoring/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/migration-scoring/skills/score-quality/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/migration-scoring/skills/score-style/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/references/criteria.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/agent-readiness-report/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/agent-readiness-report/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/agent-readiness-report/references/criteria.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/improve-agent-readiness/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/improve-agent-readiness/references/criteria.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/setup-agents-md/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/setup-agents-md/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/setup-openhands/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/setup-openhands/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/setup-pr-review/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/onboarding/skills/setup-pr-review/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/commands/create.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/commands/openhands-cloud.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/scripts/run.sh +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-api/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-api/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-api/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-api/references/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-api/references/TROUBLESHOOTING.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-api/references/example_prompt.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-api/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-api/scripts/openhands_api.ts +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-automation/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-automation/commands/automation-create.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-automation/references/ab-testing.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-automation/references/custom-automation.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-automation/references/security.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-automation/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-sdk/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-sdk/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-sdk/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/openhands/skills/openhands-sdk/commands/sdk.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/scripts/evaluate_review.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/code-review/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/code-review/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/code-review/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/code-review/commands/codereview-roasted.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/code-review/commands/codereview.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/code-review/references/risk-evaluation.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/code-review/references/supply-chain-security.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/github-pr-review/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/github-pr-review/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/github-pr-review/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/github-pr-review/commands/github-pr-review.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/skills/github-pr-review/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/workflows/pr-review-by-openhands.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/pr-review/workflows/pr-review-evaluation.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/action.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/scripts/agent_script.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/scripts/evaluate_qa_changes.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/scripts/prompt.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/skills/qa-changes/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/skills/qa-changes/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/skills/qa-changes/commands/qa-changes.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/qa-changes/workflows/qa-changes-evaluation.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/action.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/commands/release-notes.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/scripts/agent_script.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/scripts/generate_release_notes.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/scripts/prompt.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/scripts/validate_release_notes.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/skills/release-notes/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/skills/release-notes/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/skills/release-notes/commands/release-notes.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/release-notes/workflows/release-notes.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/runtime-api-configs/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/runtime-api-configs/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/runtime-api-configs/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/runtime-api-configs/scripts/warm_runtime_configs.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/runtime-api-configs/tests/test_warm_runtime_configs.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/action.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/skills/github/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/skills/github/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/skills/github/scripts/agent_conversation.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/skills/security/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/skills/security/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/skills/security/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/python/openhands_extensions/__init__.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/python/openhands_extensions/deprecation.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/python/openhands_extensions/integration_models.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/python/openhands_extensions/integrations.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/release-please-config.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/scripts/build-integration-catalog.mjs +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/scripts/build-skills-catalog.mjs +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/scripts/check_deprecations.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/scripts/check_plugin_resources.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/scripts/sync_extensions.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/scripts/sync_openhands_sdk_skill.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/add-javadoc/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/add-javadoc/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/add-javadoc/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/add-javadoc/references/example.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/add-skill/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/add-skill/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/add-skill/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/add-skill/scripts/fetch_skill.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-canvas-environment/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-canvas-environment/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-canvas-environment/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-creator/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-creator/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-creator/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-creator/commands/agent-creator.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-creator/references/fallback.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-memory/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-memory/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-memory/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-memory/commands/remember.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-sdk-builder/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-sdk-builder/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-sdk-builder/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/agent-sdk-builder/commands/agent-builder.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/azure-devops/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/azure-devops/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/azure-devops/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/bitbucket/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/bitbucket/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/bitbucket/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/bitbucket-cloud/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/bitbucket-cloud/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/bitbucket-cloud/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/bitbucket-data-center/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/bitbucket-data-center/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/bitbucket-data-center/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/references/acceptance-checklist.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/references/backend-safety.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/references/connections.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/references/native-design.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/references/packaging-recipes.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/references/sidecar-pattern.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/references/testing-and-installation.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/references/v1-contract.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/scripts/validate-extension.mjs +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/canvas-extension-api/scripts/validate-extension.test.mjs +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/code-simplifier/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/code-simplifier/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/code-simplifier/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/code-simplifier/commands/simplify.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/code-simplifier/references/code-quality-review.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/code-simplifier/references/code-reuse-review.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/code-simplifier/references/efficiency-review.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/datadog/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/datadog/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/datadog/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/datadog/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/deno/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/deno/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/deno/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/deno/references/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/discord/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/discord/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/discord/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/discord/__init__.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/discord/references/REFERENCE.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/discord/scripts/__init__.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/discord/scripts/_http.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/discord/scripts/post_webhook.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/discord/scripts/send_message.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/docker/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/docker/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/docker/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/evidence-based-citations/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/evidence-based-citations/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/evidence-based-citations/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/flarglebargle/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/flarglebargle/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/flarglebargle/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/frontend-design/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/frontend-design/LICENSE.txt +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/frontend-design/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/frontend-design/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-actions/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-actions/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-actions/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-agents-md-maintainer/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-agents-md-maintainer/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-agents-md-maintainer/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-agents-md-maintainer/commands/agents-md-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-agents-md-maintainer/references/state-schema.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-agents-md-maintainer/scripts/github_client.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-delivery-watchdog/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-delivery-watchdog/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-delivery-watchdog/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-delivery-watchdog/commands/github-delivery-watchdog.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-delivery-watchdog/scripts/github_client.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-delivery-watchdog/scripts/worker.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-to-pr/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-to-pr/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-to-pr/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-to-pr/commands/issue-to-pr-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-to-pr/references/state-schema.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-to-pr/scripts/agent_conversation.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-to-pr/scripts/github_client.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-to-pr/scripts/main.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-to-pr/scripts/worker.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-triage/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-triage/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-triage/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-triage/commands/github-issue-triage.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-triage/scripts/agent_conversation.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-triage/scripts/github_client.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-triage/scripts/triage_publication.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-issue-triage/scripts/worker.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/commands/pr-reviewer-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/references/state-schema.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/scripts/agent_conversation.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/scripts/github_client.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/scripts/main.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/scripts/maintainer_handoff.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/scripts/publication.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/scripts/worker.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-pr-reviewer/tests/test_main.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-repo-monitor/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-repo-monitor/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-repo-monitor/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-repo-monitor/commands/github-monitor-poll.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-repo-monitor/references/github-api.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-repo-monitor/references/state-schema.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-repo-monitor/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-repo-monitor/scripts/github_client.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-repo-monitor/scripts/main.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-repo-monitor/tests/test_main.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-stale-ci-pr-closer/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-stale-ci-pr-closer/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-stale-ci-pr-closer/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-stale-ci-pr-closer/commands/github-stale-ci-pr-closer.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-stale-ci-pr-closer/scripts/worker.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/github-stale-ci-pr-closer/tests/test_worker.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/gitlab/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/gitlab/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/gitlab/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/gitlab-issue-to-mr/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/gitlab-issue-to-mr/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/gitlab-issue-to-mr/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/gitlab-issue-to-mr/commands/issue-to-mr-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/gitlab-issue-to-mr/references/state-schema.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/incident-retrospective/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/incident-retrospective/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/incident-retrospective/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/incident-retrospective/commands/incident-retro-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/index.d.ts +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/.codex-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/.plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/commands/babysit.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/commands/iterate.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/commands/verify.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/references/heuristics.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/references/verification.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/iterate/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/jira-issue-to-pr/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/jira-issue-to-pr/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/jira-issue-to-pr/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/jira-issue-to-pr/references/setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/jira-issue-to-pr/scripts/setup_webhook.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/jupyter/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/jupyter/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/jupyter/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/kubernetes/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/kubernetes/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/kubernetes/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/kubernetes/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/learn-from-code-review/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/learn-from-code-review/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/learn-from-code-review/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/learn-from-code-review/commands/learn-from-reviews.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/linear/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/linear/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/linear/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/linear/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/linear-triage/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/linear-triage/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/linear-triage/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/linear-triage/commands/linear-triage-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/news-digest/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/news-digest/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/news-digest/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/news-digest/commands/news-digest-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/news-digest/references/state-schema.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/notion/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/notion/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/notion/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/notion/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/npm/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/npm/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/npm/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/openhands-enterprise-troubleshooting/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/openhands-enterprise-troubleshooting/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/openhands-enterprise-troubleshooting/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/openhands-enterprise-troubleshooting/references/diagnostics.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/openhands-enterprise-troubleshooting/references/support-bundle-analysis.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/openhands-enterprise-troubleshooting/scripts/bundle_triage.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/pdflatex/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/pdflatex/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/pdflatex/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/plain-english-content/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/plain-english-content/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/plain-english-content/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/prd/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/prd/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/prd/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/prd/commands/prd.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/research-brief/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/research-brief/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/research-brief/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/research-brief/commands/research-brief-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/simplified-technical-english/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/simplified-technical-english/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/simplified-technical-english/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/skill-creator/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/skill-creator/LICENSE.txt +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/skill-creator/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/skill-creator/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/skill-creator/references/output-patterns.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/skill-creator/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/skill-creator/references/workflows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/skill-creator/scripts/init_skill.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/skill-creator/scripts/quick_validate.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-channel-monitor/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-channel-monitor/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-channel-monitor/commands/slack-monitor-poll.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-channel-monitor/references/slack-api.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-channel-monitor/references/state-schema.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-channel-monitor/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-standup-digest/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-standup-digest/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-standup-digest/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/slack-standup-digest/commands/standup-digest-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/software-factory/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/software-factory/commands/software-factory.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/spark-version-upgrade/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/spark-version-upgrade/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/spark-version-upgrade/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/ssh/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/ssh/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/ssh/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/ssh/references/windows.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/swift-linux/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/swift-linux/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/swift-linux/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/technical-writing/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/technical-writing/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/technical-writing/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/LICENSE.txt +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/theme-showcase.pdf +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/themes/arctic-frost.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/themes/botanical-garden.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/themes/desert-rose.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/themes/forest-canopy.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/themes/golden-hour.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/themes/midnight-galaxy.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/themes/modern-minimalist.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/themes/ocean-depths.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/themes/sunset-boulevard.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/theme-factory/themes/tech-innovation.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/ticket-to-code-change/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/ticket-to-code-change/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/ticket-to-code-change/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/ticket-to-code-change/commands/ticket-to-code-change-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/upstream-fork-sync/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/upstream-fork-sync/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/upstream-fork-sync/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/upstream-fork-sync/commands/upstream-fork-sync-setup.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/use-jev/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/use-jev/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/use-jev/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/uv/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/uv/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/uv/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/uv/references/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/vercel/.claude-plugin/plugin.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/vercel/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/skills/vercel/SKILL.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/fixtures/automations/capabilities.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/fixtures/automations/custom-automation.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/fixtures/automations/github-pr-reviewer.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/fixtures/automations/github-repo-monitor.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/fixtures/automations/incident-retrospective-drafter.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/fixtures/automations/upstream-fork-sync.json +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/github_automation_helpers.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_add_skill_installs_to_agents_dir.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_agent_conversation_dispatch.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_automation_llm_provenance.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_automation_setup.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_azure_devops_skill.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_catalog_schema.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_catalogs.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_check_pr_description.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_code_review_risk_evaluation.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_deprecations.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_automation_foundation.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_developer_delivery.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_issue_to_pr.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_pr_review_skill.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_repo_monitor.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_review_publication.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_reviewer_delivery.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_stale_ci_pr_closer.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_triage_delivery.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_github_watchdog_delivery.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_integration_catalog_in_sync.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_issue_duplicate_checker.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_jira_setup_webhook.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_live_integration_smoke.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_maintainer_handoff.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_openhands_api_python.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_plugin_manifest.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_pr_review_diff_payload.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_pr_review_feedback.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_pr_review_review_context.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_qa_changes.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_qa_changes_evaluation.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_refresh_linked_pr_checks.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_release_notes_generator.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_sdk_loading.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_skill_plugin_loading.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_skills_have_readme.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_sync_extensions.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_version_alignment.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_vscode_app.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/test_workflow_sync.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/tests/vscode-app.test.mjs +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/utils/analysis/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/utils/analysis/laminar_signals/README.md +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/utils/analysis/laminar_signals/analyze.py +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/utils/analysis/laminar_signals/templates/default.j2 +0 -0
- {openhands_extensions-0.35.0 → openhands_extensions-0.37.0}/utils/analysis/laminar_signals/templates/pr_review.j2 +0 -0
|
@@ -117,11 +117,27 @@ window.
|
|
|
117
117
|
|
|
118
118
|
### Dependencies and supply chain
|
|
119
119
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
120
|
+
Validate installation with the package manager and runtime used by the extension.
|
|
121
|
+
Temporary git pins and unreleased package APIs are blockers for merge unless the
|
|
122
|
+
PR is an explicit, coordinated stack that will replace them before release.
|
|
123
|
+
|
|
124
|
+
For dependency additions or updates, inspect every changed third-party npm or
|
|
125
|
+
PyPI version, including transitive lockfile changes. Require at least seven days
|
|
126
|
+
since publication of that exact version. Use registry publication/upload metadata
|
|
127
|
+
or the relevant artifact's `uv.lock` `upload-time`; a weekly bot schedule, an old
|
|
128
|
+
package name, or a passing install is not age evidence.
|
|
129
|
+
|
|
130
|
+
For an under-seven-day artifact, leave a COMMENT naming the package, version,
|
|
131
|
+
publication time, and source, and defer approval until it ages out or a maintainer
|
|
132
|
+
explicitly approves a narrowly documented exception. If publication time is
|
|
133
|
+
unavailable, ask for that evidence. Existing named first-party exemptions apply
|
|
134
|
+
only to those packages, not their third-party dependencies or blanket approval
|
|
135
|
+
of the lockfile. Apply this check before any dependency-bump fast path.
|
|
136
|
+
|
|
137
|
+
Flag removal or weakening of seven-day uv/Dependabot guards or new broad
|
|
138
|
+
exemptions. Dependabot security updates bypass cooldown, so review them under
|
|
139
|
+
the explicit maintainer-exception rule in `AGENTS.md`; agents cannot approve
|
|
140
|
+
their own bypass.
|
|
125
141
|
|
|
126
142
|
### Design context for deep changes
|
|
127
143
|
|
|
@@ -10,6 +10,8 @@ updates:
|
|
|
10
10
|
|
|
11
11
|
- package-ecosystem: npm
|
|
12
12
|
directory: /
|
|
13
|
+
cooldown:
|
|
14
|
+
default-days: 7
|
|
13
15
|
schedule:
|
|
14
16
|
interval: weekly
|
|
15
17
|
commit-message:
|
|
@@ -18,6 +20,8 @@ updates:
|
|
|
18
20
|
|
|
19
21
|
- package-ecosystem: pip
|
|
20
22
|
directory: /
|
|
23
|
+
cooldown:
|
|
24
|
+
default-days: 7
|
|
21
25
|
schedule:
|
|
22
26
|
interval: weekly
|
|
23
27
|
commit-message:
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
name: Kanban App
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
paths:
|
|
6
|
+
- "apps/kanban-manager/**"
|
|
7
|
+
- "skills/canvas-extension-api/scripts/validate-extension.mjs"
|
|
8
|
+
- ".github/workflows/kanban-app.yml"
|
|
9
|
+
push:
|
|
10
|
+
branches: [main]
|
|
11
|
+
paths:
|
|
12
|
+
- "apps/kanban-manager/**"
|
|
13
|
+
- ".github/workflows/kanban-app.yml"
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
check:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v7
|
|
23
|
+
- uses: actions/setup-node@v7
|
|
24
|
+
with:
|
|
25
|
+
node-version: "24"
|
|
26
|
+
cache: npm
|
|
27
|
+
cache-dependency-path: apps/kanban-manager/package-lock.json
|
|
28
|
+
- run: npm ci --ignore-scripts
|
|
29
|
+
working-directory: apps/kanban-manager
|
|
30
|
+
- run: npm run check
|
|
31
|
+
working-directory: apps/kanban-manager
|
|
32
|
+
- run: node skills/canvas-extension-api/scripts/validate-extension.mjs apps/kanban-manager
|
|
33
|
+
- name: Confirm the checked-in bundle is current
|
|
34
|
+
run: git diff --exit-code -- apps/kanban-manager/extension.js
|
|
@@ -137,7 +137,7 @@ When editing or adding skills in this repo, follow these rules (and add new skil
|
|
|
137
137
|
- Agent-driven plugins (for example `plugins/pr-review` and `plugins/release-notes`) use `uv run --with openhands-sdk --with openhands-tools ...` and require an `LLM_API_KEY` in addition to `GITHUB_TOKEN`.
|
|
138
138
|
- For OpenHands Cloud API guidance, automations, and CLI integration, use `plugins/openhands`. It is the canonical unified OpenHands plugin covering the V1 Cloud API, Automations API, and CLI. The individual skills (`skills/openhands-api`, `skills/openhands-automation`) are also available standalone.
|
|
139
139
|
- When reviewing or editing `skills/openhands-sdk`, validate copy-paste imports against the released packages with `uv run --with openhands-tools --with openhands-workspace --with openhands-agent-server python ...`. In the current released workspace package, the exported remote workspace classes are `APIRemoteWorkspace` / `OpenHandsCloudWorkspace`; `RemoteAPIWorkspace` is not available.
|
|
140
|
-
- For agent-driven plugin scripts, prefer `from openhands.sdk.plugin import PluginSource` and pass `plugins=[PluginSource(source=...)]` into `Conversation`.
|
|
140
|
+
- For agent-driven plugin scripts, prefer `from openhands.sdk.plugin import PluginSource` and pass `plugins=[PluginSource(source=...)]` into `Conversation`. `tests/test_skill_plugin_loading.py` also exercises `Plugin.load(...)` from `openhands.sdk.plugin`.
|
|
141
141
|
- `plugins/qa-changes/action.yml` now has a preflight guard for fork PRs in `pull_request` context: if the PR comes from a fork and `LLM_API_KEY` is unavailable (normal for forks), the action exits successfully with a clear skip notice instead of failing.
|
|
142
142
|
- `skills/bitbucket` should not tell agents to rewrite remotes proactively. In OpenHands, `BITBUCKET_TOKEN` is commonly kept in unencoded `user:token` form for API calls like `curl --user "$BITBUCKET_TOKEN" ...`; only split and URL-encode it when constructing a non-interactive HTTPS Git remote URL.
|
|
143
143
|
|
|
@@ -199,13 +199,48 @@ Important notes:
|
|
|
199
199
|
- The `code-review` and `codereview-roasted` skills have been merged into a single `code-review` skill. The `/codereview-roasted` trigger is kept as an alias for backward compatibility. The `review-style` action input is deprecated and ignored.
|
|
200
200
|
- `plugins/pr-review` supports an optional `require-evidence` action input that tells the reviewer to require end-to-end proof in the PR description that the code works; test output alone is not sufficient evidence.
|
|
201
201
|
- The corresponding `REQUIRE_EVIDENCE` env flag is consumed by `plugins/pr-review/scripts/agent_script.py` and injected into the review prompt via `plugins/pr-review/scripts/prompt.py`.
|
|
202
|
+
- `plugins/pr-review` supports an optional `require-pinned-actions` input (default `'false'`) that tells the reviewer to require commit-SHA pins on third-party actions in workflow and `action.yml` changes. The reviewed repository's owner is exempt; the `REQUIRE_PINNED_ACTIONS` env flag follows the same path as `REQUIRE_EVIDENCE`.
|
|
202
203
|
- `plugins/pr-review` exposes an `enable-uv-cache` input (default `'false'`) that toggles `setup-uv`'s GitHub Actions cache. Default stays off because a prompt-injected reviewer could poison a shared cache that higher-privilege workflows later consume; opt in only on single-tenant self-hosted runners. The README's "Caching and Security" section documents the threat model and recommends a host-level uv cache volume as the preferred alternative for self-hosted setups.
|
|
203
204
|
- GitHub review suggestions that only delete lines can look empty in `PullRequestReviewComment.body`; the rendered content is available via `bodyText`/`bodyHTML`, so review-context formatting should fall back there before treating a suggestion as empty.
|
|
204
205
|
- Prompt coverage for this behavior lives in `tests/test_pr_review_prompt.py`.
|
|
205
206
|
- `plugins/pr-review`'s `collect-feedback` input should append a short thumbs up/down footer to the main GitHub review body via `agent_script.py` / `prompt.py`, rather than posting a separate PR comment. `evaluate_review.py` should read feedback from review-body reactions while still tolerating legacy issue-comment markers.
|
|
207
|
+
- In `plugins/pr-review/scripts/prompt.py`, PR-derived text (title, head branch, description, review context, files manifest, and patches) goes through the private `_fence_untrusted()` helper, with one nonce per `format_prompt()` call. Keep new PR-derived prompt fields inside these regions; containment tests live in `tests/test_pr_review_prompt_injection.py`.
|
|
206
208
|
|
|
207
209
|
|
|
208
210
|
## When uncertain
|
|
209
211
|
|
|
210
212
|
- Prefer the official OpenHands docs on skills: https://docs.openhands.dev/overview/skills
|
|
211
213
|
- Prefer the SDK skill guide: https://docs.openhands.dev/sdk/guides/skill
|
|
214
|
+
|
|
215
|
+
## Dependency release-age policy
|
|
216
|
+
|
|
217
|
+
- Wait at least seven days after publication before adding or updating a
|
|
218
|
+
third-party npm or PyPI version, including transitive lockfile changes.
|
|
219
|
+
A weekly update schedule alone does not enforce this minimum age.
|
|
220
|
+
- Keep Dependabot `cooldown.default-days: 7` for npm and Python version
|
|
221
|
+
updates, and preserve `tool.uv.exclude-newer = "7 days"` where configured.
|
|
222
|
+
Existing named first-party exceptions do not exempt their third-party
|
|
223
|
+
dependencies. Do not add broad exemptions or disable the cutoff to make a
|
|
224
|
+
resolver succeed.
|
|
225
|
+
- Verify the exact version's publication/upload time from npm or PyPI metadata
|
|
226
|
+
(or artifact `upload-time` in `uv.lock`), not the package's creation date.
|
|
227
|
+
If age cannot be established, report the missing evidence rather than guess.
|
|
228
|
+
- Security updates can bypass Dependabot cooldown. An urgent exception needs
|
|
229
|
+
explicit maintainer approval recorded in the PR with the package, version,
|
|
230
|
+
advisory/reason, and publication time. Agents must not grant themselves an
|
|
231
|
+
exception. Keep overrides narrow and remove temporary exceptions afterward.
|
|
232
|
+
- Use the committed lock for reproducible installs; review newly resolved
|
|
233
|
+
artifacts before committing a lock update.
|
|
234
|
+
|
|
235
|
+
For manual npm dependency resolution, use npm >= 11.10 with
|
|
236
|
+
`npm install --min-release-age=7` (days), or verify registry timestamps before
|
|
237
|
+
committing the result. Older npm versions do not enforce this option. `npm ci`
|
|
238
|
+
replays the lock and is not proof that newly locked versions meet the age rule.
|
|
239
|
+
|
|
240
|
+
Use uv >= 0.9.25 for this policy. Older versions cannot parse the boolean
|
|
241
|
+
first-party exemptions and can discard the entire `[tool.uv]` table, including
|
|
242
|
+
`required-version`. Check `uv --version` before running `uv sync`, `uv lock`,
|
|
243
|
+
or `uv run`; this repository does not commit a lockfile to reject old parsers.
|
|
244
|
+
The named exemptions cover the released SDK, tools, workspace, and agent-server
|
|
245
|
+
packages used by the documented import checks; their third-party dependencies
|
|
246
|
+
still have the seven-day cutoff.
|
|
@@ -100,7 +100,7 @@ The JS and Python versions are kept in lock-step by `release-please` and guarded
|
|
|
100
100
|
## Extensions Catalog
|
|
101
101
|
|
|
102
102
|
<!-- BEGIN AUTO-GENERATED CATALOG -->
|
|
103
|
-
This repository contains **2 marketplace(s)** with **
|
|
103
|
+
This repository contains **2 marketplace(s)** with **82 extensions** (71 skills, 11 plugins).
|
|
104
104
|
|
|
105
105
|
### large-codebase
|
|
106
106
|
|
|
@@ -119,7 +119,7 @@ OpenHands skills for interacting, improving, and refactoring large codebases
|
|
|
119
119
|
|
|
120
120
|
Official skills and plugins for OpenHands — the open-source AI software engineer.
|
|
121
121
|
|
|
122
|
-
**
|
|
122
|
+
**78 extensions** (69 skills, 9 plugins)
|
|
123
123
|
|
|
124
124
|
| Name | Type | Description | Commands |
|
|
125
125
|
|------|------|-------------|----------|
|
|
@@ -136,6 +136,8 @@ Official skills and plugins for OpenHands — the open-source AI software engine
|
|
|
136
136
|
| city-weather | plugin | Get current weather, time, and precipitation forecast for any city using the free Open-Meteo API. Provides slash comm... | — |
|
|
137
137
|
| code-review | skill | Rigorous code review focusing on data structures, simplicity, security, pragmatism, and risk/safety evaluation. Provi... | `/codereview`, `/codereview-roasted` |
|
|
138
138
|
| code-simplifier | skill | Simplifies and refines code across three dimensions - code reuse, code quality, and efficiency - while preserving all... | `/simplify` |
|
|
139
|
+
| comment-cleanup | skill | Remove comments that restate adjacent code, delete comments that narrate removed functionality or past PRs, and conde... | — |
|
|
140
|
+
| cortex-training-rl | skill | Run reinforcement-learning post-training of a model inside the OpenHands harness on Snowflake Cortex Training for any... | `/cortex-training-rl` |
|
|
139
141
|
| datadog | skill | Query and analyze Datadog logs, metrics, APM traces, and monitors using the Datadog API. Use when debugging productio... | — |
|
|
140
142
|
| deno | skill | Common project operations using Deno (tasks, run/test/lint/fmt, and dependency management). | — |
|
|
141
143
|
| discord | skill | Build and automate Discord integrations (bots, webhooks, slash commands, and REST API workflows). Use when the user m... | — |
|
|
@@ -146,6 +148,7 @@ Official skills and plugins for OpenHands — the open-source AI software engine
|
|
|
146
148
|
| github | skill | Interact with GitHub repositories, pull requests, issues, and workflows using the GITHUB_TOKEN environment variable a... | — |
|
|
147
149
|
| github-actions | skill | Create, debug, and test GitHub Actions workflows and custom actions. Use when building CI/CD pipelines, automating wo... | — |
|
|
148
150
|
| 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` |
|
|
151
|
+
| github-comment-cleanup | skill | Create an automation that runs the comment-cleanup skill on GitHub repositories on a schedule and opens one pull requ... | `/comment-cleanup:setup` |
|
|
149
152
|
| github-delivery-watchdog | skill | Periodically check pull requests and merge only current heads with independent review, tests, and passing CI. | `/github-delivery-watchdog` |
|
|
150
153
|
| 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` |
|
|
151
154
|
| github-issue-triage | skill | Prioritize open issues and establish acceptance criteria before marking them ready for development. | `/github-issue-triage` |
|
|
@@ -182,6 +185,7 @@ Official skills and plugins for OpenHands — the open-source AI software engine
|
|
|
182
185
|
| research-brief | skill | Create a recurring automation that researches a topic using Tavily web search and publishes a structured brief to Not... | `/research-brief:setup` |
|
|
183
186
|
| runtime-api-configs | plugin | Manage warm sandbox pools on OpenHands Enterprise from a Python CLI: list, template, save, and delete warm runtime co... | — |
|
|
184
187
|
| security | skill | Security best practices for secure coding, authentication, authorization, and data protection. Use when developing fe... | — |
|
|
188
|
+
| show-me | skill | Help the user understand the current topic visually with concise diagrams, code-shape sketches, and focused HTML arti... | — |
|
|
185
189
|
| simplified-technical-english | skill | Write explanations and chat in the style of ASD-STE100 Simplified Technical English: short active sentences, one idea... | — |
|
|
186
190
|
| skill-creator | skill | Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an ex... | — |
|
|
187
191
|
| slack-channel-monitor | skill | Create a cron automation that polls up to 10 Slack channels every minute and starts an OpenHands conversation when a ... | `/slack-monitor:poll` |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "kanban-manager",
|
|
4
|
+
"name": "Kanban Manager",
|
|
5
|
+
"description": "A beta board for agent work: queue requests, track progress, and review completed tickets.",
|
|
6
|
+
"source": "./apps/kanban-manager",
|
|
7
|
+
"manifest": "./apps/kanban-manager/canvas-extension.json",
|
|
8
|
+
"beta": true
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "vscode",
|
|
12
|
+
"name": "VS Code",
|
|
13
|
+
"description": "A managed full-height OpenVSCode editor for the selected Agent Canvas workspace.",
|
|
14
|
+
"source": "./apps/vscode",
|
|
15
|
+
"manifest": "./apps/vscode/canvas-extension.json",
|
|
16
|
+
"beta": true
|
|
17
|
+
}
|
|
18
|
+
]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright © 2025 OpenHands contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the “Software”), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Kanban Manager
|
|
2
|
+
|
|
3
|
+
**Beta.** Install explicitly and enable only after reviewing the source.
|
|
4
|
+
|
|
5
|
+
Kanban Manager is a board for agent work. You queue requests as cards, a
|
|
6
|
+
manager agent picks them up and dispatches workers, and the board shows what
|
|
7
|
+
each agent is doing right now and what has landed.
|
|
8
|
+
|
|
9
|
+
It is a Canvas Extension with no server of its own. Everything it needs — the
|
|
10
|
+
board, its settings, ticket attachments — is JSON on the Agent Server's own
|
|
11
|
+
filesystem, written through the file API.
|
|
12
|
+
|
|
13
|
+
(Previously published here as `vibe-board`.)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## Install in Agent Canvas
|
|
17
|
+
|
|
18
|
+
In **Customize -> Apps -> Add app**, use:
|
|
19
|
+
|
|
20
|
+
- Source: `https://github.com/OpenHands/extensions`
|
|
21
|
+
- Path within repository: `apps/kanban-manager`
|
|
22
|
+
- Revision: choose the reviewed release tag or commit containing this app.
|
|
23
|
+
|
|
24
|
+
Installation leaves the app disabled. Review the source and revision, then
|
|
25
|
+
choose **Enable trusted app**. Open **Kanban Manager** from the navigation.
|
|
26
|
+
The app uses the active Agent Server's file API. Cloud backends do not currently
|
|
27
|
+
support Canvas Apps.
|
|
28
|
+
|
|
29
|
+
### Existing installations
|
|
30
|
+
|
|
31
|
+
The app name remains `kanban-manager` (version `0.2.0`), and its board data
|
|
32
|
+
remains at `~/.openhands/vibe-manager/` on the same Agent Server. Browser keys
|
|
33
|
+
such as `vibe.workspace` and `vibe.theme` also stay unchanged. Moving this
|
|
34
|
+
package does not move, rewrite, or delete that data or any manager automation.
|
|
35
|
+
|
|
36
|
+
When switching an existing installation, stop active UI edits, disable the old
|
|
37
|
+
app, and remove its installed package through Canvas. Do not delete its board
|
|
38
|
+
data. Install the new coordinates above on the **same backend**, then enable
|
|
39
|
+
and check that the existing workspaces and tickets appear. Do not run two
|
|
40
|
+
copies under different app names against the same data. A workspace that moved
|
|
41
|
+
to a different Agent Server needs a separate, deliberate data migration.
|
|
42
|
+
|
|
43
|
+
### Compatibility and optional manager
|
|
44
|
+
|
|
45
|
+
The board works as a manual Kanban without starting an automation. Enabling the
|
|
46
|
+
app does not start a manager or create a conversation. **Start manager** is an
|
|
47
|
+
explicit, separate action and can dispatch agents that use paid models.
|
|
48
|
+
|
|
49
|
+
The imported manager, chat, and attachment features rely on the existing
|
|
50
|
+
Canvas backend registry and a deployment that exposes the Automation service
|
|
51
|
+
at `/api/automation/v1` using the selected backend's credentials. This is not
|
|
52
|
+
a portable host-API guarantee: a remote backend without that route can use the
|
|
53
|
+
manual board, but manager actions may be unavailable. The migration does not
|
|
54
|
+
add routes, change credentials, or grant access to another backend.
|
|
55
|
+
|
|
56
|
+
## Credits and migration source
|
|
57
|
+
|
|
58
|
+
Originally authored by Robert Brennan, with contributions from OpenHands.
|
|
59
|
+
This migration preserves their app and automation code.
|
|
60
|
+
|
|
61
|
+
Moved from [OpenHands/canvas-apps](https://github.com/OpenHands/canvas-apps/tree/b83068fdce5ec7f85c07b8aefa15d413982059d0/kanban-manager)
|
|
62
|
+
at `b83068fdce5ec7f85c07b8aefa15d413982059d0`, retaining the MIT [LICENSE](LICENSE).
|
|
63
|
+
The app vendors its original board styles and automation from
|
|
64
|
+
[rbren/vibe-manager](https://github.com/rbren/vibe-manager).
|
|
65
|
+
|
|
66
|
+
The separate [canvas-apps PR #21](https://github.com/OpenHands/canvas-apps/pull/21)
|
|
67
|
+
proposes a React/FastAPI/SQLite rewrite. It was still open when this migration
|
|
68
|
+
was prepared and is **not** included. Its code and any live database must not
|
|
69
|
+
be treated as migrated; a future port requires its own review and data plan.
|
|
70
|
+
|
|
71
|
+
## Lanes
|
|
72
|
+
|
|
73
|
+
Cards move left to right: **Pending** → **In progress** → **Needs input** →
|
|
74
|
+
**Finished**, plus a **Verified** lane you can toggle for the archive. Drag a
|
|
75
|
+
card to reprioritise within a lane. Click one to open a drawer with the full
|
|
76
|
+
append-only history; adding a note to a finished ticket reopens it.
|
|
77
|
+
|
|
78
|
+
In-progress cards show the worker's most recent action as it happens, so you
|
|
79
|
+
can see an agent working without opening its conversation.
|
|
80
|
+
|
|
81
|
+
## The manager
|
|
82
|
+
|
|
83
|
+
The control in the top right owns the manager automation for the selected
|
|
84
|
+
workspace, so a board can be made autonomous without leaving Canvas:
|
|
85
|
+
|
|
86
|
+
- **Start manager** (orange) — there is no manager yet, or it was stopped.
|
|
87
|
+
Clicking it packs the automation's python sources (compiled into the bundle,
|
|
88
|
+
`src/automation/`) plus a per-workspace `config.json` into a `tar.gz`,
|
|
89
|
+
uploads it to `POST /api/automation/v1/uploads`, and creates a cron
|
|
90
|
+
automation that runs `python3 main.py` once a minute. The automation id is
|
|
91
|
+
recorded on the workspace.
|
|
92
|
+
- **manager ✓ / working / ✗** — a manager is running. The badge reports the
|
|
93
|
+
last run and the manager conversation; clicking it triggers a run now.
|
|
94
|
+
- **Stop manager** — `PATCH {"enabled": false}`. The automation and its run
|
|
95
|
+
history are kept, so starting again is a re-enable with a fresh tarball.
|
|
96
|
+
|
|
97
|
+
Two implementation notes, since neither is obvious:
|
|
98
|
+
|
|
99
|
+
- The tar archive is built in the browser and gzipped with
|
|
100
|
+
`CompressionStream`. Sizes in the ustar header must be **byte** counts, not
|
|
101
|
+
string lengths, or a file with any multi-byte character truncates and every
|
|
102
|
+
following header lands mid-stream.
|
|
103
|
+
- The upload is a plain `fetch` rather than `host.agentServer.request`,
|
|
104
|
+
because the host client JSON-stringifies any body that is not `FormData`,
|
|
105
|
+
which would corrupt the gzip bytes. Every other call goes through the host.
|
|
106
|
+
|
|
107
|
+
Without a manager the board is still a perfectly good manual kanban: you can
|
|
108
|
+
create, edit, reorder and verify tickets, and open the conversation behind any
|
|
109
|
+
card.
|
|
110
|
+
|
|
111
|
+
## How it stores state
|
|
112
|
+
|
|
113
|
+
There is no database and no backend process. The store is a directory tree
|
|
114
|
+
under the Agent Server's home:
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
~/.openhands/vibe-manager/
|
|
118
|
+
index.json workspaces + settings
|
|
119
|
+
workspaces/<id>/tickets/<tid>/ticket.json one file per ticket
|
|
120
|
+
attachments/<id>/<filename> uploaded files
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The directory keeps its old name so boards created by earlier installs — and
|
|
124
|
+
by the manager automation, which writes the same files from the shell — are
|
|
125
|
+
still found.
|
|
126
|
+
|
|
127
|
+
Reads are `GET /api/file/download`, writes are `POST /api/file/upload`, both
|
|
128
|
+
through the host's `agentServer.request` so they are same-origin and
|
|
129
|
+
authenticated by Canvas. The home directory is resolved at runtime from
|
|
130
|
+
`GET /api/file/home` rather than assumed, so this works whatever user the
|
|
131
|
+
Agent Server runs as.
|
|
132
|
+
|
|
133
|
+
Two consequences worth knowing:
|
|
134
|
+
|
|
135
|
+
- **One file per ticket is what keeps writers apart.** There is no conditional
|
|
136
|
+
upload to build a compare-and-swap on, so the extension, the manager
|
|
137
|
+
automation and the manager's CLI would lose each other's edits if they all
|
|
138
|
+
rewrote one board document. Touching separate files, they cannot. The two
|
|
139
|
+
documents still shared — `index.json`, and a ticket two writers both target —
|
|
140
|
+
carry a `rev`/`writer` pair that detects a lost write and re-applies it.
|
|
141
|
+
- **Reads bypass the HTTP cache.** The file API sends `ETag`/`Last-Modified`
|
|
142
|
+
but no `Cache-Control`, so a browser may reuse a stale response for its
|
|
143
|
+
heuristic freshness window. On the directory listing that assembles the
|
|
144
|
+
board, that means a ticket created moments earlier never appears at all.
|
|
145
|
+
Both the listing and `readJson` defeat it per request; attachment blobs are
|
|
146
|
+
immutable and stay cacheable.
|
|
147
|
+
|
|
148
|
+
## Build
|
|
149
|
+
|
|
150
|
+
The checked-in `extension.js` is the built bundle; the sources are in `src/`.
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npm ci
|
|
154
|
+
npm run check # build + test
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
`build.mjs` bundles the ES modules with esbuild and inlines two things that
|
|
158
|
+
must travel with a single-file extension:
|
|
159
|
+
|
|
160
|
+
- `src/board.css`, scoping every selector under `.vibe-ext` and rewriting
|
|
161
|
+
`rem` lengths onto a local `--vibe-rem`, so the board can size itself
|
|
162
|
+
without restyling Canvas;
|
|
163
|
+
- `src/automation/*.py`, the manager automation, because "Start manager"
|
|
164
|
+
uploads it from the browser and the machine running Canvas has no checkout
|
|
165
|
+
of it to read.
|
|
166
|
+
|
|
167
|
+
Both are vendored from [rbren/vibe-manager](https://github.com/rbren/vibe-manager),
|
|
168
|
+
which is where they are maintained. The bundle's destination comes from the
|
|
169
|
+
manifest's `entrypoint`, so the declared and built paths cannot drift.
|
|
170
|
+
|
|
171
|
+
## Tests
|
|
172
|
+
|
|
173
|
+
`test/extension.test.js` mounts the built bundle against a linkedom DOM and a
|
|
174
|
+
fake host, and covers rendering, lane sorting, the submit path, the manager
|
|
175
|
+
start/stop control and disposal. It runs on the bundle rather than the
|
|
176
|
+
sources, so a broken build fails the suite.
|
|
177
|
+
|
|
178
|
+
`test/manager.test.mjs` checks the browser-built tarball with real GNU tar. It
|
|
179
|
+
also has two tests that talk to a running automation backend; they skip unless
|
|
180
|
+
a session key is available (`OH_SESSION_API_KEYS_0`, plus `VIBE_TEST_INGRESS`
|
|
181
|
+
if it is not on `http://127.0.0.1:8000`).
|
|
182
|
+
|
|
183
|
+
The upstream repository additionally has tests that drive the real Agent Server
|
|
184
|
+
file API; those need a running server and are not included here.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/* Build the Kanban Manager canvas extension into one self-contained browser
|
|
2
|
+
ESM file: the bundle carries the board, the stylesheet and the manager
|
|
3
|
+
automation's python sources, because an extension is a single file.
|
|
4
|
+
|
|
5
|
+
The stylesheet is vendored in src/board.css. Two transforms adapt it to
|
|
6
|
+
living inside Canvas:
|
|
7
|
+
|
|
8
|
+
1. Every selector is scoped under .vibe-ext, and the page-level selectors
|
|
9
|
+
(:root, html, body, *) are rewritten onto that root, so the extension
|
|
10
|
+
cannot restyle Canvas.
|
|
11
|
+
2. rem lengths become calc(N * var(--vibe-rem)). The SPA sets
|
|
12
|
+
html { font-size: 120% } to scale itself, which an extension must not do
|
|
13
|
+
to the host page; --vibe-rem reproduces that scale locally instead.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
17
|
+
import { dirname, join } from "node:path";
|
|
18
|
+
import { fileURLToPath } from "node:url";
|
|
19
|
+
import esbuild from "esbuild";
|
|
20
|
+
import postcss from "postcss";
|
|
21
|
+
import prefixer from "postcss-prefix-selector";
|
|
22
|
+
|
|
23
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
24
|
+
const ROOT_CLASS = ".vibe-ext";
|
|
25
|
+
|
|
26
|
+
// Build only from this package: unrelated files in the parent repository must
|
|
27
|
+
// not replace the vendored stylesheet or the manager automation.
|
|
28
|
+
const SOURCE_CSS = join(here, "src", "board.css");
|
|
29
|
+
const AUTOMATION_DIR = join(here, "src", "automation");
|
|
30
|
+
const AUTOMATION_MODULES = ["main.py", "vibestore.py", "vibectl.py"];
|
|
31
|
+
|
|
32
|
+
/* The manifest decides where the bundle goes, so the declared entrypoint and
|
|
33
|
+
the built file cannot drift apart (this package publishes it under dist/,
|
|
34
|
+
the canvas-extensions repo at the package root). */
|
|
35
|
+
const MANIFEST = JSON.parse(readFileSync(join(here, "canvas-extension.json"), "utf8"));
|
|
36
|
+
const OUTFILE = join(here, MANIFEST.entrypoint);
|
|
37
|
+
|
|
38
|
+
// Selectors that target the page itself. Inside the extension they all mean
|
|
39
|
+
// "our root element" instead.
|
|
40
|
+
const PAGE_LEVEL = new Set([
|
|
41
|
+
":root",
|
|
42
|
+
"html",
|
|
43
|
+
"body",
|
|
44
|
+
"html, body",
|
|
45
|
+
"html,body",
|
|
46
|
+
]);
|
|
47
|
+
|
|
48
|
+
function scopeSelector(selector) {
|
|
49
|
+
const trimmed = selector.trim();
|
|
50
|
+
if (PAGE_LEVEL.has(trimmed)) return ROOT_CLASS;
|
|
51
|
+
|
|
52
|
+
// html[data-theme="light"] -> .vibe-ext[data-theme="light"] (the SPA's light
|
|
53
|
+
// mode is a token override; we keep it on our own root so the toggle never
|
|
54
|
+
// touches Canvas's <html>).
|
|
55
|
+
if (trimmed.startsWith("html[")) {
|
|
56
|
+
return ROOT_CLASS + trimmed.slice("html".length);
|
|
57
|
+
}
|
|
58
|
+
// html[data-theme="light"] .foo -> .vibe-ext[data-theme="light"] .foo
|
|
59
|
+
if (trimmed.startsWith("html[data-theme")) {
|
|
60
|
+
return ROOT_CLASS + trimmed.slice("html".length);
|
|
61
|
+
}
|
|
62
|
+
if (trimmed === "*") return `${ROOT_CLASS}, ${ROOT_CLASS} *`;
|
|
63
|
+
return null; // fall through to the default prefixer behaviour
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function remToScaled(css) {
|
|
67
|
+
// 0.9375rem -> calc(0.9375 * var(--vibe-rem)). Skip 0rem and anything already
|
|
68
|
+
// inside a var() fallback chain we generated.
|
|
69
|
+
return css.replace(/(-?\d*\.?\d+)rem\b/g, (match, value) => {
|
|
70
|
+
const n = Number(value);
|
|
71
|
+
if (!Number.isFinite(n) || n === 0) return match;
|
|
72
|
+
return `calc(${value} * var(--vibe-rem))`;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
async function buildCss() {
|
|
77
|
+
const raw = readFileSync(SOURCE_CSS, "utf8");
|
|
78
|
+
const result = await postcss([
|
|
79
|
+
prefixer({
|
|
80
|
+
prefix: ROOT_CLASS,
|
|
81
|
+
transform(prefix, selector, prefixedSelector) {
|
|
82
|
+
return scopeSelector(selector) ?? prefixedSelector;
|
|
83
|
+
},
|
|
84
|
+
}),
|
|
85
|
+
]).process(raw, { from: SOURCE_CSS });
|
|
86
|
+
|
|
87
|
+
// --vibe-rem reproduces the SPA's html { font-size: 120% } locally. Change
|
|
88
|
+
// this one value to rescale the whole board inside Canvas.
|
|
89
|
+
const scale = `${ROOT_CLASS} { --vibe-rem: 1.2rem; }\n`;
|
|
90
|
+
// setup.css is extension-only and already written scoped, so it bypasses the
|
|
91
|
+
// prefixer but still gets the rem rescale.
|
|
92
|
+
const setup = readFileSync(join(here, "src", "setup.css"), "utf8");
|
|
93
|
+
return scale + remToScaled(result.css) + remToScaled(setup);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function readAutomation() {
|
|
97
|
+
return Object.fromEntries(
|
|
98
|
+
AUTOMATION_MODULES.map((name) => [name, readFileSync(join(AUTOMATION_DIR, name), "utf8")]),
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const css = await buildCss();
|
|
103
|
+
const automation = readAutomation();
|
|
104
|
+
mkdirSync(dirname(OUTFILE), { recursive: true });
|
|
105
|
+
|
|
106
|
+
await esbuild.build({
|
|
107
|
+
entryPoints: [join(here, "src", "extension.js")],
|
|
108
|
+
outfile: OUTFILE,
|
|
109
|
+
bundle: true,
|
|
110
|
+
format: "esm",
|
|
111
|
+
platform: "browser",
|
|
112
|
+
target: "es2022",
|
|
113
|
+
legalComments: "none",
|
|
114
|
+
define: {
|
|
115
|
+
__VIBE_CSS__: JSON.stringify(css),
|
|
116
|
+
__VIBE_AUTOMATION__: JSON.stringify(automation),
|
|
117
|
+
},
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
const out = readFileSync(OUTFILE, "utf8").replace(/[ \t]+$/gm, "");
|
|
121
|
+
writeFileSync(OUTFILE, `/* Generated by build.mjs - do not edit. */\n${out}`);
|
|
122
|
+
console.log(`built ${MANIFEST.entrypoint} (${(out.length / 1024).toFixed(1)} KB)`);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": 1,
|
|
3
|
+
"name": "kanban-manager",
|
|
4
|
+
"display_name": "Kanban Manager",
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"description": "Agent dispatch board: queue work, watch agents pick it up, review what lands.",
|
|
7
|
+
"entrypoint": "extension.js",
|
|
8
|
+
"contributes": {
|
|
9
|
+
"pages": [
|
|
10
|
+
{
|
|
11
|
+
"id": "board",
|
|
12
|
+
"title": "Kanban Manager",
|
|
13
|
+
"path": "/board",
|
|
14
|
+
"nav_label": "Kanban Manager",
|
|
15
|
+
"description": "Kanban board of agent work across your workspaces."
|
|
16
|
+
}
|
|
17
|
+
]
|
|
18
|
+
}
|
|
19
|
+
}
|