@rotifer/playground 0.5.0-alpha.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/CHANGELOG.md +159 -15
  2. package/LICENSE +1 -1
  3. package/README.md +51 -23
  4. package/README.zh.md +54 -25
  5. package/dist/cloud/auth.d.ts +7 -1
  6. package/dist/cloud/auth.d.ts.map +1 -1
  7. package/dist/cloud/auth.js +65 -1
  8. package/dist/cloud/auth.js.map +1 -1
  9. package/dist/cloud/client.d.ts +4 -1
  10. package/dist/cloud/client.d.ts.map +1 -1
  11. package/dist/cloud/client.js +9 -2
  12. package/dist/cloud/client.js.map +1 -1
  13. package/dist/cloud/types.d.ts +3 -1
  14. package/dist/cloud/types.d.ts.map +1 -1
  15. package/dist/cloud/types.js.map +1 -1
  16. package/dist/commands/agent-create.d.ts.map +1 -1
  17. package/dist/commands/agent-create.js +66 -3
  18. package/dist/commands/agent-create.js.map +1 -1
  19. package/dist/commands/agent-run.d.ts.map +1 -1
  20. package/dist/commands/agent-run.js +296 -32
  21. package/dist/commands/agent-run.js.map +1 -1
  22. package/dist/commands/arena-submit.d.ts.map +1 -1
  23. package/dist/commands/arena-submit.js +45 -17
  24. package/dist/commands/arena-submit.js.map +1 -1
  25. package/dist/commands/compile.d.ts.map +1 -1
  26. package/dist/commands/compile.js +9 -3
  27. package/dist/commands/compile.js.map +1 -1
  28. package/dist/commands/init.d.ts.map +1 -1
  29. package/dist/commands/init.js +13 -3
  30. package/dist/commands/init.js.map +1 -1
  31. package/dist/commands/login.d.ts.map +1 -1
  32. package/dist/commands/login.js +23 -16
  33. package/dist/commands/login.js.map +1 -1
  34. package/dist/commands/network.js +4 -4
  35. package/dist/commands/network.js.map +1 -1
  36. package/dist/commands/publish.d.ts.map +1 -1
  37. package/dist/commands/publish.js +162 -44
  38. package/dist/commands/publish.js.map +1 -1
  39. package/dist/commands/test.d.ts.map +1 -1
  40. package/dist/commands/test.js +209 -23
  41. package/dist/commands/test.js.map +1 -1
  42. package/dist/commands/wrap.d.ts.map +1 -1
  43. package/dist/commands/wrap.js +17 -1
  44. package/dist/commands/wrap.js.map +1 -1
  45. package/dist/index.js +0 -0
  46. package/dist/runtime/network-gateway.d.ts +53 -0
  47. package/dist/runtime/network-gateway.d.ts.map +1 -0
  48. package/dist/runtime/network-gateway.js +147 -0
  49. package/dist/runtime/network-gateway.js.map +1 -0
  50. package/dist/utils/binding.d.ts +25 -0
  51. package/dist/utils/binding.d.ts.map +1 -1
  52. package/dist/utils/binding.js.map +1 -1
  53. package/dist/utils/open-browser.d.ts +10 -0
  54. package/dist/utils/open-browser.d.ts.map +1 -0
  55. package/dist/utils/open-browser.js +23 -0
  56. package/dist/utils/open-browser.js.map +1 -0
  57. package/genes/academic-writer/.cloud-manifest.json +6 -0
  58. package/genes/academic-writer/.gene-manifest.json +8 -0
  59. package/genes/academic-writer/SKILL.md +274 -0
  60. package/genes/academic-writer/phenotype.json +28 -0
  61. package/genes/ai-components/.cloud-manifest.json +6 -0
  62. package/genes/ai-components/.gene-manifest.json +8 -0
  63. package/genes/ai-components/SKILL.md +381 -0
  64. package/genes/ai-components/phenotype.json +28 -0
  65. package/genes/algorithmic-art/.cloud-manifest.json +6 -0
  66. package/genes/algorithmic-art/.gene-manifest.json +8 -0
  67. package/genes/algorithmic-art/SKILL.md +405 -0
  68. package/genes/algorithmic-art/phenotype.json +28 -0
  69. package/genes/answer-synthesizer/.cloud-manifest.json +6 -0
  70. package/genes/answer-synthesizer/index.ts +194 -0
  71. package/genes/answer-synthesizer/phenotype.json +61 -0
  72. package/genes/api-designer/.cloud-manifest.json +6 -0
  73. package/genes/api-designer/.gene-manifest.json +8 -0
  74. package/genes/api-designer/SKILL.md +456 -0
  75. package/genes/api-designer/phenotype.json +28 -0
  76. package/genes/auto-coder/.cloud-manifest.json +6 -0
  77. package/genes/auto-coder/.gene-manifest.json +8 -0
  78. package/genes/auto-coder/SKILL.md +400 -0
  79. package/genes/auto-coder/phenotype.json +28 -0
  80. package/genes/auto-writer/.cloud-manifest.json +6 -0
  81. package/genes/auto-writer/.gene-manifest.json +8 -0
  82. package/genes/auto-writer/SKILL.md +361 -0
  83. package/genes/auto-writer/phenotype.json +28 -0
  84. package/genes/brand-personality/.cloud-manifest.json +6 -0
  85. package/genes/brand-personality/.gene-manifest.json +8 -0
  86. package/genes/brand-personality/SKILL.md +549 -0
  87. package/genes/brand-personality/phenotype.json +28 -0
  88. package/genes/business-writer/.cloud-manifest.json +6 -0
  89. package/genes/business-writer/.gene-manifest.json +8 -0
  90. package/genes/business-writer/SKILL.md +448 -0
  91. package/genes/business-writer/phenotype.json +28 -0
  92. package/genes/citation-manager/.cloud-manifest.json +6 -0
  93. package/genes/citation-manager/.gene-manifest.json +8 -0
  94. package/genes/citation-manager/SKILL.md +279 -0
  95. package/genes/citation-manager/index.ts +162 -0
  96. package/genes/citation-manager/package.json +1 -0
  97. package/genes/citation-manager/phenotype.json +50 -0
  98. package/genes/code-complexity/.cloud-manifest.json +6 -0
  99. package/genes/code-complexity/README.md +35 -0
  100. package/genes/code-complexity/index.ts +101 -0
  101. package/genes/code-complexity/phenotype.json +34 -0
  102. package/genes/copywriter/.cloud-manifest.json +6 -0
  103. package/genes/copywriter/.gene-manifest.json +8 -0
  104. package/genes/copywriter/SKILL.md +329 -0
  105. package/genes/copywriter/phenotype.json +28 -0
  106. package/genes/creative-writer/.cloud-manifest.json +6 -0
  107. package/genes/creative-writer/.gene-manifest.json +8 -0
  108. package/genes/creative-writer/SKILL.md +356 -0
  109. package/genes/creative-writer/phenotype.json +28 -0
  110. package/genes/data-modeler/.cloud-manifest.json +6 -0
  111. package/genes/data-modeler/.gene-manifest.json +8 -0
  112. package/genes/data-modeler/SKILL.md +486 -0
  113. package/genes/data-modeler/phenotype.json +28 -0
  114. package/genes/debugger/.cloud-manifest.json +6 -0
  115. package/genes/debugger/.gene-manifest.json +8 -0
  116. package/genes/debugger/SKILL.md +416 -0
  117. package/genes/debugger/phenotype.json +28 -0
  118. package/genes/design-tokens/.cloud-manifest.json +6 -0
  119. package/genes/design-tokens/.gene-manifest.json +8 -0
  120. package/genes/design-tokens/SKILL.md +222 -0
  121. package/genes/design-tokens/index.ts +128 -0
  122. package/genes/design-tokens/package.json +1 -0
  123. package/genes/design-tokens/phenotype.json +1 -0
  124. package/genes/devops-automator/.cloud-manifest.json +6 -0
  125. package/genes/devops-automator/.gene-manifest.json +8 -0
  126. package/genes/devops-automator/SKILL.md +490 -0
  127. package/genes/devops-automator/phenotype.json +28 -0
  128. package/genes/doc-coauthoring/.cloud-manifest.json +6 -0
  129. package/genes/doc-coauthoring/.gene-manifest.json +8 -0
  130. package/genes/doc-coauthoring/SKILL.md +375 -0
  131. package/genes/doc-coauthoring/phenotype.json +28 -0
  132. package/genes/doc-retrieval/.cloud-manifest.json +6 -0
  133. package/genes/doc-retrieval/index.ts +134 -0
  134. package/genes/doc-retrieval/phenotype.json +54 -0
  135. package/genes/docs-writer/.cloud-manifest.json +6 -0
  136. package/genes/docs-writer/.gene-manifest.json +8 -0
  137. package/genes/docs-writer/SKILL.md +492 -0
  138. package/genes/docs-writer/phenotype.json +28 -0
  139. package/genes/evolve-life/.cloud-manifest.json +6 -0
  140. package/genes/evolve-life/.compile-result.json +12 -0
  141. package/genes/evolve-life/README.md +52 -0
  142. package/genes/evolve-life/gene.ir.wasm +0 -0
  143. package/genes/evolve-life/gene.wasm +0 -0
  144. package/genes/evolve-life/index.ts +255 -0
  145. package/genes/evolve-life/phenotype.json +129 -0
  146. package/genes/evolve-life-bitwise/.cloud-manifest.json +6 -0
  147. package/genes/evolve-life-bitwise/.compile-result.json +12 -0
  148. package/genes/evolve-life-bitwise/gene.ir.wasm +0 -0
  149. package/genes/evolve-life-bitwise/gene.wasm +0 -0
  150. package/genes/evolve-life-bitwise/index.ts +273 -0
  151. package/genes/evolve-life-bitwise/phenotype.json +129 -0
  152. package/genes/evolve-life-sparse/.cloud-manifest.json +6 -0
  153. package/genes/evolve-life-sparse/.compile-result.json +12 -0
  154. package/genes/evolve-life-sparse/gene.ir.wasm +0 -0
  155. package/genes/evolve-life-sparse/gene.wasm +0 -0
  156. package/genes/evolve-life-sparse/index.ts +236 -0
  157. package/genes/evolve-life-sparse/phenotype.json +129 -0
  158. package/genes/fact-checker/.cloud-manifest.json +6 -0
  159. package/genes/fact-checker/.gene-manifest.json +8 -0
  160. package/genes/fact-checker/SKILL.md +373 -0
  161. package/genes/fact-checker/phenotype.json +28 -0
  162. package/genes/genesis-code-format/.cloud-manifest.json +6 -0
  163. package/genes/genesis-code-format/package.json +1 -0
  164. package/genes/genesis-code-format/phenotype.json +1 -0
  165. package/genes/genesis-file-read/.cloud-manifest.json +6 -0
  166. package/genes/genesis-file-read/index.ts +11 -1
  167. package/genes/genesis-file-read/package.json +1 -0
  168. package/genes/genesis-file-read/phenotype.json +1 -0
  169. package/genes/genesis-l0-constraint/.cloud-manifest.json +6 -0
  170. package/genes/genesis-l0-constraint/package.json +1 -0
  171. package/genes/genesis-l0-constraint/phenotype.json +1 -0
  172. package/genes/genesis-web-search/.cloud-manifest.json +2 -2
  173. package/genes/genesis-web-search/package.json +1 -0
  174. package/genes/genesis-web-search/phenotype.json +1 -0
  175. package/genes/genesis-web-search-lite/.cloud-manifest.json +6 -0
  176. package/genes/genesis-web-search-lite/package.json +1 -0
  177. package/genes/genesis-web-search-lite/phenotype.json +1 -0
  178. package/genes/git-workflow/.cloud-manifest.json +6 -0
  179. package/genes/git-workflow/.gene-manifest.json +8 -0
  180. package/genes/git-workflow/SKILL.md +407 -0
  181. package/genes/git-workflow/phenotype.json +28 -0
  182. package/genes/grammar-checker/.cloud-manifest.json +6 -0
  183. package/genes/grammar-checker/.gene-manifest.json +8 -0
  184. package/genes/grammar-checker/SKILL.md +194 -0
  185. package/genes/grammar-checker/index.ts +168 -0
  186. package/genes/grammar-checker/package.json +1 -0
  187. package/genes/grammar-checker/phenotype.json +52 -0
  188. package/genes/json-validator/.cloud-manifest.json +6 -0
  189. package/genes/json-validator/README.md +42 -0
  190. package/genes/json-validator/index.ts +112 -0
  191. package/genes/json-validator/phenotype.json +42 -0
  192. package/genes/license-advisor/.cloud-manifest.json +6 -0
  193. package/genes/license-advisor/.gene-manifest.json +8 -0
  194. package/genes/license-advisor/SKILL.md +117 -0
  195. package/genes/license-advisor/phenotype.json +28 -0
  196. package/genes/logic-architect/.cloud-manifest.json +6 -0
  197. package/genes/logic-architect/.gene-manifest.json +8 -0
  198. package/genes/logic-architect/SKILL.md +451 -0
  199. package/genes/logic-architect/phenotype.json +28 -0
  200. package/genes/markdown-formatter/.cloud-manifest.json +6 -0
  201. package/genes/markdown-formatter/README.md +34 -0
  202. package/genes/markdown-formatter/index.ts +86 -0
  203. package/genes/markdown-formatter/phenotype.json +32 -0
  204. package/genes/orch/.cloud-manifest.json +6 -0
  205. package/genes/orch/.gene-manifest.json +8 -0
  206. package/genes/orch/SKILL.md +504 -0
  207. package/genes/orch/phenotype.json +28 -0
  208. package/genes/particle-barneshut/.cloud-manifest.json +6 -0
  209. package/genes/particle-barneshut/.compile-result.json +12 -0
  210. package/genes/particle-barneshut/README.md +55 -0
  211. package/genes/particle-barneshut/gene.ir.wasm +0 -0
  212. package/genes/particle-barneshut/gene.wasm +0 -0
  213. package/genes/particle-barneshut/index.ts +486 -0
  214. package/genes/particle-barneshut/phenotype.json +137 -0
  215. package/genes/particle-brute/.cloud-manifest.json +6 -0
  216. package/genes/particle-brute/.compile-result.json +12 -0
  217. package/genes/particle-brute/README.md +55 -0
  218. package/genes/particle-brute/gene.ir.wasm +0 -0
  219. package/genes/particle-brute/gene.wasm +0 -0
  220. package/genes/particle-brute/index.ts +277 -0
  221. package/genes/particle-brute/phenotype.json +137 -0
  222. package/genes/particle-spatial/.cloud-manifest.json +6 -0
  223. package/genes/particle-spatial/.compile-result.json +12 -0
  224. package/genes/particle-spatial/README.md +53 -0
  225. package/genes/particle-spatial/gene.ir.wasm +0 -0
  226. package/genes/particle-spatial/gene.wasm +0 -0
  227. package/genes/particle-spatial/index.ts +352 -0
  228. package/genes/particle-spatial/phenotype.json +137 -0
  229. package/genes/performance-optimizer/.cloud-manifest.json +6 -0
  230. package/genes/performance-optimizer/.gene-manifest.json +8 -0
  231. package/genes/performance-optimizer/SKILL.md +480 -0
  232. package/genes/performance-optimizer/phenotype.json +28 -0
  233. package/genes/plagiarism-checker/.cloud-manifest.json +6 -0
  234. package/genes/plagiarism-checker/.gene-manifest.json +8 -0
  235. package/genes/plagiarism-checker/SKILL.md +342 -0
  236. package/genes/plagiarism-checker/phenotype.json +28 -0
  237. package/genes/product-manager/.cloud-manifest.json +6 -0
  238. package/genes/product-manager/.gene-manifest.json +8 -0
  239. package/genes/product-manager/SKILL.md +249 -0
  240. package/genes/product-manager/phenotype.json +28 -0
  241. package/genes/project-reviewer/.cloud-manifest.json +6 -0
  242. package/genes/project-reviewer/.gene-manifest.json +8 -0
  243. package/genes/project-reviewer/SKILL.md +312 -0
  244. package/genes/project-reviewer/phenotype.json +28 -0
  245. package/genes/prompt-engineer/.cloud-manifest.json +6 -0
  246. package/genes/prompt-engineer/.gene-manifest.json +8 -0
  247. package/genes/prompt-engineer/SKILL.md +411 -0
  248. package/genes/prompt-engineer/phenotype.json +28 -0
  249. package/genes/readability-analyzer/.cloud-manifest.json +6 -0
  250. package/genes/readability-analyzer/.gene-manifest.json +8 -0
  251. package/genes/readability-analyzer/SKILL.md +357 -0
  252. package/genes/readability-analyzer/index.ts +123 -0
  253. package/genes/readability-analyzer/package.json +1 -0
  254. package/genes/readability-analyzer/phenotype.json +35 -0
  255. package/genes/rotifer-protocol/SKILL.md +121 -0
  256. package/genes/security-auditor/.cloud-manifest.json +6 -0
  257. package/genes/security-auditor/.gene-manifest.json +8 -0
  258. package/genes/security-auditor/SKILL.md +494 -0
  259. package/genes/security-auditor/phenotype.json +28 -0
  260. package/genes/seo-optimizer/.cloud-manifest.json +6 -0
  261. package/genes/seo-optimizer/.gene-manifest.json +8 -0
  262. package/genes/seo-optimizer/SKILL.md +327 -0
  263. package/genes/seo-optimizer/index.ts +206 -0
  264. package/genes/seo-optimizer/package.json +1 -0
  265. package/genes/seo-optimizer/phenotype.json +1 -0
  266. package/genes/source-linker/.cloud-manifest.json +6 -0
  267. package/genes/source-linker/index.ts +88 -0
  268. package/genes/source-linker/phenotype.json +45 -0
  269. package/genes/style-optimizer/.cloud-manifest.json +6 -0
  270. package/genes/style-optimizer/.gene-manifest.json +8 -0
  271. package/genes/style-optimizer/SKILL.md +285 -0
  272. package/genes/style-optimizer/phenotype.json +28 -0
  273. package/genes/tech-lead/.cloud-manifest.json +6 -0
  274. package/genes/tech-lead/.gene-manifest.json +8 -0
  275. package/genes/tech-lead/SKILL.md +451 -0
  276. package/genes/tech-lead/phenotype.json +28 -0
  277. package/genes/test-wrap/.cloud-manifest.json +6 -0
  278. package/genes/test-wrap/.gene-manifest.json +8 -0
  279. package/genes/test-wrap/phenotype.json +28 -0
  280. package/genes/testing-strategist/.cloud-manifest.json +6 -0
  281. package/genes/testing-strategist/.gene-manifest.json +8 -0
  282. package/genes/testing-strategist/SKILL.md +500 -0
  283. package/genes/testing-strategist/phenotype.json +28 -0
  284. package/genes/text-summarizer/.cloud-manifest.json +6 -0
  285. package/genes/text-summarizer/README.md +34 -0
  286. package/genes/text-summarizer/index.ts +122 -0
  287. package/genes/text-summarizer/phenotype.json +32 -0
  288. package/genes/tone-analyzer/.cloud-manifest.json +6 -0
  289. package/genes/tone-analyzer/.gene-manifest.json +8 -0
  290. package/genes/tone-analyzer/SKILL.md +410 -0
  291. package/genes/tone-analyzer/phenotype.json +28 -0
  292. package/genes/translator/.cloud-manifest.json +6 -0
  293. package/genes/translator/.gene-manifest.json +8 -0
  294. package/genes/translator/SKILL.md +355 -0
  295. package/genes/translator/phenotype.json +28 -0
  296. package/genes/ui-components/.cloud-manifest.json +6 -0
  297. package/genes/ui-components/.gene-manifest.json +8 -0
  298. package/genes/ui-components/SKILL.md +467 -0
  299. package/genes/ui-components/phenotype.json +28 -0
  300. package/genes/uiux-designer/.cloud-manifest.json +6 -0
  301. package/genes/uiux-designer/.gene-manifest.json +8 -0
  302. package/genes/uiux-designer/SKILL.md +353 -0
  303. package/genes/uiux-designer/phenotype.json +28 -0
  304. package/genes/url-extractor/.cloud-manifest.json +6 -0
  305. package/genes/url-extractor/README.md +37 -0
  306. package/genes/url-extractor/index.ts +86 -0
  307. package/genes/url-extractor/phenotype.json +48 -0
  308. package/genes/ux-patterns/.cloud-manifest.json +6 -0
  309. package/genes/ux-patterns/.gene-manifest.json +8 -0
  310. package/genes/ux-patterns/SKILL.md +872 -0
  311. package/genes/ux-patterns/phenotype.json +28 -0
  312. package/genes/web3-components/.cloud-manifest.json +6 -0
  313. package/genes/web3-components/.gene-manifest.json +8 -0
  314. package/genes/web3-components/SKILL.md +390 -0
  315. package/genes/web3-components/phenotype.json +28 -0
  316. package/package.json +6 -5
@@ -0,0 +1,28 @@
1
+ {
2
+ "domain": "content.creative",
3
+ "description": "Write creative content including stories, scripts, and narrative works. Master storytelling techniques, character development, and emotional expression. Use when creating fiction, screenplays, or any narrative-driven content.",
4
+ "inputSchema": {
5
+ "type": "object",
6
+ "properties": {
7
+ "prompt": {
8
+ "type": "string"
9
+ }
10
+ },
11
+ "required": []
12
+ },
13
+ "outputSchema": {
14
+ "type": "object",
15
+ "properties": {
16
+ "result": {
17
+ "type": "string"
18
+ }
19
+ }
20
+ },
21
+ "dependencies": [],
22
+ "version": "0.1.0",
23
+ "author": "rotifer-team",
24
+ "createdAt": 1771939393535,
25
+ "fidelity": "Wrapped",
26
+ "transparency": "Open",
27
+ "source": "skill"
28
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "cloud_id": "2479f16e-4d3c-455b-a155-af3b6b2dc8ac",
3
+ "owner": "Rotifer Protocol",
4
+ "version": "0.1.0",
5
+ "published_at": "2026-03-17T14:12:17.927Z"
6
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "geneId": "2c6e59ca61b8087e82389787821ca73b2aab71f2b82de1aa9c0895d39e34c9e6",
3
+ "name": "data-modeler",
4
+ "domain": "code.database",
5
+ "fidelity": "Wrapped",
6
+ "wrappedAt": "2026-02-24T13:23:28.835Z",
7
+ "fromSkill": "../.cursor/skills/data-modeler/SKILL.md"
8
+ }
@@ -0,0 +1,486 @@
1
+ ---
2
+ name: data-modeler
3
+ description: Design database schemas with Prisma for AI and Web3 applications. Define models, relations, indexes, and migrations. Use when designing databases, creating Prisma schemas, or when the user mentions database, schema, model, prisma, or migration.
4
+ ---
5
+
6
+ # Data Modeler (数据建模师)
7
+
8
+ **Goal**: 设计清晰、高效、可扩展的数据库结构。
9
+
10
+ **技术栈**: Prisma + PostgreSQL (主要) / SQLite (开发)
11
+
12
+ ---
13
+
14
+ ## 1. Schema Design Principles
15
+
16
+ ### 命名规范
17
+
18
+ ```prisma
19
+ // 模型: PascalCase (单数)
20
+ model User {}
21
+ model ChatMessage {}
22
+
23
+ // 字段: camelCase
24
+ model User {
25
+ id String
26
+ createdAt DateTime
27
+ firstName String
28
+ }
29
+
30
+ // 关系字段: 描述关系
31
+ model Post {
32
+ author User @relation(...)
33
+ authorId String
34
+ }
35
+ ```
36
+
37
+ ### 必备字段
38
+
39
+ ```prisma
40
+ model BaseModel {
41
+ id String @id @default(cuid())
42
+ createdAt DateTime @default(now())
43
+ updatedAt DateTime @updatedAt
44
+ }
45
+
46
+ // 所有模型都应包含这三个字段
47
+ model User {
48
+ id String @id @default(cuid())
49
+ createdAt DateTime @default(now())
50
+ updatedAt DateTime @updatedAt
51
+
52
+ // 业务字段...
53
+ }
54
+ ```
55
+
56
+ ### 软删除 (推荐)
57
+
58
+ ```prisma
59
+ model User {
60
+ // ...
61
+ deletedAt DateTime? // null = 未删除
62
+
63
+ @@index([deletedAt])
64
+ }
65
+
66
+ // 查询时过滤
67
+ const users = await prisma.user.findMany({
68
+ where: { deletedAt: null }
69
+ })
70
+ ```
71
+
72
+ ---
73
+
74
+ ## 2. Common Patterns
75
+
76
+ ### 用户认证
77
+
78
+ ```prisma
79
+ model User {
80
+ id String @id @default(cuid())
81
+ createdAt DateTime @default(now())
82
+ updatedAt DateTime @updatedAt
83
+
84
+ // 认证
85
+ email String @unique
86
+ emailVerified DateTime?
87
+ passwordHash String? // null if OAuth only
88
+
89
+ // 资料
90
+ name String?
91
+ image String?
92
+
93
+ // 关系
94
+ accounts Account[]
95
+ sessions Session[]
96
+ }
97
+
98
+ model Account {
99
+ id String @id @default(cuid())
100
+ userId String
101
+ type String
102
+ provider String
103
+ providerAccountId String
104
+
105
+ // OAuth tokens
106
+ accessToken String?
107
+ refreshToken String?
108
+ expiresAt Int?
109
+
110
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
111
+
112
+ @@unique([provider, providerAccountId])
113
+ }
114
+
115
+ model Session {
116
+ id String @id @default(cuid())
117
+ sessionToken String @unique
118
+ userId String
119
+ expires DateTime
120
+
121
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
122
+ }
123
+ ```
124
+
125
+ ### AI 对话
126
+
127
+ ```prisma
128
+ model Conversation {
129
+ id String @id @default(cuid())
130
+ createdAt DateTime @default(now())
131
+ updatedAt DateTime @updatedAt
132
+
133
+ title String?
134
+ userId String
135
+
136
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
137
+ messages Message[]
138
+
139
+ @@index([userId])
140
+ }
141
+
142
+ model Message {
143
+ id String @id @default(cuid())
144
+ createdAt DateTime @default(now())
145
+
146
+ role String // 'user' | 'assistant' | 'system'
147
+ content String @db.Text
148
+ conversationId String
149
+
150
+ // Token 统计
151
+ promptTokens Int?
152
+ completionTokens Int?
153
+
154
+ // AI 元数据
155
+ model String?
156
+ finishReason String?
157
+
158
+ conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)
159
+
160
+ @@index([conversationId])
161
+ }
162
+ ```
163
+
164
+ ### Web3 用户
165
+
166
+ ```prisma
167
+ model User {
168
+ id String @id @default(cuid())
169
+ createdAt DateTime @default(now())
170
+ updatedAt DateTime @updatedAt
171
+
172
+ // Web3
173
+ address String @unique // 0x...
174
+ chainId Int @default(1)
175
+
176
+ // ENS (缓存)
177
+ ensName String?
178
+ ensAvatar String?
179
+ ensUpdatedAt DateTime?
180
+
181
+ // 关系
182
+ wallets Wallet[]
183
+
184
+ @@index([address])
185
+ }
186
+
187
+ model Wallet {
188
+ id String @id @default(cuid())
189
+ createdAt DateTime @default(now())
190
+
191
+ address String
192
+ chainId Int
193
+ label String? // "Main", "Trading", etc.
194
+
195
+ userId String
196
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
197
+
198
+ @@unique([userId, address, chainId])
199
+ }
200
+ ```
201
+
202
+ ### 交易记录
203
+
204
+ ```prisma
205
+ model Transaction {
206
+ id String @id @default(cuid())
207
+ createdAt DateTime @default(now())
208
+
209
+ hash String @unique
210
+ chainId Int
211
+
212
+ from String
213
+ to String?
214
+ value Decimal @db.Decimal(78, 0) // BigInt as Decimal
215
+
216
+ status TransactionStatus @default(PENDING)
217
+
218
+ // Gas
219
+ gasLimit Decimal? @db.Decimal(78, 0)
220
+ gasUsed Decimal? @db.Decimal(78, 0)
221
+ gasPrice Decimal? @db.Decimal(78, 0)
222
+
223
+ // 关系
224
+ userId String
225
+ user User @relation(fields: [userId], references: [id])
226
+
227
+ @@index([userId])
228
+ @@index([hash])
229
+ @@index([status])
230
+ }
231
+
232
+ enum TransactionStatus {
233
+ PENDING
234
+ CONFIRMED
235
+ FAILED
236
+ }
237
+ ```
238
+
239
+ ---
240
+
241
+ ## 3. Relations
242
+
243
+ ### 一对多
244
+
245
+ ```prisma
246
+ model User {
247
+ id String @id
248
+ posts Post[]
249
+ }
250
+
251
+ model Post {
252
+ id String @id
253
+ author User @relation(fields: [authorId], references: [id])
254
+ authorId String
255
+
256
+ @@index([authorId])
257
+ }
258
+ ```
259
+
260
+ ### 多对多 (显式)
261
+
262
+ ```prisma
263
+ model User {
264
+ id String @id
265
+ memberships Membership[]
266
+ }
267
+
268
+ model Team {
269
+ id String @id
270
+ memberships Membership[]
271
+ }
272
+
273
+ model Membership {
274
+ id String @id @default(cuid())
275
+ role String @default("member") // "owner" | "admin" | "member"
276
+
277
+ userId String
278
+ teamId String
279
+ user User @relation(fields: [userId], references: [id], onDelete: Cascade)
280
+ team Team @relation(fields: [teamId], references: [id], onDelete: Cascade)
281
+
282
+ @@unique([userId, teamId])
283
+ }
284
+ ```
285
+
286
+ ### 自引用
287
+
288
+ ```prisma
289
+ model Category {
290
+ id String @id
291
+ name String
292
+
293
+ parentId String?
294
+ parent Category? @relation("CategoryHierarchy", fields: [parentId], references: [id])
295
+ children Category[] @relation("CategoryHierarchy")
296
+ }
297
+ ```
298
+
299
+ ---
300
+
301
+ ## 4. Indexes & Performance
302
+
303
+ ### 索引策略
304
+
305
+ ```prisma
306
+ model User {
307
+ id String @id
308
+ email String @unique // 自动索引
309
+ createdAt DateTime
310
+ status String
311
+
312
+ // 复合索引 (常用查询)
313
+ @@index([status, createdAt])
314
+
315
+ // 单字段索引
316
+ @@index([createdAt])
317
+ }
318
+ ```
319
+
320
+ ### 何时添加索引
321
+
322
+ | 场景 | 需要索引 |
323
+ |------|----------|
324
+ | WHERE 条件字段 | ✅ |
325
+ | ORDER BY 字段 | ✅ |
326
+ | 外键字段 | ✅ (手动添加) |
327
+ | JOIN 条件 | ✅ |
328
+ | 唯一约束字段 | 自动 |
329
+
330
+ ### BigInt 处理
331
+
332
+ ```prisma
333
+ // 方式 1: Decimal (推荐)
334
+ model Token {
335
+ balance Decimal @db.Decimal(78, 0) // 最大 uint256
336
+ }
337
+
338
+ // 方式 2: BigInt (Prisma 4.x+)
339
+ model Token {
340
+ balance BigInt
341
+ }
342
+ ```
343
+
344
+ ---
345
+
346
+ ## 5. Migrations
347
+
348
+ ### 开发流程
349
+
350
+ ```bash
351
+ # 1. 修改 schema.prisma
352
+
353
+ # 2. 创建迁移
354
+ pnpm prisma migrate dev --name add_user_avatar
355
+
356
+ # 3. 应用到开发库 (自动)
357
+ ```
358
+
359
+ ### 生产部署
360
+
361
+ ```bash
362
+ # CI/CD 中运行
363
+ pnpm prisma migrate deploy
364
+ ```
365
+
366
+ ### 迁移最佳实践
367
+
368
+ ```bash
369
+ # ✅ 小步迁移
370
+ add_user_table
371
+ add_user_email_index
372
+ add_user_avatar_field
373
+
374
+ # ❌ 大爆炸迁移
375
+ initial_schema_with_everything
376
+ ```
377
+
378
+ ### 数据迁移
379
+
380
+ ```typescript
381
+ // prisma/migrations/xxx/data-migration.ts
382
+ import { PrismaClient } from '@prisma/client'
383
+
384
+ const prisma = new PrismaClient()
385
+
386
+ async function main() {
387
+ // 填充默认值
388
+ await prisma.user.updateMany({
389
+ where: { role: null },
390
+ data: { role: 'user' }
391
+ })
392
+ }
393
+
394
+ main()
395
+ ```
396
+
397
+ ---
398
+
399
+ ## 6. Query Patterns
400
+
401
+ ### 常用查询
402
+
403
+ ```typescript
404
+ // 分页
405
+ const users = await prisma.user.findMany({
406
+ skip: (page - 1) * pageSize,
407
+ take: pageSize,
408
+ orderBy: { createdAt: 'desc' },
409
+ })
410
+
411
+ // 包含关系
412
+ const user = await prisma.user.findUnique({
413
+ where: { id },
414
+ include: { posts: true },
415
+ })
416
+
417
+ // 选择字段
418
+ const user = await prisma.user.findUnique({
419
+ where: { id },
420
+ select: { id: true, name: true, email: true },
421
+ })
422
+
423
+ // 统计
424
+ const count = await prisma.user.count({
425
+ where: { status: 'active' },
426
+ })
427
+ ```
428
+
429
+ ### 事务
430
+
431
+ ```typescript
432
+ // 隐式事务
433
+ const [user, post] = await prisma.$transaction([
434
+ prisma.user.create({ data: userData }),
435
+ prisma.post.create({ data: postData }),
436
+ ])
437
+
438
+ // 交互式事务
439
+ await prisma.$transaction(async (tx) => {
440
+ const user = await tx.user.create({ data: userData })
441
+ await tx.post.create({
442
+ data: { ...postData, authorId: user.id }
443
+ })
444
+ })
445
+ ```
446
+
447
+ ---
448
+
449
+ ## 7. Schema Checklist
450
+
451
+ ```markdown
452
+ ## 数据模型检查清单
453
+
454
+ ### 基础
455
+ - [ ] 所有模型有 id, createdAt, updatedAt
456
+ - [ ] 使用正确的命名规范
457
+ - [ ] 外键字段有索引
458
+
459
+ ### 关系
460
+ - [ ] onDelete 策略明确 (Cascade/SetNull/Restrict)
461
+ - [ ] 多对多使用显式中间表
462
+ - [ ] 自引用关系正确
463
+
464
+ ### 性能
465
+ - [ ] 常用查询字段有索引
466
+ - [ ] 复合索引顺序正确
467
+ - [ ] BigInt 使用 Decimal
468
+
469
+ ### 安全
470
+ - [ ] 敏感字段不直接暴露
471
+ - [ ] 软删除用于重要数据
472
+ - [ ] 审计字段 (createdBy, updatedBy)
473
+ ```
474
+
475
+ ---
476
+
477
+ ## Quick Reference
478
+
479
+ ### Prisma CLI
480
+
481
+ ```bash
482
+ prisma generate # 生成客户端
483
+ prisma migrate dev # 创建迁移
484
+ prisma migrate deploy # 部署迁移
485
+ prisma studio # 可视化界面
486
+ ```
@@ -0,0 +1,28 @@
1
+ {
2
+ "domain": "code.database",
3
+ "description": "Design database schemas with Prisma for AI and Web3 applications. Define models, relations, indexes, and migrations. Use when designing databases, creating Prisma schemas, or when the user mentions database, schema, model, prisma, or migration.",
4
+ "inputSchema": {
5
+ "type": "object",
6
+ "properties": {
7
+ "prompt": {
8
+ "type": "string"
9
+ }
10
+ },
11
+ "required": []
12
+ },
13
+ "outputSchema": {
14
+ "type": "object",
15
+ "properties": {
16
+ "result": {
17
+ "type": "string"
18
+ }
19
+ }
20
+ },
21
+ "dependencies": [],
22
+ "version": "0.1.0",
23
+ "author": "rotifer-team",
24
+ "createdAt": 1771939408834,
25
+ "fidelity": "Wrapped",
26
+ "transparency": "Open",
27
+ "source": "skill"
28
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "cloud_id": "09df8498-0703-4ee0-b31c-04c2d663b53b",
3
+ "owner": "Rotifer Protocol",
4
+ "version": "0.1.0",
5
+ "published_at": "2026-03-17T14:12:19.746Z"
6
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "geneId": "d43316ccca60ab93574121e0a1a30bbd66d1e3ccb07a9fd12c53fae73e1ee8a8",
3
+ "name": "debugger",
4
+ "domain": "code.debug",
5
+ "fidelity": "Wrapped",
6
+ "wrappedAt": "2026-02-24T13:23:31.991Z",
7
+ "fromSkill": "../.cursor/skills/debugger/SKILL.md"
8
+ }