diff --git a/.optimize-cache.json b/.optimize-cache.json
index b1b8cc8fa66..15acc43fc46 100644
--- a/.optimize-cache.json
+++ b/.optimize-cache.json
@@ -189,6 +189,7 @@
"static/images/blog/announcing-2fa.png": "1df5ba12c2de318f858c36a3804b7170844cb74bdb73e1ea37895d674208b9e0",
"static/images/blog/announcing-appwrite-arena/cover.png": "3934fbf6ee24c468b715b1839bc49c335a47a68f7fc99a763b109b2446f97379",
"static/images/blog/announcing-appwrite-claude-code-plugin/cover.png": "334e890b32c20c3a4c7f0878b5908a71a518d983b15b6ee434f9dabb66ee8ecd",
+ "static/images/blog/announcing-appwrite-codex-plugin/cover.png": "6328e3c6089bcdbd7b9187b1e77b1b496a2d1e1a092f1375623fb2512e22c359",
"static/images/blog/announcing-appwrite-cursor-plugin/cover.png": "1a2dffe9876e72c571f24e46990b203b450b389afb0f0cf125fbd0e7eca4831c",
"static/images/blog/announcing-appwrite-daily-dot-dev-squad/daily.dev-squad.png": "c69fdc687770e5562097fb30bf3f82ba54d7208faae9805faf3677480ba73857",
"static/images/blog/announcing-appwrite-databases-new-ui/cover.png": "9318e0034f7c069246429429c08cc9f87032c34ad040c1f05f75449c4f28ffe9",
diff --git a/src/lib/components/blog/faq.svelte b/src/lib/components/blog/faq.svelte
index 11a7ad1b2a3..09f7ae16cbb 100644
--- a/src/lib/components/blog/faq.svelte
+++ b/src/lib/components/blog/faq.svelte
@@ -2,9 +2,15 @@
import { browser } from '$app/environment';
import { createAccordion, melt } from '@melt-ui/svelte';
import { slide } from 'svelte/transition';
+ import { parseInline } from '$lib/utils/markdown';
export let items: { question: string; answer: string }[] = [];
+ $: renderedItems = items.map((item) => ({
+ question: item.question,
+ answer: parseInline(item.answer)
+ }));
+
const {
elements: { root, heading, content, item, trigger },
helpers: { isSelected }
@@ -49,7 +55,7 @@
use:melt={$root}
id="blog-faq"
>
- {#each items as faqItem, index (index)}
+ {#each renderedItems as faqItem, index (index)}
- {#each items as faqItem, index (index)}
+ {#each renderedItems as faqItem, index (index)}
-
diff --git a/src/lib/utils/markdown.ts b/src/lib/utils/markdown.ts
index 6f2c65cf849..690d5abf173 100644
--- a/src/lib/utils/markdown.ts
+++ b/src/lib/utils/markdown.ts
@@ -1,6 +1,28 @@
import MarkdownIt from 'markdown-it';
const md = new MarkdownIt('commonmark');
+
+const inlineMd = new MarkdownIt('commonmark');
+inlineMd.renderer.rules.link_open = (tokens, idx, options, _env, self) => {
+ const token = tokens[idx];
+ const href = token.attrGet('href');
+ if (href?.startsWith('http') && !href.startsWith('https://appwrite.io')) {
+ token.attrPush(['rel', 'noopener noreferrer']);
+ token.attrPush(['target', '_blank']);
+ }
+ token.attrPush(['class', 'web-link']);
+ return self.renderToken(tokens, idx, options);
+};
+
+/**
+ * Renders inline markdown (code spans, bold, italics, links) without wrapping
+ * the output in a block element. Use when the surrounding markup already
+ * provides a paragraph or other block container.
+ */
+export function parseInline(content: string): string {
+ return inlineMd.renderInline(content);
+}
+
export function parse(content: string): string {
const env = {};
diff --git a/src/routes/blog/post/announcing-appwrite-codex-plugin/+page.markdoc b/src/routes/blog/post/announcing-appwrite-codex-plugin/+page.markdoc
new file mode 100644
index 00000000000..11c72ca3d81
--- /dev/null
+++ b/src/routes/blog/post/announcing-appwrite-codex-plugin/+page.markdoc
@@ -0,0 +1,78 @@
+---
+layout: post
+title: "Introducing the Appwrite plugin for Codex: Skills and MCP in one install"
+description: The Appwrite plugin for Codex bundles agent skills and the Appwrite Docs MCP server into a single install, so Codex can build with Appwrite out of the box.
+date: 2026-05-11
+cover: /images/blog/announcing-appwrite-codex-plugin/cover.avif
+timeToRead: 4
+author: aditya-oberai
+category: announcement
+featured: false
+faqs:
+ - question: "What does the Appwrite plugin for Codex include?"
+ answer: "The plugin ships thirteen [agent skills](/docs/tooling/ai/skills) (covering the [Appwrite CLI](/docs/tooling/command-line/installation), every major Appwrite SDK, and two guided deployment skills for [Sites](/docs/products/sites) and [Functions](/docs/products/functions)) plus the [Appwrite Docs MCP server](/docs/tooling/ai/mcp-servers/docs). Codex loads the relevant skill on its own when a task matches."
+ - question: "How do I install the Appwrite plugin for Codex?"
+ answer: "Run `codex plugin marketplace add appwrite/codex-plugin` in your terminal to add the Appwrite marketplace, start Codex, run `/plugins`, select Appwrite from the marketplace listing, and confirm the install. The skills and the `appwrite-docs` MCP server are wired up automatically. See the [Codex docs](/docs/tooling/ai/ai-dev-tools/codex) for the full setup walkthrough."
+ - question: "Why isn't the Appwrite API MCP server bundled with the plugin?"
+ answer: "The [Appwrite API MCP server](/docs/tooling/ai/mcp-servers/api) needs three values to talk to your project: your endpoint, project ID, and API key. Codex plugins don't currently expose a way to prompt for and inject per-install configuration like that in the CLI, so shipping it inside the plugin would mean hard-coding credentials. The [docs MCP](/docs/tooling/ai/mcp-servers/docs), which doesn't need credentials, is bundled."
+ - question: "How do I add the Appwrite API MCP server to Codex?"
+ answer: "Run `codex mcp add appwrite-api --env APPWRITE_PROJECT_ID=your-project-id --env APPWRITE_API_KEY=your-api-key --env APPWRITE_ENDPOINT=https://.cloud.appwrite.io/v1 -- uvx mcp-server-appwrite` with your own endpoint, project ID, and API key. `uv` must be installed on your system for `uvx` to work. The [Codex docs](/docs/tooling/ai/ai-dev-tools/codex#step-3) walk through the manual setup."
+ - question: "Which Appwrite SDKs are covered by the plugin's skills?"
+ answer: "The plugin includes language skills for TypeScript, Dart, .NET, Go, Kotlin, PHP, Python, Ruby, Rust, and Swift, along with a skill for the [Appwrite CLI](/docs/tooling/command-line/installation). Codex picks the right one based on the language and task you're working on. See the [Appwrite SDKs](/docs/sdks) page for the full SDK reference."
+ - question: "Do I still need to install Appwrite Skills separately if I use the Codex plugin?"
+ answer: "No. The plugin bundles the same [Appwrite language and CLI skills](/docs/tooling/ai/skills), so installing the plugin gives Codex everything it needs in one step. You only need to install skills separately if you want to use them with another [AI IDE, CLI, or dev tool](/docs/tooling/ai) that doesn't have its own Appwrite plugin yet."
+---
+
+Codex is OpenAI's terminal-resident coding agent. It reads, writes, and runs code against your project, and it has been steadily picking up the building blocks needed to work well with platforms like Appwrite: skills for language-specific context, MCP servers for live tool and documentation access, and a marketplace for distributing them. Using Codex with Appwrite has worked for a while, but getting set up meant copying skill files into `~/.codex/skills/`, hand-editing `~/.codex/config.toml` to register the docs MCP, and stitching everything together yourself.
+
+Today, we are announcing the **Appwrite plugin for Codex**. Add the marketplace, install the plugin, and your agent is ready to build with Appwrite using up-to-date SDK patterns and live access to the Appwrite documentation.
+
+# What installing the plugin gives you
+
+The plugin ships two things in a single install:
+
+- **The Appwrite Docs MCP server:** No credentials required. Codex can search the Appwrite documentation as it works, instead of relying on whatever it was trained on.
+- **Thirteen agent skills:** Markdown skills covering the Appwrite CLI and every major Appwrite SDK (TypeScript, Dart, .NET, Go, Kotlin, PHP, Python, Ruby, Rust, and Swift), plus two guided deployment skills for shipping Appwrite Sites and Functions with the Appwrite CLI. Codex loads the relevant skill on its own when a task calls for it.
+
+# Setup the plugin
+
+1. Add the Appwrite marketplace to Codex by running the following command in your terminal:
+
+ ```bash
+ codex plugin marketplace add appwrite/codex-plugin
+ ```
+
+2. Start Codex by running `codex`.
+3. Open the plugins menu with `/plugins`.
+4. Select **Appwrite** from the marketplace listing and confirm the install.
+
+The skills and the `appwrite-docs` MCP server are wired up automatically.
+
+## Why the API MCP server isn't bundled
+
+The Appwrite API MCP server needs three values to talk to your project: your endpoint, project ID, and API key. Codex plugins don't currently expose a way to prompt for and inject per-install configuration like that in the CLI, so shipping the API MCP inside the plugin would mean hard-coding credentials, which isn't something we want to do. The docs MCP, which doesn't need credentials, is bundled.
+
+To add the API MCP server, run this in your terminal:
+
+```bash
+codex mcp add appwrite-api \
+ --env APPWRITE_PROJECT_ID=your-project-id \
+ --env APPWRITE_API_KEY=your-api-key \
+ --env APPWRITE_ENDPOINT=https://.cloud.appwrite.io/v1 \
+ -- uvx mcp-server-appwrite
+```
+
+# A prompt to try first
+
+Once the plugin is active, try a prompt like:
+
+`Scaffold a Next.js app that uses Appwrite for email/password auth and a "todos" table.`
+
+Codex picks up the `appwrite-typescript` and `appwrite-cli` skills, queries the Appwrite Docs MCP server when it needs to confirm specifics, and generates code that uses the right SDK calls instead of guessed ones. When you are ready to ship, ask it to deploy with the Appwrite CLI and the `appwrite-deploy-site` skill kicks in to walk it through the steps.
+
+# Resources
+
+- [Codex plugin docs](/docs/tooling/ai/ai-dev-tools/codex)
+- [Plugin source code on GitHub](https://github.com/appwrite/codex-plugin)
+- [Appwrite Skills](/docs/tooling/ai/skills)
+- [Discord community](https://appwrite.io/discord)
diff --git a/src/routes/changelog/(entries)/2026-05-11.markdoc b/src/routes/changelog/(entries)/2026-05-11.markdoc
new file mode 100644
index 00000000000..237421b5a99
--- /dev/null
+++ b/src/routes/changelog/(entries)/2026-05-11.markdoc
@@ -0,0 +1,12 @@
+---
+layout: changelog
+title: "Appwrite plugin for Codex"
+date: 2026-05-11
+cover: /images/blog/announcing-appwrite-codex-plugin/cover.avif
+---
+
+The Appwrite plugin is now available for Codex. Install it to get agent skills for the Appwrite CLI and every major SDK, two guided deployment skills for Sites and Functions, and the Appwrite Docs MCP server, all in a single setup.
+
+{% arrow_link href="/blog/post/announcing-appwrite-codex-plugin" %}
+Read the announcement
+{% /arrow_link %}
diff --git a/src/routes/docs/tooling/ai/ai-dev-tools/codex/+page.markdoc b/src/routes/docs/tooling/ai/ai-dev-tools/codex/+page.markdoc
index 3f0a4e6c041..d3899251ef1 100644
--- a/src/routes/docs/tooling/ai/ai-dev-tools/codex/+page.markdoc
+++ b/src/routes/docs/tooling/ai/ai-dev-tools/codex/+page.markdoc
@@ -1,10 +1,38 @@
---
layout: article
title: Codex
-description: Learn how to use Codex with Appwrite through quick start prompts and MCP servers for AI-assisted development.
+description: Learn how to use Codex with Appwrite through the Appwrite plugin, quick start prompts, and MCP servers for AI-assisted development.
---
-{% section #quick-start-prompts step=1 title="Quick start prompts" %}
+{% section #install-plugin step=1 title="Install the Appwrite plugin" %}
+
+The fastest way to get started with Appwrite in Codex is to install the **Appwrite plugin** from the Appwrite marketplace. The plugin includes agent skills for the Appwrite CLI and all major SDKs and registers the Appwrite Docs MCP server, giving Codex access to the Appwrite documentation so that it follows the latest and suggested code patterns.
+
+Add the Appwrite marketplace to Codex by running the following command in your terminal:
+
+```bash
+codex plugin marketplace add appwrite/codex-plugin
+```
+
+Then run `codex` and open the plugins menu to install the Appwrite plugin:
+
+- Run `/plugins` in Codex.
+- Select the **Appwrite** plugin from the marketplace listing.
+- Confirm the install.
+
+Once installed, the language and deployment skills load automatically based on your task, and the `appwrite-docs` MCP server is registered for documentation lookups.
+
+The Appwrite API MCP server isn't bundled in the plugin: it needs your endpoint, project ID, and API key, and Codex plugins don't currently expose a way to prompt for per-install configuration in the CLI. Add it manually in [Step 3](#step-3).
+
+{% info title="Prefer manual setup?" %}
+
+If you'd rather configure MCP servers individually, skip to [Step 3](#step-3).
+
+{% /info %}
+
+{% /section %}
+
+{% section #quick-start-prompts step=2 title="Quick start prompts" %}
Get started quickly with these pre-built prompts for common Appwrite integrations:
@@ -21,7 +49,9 @@ Browse all quick start prompts
{% /section %}
-{% section #step-2 step=2 title="Add MCP servers" %}
+{% section #step-3 step=3 title="Add MCP servers manually" %}
+
+If you installed the Appwrite plugin in [Step 1](#install-plugin), the docs MCP server is already configured and you can skip to [Step 4](#step-4).
Connect Appwrite MCP servers to Codex for deeper integration with the Appwrite API and documentation.
@@ -73,7 +103,7 @@ codex mcp add appwrite-docs --url https://mcp-for-docs.appwrite.io
{% /section %}
-{% section #step-3 step=3 title="Test the integration" %}
+{% section #step-4 step=4 title="Test the integration" %}
Try out the following example prompts based on the MCP server you have configured:
diff --git a/static/images/blog/announcing-appwrite-codex-plugin/cover.avif b/static/images/blog/announcing-appwrite-codex-plugin/cover.avif
new file mode 100644
index 00000000000..0e7346a8144
Binary files /dev/null and b/static/images/blog/announcing-appwrite-codex-plugin/cover.avif differ