appwrite-go

Implements server-side Go applications using the Appwrite SDK for users, databases, storage, and functions.

1|1|Updated Jul 31, 2026
One-click install
npx skills add https://github.com/appwrite/agent --skill appwrite-go-appwrite
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: appwrite-go
Source: https://github.com/appwrite/agent/tree/main/.agents/skills/appwrite-go
Command: npx skills add https://github.com/appwrite/agent --skill appwrite-go-appwrite

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Building Go backends against Appwrite requires knowing the correct SDK patterns—per-service packages, functional options, TablesDB versus legacy Databases, permission strings, and SSR session handling. This Skill provides working code patterns so you avoid deprecated APIs and common permission mistakes. ## Core Features & Use Cases - Full SDK Coverage: User management, TablesDB row CRUD with typed string columns, file storage uploads, teams, and serverless function execution via the Go SDK. - SSR Authentication: Admin and session client patterns for email/password and OAuth2 login flows with secure cookie handling in net/http, Gin, Echo, or Chi apps. - Permissions & Error Handling: Correct use of permission and role helpers, plus structured AppwriteException handling with common HTTP error codes. - Use Case: You are writing a Go API service that creates rows in an Appwrite table with per-user read/update permissions and uploads files to a bucket—this Skill gives you the exact functional-options syntax to do it correctly. ## Quick Start Ask the agent to write Go code that creates an Appwrite table with typed columns and inserts a row with user-scoped permissions using the sdk-for-go client.

Frequently Asked Questions about appwrite-go

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set up the Appwrite Go SDK client?▼

Install github.com/appwrite/sdk-for-go and create a client with client.New using functional options: client.WithEndpoint, client.WithProject, and client.WithKey. Then instantiate per-service packages like users.New or tablesdb.New with that client.

How do I create and query rows in Appwrite TablesDB with Go?▼

Use tablesdb.New(clt) and call CreateRow with a data map, then ListRows with query helpers like query.Equal, query.GreaterThan, query.Limit, and query.CursorAfter. Prefer TablesDB over the deprecated Databases class for all new code.

Should I use TablesDB or Databases in the Appwrite Go SDK?▼

Use TablesDB for all new code since the Databases class is deprecated. Only use Databases if the existing codebase already relies on it or the user explicitly requests it.

How do I handle Appwrite SSR authentication in Go?▼

Use two clients: an admin client with an API key to create sessions, and a per-request session client that reads the a_session_<PROJECT_ID> cookie. Set the cookie with HttpOnly, Secure, and SameSiteStrict after CreateEmailPasswordSession or the OAuth2 callback.

Why is my Appwrite resource inaccessible after creating it in Go?▼

Appwrite grants no access by default, so resources without explicit permissions are inaccessible to everyone including the creator. Pass permission strings like permission.Read(role.User(id)) when creating rows or files, or configure table/bucket-level permissions.

How do I upload files to Appwrite Storage from Go?▼

Use storage.New(clt) and CreateFile with a file.InputFile built via file.NewInputFile for paths, file.NewInputFileFromBytes for byte slices, or file.NewInputFileFromReader for io.Reader streams. Attach permissions with storage.WithCreateFilePermissions.