Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
✅ Files skipped from review due to trivial changes (2)
WalkthroughThis 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)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
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 | 🟡 MinorUpdate Zenflow and Cursor paths for consistency.
While redirects in
src/redirects.jsonensure 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 | 🟠 MajorFix Swift SDK parameter names: use
xrequiredandxdefaultinstead ofrequiredanddefault.Lines 116, 122, 123, and 129 use incorrect parameter labels. The Appwrite Swift Server SDK v10.0.0 TablesDB column methods (
createVarcharColumn,createTextColumn,createBooleanColumn) requirexrequiredandxdefault, notrequiredanddefault. 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 | 🟠 MajorFix 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 | 🟠 MajorRemove 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 | 🟠 MajorFix 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 | 🟠 MajorUse 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 | 🟠 MajorAvoid 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 | 🟠 MajorMissing
awaitonlogin()call insideregister().The
login(email, password)call on line 75 is missingawait. Sinceloginis 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 | 🟠 MajorPackage-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 | 🟠 MajorPackage-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 | 🟠 MajorRemove 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 | 🟠 MajorRemove the nested
MaterialApp— keep only one root instance.The
main()function creates aMaterialApp, butMyAppState.build()(lines 176-177) returns anotherMaterialApp. This causes issues with routing, theming, and localization. Remove the innerMaterialAppand returnScaffolddirectly frombuild().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 | 🟠 MajorRun command is incorrect for Deno CLI.
deno mod.tsshould bedeno run --allow-net mod.ts. Thedeno runprefix is required to execute TypeScript files, and the--allow-netflag 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 | 🟠 MajorFix JSON parsing of fetch response.
The code accesses
response.matchesdirectly on the fetch Response object, but the response body needs to be parsed as JSON first. This will returnundefinedinstead 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 | 🟠 MajorMissing
OpenAIEmbeddingsimport.
OpenAIEmbeddingsis 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 | 🟠 MajorUpdate the Angular CLI command to use a proper project name.
The command
ng new . --directory .does not follow Angular CLI conventions. Theng newcommand requires a project name as the first argument before the--directoryflag. Change to:ng new my-app --directory .(or replacemy-appwith 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 | 🟠 MajorUse LangChain
Documentclass instead of undefinedRow.The code uses
new Row(...)butRowis not a LangChain class. LangChain usesDocumentfor 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 | 🟠 MajorMissing 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. Adddo-catchblocks 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 | 🟠 MajorBug in
onSearchfunction – missing JSON parsing.
response.matcheswill beundefinedbecausefetchreturns aResponseobject, 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 | 🟠 MajorMissing state reset after logout.
The logout button calls
Appwrite.onLogout()but doesn't reset theuserstate 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 | 🟠 MajorUI 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
elseblock.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 | 🟡 MinorPackage 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
npmcommands. 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 | 🟡 MinorUse
Databases(plural) for product-name consistency.Line 34 says
Database; docs generally useDatabasesas 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 | 🟡 MinorUpdate legacy data model terminology in example prompts.
These prompts still use
collectionsanddocument; userows/columnsterminology for.markdocconsistency.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
.markdocdocumentation.🤖 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 | 🟡 MinorUpdate prompt terminology to rows/tables.
This still references
collectionsanddocument.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
.markdocdocumentation.🤖 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 | 🟡 MinorReplace legacy prompt wording with rows/tables language.
These two prompts should avoid
collectionsanddocument.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
.markdocdocumentation.🤖 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 | 🟡 MinorAlign test prompts with rows/tables terminology.
Please replace legacy
collections/documentwording.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
.markdocdocumentation.🤖 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 | 🟡 MinorUse 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
.markdocdocumentation.🤖 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 | 🟡 MinorReplace
collections/documentwording 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
.markdocdocumentation.🤖 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 | 🟡 MinorMinor 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 | 🟡 MinorRemove 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 | 🟡 MinorUpdate 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 | 🟡 MinorUpdate 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 | 🟡 MinorDeliverables list should include the
app/auth/page.jspath 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 | 🟡 MinorUse
<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 | 🟡 MinorUpdate 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 | 🟡 MinorMissing
awaiton asynclogincall.The
registerfunction callslogin()withoutawait. Sinceloginis 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 | 🟡 MinorRemove angle brackets from serverUrl value.
The
serverUrlvalue 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 | 🟡 MinorIncorrect file path in run command.
Step 4 (Line 41) instructs creating
index.phpin the project root, but the run command referencessrc/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 | 🟡 MinorMissing
awaiton asynclogincall.The
registermethod callsthis.login()withoutawait. Sinceloginis 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 | 🟡 MinorUnused 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 | 🟡 MinorDocumentation 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 | 🟡 MinorImport path may not work in Nuxt 3.
The import
from './utils/appwrite.js'assumes a relative path fromapp.vue. In Nuxt 3, theutils/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 | 🟡 MinorCDN example missing region placeholder and inconsistent with npm example.
Two issues:
- Line 50: The CDN example uses
https://cloud.appwrite.io/v1without the<REGION>placeholder, while the npm example on line 39 correctly useshttps://<REGION>.cloud.appwrite.io/v1.- The CDN example initializes
tablesDBbut 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).
Co-authored-by: Aditya Oberai <adityaoberai1@gmail.com>
Co-authored-by: Aditya Oberai <adityaoberai1@gmail.com>
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
Documentation
Chores