Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,10 @@ Extract data from any website with thousands of trusted scrapers, crawlers, and

## Installation

Installation steps live in the Apify docs — **[Apify → Qoder integration](https://docs.apify.com/integrations/qoder)**:
Installation steps live in the Apify docs:

- **[Qoder CLI](https://docs.apify.com/integrations/qoder-cli)**
- **[Qoder IDE](https://docs.apify.com/integrations/qoder-ide)**
- **[QoderWork](https://docs.apify.com/integrations/qoder-work)**
- **[Qoder integration](https://docs.apify.com/integrations/qoder-plugin)** — install the plugin in the Qoder CLI, IDE, Desktop app, or QoderWork, or connect the Apify MCP server in QoderWake and the JetBrains plugin.
- **[Qwen Code integration](https://docs.apify.com/integrations/qwen-code)** — Qwen Code reuses the same plugin.

## Authentication

Expand All @@ -45,7 +44,7 @@ The `apify` subagent picks the right route and skill automatically.

The plugin lives in [`apify/`](./apify). Its `skills/` and `agents/` are **generated** from the `apify-plugins-internal` source of truth (the `qoder` platform) and propagate into this repo automatically via the sync — **do not hand-edit or hand-add them here**; change them upstream. The manifest (`apify/.qoder-plugin/plugin.json`), `apify/.mcp.json`, and `apify/qoder.md` are maintained directly in this repo.

- **[RELEASE.md](./RELEASE.md):** versioning, cutting a release, and publishing to the marketplace (QoderWork/Qoder IDE and Qoder CLI).
- **[RELEASE.md](./RELEASE.md):** versioning, cutting a release, and publishing to the Qoder marketplace.

## License

Expand Down
24 changes: 11 additions & 13 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Releasing & Publishing

The plugin ships through two channels, both sourced from the marketplace:
The plugin ships as a single **Qoder marketplace** listing, published from a GitHub release ZIP:

- **Qoder CLI:** installed from the marketplace by manually adding the repo link. No build needed.
- **QoderWork & Qoder IDE:** installed from the marketplace after the plugin is submitted via ZIP and the publish form. Manual, review-gated.
- **Qoder CLI, IDE, Desktop app, and QoderWork** install that plugin from the marketplace listing. The install method differs per surface — a CLI command, a one-click install in the IDE, or downloading the ZIP and importing it (Desktop and QoderWork). See the end-user docs.
- **QoderWake and the JetBrains plugin** don't use the plugin. They connect to the Apify MCP server (`https://mcp.apify.com`) directly, so they need no release or publish step.

## Versioning

Expand All @@ -24,7 +24,7 @@ Releases are triggered from the **Actions** tab — no manual tagging. On dispat
3. **`create_github_release`** — tags that commit and publishes the GitHub release with the generated notes.
4. **`package_zip`** — zips the **contents of `apify/`** (so `.qoder-plugin/` is at the ZIP root) and attaches `apify-qoder-plugin-<tag>.zip` to the release.

That ZIP is the artifact for the QoderWork & Qoder IDE marketplace.
That ZIP is the artifact you publish to the Qoder marketplace.

### How to run it

Expand All @@ -35,9 +35,9 @@ That ZIP is the artifact for the QoderWork & Qoder IDE marketplace.
- `custom` — set **custom_version** explicitly (e.g. `0.1.0`). **Use this for the very first release**, since `auto` has no prior tag to diff against.
3. Run it, then check the `chore(release): <version>` commit diff and the published release.

## 2. Publish to QoderWork & Qoder IDE (public marketplace)
## 2. Publish to the Qoder marketplace

Publishing is a **manual, review-gated** step in the web app. There is no git/API auto-publish. Both QoderWork and Qoder IDE install the plugin from this marketplace listing.
Publishing is a **manual, review-gated** step in the web app. There is no git/API auto-publish. The Qoder CLI, IDE, Desktop app, and QoderWork all install the plugin from this marketplace listing.

1. Go to **qoder.com > My Publications > Publish > Plugin**.
2. Fill the **Publish Plugin** form:
Expand All @@ -53,15 +53,13 @@ Publishing is a **manual, review-gated** step in the web app. There is no git/AP

## 3. Installing the plugin (end users)

End-user installation is documented in the Apify docs — **[Apify → Qoder integration](https://docs.apify.com/integrations/qoder)**:
End-user installation is documented in the Apify docs:

- **[Qoder CLI](https://docs.apify.com/integrations/qoder-cli)**
- **[Qoder IDE](https://docs.apify.com/integrations/qoder-ide)**
- **[QoderWork](https://docs.apify.com/integrations/qoder-work)**
- **[Qoder integration](https://docs.apify.com/integrations/qoder-plugin)** — the Qoder CLI, IDE, Desktop app, and QoderWork, plus QoderWake and the JetBrains plugin via the Apify MCP server.
- **[Qwen Code integration](https://docs.apify.com/integrations/qwen-code)** — Qwen Code reuses the same plugin.

## Notes & open items

- `.qoder-plugin/marketplace.json` is **Qoder-CLI-only**. QoderWork and Qoder IDE ignore it and take listing metadata from the publish form.
- **MCP auth:** the bundled `.mcp.json` uses the bare `https://mcp.apify.com` URL; Qoder authorizes via OAuth on first use (no API token to paste). Verified in the Qoder CLI.
- **Naming:** QoderWork favors a real-world role/job-title name; "Apify" is a brand and may draw review feedback.
- `.qoder-plugin/marketplace.json` is **Qoder-CLI-only**. The GUI surfaces (IDE, Desktop app, QoderWork) ignore it and take listing metadata from the publish form.
- **MCP auth:** the bundled `.mcp.json` points at `https://mcp.apify.com` (with a `client` query param) and declares both `url` and `httpUrl` for cross-host compatibility; Qoder authorizes via OAuth on first use (no API token to paste). Verified in the Qoder CLI.
- **Skill content placeholders:** skills document credentials with placeholders (`<APIFY_TOKEN>`, `export APIFY_TOKEN=your_token_here`). This is standard and satisfies the "no real credentials in examples" rule, but a strict automated review *could* flag them. Watch for this on the first marketplace submission.
3 changes: 2 additions & 1 deletion apify/.mcp.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"mcpServers": {
"apify": {
"type": "streamable-http",
"url": "https://mcp.apify.com/?client=qoder+plugin"
"url": "https://mcp.apify.com/?client=qoder+plugin",
"httpUrl": "https://mcp.apify.com/?client=qoder+plugin"
}
}
}
Loading