agentsclimarketplace

Templates

Skill wep4you/wep4you-agent-skills/skills/templates

Manages note templates for Obsidian vaults via obsidian:templates commands and templates.py CLI — listing, creating, applying, editing, and deleting templates with variable substitution ({{date}}, {{title}}, {{up}}, custom --var key=value) and Templater plugin support. Use this skill to list available templates (plugin + vault), show template content, create or delete custom templates, apply a template to a new note with variable substitution, check Templater plugin status, or understand template syntax (Templater vs fallback). Always consult for obsidian:templates commands, template creation/application, or when creating new notes from templates. This skill manages templates only — not frontmatter property definitions (use frontmatter), not note-type configurations (use note-types), not vault config files (use config), not note validation (use validate).From its SKILL.md

Install
npx -y skills add wep4you/wep4you-agent-skills --skill templates

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

8.9 KB, as published. Nobody here has run it

Obsidian Templates

Manage note templates with support for Templater plugin and simple variable substitution.

Slash Commands (v1.1.0)

CommandDescription
obsidian:templatesList vault templates (default)
obsidian:templates listList vault templates (explicit)
obsidian:templates list --source pluginList only plugin templates
obsidian:templates list --source allList all templates
obsidian:templates show <name>Show template content
obsidian:templates create <name>Create new template
obsidian:templates edit <name>Edit template in editor
obsidian:templates delete <name>Delete template
obsidian:templates apply <template> <file>Apply template to file

Quick Start

# List all available templates
uv run templates_command.py --vault .

# Show template content
uv run templates_command.py --vault . show map/basic

# Create new template
uv run templates_command.py --vault . create my-template

# Apply template to file
uv run templates_command.py --vault . apply map/basic "Atlas/Maps/New Map.md" --var up="Home" --var title="New Map"

Features

Template Discovery

The skill automatically discovers templates from multiple locations:

  1. Plugin Templates: Pre-built templates in templates/<type>/

    • map/basic.md - Map of Content template
    • dot/basic.md - Atomic note template
    • source/basic.md - Source note template
    • map/templater.md - Map with Templater syntax
  2. Vault Templates: Custom templates in your vault (searched in order)

    • x/templates/ - Created by /obsidian:init (priority)
    • .obsidian/templates/
    • Templates/
    • templates/

Source Filtering

Use --source to filter templates by origin:

# List vault templates (default)
uv run templates_command.py --vault .

# List only plugin templates
uv run templates_command.py --vault . --source plugin

# List all templates (vault + plugin)
uv run templates_command.py --vault . --source all

Templater Support

The skill automatically detects if Templater plugin is installed:

✅ Detects: .obsidian/plugins/templater-obsidian/

Templater Syntax Supported:

  • <% tp.date.now("YYYY-MM-DD") %> - Current date
  • <% tp.date.tomorrow() %> - Tomorrow's date
  • <% tp.file.title %> - File name

Fallback Syntax:

  • {{date}} - Current date (YYYY-MM-DD)
  • {{time}} - Current time (HH:MM)
  • {{datetime}} - Date and time
  • {{title}} - File name
  • {{up}} - Parent note (custom variable)
  • Any custom variable via --var key=value

Commands

List Templates

uv run skills/templates/scripts/templates.py --list

Output:

Name                           Type            Source
============================================================
dot/basic                      dot             plugin
map/basic                      map             plugin
map/templater                  map             plugin
source/basic                   source          plugin
my-custom                      custom          vault

Total: 5 templates
Templater: ✅ installed

Show Template

uv run skills/templates/scripts/templates.py --show map/basic

Create Template

# Create with default content
uv run skills/templates/scripts/templates.py --create my-template

# Create with custom content
uv run skills/templates/scripts/templates.py --create my-template --content "# {{title}}"

Edit Template

uv run skills/templates/scripts/templates.py --edit my-template

Opens template in $EDITOR (default: vim)

Delete Template

uv run skills/templates/scripts/templates.py --delete my-template

Note: Only vault templates can be deleted (not plugin templates)

Apply Template

# Basic usage
uv run skills/templates/scripts/templates.py --apply map/basic "New Map.md"

# With variables
uv run skills/templates/scripts/templates.py --apply map/basic "Atlas/Maps/PKM.md" \
  --var up="Home" \
  --var title="PKM System"

# Source template with metadata
uv run skills/templates/scripts/templates.py --apply source/basic "Sources/Article.md" \
  --var up="Sources" \
  --var author="John Doe" \
  --var url="https://example.com"

Template Variables

Built-in Variables

VariableValueExample
{{date}}Current date2025-01-15
{{time}}Current time14:30
{{datetime}}Date and time2025-01-15 14:30
{{title}}File name (without .md)My Note

Custom Variables

Pass custom variables with --var:

--var up="Parent Note" \
--var collection="My Collection" \
--var author="Jane Smith"

Example Templates

Map of Content (map/basic.md)

---
type: map
up: "[[{{up}}]]"
created: {{date}}
daily: "[[{{date}}]]"
collection:
related: []
---

# {{title}}

## Overview


## Links


## Notes

Atomic Note (dot/basic.md)

---
type: dot
up: "[[{{up}}]]"
created: {{date}}
daily: "[[{{date}}]]"
collection:
related: []
---

# {{title}}

## Context


## Key Points


## Connections

Source Note (source/basic.md)

---
type: source
up: "[[{{up}}]]"
created: {{date}}
daily: "[[{{date}}]]"
collection:
related: []
author: {{author}}
url: {{url}}
---

# {{title}}

## Summary


## Key Takeaways


## Quotes


## Notes

Integration with Claude Code

When user requests template operations:

  1. List templates: Show available templates from plugin and vault
  2. Apply template: Substitute variables and create note
  3. Create template: Add to vault templates directory
  4. Detect Templater: Check plugin status and use appropriate syntax

Example Workflow

User: "Create a new map note called 'PKM System' under Home"

1. Check available templates (--list)
2. Apply map/basic template
3. Substitute variables: up="Home", title="PKM System"
4. Create file in appropriate location

Configuration

Templates are discovered automatically. No configuration needed.

Custom Template Location

To use custom vault templates:

  1. Create directory: .obsidian/templates/ or Templates/
  2. Add .md files
  3. Templates appear in --list with source="vault"

Templater Plugin Integration

If Templater is installed (.obsidian/plugins/templater-obsidian/):

  • Skill shows "✅ Templater installed" in --list
  • Supports Templater syntax in templates
  • Falls back to simple {{variable}} syntax if not installed

Supported Templater Functions

  • tp.date.now() - Current date
  • tp.date.tomorrow() - Tomorrow
  • tp.file.title - File name

Other Templater functions will be passed through as-is.

Templater vs Fallback: When to Use Which

Is Templater plugin installed? (.obsidian/plugins/templater-obsidian/)
  ├── Yes → Use Templater syntax (dynamic dates, file info)
  │         <% tp.date.now("YYYY-MM-DD") %>
  │         <% tp.file.title %>
  └── No  → Use fallback syntax (static substitution)
            {{date}}, {{title}}, {{up}}

Side-by-Side Syntax Comparison

FeatureTemplaterFallback
Current date<% tp.date.now("YYYY-MM-DD") %>{{date}}
Tomorrow<% tp.date.tomorrow() %>(not available)
File title<% tp.file.title %>{{title}}
Custom var(use Templater user scripts){{varname}} + --var varname=value

Recommendation: Use fallback syntax for portability. Use Templater only when you need dynamic features (date calculations, file system access).

Interactive Mode

Terminal

In terminal mode, the interactive wizard guides you through template creation and management.

Claude Code / Non-Interactive

When called without a terminal (e.g., in Claude Code), JSON is returned:

{
  "interactive_required": true,
  "action": "create",
  "config_schema": {...}
}

Use --config='...' or --yes to pass values directly.

Exit Codes

  • 0: Success
  • 1: Error (template not found, creation failed, etc.)

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.