원클릭으로
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;