Obsidian Bases Skill Review: 13,027 Bytes, One Disputed Date Formula
The obsidian-bases SKILL.md is 13,027 bytes, the largest of the six SKILL.md files in Steph Ango's obsidian-skills repository, which had 49,828 stars when checked on October 21, 2026. It's a syntax cheat sheet for Obsidian's .base files, mostly a good one. It also makes one checkable claim that an open GitHub issue says contradicts Obsidian's own help source: that subtracting two dates gives you a Duration with a .days field.
Evidence: the checked-in source, repo metadata, commit history, GitHub issues and PRs, and Obsidian's published help source. I didn't run the skill through an API or Obsidian; nothing below is a traffic measurement.
TL;DR / Key Takeaways
- The
obsidian-basesSKILL.md is 13,027 bytes, about 3,257 estimated tokens using bytes ÷ 4; with its linked FUNCTIONS_REFERENCE.md (7,538 bytes) the loaded set is 20,565 bytes, about 5,141 estimated tokens. - The kepano/obsidian-skills repository had 49,828 GitHub stars, 3,526 forks, and 6 SKILL.md files on October 21, 2026, under the MIT license (Copyright 2026 Steph Ango).
- The most recent commit touching the obsidian-bases SKILL.md is dated April 7, 2026, 197 days before this review; four open issues about it (#70, #109, #137, #149) had zero comments.
- GitHub issue #137 reports that the skill's date-difference formulas, such as
(now() - file.ctime).days, conflict with Obsidian's help source, which says subtracting dates returns a millisecond difference. - The obsidian-bases SKILL.md contains no
sortkey in its schema (checked with grep), while issue #149 reports two silent sort failures on Obsidian 1.14.4.
What the skill actually says
It reads like a reference more than a method: a six-step workflow, then schema, filters, formulas, a function table, four view types, three full examples, and troubleshooting. Step 6 is the one a headless agent can't follow:
“Open the .base file in Obsidian to confirm the view renders correctly.”
The date section is the one under dispute. The skill states:
“When subtracting two dates, the result is a Duration type (not a number).”
and then builds its examples on it, for instance days_old: '(now() - file.ctime).days'. It also warns that Duration doesn't support .round(), .floor(), or .ceil() directly, so you reach for .days first.
The best part is the troubleshooting block: WRONG/CORRECT pairs for first-pass model mistakes like an unquoted colon in YAML, nested double quotes in a formula, and a date formula that crashes on an empty property. The one-key filter rule traces back to a real Obsidian rejection, covered below.
What it costs you in context
These are estimates derived from file size, not measured session usage. With the stated divisor of 4 bytes per approximate token, the 13,027-byte SKILL.md works out to 13,027 ÷ 4 = 3,257 estimated tokens. SKILL.md links to a 7,538-byte reference file; loading both is 20,565 ÷ 4 = 5,141 estimated tokens. (The per-file figures add to 5,142 because of rounding; the total is computed from the combined bytes.) Tokenizers vary by model.
| File | Role | Bytes | Estimated tokens (bytes ÷ 4) |
|---|---|---|---|
skills/obsidian-bases/SKILL.md | Instructions, schema, examples | 13,027 | ≈ 3,257 |
skills/obsidian-bases/references/FUNCTIONS_REFERENCE.md | Function lookup, linked from SKILL.md | 7,538 | ≈ 1,885 |
| Skill directory total | 2 Markdown files, no scripts | 20,565 | ≈ 5,141 |
| All 6 SKILL.md files in the repo (for scale) | Bases, Markdown, Canvas, CLI, Defuddle, Knap | 33,974 | ≈ 8,494 |
Two caveats. The Duration warning and date-arithmetic snippet appear in both files almost verbatim, so the reference mostly adds function tables. And the plugin install brings all six skills (issue #146: “all 6 skills (including knap) load”). Whether a host keeps every body resident is untested here, so I'm not giving a per-session figure.
What the community reports
Discussion lives on GitHub. Algolia found no Hacker News story about the repo; the few comments mentioning it are mostly Ango linking his own project, plus two users, only one describing actual use. The repo has 74 open items (38 issues, 36 PRs) and 17 merged PRs; little of that reaches the Bases skill.
| Source | Date | What was reported | Link |
|---|---|---|---|
| GitHub issue #137 | Aug 31, 2026 | A user says SKILL.md and the function reference still document a Duration with .days, while Obsidian's help says date subtraction returns milliseconds. Proposed fix: divide by 86400000. No replies. | Issue #137 |
| GitHub issue #149 | Oct 18, 2026 | A tester checked the skills on Obsidian 1.14.4 in a ~120-note vault with 6 Bases views: “Everything else I checked passed.” Exceptions: sort: "- priority DESC" sorts ascending, and a sort block is ignored if its property isn't in order. No replies. | Issue #149 |
| GitHub issue #109 and PRs #111, #121 | Jun 18 – Jul 14, 2026 | A user reports sort is undocumented in the schema; two open PRs add it. Related: issue #70 and PR #99 ask for inline base code-block embedding. All still open. | Issue #109 |
| GitHub issue #146 | Sep 16 – Oct 17, 2026 | plugin.json and marketplace.json still say version 1.0.1 after content changed. A second user reported claude plugin update answering “already at the latest version (1.0.1)” and the new Knap skill not loading until they uninstalled and reinstalled. | Issue #146 |
| GitHub issues #10 and #58 | Jan 7 and Mar 22, 2026 | Early breakage, both closed: Claude Code's permission check choked on a backticked ! in the operators table, and the schema example showed and/or/not as siblings, which Obsidian rejects. The #58 reporter still called the skill “my go-to for querying projects across the vault.” | Issue #58 |
| Hacker News comment | Jun 21, 2026 | One user described a docs vault organised with Bases, wikilinks and frontmatter, driven through obsidian-cli “and related Claude skills, thanks kepano.” Praise for the set, not a Bases-specific test. | HN 48623825 |
The reports don't line up neatly. The #149 tester wrote that the skill's note “that Duration has no .round() is correct” and verified it errors, which a bare millisecond number wouldn't do. Yet Obsidian's published Bases syntax source says: “Subtract two dates to get the millisecond difference between the two.” That doc's last commit is dated October 6, 2026 (“Obsidian 1.14”); the skill's Duration section was added in a commit dated January 18, 2026, and the file's last edit was April 7. I can't settle which is right without running Obsidian, which I didn't.
The maintainer isn't absent: Ango added the Knap skill on September 10, merged #143 on September 15, and commented on #150 on October 19. The Bases skill just isn't getting looked at: none of its four open issues has a reply, and PRs #99, #111 and #121 are open since June or July.
How to install it
Commands below are from the repository README:
/plugin marketplace add kepano/obsidian-skills
/plugin install obsidian@obsidian-skills
For other agents, the README lists the skills CLI (the https form):
npx skills add https://github.com/kepano/obsidian-skills
The README shows the ssh form first; issue #127 notes it fails on machines without a key. Given #146, don't trust the version string to tell you you're current; the user in that thread suggested comparing the installed gitCommitSha with git ls-remote output.
Where it earns its keep, and where it doesn't
It earns its keep on the first draft of a .base file. The quoting rules, null guards, and one-key filter rule target real model errors, and the #149 tester found filters, groupBy, summaries, displayName, and the core date functions behaved as documented.
It doesn't help where the traps are. My criticisms:
- The date-difference guidance is disputed, and the examples that depend on it (days since created, days until due, overdue flags) are the ones people build first.
- There's no
sortin the schema, and the form an agent will guess has two silent failure modes: the view renders, just in the wrong order. - Step 6 assumes a GUI. A headless agent can't open the file in Obsidian, and the sibling obsidian-cli skill says it “Requires Obsidian to be open.”
- The file is 197 days past its last edit, with four unanswered issues and three unmerged PRs against it.
- The plugin version is stuck at 1.0.1, so auto-update users may sit on older content.
Install it if you build Bases regularly. Then open the first generated file yourself, check the sort order, and test one date-difference formula before trusting the rest. Skip it for occasional table views.
FAQ
What does the obsidian-bases skill do?
It gives an agent a syntax reference for Obsidian Bases (.base) files: schema, filters, formulas, view types, summaries, three worked examples, and troubleshooting for quoting and null-check mistakes.
How large is the obsidian-bases skill?
The SKILL.md is 13,027 bytes, about 3,257 tokens using bytes divided by 4. With the linked 7,538-byte FUNCTIONS_REFERENCE.md the set is 20,565 bytes, about 5,141 estimated tokens. Both are estimates from file size, not measured usage.
Is the date-difference guidance in the skill reliable?
It is disputed. The skill says subtracting dates returns a Duration with a .days field; Obsidian's published help source says it returns a millisecond difference. Issue #137 raises this and had no replies on October 21, 2026. Test date formulas in your own vault.
Is the obsidian-bases skill worth installing?
Yes if you build .base files regularly, since it prevents common YAML quoting and filter-nesting errors. Treat its date arithmetic as unverified; it does not document sort.
Skill by Steph Ango (kepano) and contributors, MIT licensed. Source: github.com/kepano/obsidian-skills. Short excerpts are quoted for review purposes. Community reception changes over time; this review reflects public evidence checked on October 21, 2026.