appwrite-go

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

Updated Sep 13, 2026
One-click install
npx skills add https://github.com/aadilmallick/myfitness-pal-clone --skill appwrite-go-aadilmallick
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: appwrite-go
Source: https://github.com/aadilmallick/myfitness-pal-clone/tree/main/.agents/skills/appwrite-go
Command: npx skills add https://github.com/aadilmallick/myfitness-pal-clone --skill appwrite-go-aadilmallick

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires github.com/appwrite/sdk-for-go, github.com/open-runtimes/types-for-go/v4.

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 for every major Appwrite service so Go developers avoid deprecated APIs and common permission mistakes. ## Core Features & Use Cases - Full service coverage: Users, TablesDB CRUD with typed string columns, file storage with InputFile factories, teams and memberships, and serverless function execution. - SSR authentication: Admin and session client patterns for net/http, Gin, Echo, or Chi, including email/password login, OAuth2 flows, and secure cookie handling. - Permissions and queries: Permission/role helper usage, query builder methods for filtering, sorting, pagination, and structured error handling via AppwriteException. - Use Case: A developer building a Go API that stores user-generated content can copy the TablesDB row creation pattern with per-row permissions, then add the SSR login handler to issue secure session cookies. ## Quick Start Ask the AI to write a Go handler that creates an Appwrite table row with user-specific read and update permissions using the sdk-for-go TablesDB service.

Frequently Asked Questions about appwrite-go

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

FAQPage Schema
How do I use the Appwrite Go SDK for database operations?

Use the tablesdb package from github.com/appwrite/sdk-for-go for all new database code, not the deprecated Databases class. Create a client with client.New, then call methods like CreateRow, ListRows, and UpdateRow with functional options such as tablesdb.WithUpdateRowData.

How do I handle Appwrite authentication in a Go SSR application?

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 SameSiteStrictMode after calling CreateEmailPasswordSession or CreateSession.

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 it is explicitly required.

How do I set permissions on Appwrite rows and files in Go?

Pass permission strings built with the permission and role helper packages, such as permission.Read(role.User(userID)) or permission.Read(role.Any()). Without explicit permissions, no user can access the resource, and avoid combining role.Any() with write, update, or delete.

How do I upload files to Appwrite storage from Go?

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

How do I handle Appwrite API errors in Go?

Use errors.As to unwrap the error into an apperr.AppwriteException, which exposes Message, HTTP status Code, and error Type fields. Common codes include 401 for invalid credentials, 404 for missing resources, and 429 for rate limiting.