obsidian-bases – skill Viết lách & Nội dung cho agent AI
Tạo và chỉnh sửa Obsidian Bases (tệp .base) với view, bộ lọc, công thức và tổng hợp. Dùng khi làm việc với tệp .base, tạo view dạng database từ ghi chú, hoặc khi người dùng nhắc đến Bases, table view, card view, filter hoặc formula trong Obsidian.
Cài skill obsidian-bases bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/obsidian-bases-feb1f.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /obsidian-bases – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/obsidian-bases-feb1f.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $obsidian-bases – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/obsidian-bases-feb1f.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /obsidian-bases – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/obsidian-bases-feb1f.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /obsidian-bases – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Obsidian Bases Skill
Detailed Guide
Read [the detailed guide](references/detailed-guide.md) before executing this skill. It retains the complete procedure and reference material. Treat its safety, prerequisites, and validation requirements as mandatory. For focused work, load the relevant sections; for end-to-end work, read the guide completely.
When to Use
- Use when creating or editing
.basefiles in Obsidian. - Use for database-like note views with filters, formulas, summaries, or cards/tables.
- Use when the user asks about Obsidian Bases specifically.
Complete Examples
Task Tracker 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_dateReading List 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_timeDaily Notes Index
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.mtimeLimitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Scope and data limitations
Use a copy or preview before replacing an existing Base. Global filters select data for a view; they are not access controls, and a view limit is not a retention or privacy boundary. YAML parsing alone does not validate the Obsidian expression language or plugin availability. Match view types/functions to the installed version and verify representative missing, zero, malformed and timezone-sensitive dates in Obsidian. The reading-time and byte-based word estimates are rough display heuristics, not measured counts. Escape untrusted strings before rendering HTML and avoid remote images/URLs for private notes without approval. A Base configures presentation and formulas; it does not enforce required fields or database constraints.
Skill liên quan
- obsidian-clipper-template-creator – Hướng dẫn tạo template cho Obsidian Web Clipper. Dùng khi muốn tạo template clip mới…
- odoo-orm-expert – Nắm vững các mẫu ORM của Odoo: search, browse, create, write, domain filter, computed…
- odoo-performance-tuner – Hướng dẫn chuyên sâu chẩn đoán và khắc phục sự cố hiệu năng Odoo: truy vấn chậm, cấu…
- odoo-upgrade-advisor – Trợ lý nâng cấp phiên bản Odoo từng bước: checklist trước nâng cấp, lộ trình nâng cấp…
- onboarding – Khi người dùng muốn tối ưu onboarding sau đăng ký, kích hoạt người dùng, trải nghiệm lần…
- php-pro – Viết code PHP đúng chuẩn idiom với generator, iterator, cấu trúc dữ liệu SPL và tính…
- plan-writing – Lập kế hoạch tác vụ có cấu trúc với phân rã rõ ràng, phụ thuộc và tiêu chí kiểm chứng…
- podcast-generation – Tạo bản thuyết minh âm thanh thật từ nội dung văn bản bằng Realtime API của Azure OpenAI.