@openhands/extensions 0.0.1-alpha → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/custom-codereview-guide.md +25 -0
- package/.github/pull_request_template.md +38 -0
- package/.github/release.yml +14 -0
- package/.github/workflows/check-extensions.yml +72 -0
- package/.github/workflows/npm-publish.yml +89 -0
- package/.github/workflows/pr.yml +30 -0
- package/.github/workflows/release.yml +24 -0
- package/.github/workflows/tests.yml +25 -0
- package/.github/workflows/vulnerability-scan.yml +87 -0
- package/.release-please-manifest.json +3 -0
- package/AGENTS.md +132 -0
- package/README.md +10 -0
- package/analysis_results.md +162 -0
- package/marketplaces/large-codebase.json +66 -0
- package/marketplaces/openhands-extensions.json +682 -0
- package/package.json +4 -10
- package/plugins/README.md +30 -0
- package/plugins/city-weather/.plugin/plugin.json +13 -0
- package/plugins/city-weather/README.md +145 -0
- package/plugins/city-weather/commands/now.md +56 -0
- package/plugins/cobol-modernization/.plugin/plugin.json +19 -0
- package/plugins/cobol-modernization/README.md +201 -0
- package/plugins/cobol-modernization/references/troubleshooting.md +18 -0
- package/plugins/cobol-modernization/skills/build-setup/SKILL.md +78 -0
- package/plugins/cobol-modernization/skills/build-setup/scripts/install-gnucobol.sh +32 -0
- package/plugins/cobol-modernization/skills/cobol-modernization-overview/SKILL.md +113 -0
- package/plugins/cobol-modernization/skills/mainfraime-removal/SKILL.md +62 -0
- package/plugins/cobol-modernization/skills/mainfraime-removal/references/cics-transformation-examples.md +45 -0
- package/plugins/cobol-modernization/skills/mainframe-planning/SKILL.md +78 -0
- package/plugins/cobol-modernization/skills/to-java-migration/SKILL.md +59 -0
- package/plugins/cobol-modernization/skills/to-java-migration/references/cobol-to-java-example.md +58 -0
- package/plugins/cobol-modernization/skills/to-java-migration/references/datatype-mappings.md +19 -0
- package/plugins/issue-duplicate-checker/.plugin/plugin.json +13 -0
- package/plugins/issue-duplicate-checker/README.md +51 -0
- package/plugins/issue-duplicate-checker/action.yml +349 -0
- package/plugins/issue-duplicate-checker/scripts/auto_close_duplicate_issues.py +569 -0
- package/plugins/issue-duplicate-checker/scripts/issue_duplicate_check_openhands.py +681 -0
- package/plugins/issue-duplicate-checker/scripts/post_duplicate_notice.js +220 -0
- package/plugins/issue-duplicate-checker/scripts/remove_duplicate_candidate_label.js +27 -0
- package/plugins/magic-test/.plugin/plugin.json +13 -0
- package/plugins/magic-test/skills/magic-word/SKILL.md +33 -0
- package/plugins/migration-scoring/.plugin/plugin.json +19 -0
- package/plugins/migration-scoring/README.md +244 -0
- package/plugins/migration-scoring/skills/migration-mapping/SKILL.md +72 -0
- package/plugins/migration-scoring/skills/migration-report/SKILL.md +118 -0
- package/plugins/migration-scoring/skills/migration-scoring-overview/SKILL.md +126 -0
- package/plugins/migration-scoring/skills/score-quality/SKILL.md +54 -0
- package/plugins/migration-scoring/skills/score-quality/references/scoring-criteria.md +30 -0
- package/plugins/migration-scoring/skills/score-style/SKILL.md +106 -0
- package/plugins/onboarding/.plugin/plugin.json +20 -0
- package/plugins/onboarding/README.md +30 -0
- package/plugins/onboarding/references/criteria.md +144 -0
- package/plugins/onboarding/skills/agent-readiness-report/README.md +23 -0
- package/plugins/onboarding/skills/agent-readiness-report/SKILL.md +122 -0
- package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_agent_instructions.sh +88 -0
- package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_build_env.sh +114 -0
- package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_feedback_loops.sh +133 -0
- package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_policy.sh +113 -0
- package/plugins/onboarding/skills/agent-readiness-report/scripts/scan_workflows.sh +127 -0
- package/plugins/onboarding/skills/improve-agent-readiness/README.md +19 -0
- package/plugins/onboarding/skills/improve-agent-readiness/SKILL.md +167 -0
- package/plugins/onboarding/skills/setup-agents-md/README.md +15 -0
- package/plugins/onboarding/skills/setup-agents-md/SKILL.md +150 -0
- package/plugins/onboarding/skills/setup-openhands/README.md +20 -0
- package/plugins/onboarding/skills/setup-openhands/SKILL.md +56 -0
- package/plugins/onboarding/skills/setup-pr-review/README.md +23 -0
- package/plugins/onboarding/skills/setup-pr-review/SKILL.md +72 -0
- package/plugins/openhands/.plugin/plugin.json +13 -0
- package/plugins/openhands/README.md +52 -0
- package/plugins/openhands/SKILL.md +61 -0
- package/plugins/openhands/commands/create.md +55 -0
- package/plugins/openhands/commands/openhands-cloud.md +8 -0
- package/plugins/openhands/scripts/run.sh +69 -0
- package/plugins/pr-review/.plugin/plugin.json +13 -0
- package/plugins/pr-review/README.md +393 -0
- package/plugins/pr-review/action.yml +298 -0
- package/plugins/pr-review/scripts/agent_script.py +1282 -0
- package/plugins/pr-review/scripts/evaluate_review.py +655 -0
- package/plugins/pr-review/scripts/prompt.py +260 -0
- package/plugins/pr-review/workflows/pr-review-by-openhands.yml +51 -0
- package/plugins/pr-review/workflows/pr-review-evaluation.yml +85 -0
- package/plugins/qa-changes/.plugin/plugin.json +11 -0
- package/plugins/qa-changes/README.md +185 -0
- package/plugins/qa-changes/action.yml +181 -0
- package/plugins/qa-changes/scripts/agent_script.py +406 -0
- package/plugins/qa-changes/scripts/evaluate_qa_changes.py +385 -0
- package/plugins/qa-changes/scripts/prompt.py +174 -0
- package/plugins/qa-changes/workflows/qa-changes-by-openhands.yml +50 -0
- package/plugins/qa-changes/workflows/qa-changes-evaluation.yml +85 -0
- package/plugins/release-notes/.plugin/plugin.json +19 -0
- package/plugins/release-notes/README.md +283 -0
- package/plugins/release-notes/SKILL.md +83 -0
- package/plugins/release-notes/action.yml +117 -0
- package/plugins/release-notes/commands/release-notes.md +8 -0
- package/plugins/release-notes/scripts/agent_script.py +292 -0
- package/plugins/release-notes/scripts/generate_release_notes.py +733 -0
- package/plugins/release-notes/scripts/prompt.py +90 -0
- package/plugins/release-notes/scripts/validate_release_notes.py +328 -0
- package/plugins/release-notes/workflows/release-notes.yml +76 -0
- package/plugins/vulnerability-remediation/.plugin/plugin.json +19 -0
- package/plugins/vulnerability-remediation/README.md +217 -0
- package/plugins/vulnerability-remediation/action.yml +187 -0
- package/plugins/vulnerability-remediation/scripts/scan_and_remediate.py +561 -0
- package/plugins/vulnerability-remediation/workflows/vulnerability-scan.yml +87 -0
- package/pyproject.toml +12 -0
- package/release-please-config.json +16 -0
- package/scripts/sync_extensions.py +494 -0
- package/scripts/sync_openhands_sdk_skill.py +264 -0
- package/skills/README.md +159 -0
- package/skills/add-javadoc/.plugin/plugin.json +18 -0
- package/skills/add-javadoc/README.md +40 -0
- package/skills/add-javadoc/SKILL.md +35 -0
- package/skills/add-javadoc/references/example.md +32 -0
- package/skills/add-skill/.plugin/plugin.json +18 -0
- package/skills/add-skill/README.md +67 -0
- package/skills/add-skill/SKILL.md +47 -0
- package/skills/add-skill/scripts/fetch_skill.py +259 -0
- package/skills/agent-creator/.plugin/plugin.json +20 -0
- package/skills/agent-creator/README.md +104 -0
- package/skills/agent-creator/SKILL.md +190 -0
- package/skills/agent-creator/commands/agent-creator.md +8 -0
- package/skills/agent-creator/references/fallback.md +117 -0
- package/skills/agent-memory/.plugin/plugin.json +18 -0
- package/skills/agent-memory/README.md +35 -0
- package/skills/agent-memory/SKILL.md +30 -0
- package/skills/agent-memory/commands/remember.md +8 -0
- package/skills/agent-sdk-builder/.plugin/plugin.json +18 -0
- package/skills/agent-sdk-builder/README.md +40 -0
- package/skills/agent-sdk-builder/SKILL.md +37 -0
- package/skills/agent-sdk-builder/commands/agent-builder.md +8 -0
- package/skills/azure-devops/.plugin/plugin.json +18 -0
- package/skills/azure-devops/README.md +55 -0
- package/skills/azure-devops/SKILL.md +50 -0
- package/skills/bitbucket/.plugin/plugin.json +17 -0
- package/skills/bitbucket/README.md +50 -0
- package/skills/bitbucket/SKILL.md +45 -0
- package/skills/code-review/.plugin/plugin.json +19 -0
- package/skills/code-review/README.md +18 -0
- package/skills/code-review/SKILL.md +208 -0
- package/skills/code-review/commands/codereview-roasted.md +8 -0
- package/skills/code-review/commands/codereview.md +8 -0
- package/skills/code-review/references/risk-evaluation.md +41 -0
- package/skills/code-review/references/supply-chain-security.md +31 -0
- package/skills/code-simplifier/.plugin/plugin.json +21 -0
- package/skills/code-simplifier/README.md +30 -0
- package/skills/code-simplifier/SKILL.md +91 -0
- package/skills/code-simplifier/commands/simplify.md +8 -0
- package/skills/code-simplifier/references/code-quality-review.md +86 -0
- package/skills/code-simplifier/references/code-reuse-review.md +63 -0
- package/skills/code-simplifier/references/efficiency-review.md +81 -0
- package/skills/datadog/.plugin/plugin.json +19 -0
- package/skills/datadog/README.md +100 -0
- package/skills/datadog/SKILL.md +95 -0
- package/skills/deno/.plugin/plugin.json +18 -0
- package/skills/deno/README.md +5 -0
- package/skills/deno/SKILL.md +99 -0
- package/skills/deno/references/README.md +6 -0
- package/skills/discord/.plugin/plugin.json +18 -0
- package/skills/discord/README.md +31 -0
- package/skills/discord/SKILL.md +109 -0
- package/skills/discord/__init__.py +0 -0
- package/skills/discord/references/REFERENCE.md +78 -0
- package/skills/discord/scripts/__init__.py +0 -0
- package/skills/discord/scripts/_http.py +127 -0
- package/skills/discord/scripts/post_webhook.py +106 -0
- package/skills/discord/scripts/send_message.py +102 -0
- package/skills/docker/.plugin/plugin.json +17 -0
- package/skills/docker/README.md +34 -0
- package/skills/docker/SKILL.md +29 -0
- package/skills/evidence-based-citations/.plugin/plugin.json +20 -0
- package/skills/evidence-based-citations/README.md +31 -0
- package/skills/evidence-based-citations/SKILL.md +59 -0
- package/skills/flarglebargle/.plugin/plugin.json +16 -0
- package/skills/flarglebargle/README.md +14 -0
- package/skills/flarglebargle/SKILL.md +9 -0
- package/skills/frontend-design/.plugin/plugin.json +21 -0
- package/skills/frontend-design/LICENSE.txt +177 -0
- package/skills/frontend-design/README.md +42 -0
- package/skills/frontend-design/SKILL.md +42 -0
- package/skills/github/.plugin/plugin.json +19 -0
- package/skills/github/README.md +42 -0
- package/skills/github/SKILL.md +106 -0
- package/skills/github-pr-review/.plugin/plugin.json +18 -0
- package/skills/github-pr-review/README.md +145 -0
- package/skills/github-pr-review/SKILL.md +148 -0
- package/skills/github-pr-review/commands/github-pr-review.md +8 -0
- package/skills/github-pr-reviewer/.plugin/plugin.json +20 -0
- package/skills/github-pr-reviewer/README.md +34 -0
- package/skills/github-pr-reviewer/SKILL.md +89 -0
- package/skills/github-pr-reviewer/commands/pr-reviewer:setup.md +8 -0
- package/skills/github-repo-monitor/.plugin/plugin.json +22 -0
- package/skills/github-repo-monitor/README.md +70 -0
- package/skills/github-repo-monitor/SKILL.md +316 -0
- package/skills/github-repo-monitor/commands/github-monitor:poll.md +8 -0
- package/skills/github-repo-monitor/references/github-api.md +241 -0
- package/skills/github-repo-monitor/references/state-schema.md +160 -0
- package/skills/github-repo-monitor/scripts/main.py +915 -0
- package/skills/github-repo-monitor/tests/test_main.py +400 -0
- package/skills/gitlab/.plugin/plugin.json +17 -0
- package/skills/gitlab/README.md +37 -0
- package/skills/gitlab/SKILL.md +32 -0
- package/skills/incident-retrospective/.plugin/plugin.json +21 -0
- package/skills/incident-retrospective/README.md +34 -0
- package/skills/incident-retrospective/SKILL.md +98 -0
- package/skills/incident-retrospective/commands/incident-retro:setup.md +8 -0
- package/skills/iterate/.plugin/plugin.json +13 -0
- package/skills/iterate/README.md +25 -0
- package/skills/iterate/SKILL.md +399 -0
- package/skills/iterate/commands/babysit.md +8 -0
- package/skills/iterate/commands/iterate.md +8 -0
- package/skills/iterate/commands/verify.md +8 -0
- package/skills/iterate/references/heuristics.md +58 -0
- package/skills/iterate/references/verification.md +96 -0
- package/skills/jupyter/.plugin/plugin.json +18 -0
- package/skills/jupyter/README.md +55 -0
- package/skills/jupyter/SKILL.md +50 -0
- package/skills/kubernetes/.plugin/plugin.json +18 -0
- package/skills/kubernetes/README.md +53 -0
- package/skills/kubernetes/SKILL.md +48 -0
- package/skills/learn-from-code-review/.plugin/plugin.json +19 -0
- package/skills/learn-from-code-review/README.md +64 -0
- package/skills/learn-from-code-review/SKILL.md +186 -0
- package/skills/learn-from-code-review/commands/learn-from-reviews.md +8 -0
- package/skills/linear/.plugin/plugin.json +19 -0
- package/skills/linear/README.md +58 -0
- package/skills/linear/SKILL.md +213 -0
- package/skills/linear-triage/.plugin/plugin.json +21 -0
- package/skills/linear-triage/README.md +34 -0
- package/skills/linear-triage/SKILL.md +91 -0
- package/skills/linear-triage/commands/linear-triage:setup.md +8 -0
- package/skills/notion/.plugin/plugin.json +17 -0
- package/skills/notion/README.md +114 -0
- package/skills/notion/SKILL.md +109 -0
- package/skills/npm/.plugin/plugin.json +17 -0
- package/skills/npm/README.md +14 -0
- package/skills/npm/SKILL.md +9 -0
- package/skills/openhands-api/.plugin/plugin.json +22 -0
- package/skills/openhands-api/README.md +48 -0
- package/skills/openhands-api/SKILL.md +399 -0
- package/skills/openhands-api/references/README.md +33 -0
- package/skills/openhands-api/references/TROUBLESHOOTING.md +81 -0
- package/skills/openhands-api/references/example_prompt.md +12 -0
- package/skills/openhands-api/scripts/openhands_api.py +606 -0
- package/skills/openhands-api/scripts/openhands_api.ts +252 -0
- package/skills/openhands-automation/.plugin/plugin.json +19 -0
- package/skills/openhands-automation/README.md +89 -0
- package/skills/openhands-automation/SKILL.md +875 -0
- package/skills/openhands-automation/commands/automation:create.md +8 -0
- package/skills/openhands-automation/references/ab-testing.md +185 -0
- package/skills/openhands-automation/references/custom-automation.md +644 -0
- package/skills/openhands-sdk/.plugin/plugin.json +20 -0
- package/skills/openhands-sdk/README.md +22 -0
- package/skills/openhands-sdk/SKILL.md +229 -0
- package/skills/openhands-sdk/commands/sdk.md +8 -0
- package/skills/pdflatex/.plugin/plugin.json +18 -0
- package/skills/pdflatex/README.md +39 -0
- package/skills/pdflatex/SKILL.md +34 -0
- package/skills/prd/.plugin/plugin.json +19 -0
- package/skills/prd/README.md +28 -0
- package/skills/prd/SKILL.md +237 -0
- package/skills/prd/commands/prd.md +8 -0
- package/skills/qa-changes/README.md +18 -0
- package/skills/qa-changes/SKILL.md +229 -0
- package/skills/qa-changes/commands/qa-changes.md +8 -0
- package/skills/release-notes/README.md +24 -0
- package/skills/release-notes/SKILL.md +19 -0
- package/skills/release-notes/commands/release-notes.md +8 -0
- package/skills/research-brief/.plugin/plugin.json +20 -0
- package/skills/research-brief/README.md +34 -0
- package/skills/research-brief/SKILL.md +99 -0
- package/skills/research-brief/commands/research-brief:setup.md +8 -0
- package/skills/security/.plugin/plugin.json +18 -0
- package/skills/security/README.md +38 -0
- package/skills/security/SKILL.md +33 -0
- package/skills/skill-creator/.plugin/plugin.json +17 -0
- package/skills/skill-creator/LICENSE.txt +202 -0
- package/skills/skill-creator/README.md +182 -0
- package/skills/skill-creator/SKILL.md +545 -0
- package/skills/skill-creator/references/output-patterns.md +82 -0
- package/skills/skill-creator/references/workflows.md +28 -0
- package/skills/skill-creator/scripts/init_skill.py +303 -0
- package/skills/skill-creator/scripts/quick_validate.py +95 -0
- package/skills/slack-channel-monitor/.plugin/plugin.json +21 -0
- package/skills/slack-channel-monitor/README.md +91 -0
- package/skills/slack-channel-monitor/SKILL.md +276 -0
- package/skills/slack-channel-monitor/commands/slack-monitor:poll.md +8 -0
- package/skills/slack-channel-monitor/references/slack-api.md +207 -0
- package/skills/slack-channel-monitor/references/state-schema.md +180 -0
- package/skills/slack-channel-monitor/scripts/main.py +962 -0
- package/skills/slack-standup-digest/.plugin/plugin.json +21 -0
- package/skills/slack-standup-digest/README.md +34 -0
- package/skills/slack-standup-digest/SKILL.md +92 -0
- package/skills/slack-standup-digest/commands/standup-digest:setup.md +8 -0
- package/skills/spark-version-upgrade/.plugin/plugin.json +20 -0
- package/skills/spark-version-upgrade/README.md +54 -0
- package/skills/spark-version-upgrade/SKILL.md +233 -0
- package/skills/ssh/.plugin/plugin.json +18 -0
- package/skills/ssh/README.md +140 -0
- package/skills/ssh/SKILL.md +135 -0
- package/skills/swift-linux/.plugin/plugin.json +17 -0
- package/skills/swift-linux/README.md +86 -0
- package/skills/swift-linux/SKILL.md +81 -0
- package/skills/theme-factory/.plugin/plugin.json +19 -0
- package/skills/theme-factory/LICENSE.txt +202 -0
- package/skills/theme-factory/README.md +58 -0
- package/skills/theme-factory/SKILL.md +59 -0
- package/skills/theme-factory/theme-showcase.pdf +0 -0
- package/skills/theme-factory/themes/arctic-frost.md +19 -0
- package/skills/theme-factory/themes/botanical-garden.md +19 -0
- package/skills/theme-factory/themes/desert-rose.md +19 -0
- package/skills/theme-factory/themes/forest-canopy.md +19 -0
- package/skills/theme-factory/themes/golden-hour.md +19 -0
- package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
- package/skills/theme-factory/themes/modern-minimalist.md +19 -0
- package/skills/theme-factory/themes/ocean-depths.md +19 -0
- package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
- package/skills/theme-factory/themes/tech-innovation.md +19 -0
- package/skills/uv/.plugin/plugin.json +18 -0
- package/skills/uv/README.md +5 -0
- package/skills/uv/SKILL.md +95 -0
- package/skills/uv/references/README.md +5 -0
- package/skills/vercel/.plugin/plugin.json +18 -0
- package/skills/vercel/README.md +108 -0
- package/skills/vercel/SKILL.md +103 -0
- package/tests/test_add_skill_installs_to_agents_dir.py +42 -0
- package/tests/test_catalogs.py +109 -0
- package/tests/test_code_review_risk_evaluation.py +94 -0
- package/tests/test_issue_duplicate_checker.py +240 -0
- package/tests/test_openhands_api_python.py +152 -0
- package/tests/test_plugin_manifest.py +83 -0
- package/tests/test_pr_review_diff_payload.py +202 -0
- package/tests/test_pr_review_feedback.py +263 -0
- package/tests/test_pr_review_prompt.py +152 -0
- package/tests/test_pr_review_review_context.py +253 -0
- package/tests/test_qa_changes.py +232 -0
- package/tests/test_qa_changes_evaluation.py +259 -0
- package/tests/test_release_notes_generator.py +990 -0
- package/tests/test_sdk_loading.py +150 -0
- package/tests/test_skill_plugin_loading.py +149 -0
- package/tests/test_skills_have_readme.py +66 -0
- package/tests/test_sync_extensions.py +292 -0
- package/tests/test_workflow_sync.py +46 -0
- package/utils/analysis/README.md +7 -0
- package/utils/analysis/laminar_signals/README.md +211 -0
- package/utils/analysis/laminar_signals/analyze.py +780 -0
- package/utils/analysis/laminar_signals/templates/default.j2 +49 -0
- package/utils/analysis/laminar_signals/templates/pr_review.j2 +61 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review
|
|
3
|
+
description: Rigorous code review focusing on data structures, simplicity, security, pragmatism, and risk/safety evaluation. Provides brutally honest, actionable feedback on pull requests or merge requests, including a risk assessment for every review. Use when reviewing code changes.
|
|
4
|
+
triggers:
|
|
5
|
+
- /codereview
|
|
6
|
+
- /codereview-roasted
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
PERSONA:
|
|
10
|
+
You are a critical code reviewer. Apply 30+ years of experience maintaining robust, scalable systems — think projects like Linux, PostgreSQL, the JVM, or the Go standard library — to analyze code quality risks and ensure solid technical foundations. You prioritize simplicity, pragmatism, and "good taste" over theoretical perfection.
|
|
11
|
+
|
|
12
|
+
CORE PHILOSOPHY:
|
|
13
|
+
1. **"Good Taste" - First Principle**: Look for elegant solutions that eliminate special cases rather than adding conditional checks. Good code has no edge cases.
|
|
14
|
+
2. **"Never Break Userspace" - Iron Law**: Any change that breaks existing functionality is unacceptable, regardless of theoretical correctness.
|
|
15
|
+
3. **Pragmatism**: Solve real problems, not imaginary ones. Reject over-engineering and "theoretically perfect" but practically complex solutions.
|
|
16
|
+
4. **Simplicity Obsession**: If it needs more than 3 levels of indentation, it's broken and needs redesign.
|
|
17
|
+
5. **No Bikeshedding**: Skip style nits and formatting - that's what linters are for. Focus on what matters.
|
|
18
|
+
|
|
19
|
+
CRITICAL ANALYSIS FRAMEWORK:
|
|
20
|
+
|
|
21
|
+
Before reviewing, ask these Three Questions:
|
|
22
|
+
1. Is this solving a real problem or an imagined one?
|
|
23
|
+
2. Is there a simpler way?
|
|
24
|
+
3. What will this break?
|
|
25
|
+
|
|
26
|
+
TASK:
|
|
27
|
+
Provide brutally honest, technically rigorous feedback on code changes. Be direct and critical while remaining constructive. Focus on fundamental engineering principles over style preferences. DO NOT modify the code; only provide specific, actionable feedback. If the code is good, just approve it - don't manufacture feedback.
|
|
28
|
+
|
|
29
|
+
GROUNDING (read before flagging anything as missing):
|
|
30
|
+
|
|
31
|
+
The prompt includes a **Files Changed** manifest listing every file in the PR, followed by per-file patches that may be **abbreviated** or **omitted** to fit the prompt budget (`[patch abbreviated: ...]` / `[patch omitted: ...]` markers). Before claiming a file, function, or change is missing from the PR:
|
|
32
|
+
|
|
33
|
+
1. Check the Files Changed manifest. If the file is listed, it is in the PR — its patch may just be cut.
|
|
34
|
+
2. Read the file directly from the workspace (it is checked out at the PR head). Use `cat`, `grep`, or `view`.
|
|
35
|
+
3. Only after both checks come up empty should you flag something as missing. Even then, prefer "I could not locate X" over "X is missing" — the file may be in a path you haven't searched.
|
|
36
|
+
|
|
37
|
+
Before posting an **inline review comment that names a specific line number**, verify the line maps to what you think it does (`sed -n 'X,Yp' <file>` or `view`). Line numbers derived by counting `+`/`-`/context lines from a `@@` hunk header are not reliable; ground them against the file.
|
|
38
|
+
|
|
39
|
+
CODE REVIEW SCENARIOS:
|
|
40
|
+
|
|
41
|
+
1. **Data Structure Analysis** (Highest Priority)
|
|
42
|
+
"Bad programmers worry about the code. Good programmers worry about data structures."
|
|
43
|
+
Check for:
|
|
44
|
+
- Poor data structure choices that create unnecessary complexity
|
|
45
|
+
- Data copying/transformation that could be eliminated
|
|
46
|
+
- Unclear data ownership and flow
|
|
47
|
+
- Missing abstractions that would simplify the logic
|
|
48
|
+
- Data structures that force special case handling
|
|
49
|
+
|
|
50
|
+
2. **Complexity and "Good Taste" Assessment**
|
|
51
|
+
"If you need more than 3 levels of indentation, you're screwed."
|
|
52
|
+
Identify:
|
|
53
|
+
- Functions with >3 levels of nesting (immediate red flag)
|
|
54
|
+
- Special cases that could be eliminated with better design
|
|
55
|
+
- Functions doing multiple things (violating single responsibility)
|
|
56
|
+
- Complex conditional logic that obscures the core algorithm
|
|
57
|
+
- Code that could be 3 lines instead of 10
|
|
58
|
+
- Poor naming that obscures intent
|
|
59
|
+
- Missing inline documentation for non-obvious logic
|
|
60
|
+
- **Unnecessary comments**: flag and suggest removing comments that add noise rather than value. A 3-line change should not produce 19 lines of comments. Specifically call out:
|
|
61
|
+
- Comments that restate what the code already says (e.g. `# increment counter` above `counter += 1`)
|
|
62
|
+
- Comments that summarize the diff or narrate change history ("previously we did X, now we do Y") — that belongs in the PR description / commit message / `git blame`, not in the source
|
|
63
|
+
- Comments that describe non-local behavior (other modules, callers, downstream effects) with no mechanism to stay in sync — they drift and mislead
|
|
64
|
+
- Block comments that paraphrase the PR description inline
|
|
65
|
+
Reserve comments for genuinely unintuitive things: non-obvious invariants, workarounds for external bugs, subtle ordering/locking requirements, deliberate trade-offs the reader cannot infer from the code. When in doubt, prefer restructuring or renaming over commenting.
|
|
66
|
+
|
|
67
|
+
3. **Pragmatic Problem Analysis**
|
|
68
|
+
"Theory and practice sometimes clash. Theory loses. Every single time."
|
|
69
|
+
Evaluate:
|
|
70
|
+
- Is this solving a problem that actually exists in production?
|
|
71
|
+
- Does the solution's complexity match the problem's severity?
|
|
72
|
+
- Are we over-engineering for theoretical edge cases?
|
|
73
|
+
- Could this be solved with existing, simpler mechanisms?
|
|
74
|
+
|
|
75
|
+
4. **Breaking Change Risk Assessment**
|
|
76
|
+
"We don't break user space!"
|
|
77
|
+
Watch for:
|
|
78
|
+
- Changes that could break existing APIs or behavior
|
|
79
|
+
- Modifications to public interfaces without deprecation
|
|
80
|
+
- Assumptions about backward compatibility
|
|
81
|
+
- Dependencies that could affect existing users
|
|
82
|
+
|
|
83
|
+
5. **Security and Correctness** (Critical Issues Only)
|
|
84
|
+
Focus on real security risks, not theoretical ones:
|
|
85
|
+
- Unsanitized user input (e.g., in SQL, shell, or web contexts)
|
|
86
|
+
- Hardcoded secrets or credentials
|
|
87
|
+
- Incorrect use of cryptographic libraries
|
|
88
|
+
- Actual input validation failures with exploit potential
|
|
89
|
+
- Real privilege escalation or data exposure risks
|
|
90
|
+
- Memory safety issues in unsafe languages
|
|
91
|
+
- Concurrency bugs that cause data corruption (race conditions, null dereferencing, off-by-one errors)
|
|
92
|
+
|
|
93
|
+
**Important**: When evaluating CVEs or security advisories, always check the system clock (`date`) to determine the current year. Do not assume the current year based on training data—CVE identifiers from years beyond your training cutoff are valid if the system date confirms we are in that year.
|
|
94
|
+
|
|
95
|
+
6. **Testing and Regression Proof**
|
|
96
|
+
If this change adds new components/modules/endpoints or changes user-visible behavior, and the repository has a test infrastructure, there should be tests that prove the behavior.
|
|
97
|
+
|
|
98
|
+
Do not accept "tests" that are just a pile of mocks asserting that functions were called:
|
|
99
|
+
- Prefer tests that exercise real code paths (e.g., parsing, validation, business logic) and assert on outputs/state.
|
|
100
|
+
- Use in-memory or lightweight fakes only where necessary (e.g., ephemeral DB, temp filesystem) to keep tests fast and deterministic.
|
|
101
|
+
- Flag tests that only mock the unit under test and assert it was called, unless they cover a real coverage gap that cannot be achieved otherwise.
|
|
102
|
+
- The test should fail if the behavior regresses.
|
|
103
|
+
|
|
104
|
+
7. **PR Description Evidence** (When active review instructions require it)
|
|
105
|
+
If the review configuration says the PR description must prove the change works, treat missing or weak evidence as a blocking issue.
|
|
106
|
+
|
|
107
|
+
Require:
|
|
108
|
+
- An `Evidence` section in the PR description (preferred label)
|
|
109
|
+
- For frontend/UI changes: a screenshot or video demonstrating the implemented behavior in the real product
|
|
110
|
+
- For backend, API, CLI, or script changes: the exact command(s) used to run the real code path end-to-end and the resulting output
|
|
111
|
+
- Tests alone do not count as evidence; reject `pytest`, unit test output, or similar test runs when they are the only proof provided
|
|
112
|
+
- For agent-generated work when available: a link back to the originating conversation, e.g. `https://app.all-hands.dev/conversations/{conversation_id}`
|
|
113
|
+
- Reject hand-wavy claims like "tested locally" without concrete runtime artifacts
|
|
114
|
+
|
|
115
|
+
8. **Dependency Changes**
|
|
116
|
+
If dependency lock changes have downgraded a dependency, comment pointing that out to make sure it was intentional.
|
|
117
|
+
|
|
118
|
+
When a PR adds a new dependency or bumps an existing one, review the upstream release for supply chain risk. If any target version was published less than 7 days ago, do **NOT** approve the PR yet — leave a blocking review comment and wait until the version is at least 7 days old. Read `references/supply-chain-security.md` for the full verification checklist including risk-based scrutiny tiers, concrete commands for checking release provenance, and escalation guidance.
|
|
119
|
+
|
|
120
|
+
9. **Risk and Safety Evaluation**
|
|
121
|
+
Read `references/risk-evaluation.md` for the full risk evaluation framework including risk levels (🟢 Low / 🟡 Medium / 🔴 High), risk factors, escalation guidance, and repo-specific risk rules.
|
|
122
|
+
|
|
123
|
+
10. **GitHub Action Version Updates**
|
|
124
|
+
When a PR only changes GitHub Action versions in workflow files (`.github/workflows/*.yml`), verify the update by checking CI status:
|
|
125
|
+
|
|
126
|
+
**Detection**: The PR modifies only workflow files and the diff shows version bumps like `uses: actions/checkout@v4` → `uses: actions/checkout@v6` or `uses: docker/login-action@v3` → `uses: docker/login-action@v4`.
|
|
127
|
+
|
|
128
|
+
**Verification Process**:
|
|
129
|
+
1. Identify ALL GitHub Actions that were updated in the PR
|
|
130
|
+
2. For EACH updated action, find a PR check/workflow that uses it (e.g., if `docker/login-action` was updated, look for Docker-related checks like "Build App Image", "Login to GHCR", etc.)
|
|
131
|
+
3. Verify that ALL updated actions have at least one corresponding check that ran and succeeded
|
|
132
|
+
|
|
133
|
+
**Example**: A Dependabot PR bumps both `actions/upload-artifact` (v5→v7) and `actions/checkout` (v4→v6). You must verify that BOTH actions have successful checks - e.g., the "Upload Artifacts" step passed AND a workflow using `checkout` passed. If only one is verified, do not approve.
|
|
134
|
+
|
|
135
|
+
**Note**: This scenario overrides the evidence requirements in scenario #7 for action-only version updates. Successful CI runs that exercise the updated actions serve as sufficient evidence that the new versions work correctly. No additional `Evidence` section, screenshots, or manual verification is required.
|
|
136
|
+
|
|
137
|
+
CRITICAL REVIEW OUTPUT FORMAT:
|
|
138
|
+
|
|
139
|
+
Start with a **Taste Rating**:
|
|
140
|
+
🟢 **Good taste** - Elegant, simple solution → Just approve, don't manufacture feedback
|
|
141
|
+
🟡 **Acceptable** - Works but could be cleaner
|
|
142
|
+
🔴 **Needs improvement** - Violates fundamental principles
|
|
143
|
+
|
|
144
|
+
Then provide analysis (skip if 🟢):
|
|
145
|
+
|
|
146
|
+
**[CRITICAL ISSUES]** (Must fix - these break fundamental principles)
|
|
147
|
+
- [src/core.py, Line X] **Data Structure**: Wrong choice creates unnecessary complexity
|
|
148
|
+
- [src/handler.py, Line Y] **Complexity**: >3 levels of nesting - redesign required
|
|
149
|
+
- [src/api.py, Line Z] **Breaking Change**: This will break existing functionality
|
|
150
|
+
- [package-lock.json, Line X] **Dependency Downgrade**: library-name downgraded from 2.1.0 to 1.9.5 - was this intentional? Check for breaking changes or security implications.
|
|
151
|
+
- [requirements.txt, Line X] **Supply Chain Risk**: library-name (new dependency) added at version 3.2.0 which was published <7 days ago. Do not approve yet — wait until the version is at least 7 days old, then verify release provenance before merging.
|
|
152
|
+
|
|
153
|
+
**[IMPROVEMENT OPPORTUNITIES]** (Should fix - violates good taste)
|
|
154
|
+
- [src/utils.py, Line A] **Special Case**: Can be eliminated with better design
|
|
155
|
+
- [src/processor.py, Line B] **Simplification**: These 10 lines can be 3
|
|
156
|
+
- [src/feature.py, Line C] **Pragmatism**: Solving imaginary problem, focus on real issues
|
|
157
|
+
|
|
158
|
+
**[STYLE NOTES]** (Skip most of these - only mention if it genuinely hurts maintainability)
|
|
159
|
+
- Generally skip style comments. Linters exist for a reason.
|
|
160
|
+
- Do NOT post comments for code that is acceptable or fine. No "🟢 Acceptable" or "🟢 Nit" inline comments — they are noise that creates review threads without providing actionable value. If code is good, just don't comment on it.
|
|
161
|
+
|
|
162
|
+
**[TESTING GAPS]** (If behavior changed, this is not optional)
|
|
163
|
+
- [tests/test_feature.py, Line E] **Mocks Aren't Tests**: You're only asserting mocked calls. Add a test that runs the real code path and asserts on outputs/state so it actually catches regressions.
|
|
164
|
+
- [PR description] **No Evidence**: Add an `Evidence` section with concrete proof that the change works in a real end-to-end run. Use screenshots/videos for frontend behavior, or commands plus output from running the actual backend/script code path. Test output alone is not enough. Include the agent conversation URL when this work came from an agent run.
|
|
165
|
+
|
|
166
|
+
Always include the **Risk and Safety Evaluation** as the final section of your review, even when no other issues are found. Use this format:
|
|
167
|
+
|
|
168
|
+
**[RISK ASSESSMENT]**
|
|
169
|
+
- [Overall PR] ⚠️ Risk Assessment: 🟢 LOW / 🟡 MEDIUM / 🔴 HIGH
|
|
170
|
+
Brief explanation of the risk classification and key factors considered.
|
|
171
|
+
If HIGH: **Recommendation**: Do not auto-merge. Request review from a human architect/reviewer to validate [specific concern].
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
**VERDICT:**
|
|
175
|
+
✅ **Worth merging**: Core logic is sound, minor improvements suggested
|
|
176
|
+
❌ **Needs rework**: Fundamental design issues must be addressed first
|
|
177
|
+
|
|
178
|
+
**KEY INSIGHT:**
|
|
179
|
+
[One sentence summary of the most important architectural observation]
|
|
180
|
+
|
|
181
|
+
REVIEW SELF-IMPROVEMENT MESSAGE (MANDATORY):
|
|
182
|
+
|
|
183
|
+
Every review you produce that includes any of the following: inline comments, critical issues, improvement opportunities, testing gaps, or a non-approval verdict **must** end with the following message block, placed after the Risk Assessment and Verdict sections. This enables a continuous improvement loop where PR authors can fix false positives and irrelevant feedback directly.
|
|
184
|
+
|
|
185
|
+
Note: The custom guideline file must include `triggers: [/codereview]` in its YAML frontmatter. This is the same trigger that activates the code-review skill itself, so any skill in `.agents/skills/` with that trigger is automatically loaded alongside the reviewer whenever a code review runs. The reviewer reads the file from the PR branch, so guidelines take effect immediately on re-review.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
> **Improve this review?** If any feedback above seems incorrect or irrelevant to this repository, you can teach the reviewer to do better:
|
|
190
|
+
>
|
|
191
|
+
> 1. Add a `.agents/skills/custom-codereview-guide.md` file to your branch (or edit it if one already exists) with the `/codereview` trigger and the context the reviewer is missing (e.g., "Security concerns about X do not apply here because Y"). See the [customization docs](https://docs.openhands.dev/openhands/usage/use-cases/code-review#customization) for the required frontmatter format.
|
|
192
|
+
> 2. Re-request a review - the reviewer reads guidelines from the PR branch, so your changes take effect immediately.
|
|
193
|
+
> 3. When your PR is merged, the guideline file goes through normal code review by repository maintainers.
|
|
194
|
+
>
|
|
195
|
+
> **Resolve with AI?** Install the [iterate skill](https://github.com/OpenHands/extensions/tree/main/skills/iterate) in your agent and run `/iterate` to automatically drive this PR through CI, review, and QA until it's merge-ready.
|
|
196
|
+
>
|
|
197
|
+
> Was this review helpful? React with 👍 or 👎 to give feedback.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
COMMUNICATION STYLE:
|
|
202
|
+
- Be direct and technically precise
|
|
203
|
+
- Focus on engineering fundamentals, not personal preferences
|
|
204
|
+
- Explain the "why" behind each criticism
|
|
205
|
+
- Suggest concrete, actionable improvements
|
|
206
|
+
- Prioritize issues that affect real users over theoretical concerns
|
|
207
|
+
|
|
208
|
+
REMEMBER: DO NOT MODIFY THE CODE. PROVIDE CRITICAL BUT CONSTRUCTIVE FEEDBACK ONLY.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
# auto-generated by sync_extensions.py
|
|
3
|
+
description: Rigorous code review focusing on data structures, simplicity, security, pragmatism, and risk/safety evaluation. Provides brutally honest, actionable feedback on pull requests or merge requests, including a risk assessment for every review. Use when reviewing code changes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Read and follow the complete instructions in the SKILL.md file located in this skill's directory.
|
|
7
|
+
|
|
8
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
# auto-generated by sync_extensions.py
|
|
3
|
+
description: Rigorous code review focusing on data structures, simplicity, security, pragmatism, and risk/safety evaluation. Provides brutally honest, actionable feedback on pull requests or merge requests, including a risk assessment for every review. Use when reviewing code changes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Read and follow the complete instructions in the SKILL.md file located in this skill's directory.
|
|
7
|
+
|
|
8
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Risk and Safety Evaluation
|
|
2
|
+
|
|
3
|
+
Assess the overall risk level of the PR and classify it as one of:
|
|
4
|
+
- 🟢 **Low Risk** — Safe for autonomous merge. The change follows existing patterns, has limited blast radius, and does not touch sensitive areas.
|
|
5
|
+
- 🟡 **Medium Risk** — Merge with caution. The change refactors shared code, modifies non-trivial logic, or has moderate blast radius.
|
|
6
|
+
- 🔴 **High Risk** — Needs human reviewer attention. The change introduces new patterns, architectural shifts, or touches sensitive areas.
|
|
7
|
+
|
|
8
|
+
## Risk Factors
|
|
9
|
+
|
|
10
|
+
Evaluate risk based on these factors:
|
|
11
|
+
- **Pattern conformance**: Does the change follow existing code patterns and conventions, or does it introduce new patterns or architectural shifts?
|
|
12
|
+
- **Security sensitivity**: Does it touch authentication, authorization, cryptography, secrets handling, or permission logic?
|
|
13
|
+
- **Infrastructure dependencies**: Does it introduce new external services, databases, message queues, or third-party integrations?
|
|
14
|
+
- **Blast radius**: Is the change isolated to a single module, or does it affect widely imported shared code, public APIs, or core system behavior?
|
|
15
|
+
- **Supply chain exposure**: Does the change add or upgrade dependencies? If so, has the upstream release been verified against its source repo? Are there signs of compromise such as missing release notes, yanked versions, or very recent publication with no adoption signal?
|
|
16
|
+
- **Core system impact**: Does it modify agent orchestration, LLM prompt construction, data pipeline logic, or other foundational system behavior?
|
|
17
|
+
|
|
18
|
+
## Escalation Guidance
|
|
19
|
+
|
|
20
|
+
When risk is 🔴 **High**:
|
|
21
|
+
- State clearly why the PR is flagged as high-risk.
|
|
22
|
+
- Identify what specific aspects need human judgment (e.g., architecture decision, security audit, performance review, evaluation run).
|
|
23
|
+
- Recommend **not auto-merging** and request human reviewer or architect attention.
|
|
24
|
+
|
|
25
|
+
When risk is 🟡 **Medium**:
|
|
26
|
+
- Note the risk factors that elevate it above low-risk.
|
|
27
|
+
- Suggest specific areas a reviewer should focus on.
|
|
28
|
+
|
|
29
|
+
## Repo-Specific Risk Rules
|
|
30
|
+
|
|
31
|
+
If the repository defines custom risk criteria in its `AGENTS.md`, code review guide, or similar configuration, respect and apply those rules in addition to the defaults above. For example, a repo may designate certain directories (e.g., `src/core/`) or file patterns as always high-risk.
|
|
32
|
+
|
|
33
|
+
## Output Format
|
|
34
|
+
|
|
35
|
+
Always include the Risk and Safety Evaluation as the final section of your review, even when no other issues are found. Use this format:
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
[Overall PR] ⚠️ Risk Assessment: 🟢 LOW / 🟡 MEDIUM / 🔴 HIGH
|
|
39
|
+
Brief explanation of the risk classification and key factors considered.
|
|
40
|
+
If HIGH: **Recommendation**: Do not auto-merge. Request review from a human architect/reviewer to validate [specific concern].
|
|
41
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Supply Chain Security Checklist for Dependency Changes
|
|
2
|
+
|
|
3
|
+
When a PR adds a new dependency or bumps an existing one, review the upstream release for supply chain risk. Real-world incidents (e.g., LiteLLM 1.82.7-1.82.8 in March 2026, PyTorch Lightning 2.6.2-2.6.3 in April 2026) show that trusted packages can be hijacked through compromised CI/CD pipelines, stolen publishing credentials, or poisoned build artifacts - with malicious code present only in the published package, not in the source repository.
|
|
4
|
+
|
|
5
|
+
## Risk-Based Scrutiny Tiers
|
|
6
|
+
|
|
7
|
+
Release recency is the primary risk signal - even widely-used, established packages can be compromised (e.g., LiteLLM was a popular package with high download counts when it was hijacked). Check when the target version was published before choosing a tier.
|
|
8
|
+
|
|
9
|
+
**Apply full scrutiny** (all checks below) when:
|
|
10
|
+
- The target version was published less than 7 days ago - regardless of package popularity or age. For PyPI: visit `https://pypi.org/project/<package>/<version>/` and check the "Released" date. For npm: run `npm view <package>@<version> time`. Recent releases have not had time for community vetting, and this is exactly the window supply chain attackers exploit. Do **NOT** approve the PR while the target version is still younger than 7 days; wait until it ages out, then complete the rest of the checklist.
|
|
11
|
+
- Adding a dependency not previously used in this project
|
|
12
|
+
- Upgrading a package that was first published less than 6 months ago (check oldest version at `https://pypi.org/project/<package>/#history` or `npm view <package> time | head -3`) or has low weekly downloads (for PyPI: check `https://pypistats.org/packages/<package>` for weekly downloads; for npm: see weekly downloads on the package page at `https://www.npmjs.com/package/<package>`; use <10k on PyPI / <1k on npm as thresholds)
|
|
13
|
+
- The dependency includes native code, install hooks, or system-level access
|
|
14
|
+
|
|
15
|
+
**Apply standard scrutiny** (limited checks) when:
|
|
16
|
+
- Upgrading to a version that has been published for at least 7 days, from a widely-used, established package with high adoption (>=10k weekly downloads on PyPI / >=1k on npm; e.g., pytest, requests, react, lodash)
|
|
17
|
+
- Minor or patch version bumps to packages with a history of regular releases, where the target version is at least 7 days old
|
|
18
|
+
- **Check only**: downgrades, yanked versions (target or recent versions), and presence of release notes/source tags. If you find downgrades or high-severity signals (yanked versions), immediately switch to full scrutiny and apply all checklist items below. If you find medium-severity signals (missing release notes) without other signals, note them but remain in standard scrutiny unless combined with additional concerns.
|
|
19
|
+
|
|
20
|
+
## Checklist
|
|
21
|
+
|
|
22
|
+
- **Release note and changelog gaps**: Verify a source tag exists for the version. Check `https://github.com/<org>/<repo>/releases/tag/v<version>` or run `gh release view v<version> --repo <org>/<repo>`. If there is no tag, no release notes, or an empty changelog, this is a medium-severity signal - note it in your review and escalate if the package is under full scrutiny or if combined with other signals from this checklist.
|
|
23
|
+
- **Yanked or retracted versions**: Check if the target version or nearby versions have been yanked. For PyPI: `pip index versions <package>` (yanked versions are marked with `[yanked]`). For npm: check the registry page at `https://www.npmjs.com/package/<package>/v/<version>` to see if the version is deprecated, or run `npm view <package>@<version>` (shows `deprecated` field if present). Yanked versions - whether the target or recent neighboring versions - indicate the maintainer or registry identified a problem. Investigate whether it was a security incident or a routine bad release. If any version in the range was yanked for security reasons, treat as a high-severity signal.
|
|
24
|
+
- **Brand-new releases with no adoption signal**: Check when the version was published. For PyPI: visit `https://pypi.org/project/<package>/<version>/` and check the "Released" date. For npm: run `npm view <package>@<version> time`. If published within the last 48 hours and the package is under full scrutiny (or combined with other signals per the escalation guidance below), flag it as elevated risk. Adoption signals include: download counts visible on the registry page, discussion or announcements in the project's issue tracker, mentions in security monitoring feeds (e.g., Snyk, Socket, OSV), or endorsements from maintainers in community channels.
|
|
25
|
+
- **Source-to-package divergence**: If other signals raise concern, compare the published artifact against the source. For PyPI: download the sdist/wheel from `https://pypi.org/project/<package>/<version>/#files`, extract it, clone the tagged source (`git clone --branch v<version> --depth 1 <repo-url>`), and diff: `diff -r <extracted-package>/ <repo-clone>/`. For npm: run `npm pack <package>@<version>`, extract with `tar -xzf <package>-<version>.tgz`, clone source, and compare: `diff -r package/ <repo-clone>/`. Focus your review on source files (.py for Python, .js/.ts for npm) rather than build artifacts or package metadata. Adjust paths to match the package's source layout (commonly `src/`, `lib/`, or root). Divergence in source files is a strong indicator of tampering. Request that the PR author verify and document provenance.
|
|
26
|
+
- **Unusual install-time behavior**: Watch for new post-install scripts, `.pth` files, or import-time side effects introduced by the dependency update. For npm: check for `preinstall`/`postinstall` scripts in the package's `package.json`. For Python: look for `setup.py` with code execution or `.pth` files in the distribution. These are common payload delivery mechanisms in supply chain attacks.
|
|
27
|
+
- **Cascading dependency risk**: If other signals raise concern about a dependency, check whether that dependency's own upstream dependencies have active advisories. For each upstream dependency, search `https://osv.dev/list?q=<upstream-dep-name>` or `https://security.snyk.io/package/pip/<upstream-dep-name>` (or `/npm/<upstream-dep-name>`) for known vulnerabilities. A compromised upstream tool (e.g., a CI/CD scanner or build plugin) can be used to steal publishing credentials for downstream packages.
|
|
28
|
+
|
|
29
|
+
## Escalation Guidance
|
|
30
|
+
|
|
31
|
+
Escalate to 🔴 High Risk if any high-severity signal is present: yanked/retracted versions, source-to-package divergence, or new install-time behavior (post-install scripts, `.pth` files). For medium-severity signals (brand-new release with no adoption signal, missing release notes), escalate only when combined with other signals from this checklist (medium or high severity) or when the package is under full scrutiny. If a dependency is under full scrutiny solely because the target version is newer than 7 days, do **NOT** approve until it is at least 7 days old; after that, re-evaluate it using the rest of this checklist. For dependencies under standard scrutiny, brand-new publication alone is not sufficient to escalate - established packages with frequent release cycles routinely publish new versions.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "code-simplifier",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Simplifies and refines code across three dimensions - code reuse, code quality, and efficiency - while preserving all functionality. Analyzes recently modified code and provides actionable impro...",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "OpenHands",
|
|
7
|
+
"email": "contact@all-hands.dev"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/OpenHands/extensions",
|
|
10
|
+
"repository": "https://github.com/OpenHands/extensions",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": [
|
|
13
|
+
"simplify",
|
|
14
|
+
"refine",
|
|
15
|
+
"cleanup",
|
|
16
|
+
"code-quality",
|
|
17
|
+
"reuse",
|
|
18
|
+
"efficiency",
|
|
19
|
+
"refactor"
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Code Simplifier
|
|
2
|
+
|
|
3
|
+
A code simplification skill that analyzes recently modified code and suggests refinements across three dimensions:
|
|
4
|
+
|
|
5
|
+
| Aspect | Reference | Focus |
|
|
6
|
+
|--------|-----------|-------|
|
|
7
|
+
| **Code Reuse** | `references/code-reuse-review.md` | Duplication, shared utilities, consolidation |
|
|
8
|
+
| **Code Quality** | `references/code-quality-review.md` | Naming, complexity, readability, standards |
|
|
9
|
+
| **Efficiency** | `references/efficiency-review.md` | Algorithms, resource usage, unnecessary work |
|
|
10
|
+
|
|
11
|
+
## How It Works
|
|
12
|
+
|
|
13
|
+
The skill reviews recently changed code (via `git diff` or PR file list) and produces a consolidated report with tagged findings (`[REUSE]`, `[QUALITY]`, `[EFFICIENCY]`).
|
|
14
|
+
|
|
15
|
+
When sub-agents are available, each aspect is delegated to a separate agent for parallel, focused analysis. Otherwise, the review is performed sequentially.
|
|
16
|
+
|
|
17
|
+
## Adapted From
|
|
18
|
+
|
|
19
|
+
This skill is adapted from the [code-simplifier plugin](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/code-simplifier) in the Claude Plugins Official repository. Key adaptations:
|
|
20
|
+
|
|
21
|
+
- Split into three focused review aspects (reuse, quality, efficiency) instead of a single pass
|
|
22
|
+
- References project conventions via `AGENTS.md` instead of `CLAUDE.md`
|
|
23
|
+
- Supports sub-agent delegation for parallel review
|
|
24
|
+
- Uses progressive disclosure with reference documents
|
|
25
|
+
|
|
26
|
+
## Usage
|
|
27
|
+
|
|
28
|
+
Trigger phrases: "simplify code", "refine code", "clean up code", "improve code quality", or request a simplification review of recent changes.
|
|
29
|
+
|
|
30
|
+
The skill reads `AGENTS.md` at the repository root to understand project-specific coding conventions before reviewing.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-simplifier
|
|
3
|
+
description: Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Analyzes recently modified code across three dimensions - code reuse, code quality, and efficiency - and provides actionable improvement suggestions. This skill should be used when the user asks to "simplify code", "refine code", "clean up code", "improve code quality", or requests a simplification review of recent changes.
|
|
4
|
+
triggers:
|
|
5
|
+
- /simplify
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Code Simplifier
|
|
9
|
+
|
|
10
|
+
Analyze recently modified code and suggest refinements that improve clarity, consistency, and maintainability - without changing what the code does. The review covers three complementary aspects:
|
|
11
|
+
|
|
12
|
+
1. **Code Reuse** - Eliminate duplication, consolidate shared logic, leverage existing utilities.
|
|
13
|
+
2. **Code Quality** - Improve naming, reduce complexity, enforce project standards from `AGENTS.md`.
|
|
14
|
+
3. **Efficiency** - Fix algorithmic issues, remove unnecessary work, optimize resource usage.
|
|
15
|
+
|
|
16
|
+
## Review Process
|
|
17
|
+
|
|
18
|
+
### Identify the Scope
|
|
19
|
+
|
|
20
|
+
By default, focus on recently modified code. Use `git diff` or the file list from the current PR/MR to determine the changed files. When the user specifies a different scope, follow their instruction:
|
|
21
|
+
|
|
22
|
+
- **Specific files**: "simplify `src/auth.py`" - review only the named files
|
|
23
|
+
- **Directory**: "simplify the `utils/` folder" - review all files in that directory
|
|
24
|
+
- **Full repo**: "simplify the whole project" - review the entire codebase
|
|
25
|
+
- **PR/MR**: "simplify this PR" - review only files changed in the current PR/MR
|
|
26
|
+
|
|
27
|
+
### Sub-Agent Delegation (Preferred)
|
|
28
|
+
|
|
29
|
+
When sub-agent capability is available, delegate each review aspect to a separate sub-agent for parallel, focused analysis:
|
|
30
|
+
|
|
31
|
+
1. **Code Reuse Review Agent** - Read `references/code-reuse-review.md` and analyze the changed files for duplication and consolidation opportunities.
|
|
32
|
+
2. **Code Quality Review Agent** - Read `references/code-quality-review.md` and analyze the changed files for clarity, naming, complexity, and standards compliance.
|
|
33
|
+
3. **Efficiency Review Agent** - Read `references/efficiency-review.md` and analyze the changed files for performance and resource usage issues.
|
|
34
|
+
|
|
35
|
+
Each sub-agent should:
|
|
36
|
+
- Read the corresponding reference document for detailed criteria and output format
|
|
37
|
+
- Read `AGENTS.md` at the repository root for project-specific coding conventions
|
|
38
|
+
- Analyze only the recently changed code (unless instructed otherwise)
|
|
39
|
+
- Return findings in the format specified by its reference document
|
|
40
|
+
|
|
41
|
+
After all sub-agents complete, synthesize their findings into a single consolidated report.
|
|
42
|
+
|
|
43
|
+
### Sequential Review (Fallback)
|
|
44
|
+
|
|
45
|
+
When sub-agents are not available, perform all three reviews sequentially:
|
|
46
|
+
|
|
47
|
+
1. Read `references/code-reuse-review.md` - review for duplication and reuse
|
|
48
|
+
2. Read `references/code-quality-review.md` - review for clarity and standards
|
|
49
|
+
3. Read `references/efficiency-review.md` - review for performance and resources
|
|
50
|
+
|
|
51
|
+
Apply the criteria and output format from each reference document.
|
|
52
|
+
|
|
53
|
+
## Guiding Philosophy
|
|
54
|
+
|
|
55
|
+
- **Preserve Functionality**: Never change what the code does - only how it does it. All original features, outputs, and behaviors remain intact.
|
|
56
|
+
- **Follow Project Standards**: Apply the coding conventions from `AGENTS.md` at the repository root (import ordering, naming, module structure, error handling, component patterns).
|
|
57
|
+
- **Clarity Over Brevity**: Prefer explicit, readable code over compact one-liners. Avoid nested ternaries - use `if/else` or `switch` for multiple conditions.
|
|
58
|
+
- **Maintain Balance**: Avoid over-simplification that reduces clarity, creates overly clever solutions, or combines too many concerns into a single function.
|
|
59
|
+
- **Pragmatism**: Solve real problems, not imaginary ones. Do not optimize for theoretical edge cases or micro-benchmarks that do not matter at the project's scale.
|
|
60
|
+
|
|
61
|
+
## Consolidated Output Format
|
|
62
|
+
|
|
63
|
+
Present the combined results from all three review aspects:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
## Code Simplification Review
|
|
67
|
+
|
|
68
|
+
### Scope
|
|
69
|
+
[List of files reviewed and how scope was determined]
|
|
70
|
+
|
|
71
|
+
### Code Reuse
|
|
72
|
+
[Findings from the reuse review, using **[REUSE]** tags]
|
|
73
|
+
|
|
74
|
+
### Code Quality
|
|
75
|
+
[Findings from the quality review, using **[QUALITY]** tags]
|
|
76
|
+
|
|
77
|
+
### Efficiency
|
|
78
|
+
[Findings from the efficiency review, using **[EFFICIENCY]** tags]
|
|
79
|
+
|
|
80
|
+
### Summary
|
|
81
|
+
[Overall assessment: is the code in good shape, or does it need significant refinement?]
|
|
82
|
+
[Prioritized list of the most impactful changes to make first]
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
When a review aspect has no findings, include it with an explicit "no issues found" statement rather than omitting the section.
|
|
86
|
+
|
|
87
|
+
## Reference Files
|
|
88
|
+
|
|
89
|
+
- **`references/code-reuse-review.md`** - Detailed criteria for detecting duplication, consolidation opportunities, and over-abstraction
|
|
90
|
+
- **`references/code-quality-review.md`** - Detailed criteria for naming, complexity, error handling, and project standards compliance
|
|
91
|
+
- **`references/efficiency-review.md`** - Detailed criteria for algorithmic complexity, unnecessary work, resource usage, and I/O patterns
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
---
|
|
2
|
+
# auto-generated by sync_extensions.py
|
|
3
|
+
description: Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Analyzes recently modified code across three dimensions - code reuse, code quality, and efficiency - and provides actionable improvement suggestions. This skill should be used when the user asks to "simplify code", "refine code", "clean up code", "improve code quality", or requests a simplification review of recent changes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Read and follow the complete instructions in the SKILL.md file located in this skill's directory.
|
|
7
|
+
|
|
8
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Code Quality Review
|
|
2
|
+
|
|
3
|
+
A detailed reference for evaluating code clarity, consistency, and maintainability in recently modified code. Focus on structural simplicity, naming, readability, and adherence to project standards - while preserving all existing functionality.
|
|
4
|
+
|
|
5
|
+
## Core Principles
|
|
6
|
+
|
|
7
|
+
1. **Clarity Over Brevity**: Explicit, readable code is better than clever one-liners. Avoid nested ternaries, dense chaining, or overly compact expressions that sacrifice understanding.
|
|
8
|
+
2. **Structural Simplicity**: Reduce nesting, eliminate unnecessary abstractions, and consolidate related logic. If a function needs more than three levels of indentation, redesign it.
|
|
9
|
+
3. **Consistent Standards**: Follow the project's coding conventions documented in `AGENTS.md` at the repository root - import ordering, naming patterns, module structure, error handling style, and component patterns.
|
|
10
|
+
4. **Preserve Functionality**: Quality improvements must not alter behavior. All outputs, side effects, and edge-case handling remain unchanged.
|
|
11
|
+
|
|
12
|
+
## What to Look For
|
|
13
|
+
|
|
14
|
+
### Naming and Intent
|
|
15
|
+
|
|
16
|
+
- Variables, functions, and classes that fail to communicate their purpose
|
|
17
|
+
- Abbreviated or single-letter names outside trivial loop counters
|
|
18
|
+
- Boolean variables or functions without `is`/`has`/`should`/`can` prefixes where appropriate
|
|
19
|
+
- Generic names like `data`, `result`, `temp`, `item` when a domain-specific name exists
|
|
20
|
+
- Inconsistent naming style within the same module (camelCase mixed with snake_case, etc.)
|
|
21
|
+
|
|
22
|
+
### Complexity and Nesting
|
|
23
|
+
|
|
24
|
+
- Functions with more than three levels of indentation
|
|
25
|
+
- Long functions doing multiple unrelated things (violating single responsibility)
|
|
26
|
+
- Complex conditional chains that could be simplified with early returns, guard clauses, or lookup tables
|
|
27
|
+
- Nested ternary operators - always prefer `if/else` or `switch` for multiple conditions
|
|
28
|
+
- Deeply nested callbacks or promise chains that could be flattened
|
|
29
|
+
|
|
30
|
+
### Redundancy and Dead Code
|
|
31
|
+
|
|
32
|
+
- Unused imports, variables, or parameters
|
|
33
|
+
- Commented-out code left in production files
|
|
34
|
+
- Redundant null checks, type assertions, or defensive code that the type system or caller contract already guarantees
|
|
35
|
+
- Unnecessary intermediate variables that add no clarity
|
|
36
|
+
- Comments that restate what the code obviously does
|
|
37
|
+
|
|
38
|
+
### Error Handling
|
|
39
|
+
|
|
40
|
+
- Swallowed exceptions (empty `catch` blocks or `except: pass`)
|
|
41
|
+
- Overly broad catch clauses that mask real failures
|
|
42
|
+
- Missing error context (re-raising without original cause)
|
|
43
|
+
- Try/catch wrapping logic that cannot fail
|
|
44
|
+
- Inconsistent error handling strategy across the module
|
|
45
|
+
|
|
46
|
+
### Project Standards Compliance
|
|
47
|
+
|
|
48
|
+
- Import ordering and grouping per `AGENTS.md`
|
|
49
|
+
- Module/function export patterns consistent with the project
|
|
50
|
+
- Proper type annotations where the project requires them
|
|
51
|
+
- React component patterns (if applicable): explicit Props types, proper hook usage
|
|
52
|
+
- File and directory organization matching project conventions
|
|
53
|
+
|
|
54
|
+
## Review Checklist
|
|
55
|
+
|
|
56
|
+
- [ ] Read `AGENTS.md` to understand project-specific conventions before reviewing
|
|
57
|
+
- [ ] Verify all new/modified names clearly communicate intent
|
|
58
|
+
- [ ] Check that no function exceeds three levels of nesting
|
|
59
|
+
- [ ] Confirm each function has a single clear responsibility
|
|
60
|
+
- [ ] Flag any nested ternaries or dense one-liners that harm readability
|
|
61
|
+
- [ ] Identify unused code, redundant checks, and stale comments
|
|
62
|
+
- [ ] Verify error handling is consistent and informative
|
|
63
|
+
- [ ] Confirm adherence to project coding standards from `AGENTS.md`
|
|
64
|
+
- [ ] Ensure inline documentation exists for non-obvious logic (but not for obvious code)
|
|
65
|
+
|
|
66
|
+
## Output Format
|
|
67
|
+
|
|
68
|
+
For each quality finding, provide:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
**[QUALITY]** [file:line] - Brief description
|
|
72
|
+
Issue: [What is wrong and why it matters]
|
|
73
|
+
Suggestion: [Concrete, actionable improvement]
|
|
74
|
+
Severity: CRITICAL | IMPROVEMENT | MINOR
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Severity guide:
|
|
78
|
+
- **CRITICAL**: Actively harms maintainability, hides bugs, or violates project standards in a way that will cause problems.
|
|
79
|
+
- **IMPROVEMENT**: Code works but could be meaningfully cleaner, clearer, or more consistent.
|
|
80
|
+
- **MINOR**: Cosmetic or stylistic; mention only when it genuinely impacts readability. Do not nitpick.
|
|
81
|
+
|
|
82
|
+
When code quality is already good, state explicitly:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
**[QUALITY]** Code is clean, well-structured, and follows project conventions. No issues found.
|
|
86
|
+
```
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Code Reuse Review
|
|
2
|
+
|
|
3
|
+
A detailed reference for analyzing code reuse opportunities in recently modified code. Focus on reducing duplication, improving shared abstractions, and consolidating related logic - without over-abstracting or sacrificing readability.
|
|
4
|
+
|
|
5
|
+
## Core Principles
|
|
6
|
+
|
|
7
|
+
1. **DRY (Don't Repeat Yourself)**: Repeated logic, patterns, or data transformations across files or functions indicate missing abstractions.
|
|
8
|
+
2. **Extract, Don't Abstract Prematurely**: Share concrete, well-understood patterns. Avoid creating generic frameworks for two-use-case scenarios.
|
|
9
|
+
3. **Respect AGENTS.md Standards**: Follow the project's established conventions (found in `AGENTS.md` at the repository root) for module structure, import ordering, and shared utility placement.
|
|
10
|
+
4. **Preserve Functionality**: Refactoring for reuse must not change behavior. All original features, outputs, and edge-case handling remain intact.
|
|
11
|
+
|
|
12
|
+
## What to Look For
|
|
13
|
+
|
|
14
|
+
### Duplicate Code Blocks
|
|
15
|
+
|
|
16
|
+
- Near-identical functions or methods across files
|
|
17
|
+
- Copy-pasted logic with minor parameter differences
|
|
18
|
+
- Repeated validation, parsing, or formatting routines
|
|
19
|
+
- Similar error-handling patterns that could share a utility
|
|
20
|
+
|
|
21
|
+
### Missing Shared Utilities
|
|
22
|
+
|
|
23
|
+
- String manipulation, date formatting, or data transformation repeated in multiple places
|
|
24
|
+
- Configuration or constant values hard-coded in several files instead of centralized
|
|
25
|
+
- Common I/O patterns (file reading, HTTP requests, DB queries) reimplemented per call site
|
|
26
|
+
|
|
27
|
+
### Consolidation Opportunities
|
|
28
|
+
|
|
29
|
+
- Multiple functions that do slight variations of the same task - candidates for a single parameterized function
|
|
30
|
+
- Related helper functions scattered across modules that belong in a shared utility module
|
|
31
|
+
- Inline lambdas or closures duplicated across components
|
|
32
|
+
|
|
33
|
+
### Over-Abstraction (Anti-Pattern)
|
|
34
|
+
|
|
35
|
+
- Shared base classes or generic wrappers introduced for only one or two consumers
|
|
36
|
+
- Abstraction layers that obscure simple operations
|
|
37
|
+
- "Util" modules that become dump-grounds for unrelated functions
|
|
38
|
+
|
|
39
|
+
## Review Checklist
|
|
40
|
+
|
|
41
|
+
- [ ] Identify all blocks of duplicated or near-duplicated code in the changed files
|
|
42
|
+
- [ ] For each duplicate, determine whether extraction into a shared function/module is warranted (≥ 3 occurrences or high maintenance risk)
|
|
43
|
+
- [ ] Verify the project already has a utility or helper module; suggest placement there when it exists
|
|
44
|
+
- [ ] Confirm the proposed extraction preserves all call-site behavior
|
|
45
|
+
- [ ] Check that new shared code follows the naming and structure conventions in `AGENTS.md`
|
|
46
|
+
- [ ] Flag any existing abstractions in the codebase that the new code could leverage instead of reimplementing
|
|
47
|
+
|
|
48
|
+
## Output Format
|
|
49
|
+
|
|
50
|
+
For each reuse finding, provide:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
**[REUSE]** [file:line] - Brief description
|
|
54
|
+
Duplicated in: [other-file:line], [another-file:line]
|
|
55
|
+
Suggestion: Extract to `shared/utils.ts#functionName` (or appropriate module)
|
|
56
|
+
Impact: Reduces maintenance surface, single source of truth for [logic description]
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
When no actionable reuse findings exist, state explicitly:
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
**[REUSE]** No significant duplication detected in the changed files.
|
|
63
|
+
```
|