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
1 change: 1 addition & 0 deletions .optimize-cache.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
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.

P1 The cache entry references cover.png, but the actual file added in this PR is cover.avif, and the blog post and changelog frontmatter both reference the .avif path. The .png path does not exist in the repo, so this cache entry points to a non-existent file while the real cover image goes untracked — if the optimizer uses this cache to locate or skip images, cover.avif will be processed as uncached on every build and the stale .png entry may trigger a "file not found" error.

Suggested change
"static/images/blog/announcing-appwrite-codex-plugin/cover.png": "6328e3c6089bcdbd7b9187b1e77b1b496a2d1e1a092f1375623fb2512e22c359",
"static/images/blog/announcing-appwrite-codex-plugin/cover.avif": "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",
Expand Down
10 changes: 8 additions & 2 deletions src/lib/components/blog/faq.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -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 }
Expand Down Expand Up @@ -49,7 +55,7 @@
use:melt={$root}
id="blog-faq"
>
{#each items as faqItem, index (index)}
{#each renderedItems as faqItem, index (index)}
<li class="collapsible-item">
<div
class="collapsible-wrapper py-2"
Expand Down Expand Up @@ -114,7 +120,7 @@
</summary>

<ul class="w-full min-w-0 divide-y divide-white/5 border-t border-white/10 px-5">
{#each items as faqItem, index (index)}
{#each renderedItems as faqItem, index (index)}
<li class="collapsible-item">
<details class="collapsible-wrapper">
<summary class="collapsible-button cursor-pointer appearance-none">
Expand Down
22 changes: 22 additions & 0 deletions src/lib/utils/markdown.ts
Original file line number Diff line number Diff line change
@@ -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 = {};

Expand Down
Original file line number Diff line number Diff line change
@@ -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
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Probably should have FAQ, especially around why API MCP is not supported. We do cover it in the article, but FAQs should be good here in frontmatter

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://<REGION>.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
Comment thread
greptile-apps[bot] marked this conversation as resolved.

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://<REGION>.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)
12 changes: 12 additions & 0 deletions src/routes/changelog/(entries)/2026-05-11.markdoc
Original file line number Diff line number Diff line change
@@ -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 %}
38 changes: 34 additions & 4 deletions src/routes/docs/tooling/ai/ai-dev-tools/codex/+page.markdoc
Original file line number Diff line number Diff line change
@@ -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 %}
Comment thread
adityaoberai marked this conversation as resolved.

{% /section %}

{% section #quick-start-prompts step=2 title="Quick start prompts" %}

Get started quickly with these pre-built prompts for common Appwrite integrations:

Expand All @@ -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.

Expand Down Expand Up @@ -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:

Expand Down
Binary file not shown.
Loading