Token导航 LogoToken导航TokenDH.com
研究检索敏感数据github未标认证来源可访问许可证需确认审计通过

bknd-troubleshoot排除故障

Agent Skill

bknd-troubleshoot 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

297

周安装

12

GitHub Stars

3

下载量

93
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:bknd-troubleshoot(排除故障)
来源仓库:https://github.com/cameronapak/bknd-skills
仓库路径:skills/bknd-troubleshoot
安装命令:
npx skills add https://github.com/cameronapak/bknd-skills --skill bknd-troubleshoot
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/cameronapak/bknd-skills --skill bknd-troubleshoot

简介

用于诊断常见 Bknd 错误并提供快速修复建议参考指南。

  • 涵盖 400/500 类错误原因分析及典型配置问题排查路径。
  • 按错误码或症状匹配解决方案,减少调试时间成本。
  • 适用于运行时异常定位与部署环境问题识别辅助。
  • bknd-troubleshoot 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Troubleshoot Common Errors

Quick-reference guide for resolving Bknd errors by error code, symptom, or common mistake pattern.

Prerequisites

  • Bknd project running (or attempting to run)
  • Error message or symptom to diagnose

Error Code Quick Reference

400 Bad Request

Cause: Invalid request body or parameters

Quick fixes:

# Check JSON validity
echo '{"title":"Test"}' | jq .

# Verify Content-Type header
curl -X POST http://localhost:3000/api/data/posts \
  -H "Content-Type: application/json" \
  -d '{"title":"Test"}'

Common causes:

  • Missing Content-Type: application/json header
  • Malformed JSON body
  • Missing required field
  • Invalid field type (string instead of number)
  • Invalid enum value

401 Unauthorized

Cause: Missing or invalid authentication

Quick fixes:

// Check token exists
console.log(localStorage.getItem("bknd_token"));

// Verify token with /me endpoint
const me = await api.auth.me();
console.log(me.ok ? "Valid" : "Invalid/expired");

Common causes:

  • Token not stored (missing storage: localStorage in Api config)
  • Token expired (check JWT expires config)
  • Wrong auth header format (must be Bearer <token>)
  • Cookie not sent (missing credentials: "include")

Fix pattern:

const api = new Api({
  host: "http://localhost:3000",
  storage: localStorage,  // Required for token persistence
});

403 Forbidden

Cause: Authenticated but insufficient permissions

Quick fixes:

# Check user's role
curl http://localhost:3000/api/auth/me \
  -H "Authorization: Bearer <token>"

Common causes:

  • Guard not enabled in config
  • Role missing required permission
  • Entity-specific permission needed
  • Row-level policy blocking access

Fix pattern:

auth: {
  guard: {
    enabled: true,
    roles: {
      user: {
        permissions: [
          "data.entity.read",
          "data.entity.create",  // Add missing permission
        ]
      }
    }
  }
}

404 Not Found

Cause: Endpoint or record doesn't exist

Quick fixes:

# List available routes
npx bknd debug routes

# List entities
curl http://localhost:3000/api/data

# Check entity name case (must match exactly)
curl http://localhost:3000/api/data/posts    # lowercase

Common causes:

  • Entity name case mismatch (Posts vs posts)
  • Schema not synced (restart server)
  • Wrong endpoint path (/api/auth/login vs /api/auth/password/login)
  • Record ID doesn't exist

409 Conflict

Cause: Duplicate value or constraint violation

Quick fixes:

// Check for existing record before create
const exists = await api.data.readOneBy("users", { email });
if (!exists.ok) {
  await api.data.createOne("users", { email, ... });
}

Common causes:

  • Duplicate unique field value
  • User email already registered
  • Unique constraint on field

413 Payload Too Large

Cause: File upload exceeds size limit

Fix:

media: {
  body_max_size: 50 * 1024 * 1024,  // 50MB
}

500 Internal Server Error

Cause: Unhandled server exception

Quick fixes:

# Check server logs for stack trace
# Look for error details in response body
curl http://localhost:3000/api/data/posts 2>&1 | jq .error

Common causes:

  • Database connection failed
  • Invalid schema configuration
  • Unhandled exception in seed/plugin
  • Missing environment variable

Common Mistake Patterns

Using em() as EntityManager

Wrong:

const schema = em({
  posts: entity("posts", { title: text() }),
});
schema.repo("posts").find();  // Error!

Correct:

// em() is for schema definition only
const schema = em({
  posts: entity("posts", { title: text() }),
});

// Use SDK for queries
const api = new Api({ host: "http://localhost:3000" });
await api.data.readMany("posts");

Wrong Auth Endpoint Path

Wrong:

POST /api/auth/login        # 404
POST /api/auth/register     # 404

Correct:

POST /api/auth/password/login      # For password strategy
POST /api/auth/password/register
POST /api/auth/google/login        # For Google OAuth

Missing Storage in Api Config

Symptom: Token not persisting, logged out after refresh

Wrong:

const api = new Api({
  host: "http://localhost:3000",
});

Correct:

const api = new Api({
  host: "http://localhost:3000",
  storage: localStorage,  // Or sessionStorage
});

Using enum() Instead of enumm()

Wrong:

import { enum } from "bknd";  // Syntax error - reserved word

Correct:

import { enumm } from "bknd";

entity("posts", {
  status: enumm(["draft", "published"]),
});

Using primary() Function

Wrong:

import { primary } from "bknd";  // Not exported in v0.20.0

Correct:

// Primary keys are auto-generated
// To customize format:
entity("posts", { title: text() }, { primary_format: "uuid" });

Wrong Policy Variable Prefix

Wrong:

permissions: [{
  permission: "data.entity.read",
  filter: { user_id: { $eq: "@user.id" } },  // Wrong prefix
}]

Correct:

permissions: [{
  permission: "data.entity.read",
  filter: { user_id: { $eq: "@auth.user.id" } },  // Correct prefix
}]

Memory Database for Persistent Data

Symptom: Data disappears on restart

Wrong:

npx bknd run --memory
# Or config: { url: ":memory:" }

Correct:

npx bknd run --db-url "file:data.db"
# Or config: { url: "file:data.db" }

Missing Guard Enable

Symptom: Permissions not working, everyone has access

Wrong:

auth: {
  guard: {
    roles: { ... }  // Guard not enabled!
  }
}

Correct:

auth: {
  guard: {
    enabled: true,  // Required!
    roles: { ... }
  }
}

CORS Cookie Issues

Symptom: Auth works in Postman but not browser

Fix:

// Server config
server: {
  cors: {
    origin: ["http://localhost:5173"],
    credentials: true,
  }
}

auth: {
  cookie: {
    secure: false,     // false for HTTP dev
    sameSite: "lax",   // Not "strict" for OAuth
  }
}

// Client fetch
fetch(url, { credentials: "include" });

Filter vs Allow/Deny Effect

Symptom: RLS filter returns all records instead of filtering

Wrong:

permissions: [{
  permission: "data.entity.read",
  effect: "allow",  // Won't filter!
  condition: { user_id: { $eq: "@auth.user.id" } },
}]

Correct:

permissions: [{
  permission: "data.entity.read",
  effect: "filter",  // Filters results
  filter: { user_id: { $eq: "@auth.user.id" } },
}]

Quick Diagnostic Commands

Check Server Health

curl http://localhost:3000/api/data

List All Routes

npx bknd debug routes

Check Config Paths

npx bknd debug paths

Test Auth

# Login
curl -X POST http://localhost:3000/api/auth/password/login \
  -H "Content-Type: application/json" \
  -d '{"email":"test@example.com","password":"password"}'

# Check token
curl http://localhost:3000/api/auth/me \
  -H "Authorization: Bearer <token>"

Test Entity Access

# Unauthenticated
curl http://localhost:3000/api/data/posts

# Authenticated
curl http://localhost:3000/api/data/posts \
  -H "Authorization: Bearer <token>"

Check Schema

curl http://localhost:3000/api/system/schema

Environment-Specific Issues

Development

IssueSolution
Config not loadingCheck file name: bknd.config.ts
Port in usenpx bknd run --port 3001
Types outdatednpx bknd types
Hot reload not workingRestart server

Production

IssueSolution
JWT errorsSet JWT_SECRET env var (32+ chars)
Cookie not setsecure: true for HTTPS
500 errorsCheck logs, set NODE_ENV=production
D1 not foundCheck wrangler.json bindings

Serverless

IssueSolution
Cold start slowUse edge-compatible DB (D1, Turso)
File upload failsUse S3/R2, not local storage
SQLite native errorUse LibSQL or PostgreSQL

Symptom-Based Troubleshooting

"Config file could not be resolved"

# Check file exists
ls bknd.config.*

# Specify explicitly
npx bknd run -c ./bknd.config.ts

"EADDRINUSE: address already in use"

# Find process
lsof -i :3000

# Use different port
npx bknd run --port 3001

"spawn xdg-open ENOENT"

# Headless server - disable browser open
npx bknd run --no-open

"Data disappears after restart"

# Check for memory mode in output
# Use file database
npx bknd run --db-url "file:data.db"

"ERR_UNSUPPORTED_ESM_URL_SCHEME" (Windows)

  1. Use Node.js 18+
  2. Add "type": "module" to package.json
  3. Use .mjs extension for config

"TypeError: X is not a function"

Check import paths:

// SDK client
import { Api } from "bknd/client";

// Schema builders
import { em, entity, text } from "bknd";

// Adapters
import { serve } from "bknd/adapter/node";      // Node
import { serve } from "bknd/adapter/cloudflare"; // CF Workers

DOs and DON'Ts

DO:

  • Check server logs first
  • Verify entity names are lowercase
  • Test with curl before debugging frontend
  • Restart server after schema changes
  • Use npx bknd debug routes for 404s

DON'T:

  • Use em() for runtime queries
  • Use :memory: for persistent data
  • Forget storage: localStorage in Api
  • Skip enabled: true for guard
  • Use @user.id (use @auth.user.id)

Related Skills

  • bknd-debugging - Comprehensive debugging guide
  • bknd-local-setup - Initial project setup
  • bknd-setup-auth - Authentication configuration
  • bknd-assign-permissions - Permission configuration
  • bknd-api-discovery - Explore available endpoints

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.11%
按下载量换算32

Claude

29.69%
按下载量换算28

Cursor

19.5%
按下载量换算18

Gemini CLI

10.13%
按下载量换算9

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills