Skip to content
Agentmart
Submit a tool

ObsidianTemplates

Obsidian template management — dual-tree creation, editing, rendering, frontmatter schemas, dynamic query blocks, Templater config updates.

Skill by N4M3Z

IndexedEUPL-1.2★ 2
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/n4m3z-obsidiantemplates

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Obsidian template management — dual-tree creation, editing, rendering, frontmatter schemas, dynamic query blocks, Templater config updates. USE WHEN creating templates, editing templates, rendering templates, modifying template schemas, updating Templater folder mappings, adding query blocks, or checking template compliance.

Use cases: security, writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/obsidiantemplates

What's inside

Skill name
ObsidianTemplates
Description
Obsidian template management — dual-tree creation, editing, rendering, frontmatter schemas, dynamic query blocks, Templater config updates. USE WHEN creating templates, editing templates, rendering templates, modifying template schemas, updating Templater folder mappings, adding query blocks, or checking template compliance.
License
EUPL-1.2
Instructions
291 lines in SKILL.md · view on GitHub

Agent Skills spec issues

  • name: only lowercase letters, digits and single hyphens allowed

Files (2)

  • SKILL.md
  • SKILL.yaml

SKILL.md (first lines)

# ObsidianTemplates

Manages the Obsidian template lifecycle: authoring templates across the two template trees, maintaining frontmatter schema conventions, and keeping the Templater plugin config in sync.

## Template Architecture

Two top-level trees, split by execution model:

| Tree | Role | Syntax |
|------|------|--------|
| `Templates/` | Standard templates — the agent copies schemas from here when creating typed notes | Plain markdown; Journals-plugin placeholders (`{{date}}`, `{{title}}`) allowed |
| `Templater/` | Dynamic templates — executed in-app by the Templater plugin (folder templates, hotkeys, journals) | `<% %>` blocks, moment.js, `tp.*` |

The agent never pastes `<% %>` syntax into a note; `Templater/` files are for in-app execution only. A template may exist in both trees: body structure (sections, embeds, query blocks) must be identical, only dynamic field expressions differ.

## Tree Layout

```
Templates/               standard
  Blocks/  Charts/  Domains/  Journal/  Library/  Maps/  Projects/  Zettelkasten/
  Default.md
Templater/               dynamic (in-app)
  Blocks/  Journal/  Library/  Processors/  Projects/
  Default.md
```

Folder mirrors destination: `Templates/Library/Book.md` → notes in `Library/Books/`, `Templates/Journal/Daily.md` → `Journal/Daily/`.

### Plugin syntax comparison

| Feature | Core Templates | Journals plugin | Templater |
|---------|---------------|-----------------|-----------|
| Title | `{{title}}` | `{{title}}` | `<% tp.file.title %>` |
| Date | `{{date:FORMAT}}` | `{{date:FORMAT}}` | `<% tp.date.now("FORMAT") %>` |
| Date offsets | Not supported | `{{date-1d:FORMAT}}`, `{{date+1d:FORMAT}}` | `moment().add()` |
| Week number | Not supported | `{{date:YYYY-[W]ww}}` | `moment().format("YYYY-[W]ww")` |
| JavaScript | Not supported | Not supported | `<%* ... %>` blocks |
| Include | Not supported | Not supported | `<% tp.file.include("[[...]]") %>` |

### Cascading with `tp.file.include()`

Reusable logic blocks live in `Templater/Blocks/`. Templates include them via:

```
<% tp.file.include("[[Block Name]]") %>
```

Templater resolves `<%* tR += %>` blocks through includes — cascading works. Use this for personal content (Key Results injection, habit trackers), query blocks shared across templates, and any logic that varies per-user.

**Pitfalls:**

- **Ambiguous file resolution**: `tp.file.find_tfile("Name")` resolves by basename — fails silently when multiple files share the same name. Use `app.vault.getAbstractFileByPath("full/path/to/File.md")` for explicit resolution.
- **Arrow functions in `<% %>`**: Templater's parser cannot handle `=>` inside `<% %>` tags (`Unexpected token '>'`). Use `<%* %>` execution blocks for multi-line logic.
- **Whitespace from includes**: `tp.file.include()` preserves leading/trailing whitespace from the included file. Use `.trim()` on `tR +=` output to prevent extra blank lines.
- **Linter reformats frontmatter**: After rendering, the Obsidian Linter may reformat quotes, field order, and timestamps. When editing rendered notes programmatically, use full-overwrite writes instead of incremental edits to avoid stale-content errors.

## Frontmatter Schema Registry

### Universal Fields (all templates)

```yaml
title:
aliases: []
tags:              # system/structural only (type/*, note/*)
keywords:          # wikilinks for topics/categories
  - "[[Topic]]"
description:
icon:              # Lucide icon name (LiCalendarFold, LiUser, etc.) — never emoji
image:
cssclasses:
created:           # YYYY-MM-DD HH:mm Z (empty in standard, Templater fills in dynamic)
updated:
related:
  - "[[Note]]"
collection:        # parent collection wikilink
root:              # parent hierarchy wikilink
```

### Tag Conventions

Primary tag: `type/<noun>` — what the note IS.
Secondary tag: `note/<category>` — zettel provenance (optional, for notes in the knowledge pipeline).

```
type/journal    note/daily | note/weekly | note/monthly | note/quarterly | note/yearly
type/contact    (no secondary — reference data, not zettel)
type/project    (no secondary)
type/book       note/literature
type/event      (no secondary)
type/collection (no secondary)
type/skill      (no secondary)
type/item       note/permanent
type/topic      note/permanent
type/repository note/literature
type/exercise   note/literature
```

DEPRECATED — do not use in new templates:
- `file/*` (use `type/*`)
- `schema/*`, `process/*`, `project/*`, `book/*` (use frontmatter fields for status/metadata)
- `lang/*` (remove — language is obvious from content)

### Category-Specific Schemas

**Journals**

```yaml
journal: Daily | Weekly | Monthly | Quarterly | Yearly
timeframe: YYYY-MM-DD
```

**Contacts**

```yaml
contact.email:
contact.linkedin:
contact.phone:
contact.website:
location.address:

From N4M3Z/forge-obsidian, EUPL-1.2.

More from N4M3Z/forge-obsidian

Signals

Stars
2
Forks
0
Open issues
1
Last commit (this folder)
Jun 17, 2026 (4 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
EUPL-1.2
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from N4M3Z

Cite this page

ObsidianTemplates skill. Agent Mart. https://agentmart.dev/skills/n4m3z-obsidiantemplates (last updated 2026-10-24)