fix(plugins): omit discovery keys from marketplace manifests (#1833)#1835
Conversation
PR Validation ReportCaution ❌ Status: FAIL Description Validation
PR Standards
QA Validation
|
Spec-to-Implementation ValidationTip ✅ Final Verdict: PASS What is Spec Validation?This validation ensures your implementation matches the specifications:
Validation Summary
Spec References
Requirements Traceability DetailsRequirements Coverage Matrix
Summary
Gaps
The Revised Summary
Gaps
Implementation Completeness DetailsAcceptance Criteria Checklist
Missing FunctionalityNone identified. All fields causing the Edge Cases Not Covered
Implementation Quality
Run Details
Powered by AI Spec Validator workflow |
AI Quality Gate ReviewTip ✅ Final Verdict: PASS WalkthroughThis PR was reviewed by six AI agents in parallel, analyzing different aspects of the changes:
Review Summary
💡 Quick Access: Click on individual agent jobs (e.g., "🔒 security Review", "🧪 qa Review") in the workflow run to see detailed findings and step summaries. Security Review DetailsSecurity Review: PR #1835PR Type Classification
Primary category: CODE + CONFIG (validation script hardening) Findings
Security Analysis1. Path Traversal Prevention (CWE-22) [PASS] The validator properly handles paths:
2. Input Validation [PASS]
3. File Operations [PASS]
4. No Code Execution Risks [PASS]
5. Secrets Exposure [PASS]
Defensive Improvements in This PRThe PR adds validation that:
RecommendationsNone required. The changes are defensive in nature and improve validation coverage. Verdict{
"verdict": "PASS",
"message": "Validation script changes use safe path handling and add defensive checks. No secrets, injection vectors, or unsafe operations detected.",
"agent": "security",
"timestamp": "2026-05-01T13:32:17.003Z",
"findings": []
}QA Review DetailsNow I have all the context needed for the QA review. QA Review: PR #1835PR Type ClassificationTest Coverage Assessment
New Code AnalysisNew functions in
Test quality verification:
Code Quality Check
Error Handling Verification
Regression Risk Assessment
Integration Test Update ReviewThe
This aligns with the runtime behavior documented in issue #1833. Quality Concerns
Pre-Executed Test Results
Verdict{
"verdict": "PASS",
"message": "Fix correctly guards marketplace manifests against runtime-rejected keys with comprehensive regression tests.",
"agent": "qa",
"timestamp": "2026-05-01T13:33:46Z",
"findings": [
{
"severity": "low",
"category": "code-quality",
"description": "Variable renamed from 'errors' to 'inline_errors' to avoid shadowing outer scope variable",
"location": "build/scripts/validate_plugin_manifests.py:222",
"recommendation": "No action required; rename improves readability"
}
]
}Analyst Review DetailsNow I have a complete view of the changes. Let me provide the analysis. Code Quality Analysis: PR #1835Code Quality Score
Overall: 5/5 Impact Assessment
Findings
Recommendations
Evidence
Verdict{
"verdict": "PASS",
"message": "Targeted fix for Claude Code 2.1.122 marketplace compatibility with comprehensive regression tests and manual verification",
"agent": "analyst",
"timestamp": "2026-05-01T13:32:23.431Z",
"findings": [
{
"severity": "low",
"category": "maintainability",
"description": "Variable rename from errors to inline_errors improves code clarity",
"location": "build/scripts/validate_plugin_manifests.py:222",
"recommendation": "No action needed, this is a positive change"
}
]
}Architect Review DetailsDesign Quality Assessment
Overall Design Score: 4.8/5 Architectural Concerns
Breaking Change Assessment
Technical Debt Analysis
ADR Assessment
Recommendations
Verdict{
"verdict": "PASS",
"message": "Well-scoped compatibility fix with appropriate validation guard and comprehensive test coverage",
"agent": "architect",
"timestamp": "2026-05-01T13:32:21Z",
"findings": [
{
"severity": "low",
"category": "extensibility",
"description": "Path patterns for marketplace manifest detection are hardcoded tuples",
"location": "build/scripts/validate_plugin_manifests.py:95-99",
"recommendation": "Acceptable for repo-specific validation; patterns are unlikely to change frequently"
}
]
}DevOps Review DetailsDevOps Review: PR #1835PR Scope Detection
This is a CONFIG + SCRIPT PR, not a WORKFLOW PR. No GitHub Actions or CI pipeline files are modified. Pipeline Impact Assessment
CI/CD Quality Checks
Script Quality Review
The new validation logic (
Findings
Template Assessment
Automation Opportunities
Recommendations
Verdict{
"verdict": "PASS",
"message": "No CI/CD changes; validation script is well-structured with proper exit codes and test coverage.",
"agent": "devops",
"timestamp": "2026-05-01T13:32:20.885Z",
"findings": [
{
"severity": "low",
"category": "automation",
"description": "Manifest validation runs manually or in CI but could be a pre-commit hook",
"location": "build/scripts/validate_plugin_manifests.py",
"recommendation": "Consider adding to .pre-commit-config.yaml for earlier feedback"
}
]
}Roadmap Review DetailsStrategic Alignment Assessment
Feature Completeness
Impact Analysis
Concerns
Recommendations
Verdict{
"verdict": "PASS",
"message": "Bug fix restores marketplace plugin install for all 5 plugins with regression prevention.",
"agent": "roadmap",
"timestamp": "2026-05-01T13:32:24Z",
"findings": [
{
"severity": "low",
"category": "documentation",
"description": "Validator comment references Claude Code version 2.1.122 which documents the behavioral constraint",
"location": "build/scripts/validate_plugin_manifests.py:86-88",
"recommendation": "No action needed. Version pinning in comments aids future debugging."
}
]
}Run Details
Powered by AI Quality Gate workflow |
There was a problem hiding this comment.
Code Review
This pull request updates the plugin.json configuration files across several directories to standardize the schema. Specifically, the agents, skills, and commands fields have been converted from single string values to arrays, and the author object has been reformatted for improved readability. I have no feedback to provide.
This regression (agents/skills/commands/hooks rejected by Claude Code at install time) has shipped THREE TIMES in five days: - PR #1773 (Apr 26) — original break - PR #1825 (Apr 30) — re-broke as 'plugin manifest hardening' - PR #1835 v1/v2 (Apr 30, this branch) — wrong fixes before landing on the right one (delete the keys) Each iteration cost the same set of investigations and customer outage because the prior fix's reasoning was nowhere a future contributor would find it. ADR-058 fixes that by encoding the rule + the history + the gate references into one canonical document. Wires: - build/scripts/validate_plugin_manifests.py Adds _check_adr_058_forbidden_keys() called from validate_manifest() BEFORE any field-level validation. Error message cites ADR-058 and the PR history so a future contributor lands on the postmortem. - tests/build_scripts/test_validate_plugin_manifests.py Inverts pre-ADR-058 'this key is valid' assertions into 'ADR-058 rejects this key' assertions. Adds 8 new test cases covering each forbidden key + the 'multiple keys produce one consolidated message' contract + the 'minimal manifest still passes' negative case. - scripts/validation/test_plugin_install.sh Header now references ADR-058 as the canonical source of the rule. All 262 tests in tests/build_scripts/ pass. Live install smoke test still passes for the 3 Claude-targeted plugins; Copilot-targeted plugins' separate hook-format issue intentionally out of scope (see PR description).
Review Triage RequiredNote Priority: NORMAL - Human approval required before bot responds Review Summary
Next Steps
Powered by PR Maintenance workflow - Add triage:approved label |
fff05f8 to
778b827
Compare
Summary
agentsfield rejected as 'Invalid input' by Claude Code 2.1.122 #1833 by removing explicit discovery keys from the repo marketplace manifests that Claude Code 2.1.122 rejects at install timeWhat changed
agents/skills/commands/hooksfrom:.claude/.claude-plugin/plugin.jsonsrc/claude/.claude-plugin/plugin.jsonsrc/copilot-cli/.claude-plugin/plugin.jsonbuild/scripts/validate_plugin_manifests.pyso the repo cannot reintroduce these keys in shipped marketplace manifeststests/build_scripts/test_validate_plugin_manifests.pytests/integration/test_e2e_install.pyto assert the runtime-compatible manifest shape instead of the old, now-invalid explicit-path shapeVerification
Install now succeeds for all five marketplace plugins.
Closes #1833