mcpField
O
obsidian-bases

obsidian-bases

github.com/sickn33生産性48.7k56 回インストール1 日前に更新
リポジトリ

obsidian-bases について

obsidian-basesは、Obsidianの`.base`ファイルを作成・編集するスキルです。フィルター、数式、サマリー、カードやテーブル表示を使ったデータベース風のノートビューを作る用途に向いています。

主な機能

  1. 01`.base`ファイルの作成と編集
  2. 02フィルターと数式の設定
  3. 03サマリービューの構築
  4. 04カードまたはテーブルでの表示
  5. 05Obsidianでの設定検証

活用シーン

  1. 01タスク管理ビューの作成
  2. 02読書リストの整理
  3. 03デイリーノートの索引作成
  4. 04Base内の数式とフィルターの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill obsidian-bases

インストール後、Claude Code で/obsidian-basesを入力して読み込まれたか確認します。

同梱ファイルreferences/FUNCTIONS_REFERENCE.mdreferences/detailed-guide.md

詳細

Obsidian Bases スキル

詳細ガイド

このスキルを実行する前に、詳細ガイドをお読みください。完全な手順と参考資料が記載されています。安全性、前提条件、検証要件は必須事項として扱ってください。対象を絞って作業する場合は関連するセクションを読み、最初から最後まで作業する場合はガイド全体をお読みください。

使用する場面

  • Obsidian の .base ファイルを作成または編集するときに使用します。
  • フィルター、数式、要約、カード/テーブルを使ったデータベースのようなノートビューに使用します。
  • ユーザーが Obsidian Bases について具体的に尋ねたときに使用します。

完全な例

タスクトラッカーの Base
filters:
  and:
    - file.hasTag("task")
    - 'file.ext == "md"'

formulas:
  days_until_due: 'if(due, (date(due) - today()).days, "")'
  is_overdue: 'if(due, date(due) < today() && status != "done", false)'
  priority_label: 'if(priority == 1, "🔴 High", if(priority == 2, "🟡 Medium", "🟢 Low"))'

properties:
  status:
    displayName: Status
  formula.days_until_due:
    displayName: "Days Until Due"
  formula.priority_label:
    displayName: Priority

views:
  - type: table
    name: "Active Tasks"
    filters:
      and:
        - 'status != "done"'
    order:
      - file.name
      - status
      - formula.priority_label
      - due
      - formula.days_until_due
    groupBy:
      property: status
      direction: ASC
    summaries:
      formula.days_until_due: Average

  - type: table
    name: "Completed"
    filters:
      and:
        - 'status == "done"'
    order:
      - file.name
      - completed_date
読書リストの Base
filters:
  or:
    - file.hasTag("book")
    - file.hasTag("article")

formulas:
  reading_time: 'if(pages, (pages * 2).toString() + " min", "")'
  status_icon: 'if(status == "reading", "📖", if(status == "done", "✅", "📚"))'
  year_read: 'if(finished_date, date(finished_date).year, "")'

properties:
  author:
    displayName: Author
  formula.status_icon:
    displayName: ""
  formula.reading_time:
    displayName: "Est. Time"

views:
  - type: cards
    name: "Library"
    order:
      - cover
      - file.name
      - author
      - formula.status_icon
    filters:
      not:
        - 'status == "dropped"'

  - type: table
    name: "Reading List"
    filters:
      and:
        - 'status == "to-read"'
    order:
      - file.name
      - author
      - pages
      - formula.reading_time
デイリーノートのインデックス
filters:
  and:
    - file.inFolder("Daily Notes")
    - '/^\d{4}-\d{2}-\d{2}$/.matches(file.basename)'

formulas:
  word_estimate: '(file.size / 5).round(0)'
  day_of_week: 'date(file.basename).format("dddd")'

properties:
  formula.day_of_week:
    displayName: "Day"
  formula.word_estimate:
    displayName: "~Words"

views:
  - type: table
    name: "Recent Notes"
    limit: 30
    order:
      - file.name
      - formula.day_of_week
      - formula.word_estimate
      - file.mtime

制限事項

  • タスクが上記の説明にある範囲に明確に当てはまる場合にのみ、このスキルを使用してください。
  • 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。

範囲とデータに関する制限

既存の Base を置き換える前に、コピーまたはプレビューを使用してください。グローバルフィルターはビューに表示するデータを選択するものであり、アクセス制御ではありません。また、ビューの上限はデータ保持やプライバシーを守る境界ではありません。YAML の解析だけでは、Obsidian の式言語やプラグインの利用可否は検証できません。ビューの種類や関数がインストール済みのバージョンに対応しているか確認し、欠損値、ゼロ、不正な形式、タイムゾーンの影響を受ける日付の代表例を Obsidian で検証してください。読書時間やバイト数に基づく単語数の推定は、表示上の大まかな目安であり、実測値ではありません。HTML をレンダリングする前に信頼できない文字列をエスケープし、承認なしにプライベートなノートでリモート画像や URL を使用しないでください。Base は表示方法や数式を設定するものであり、必須フィールドやデータベース制約を強制するものではありません。

コメント