Skip to content

feat(pr-review): load connector layer review skills from c1-engineering marketplace - #104

Open
luisina-santos wants to merge 1 commit into
mainfrom
luisinasantos/pr-review-marketplace-skills
Open

feat(pr-review): load connector layer review skills from c1-engineering marketplace#104
luisina-santos wants to merge 1 commit into
mainfrom
luisinasantos/pr-review-marketplace-skills

Conversation

@luisina-santos

Copy link
Copy Markdown
Contributor

What

Complements the Claude PR review with the layer review skills from the agentic-connector-development plugin in ConductorOne/claude-marketplace.

The pieces were mostly already in place: Skill and Task are in the action's --allowedTools, and base-pr-review.md Step 5 already tells the reviewer it may use them. What was missing is the plugin those skills live in. claude-code-action@661a6fef exposes plugins / plugin_marketplaces inputs, so this wires them up.

Dispatch is by changed path, so a config-only PR does not pay for four skills:

Changed paths Skill
pkg/config/** review-config-layer
pkg/client/**, pkg/connector/client*.go review-client-layer
pkg/connector/** review-connector-layer
pkg/connector/actions.go, *_actions.go review-actions-layer

Required before this helps: CLAUDE_MARKETPLACE_TOKEN

claude-marketplace is private, and the runner's automatic GITHUB_TOKEN is an installation token scoped to the repository running the workflow — same-org membership does not extend it. (github-workflows is public, which is why the existing Checkout workflow repo step needs no token and this asymmetry has not come up before.)

So loading the skills needs an org-level CLAUDE_MARKETPLACE_TOKEN secret: a fine-grained PAT or GitHub App token with contents: read on ConductorOne/claude-marketplace and nothing else.

Until that secret exists, this PR is a no-op — every connector review logs a warning and proceeds exactly as it does today. Nothing breaks in the meantime, which is what makes on-by-default safe here.

Decisions taken

  • On by default for the connector profile. general never loads skills and needs no token.
  • Degrades, never fails. No token, expired token, or a clone that does not land → warning, review continues on base prompt + mixins. Each summary now carries a **Skills:** line, so a missing secret shows up on the PR instead of silently downgrading every review.
  • Connector mixin left intact. C1–C8 / R1–R13 overlap the client and connector skills substantially. Rather than strip them now, connector-skills.md tells the reviewer to post an overlapping finding once, at the higher severity. Worth revisiting once we can see real output.
  • Focused three + actions layer, not deep-code-review — its 8-finder fan-out does not fit this budget. --max-turns 100 → 150 and timeout-minutes 15 → 30 to fit up to four skills.

Two implementation notes worth a look

  1. Cloned, not actions/checkout. Composite action steps do not support continue-on-error, so a checkout with a bad token would fail the whole review rather than degrade it. The step clones with || warn instead.
  2. .git is deleted after cloning. The clone URL embeds the token in .git/config, and the reviewer has Read/Grep over the workspace. Only the plugin files are needed, so the git metadata goes. _marketplace/ is also added to the "ignore these directories" instruction in Step 1 so it is not mistaken for PR content.

Skills run read-only

These skills were written for interactive development and some steps assume they can build, test, edit, and fetch vendor docs. connector-skills.md makes the Step 5 read-only contract win explicitly: no edits, no build/test commands, no network fetches, no posting, and a skill's own approval verdict does not clear the PR. Skill output is analysis that still goes through Step 6 validation before it becomes a comment.

Verification

  • action.yml and both caller workflows parse; every composite step uses only keys composite actions accept (this is how the continue-on-error problem surfaced).
  • Prompt assembly dry-run in both branches: skills-available appends connector-skills.md (540 lines) and skills-unavailable does not (494), with the Skills status: line and heredoc terminator correct in both.
  • Not yet exercised end-to-end — that needs the secret plus a real connector PR. Suggest landing this, adding the secret, then watching the first review's **Skills:** line and turn count before enabling more.

🤖 Generated with Claude Code

…ng marketplace

Connector reviews now install the agentic-connector-development plugin from
ConductorOne/claude-marketplace and invoke its layer review skills
(review-config-layer, review-client-layer, review-connector-layer,
review-actions-layer) on the paths a PR actually changed. Skill and Task were
already in the allowedTools list and the base prompt already anticipated skills;
this supplies the plugin they need.

The runner's automatic GITHUB_TOKEN is scoped to the repository running the
workflow, so it cannot read the private marketplace repo. Loading the skills
therefore needs a CLAUDE_MARKETPLACE_TOKEN secret with contents:read on that one
repo. Absent or expired, the step warns and the review continues with the base
prompt and mixins; every summary reports which happened on its Skills line, so a
missing secret is visible on the PR rather than silent.

The marketplace is cloned rather than checked out with actions/checkout because
composite action steps do not support continue-on-error, and the clone drops
.git afterwards so the tokenized remote URL is not left on disk where the
reviewer's Read and Grep can reach it.

The connector mixin checklists are left intact; connector-skills.md instructs the
reviewer to report an overlapping finding once at the higher severity. Skills
inherit the read-only contract: no edits, no build or test commands, no network
fetches, no posting, and no skill-side approval verdict.

Turn budget raised to 150 and the job timeout to 30 minutes to fit up to four
layer skills.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@luisina-santos
luisina-santos requested a review from a team July 31, 2026 18:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants