Skip to content

AI section in documentation#2704

Open
atharvadeosthale wants to merge 48 commits intomainfrom
ai-docs
Open

AI section in documentation#2704
atharvadeosthale wants to merge 48 commits intomainfrom
ai-docs

Conversation

@atharvadeosthale
Copy link
Copy Markdown
Member

@atharvadeosthale atharvadeosthale commented Jan 20, 2026

This PR adds the AI section to the documentation that contains information on how to use Appwrite with AI agents the best way. Currently WIP.

Summary by CodeRabbit

  • New Features

    • Added an AI section with extensive tooling guides, MCP server integration guides, and prompt-rendering components for docs.
    • Introduced 30+ quick-start prompts across languages/frameworks and new AI-focused pages (RAG, vector DBs, persistent agents, Responsible AI).
  • Documentation

    • Reorganized docs navigation to surface the new AI hub and curated resources.
  • Chores

    • Added redirects and updated cached image entries for new AI docs and tooling assets.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Jan 20, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d2895e0c-6863-4460-9ab1-953402290e79

📥 Commits

Reviewing files that changed from the base of the PR and between 50df26b and 6c30950.

📒 Files selected for processing (2)
  • src/routes/docs/quick-starts/node/prompt.md
  • src/routes/docs/tooling/ai/agents-md/+page.markdoc
✅ Files skipped from review due to trivial changes (2)
  • src/routes/docs/tooling/ai/agents-md/+page.markdoc
  • src/routes/docs/quick-starts/node/prompt.md

Walkthrough

This PR adds a new /docs/tooling/ai/ section with many Markdoc pages (AI dev tools, MCP servers, quick-start prompts across numerous frameworks, RAG/vector DB guidance, responsible AI, persistent agents, etc.), introduces two new Svelte components (PromptCodeBlock, Prompt_Content) and a prompt prop/context flow in Article.svelte/PromptBanner.svelte, updates sidebar/navigation and redirects, removes a couple of existing tooling layouts, and updates a JSON optimize-cache entry. Most changes are documentation pages and template wiring to render prompt content.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'AI section in documentation' accurately describes the main change: adding comprehensive AI-related documentation including AI tools integration, MCP servers, quickstart prompts, and responsible AI guidance.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ai-docs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@atharvadeosthale atharvadeosthale marked this pull request as ready for review March 27, 2026 08:04
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Note

Due to the large number of review comments, Critical severity comments were prioritized as inline comments.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/partials/mcp-add-ides-tools.md (1)

12-15: ⚠️ Potential issue | 🟡 Minor

Update Zenflow and Cursor paths for consistency.

While redirects in src/redirects.json ensure the old /docs/tooling/mcp/ paths remain functional, other AI dev tools (Claude Desktop, Claude Code, Windsurf, VS Code, OpenCode, Antigravity) have been updated directly in this partial to use /docs/tooling/ai/ai-dev-tools/... paths. Update Zenflow and Cursor references to match this pattern:

{% cards_item href="/docs/tooling/ai/ai-dev-tools/zenflow" title="Zenflow" image="/images/docs/mcp/logos/zenflow.svg" %}
{% /cards_item %}

{% cards_item href="/docs/tooling/ai/ai-dev-tools/cursor" title="Cursor" image="/images/docs/mcp/logos/cursor-ai.svg" %}

Apply the same updates to the dark mode section (lines 42, 45).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/partials/mcp-add-ides-tools.md` around lines 12 - 15, Update the
cards_item hrefs for Zenflow and Cursor to use the new
/docs/tooling/ai/ai-dev-tools/... paths: locate the cards_item blocks that
reference title="Zenflow" and title="Cursor" (both in the main section and the
dark-mode section) and change their href attributes from
/docs/tooling/mcp/zenflow and /docs/tooling/mcp/cursor to
/docs/tooling/ai/ai-dev-tools/zenflow and /docs/tooling/ai/ai-dev-tools/cursor
respectively so they match the other AI dev tools in this partial.
🟠 Major comments (20)
src/routes/docs/quick-starts/swift/+page.markdoc-116-116 (1)

116-116: ⚠️ Potential issue | 🟠 Major

Fix Swift SDK parameter names: use xrequired and xdefault instead of required and default.

Lines 116, 122, 123, and 129 use incorrect parameter labels. The Appwrite Swift Server SDK v10.0.0 TablesDB column methods (createVarcharColumn, createTextColumn, createBooleanColumn) require xrequired and xdefault, not required and default. This breaks the code snippet for users.

Required changes
-        required: true
+        xrequired: true
...
-        required: false,
-        default: "This is a test description."
+        xrequired: false,
+        xdefault: "This is a test description."
...
-        required: true
+        xrequired: true
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/swift/`+page.markdoc at line 116, Update the
Swift code snippet to use the Appwrite v10 TablesDB parameter names: replace any
occurrences of the named parameters "required" and "default" passed to the SDK
column builders with "xrequired" and "xdefault" respectively; specifically
update calls to createVarcharColumn, createTextColumn, and createBooleanColumn
so they use xrequired: and xdefault: (or omit xdefault if not applicable) to
match the SDK's method signatures.
src/routes/docs/tooling/ai/ai-dev-tools/vscode/+page.markdoc-89-90 (1)

89-90: ⚠️ Potential issue | 🟠 Major

Fix docs MCP URL in JSON sample.

Line 89 uses angle-bracket autolink formatting in a JSON value; keep it as a plain URL.

Proposed fix
-      "url": "<https://mcp-for-docs.appwrite.io>",
+      "url": "https://mcp-for-docs.appwrite.io",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/vscode/`+page.markdoc around lines 89
- 90, The JSON sample has the "url" value wrapped in Markdown autolink angle
brackets ("<https://mcp-for-docs.appwrite.io>"); change the "url" property value
to the plain URL string without angle brackets so it reads
"https://mcp-for-docs.appwrite.io" (locate the "url" key in the JSON block in
+page.markdoc and remove the surrounding < and >).
src/routes/docs/tooling/ai/ai-dev-tools/cursor/+page.markdoc-92-93 (1)

92-93: ⚠️ Potential issue | 🟠 Major

Remove Markdown autolink brackets from JSON config values.

The URL is shown with <...> inside JSON, which can be copied as a literal invalid value in config.

Proposed fix
-        "<https://mcp-for-docs.appwrite.io>"
+        "https://mcp-for-docs.appwrite.io"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/cursor/`+page.markdoc around lines 92
- 93, The JSON config contains a URL wrapped in Markdown autolink brackets
("<https://mcp-for-docs.appwrite.io>"); remove the angle brackets so the string
value is the raw URL ("https://mcp-for-docs.appwrite.io") to prevent copying an
invalid value—update the literal that currently appears as
"<https://mcp-for-docs.appwrite.io>" in the +page.markdoc content.
src/routes/docs/tooling/ai/ai-dev-tools/opencode/+page.markdoc-51-52 (1)

51-52: ⚠️ Potential issue | 🟠 Major

Fix JSON URL values by removing <...> wrappers.

Markdown autolink formatting inside JSON samples can produce incorrect copied values.

Proposed fix
-  "$schema": "<https://opencode.ai/config.json>",
+  "$schema": "https://opencode.ai/config.json",

-      "url": "<https://mcp-for-docs.appwrite.io>"
+      "url": "https://mcp-for-docs.appwrite.io"

Also applies to: 84-85, 89-90

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/opencode/`+page.markdoc around lines
51 - 52, The JSON sample contains URL values wrapped in angle-bracket autolink
syntax (e.g. the "$schema" value is "<https://opencode.ai/config.json>"); remove
the surrounding "<" and ">" so the value becomes
"https://opencode.ai/config.json" and do the same for the other occurrences
referenced (the other URL strings near the "mcp" block and later URL entries).
Locate the JSON keys like "$schema" and any string values that start with
"<http" in the +page.markdoc content and replace the bracketed form with the
plain URL string (no angle brackets) to ensure copied JSON is valid.
src/routes/docs/tooling/ai/ai-dev-tools/emergent/+page.markdoc-56-58 (1)

56-58: ⚠️ Potential issue | 🟠 Major

Use plain URL string in the JSON args array.

The docs-server argument currently includes Markdown-style angle brackets.

Proposed fix
-        "<https://mcp-for-docs.appwrite.io>"
+        "https://mcp-for-docs.appwrite.io"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/emergent/`+page.markdoc around lines
56 - 58, In the JSON args array in the +page.markdoc file replace the
Markdown-style angled-bracket URL string "<https://mcp-for-docs.appwrite.io>"
with the plain URL "https://mcp-for-docs.appwrite.io" so the args entry is a
valid JSON string; locate the element in the args array that currently reads
"<https://mcp-for-docs.appwrite.io>" and remove the surrounding angle brackets,
keeping the rest of the array (e.g., "mcp-remote") unchanged.
src/routes/docs/quick-starts/dotnet/prompt.md-47-50 (1)

47-50: ⚠️ Potential issue | 🟠 Major

Avoid documenting API key literals in source code.

This pattern encourages hardcoding secrets in Program.cs. Prefer environment variables in the sample.

Proposed fix
-client
-    .SetEndpoint("https://<REGION>.cloud.appwrite.io/v1")
-    .SetProject("<PROJECT_ID>")
-    .SetKey("<YOUR_API_KEY>");
+var endpoint = Environment.GetEnvironmentVariable("APPWRITE_ENDPOINT");
+var projectId = Environment.GetEnvironmentVariable("APPWRITE_PROJECT_ID");
+var apiKey = Environment.GetEnvironmentVariable("APPWRITE_API_KEY");
+
+client
+    .SetEndpoint(endpoint!)
+    .SetProject(projectId!)
+    .SetKey(apiKey!);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/dotnet/prompt.md` around lines 47 - 50, The
sample shows hardcoded values in the SDK setup (.SetEndpoint, .SetProject,
.SetKey) which encourages embedding secrets in Program.cs; change the sample to
read these values from environment variables (e.g., use
Environment.GetEnvironmentVariable for endpoint/project/key) and reference
descriptive env var names (e.g., APPWRITE_ENDPOINT, APPWRITE_PROJECT,
APPWRITE_KEY) so the example demonstrates secure configuration without literal
API keys.
src/routes/docs/quick-starts/sveltekit/prompt.md-69-76 (1)

69-76: ⚠️ Potential issue | 🟠 Major

Missing await on login() call inside register().

The login(email, password) call on line 75 is missing await. Since login is an async function, failing to await it means the function returns before login completes, potentially causing race conditions or the UI not reflecting the logged-in state.

🐛 Proposed fix
     async function register(email, password) {
         await account.create({
             userId: ID.unique(),
             email,
             password
         });
-        login(email, password);
+        await login(email, password);
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/sveltekit/prompt.md` around lines 69 - 76, The
register function calls the async login(email, password) without awaiting it, so
register may return before login completes; update register (the async function
named register) to await the login call (i.e., await login(email, password)) so
the function only resolves after login finishes and consider propagating or
handling any errors from login accordingly.
src/routes/docs/quick-starts/react/prompt.md-7-7 (1)

7-7: ⚠️ Potential issue | 🟠 Major

Package-manager instruction conflicts with npm-only commands.

The prompt says to respect the user’s package manager, but setup/install/run steps are hardcoded to npm/npx. Please make each command conditional (npm/yarn/pnpm/bun) or use package-manager placeholders consistently.

Suggested edit
-- For a new project, run: `npm create vite@latest . -- --template react`
+- For a new project, run the equivalent command for the user’s package manager (e.g. `npm create vite@latest . -- --template react`, `pnpm create vite . --template react`, `yarn create vite . --template react`).

-- Run: `npm install appwrite`
+- Run the install command using the user’s package manager (e.g. `npm install appwrite` / `pnpm add appwrite` / `yarn add appwrite`).

-- Run: `npm run dev -- --open --port 3000`
+- Run the dev command using the user’s package manager (e.g. `npm run dev -- --open --port 3000` / `pnpm dev -- --open --port 3000` / `yarn dev --open --port 3000`).

Also applies to: 14-14, 19-19, 60-60

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/react/prompt.md` at line 7, The docs currently
hardcode npm/npx in the setup and run commands; update the prompt.md content so
every install/run command respects the user's package manager by either (a)
providing conditional variants for npm, yarn, pnpm and bun for the listed steps
(setup/install/run) or (b) replacing concrete commands with a consistent
package-manager placeholder like <package-manager> and <package-runner> and
include a short note explaining how to substitute it; ensure you update all
occurrences referenced in the comment (the install/setup/run commands around the
quick-start steps) so no command remains npm-only.
src/routes/docs/quick-starts/nextjs/prompt.md-6-6 (1)

6-6: ⚠️ Potential issue | 🟠 Major

Package-manager neutrality conflicts with npm-specific commands.

This prompt should not hardcode npm/npx after explicitly requiring user package-manager preference. Please make commands package-manager aware.

Also applies to: 14-14, 19-19, 65-65

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/nextjs/prompt.md` at line 6, The prompt text
currently hardcodes npm/npx commands despite stating package-manager neutrality;
update all command examples (the lines containing "npm", "npx" and similar CLI
snippets) to be package-manager aware by replacing hardcoded invocations with a
placeholder or variable (e.g., {packageManager}, {pkgManagerRun}, or a
conditional snippet that expands to npm/yarn/pnpm equivalents) so the prompt
uses the user's selected package manager consistently across the occurrences
that mention npm/npx; ensure examples show the correct run/install grammar for
each manager (install vs add, run vs exec) when expanding the placeholder.
src/routes/docs/tooling/ai/ai-dev-tools/antigravity/+page.markdoc-90-90 (1)

90-90: ⚠️ Potential issue | 🟠 Major

Remove angle brackets from the docs MCP URL.

The config value should be a raw URL string; including <...> will break direct copy/paste usage.

Suggested fix
-              "<https://mcp-for-docs.appwrite.io>"
+              "https://mcp-for-docs.appwrite.io"
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/antigravity/`+page.markdoc at line
90, The docs contain a URL literal written as
"<https://mcp-for-docs.appwrite.io>" which includes angle brackets that break
copy/paste; replace that literal with the raw URL string
"https://mcp-for-docs.appwrite.io" (remove the leading '<' and trailing '>') so
consumers can copy the link directly — look for the string
"<https://mcp-for-docs.appwrite.io>" in the Markdoc content and update it to the
plain URL.
src/routes/docs/quick-starts/flutter/prompt.md-108-110 (1)

108-110: 🛠️ Refactor suggestion | 🟠 Major

Remove the nested MaterialApp — keep only one root instance.

The main() function creates a MaterialApp, but MyAppState.build() (lines 176-177) returns another MaterialApp. This causes issues with routing, theming, and localization. Remove the inner MaterialApp and return Scaffold directly from build().

Also applies to: 176-177

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/flutter/prompt.md` around lines 108 - 110, The
app currently nests two MaterialApp instances: one created in main() and another
returned by MyAppState.build(); remove the inner MaterialApp in
MyAppState.build() so MyApp returns a Scaffold (or other top-level widget)
directly, preserving the existing app-level MaterialApp for routing, theming,
and localization; update MyAppState.build() to return the Scaffold (move any
theme/route/configuration usage to the root MaterialApp in main() if needed) and
ensure MyApp(account: account) stays as the child of the single MaterialApp
created in main().
src/routes/docs/quick-starts/deno/prompt.md-183-183 (1)

183-183: ⚠️ Potential issue | 🟠 Major

Run command is incorrect for Deno CLI.

deno mod.ts should be deno run --allow-net mod.ts. The deno run prefix is required to execute TypeScript files, and the --allow-net flag is necessary since this application makes API calls to Appwrite Cloud.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/deno/prompt.md` at line 183, The "Run the
project: `deno mod.ts`" instruction is incorrect; update the line that currently
reads "Run the project: `deno mod.ts`" to the correct Deno invocation "Run the
project: `deno run --allow-net mod.ts`" so the TypeScript file is executed and
the app has network permissions for Appwrite API calls.
src/routes/docs/tooling/ai/rag/+page.markdoc-163-172 (1)

163-172: ⚠️ Potential issue | 🟠 Major

Fix JSON parsing of fetch response.

The code accesses response.matches directly on the fetch Response object, but the response body needs to be parsed as JSON first. This will return undefined instead of the actual matches.

🐛 Proposed fix
     window.onSearch = async function (prompt) {
         const response = await fetch('/search', {
             method: 'POST',
             body: JSON.stringify({ prompt }),
             headers: {
             'Content-Type': 'application/json',
             },
         });
-        return response.matches;
+        const data = await response.json();
+        return data.matches;
     };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/rag/`+page.markdoc around lines 163 - 172, In
window.onSearch replace direct access to Response properties with JSON parsing:
after awaiting fetch in window.onSearch, call await response.json() to get the
parsed payload and then return its matches (i.e., use the parsed object's
matches property). Ensure you still handle non-2xx responses or missing matches
appropriately in the window.onSearch function.
src/routes/docs/tooling/ai/rag/+page.markdoc-228-231 (1)

228-231: ⚠️ Potential issue | 🟠 Major

Missing OpenAIEmbeddings import.

OpenAIEmbeddings is used on Line 229 but is not included in the imports shown in Step 7 (Lines 206-215). This will cause a runtime error.

🐛 Proposed fix - add to imports in Step 7
-import { ChatOpenAI } from '@langchain/openai';
+import { ChatOpenAI, OpenAIEmbeddings } from '@langchain/openai';
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/rag/`+page.markdoc around lines 228 - 231, The
code calls OpenAIEmbeddings in the PineconeStore.fromExistingIndex call but the
OpenAIEmbeddings symbol is not imported; add an import for OpenAIEmbeddings
alongside the other imports in Step 7 so the symbol is defined (i.e., import
OpenAIEmbeddings from the OpenAI embeddings package used elsewhere) and ensure
the import is available before the PineconeStore.fromExistingIndex usage.
src/routes/docs/quick-starts/angular/prompt.md-16-16 (1)

16-16: ⚠️ Potential issue | 🟠 Major

Update the Angular CLI command to use a proper project name.

The command ng new . --directory . does not follow Angular CLI conventions. The ng new command requires a project name as the first argument before the --directory flag. Change to: ng new my-app --directory . (or replace my-app with an appropriate project name).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/angular/prompt.md` at line 16, The CLI example
uses an invalid Angular command string `ng new . --directory .`; update it to
supply a proper project name as the first argument by replacing that string with
`ng new my-app --directory .` (or substitute your chosen project name for
"my-app") so the `ng new` invocation follows Angular CLI conventions.
src/routes/docs/tooling/ai/rag/+page.markdoc-316-325 (1)

316-325: ⚠️ Potential issue | 🟠 Major

Use LangChain Document class instead of undefined Row.

The code uses new Row(...) but Row is not a LangChain class. LangChain uses Document for this purpose. This will cause a runtime error.

🐛 Proposed fix

First, add the import:

import { Document } from '@langchain/core/documents';

Then update the mapping:

 const rows = appwriteRows.map(
   (row) =>
-    new Row({
+    new Document({
       metadata: { id: row.$id },
       pageContent: Object.entries(row)
         .filter(([key, _]) => !key.startsWith('$'))
         .map(([key, value]) => `${key}: ${value}`)
         .join('\n'),
     })
 );
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/rag/`+page.markdoc around lines 316 - 325, Replace
the non-existent Row usage with LangChain's Document: import Document from
'@langchain/core/documents' and change the mapper that builds new Row({...}) to
instead construct new Document({ pageContent: ..., metadata: { id: row.$id } });
ensure you keep the existing appwriteRows mapping logic (filtering keys that
start with '$' and joining entries) and preserve the metadata field name and
pageContent construction when replacing Row with Document.
src/routes/docs/quick-starts/apple/prompt.md-143-164 (1)

143-164: ⚠️ Potential issue | 🟠 Major

Missing error handling in async button actions.

The Task { try await ... } blocks will crash the app if the Appwrite calls fail, since thrown errors are not caught. Add do-catch blocks for proper error handling.

Proposed fix
             Button(
-                action: { Task {
-                    try await appwrite.onRegister(
-                        viewModel.email,
-                        viewModel.password
-                    )
-                }},
+                action: { Task {
+                    do {
+                        try await appwrite.onRegister(
+                            viewModel.email,
+                            viewModel.password
+                        )
+                    } catch {
+                        print("Registration failed: \(error)")
+                    }
+                }},
                 label: {
                     Text("Register")
                 }
             )
             Button(
-                action: { Task {
-                    try await appwrite.onLogin(
-                        viewModel.email,
-                        viewModel.password
-                    )
-                }},
+                action: { Task {
+                    do {
+                        try await appwrite.onLogin(
+                            viewModel.email,
+                            viewModel.password
+                        )
+                    } catch {
+                        print("Login failed: \(error)")
+                    }
+                }},
                 label: {
                     Text("Login")
                 }
             )
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/apple/prompt.md` around lines 143 - 164, The
Task closures for the two Buttons currently call try await
appwrite.onRegister(...) and try await appwrite.onLogin(...) without catching
errors; wrap each async call in a do { try await ... } catch { ... } block so
thrown errors are handled (e.g., set a viewModel.error/message property or call
a UI error presentation method), ensuring appwrite.onRegister and
appwrite.onLogin failures do not crash the app and provide user-friendly error
reporting.
src/routes/docs/tooling/ai/vector-db-and-embeddings/+page.markdoc-161-171 (1)

161-171: ⚠️ Potential issue | 🟠 Major

Bug in onSearch function – missing JSON parsing.

response.matches will be undefined because fetch returns a Response object, not the parsed JSON body. The response needs to be parsed first.

Proposed fix
     window.onSearch = async function (prompt) {
         const response = await fetch('/search', {
             method: 'POST',
             body: JSON.stringify({ prompt }),
             headers: {
             'Content-Type': 'application/json',
             },
         });
-        return response.matches;
+        const data = await response.json();
+        return data.matches;
     };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/vector-db-and-embeddings/`+page.markdoc around
lines 161 - 171, The onSearch function is returning response.matches from the
raw fetch Response object which is undefined; update window.onSearch to await
and parse the JSON body (e.g., const data = await response.json()), check
response.ok or handle errors, and then return data.matches (or fallback) so
callers get the parsed matches; locate the function by the symbol
window.onSearch and the response variable to implement this change.
src/routes/docs/quick-starts/android/prompt.md-150-156 (1)

150-156: ⚠️ Potential issue | 🟠 Major

Missing state reset after logout.

The logout button calls Appwrite.onLogout() but doesn't reset the user state variable to "". The UI will remain in the "logged in" state even after successful logout.

Proposed fix
                             Button(onClick = {
                                 coroutineScope.launch {
                                     Appwrite.onLogout()
+                                    user = ""
                                 }
                             }) {
                                 Text("Logout")
                             }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/android/prompt.md` around lines 150 - 156, The
logout Button's onClick launches coroutineScope and calls Appwrite.onLogout()
but doesn't clear the local UI state (the user state variable), so the UI stays
"logged in"; after calling Appwrite.onLogout() inside the coroutine (the block
inside Button onClick / coroutineScope.launch) update the user state variable
(e.g., set user = "") to reset the UI, ensuring any other related UI state is
cleared as needed.
src/routes/docs/quick-starts/android/prompt.md-143-214 (1)

143-214: ⚠️ Potential issue | 🟠 Major

UI logic bug: login form always visible regardless of login state.

The code renders the logged-in Column (lines 144-158) when user.isNotEmpty(), but the login form Column (lines 160-214) is always rendered unconditionally. Both will display simultaneously when logged in.

The login form should be wrapped in an else block.

Proposed fix
                     if (user.isNotEmpty()) {
                         Column(
                             modifier = Modifier.fillMaxSize(),
                             horizontalAlignment = Alignment.CenterHorizontally,
                             verticalArrangement = Arrangement.Center
                         ) {
                             Text(text = "Logged in as $user")
                             Button(onClick = {
                                 coroutineScope.launch {
                                     Appwrite.onLogout()
+                                    user = ""
                                 }
                             }) {
                                 Text("Logout")
                             }
                         }
-                    }
-
-                    Column(
+                    } else {
+                        Column(
                         modifier = Modifier.fillMaxSize(),
                         ...
-                    }
+                        }
+                    }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/android/prompt.md` around lines 143 - 214, The
login UI is always rendered because the second Column isn't guarded by an else;
wrap the login form Column in an else branch for the existing if
(user.isNotEmpty()) so only the logged-in Column shows when user.isNotEmpty()
and the login/register Column (the TextField entries and Buttons that call
Appwrite.onLogin and Appwrite.onRegister) shows when the user is empty; update
the conditional that currently surrounds the first Column to include an else
containing the second Column to prevent both from displaying simultaneously.
🟡 Minor comments (24)
src/routes/docs/quick-starts/solid/prompt.md-5-5 (1)

5-5: ⚠️ Potential issue | 🟡 Minor

Package manager consistency issue.

Line 5 instructs to "Respect user's package manager at all times. Don't use NPM if the user uses something else," but lines 18, 22, and 142 hardcode npm commands. This creates an inconsistency between the stated principle and the implementation.

📝 Suggested approach to honor user's package manager

Consider using placeholder text or variables like <package-manager> throughout the prompt, with an instruction to detect and use the user's preferred package manager (npm, yarn, pnpm, bun, etc.) based on lock files or explicit user preference.

Example:

- Run: `<package-manager> create vite@latest . -- --template solid`
- Run: `<package-manager> install appwrite`
- Run: `<package-manager> run dev -- --open --port 3000`

Add an instruction at the beginning: "Detect the user's package manager from lock files (package-lock.json, yarn.lock, pnpm-lock.yaml, bun.lockb) or ask for their preference, then use it consistently throughout."

Also applies to: 18-18, 22-22, 142-142

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/solid/prompt.md` at line 5, The prompt hardcodes
npm commands (e.g., the steps "npm create vite@latest ...", "npm install
appwrite", and "npm run dev ...") which contradicts the stated rule to respect
the user's package manager; replace those hardcoded commands with a
<package-manager> placeholder and add a short instruction at the top to detect
the user's package manager from lock files (package-lock.json, yarn.lock,
pnpm-lock.yaml, bun.lockb) or ask the user, then substitute <package-manager>
consistently for all install/create/run commands throughout the prompt so
detection and substitution occur before presenting any commands.
src/routes/docs/tooling/ai/agents-md/+page.markdoc-34-34 (1)

34-34: ⚠️ Potential issue | 🟡 Minor

Use Databases (plural) for product-name consistency.

Line 34 says Database; docs generally use Databases as the product name.

Suggested wording tweak
-Check the Appwrite services your project uses, such as Auth, Database, Storage, Functions, Messaging, Sites, and Realtime. The generated rules will only include context for the services you select.
+Check the Appwrite services your project uses, such as Auth, Databases, Storage, Functions, Messaging, Sites, and Realtime. The generated rules will only include context for the services you select.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/agents-md/`+page.markdoc at line 34, Replace the
singular product name "Database" in the sentence "Check the Appwrite services
your project uses, such as Auth, Database, Storage, Functions, Messaging, Sites,
and Realtime." with the plural "Databases" to match product-name consistency
used across the docs; locate the string "Auth, Database, Storage, Functions,
Messaging, Sites, and Realtime" in the +page.markdoc content and change
"Database" -> "Databases".
src/routes/docs/tooling/ai/ai-dev-tools/cursor/+page.markdoc-150-151 (1)

150-151: ⚠️ Potential issue | 🟡 Minor

Update legacy data model terminology in example prompts.

These prompts still use collections and document; use rows/columns terminology for .markdoc consistency.

Proposed fix
-- `Show me the collections in my database`
-- `Create a new document in my collection`
+- `Show me the rows in my table`
+- `Create a new row in my table`

Based on learnings: use 'rows' and 'columns' instead of 'documents' and 'collections' across .markdoc documentation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/cursor/`+page.markdoc around lines
150 - 151, Update the example prompts that use legacy data model terms: replace
occurrences of the strings "collections" and "document" with "rows" and
"columns" respectively in the +page.markdoc content (specifically the lines with
`Show me the collections in my database` and `Create a new document in my
collection`); ensure consistency by changing the prompts to `Show me the rows in
my database` and `Create a new row in my columns` (or more likely `Create a new
row in my table` if that matches surrounding terminology), and verify any nearby
examples use "rows"/"columns" everywhere to remain consistent.
src/routes/docs/tooling/ai/ai-dev-tools/emergent/+page.markdoc-87-88 (1)

87-88: ⚠️ Potential issue | 🟡 Minor

Update prompt terminology to rows/tables.

This still references collections and document.

Proposed fix
-- `Show me the collections in my database`
-- `Create a new document in my collection`
+- `Show me the rows in my table`
+- `Create a new row in my table`

Based on learnings: use 'rows' and 'columns' instead of 'documents' and 'collections' across .markdoc documentation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/emergent/`+page.markdoc around lines
87 - 88, Replace terminology that references collections/documents with the new
rows/tables naming: change the string `Show me the collections in my database`
to use tables (e.g., `Show me the tables in my database`) and change `Create a
new document in my collection` to use row/table terminology (e.g., `Create a new
row in my table`). Also search the .markdoc content for any other occurrences of
`collections`, `collection`, `document`, or `documents` and update them to
`tables`/`table` and `rows`/`row` (or `columns` where appropriate) so
terminology is consistent across the documentation.
src/routes/docs/tooling/ai/ai-dev-tools/claude-desktop/+page.markdoc-142-143 (1)

142-143: ⚠️ Potential issue | 🟡 Minor

Replace legacy prompt wording with rows/tables language.

These two prompts should avoid collections and document.

Proposed fix
-- `Show me the collections in my database`
-- `Create a new document in my collection`
+- `Show me the rows in my table`
+- `Create a new row in my table`

Based on learnings: use 'rows' and 'columns' instead of 'documents' and 'collections' across .markdoc documentation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/claude-desktop/`+page.markdoc around
lines 142 - 143, Replace legacy wording in the two prompt strings so they use
"rows" and "columns" instead of "collections" and "document": change "`Show me
the collections in my database`" to something like "`Show me the rows in my
database`" (or "`Show me the rows in my table`") and change "`Create a new
document in my collection`" to use rows/columns language such as "`Create a new
row in my table`" or "`Insert a new row with these column values`"; update the
prompt text where these exact strings appear in the +page.markdoc so the docs
consistently use "rows"/"columns" terminology.
src/routes/docs/tooling/ai/ai-dev-tools/zenflow/+page.markdoc-115-116 (1)

115-116: ⚠️ Potential issue | 🟡 Minor

Align test prompts with rows/tables terminology.

Please replace legacy collections/document wording.

Proposed fix
-- `Show me the collections in my database`
-- `Create a new document in my collection`
+- `Show me the rows in my table`
+- `Create a new row in my table`

Based on learnings: use 'rows' and 'columns' instead of 'documents' and 'collections' across .markdoc documentation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/zenflow/`+page.markdoc around lines
115 - 116, Replace legacy wording: change "collections" to "columns" and
"document" to "row" in the two test prompts. Specifically update the strings
`Show me the collections in my database` -> `Show me the columns in my database`
and `Create a new document in my collection` -> `Create a new row in my column`
in the +page.markdoc content so the file uses "rows" and "columns" terminology
(look for those exact prompt strings to locate the lines).
src/routes/docs/tooling/ai/ai-dev-tools/vscode/+page.markdoc-121-122 (1)

121-122: ⚠️ Potential issue | 🟡 Minor

Use rows/tables wording in test prompts.

Please update these prompts to match the current data model terminology.

Proposed fix
-- `Show me the collections in my database`
-- `Create a new document in my collection`
+- `Show me the rows in my table`
+- `Create a new row in my table`

Based on learnings: use 'rows' and 'columns' instead of 'documents' and 'collections' across .markdoc documentation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/vscode/`+page.markdoc around lines
121 - 122, Replace the test prompt strings to use the updated data-model terms:
change "`Show me the collections in my database`" to "`Show me the columns in my
database`" and change "`Create a new document in my collection`" to "`Create a
new row in my column`" (or "`Create a new row in my columns`" if plural makes
more sense in context) so the file's prompts use "rows" for documents and
"columns" for collections.
src/routes/docs/tooling/ai/ai-dev-tools/opencode/+page.markdoc-118-119 (1)

118-119: ⚠️ Potential issue | 🟡 Minor

Replace collections/document wording in prompts.

Use table/row terminology for consistency with current docs language.

Proposed fix
-- `Show me the collections in my database`
-- `Create a new document in my collection`
+- `Show me the rows in my table`
+- `Create a new row in my table`

Based on learnings: use 'rows' and 'columns' instead of 'documents' and 'collections' across .markdoc documentation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/opencode/`+page.markdoc around lines
118 - 119, Replace the database prompt wording that uses "collections" and
"document" with the preferred terminology: change the string "Show me the
collections in my database" to use "columns" (e.g., "Show me the columns in my
database") and change "Create a new document in my collection" to use "rows" and
"columns" (e.g., "Create a new row in my column"); apply the same rows/columns
replacement consistently across this .markdoc file wherever those terms appear.
src/routes/docs/tooling/ai/ai-dev-tools/+page.markdoc-13-13 (1)

13-13: ⚠️ Potential issue | 🟡 Minor

Minor grammar issue: subject-verb agreement.

"MCP servers" is plural, so the verb should be "provide" instead of "provides".

-AI-powered IDEs and code editors provide intelligent code completion, inline suggestions, and context-aware assistance as you write code. These tools understand Appwrite's SDKs and APIs, helping you implement features correctly and efficiently. These tools also support our MCP servers, which provides these agents access to your Appwrite project directly, making AI-assisted development seamless.
+AI-powered IDEs and code editors provide intelligent code completion, inline suggestions, and context-aware assistance as you write code. These tools understand Appwrite's SDKs and APIs, helping you implement features correctly and efficiently. These tools also support our MCP servers, which provide these agents access to your Appwrite project directly, making AI-assisted development seamless.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/`+page.markdoc at line 13, The
sentence uses singular verb "provides" with plural subject "MCP servers"; update
the phrase "which provides these agents access to your Appwrite project
directly" to use the plural verb ("provide") so it reads "...which provide these
agents access to your Appwrite project directly" in the +page.markdoc content.
src/routes/docs/tooling/ai/ai-dev-tools/claude-code/+page.markdoc-58-61 (1)

58-61: ⚠️ Potential issue | 🟡 Minor

Remove angle brackets from URL in command.

The URL <https://mcp-for-docs.appwrite.io> has angle brackets which users might accidentally include when copying. Shell commands typically don't require angle brackets around URLs.

📝 Suggested fix
-claude mcp add appwrite-docs <https://mcp-for-docs.appwrite.io> -t http
+claude mcp add appwrite-docs https://mcp-for-docs.appwrite.io -t http
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/claude-code/`+page.markdoc around
lines 58 - 61, In the bash code block containing the command that starts with
"claude mcp add appwrite-docs", remove the surrounding angle brackets around the
URL so the URL is plain text (i.e., do not include "<" or ">" characters) to
prevent users from copying invalid shell input; update the code block line
showing the command accordingly.
src/routes/docs/tooling/ai/ai-dev-tools/claude-code/+page.markdoc-99-103 (1)

99-103: ⚠️ Potential issue | 🟡 Minor

Update example prompts to use current terminology.

Similar to the MCP API page, these example prompts use "collections" and "document" which should be "tables" and "row".

📝 Suggested terminology update
 - `List all databases in my project`
-- `Show me the collections in my database`
-- `Create a new document in my collection`
+- `Show me the tables in my database`
+- `Create a new row in my table`
 - `Delete a specific user by ID`

Based on learnings: "update terminology to use 'rows' and 'columns' instead of 'documents' and 'collections' across all documentation files."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/claude-code/`+page.markdoc around
lines 99 - 103, Update the example prompts in the ai-dev-tools Claude page to
use current MCP terminology: replace "collections" with "tables" and "document"
with "row" (e.g., update the prompts that currently read "Show me the
collections in my database" → "Show me the tables in my database" and "Create a
new document in my collection" → "Create a new row in my table"); search for the
exact strings in the +page.markdoc content and ensure all occurrences (including
plural/singular forms) are updated to "tables" and "row(s)" consistently.
src/routes/docs/tooling/ai/mcp-servers/api/+page.markdoc-99-103 (1)

99-103: ⚠️ Potential issue | 🟡 Minor

Update example prompts to use current terminology.

The example prompts use "collections" and "document" which should be updated to "tables" and "row" per the project's terminology guidelines.

📝 Suggested terminology update
 - `List all databases in my project`
-- `Show me the collections in my database`
-- `Create a new document in my collection`
+- `Show me the tables in my database`
+- `Create a new row in my table`
 - `Delete a specific user by ID`

Based on learnings: "update terminology to use 'rows' and 'columns' instead of 'documents' and 'collections' across all documentation files."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/mcp-servers/api/`+page.markdoc around lines 99 -
103, The example prompt text under "## Example 2: Search a site" uses the old
terms "collections" and "document"; update all occurrences in that section (both
prose and any code-block prompts) to the project's current terminology: replace
"collections" -> "tables" and "document"/"documents" -> "row"/"rows" (and
likewise change "fields" to "columns" where applicable), ensuring consistency in
the heading and example prompt text so the file uses "tables", "rows", and
"columns" throughout.
src/routes/docs/quick-starts/nextjs/prompt.md-45-45 (1)

45-45: ⚠️ Potential issue | 🟡 Minor

Deliverables list should include the app/auth/page.js path option.

For existing projects, the guide directs users to app/auth/page.js, so deliverables should mention that variant too.

Also applies to: 80-80

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/nextjs/prompt.md` at line 45, The deliverables
list is missing the alternative path variant mentioned in the guide; update the
deliverables to include the `app/auth/page.js` option (and its `.tsx` variant)
alongside any existing `app/auth/route` or other paths so that the deliverables
match the guidance in the text referencing `app/auth/page.js` (ensure you update
any deliverables items that currently only list the default route to also list
`app/auth/page.js` / `app/auth/page.tsx`).
src/routes/docs/quick-starts/go/prompt.md-41-41 (1)

41-41: ⚠️ Potential issue | 🟡 Minor

Use <PROJECT_ID> placeholder name consistently.

<PROJECT_KEY> is described as project ID, which is confusing next to <API_KEY>. Renaming to <PROJECT_ID> will reduce copy/paste mistakes.

Suggested edit
-- Replace `<PROJECT_KEY>` with their project ID and `<API_KEY>` with their API key:
+- Replace `<PROJECT_ID>` with their project ID and `<API_KEY>` with their API key:

-        appwrite.WithProject("<PROJECT_KEY>"),
+        appwrite.WithProject("<PROJECT_ID>"),

Also applies to: 63-63

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/go/prompt.md` at line 41, Replace the
inconsistent placeholder `<PROJECT_KEY>` with `<PROJECT_ID>` everywhere in the
document (including the Create file: `app.go` instruction and the other
occurrence at the noted second location) so the README uses `<PROJECT_ID>`
alongside `<API_KEY>`; update any inline instructions and code snippets that
mention `<PROJECT_KEY>` to `<PROJECT_ID>` to avoid confusion and copy/paste
errors.
src/routes/docs/tooling/ai/ai-dev-tools/antigravity/+page.markdoc-116-117 (1)

116-117: ⚠️ Potential issue | 🟡 Minor

Update legacy “collections/documents” terms to “tables/rows.”

These examples should use current TablesDB terminology for consistency with the rest of the docs.

Based on learnings: In appwrite/website, update terminology to use 'rows' and 'columns' instead of 'documents' and 'collections' across all documentation files with the .markdoc extension, including generated SDK documentation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/antigravity/`+page.markdoc around
lines 116 - 117, Update the legacy example phrases to use TablesDB terminology:
replace the literal strings `Show me the collections in my database` -> `Show me
the tables in my database` and `Create a new document in my collection` ->
`Create a new row in my table`; also update plural/singular variants
(collections->tables, documents->rows, collection->table, document->row) across
all .markdoc files (including generated SDK docs) to keep terminology
consistent. Ensure you update both example prompts and any nearby usage of these
tokens so examples and descriptions reference "tables/rows" instead of
"collections/documents".
src/routes/docs/quick-starts/dart/prompt.md-3-3 (1)

3-3: ⚠️ Potential issue | 🟡 Minor

“CRUD” claim is broader than the implemented steps.

The guide currently covers create/read flows but not update/delete. Either add update/delete steps or narrow the claim in the opening sentence.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/dart/prompt.md` at line 3, The opening sentence
"Create a Dart server-side CLI application with Appwrite that demonstrates
database operations (create database, table, columns, and CRUD operations on
rows)." overstates the guide because it only shows create/read flows; either add
explicit Update and Delete examples to the tutorial (e.g., show code snippets
and commands for updating a row/document and deleting a row/document using the
same Dart CLI patterns used for create/read) or change the opening sentence to
accurately state "create and read" instead of "CRUD" (update the sentence in the
prompt.md header). Ensure the chosen approach updates any other references to
"CRUD" in the same file to keep the claim consistent.
src/routes/docs/quick-starts/vue/prompt.md-92-100 (1)

92-100: ⚠️ Potential issue | 🟡 Minor

Missing await on async login call.

The register function calls login() without await. Since login is async, this could lead to unhandled promise rejections or race conditions where the component state isn't properly updated before subsequent operations.

📝 Proposed fix
     const register = async () => {
         await account.create({
             userId: ID.unique(),
             email: email.value,
             password: password.value,
             name: name.value
         });
-        login(email.value, password.value);
+        await login(email.value, password.value);
     };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/vue/prompt.md` around lines 92 - 100, The
register function calls the async login() without awaiting it, causing potential
race conditions or unhandled rejections; update the register function (the async
register handler that calls account.create and login) to await
login(email.value, password.value) (or return its Promise) after account.create
completes so the login completes before downstream operations and any errors are
properly propagated.
src/routes/docs/tooling/ai/ai-dev-tools/windsurf/+page.markdoc-88-97 (1)

88-97: ⚠️ Potential issue | 🟡 Minor

Remove angle brackets from serverUrl value.

The serverUrl value has angle brackets that should not be present in the JSON string. This would cause a JSON parsing error or incorrect URL.

📝 Proposed fix
     "appwrite-docs": {
-      "serverUrl": "<https://mcp-for-docs.appwrite.io>"
+      "serverUrl": "https://mcp-for-docs.appwrite.io"
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/ai-dev-tools/windsurf/`+page.markdoc around lines
88 - 97, The serverUrl value under mcpServers -> appwrite-docs contains
surrounding angle brackets which make the JSON value invalid; update the
"serverUrl" entry in the +page.markdoc snippet (the
mcpServers.appwrite-docs.serverUrl key) to remove the leading '<' and trailing
'>' so it contains the raw URL string (https://mcp-for-docs.appwrite.io).
src/routes/docs/quick-starts/php/prompt.md-224-224 (1)

224-224: ⚠️ Potential issue | 🟡 Minor

Incorrect file path in run command.

Step 4 (Line 41) instructs creating index.php in the project root, but the run command references src/index.php. This inconsistency will cause a "file not found" error.

📝 Proposed fix
-- Run: `php src/index.php`
+- Run: `php index.php`
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/php/prompt.md` at line 224, The run command
references the wrong path: update the instruction that currently says "Run: `php
src/index.php`" to match the earlier step that created index.php in the project
root by changing it to "Run: php index.php" (or alternatively, if you intended
index.php to live under src, move the created file into src); ensure the text in
prompt.md consistently refers to the same index.php location so the Run command
and the file creation step (index.php) match.
src/routes/docs/quick-starts/angular/prompt.md-109-117 (1)

109-117: ⚠️ Potential issue | 🟡 Minor

Missing await on async login call.

The register method calls this.login() without await. Since login is async, this could lead to unhandled promise rejections or the component state not being updated properly before the method returns.

📝 Proposed fix
     async register(email: string, password: string, name: string) {
         await account.create({
             userId: ID.unique(),
             email,
             password,
             name
         });
-        this.login(email, password);
+        await this.login(email, password);
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/angular/prompt.md` around lines 109 - 117, In
the async register function, you're calling the async login method without
awaiting it which can cause unhandled promises or premature returns; update
register (the function containing account.create and the call to this.login) to
await the call to this.login(email, password) (or return its promise) so the
login completes before register resolves and component state updates happen
reliably.
src/routes/docs/tooling/ai/vector-db-and-embeddings/+page.markdoc-105-105 (1)

105-105: ⚠️ Potential issue | 🟡 Minor

Unused Meilisearch script included.

The HTML includes a Meilisearch script (meilisearch@0.34.1) that is never used in this Pinecone demo. This appears to be copy-paste from another template.

Proposed fix
-    <script src="https://unpkg.com/meilisearch@0.34.1"></script>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/vector-db-and-embeddings/`+page.markdoc at line
105, Remove the unused Meilisearch script tag ("<script
src=\"https://unpkg.com/meilisearch@0.34.1\"></script>") from the page since
this Pinecone demo doesn't use Meilisearch; locate the script tag in the
+page.markdoc content and delete it (or comment it out) so only relevant
Pinecone-related scripts remain.
src/routes/docs/tooling/ai/vector-db-and-embeddings/+page.markdoc-82-85 (1)

82-85: ⚠️ Potential issue | 🟡 Minor

Documentation text doesn't match the code snippet.

Line 84 states "The code checks if all required environment variables are present" but the code snippet on lines 76-81 does not include any environment variable validation.

Either update the description to match the code, or add the environment variable checks to the snippet.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/tooling/ai/vector-db-and-embeddings/`+page.markdoc around
lines 82 - 85, The doc text and code snippet are out of sync: either change the
prose on the section that says "The code checks if all required environment
variables are present" to accurately describe the shown GET handler, or actually
show the env-var validation in the snippet by adding a small check (e.g., define
a REQUIRED_ENVS list and an env validation block that iterates over
REQUIRED_ENVS and ensures process.env[...] is set, returning an error or
throwing if any are missing) before the GET handler logic so the snippet matches
the description.
src/routes/docs/quick-starts/nuxt/prompt.md-56-59 (1)

56-59: ⚠️ Potential issue | 🟡 Minor

Import path may not work in Nuxt 3.

The import from './utils/appwrite.js' assumes a relative path from app.vue. In Nuxt 3, the utils/ directory supports auto-imports, or you should use the ~/ alias for explicit imports from the project root.

Proposed fix
 <script setup>
     import { ref } from 'vue';
-    import { account, ID } from './utils/appwrite.js';
+    import { account, ID } from '~/utils/appwrite.js';
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/nuxt/prompt.md` around lines 56 - 59, The import
path "./utils/appwrite.js" may not resolve in Nuxt 3; update the script setup to
import the module using Nuxt's project-root alias or auto-import pattern—replace
the line importing from './utils/appwrite.js' with an explicit root alias import
like "import { account, ID } from '~/utils/appwrite'" (or remove the explicit
import and rely on Nuxt auto-imports if your utils are configured for that),
ensuring the symbols account and ID are available to the component.
src/routes/docs/quick-starts/web/prompt.md-47-54 (1)

47-54: ⚠️ Potential issue | 🟡 Minor

CDN example missing region placeholder and inconsistent with npm example.

Two issues:

  1. Line 50: The CDN example uses https://cloud.appwrite.io/v1 without the <REGION> placeholder, while the npm example on line 39 correctly uses https://<REGION>.cloud.appwrite.io/v1.
  2. The CDN example initializes tablesDB but the npm example (lines 34-43) doesn't export it, creating inconsistency between the two approaches.
Proposed fix for consistency
 const client = new Appwrite.Client();

-client.setEndpoint('https://cloud.appwrite.io/v1').setProject('<PROJECT_ID>'); // Replace with your project ID
+client.setEndpoint('https://<REGION>.cloud.appwrite.io/v1').setProject('<PROJECT_ID>'); // Replace with your project ID

 const account = new Appwrite.Account(client);
 const tablesDB = new Appwrite.TablesDB(client);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/routes/docs/quick-starts/web/prompt.md` around lines 47 - 54, Update the
CDN example to match the npm example by changing the endpoint to include the
region placeholder (use "https://<REGION>.cloud.appwrite.io/v1" when calling
Appwrite.Client.setEndpoint) and remove the extraneous tablesDB initialization
so the snippet only shows the same exported objects as the npm example (i.e.,
keep Appwrite.Client, Account setup via new Appwrite.Account(client) and omit
new Appwrite.TablesDB(client) to keep consistency with the npm snippet).

atharvadeosthale and others added 2 commits March 28, 2026 03:13
Co-authored-by: Aditya Oberai <adityaoberai1@gmail.com>
Co-authored-by: Aditya Oberai <adityaoberai1@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants