Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Build SeekDB binaries and installation packages from source for one or more target platforms (macOS, Linux, Android cross-compile, Windows native, Python wheel). Handles argument parsing, target-aware dependency initialization (MD5 marker check), and dispatches to platform-specific build scripts. Use when the user says "build seekdb", "compile seekdb", "make a release rpm/deb/tgz/apk/installer", "/build-seekdb", or asks how to produce a SeekDB binary or package.
.claude/skills/oceanbase-seekdb-build/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-13 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 32% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 30% | 0% |
Build SeekDB binaries and/or installation packages for one or more target platforms.
/build-seekdb [platform] [action] [options]platform (default: auto-detect current OS):
mac — macOS arm64/x86_64linux — Linux x86_64android — Android arm64-v8a (cross-compile on macOS/Linux host)windows — Windows x86_64 (native PowerShell environment only)action — what to do (default: compile release):
| Platform | Compile actions | Package actions | |----------|----------------|-----------------| | mac | release debug perf | tgz | | linux | release debug perf | rpm deb | | android| release debug | apk | | windows| release debug | installer |
libseekdb_embed_c.release tgz or debug rpm.options:
--init — Force re-initialize dependencies before building--jobs N — Parallel jobs (default: all CPU cores)--version V — Version string for package naming (e.g. 4.3.5, default: beta)--release R — Release/date string for package naming (e.g. 20260407, default: today's date)--with-jni — (Android only) Also build libseekdb_embed.so JNI library--install — (Android only) adb install the APK after buildingWhen the user runs /build-seekdb, follow these steps.
$ARGUMENTS.uname -s: Darwin → mac, Linux → linux.release (compile only).beta. Default release: today's date as YYYYMMDD.sysctl -n hw.ncpu (mac/android) or nproc (linux).deb on mac, tgz on linux, perf on android/windows)and tell the user which package/compile types are supported for their platform.
bashREPO_ROOT=$(pwd)
Use $REPO_ROOT for all subsequent commands. Do NOT hardcode any absolute path.
Key rule — package actions vs compile-only actions:
apk, rpm, deb, tgz, installer): call the dedicated packagingscript directly. These scripts already handle clean + init + make internally. Do NOT run a separate init step before them.
release, debug, perf): no packaging script is involved.Run the dep check below first, then call build.sh --make.
dep_create.sh writes two marker files on successful init:
deps/3rd/DONE — generic completion flagdeps/3rd/<MD5> — MD5 of the platform-specific .deps fileChecking only DONE is insufficient. The MD5 marker must match the current .deps file for the target platform. A missing MD5 marker means:
.deps file was updated (new or changed packages), ORbash# 1. Determine the .deps file for the target platform # Android: $REPO_ROOT/deps/init/oceanbase.android.arm64.deps # macOS arm64 ≥15: $REPO_ROOT/deps/init/oceanbase.macos15.arm64.deps # macOS arm64 13-14:$REPO_ROOT/deps/init/oceanbase.macos13.arm64.deps # Linux el8 x86_64: $REPO_ROOT/deps/init/oceanbase.el8.x86_64.deps # Linux el9 x86_64: $REPO_ROOT/deps/init/oceanbase.el9.x86_64.deps # # 2. Compute its MD5 # macOS: MD5=$(md5 -r <DEPS_FILE> | cut -d' ' -f1) # Linux: MD5=$(md5sum <DEPS_FILE> | cut -d' ' -f1) # # 3. Check the marker DEPS_MARKER="$REPO_ROOT/deps/3rd/$MD5"
OS_TAG reference table:
| Target | OS_TAG | |--------|--------| | Android cross-compile | android.arm64 | | macOS arm64, macOS ≥ 15 | macos15.arm64 | | macOS arm64, macOS 13–14 | macos13.arm64 | | macOS x86_64, macOS ≥ 15 | macos15.x86_64 | | Linux x86_64, RHEL/CentOS 8 | el8.x86_64 | | Linux x86_64, RHEL/CentOS 9 | el9.x86_64 |
On macOS: detect version with sw_vers -productVersion; detect arch with sysctl -n hw.optional.arm64 (returns 1 for arm64, correct even under Rosetta).
Decision logic (compile-only):
| Condition | Action | |-----------|--------| | --init explicitly passed | Always run init: ./build.sh release [--android] --init | | $DEPS_MARKER missing | Auto-run init, print [build-seekdb] deps marker not found — running --init for <PLATFORM> ... | | $DEPS_MARKER exists | Skip init, print [build-seekdb] deps OK — skipping init. |
> dep_create.sh is idempotent — if the MD5 marker already matches it exits immediately.
Pick the matching platform reference and follow it end-to-end. Each reference covers compile modes, build directories, artifact paths, and the relevant packaging script.
| Target | Reference | |--------|-----------| | macOS (compile + tgz) | references/build-macos.md | | Linux (compile + rpm/deb) | references/build-linux.md | | Android (cross-compile + apk) | references/build-android.md | | Windows (native compile + installer) | references/build-windows.md | | Python wheel (manylinux only) | references/build-python-wheel.md |
After each action:
ls -lh).--init (marker may be stale).ANDROID_NDK_HOME.windows requested on non-Windows → show PowerShell instructions, do not attempt build.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-13 | fail→pass | 11,571 | 3,938 | -66% | 1 | 1 | 0% | 2,334 | 2,565 | +10% | 0 | 0 | — |
case-01 | fail→fail | 6,704 | 4,687 | -30% | 1 | 1 | 0% | 1,547 | 2,269 | +47% | 0 | 0 | — |
case-02 | fail→fail | 10,160 | 6,154 | -39% | 1 | 1 | 0% | 2,202 | 2,477 | +12% | 0 | 0 | — |
case-03 | fail→fail | 2,573 | 6,451 | +151% | 1 | 1 | 0% | 302 | 2,204 | +630% | 0 | 0 | — |
case-04 | fail→pass | 9,928 | 3,181 | -68% | 1 | 1 | 0% | 1,901 | 2,508 | +32% | 0 | 0 | — |
case-05 | fail→pass | 7,227 | 2,858 | -60% | 1 | 1 | 0% | 1,499 | 2,539 | +69% | 0 | 0 | — |
case-06 | fail→pass | 10,974 | 4,390 | -60% | 1 | 1 | 0% | 2,356 | 2,771 | +18% | 0 | 0 | — |
case-07 | fail→pass | 11,728 | 2,802 | -76% | 1 | 1 | 0% | 1,881 | 2,443 | +30% | 0 | 0 | — |
case-08 | pass→pass | 11,433 | 2,682 | -77% | 1 | 1 | 0% | 2,139 | 2,368 | +11% | 0 | 0 | — |
case-14 | fail→pass | 7,867 | 1,895 | -76% | 1 | 1 | 0% | 1,397 | 2,223 | +59% | 0 | 0 | — |
case-09 | fail→fail | 5,519 | 4,302 | -22% | 1 | 1 | 0% | 1,092 | 2,668 | +144% | 0 | 0 | — |
case-10 | pass→pass | 4,325 | 2,994 | -31% | 1 | 1 | 0% | 857 | 2,530 | +195% | 0 | 0 | — |
case-11 | pass→pass | 11,334 | 4,825 | -57% | 1 | 1 | 0% | 2,303 | 2,660 | +16% | 0 | 0 | — |
case-12 | fail→pass | 25,796 | 3,026 | -88% | 1 | 1 | 0% | 2,174 | 2,474 | +14% | 0 | 0 | — |
case-15 | pass→pass | 15,030 | 4,050 | -73% | 1 | 1 | 0% | 1,684 | 2,678 | +59% | 0 | 0 | — |
case-16 | fail→pass | 9,869 | 5,399 | -45% | 1 | 1 | 0% | 2,127 | 2,868 | +35% | 0 | 0 | — |
case-17 | pass→pass | 8,061 | 3,198 | -60% | 1 | 1 | 0% | 1,658 | 2,584 | +56% | 0 | 0 | — |
case-18 | pass→pass | 14,921 | 2,495 | -83% | 1 | 1 | 0% | 2,878 | 2,271 | -21% | 0 | 0 | — |
case-19 | fail→pass | 9,726 | 4,359 | -55% | 1 | 1 | 0% | 1,968 | 2,600 | +32% | 0 | 0 | — |
case-20 | pass→pass | 20,739 | 17,469 | -16% | 1 | 1 | 0% | 4,653 | 6,118 | +31% | 0 | 0 | — |
case-21 | pass→pass | 12,965 | 12,554 | -3% | 1 | 1 | 0% | 2,514 | 3,783 | +50% | 0 | 0 | — |
case-22 | pass→pass | 17,441 | 11,891 | -32% | 1 | 1 | 0% | 3,750 | 4,797 | +28% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 18 counted toward the lift figure. The other 4 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 18 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.