{"id":"968b1c8d-16be-46a0-b0ca-f57a6e8772d1","shortId":"E236by","kind":"skill","title":"obsidian-bases","tagline":"Create and edit Obsidian Bases (.base files): Obsidian's native database layer for dynamic tables, card views, list views, filters, formulas, and summaries over vault notes. Triggers on: create a base, add a base file, obsidian bases, base view, filter notes, formula, database vi","description":"# obsidian-bases: Obsidian's Database Layer\n\nObsidian Bases (launched 2025) turns vault notes into queryable, dynamic views. Tables, cards, lists, maps. Defined in `.base` files. No plugin required; it is a core Obsidian feature.\n\n**Authoritative reference**: If the kepano/obsidian-skills plugin is installed, prefer its canonical obsidian-bases skill. Otherwise, use the reference below. Official docs: https://help.obsidian.md/bases/syntax\n\n---\n\n## File Format\n\n`.base` files contain valid YAML. The root keys are `filters`, `formulas`, `properties`, `summaries`, and `views`.\n\n```yaml\n# Global filters: apply to ALL views\nfilters:\n  and:\n    - file.hasTag(\"wiki\")\n    - 'status != \"archived\"'\n\n# Computed properties\nformulas:\n  age_days: '(now() - file.ctime).days.round(0)'\n  status_icon: 'if(status == \"mature\", \"✅\", \"🔄\")'\n\n# Display name overrides for properties panel\nproperties:\n  status:\n    displayName: \"Status\"\n  formula.age_days:\n    displayName: \"Age (days)\"\n\n# One or more views\nviews:\n  - type: table\n    name: \"All Pages\"\n    order:\n      - file.name\n      - type\n      - status\n      - updated\n      - formula.age_days\n```\n\n---\n\n## Filters\n\nFilters select which notes appear. Applied globally or per-view.\n\n```yaml\n# Single string filter\nfilters: 'status == \"current\"'\n\n# AND: all must be true\nfilters:\n  and:\n    - 'status != \"archived\"'\n    - file.hasTag(\"wiki\")\n\n# OR: any can be true\nfilters:\n  or:\n    - file.hasTag(\"concept\")\n    - file.hasTag(\"entity\")\n\n# NOT: exclude matches\nfilters:\n  not:\n    - file.inFolder(\"wiki/meta\")\n\n# Nested\nfilters:\n  and:\n    - file.inFolder(\"wiki/\")\n    - or:\n        - 'type == \"concept\"'\n        - 'type == \"entity\"'\n```\n\n### Filter operators\n\n`==` `!=` `>` `<` `>=` `<=`\n\n### Useful filter functions\n\n| Function | Example |\n|----------|---------|\n| `file.hasTag(\"x\")` | Notes with tag `x` |\n| `file.inFolder(\"path/\")` | Notes in folder |\n| `file.hasLink(\"Note\")` | Notes linking to Note |\n\n---\n\n## Properties\n\nThree types:\n- **Note properties**: from frontmatter: `status`, `type`, `updated`\n- **File properties**: metadata: `file.name`, `file.mtime`, `file.size`, `file.ctime`, `file.tags`, `file.folder`\n- **Formula properties**: computed: `formula.age_days`\n\n---\n\n## Formulas\n\nDefined in `formulas:`. Referenced as `formula.name` in `order:` and `properties:`.\n\n```yaml\nformulas:\n  # Days since created\n  age_days: '(now() - file.ctime).days.round(0)'\n\n  # Days until a date property\n  days_until: 'if(due_date, (date(due_date) - today()).days, \"\")'\n\n  # Conditional label\n  status_icon: 'if(status == \"mature\", \"✅\", if(status == \"developing\", \"🔄\", \"🌱\"))'\n\n  # Word count estimate\n  word_est: '(file.size / 5).round(0)'\n```\n\n**Key rule**: Subtracting two dates returns a `Duration`. Not a number. Always access `.days` first:\n```yaml\n# CORRECT\nage: '(now() - file.ctime).days'\n\n# WRONG: crashes\nage: '(now() - file.ctime).round(0)'\n```\n\n**Always guard nullable properties with `if()`**:\n```yaml\n# CORRECT\ndays_left: 'if(due_date, (date(due_date) - today()).days, \"\")'\n```\n\n---\n\n## View Types\n\n### Table\n```yaml\nviews:\n  - type: table\n    name: \"Wiki Index\"\n    limit: 100\n    order:\n      - file.name\n      - type\n      - status\n      - updated\n    groupBy:\n      property: type\n      direction: ASC\n```\n\n### Cards\n```yaml\nviews:\n  - type: cards\n    name: \"Gallery\"\n    order:\n      - file.name\n      - tags\n      - status\n```\n\n### List\n```yaml\nviews:\n  - type: list\n    name: \"Quick List\"\n    order:\n      - file.name\n      - status\n```\n\n---\n\n## Wiki Vault Templates\n\n### Wiki content dashboard (all non-meta pages)\n\n```yaml\nfilters:\n  and:\n    - file.inFolder(\"wiki/\")\n    - not:\n        - file.inFolder(\"wiki/meta\")\n\nformulas:\n  age: '(now() - file.ctime).days.round(0)'\n\nproperties:\n  formula.age:\n    displayName: \"Age (days)\"\n\nviews:\n  - type: table\n    name: \"All Wiki Pages\"\n    order:\n      - file.name\n      - type\n      - status\n      - updated\n      - formula.age\n    groupBy:\n      property: type\n      direction: ASC\n```\n\n### Entity index (people, orgs, repos)\n\n```yaml\nfilters:\n  and:\n    - file.inFolder(\"wiki/entities/\")\n    - 'file.ext == \"md\"'\n\nviews:\n  - type: table\n    name: \"Entities\"\n    order:\n      - file.name\n      - entity_type\n      - status\n      - updated\n    groupBy:\n      property: entity_type\n      direction: ASC\n```\n\n### Recent ingests\n\n```yaml\nfilters:\n  and:\n    - file.inFolder(\"wiki/sources/\")\n\nviews:\n  - type: table\n    name: \"Sources\"\n    order:\n      - file.name\n      - source_type\n      - created\n      - status\n    groupBy:\n      property: source_type\n      direction: ASC\n```\n\n---\n\n## Embedding in Notes\n\n```markdown\n![[MyBase.base]]\n\n![[MyBase.base#View Name]]\n```\n\n---\n\n## Where to Save\n\nStore `.base` files in `wiki/meta/` for vault dashboards:\n- `wiki/meta/dashboard.base`: main content view\n- `wiki/meta/entities.base`: entity tracker\n- `wiki/meta/sources.base`: ingestion log\n\n---\n\n## YAML Quoting Rules\n\n- Formulas with double quotes → wrap in single quotes: `'if(done, \"Yes\", \"No\")'`\n- Strings with colons or special chars → wrap in double quotes: `\"Status: Active\"`\n- Unquoted strings with `:` break YAML parsing\n\n---\n\n## What Not to Do\n\n- Do not use `from:` or `where:`: those are Dataview syntax, not Obsidian Bases\n- Do not use `sort:` at the root level: sorting is per-view via `order:` and `groupBy:`\n- Do not put `.base` files outside the vault: they only render inside Obsidian\n- Do not reference `formula.X` in `order:` without defining `X` in `formulas:`","tags":["obsidian","bases","claude","agricidaniel","agent-skills","ai-second-brain","autonomous-research","claude-code","claude-code-skill","claude-plugin","karpathy-llm-wiki","knowledge-graph"],"capabilities":["skill","source-agricidaniel","skill-obsidian-bases","topic-agent-skills","topic-ai-second-brain","topic-autonomous-research","topic-claude-code","topic-claude-code-skill","topic-claude-plugin","topic-karpathy-llm-wiki","topic-knowledge-graph","topic-knowledge-management","topic-llm","topic-multi-agent","topic-obsidian"],"categories":["claude-obsidian"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/AgriciDaniel/claude-obsidian/obsidian-bases","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add AgriciDaniel/claude-obsidian","source_repo":"https://github.com/AgriciDaniel/claude-obsidian","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 5150 github stars · SKILL.md body (5,488 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:52:44.133Z","embedding":null,"createdAt":"2026-05-18T12:53:57.163Z","updatedAt":"2026-05-18T18:52:44.133Z","lastSeenAt":"2026-05-18T18:52:44.133Z","tsv":"'/bases/syntax':107 '0':146,311,345,373,460 '100':403 '2025':58 '5':343 'access':358 'activ':592 'add':35 'age':141,165,306,363,369,456,464 'alway':357,374 'appear':189 'appli':128,190 'archiv':137,211 'asc':413,483,512,536 'authorit':83 'base':3,8,9,34,37,40,41,50,56,72,96,110,549,615,636 'break':596 'canon':93 'card':19,67,414,418 'char':586 'colon':583 'comput':138,287 'concept':222,239 'condit':327 'contain':112 'content':440,558 'core':80 'correct':362,381 'count':338 'crash':368 'creat':4,32,305,529 'current':202 'dashboard':441,555 'databas':14,46,53 'dataview':611 'date':315,321,322,324,350,386,387,389 'day':142,163,166,183,289,303,307,312,317,326,359,366,382,391,465 'days.round':145,310,459 'defin':70,291,653 'develop':336 'direct':412,482,511,535 'display':152 'displaynam':160,164,463 'doc':104 'done':578 'doubl':571,589 'due':320,323,385,388 'durat':353 'dynam':17,64 'edit':6 'embed':537 'entiti':224,241,484,500,503,509,561 'est':341 'estim':339 'exampl':248 'exclud':226 'featur':82 'file':10,38,73,108,111,276,550,637 'file.ctime':144,282,309,365,371,458 'file.ext':494 'file.folder':284 'file.haslink':260 'file.hastag':134,212,221,223,249 'file.infolder':230,235,255,450,453,492,518 'file.mtime':280 'file.name':178,279,405,422,434,474,502,526 'file.size':281,342 'file.tags':283 'filter':23,43,119,127,132,184,185,199,200,208,219,228,233,242,245,448,490,516 'first':360 'folder':259 'format':109 'formula':24,45,120,140,285,290,293,302,455,569,656 'formula.age':162,182,288,462,478 'formula.name':296 'formula.x':649 'frontmatt':272 'function':246,247 'galleri':420 'global':126,191 'groupbi':409,479,507,531,632 'guard':375 'help.obsidian.md':106 'help.obsidian.md/bases/syntax':105 'icon':148,330 'index':401,485 'ingest':514,564 'insid':644 'instal':90 'kepano/obsidian-skills':87 'key':117,346 'label':328 'launch':57 'layer':15,54 'left':383 'level':623 'limit':402 'link':263 'list':21,68,425,429,432 'log':565 'main':557 'map':69 'markdown':540 'match':227 'matur':151,333 'md':495 'meta':445 'metadata':278 'must':205 'mybase.base':541,542 'name':153,174,399,419,430,469,499,523,544 'nativ':13 'nest':232 'non':444 'non-meta':443 'note':29,44,61,188,251,257,261,262,265,269,539 'nullabl':376 'number':356 'obsidian':2,7,11,39,49,51,55,81,95,614,645 'obsidian-bas':1,48,94 'offici':103 'one':167 'oper':243 'order':177,298,404,421,433,473,501,525,630,651 'org':487 'otherwis':98 'outsid':638 'overrid':154 'page':176,446,472 'panel':157 'pars':598 'path':256 'peopl':486 'per':194,627 'per-view':193,626 'plugin':75,88 'prefer':91 'properti':121,139,156,158,266,270,277,286,300,316,377,410,461,480,508,532 'put':635 'queryabl':63 'quick':431 'quot':567,572,576,590 'recent':513 'refer':84,101,648 'referenc':294 'render':643 'repo':488 'requir':76 'return':351 'root':116,622 'round':344,372 'rule':347,568 'save':547 'select':186 'sinc':304 'singl':197,575 'skill':97 'skill-obsidian-bases' 'sort':619,624 'sourc':524,527,533 'source-agricidaniel' 'special':585 'status':136,147,150,159,161,180,201,210,273,329,332,335,407,424,435,476,505,530,591 'store':548 'string':198,581,594 'subtract':348 'summari':26,122 'syntax':612 'tabl':18,66,173,394,398,468,498,522 'tag':253,423 'templat':438 'three':267 'today':325,390 'topic-agent-skills' 'topic-ai-second-brain' 'topic-autonomous-research' 'topic-claude-code' 'topic-claude-code-skill' 'topic-claude-plugin' 'topic-karpathy-llm-wiki' 'topic-knowledge-graph' 'topic-knowledge-management' 'topic-llm' 'topic-multi-agent' 'topic-obsidian' 'tracker':562 'trigger':30 'true':207,218 'turn':59 'two':349 'type':172,179,238,240,268,274,393,397,406,411,417,428,467,475,481,497,504,510,521,528,534 'unquot':593 'updat':181,275,408,477,506 'use':99,244,605,618 'valid':113 'vault':28,60,437,554,640 'vi':47 'via':629 'view':20,22,42,65,124,131,170,171,195,392,396,416,427,466,496,520,543,559,628 'wiki':135,213,236,400,436,439,451,471 'wiki/entities':493 'wiki/meta':231,454,552 'wiki/meta/dashboard.base':556 'wiki/meta/entities.base':560 'wiki/meta/sources.base':563 'wiki/sources':519 'without':652 'word':337,340 'wrap':573,587 'wrong':367 'x':250,254,654 'yaml':114,125,196,301,361,380,395,415,426,447,489,515,566,597 'yes':579","prices":[{"id":"8f7ef4cd-ef6a-4389-831d-568179cf9142","listingId":"968b1c8d-16be-46a0-b0ca-f57a6e8772d1","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"AgriciDaniel","category":"claude-obsidian","install_from":"skills.sh"},"createdAt":"2026-05-18T12:53:57.163Z"}],"sources":[{"listingId":"968b1c8d-16be-46a0-b0ca-f57a6e8772d1","source":"github","sourceId":"AgriciDaniel/claude-obsidian/obsidian-bases","sourceUrl":"https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/obsidian-bases","isPrimary":false,"firstSeenAt":"2026-05-18T12:53:57.163Z","lastSeenAt":"2026-05-18T18:52:44.133Z"}],"details":{"listingId":"968b1c8d-16be-46a0-b0ca-f57a6e8772d1","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"AgriciDaniel","slug":"obsidian-bases","github":{"repo":"AgriciDaniel/claude-obsidian","stars":5150,"topics":["agent-skills","ai","ai-second-brain","autonomous-research","claude-code","claude-code-skill","claude-plugin","karpathy-llm-wiki","knowledge-graph","knowledge-management","llm","multi-agent","obsidian","obsidian-ai","obsidian-plugin","open-source","pkm","rag","second-brain","wiki"],"license":"mit","html_url":"https://github.com/AgriciDaniel/claude-obsidian","pushed_at":"2026-04-24T10:21:48Z","description":"Claude + Obsidian knowledge companion. Persistent, compounding wiki vault based on Karpathy's LLM Wiki pattern. /wiki /save /autoresearch","skill_md_sha":"61bfc2937fadbb1adb923fcdbfd631aaac32e5b7","skill_md_path":"skills/obsidian-bases/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/obsidian-bases"},"layout":"multi","source":"github","category":"claude-obsidian","frontmatter":{"name":"obsidian-bases","description":"Create and edit Obsidian Bases (.base files): Obsidian's native database layer for dynamic tables, card views, list views, filters, formulas, and summaries over vault notes. Triggers on: create a base, add a base file, obsidian bases, base view, filter notes, formula, database view, dynamic table, task tracker base, reading list base."},"skills_sh_url":"https://skills.sh/AgriciDaniel/claude-obsidian/obsidian-bases"},"updatedAt":"2026-05-18T18:52:44.133Z"}}