-
Notifications
You must be signed in to change notification settings - Fork 1
AX-1987 - Change readme #5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
+270
−43
Merged
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,41 +1,83 @@ | ||
| # Contributing to codex-plugin | ||
| # Contributing to the JFrog Plugin for OpenAI Codex | ||
|
|
||
| Thanks for your interest in contributing! This project is maintained by | ||
| JFrog Ltd. and licensed under Apache-2.0 (see LICENSE). | ||
| Thank you for your interest in contributing! This project is maintained by JFrog and licensed under the [Apache License 2.0](LICENSE). | ||
|
|
||
| ## Before you contribute | ||
| ## Contributor License Agreement (CLA) | ||
|
|
||
| All contributors must sign the JFrog Contributor License Agreement | ||
| (CLA) before a pull request can be merged: https://jfrog.com/cla/ | ||
| All contributors must sign the [JFrog CLA](https://jfrog.com/cla/) before contributions can be merged. A CLA check runs automatically on every pull request — follow the prompts to sign if you haven't already. | ||
|
|
||
| The CLA check runs automatically on your first pull request — follow | ||
| the bot's instructions to sign. | ||
| ## How to Contribute | ||
|
|
||
| ## How to contribute | ||
| 1. **Fork** the repository and create a feature branch from `main`. | ||
| 2. Make your changes, ensuring they follow the existing code style and project conventions. | ||
| 3. **Validate** locally: | ||
|
|
||
| 1. Fork the repository and create a branch from `main`. | ||
| 2. Make your change, including tests where applicable. | ||
| 3. Run the validation suite locally: | ||
| ```bash | ||
| npm test # unit tests for the manifest/skill validator | ||
| npm run validate # lint the plugin manifests + skill frontmatter | ||
| ``` | ||
|
|
||
| npm test | ||
| npm run validate | ||
| 1. **Test** by loading your clone as the plugin. The repo root is the marketplace root (`.agents/plugins/marketplace.json` registers the `jfrog` plugin): | ||
|
|
||
| 4. Open a pull request describing the change and why it's needed. | ||
| 5. A maintainer will review, request changes if needed, and merge once | ||
| CI and the CLA check pass. | ||
| ```bash | ||
| codex plugin marketplace add /path/to/codex-plugin | ||
| codex plugin add jfrog@codex-plugin | ||
| ``` | ||
|
|
||
| ## Reporting issues | ||
| Exercise the skills you changed, then browse installed plugins in the Codex TUI with `/plugins`. | ||
|
|
||
| Open a GitHub issue with a clear description, reproduction steps (if | ||
| applicable), and expected vs. actual behavior. | ||
| 1. **Commit** with a clear, descriptive message. | ||
| 2. Open a **pull request** against `main` with a summary of what changed and why. | ||
|
|
||
| ## Code of conduct | ||
| ### Updating the vendored skills | ||
|
|
||
| Be respectful and constructive. Disruptive or abusive behavior may | ||
| result in the contribution being rejected and further participation | ||
| restricted. | ||
| The `skills/` tree is vendored from [jfrog/jfrog-skills](https://github.com/jfrog/jfrog-skills) and committed to `main` — see [`VENDOR.md`](VENDOR.md) for the full flow. To regenerate the tree locally against the pin in [`scripts/sync-skills-vendor.json`](scripts/sync-skills-vendor.json): | ||
|
|
||
| ## Questions | ||
| ```bash | ||
| node scripts/sync-skills.mjs | ||
| ``` | ||
|
|
||
| For questions about this project's OSS status or licensing, contact | ||
| ossgov@jfrog.com. | ||
| This downloads the pinned upstream tarball and replaces the contents of `skills/`. Commit the result alongside the pin bump and the matching version bump (see [Releasing](#releasing)). | ||
|
|
||
| ## Pre-release checklist | ||
|
|
||
| - [ ] `npm test` and `npm run validate` pass. | ||
| - [ ] `version` bumped and **identical** in both [`.codex-plugin/plugin.json`](.codex-plugin/plugin.json) and [`package.json`](package.json) (CI enforces the match). | ||
| - [ ] No secrets, credentials, or API keys committed. | ||
| - [ ] If the skill tree changed: `pin` in [`scripts/sync-skills-vendor.json`](scripts/sync-skills-vendor.json) matches the upstream tag the new tree was generated from, and the README Prerequisites link points at that tag. | ||
| - [ ] Smoke-test: install locally with `codex plugin marketplace add /path/to/codex-plugin && codex plugin add jfrog@codex-plugin`. | ||
|
|
||
| ## Releasing | ||
|
|
||
| To cut a release: | ||
|
|
||
| 1. In your PR, bump `version` in **both** [`.codex-plugin/plugin.json`](.codex-plugin/plugin.json) and [`package.json`](package.json) to the same, not-yet-released value. `plugin.json` is canonical; `package.json` carries its own copy, and the two are cross-checked. | ||
| 2. Merge to `main` with `[major]`, `[minor]`, or `[patch]` in the commit **subject** — the first line. A marker elsewhere in the body is ignored on purpose. | ||
|
|
||
| The marker only decides *whether* to release; the version comes from the manifests either way, so the bump is reviewed in the PR that makes it. Merging a marker without bumping the manifests fails the release rather than re-tagging a shipped version. | ||
|
|
||
| [`.github/workflows/release.yml`](.github/workflows/release.yml) reads the version from `.codex-plugin/plugin.json` (cross-checked against `package.json`), refuses to continue if that version is already tagged, re-runs the same validation as the PR workflow, packages the tracked files at `HEAD` (minus `.github/`) into `release.zip`, and creates the `vX.Y.Z` tag as part of publishing the GitHub Release. | ||
|
|
||
| A PR without a marker (docs, chores, or fixes that don't ship a new plugin version) merges normally and cuts no release. | ||
|
|
||
| ## Reporting Issues | ||
|
|
||
| Open a [GitHub issue](https://github.com/jfrog/codex-plugin/issues) with: | ||
|
|
||
| - A clear title and description of the problem. | ||
| - Steps to reproduce (if applicable). | ||
| - Expected vs. actual behavior. | ||
|
|
||
| ## Code Guidelines | ||
|
|
||
| - Keep changes focused — one logical change per PR. | ||
| - Follow existing patterns and naming conventions in the codebase. | ||
| - Do not commit secrets, credentials, or API keys. | ||
|
|
||
| ## Code of Conduct | ||
|
|
||
| Be respectful and constructive. We are committed to providing a welcoming and inclusive experience for everyone. | ||
|
|
||
| ## Questions? | ||
|
|
||
| For questions about this project's OSS status or licensing, contact ossgov@jfrog.com. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,40 +1,205 @@ | ||
| # JFrog Plugin for OpenAI Codex | ||
|
|
||
| Delivers the JFrog skills **and the JFrog MCP server** to OpenAI Codex. | ||
| JFrog plugin for [OpenAI Codex](https://developers.openai.com/codex/): artifact | ||
| management, security scanning, supply-chain best practices, and Agent Guard. | ||
|
|
||
| ## Install (git marketplace) | ||
| ## Features | ||
|
|
||
| The JFrog plugin provides the following capabilities, grouped by component: | ||
|
|
||
| | Component | Feature | Description | | ||
| | --- | --- | --- | | ||
| | **MCP** | JFrog MCP server | Bundled `jfrog` MCP server ([`.mcp.json`](.mcp.json)) at `https://<JFROG_PLATFORM_URL>/mcp`; this server signs in via OAuth (`codex mcp login jfrog`), so it needs no API key. | | ||
| | **Skill** | JFrog Platform | Interact with Artifactory repositories, builds, permissions, users, access tokens, projects, release bundles, and platform administration via the JFrog CLI and REST/GraphQL APIs. Also covers security audits, CVE lookups, and Advanced Security exposure queries. | | ||
| | **Skill** | Package safety & download | Check whether npm, Maven, PyPI, Go, and other packages are safe, curated, or allowed, then download them through Artifactory remote caches or curation-aware package managers. | | ||
| | **Skill** | Agent Guard | Codex manages MCPs through the JFrog Agent Guard. Through the Agent Guard you can discover, install, configure, update, and remove MCP servers from the JFrog AI Catalog approved for your project, and authenticate to remote HTTP MCPs via OAuth, API key, or bearer token. | | ||
|
|
||
| --- | ||
|
|
||
| ## Prerequisites | ||
|
|
||
| Before installing, make sure you have: | ||
|
|
||
| - **JFrog host URL and access token** — Your JFrog platform URL and a valid access token. | ||
| - **OpenAI Codex** — Installed, with plugin support (`codex plugin` CLI commands available). | ||
| - **Node.js** (≥ 18) — with `npx` on your `PATH` (used by the Agent Guard). | ||
| - **Skill runtime requirements** — `jf` CLI, `jq`, and `curl` on `PATH`, plus a configured JFrog instance. For the minimum versions, see the upstream skills [`Requirements`](https://github.com/jfrog/jfrog-skills/blob/v0.22.0/README.md#requirements). Configure the CLI with `jf config add` — see [Authentication](#authentication). | ||
| - **JFrog AI Catalog** (optional) — If you want to use the Agent Guard feature, your JFrog subscription needs to include the AI Catalog entitlement. Contact your JFrog account team if you're unsure whether it's enabled. | ||
| - **JFrog CLI ≥ 2.105.0** (optional) — If you want the Agent Guard to auto-resolve the credentials/server ID from the JFrog CLI configuration. | ||
|
YoniMelki marked this conversation as resolved.
|
||
| - **JFrog project** (optional) — If you want to use the Agent Guard feature. | ||
|
|
||
| --- | ||
|
|
||
| ## Installation | ||
|
|
||
| ### Install the Codex plugin | ||
|
|
||
| Add the JFrog marketplace and install the plugin with the Codex CLI: | ||
|
|
||
| ```bash | ||
| codex plugin marketplace add jfrog/codex-plugin | ||
| codex plugin add jfrog@codex-plugin | ||
| ``` | ||
| /plugin marketplace add jfrog/codex-plugin | ||
| /plugin install jfrog@codex-plugin | ||
| /reload-plugins | ||
|
|
||
| Browse installed plugins in the Codex TUI with `/plugins`. | ||
|
|
||
| ### Local development | ||
|
|
||
| Test an uncommitted checkout without publishing. From (or pointing at) your clone | ||
| — the repo root is the marketplace root; `.agents/plugins/marketplace.json` | ||
| registers the `jfrog` plugin: | ||
|
|
||
| ```bash | ||
| codex plugin marketplace add /path/to/codex-plugin | ||
| codex plugin add jfrog@codex-plugin | ||
| ``` | ||
|
|
||
| ## MCP server | ||
| --- | ||
|
|
||
| ## Authentication | ||
|
|
||
| Configure the JFrog CLI so the skills and Agent Guard can reach your platform. Run | ||
| `jf login` for browser-based setup, or if you have never configured the JFrog CLI | ||
| on this machine: | ||
|
|
||
| 1. Open your terminal. | ||
| 2. Run: | ||
|
|
||
| ```bash | ||
| jf config add | ||
| ``` | ||
|
|
||
| 3. Follow the interactive prompts to enter your JFrog platform URL and access token. | ||
|
|
||
| --- | ||
|
|
||
| ## JFrog Platform MCP server | ||
|
|
||
| The plugin bundles the `jfrog` MCP server ([`.mcp.json`](.mcp.json)). After | ||
| installing, do two things: | ||
|
|
||
| 1. **Set your host.** Find the install path with `codex plugin list` (the | ||
| `jfrog@codex-plugin` row) and edit `<PATH>/.mcp.json`. Replace | ||
| `<JFROG_PLATFORM_URL>` in the `url` with your full JFrog Platform host - e.g. | ||
| `<JFROG_PLATFORM_URL>` in the `url` with your full JFrog Platform host — e.g. | ||
| `mycompany.jfrog.io` (or your self-hosted / custom domain). | ||
| 2. **Log in (OAuth).** Run `codex mcp login jfrog` and finish the browser | ||
| sign-in. | ||
|
|
||
| Restart Codex; `/mcp` now lists `jfrog` with its tools. | ||
| Restart Codex; the `jfrog` MCP server and its tools are now available (verify with | ||
| `codex mcp list`). | ||
|
|
||
| --- | ||
|
|
||
| ## Usage | ||
|
|
||
| Once configured, interact with the JFrog plugin through natural language. | ||
| Examples are grouped by capability. | ||
|
|
||
| ### JFrog Platform skill | ||
|
|
||
| ## Skills | ||
| | Ask the agent… | What happens | | ||
| | --- | --- | | ||
| | "List my Artifactory repositories." | Returns repositories via the JFrog CLI. | | ||
| | "Upload this build to Artifactory." | Publishes build artifacts and metadata. | | ||
| | "Run a security audit on this project." | Runs an Xray / Advanced Security audit and summarizes findings. | | ||
| | "Show me details on CVE-2021-23337." | Looks up CVE details in JFrog Advanced Security. | | ||
| | "Create a scoped access token for CI." | Creates an access token with the requested scope. | | ||
| | "Promote this release bundle to production." | Uses Lifecycle / Distribution APIs to promote the bundle. | | ||
|
|
||
| - `jfrog` - interact with the JFrog Platform (CLI, MCP, REST/GraphQL). | ||
| - `jfrog-ai-catalog-skills` - discover, install, manage, and publish agent skills from the JFrog AI Catalog via `jf skills` and Agent Guard. | ||
| - `jfrog-package-safety-and-download` - package safety checks and Artifactory-routed downloads. | ||
| ### Package safety & download skill | ||
|
|
||
| Skills are vendored from [`jfrog/jfrog-skills`](https://github.com/jfrog/jfrog-skills), pinned in `scripts/sync-skills-vendor.json`. Bump the pin and run `npm run sync-skills` to update. See [`VENDOR.md`](VENDOR.md) for the full picture. | ||
| | Ask the agent… | What happens | | ||
| | --- | --- | | ||
| | "Is `lodash@4.17.21` safe to install?" | Checks JFrog Public Catalog signals and curation policy for the package. | | ||
| | "Is this Maven package approved for use?" | Checks curation entitlement and policy for the requested package. | | ||
| | "Download `requests` via JFrog." | Resolves the package through an Artifactory remote cache or curation-aware package manager. | | ||
|
|
||
| ### MCP server management (Agent Guard) | ||
|
|
||
| | Ask the agent… | What happens | | ||
| | --- | --- | | ||
| | "Which MCP servers can I install?" | Returns all MCP servers approved for your current project that you can install. | | ||
|
YoniMelki marked this conversation as resolved.
|
||
| | "What MCP servers do I already have?" | Returns only the MCP servers already installed on your machine. | | ||
| | "Show me the details for the filesystem MCP server." | Returns detailed metadata, required configuration (environment variables, runtime arguments), and active tool policies for a given server. | | ||
| | "Add the GitHub MCP server." | Installs an approved MCP server and syncs its tool policies locally. Secrets are requested via a CLI command — never in chat. | | ||
| | "Update the environment variables for the Slack MCP." | Replaces the configuration for an already-installed server without removing and reinstalling it. | | ||
| | "Remove the Slack MCP server." | Removes the server and its stored credentials from your local setup. Changes apply immediately. | | ||
| | "Log in to the remote Jira MCP server using OAuth." | Authenticates with a remote HTTP-based MCP server (OAuth, API key, or bearer token). | | ||
|
|
||
| ### How secrets are handled | ||
|
|
||
| When an MCP server requires a sensitive configuration value, the agent cannot set | ||
| it directly. Instead, it returns a CLI command for you to copy and run in your | ||
| terminal. Secrets such as API keys, tokens, and connection strings are never | ||
| exposed in the agent chat history. | ||
|
|
||
| --- | ||
|
|
||
| ## Troubleshooting | ||
|
|
||
| See the [JFrog MCP Registry troubleshooting guide](https://docs.jfrog.com/ai-ml/docs/mcp-registry-troubleshooting). | ||
|
|
||
| --- | ||
|
|
||
| ## Updating the vendored skills | ||
|
|
||
| The `skills/` tree is vendored from | ||
| [`jfrog/jfrog-skills`](https://github.com/jfrog/jfrog-skills) at the version | ||
| pinned in [`scripts/sync-skills-vendor.json`](scripts/sync-skills-vendor.json). | ||
| To pull a newer upstream release into this repo: | ||
|
|
||
| 1. Bump `pin` in `scripts/sync-skills-vendor.json` to the new tag (e.g. `v0.23.0`). | ||
| 2. Re-sync and commit the refreshed tree: | ||
|
|
||
| ```bash | ||
| node scripts/sync-skills.mjs | ||
| ``` | ||
|
|
||
| It downloads the pinned tarball from `codeload.github.com` and replaces the | ||
| directories listed in `paths` (today: `skills/`). | ||
| 3. Bump `version` in both [`.codex-plugin/plugin.json`](.codex-plugin/plugin.json) | ||
| and [`package.json`](package.json) (they must match — CI enforces this) so the | ||
| published plugin reflects the new skills bundle. | ||
| 4. Update the pinned-version link in the [Prerequisites](#prerequisites) section so the | ||
| skill runtime requirements point at the new tag. | ||
| 5. Commit the pin bump, the regenerated `skills/` tree, the version bump, and the | ||
| README link bump together, and open a PR whose merge commit subject carries a | ||
| `[patch]` / `[minor]` / `[major]` marker (see [Releasing](#releasing)). | ||
|
|
||
| See [`VENDOR.md`](VENDOR.md) for the full picture. | ||
|
|
||
| --- | ||
|
|
||
| ## Releasing | ||
|
|
||
| Releases are cut automatically by [`.github/workflows/release.yml`](.github/workflows/release.yml) | ||
| when a commit lands on `main` whose **subject line** contains a | ||
| `[major]` / `[minor]` / `[patch]` marker. The workflow reads the version from | ||
| `.codex-plugin/plugin.json` (cross-checked against `package.json`), refuses to | ||
| re-release an existing tag, and publishes a GitHub Release `v<version>` with a | ||
| zipped artifact. A version is released only when both a manifest bump **and** a | ||
| marker commit reach `main`. | ||
|
|
||
| --- | ||
|
|
||
| ## Development | ||
|
|
||
| ``` | ||
| npm test # unit tests for the validator | ||
| npm test # unit tests for the validator | ||
| npm run validate # lint manifests + skill frontmatter | ||
| ``` | ||
|
|
||
| --- | ||
|
|
||
| ## Contributing | ||
|
YoniMelki marked this conversation as resolved.
|
||
|
|
||
| See [`CONTRIBUTING.md`](CONTRIBUTING.md) for development workflow and | ||
| pull-request expectations. | ||
|
|
||
| ## Security | ||
|
|
||
| See [`SECURITY.md`](SECURITY.md) for how to report vulnerabilities. | ||
|
|
||
| ## License | ||
|
|
||
| Licensed under the [Apache License 2.0](LICENSE). | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| # Security | ||
|
|
||
| ## Reporting a vulnerability | ||
|
|
||
| Please report security issues responsibly so we can address them before public disclosure. | ||
|
|
||
| - **Email:** [security@jfrog.com](mailto:security@jfrog.com) or follow the process described on [JFrog's security page](https://jfrog.com/trust/report-vulnerability/). | ||
|
YoniMelki marked this conversation as resolved.
|
||
|
|
||
| Include steps to reproduce, affected versions or commits, and impact if known. | ||
|
|
||
| ## Scope | ||
|
|
||
| This repository ships an OpenAI Codex plugin (skills and an MCP server manifest). | ||
|
|
||
| Do not commit secrets, API keys, or credentials, or any local JFrog runtime data the skills write into a workspace (for example under `.jfrog/`). | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.