Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Pocketbase Hooks

ASecurity

Extending PocketBase with hooks — validation, side effects, and custom routes in Go/JavaScript.

2 stars
0 votes
0 copies
0 views
Added 9/29/2026
ai-agentsjavascriptgojavareactexpressgitapibackendsecurityperformance

Works with

cliapi

Security Analysis

A100/100

Scanned 9/29/2026

$npx -y skills add aicodedecode/awesome-muse-skills --skill pocketbase-hooks --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Pocketbase Hooks?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Pocketbase Hooks
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aicodedecode-pocketbase-hooks/badge)](https://www.skillsdirectory.com/skills/aicodedecode-pocketbase-hooks)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: pocketbase-hooks
description: Extending PocketBase with hooks — validation, side effects, and custom routes in Go/JavaScript.
category: pocketbase
---

## Overview

Hooks let you run custom logic around PocketBase's request lifecycle: validate
records before save, trigger side effects (emails, webhooks), enforce custom
authorization, or add entirely new API routes. Available in Go (compiled) and
JavaScript (via the JS VM), hooks turn PocketBase from a backend-in-a-box into
a programmable platform. This skill covers the hook patterns that matter.

## When to use

- Adding validation beyond field types (cross-field, uniqueness with conditions)
- Triggering side effects on record changes (notifications, sync, webhooks)
- Implementing custom authorization logic API rules can't express
- Creating custom API endpoints (aggregations, integrations, proxies)
- Choosing between Go and JavaScript hooks

## Core concepts

**Hook points wrap the lifecycle.** Record hooks fire on create/update/delete
(before and after); request hooks wrap HTTP handling; auth hooks wrap login/
token flows; cron hooks run scheduled jobs. "Before" hooks can validate,
modify, or abort the operation; "after" hooks react to committed changes.

**Validate in before-hooks, act in after-hooks.** Before-save hooks enforce
invariants and reject bad data (returning an error aborts the operation).
Side effects (sending email, calling webhooks) belong in after-hooks — only
fire them once the change is committed, and make them idempotent since
retries happen.

**Go vs JavaScript.** Go hooks compile into the binary: full standard library,
best performance, type safety — but require a Go toolchain and rebuilds.
JavaScript hooks run in an embedded VM: faster iteration, no build step,
adequate for most logic — but with a smaller standard library surface and
less performance headroom. Prototype in JS, move hot paths to Go if needed.

**Custom routes extend the API.** Register handlers for new endpoints when
you need logic that doesn't map to CRUD: dashboards aggregations, third-party
proxies (keeping secrets server-side), or composite operations. Apply the
same auth checks you'd write in API rules — custom routes don't inherit
collection rules automatically.

**Keep hooks fast and non-blocking.** Hooks run in the request path; slow
hooks (external API calls, heavy computation) add latency to every affected
request. Offload slow side effects to a queue or background job; hooks should
validate quickly and enqueue work.

## Practical workflow

1. **Map the requirement to a hook point:** validation → before record hook;
   notification/sync → after record hook; new endpoint → custom route;
   scheduled → cron hook.
2. **Write the smallest hook that works:** focused logic, clear error
   messages on validation failure (clients see these), and no business logic
   duplicated from elsewhere.
3. **Handle errors explicitly:** validation errors return 400-class responses
   with useful messages; unexpected errors log with context and fail safely
   (fail closed on auth/security paths).
4. **Make side effects idempotent:** after-hooks may run twice on retries;
   use idempotency keys or check-before-act for emails, charges, and
   external calls.
5. **Test hooks in isolation:** unit-test the logic with fixture records,
   then integration-test through the API (valid input passes, invalid input
   rejected with the right error).
6. **Version hooks with the app:** hooks live in version control alongside
   migrations and client code; deploy them together.

## Common pitfalls

- **Business logic only in hooks, invisible to the team** — hooks are
  powerful but hidden; document what each hook does and why, or the next
  maintainer will be blindsided.
- **Slow synchronous side effects** — sending email inside a before-hook
  blocks the request; enqueue and return fast.
- **Custom routes without auth checks** — new endpoints bypass collection
  API rules; re-implement authorization deliberately.
- **Non-idempotent after-hooks** — duplicate emails/charges on retry;
  design for at-least-once delivery.
- **Secrets in hook code committed to git** — API keys for webhooks and
  third parties belong in environment config, not source.
- **JS VM limitations discovered late** — missing stdlib modules or
  performance cliffs; spike risky logic early to validate the runtime
  choice.

Attribution

aicodedecodeaicodedecode
View sourceSee grades on GitHubMore from aicodedecode →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →