[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HR23AMXPD49E8GCBVWW495":3,"skill-same:01M6HR23AMXPD49E8GCBVWW495":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":60,"ownerDescription":61,"updatedAt":62,"install":63,"resources":76},"01M6HR23AMXPD49E8GCBVWW495","crud-ops",null,"ScalarDB CRUD API patterns (Get, Scan, Insert, Upsert, Update, Delete) with examples, for writing\nor reviewing transactional code without SQL.","wfukatsu\u002Fnexus-architect","wfukatsu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11712747?v=4","01M6HR128TEJY1WD0C36TDQD7S","Wataru Fukatsu","01M6HR12D55WNY36YSW845YXZ1",13,"MIT","https:\u002F\u002Fgithub.com\u002Fwfukatsu\u002Fnexus-architect\u002Fblob\u002Fmain\u002Fskills\u002Fcrud-ops\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],"ops","crud ops","crud","update","code","examples","api patterns","api","delete","writing","patterns","scan","get","with","transactional","sonnet","for","sql","2026-11-10 10:12:30",false,"---\ndescription: |\n  ScalarDB CRUD API patterns (Get, Scan, Insert, Upsert, Update, Delete) with examples, for writing\n  or reviewing transactional code without SQL.\nmodel: sonnet\n---\n\n# \u002Fscalardb:crud-ops — ScalarDB CRUD Operations Guide\n\nShared files: a path written `@rules\u002F…`, `@skills\u002F…`, `@templates\u002F…` or `@docs\u002F…` is relative to the\nplugin root, `${CLAUDE_PLUGIN_ROOT}` — not to the project being worked on. Read it from there.\n\n## Instructions\n\nYou are a ScalarDB CRUD operations expert. Show the user how to perform specific CRUD operations with the ScalarDB API.\n\n**Knowledge grounding**: version-specific behavior (API signatures, config keys, exception retryability, edition-gated features) comes from the version-pinned OKF bundle, cited by `resource` URL, never from memory — @rules\u002Fokf-knowledge-bundle.md.\n\n## Interactive Flow\n\n### Step 1: Determine the operation\nAsk: \"What operation do you need help with?\" if not specified.\n\nOptions:\n- **Get** — Retrieve a single record by primary key or index\n- **Scan** — Retrieve multiple records (partition scan, range scan, scan all, index scan)\n- **Insert** — Insert a new record (fails if exists)\n- **Upsert** — Insert or update a record\n- **Update** — Update an existing record (does nothing if not exists)\n- **Delete** — Delete a record\n- **Batch** — Execute multiple operations atomically\n- **Key construction** — Build single and composite keys\n\n### Step 2: Gather context\nAsk about their schema:\n- Namespace and table name\n- Partition key column(s) and type(s)\n- Clustering key column(s) and type(s) if applicable\n- Value columns they want to read\u002Fwrite\n\n### Step 3: Generate code\nGenerate the complete code example including:\n- Builder pattern usage\n- Key construction\n- Result extraction\n- Proper exception handling\n- Transaction lifecycle (begin, operation, commit, rollback)\n\n## Reference\n\nRead `${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fcommon\u002Freferences\u002Fapi-reference.md` for the complete API reference.\nRead `${CLAUDE_PLUGIN_ROOT}\u002Frules\u002Fscalardb-crud-patterns.md` for CRUD API coding rules.\n\n## Quick Reference Examples\n\n### Get by Primary Key\n```java\nOptional\u003CResult> result = tx.get(\n    Get.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"id\", 1))\n        .clusteringKey(Key.ofInt(\"ck\", 2))\n        .build());\n```\n\n### Get by Index\n```java\nOptional\u003CResult> result = tx.get(\n    Get.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .indexKey(Key.ofText(\"order_id\", orderId))\n        .build());\n```\n\n### Scan (Partition)\n```java\nList\u003CResult> results = tx.scan(\n    Scan.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"pk\", 1))\n        .ordering(Scan.Ordering.desc(\"ck\"))\n        .limit(100)\n        .build());\n```\n\n### Scan (Range)\n```java\nList\u003CResult> results = tx.scan(\n    Scan.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"pk\", 1))\n        .start(Key.ofInt(\"ck\", 10)).startInclusive(true)\n        .end(Key.ofInt(\"ck\", 20)).endInclusive(false)\n        .build());\n```\n\n### Scan All\n```java\nList\u003CResult> results = tx.scan(\n    Scan.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .all()\n        .limit(100)\n        .build());\n\u002F\u002F Requires: scalar.db.cross_partition_scan.enabled=true\n```\n\n### Insert\n```java\ntx.insert(\n    Insert.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"id\", 1))\n        .textValue(\"name\", \"Alice\")\n        .intValue(\"age\", 30)\n        .build());\n```\n\n### Upsert\n```java\ntx.upsert(\n    Upsert.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"id\", 1))\n        .textValue(\"name\", \"Alice\")\n        .intValue(\"age\", 31)\n        .build());\n```\n\n### Update with Condition\n```java\ntx.update(\n    Update.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"id\", 1))\n        .intValue(\"balance\", newBalance)\n        .condition(ConditionBuilder.updateIf(\n            ConditionBuilder.column(\"balance\").isGreaterThanOrEqualToInt(amount)\n        ).build())\n        .build());\n```\n\n### Delete\n```java\ntx.delete(\n    Delete.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"id\", 1))\n        .clusteringKey(Key.ofInt(\"ck\", 2))\n        .build());\n```\n\n### Key Construction (Composite)\n```java\nKey compositeKey = Key.newBuilder()\n    .addInt(\"col1\", 1)\n    .addText(\"col2\", \"abc\")\n    .build();\n```\n\n### Result Extraction\n```java\nif (result.isPresent()) {\n    Result r = result.get();\n    int id = r.getInt(\"id\");           \u002F\u002F 0 if NULL\n    String name = r.getText(\"name\");   \u002F\u002F null if NULL\n    boolean isNull = r.isNull(\"name\"); \u002F\u002F check NULL\n}\n```\n\n## Output Format\n\nProvide complete, runnable code examples with proper imports and exception handling. Tailor examples to the user's specific schema.\n","# \u002Fscalardb:crud-ops — ScalarDB CRUD Operations Guide\n\nShared files: a path written `@rules\u002F…`, `@skills\u002F…`, `@templates\u002F…` or `@docs\u002F…` is relative to the\nplugin root, `${CLAUDE_PLUGIN_ROOT}` — not to the project being worked on. Read it from there.\n\n## Instructions\n\nYou are a ScalarDB CRUD operations expert. Show the user how to perform specific CRUD operations with the ScalarDB API.\n\n**Knowledge grounding**: version-specific behavior (API signatures, config keys, exception retryability, edition-gated features) comes from the version-pinned OKF bundle, cited by `resource` URL, never from memory — @rules\u002Fokf-knowledge-bundle.md.\n\n## Interactive Flow\n\n### Step 1: Determine the operation\nAsk: \"What operation do you need help with?\" if not specified.\n\nOptions:\n- **Get** — Retrieve a single record by primary key or index\n- **Scan** — Retrieve multiple records (partition scan, range scan, scan all, index scan)\n- **Insert** — Insert a new record (fails if exists)\n- **Upsert** — Insert or update a record\n- **Update** — Update an existing record (does nothing if not exists)\n- **Delete** — Delete a record\n- **Batch** — Execute multiple operations atomically\n- **Key construction** — Build single and composite keys\n\n### Step 2: Gather context\nAsk about their schema:\n- Namespace and table name\n- Partition key column(s) and type(s)\n- Clustering key column(s) and type(s) if applicable\n- Value columns they want to read\u002Fwrite\n\n### Step 3: Generate code\nGenerate the complete code example including:\n- Builder pattern usage\n- Key construction\n- Result extraction\n- Proper exception handling\n- Transaction lifecycle (begin, operation, commit, rollback)\n\n## Reference\n\nRead `${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fcommon\u002Freferences\u002Fapi-reference.md` for the complete API reference.\nRead `${CLAUDE_PLUGIN_ROOT}\u002Frules\u002Fscalardb-crud-patterns.md` for CRUD API coding rules.\n\n## Quick Reference Examples\n\n### Get by Primary Key\n```java\nOptional\u003CResult> result = tx.get(\n    Get.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"id\", 1))\n        .clusteringKey(Key.ofInt(\"ck\", 2))\n        .build());\n```\n\n### Get by Index\n```java\nOptional\u003CResult> result = tx.get(\n    Get.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .indexKey(Key.ofText(\"order_id\", orderId))\n        .build());\n```\n\n### Scan (Partition)\n```java\nList\u003CResult> results = tx.scan(\n    Scan.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"pk\", 1))\n        .ordering(Scan.Ordering.desc(\"ck\"))\n        .limit(100)\n        .build());\n```\n\n### Scan (Range)\n```java\nList\u003CResult> results = tx.scan(\n    Scan.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"pk\", 1))\n        .start(Key.ofInt(\"ck\", 10)).startInclusive(true)\n        .end(Key.ofInt(\"ck\", 20)).endInclusive(false)\n        .build());\n```\n\n### Scan All\n```java\nList\u003CResult> results = tx.scan(\n    Scan.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .all()\n        .limit(100)\n        .build());\n\u002F\u002F Requires: scalar.db.cross_partition_scan.enabled=true\n```\n\n### Insert\n```java\ntx.insert(\n    Insert.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"id\", 1))\n        .textValue(\"name\", \"Alice\")\n        .intValue(\"age\", 30)\n        .build());\n```\n\n### Upsert\n```java\ntx.upsert(\n    Upsert.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"id\", 1))\n        .textValue(\"name\", \"Alice\")\n        .intValue(\"age\", 31)\n        .build());\n```\n\n### Update with Condition\n```java\ntx.update(\n    Update.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"id\", 1))\n        .intValue(\"balance\", newBalance)\n        .condition(ConditionBuilder.updateIf(\n            ConditionBuilder.column(\"balance\").isGreaterThanOrEqualToInt(amount)\n        ).build())\n        .build());\n```\n\n### Delete\n```java\ntx.delete(\n    Delete.newBuilder()\n        .namespace(\"ns\").table(\"tbl\")\n        .partitionKey(Key.ofInt(\"id\", 1))\n        .clusteringKey(Key.ofInt(\"ck\", 2))\n        .build());\n```\n\n### Key Construction (Composite)\n```java\nKey compositeKey = Key.newBuilder()\n    .addInt(\"col1\", 1)\n    .addText(\"col2\", \"abc\")\n    .build();\n```\n\n### Result Extraction\n```java\nif (result.isPresent()) {\n    Result r = result.get();\n    int id = r.getInt(\"id\");           \u002F\u002F 0 if NULL\n    String name = r.getText(\"name\");   \u002F\u002F null if NULL\n    boolean isNull = r.isNull(\"name\"); \u002F\u002F check NULL\n}\n```\n\n## Output Format\n\nProvide complete, runnable code examples with proper imports and exception handling. Tailor examples to the user's specific schema.\n",{"model":44,"description":52},"ScalarDB CRUD API patterns (Get, Scan, Insert, Upsert, Update, Delete) with examples, for writing\nor reviewing transactional code without SQL.\n","main","fed4c7ebb79ed82ce5c961f944a1ab0ab21bae26","skills\u002Fcrud-ops",1,"https:\u002F\u002Fgithub.com\u002Fwfukatsu\u002Fnexus-architect","https:\u002F\u002Fnexus-architect-docs-070772.gitlab.io\u002F","https:\u002F\u002Fgithub.com\u002Fwfukatsu","https:\u002F\u002Fwww.scalar-labs.com\u002F","Wataru Fukatsu | Co-Founder and CEO, Scalar, Inc.","2026-11-12 08:27:58",{"source":8,"skillName":5,"commands":64,"prompt":74,"zipAvailable":75},[65,68,71],{"tool":66,"command":67},"npx","npx skills add wfukatsu\u002Fnexus-architect --skill crud-ops",{"tool":69,"command":70},"bunx","bunx skills add wfukatsu\u002Fnexus-architect --skill crud-ops",{"tool":72,"command":73},"pnpm","pnpm dlx skills add wfukatsu\u002Fnexus-architect --skill crud-ops","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fwfukatsu\u002Fnexus-architect\u002Fblob\u002Fmain\u002Fskills\u002Fcrud-ops\u002FSKILL.md",true,[],[78,107,135,163,188,206],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":88,"publishedAt":47},"01M6HRH10GPAVTZ8W90WD9HJK1","verify-sql-migration","Prove a SQL migration on data: golden checks against an authorized source database and\ndifferential tests against ScalarDB. Never touches production.","https:\u002F\u002Fgithub.com\u002Fwfukatsu\u002Fnexus-architect\u002Fblob\u002Fmain\u002Fskills\u002Fverify-sql-migration\u002FSKILL.md",[84,85],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":86,"categoryName":87,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000033","数据分析师",[46,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,44,104,105,106],"verify","migration","verify sql migration","core","database","data","Production","auto","never","en","properties","fetcher","tests","id","golden","true","mode","source",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":120,"publishedAt":47},"01M6HRGWK643YKN0QVRQSNSDCR","verify-implementation","Check code against the design (API contract, transactions, security, requirements, the example\nchain) and report every divergence; optionally runs the eight-stage quality gate.","https:\u002F\u002Fgithub.com\u002Fwfukatsu\u002Fnexus-architect\u002Fblob\u002Fmain\u002Fskills\u002Fverify-implementation\u002FSKILL.md",[113,116,117],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},{"categoryNo":118,"categoryName":119,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务",[89,121,122,123,124,33,36,125,126,96,127,98,128,129,130,131,132,133,134,104],"implementation","verify implementation","design","quality gate","repo","check","example","api contract","backlog","stage","requirements","contract","chain","scope",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":147,"publishedAt":47},"01M6HRGS929NK1B5WG1ZANSXQ1","update-knowledge","Fetch or update an OKF knowledge bundle: ScalarDB\u002FScalarDL, or the vendored Kubernetes\u002FTerraform\nbundle.","https:\u002F\u002Fgithub.com\u002Fwfukatsu\u002Fnexus-architect\u002Fblob\u002Fmain\u002Fskills\u002Fupdate-knowledge\u002FSKILL.md",[141,144],{"categoryNo":142,"categoryName":143,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":145,"categoryName":146,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[32,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162],"knowledge","update knowledge","kubernetes","status","plugin","terraform","Tools","Bash","okf","haiku","fetch","bundle","name","root","latest",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":173,"publishedAt":47},"01M6HRGNMYSK70R8Y9BY41E74D","start","Interactive entry point for system architecture work: refactor a legacy application into services,\nor design a new system from requirements; picks the path from the project's state. To move a\ndatabase to ScalarDB, use migrate-database.","https:\u002F\u002Fgithub.com\u002Fwfukatsu\u002Fnexus-architect\u002Fblob\u002Fmain\u002Fskills\u002Fstart\u002FSKILL.md",[169,170],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":171,"categoryName":172,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师",[165,123,174,175,93,176,177,178,179,180,181,182,183,184,185,131,186,187,45],"architecture","state","services","refactor","migrate","system","work","interactive","use","Legacy","application","project","move","path",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":194,"publishedAt":47},"01M6HRGHZXK0NXF6W62MMNS46H","select-scalardb-edition","Choose the ScalarDB edition (Community, Enterprise Standard or Premium, plus Enterprise Options),\ndeployment mode and cluster topology through a short interview.","https:\u002F\u002Fgithub.com\u002Fwfukatsu\u002Fnexus-architect\u002Fblob\u002Fmain\u002Fskills\u002Fselect-scalardb-edition\u002FSKILL.md",[],[195,196,197,198,199,200,201,202,203,204,205,44,105],"select","select scalardb edition","deployment","topology","Enterprise","choose","short","interview","community","options","cluster",{"skillNo":207,"name":208,"nameZh":6,"description":209,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":210,"categories":211,"keywords":213,"publishedAt":47},"01M6HRGESF0BH6KCT70BP70B2J","scaffold","Generate a runnable ScalarDB starter project for any of the six interface combinations: build,\nconfig, schema, service class, docker-compose and README.","https:\u002F\u002Fgithub.com\u002Fwfukatsu\u002Fnexus-architect\u002Fblob\u002Fmain\u002Fskills\u002Fscaffold\u002FSKILL.md",[212],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[208,214,215,216,217,218,219,220,221,185,222,223,224,225,44,45],"docker","config","generate","README","schema","compose","build","docker-compose","combinations","service","starter","interface"]