release-skills
Universal release workflow. Auto-detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, and generic…
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
$ npx -y skills add freestylefly/canghe-skills --skill obsidian-bases --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/obsidian-basesContext preview
The summary Claude sees to decide when to auto-load this skill.
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
name: obsidian-bases description: Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries. Use when working with .base files, creating database-like views of notes, or when the user mentions Bases, table views, card views, filters, or formulas in Obsidian.
This skill enables skills-compatible agents to create and edit valid Obsidian Bases (`.base` files) including views, filters, formulas, and all related configurations.
Obsidian Bases are YAML-based files that define dynamic views of notes in an Obsidian vault. A Base file can contain multiple views, global filters, formulas, property configurations, and custom summaries.
Base files use the `.base` extension and contain valid YAML. They can also be embedded in Markdown code blocks.
# Global filters apply to ALL views in the base
filters:
# Can be a single filter string
# OR a recursive filter object with and/or/not
and: []
or: []
not: []
# Define formula properties that can be used across all views
formulas:
formula_name: 'expression'
# Configure display names and settings for properties
properties:
property_name:
displayName: "Display Name"
formula.formula_name:
displayName: "Formula Display Name"
file.ext:
displayName: "Extension"
# Define custom summary formulas
summaries:
custom_summary_name: 'values.mean().round(3)'
# Define one or more views
views:
- type: table | cards | list | map
name: "View Name"
limit: 10 # Optional: limit results
groupBy: # Optional: group results
property: property_name
direction: ASC | DESC
filters: # View-specific filters
and: []
order: # Properties to display in order
- file.name
- property_name
- formula.formula_name
summaries: # Map properties to summary formulas
property_name: AverageFilters narrow down results. They can be applied globally or per-view.
# Single filter
filters: 'status == "done"'
# AND - all conditions must be true
filters:
and:
- 'status == "done"'
- 'priority > 3'
# OR - any condition can be true
filters:
or:
- 'file.hasTag("book")'
- 'file.hasTag("article")'
# NOT - exclude matching items
filters:
not:
- 'file.hasTag("archived")'
# Nested filters
filters:
or:
- file.hasTag("tag")
- and:
- file.hasTag("book")
- file.hasLink("Textbook")
- not:
- file.hasTag("book")
- file.inFolder("Required Reading")| Operator | Description | |----------|-------------| | `==` | equals | | `!=` | not equal | | `>` | greater than | | `<` | less than | | `>=` | greater than or equal | | `<=` | less than or equal | | `&&` | logical and | | `\|\|` | logical or | | <code>!</code> | logical not |
1. **Note properties** - From frontmatter: `note.author` or just `author` 2. **File properties** - File metadata: `file.name`, `file.mtime`, etc. 3. **Formula properties** - Computed values: `formula.my_formula`
| Property | Type | Description | |----------|------|-------------| | `file.name` | String | File name | | `file.basename` | String | File name without extension | | `file.path` | String | Full path to file | | `file.folder` | String | Parent folder path | | `file.ext` | String | File extension | | `file.size` | Number | File size in bytes | | `file.ctime` | Date | Created time | | `file.mtime` | Date | Modified time | | `file.tags` | List | All tags in file | | `file.links` | List | Internal links in file | | `file.backlinks` | List | Files linking to this file | | `file.embeds` | List | Embeds in the note | | `file.properties` | Object | All frontmatter properties |
Formulas compute values from properties. Defined in the `formulas` section.
formulas:
# Simple arithmetic
total: "price * quantity"
# Conditional logic
status_icon: 'if(done, "✅", "⏳")'
# String formatting
formatted_price: 'if(price, price.toFixed(2) + " dollars")'
# Date formatting
created: 'file.ctime.format("YYYY-MM-DD")'
# Complex expressions
days_old: '((now() - file.ctime) / 86400000).round(0)'| Function | Signature | Description | |----------|-----------|-------------| | `date()` | `date(string): date` | Parse string to date. Format: `YYYY-MM-DD HH:mm:ss` | | `duration()` | `duration(string): duration` | Parse duration string | | `now()` | `now(): date` | Current date and time | | `today()` | `today(): date` | Current date (time = 00:00:00) | | `if()` | `if(condition, trueResult, falseResult?)` | Conditional | | `min()` | `min(n1, n2, ...): number` | Smallest number | | `max()` | `max(n1, n2, ...): number` | Largest number | | `number()` | `number(any): number` | Convert to number | | `link()` | `link(path, display?): Link` | Create a link | | `list()` | `list(element): List` | Wrap in list if not already | | `file()` | `file(path): file` | Get file object | | `image()` | `image(path): image` | Create image for rendering | | `icon()` | `icon(name): icon` | Lucide icon by name | | `html()` | `html(string): html` | Render as HTML | | `escapeHTML()` | `escapeHTML(string): string` | Escape HTML characters |
| Function | Signature | Description | |----------|-----------|-------------| | `isTruthy()` | `any.isTruthy(): boolean` | Coerce to boolean | | `isType()` | `any.isType(type): boolean` | Check type | | `toString()` | `any.toString(): string` | Convert to string |
#
Skills shared by Canghe for improving daily work efficiency with Claude Code.
Universal release workflow. Auto-detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, and generic…
Analyzes article structure, identifies positions requiring visual aids, generates illustrations with Type × Style two-dimension…
Knowledge comic creator supporting multiple art styles and tones. Creates original educational comics with detailed panel layouts…
Compresses images to WebP (default) or PNG with automatic tool selection. Use when user asks to "compress image", "optimize…
Generates article cover images with 5 dimensions (type, palette, rendering, text, mood) combining 9 color palettes and 6…
Generates images and text via reverse-engineered Gemini Web API. Supports text generation, image generation from prompts,…