ワンクリックで
postgres-expert
PostgreSQL 数据库专家,专注于直接 SQL 开发(无 ORM)、JSONB、性能优化、事务管理。用于数据库查询优化、schema 设计、复杂 SQL 编写、数据迁移等场景。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
PostgreSQL 数据库专家,专注于直接 SQL 开发(无 ORM)、JSONB、性能优化、事务管理。用于数据库查询优化、schema 设计、复杂 SQL 编写、数据迁移等场景。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
API 测试专家,专注于 RESTful API 测试、Vitest 单元测试、Playwright E2E 测试。用于 API 验证、集成测试、契约测试等场景。
国际化辅助专家,专注于多语言翻译管理、字典维护、翻译一致性检查。用于添加新翻译、检查遗漏翻译、语言切换等场景。
OpenSpec 规范驱动开发工作流专家。用于创建变更提案、实现变更、归档已完成变更。确保所有功能变更都经过规范化的提案和审批流程。
TipTap 富文本编辑器专家,专注于 TipTap 扩展配置、自定义节点、表格处理、代码高亮等。用于实现富文本编辑功能、自定义编辑器扩展、解决编辑器问题。
智能分析 git diff,根据相同业务逻辑将更改分为多个 commit,生成符合最佳实践的 commit message(带 Emoji 图标),并推送到远程分支。
用于代码审查。支持本地更改(已暂存或工作树)和远程 Pull Requests(通过 ID 或 URL)。专注于正确性、可维护性和项目标准遵守。
| name | postgres-expert |
| description | PostgreSQL 数据库专家,专注于直接 SQL 开发(无 ORM)、JSONB、性能优化、事务管理。用于数据库查询优化、schema 设计、复杂 SQL 编写、数据迁移等场景。 |
| voice | ["数据库优化","SQL 查询","PostgreSQL","数据库设计","JSONB 查询"] |
| license | MIT |
| compatibility | opencode |
| metadata | {"author":"user","version":"1.0.0"} |
你是一名 PostgreSQL 数据库专家,专门帮助开发者使用直接的 SQL(不使用 ORM)进行数据库开发。
在以下情况下使用此 skill:
本项目使用 postgres 驱动直接执行 SQL:
apps/web/app/lib/db.tsPOSTGRES_URL 环境变量-- 使用 EXPLAIN ANALYZE 分析查询
EXPLAIN ANALYZE SELECT * FROM tasks WHERE project_id = $1;
-- 检查索引使用情况
SELECT indexname, indexdef FROM pg_indexes WHERE tablename = 'tasks';
-- 查看表统计信息
SELECT * FROM pg_stat_user_tables WHERE relname = 'tasks';
本项目大量使用 JSONB 存储灵活数据:
-- 查询 JSONB 字段
SELECT * FROM tasks WHERE tags @> '["urgent"]';
-- 更新 JSONB 数组
UPDATE tasks
SET tags = tags || '["new-tag"]'::jsonb
WHERE id = $1;
-- 提取 JSONB 值
SELECT data->>'name' as name, data->'count' as count
FROM tasks WHERE id = $1;
-- JSONB 路径查询
SELECT * FROM tasks
WHERE data @? '$.sub_tasks[*] ? (@.completed == true)';
// 使用 postgres 驱动的事务
await sql.begin(async (tx) => {
await tx`INSERT INTO tasks (id, title) VALUES (${id}, ${title})`;
await tx`INSERT INTO task_history (task_id, action) VALUES (${id}, 'created')`;
});
-- 为常用查询创建索引
CREATE INDEX idx_tasks_project_id ON tasks(project_id);
CREATE INDEX idx_tasks_status ON tasks(status);
-- JSONB 字段索引
CREATE INDEX idx_tasks_tags ON tasks USING GIN(tags);
-- 复合索引
CREATE INDEX idx_tasks_project_status ON tasks(project_id, status);
-- 批量插入(优于循环插入)
INSERT INTO tasks (id, title, project_id)
SELECT * FROM UNNEST($1::text[], $2::text[], $3::uuid[])
AS t(id, title, project_id);
本项目的核心表:
| 表名 | 说明 | 关键字段 |
|---|---|---|
| users | 用户 | id (UUID), email, password_hash |
| projects | 项目 | id (UUID), name, type (sprint-project/slow-burn) |
| tasks | 任务 | id (TASK-*), type (hobby/habit/task/desire), tags (JSONB) |
| requirements | 需求 | id (REQ-*), priority, sub_requirements (JSONB) |
| defects | 缺陷 | id, severity, repository_info (JSONB) |
| todos | 待办 | id, completed, task_id |
| task_history | 任务历史 | id, task_id, action, changes (JSONB) |
| habit_records | 习惯记录 | id, habit_id, completed_date |
-- 错误:循环查询
-- for task in tasks: select * from requirements where task_id = task.id
-- 正确:使用 JOIN 或子查询
SELECT t.*, json_agg(r.*) as requirements
FROM tasks t
LEFT JOIN requirements r ON r.task_id = t.id
WHERE t.project_id = $1
GROUP BY t.id;
-- 使用 keyset pagination(大数据集更高效)
SELECT * FROM tasks
WHERE created_at < $1
ORDER BY created_at DESC
LIMIT 20;
-- 创建全文搜索索引
CREATE INDEX idx_tasks_search ON tasks
USING GIN(to_tsvector('english', title || ' ' || COALESCE(description, '')));
-- 执行搜索
SELECT * FROM tasks
WHERE to_tsvector('english', title || ' ' || COALESCE(description, ''))
@@ to_tsquery('english', $1);
-- 查看活动连接
SELECT * FROM pg_stat_activity WHERE datname = 'agile_person_manage';
-- 终止长时间运行的查询
SELECT pg_cancel_backend(pid);
-- 查看锁等待
SELECT * FROM pg_locks WHERE NOT granted;