重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
convex-ddd-architecture by sebas5384/agentic-stuff
npx skills add https://github.com/sebas5384/agentic-stuff --skill convex-ddd-architecture参考技能,用于通过 DDD 和六边形架构组织 Convex 项目。它将领域逻辑与数据库和外部 API 关注点隔离,使得变更保持局部性,演进更安全。
当工作包含以下一个或多个信号时,使用此技能:
schema、queries、mutations、domain、adapters)ctx.db 访问在仓库外部扩散对于速度比架构边界更重要的小型原型,请勿将此作为严格的模板使用。
./convex/
_generated/ # 由 Convex 自动生成(请勿编辑)
_shared/ # 跨域工具
_libs/
aggregate.ts # 基础聚合接口
repository.ts # 基础仓库接口
_triggers.ts # 中心触发器注册表
customFunctions.ts # 包装后的 mutation/query 导出
schema.ts # 由所有子域组合而成的模式
[subDomainName]/ # 每个子域文件夹(camelCase)
_libs/
stripeClient.ts # 库或助手
_tables.ts # 数据库模式表
_triggers.ts # 子域触发器处理器
_seeds.ts # 模型种子数据
_workflows.ts # Convex 工作流
queries/
[queryName].ts # 每个文件一个查询,默认导出
mutations/
[mutationName].ts # 每个文件一个变更,默认导出
domain/
[modelName].model.ts # 模型模式、类型、聚合
[modelName].repository.ts # 仓库接口
adapters/
[actionName].action.ts # 外部 API 操作
[modelName].repository.ts # 仓库实现
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
contactRepository.ts、sendInvoice.action.ts)_tables.ts、_triggers.ts)_workflows.ts),增长后拆分为目录| 关注点 | 规则 |
|---|---|
| Convex 导入 | 从 customFunctions.ts 导入 mutation、query、internalMutation |
| 函数导出 | 每个文件一个函数,使用 export default |
| 领域模型结构 | 包含 _id、_creationTime,以及不包含系统字段的 New<Model> |
| 持久化边界 | 通过 adapters/ 中的仓库访问数据库 |
| 外部集成 | 在操作中保持转换;业务决策保留在变更/聚合中 |
| 模式 | 从每个子域的 _tables 导出组合根模式 |
始终从 customFunctions.ts 导入 mutation、query、internalMutation,而不是从 _generated/server。参见 custom-functions.md。
// ✅ 正确
import { mutation } from "../../customFunctions";
// ❌ 错误 - 绕过了触发器集成
import { mutation } from "../../_generated/server";
每个文件一个函数,使用命名定义和默认导出:
// convex/combat/mutations/createBattle.ts
import { mutation } from "../../customFunctions";
import { v } from "convex/values";
const createBattle = mutation({
args: { heroId: v.id("heroProfiles") },
handler: async (ctx, args) => {
// ...
},
});
export default createBattle;
前端使用需添加 .default 后缀:
import { api } from "@/convex/_generated/api";
useMutation(api.combat.mutations.createBattle.default);
useQuery(api.economy.queries.getHeroProfile.default);
避免使用命名导出如 export const createBattle - 这会创建冗余路径如 api.combat.mutations.createBattle.createBattle。
从子域表组合模式:
// convex/schema.ts
import { defineSchema } from "convex/server";
import { combatTables } from "./combat/_tables";
import { economyTables } from "./economy/_tables";
export default defineSchema({
...combatTables,
...economyTables,
});
_generated/server 导入处理器,绕过共享包装器每周安装数
47
仓库
首次出现
2026年3月4日
安全审计
安装于
kimi-cli47
gemini-cli47
codex47
cursor47
amp47
cline47
Reference skill for organizing Convex projects with DDD and Hexagonal architecture. It keeps domain logic isolated from database and external API concerns so changes remain local and safer to evolve.
Use this skill when work includes one or more of these signals:
schema, queries, mutations, domain, adapters)ctx.db access spreading outside repositoriesDo not use this as a strict template for tiny prototypes where speed matters more than architectural boundaries.
./convex/
_generated/ # Auto-generated by Convex (do not edit)
_shared/ # Cross-domain utilities
_libs/
aggregate.ts # Base aggregate interface
repository.ts # Base repository interface
_triggers.ts # Central trigger registry
customFunctions.ts # Wrapped mutation/query exports
schema.ts # Composed schema from all sub-domains
[subDomainName]/ # Each sub-domain folder (camelCase)
_libs/
stripeClient.ts # Libs or helpers
_tables.ts # Database schema tables
_triggers.ts # Sub-domain trigger handlers
_seeds.ts # Seeds for models
_workflows.ts # Convex workflows
queries/
[queryName].ts # One query per file, export default
mutations/
[mutationName].ts # One mutation per file, export default
domain/
[modelName].model.ts # Model schema, types, Aggregate
[modelName].repository.ts # Repository interface
adapters/
[actionName].action.ts # External API actions
[modelName].repository.ts # Repository implementation
contactRepository.ts, sendInvoice.action.ts)_tables.ts, _triggers.ts)_workflows.ts), split into a directory after growth| Concern | Rule |
|---|---|
| Convex imports | Import mutation, query, internalMutation from customFunctions.ts |
| Function exports | One function per file with export default |
| Domain model shape | Include _id, _creationTime, plus New<Model> without system fields |
Always import mutation, query, internalMutation from customFunctions.ts, not from _generated/server. See custom-functions.md.
// ✅ Correct
import { mutation } from "../../customFunctions";
// ❌ Wrong - bypasses trigger integration
import { mutation } from "../../_generated/server";
One function per file with named definition and default export:
// convex/combat/mutations/createBattle.ts
import { mutation } from "../../customFunctions";
import { v } from "convex/values";
const createBattle = mutation({
args: { heroId: v.id("heroProfiles") },
handler: async (ctx, args) => {
// ...
},
});
export default createBattle;
Frontend usage with .default suffix:
import { api } from "@/convex/_generated/api";
useMutation(api.combat.mutations.createBattle.default);
useQuery(api.economy.queries.getHeroProfile.default);
Avoid named exports like export const createBattle - this creates redundant paths like api.combat.mutations.createBattle.createBattle.
Compose schema from sub-domain tables:
// convex/schema.ts
import { defineSchema } from "convex/server";
import { combatTables } from "./combat/_tables";
import { economyTables } from "./economy/_tables";
export default defineSchema({
...combatTables,
...economyTables,
});
_generated/server and bypassing shared wrappersWeekly Installs
47
Repository
First Seen
Mar 4, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
kimi-cli47
gemini-cli47
codex47
cursor47
amp47
cline47
TanStack Form:高性能无头表单库,支持TypeScript、Zod、Valibot验证
610 周安装
get-available-resources:自动检测CPU/GPU/内存/磁盘资源,为科学计算提供策略建议
209 周安装
Figma MCP 集成指南:AI 驱动设计转代码,实现 React + Tailwind 精准开发
208 周安装
Proxmox VE 命令行管理指南:qm、pct 工具详解与虚拟机容器自动化
208 周安装
Handoff - Claude会话轮换工具:无缝交接工作上下文,突破令牌限制
207 周安装
SimPO 偏好优化教程:无需参考模型,性能优于 DPO,快速训练 Mistral/Llama 模型
209 周安装
HQQ 半二次量化:无需校准的快速模型量化,支持 8/4/3/2/1 比特精度
209 周安装
| Persistence boundary | Access DB through repositories in adapters/ |
| External integrations | Keep translation in actions; business decisions stay in mutations/aggregates |
| Schema | Compose root schema from each sub-domain _tables export |