Skip to content

Resolve plugin quality findings - #27

Open
Borda wants to merge 4 commits into
mainfrom
fix/setup
Open

Resolve plugin quality findings#27
Borda wants to merge 4 commits into
mainfrom
fix/setup

Conversation

@Borda

@Borda Borda commented Jun 29, 2026

Copy link
Copy Markdown
Member

This pull request introduces a robust validation workflow, improves installation and documentation, and strengthens structural guarantees for the Roboflow agent plugin. The main changes include adding a structural validator script with a corresponding GitHub Actions workflow, replacing installer placeholders with real logic for both shell and PowerShell environments, updating documentation for easier installation and better accuracy, and enforcing best practices around pricing and skill references.

Validation and CI improvements

  • Added a new scripts/validate_plugin.py script to perform structural validation of the plugin repo, checking JSON files, screenshots, install docs, skill references, pricing info, and installer scripts.
  • Introduced a GitHub Actions workflow (.github/workflows/validate.yml) to automatically run the validator on pull requests and pushes to main.

Installer enhancements

  • Implemented real installation logic in agent-install/agent.sh and agent.ps1, supporting both Codex and Claude CLIs, with environment overrides and clear user feedback. [1] [2]

Documentation updates

  • Updated README.md to simplify and clarify installation steps, document the one-line installer, and explain the validator script. [1] [2] [3] [4] [5] [6]
  • Added a screenshot asset reference to .codex-plugin/plugin.json to satisfy marketplace requirements.

Best practices enforcement

  • Updated skills/plans-and-pricing/SKILL.md to remove all hardcoded dollar amounts and reinforce that users should reference the live pricing page for commercial details.
  • Improved skill cross-references in markdown files for clarity and accuracy. [1] [2] [3]

- update Codex install docs and add functional agent installers
- remove cached pricing amounts and normalize skill references
- add plugin validation workflow, screenshot asset, and structural validator

Co-authored-by: Codex <codex@openai.com>
@Borda
Borda requested review from Erol444, SkalskiP and Copilot June 29, 2026 12:11
@Borda Borda added the enhancement New feature or request label Jun 29, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This pull request addresses marketplace/plugin quality requirements by adding automated structural validation for the plugin repository, improving cross-platform installation scripts, and tightening documentation/skill references (including removing hardcoded pricing).

Changes:

  • Added a structural validator (scripts/validate_plugin.py) and a CI workflow to run it on PRs/pushes.
  • Replaced installer placeholders with functional Codex/Claude installers (bash + PowerShell) and updated README installation guidance.
  • Updated skill docs to use local cross-links and removed hardcoded dollar pricing in the pricing skill.

Reviewed changes

Copilot reviewed 10 out of 13 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
scripts/validate_plugin.py Adds repo structural validation (JSON, screenshots, docs, pricing, installers, executable claims).
.github/workflows/validate.yml Runs the validator in CI on PRs and pushes to main.
agent-install/agent.sh Implements bash installer for Codex/Claude with env overrides and CLI detection.
agent-install/agent.ps1 Implements PowerShell installer for Codex/Claude with env overrides and CLI detection.
README.md Updates installation instructions (Codex), adds one-line installers, documents validator usage.
.codex-plugin/plugin.json Adds screenshot reference to satisfy marketplace requirements.
assets/roboflow-plugin-overview.svg Adds a screenshot asset used by the Codex manifest.
skills/plans-and-pricing/SKILL.md Removes hardcoded dollar amounts and reinforces live pricing sources.
skills/training-and-evaluation/SKILL.md Updates related-page reference to a local improvement playbook link.
skills/training-and-evaluation/active-learning.md Updates improvement playbook reference to a local link.
skills/data-management/SKILL.md Updates labeling related-page reference to a local link.
skills/inference/bin/poll_batch_job.py Adds a CLI script to poll batch processing jobs via inference_cli.
.gitignore Ignores .reports/ output directory.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread scripts/validate_plugin.py
Comment thread scripts/validate_plugin.py
Comment thread scripts/validate_plugin.py
Comment thread .github/workflows/validate.yml Outdated
# Conflicts:
#	skills/data-management/SKILL.md
#	skills/training-and-evaluation/SKILL.md
#	skills/training-and-evaluation/active-learning.md

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 8 out of 11 changed files in this pull request and generated no new comments.

Suppressed comments (2)

scripts/validate_plugin.py:142

  • validate_installers uses Path.read_text directly, which can crash the validator on unreadable/undecodable files rather than appending a readable error message. Use _read_text and skip files that cannot be read so the workflow reports all validation issues in one run.
def validate_installers(errors: list[str]) -> None:
    for path in (ROOT / "agent-install").glob("*"):
        if not path.is_file():
            continue
        text = path.read_text(encoding="utf-8").lower()
        if "todo" in text or "placeholder" in text:
            errors.append(f"{path.relative_to(ROOT)} still contains placeholder text")

scripts/validate_plugin.py:134

  • validate_skill_refs reads files with Path.read_text directly; if any file is unreadable or has a decoding issue, the validator will raise and exit early instead of recording an error and continuing. Use the existing _read_text helper here (as validate_readme/validate_pricing already do) so validation failures are reported consistently.

This issue also appears on line 136 of the same file.

def validate_skill_refs(errors: list[str]) -> None:
    for path in _iter_text_files():
        text = path.read_text(encoding="utf-8")
        for match in SKILL_REF_RE.finditer(text):
            ref = match.group(1)

@Borda

Borda commented Aug 11, 2026

Copy link
Copy Markdown
Member Author

@yeldarby mind, have a look ^^ 🦝

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants