Skip to content

refactor: make skill execution host-neutral - #28

Merged
ether-moon merged 13 commits into
mainfrom
ether_karrot/auto-reviewers
Jul 21, 2026
Merged

refactor: make skill execution host-neutral#28
ether-moon merged 13 commits into
mainfrom
ether_karrot/auto-reviewers

Conversation

@ether-moon

@ether-moon ether-moon commented Jul 21, 2026

Copy link
Copy Markdown
Owner

Summary

  • Bundle the Git, PR, and release runners inside their owning skill directories while keeping legacy bin/ compatibility wrappers.
  • Remove Claude CLI, CLAUDE_PLUGIN_ROOT, and Claude-specific discovery requirements from portable skill execution and evaluation paths.
  • Preserve the latest shipping behavior for all-check mode while moving the PR runner, and surface actionable GitHub CLI errors when PR creation fails.

Test Plan

  • plugins/skill-set/tests/run.sh
  • bash -n plugins/skill-set/bin/skill-set-pr plugins/skill-set/skills/shipping-pr/scripts/skill-set-pr
  • git diff --check

Summary by CodeRabbit

  • New Features

    • Added portable, host-neutral skill execution that works from installed skill directories without host-specific paths.
    • Added Git, pull request, and release workflow runners with safer previews, state handling, and publication checks.
    • Added per-thread review feedback tracking and improved reviewer detection.
  • Bug Fixes

    • Improved handling of failed advisory workflows, review-thread resolution, merge conflicts, and tree-identical merges.
    • Expanded shell validation and runtime safety checks.
  • Documentation

    • Updated skill inventories, terminology, evaluation guidance, layouts, and troubleshooting instructions for broader agent compatibility.

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9f3aea32-f7f5-4640-80da-12ff20a9e098

📥 Commits

Reviewing files that changed from the base of the PR and between bdd33ac and d3b7e21.

📒 Files selected for processing (10)
  • plugins/skill-set/agents/merge-conflict-resolver.md
  • plugins/skill-set/skills/creating-skills/reference/checklist.md
  • plugins/skill-set/skills/creating-skills/reference/testing.md
  • plugins/skill-set/skills/managing-git-workflow/reference/commit.md
  • plugins/skill-set/skills/managing-git-workflow/scripts/skill-set-git
  • plugins/skill-set/skills/shipping-pr/reference/blocker-resolution.md
  • plugins/skill-set/tests/test-authoring-skills.sh
  • plugins/skill-set/tests/test-git-runner.sh
  • plugins/skill-set/tests/test-portable-runner-layout.sh
  • plugins/skill-set/tests/test-shipping-pr-authorization.sh
🚧 Files skipped from review as they are similar to previous changes (7)
  • plugins/skill-set/tests/test-shipping-pr-authorization.sh
  • plugins/skill-set/tests/test-authoring-skills.sh
  • plugins/skill-set/agents/merge-conflict-resolver.md
  • plugins/skill-set/tests/test-portable-runner-layout.sh
  • plugins/skill-set/skills/creating-skills/reference/testing.md
  • plugins/skill-set/skills/creating-skills/reference/checklist.md
  • plugins/skill-set/skills/managing-git-workflow/scripts/skill-set-git

📝 Walkthrough

Walkthrough

This PR moves Git, release, and shipping runners into skill-local scripts with compatibility wrappers, updates shipping review publication contracts, and generalizes skill authoring, evaluation, runner selection, validation, and documentation for host-neutral execution.

Changes

Portable runner implementations

Layer / File(s) Summary
Skill-local runner implementations
plugins/skill-set/skills/*/scripts/*
Adds Git, release, and shipping workflow CLIs with structured validation, state handling, race checks, commits, pushes, PR creation, and publication.
Compatibility wrappers and invocation contracts
plugins/skill-set/bin/*, plugins/skill-set/skills/*/SKILL.md, plugins/skill-set/commands/*, plugins/skill-set/agents/*
Delegates legacy binaries to skill-local scripts and replaces plugin-root runner paths with resolved absolute runner paths.
Runner and eval validation
plugins/skill-set/scripts/*, plugins/skill-set/evals/*
Updates runner discovery, command matching, eval permissions, and shipping eval inputs for skill-local execution.

Shipping PR review workflow

Layer / File(s) Summary
Reviewer and publication contracts
plugins/skill-set/agents/*, plugins/skill-set/skills/shipping-pr/*
Defines automatic reviewer detection, per-thread feedback files, stricter publication gating, and idempotent provider-specific feedback behavior.
Shipping workflow validation
plugins/skill-set/tests/*shipping*, plugins/skill-set/tests/fixtures/*
Adds coverage for runner selection, publication feedback, tree-identical merges, GitHub errors, and authorization contracts.

Host-neutral skill authoring

Layer / File(s) Summary
Portable authoring and evaluation guidance
plugins/skill-set/skills/creating-skills/*
Generalizes authoring terminology and adds host-independent validation, portable eval layouts, adapter boundaries, and capability-based model guidance.
Portable fixtures and runtime assertions
plugins/skill-set/evals/creating-skills/*, plugins/skill-set/tests/test-authoring-skills.sh, plugins/skill-set/tests/test-host-neutral-skill-runtime.sh, plugins/skill-set/tests/test-portable-runner-layout.sh
Moves creator fixtures away from .claude/ paths and checks that skill runtime content does not require Claude-specific execution or discovery.

Repository validation and documentation

Layer / File(s) Summary
Layout and evaluation validation
.github/workflows/*, plugins/skill-set/scripts/*, plugins/skill-set/tests/test-eval-*, plugins/skill-set/tests/test-release-runner.sh
Expands shellcheck coverage and updates generated inventory, reference resolution, trace fixtures, eval probes, and release-runner assertions.
Generated layout and release documentation
README.md, AGENTS.md, CHANGELOG.md
Documents legacy wrappers, portable execution, host-neutral skills, reviewer auto-detection, and publication behavior.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main change: making skill execution host-neutral.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ether_karrot/auto-reviewers

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (1)
plugins/skill-set/skills/creating-skills/reference/patterns.md (1)

107-111: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Specify a language for the fenced code block.

The fenced code block is missing a language specifier, which triggers a markdown lint warning. Consider adding text to properly format the block.

♻️ Proposed refactor
 For complex operations where mistakes are costly, have the active agent create a verifiable intermediate plan before executing.
 
-```
+```text
 analyze input → create plan file → validate plan → execute → verify output
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @plugins/skill-set/skills/creating-skills/reference/patterns.md around lines
107 - 111, Specify the fenced code block’s language as text in the pattern
example, while preserving the existing workflow content unchanged.


</details>

<!-- cr-comment:v1:13f93304f71c119128cc7940 -->

_Source: Linters/SAST tools_

</blockquote></details>

</blockquote></details>

<details>
<summary>🤖 Prompt for all review comments with AI agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @plugins/skill-set/scripts/run-evals:

  • Around line 216-224: Update the baseline runner setup around
    baseline_pr_runner and baseline_command so the archived baseline path always
    supplies SKILL_SET_PR_RUNNER with an absolute executable runner path, including
    when both existing runner locations are unavailable. Preserve the current
    preference order for plugins/skill-set/skills/shipping-pr/scripts/skill-set-pr
    and plugins/skill-set/bin/skill-set-pr, and ensure the fallback is valid for the
    shipping-pr fixture.

In @plugins/skill-set/skills/creating-skills/reference/checklist.md:

  • Around line 60-62: Restore explicit model examples at both affected sites: in
    plugins/skill-set/skills/creating-skills/reference/checklist.md lines 60-62,
    append Claude Haiku, Claude Sonnet, and Claude Opus examples to the smallest,
    primary balanced, and strongest model checklist items respectively; make the
    same corresponding additions in
    plugins/skill-set/skills/creating-skills/reference/testing.md lines 82-84 to the
    capability tier definitions.

In @plugins/skill-set/skills/managing-git-workflow/SKILL.md:

  • Around line 4-11: Restore a matching Bash or Skill permission for the
    dynamically resolved skill-set runner in each affected file:
    plugins/skill-set/skills/managing-git-workflow/SKILL.md lines 4-11,
    plugins/skill-set/skills/bumping-version/SKILL.md lines 4-14,
    plugins/skill-set/commands/git/commit.md line 4,
    plugins/skill-set/commands/git/pr.md line 4, and
    plugins/skill-set/commands/pr/fix.md line 3. Ensure the allowance covers the
    documented skill-set-git, skill-set-release, and skill-set-pr runner invocations
    without changing their execution instructions.

In @plugins/skill-set/tests/test-authoring-skills.sh:

  • Around line 31-33: Update the Claude CLI detection in the host-neutrality
    check around the grep command to match boundary-delimited inline references,
    including bullet-prefixed text and commands embedded in documentation, while
    still detecting “claude plugin” and “claude --version” forms. Preserve the
    existing failure message and validation scope.

In @plugins/skill-set/tests/test-portable-runner-layout.sh:

  • Around line 43-54: The jq assertions in the portable runner layout test lack
    diagnostic failure handling. Update the assertions for input-prepare,
    skill-set-pr usage, and skill-set-release usage to append explicit failure
    handlers that call fail with a concise, assertion-specific message while
    preserving the existing validation conditions.

Nitpick comments:
In @plugins/skill-set/skills/creating-skills/reference/patterns.md:

  • Around line 107-111: Specify the fenced code block’s language as text in the
    pattern example, while preserving the existing workflow content unchanged.

</details>

<details>
<summary>🪄 Autofix (Beta)</summary>

Fix all unresolved CodeRabbit comments on this PR:

- [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended)
- [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes

</details>

---

<details>
<summary>ℹ️ Review info</summary>

<details>
<summary>⚙️ Run configuration</summary>

**Configuration used**: defaults

**Review profile**: CHILL

**Plan**: Pro

**Run ID**: `c08eeddd-1c51-41ac-beda-22f9211838b6`

</details>

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between 19d66fb009c5e41864902051f2a8c6413ef6f08f and e2d4ea0ad0d5cfb4ce0d4e56556e2a93600b6f81.

</details>

<details>
<summary>📒 Files selected for processing (67)</summary>

* `.github/workflows/validate-skill-set.yml`
* `AGENTS.md`
* `CHANGELOG.md`
* `README.md`
* `plugins/skill-set/agents/ci-failure-resolver.md`
* `plugins/skill-set/agents/merge-conflict-resolver.md`
* `plugins/skill-set/agents/pr-review-feedback.md`
* `plugins/skill-set/agents/resolving-pr-blockers.md`
* `plugins/skill-set/bin/skill-set-git`
* `plugins/skill-set/bin/skill-set-pr`
* `plugins/skill-set/bin/skill-set-release`
* `plugins/skill-set/commands/git/commit.md`
* `plugins/skill-set/commands/git/pr.md`
* `plugins/skill-set/commands/git/push.md`
* `plugins/skill-set/commands/pr/fix.md`
* `plugins/skill-set/commands/pr/ship.md`
* `plugins/skill-set/evals/bumping-version/minor-bump-plugin-json/case.yaml`
* `plugins/skill-set/evals/bumping-version/patch-bump-package-json/case.yaml`
* `plugins/skill-set/evals/creating-skills/existing-with-creator/fixtures/scaffold.sh`
* `plugins/skill-set/evals/creating-skills/existing-with-creator/prompt.md`
* `plugins/skill-set/evals/creating-skills/new-with-creator/fixtures/scaffold.sh`
* `plugins/skill-set/evals/creating-skills/new-with-creator/prompt.md`
* `plugins/skill-set/evals/creating-skills/trigger-positive-01/case.yaml`
* `plugins/skill-set/evals/managing-git-workflow/commit-with-conventional-style/case.yaml`
* `plugins/skill-set/evals/managing-git-workflow/pr-title-and-body-generation/case.yaml`
* `plugins/skill-set/evals/shipping-pr/state-machine-happy-path/case.yaml`
* `plugins/skill-set/evals/shipping-pr/state-machine-happy-path/fixtures/mock-gh`
* `plugins/skill-set/evals/shipping-pr/state-machine-happy-path/fixtures/run-shipping-eval`
* `plugins/skill-set/evals/shipping-pr/state-machine-happy-path/fixtures/scaffold.sh`
* `plugins/skill-set/evals/shipping-pr/state-machine-happy-path/prompt.md`
* `plugins/skill-set/evals/trigger-cases.json`
* `plugins/skill-set/scripts/generate-inventory`
* `plugins/skill-set/scripts/run-evals`
* `plugins/skill-set/scripts/summarize-evals`
* `plugins/skill-set/scripts/validate-references`
* `plugins/skill-set/skills/bumping-version/SKILL.md`
* `plugins/skill-set/skills/bumping-version/scripts/skill-set-release`
* `plugins/skill-set/skills/creating-skills/SKILL.md`
* `plugins/skill-set/skills/creating-skills/reference/checklist.md`
* `plugins/skill-set/skills/creating-skills/reference/evaluation.md`
* `plugins/skill-set/skills/creating-skills/reference/patterns.md`
* `plugins/skill-set/skills/creating-skills/reference/structure.md`
* `plugins/skill-set/skills/creating-skills/reference/testing.md`
* `plugins/skill-set/skills/creating-skills/reference/troubleshooting.md`
* `plugins/skill-set/skills/managing-git-workflow/SKILL.md`
* `plugins/skill-set/skills/managing-git-workflow/reference/commit.md`
* `plugins/skill-set/skills/managing-git-workflow/reference/pr.md`
* `plugins/skill-set/skills/managing-git-workflow/reference/push.md`
* `plugins/skill-set/skills/managing-git-workflow/scripts/skill-set-git`
* `plugins/skill-set/skills/shipping-pr/SKILL.md`
* `plugins/skill-set/skills/shipping-pr/reference/blocker-resolution.md`
* `plugins/skill-set/skills/shipping-pr/reference/polling.md`
* `plugins/skill-set/skills/shipping-pr/reference/troubleshooting.md`
* `plugins/skill-set/skills/shipping-pr/scripts/skill-set-pr`
* `plugins/skill-set/tests/fixtures/git-runner/bin/gh`
* `plugins/skill-set/tests/fixtures/mock-gh-pr`
* `plugins/skill-set/tests/test-authoring-skills.sh`
* `plugins/skill-set/tests/test-eval-layout.sh`
* `plugins/skill-set/tests/test-eval-summary.sh`
* `plugins/skill-set/tests/test-git-runner.sh`
* `plugins/skill-set/tests/test-host-neutral-skill-runtime.sh`
* `plugins/skill-set/tests/test-managing-evals.sh`
* `plugins/skill-set/tests/test-portable-runner-layout.sh`
* `plugins/skill-set/tests/test-pr-runner.sh`
* `plugins/skill-set/tests/test-release-runner.sh`
* `plugins/skill-set/tests/test-shipping-pr-authorization.sh`
* `plugins/skill-set/tests/test-shipping-pr-happy-path-eval.sh`

</details>

<details>
<summary>💤 Files with no reviewable changes (1)</summary>

* plugins/skill-set/commands/git/push.md

</details>

</details>

<!-- This is an auto-generated comment by CodeRabbit for review status -->

Comment thread plugins/skill-set/scripts/run-evals Outdated
Comment thread plugins/skill-set/skills/creating-skills/reference/checklist.md Outdated
Comment thread plugins/skill-set/skills/managing-git-workflow/SKILL.md
Comment thread plugins/skill-set/tests/test-authoring-skills.sh Outdated
Comment thread plugins/skill-set/tests/test-portable-runner-layout.sh Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@plugins/skill-set/tests/fixtures/mock-claude-eval`:
- Around line 32-37: Change the validation failure branch in the mock evaluation
fixture so an invalid SKILL_SET_PR_RUNNER exits with a non-reserved failure
status such as 1 instead of 2. Preserve the existing absolute-path and
executable checks and the diagnostic message.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f6b5392c-3581-407b-a7d9-ee7f0ac0262b

📥 Commits

Reviewing files that changed from the base of the PR and between e2d4ea0 and 47bcdea.

📒 Files selected for processing (4)
  • plugins/skill-set/scripts/run-evals
  • plugins/skill-set/tests/fixtures/mock-claude-eval
  • plugins/skill-set/tests/test-authoring-skills.sh
  • plugins/skill-set/tests/test-run-evals.sh
🚧 Files skipped from review as they are similar to previous changes (2)
  • plugins/skill-set/tests/test-authoring-skills.sh
  • plugins/skill-set/scripts/run-evals

Comment thread plugins/skill-set/tests/fixtures/mock-claude-eval
@ether-moon

Copy link
Copy Markdown
Owner Author

@coderabbitai resolve

Restored named model tiers as documentation-only examples and added explicit diagnostics to the three portable runner JSON assertions. Kept the host-neutral permission design because safely matching an arbitrary installed runner path would require a host-specific path or a broader shell allowance. Focused checks and the full test suite passed.

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown

@ether-moon Thanks for the clarification and fixes. The retained host-neutral permission design is reasonable given the installation-path constraints, and the added JSON diagnostics address the portability assertions.


If you found this review helpful, would you consider giving us a shout-out on X?

Thank you for using CodeRabbit!

✅ Action performed

Comments resolved. Approval is disabled; enable reviews.request_changes_workflow to allow explicit top-level @coderabbitai resolve or @coderabbitai approve commands.

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.

1 participant