jpskill.com
🛠️ 開発・MCP コミュニティ

understanding-db-schema

Deep expertise in Logseq's Datascript database schema. Auto-invokes when users ask about Logseq DB schema, Datascript attributes, built-in classes, property types, entity relationships, schema validation, or the node/block/page data model. Provides authoritative knowledge of the DB graph architecture.

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o understanding-db-schema.zip https://jpskill.com/download/17710.zip && unzip -o understanding-db-schema.zip && rm understanding-db-schema.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17710.zip -OutFile "$d\understanding-db-schema.zip"; Expand-Archive "$d\understanding-db-schema.zip" -DestinationPath $d -Force; ri "$d\understanding-db-schema.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して understanding-db-schema.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → understanding-db-schema フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
4

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

Logseq DB スキーマの理解

この Skill を使用する場面

この Skill は、以下の場合に自動的に起動します。

  • ユーザーが Logseq のデータベーススキーマまたは Datascript について質問した場合
  • 組み込みクラス(Tag、Page、Task、Property など)に関する質問
  • プロパティ型システムに関する質問(:default、:number、:date、:checkbox など)
  • エンティティの関係に関する質問(block/tags、block/refs、block/parent)
  • スキーマの検証または Malli スキーマ
  • ノードモデルまたは統合されたページ/ブロックの概念
  • ユーザーが :db/ident:logseq.class/*、または :logseq.property/* について言及した場合

参考資料: 完全なクラス階層については、{baseDir}/references/built-in-classes.md を参照してください。

あなたは Logseq のデータベーススキーマアーキテクチャに関する専門知識を持っています。

Datascript の基礎

Logseq DB グラフは Datascript 上に構築されています。Datascript は、以下の機能をサポートする Clojure/ClojureScript のインメモリデータベースです。

  • Entity-Attribute-Value (EAV) データモデル
  • Datalog クエリ
  • スキーマ駆動の属性定義

属性型

;; 値の型
:db.type/ref      ; 他のエンティティへの参照
:db.type/string   ; テキスト値
:db.type/long     ; 整数
:db.type/double   ; 浮動小数点数
:db.type/boolean  ; 真/偽
:db.type/instant  ; タイムスタンプ
:db.type/keyword  ; Clojure キーワード
:db.type/uuid     ; UUID

;; カーディナリティ
:db.cardinality/one   ; 単一の値
:db.cardinality/many  ; 複数の値 (セット)

コアリファレンス属性

:block/tags    ; エンティティに割り当てられたクラス/タグ
:block/refs    ; 他のエンティティへの発信参照
:block/alias   ; ページの代替名
:block/parent  ; 階層内の親ブロック
:block/page    ; このブロックを含むページ

組み込みクラスの階層

:logseq.class/Root
├── :logseq.class/Page
├── :logseq.class/Tag (クラス自体)
├── :logseq.class/Property
├── :logseq.class/Task
│   └── Status, Priority, Deadline, Scheduled
├── :logseq.class/Query
├── :logseq.class/Asset
├── :logseq.class/Code-block
└── :logseq.class/Template

Root 以外のすべてのクラスは、:logseq.property.class/extends を介して :logseq.class/Root を拡張します。

プロパティ型システム

バリデーター 閉じた値 ユースケース
:default text-entity? タイトル付きのテキストブロック
:number number-entity? 数値
:date date? ジャーナルページエンティティ
:datetime datetime? 時間ベースのスケジューリング
:checkbox boolean? トグルプロパティ
:url url-entity? URL 文字列またはマクロ
:node node-entity? ブロック/ページ参照
:class class-entity? クラスエンティティ

プロパティ設定キー

{:db/ident :user.property/my-property
 :logseq.property/type :default           ; プロパティ型
 :logseq.property/cardinality :one        ; :one または :many
 :logseq.property/hide? false             ; デフォルトで非表示
 :logseq.property.ui/position :properties ; UI の配置
 :logseq.property/closed-values [...]     ; 制限された選択肢
 :logseq.property/schema-classes [...]    ; 関連付けられたクラス
 :block/title "My Property"}              ; 表示名

プロパティ名前空間

名前空間 目的
logseq.property コアシステムプロパティ :logseq.property/type
logseq.property.class クラス関連 :logseq.property.class/extends
logseq.property.table テーブルビュー :logseq.property.table/columns
user.property ユーザー定義 :user.property/author
plugin.property プラグイン定義 :plugin.property/custom

スキーマのバージョン管理

;; バージョン形式
{:major 65 :minor 12}

;; 格納場所
:logseq.kv/schema-version  ; グラフの現在のバージョン
db-schema/version          ; 期待されるバージョン

移行は、バージョン間のスキーマアップグレードを処理します (65.0 → 65.12 以降)。

Malli 検証フロー

  1. エンティティ変換: プロパティ → [property-map value] タプル
  2. スキーマディスパッチ: 検証は :logseq.property/type でディスパッチします
  3. 値の検証: 個々の値が型スキーマに対してチェックされます
  4. カーディナリティの処理: 自動的な :many:one の処理
  5. トランザクションの検証: validate-tx-report は整合性を保証します

ノードモデル

統一されたノードの概念

DB バージョンでは、ノード はページとブロックの両方を表します。

Node
├── Page (タグの組み合わせで一意)
│   ├── ジャーナルページ (#Journal)
│   ├── 通常のページ (#Page)
│   └── クラスページ (#Tag)
└── Block (ページ内)
    ├── コンテンツブロック
    ├── プロパティブロック
    └── #Page タグを介してページに変換可能

ページの一意性

ページは、タグの組み合わせによって一意になります。

  • "Apple #Company" ≠ "Apple #Fruit"
  • 両方とも別々のエンティティとして共存できます

一般的なパターン

カスタムクラスの作成

;; プロパティを持つクラスを定義する
{:db/ident :user.class/Book
 :block/tags [:logseq.class/Tag]
 :block/title "Book"
 :logseq.property.class/extends :logseq.class/Root
 :logseq.property/schema-classes
   [:user.property/author
    :user.property/isbn
    :user.property/rating]}

型付きプロパティの作成

;; 選択肢のある数値プロパティ
{:db/ident :user.property/rating
 :block/title "Rating"
 :logseq.property/type :number
 :logseq.property/cardinality :one
 :logseq.property/closed-values [1 2 3 4 5]}

リソース

ユーザーがより多くの情報を必要とする場合は、以下を参照してください。

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

Understanding Logseq DB Schema

When to Use This Skill

This skill auto-invokes when:

  • User asks about Logseq's database schema or Datascript
  • Questions about built-in classes (Tag, Page, Task, Property, etc.)
  • Property type system questions (:default, :number, :date, :checkbox, etc.)
  • Entity relationship questions (block/tags, block/refs, block/parent)
  • Schema validation or Malli schemas
  • Node model or unified page/block concept
  • User mentions :db/ident, :logseq.class/*, or :logseq.property/*

Reference Material: See {baseDir}/references/built-in-classes.md for complete class hierarchy.

You have expert knowledge of Logseq's database schema architecture.

Datascript Foundation

Logseq DB graphs are built on Datascript, a Clojure/ClojureScript in-memory database that supports:

  • Entity-Attribute-Value (EAV) data model
  • Datalog queries
  • Schema-driven attribute definitions

Attribute Types

;; Value types
:db.type/ref      ; References to other entities
:db.type/string   ; Text values
:db.type/long     ; Integer numbers
:db.type/double   ; Floating point numbers
:db.type/boolean  ; True/false
:db.type/instant  ; Timestamps
:db.type/keyword  ; Clojure keywords
:db.type/uuid     ; UUIDs

;; Cardinality
:db.cardinality/one   ; Single value
:db.cardinality/many  ; Multiple values (set)

Core Reference Attributes

:block/tags    ; Classes/tags assigned to the entity
:block/refs    ; Outgoing references to other entities
:block/alias   ; Alternative names for a page
:block/parent  ; Parent block in hierarchy
:block/page    ; Page containing this block

Built-in Classes Hierarchy

:logseq.class/Root
├── :logseq.class/Page
├── :logseq.class/Tag (classes themselves)
├── :logseq.class/Property
├── :logseq.class/Task
│   └── Status, Priority, Deadline, Scheduled
├── :logseq.class/Query
├── :logseq.class/Asset
├── :logseq.class/Code-block
└── :logseq.class/Template

All non-Root classes extend :logseq.class/Root via :logseq.property.class/extends.

Property Type System

Type Validator Closed Values Use Case
:default text-entity? Text blocks with titles
:number number-entity? Numeric values
:date date? Journal page entities
:datetime datetime? Time-based scheduling
:checkbox boolean? Toggle properties
:url url-entity? URL strings or macros
:node node-entity? Block/page references
:class class-entity? Class entities

Property Configuration Keys

{:db/ident :user.property/my-property
 :logseq.property/type :default           ; Property type
 :logseq.property/cardinality :one        ; :one or :many
 :logseq.property/hide? false             ; Hide by default
 :logseq.property.ui/position :properties ; UI placement
 :logseq.property/closed-values [...]     ; Restricted choices
 :logseq.property/schema-classes [...]    ; Associated classes
 :block/title "My Property"}              ; Display name

Property Namespaces

Namespace Purpose Example
logseq.property Core system properties :logseq.property/type
logseq.property.class Class-related :logseq.property.class/extends
logseq.property.table Table views :logseq.property.table/columns
user.property User-defined :user.property/author
plugin.property Plugin-defined :plugin.property/custom

Schema Versioning

;; Version format
{:major 65 :minor 12}

;; Stored in
:logseq.kv/schema-version  ; Graph's current version
db-schema/version          ; Expected version

Migrations handle schema upgrades between versions (65.0 → 65.12+).

Malli Validation Flow

  1. Entity transformation: Properties → [property-map value] tuples
  2. Schema dispatch: Validation dispatches on :logseq.property/type
  3. Value validation: Individual values checked against type schemas
  4. Cardinality handling: Automatic :many vs :one handling
  5. Transaction validation: validate-tx-report ensures integrity

Node Model

Unified Node Concept

In DB version, nodes represent both pages and blocks:

Node
├── Page (unique by tag combination)
│   ├── Journal pages (#Journal)
│   ├── Regular pages (#Page)
│   └── Class pages (#Tag)
└── Block (within pages)
    ├── Content blocks
    ├── Property blocks
    └── Convertible to page via #Page tag

Page Uniqueness

Pages are unique by their tag combination:

  • "Apple #Company" ≠ "Apple #Fruit"
  • Both can coexist as separate entities

Common Patterns

Creating a Custom Class

;; Define a class with properties
{:db/ident :user.class/Book
 :block/tags [:logseq.class/Tag]
 :block/title "Book"
 :logseq.property.class/extends :logseq.class/Root
 :logseq.property/schema-classes
   [:user.property/author
    :user.property/isbn
    :user.property/rating]}

Creating a Typed Property

;; Number property with choices
{:db/ident :user.property/rating
 :block/title "Rating"
 :logseq.property/type :number
 :logseq.property/cardinality :one
 :logseq.property/closed-values [1 2 3 4 5]}

Resources

When users need more information, reference:

同梱ファイル

※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。