impulse-md-generator

Formats documents as clean, organized Obsidian notes with proper structure and links.

Installation
Run `npx skills add "https://github.com/lowcoware/impulse" --skill "impulse-md-generator"` to install this skill, then follow its SKILL.md instructions for my next request.

Paste this into Claude Code, Cursor, or any agent that can run commands.

SKILL.mdShow the author's original SKILL.md
---
name: impulse-md-generator
description: >
  Formats generated Markdown as valid Obsidian Flavored Markdown:
  properties/frontmatter, wikilinks, callouts, embeds, tags, Mermaid,
  footnotes. Core Obsidian only, zero plugin dependency. Governs HOW a doc
  is formatted, not WHAT gets written or WHETHER a doc-tree exists. Voice
  from impulse-humanizer. Triggers: "/impulse-md", "оформи в obsidian", "сделай
  отчёт в md", "красиво оформи документ", "obsidian формат", "obsidian
  markdown".
---

# impulse-md-generator

**Most load-bearing rule: this skill governs HOW a doc is formatted, never
WHAT gets written or WHETHER it should exist.** Formatting layer, not a
documentation-policy layer. This skill answers "how do I write this note so
it renders well in Obsidian" — the questions "should this note exist" and
"what folder structure does this project need" belong to whoever called this
skill.

## Boundary — read this before generating anything

- impulse-backend's `docs.md` bans forced `docs/` trees, «Связи» sections, C4
  diagrams, glossary files. This skill doesn't relax that ban — if the
  caller wants a minimal README, format a minimal README beautifully and
  keep it that size, even though callouts and wikilinks are available.
- ADR/report/retro cadence, WHEN a doc gets written, WHERE it lives — owned
  by impulse-project-management. This skill formats what impulse-project-management
  decides to write.
- Voice belongs to `impulse-humanizer` (its trigger #2 is exactly this:
  automatic inside doc generation), not to this skill. This skill formats
  structure; impulse-humanizer supplies the words.

## Workflow

1. **Confirm doc type** (ADR / service README / status report / runbook /
   ad-hoc note) → pick the property schema and section skeleton from
   `references/doc-types.md`. No matching type → plain structured Markdown,
   properties still apply (title, tags at minimum).
2. **Frontmatter first.** Properties block is the very first thing in the
   file, no blank line above it. See `references/properties.md`.
3. **Write content** with standard Markdown structure, Obsidian syntax where
   it earns its place — see `references/style.md` for when a callout beats
   plain text and when Mermaid beats prose.
4. **Link instead of duplicating.** A fact that lives in another note gets a
   `[[wikilink]]`, not copy-pasted. External URLs get plain `[text](url)`.
5. **Voice pass.** Hand the draft to impulse-humanizer (or apply its
   `references/voice-profile.md` inline) before calling it done — genre
   level per `impulse-humanizer/references/genre-calibration.md`'s impulse-suite
   section.
6. **Verify structurally** — frontmatter parses as YAML, every `[[wikilink]]`
   target is spelled the way the target note is actually named, callout
   syntax has no space before `[!type]`.

## Core syntax — quick reference

Full detail in `references/syntax.md`, `references/callouts.md`,
`references/embeds.md`. The essentials:

| What | Syntax | Note |
|---|---|---|
| Internal link | `[[Note Name]]` / `[[Note#Heading]]` / `[[Note\|Display]]` | Obsidian tracks renames; use for anything inside the vault |
| External link | `[text](url)` | Always plain link for anything outside the vault, never a wikilink |
| Embed | `![[Note]]` / `![[image.png\|300]]` | `!` prefix pulls content inline, stays live-updated |
| Callout | `> [!type] Title` | icon+color box; pick from the type table, stick to types listed there |
| Tag | `#tag`, `#nested/tag` | inline or in frontmatter `tags:` — not a substitute for a real property |
| Highlight | `==text==` | Obsidian-only, sparingly — a highlighted paragraph highlights nothing |
| Comment | `%%hidden%%` | hidden in reading view; for editor-only notes, not secrets |
| Footnote | `text[^1]` + `[^1]: note` | for asides that would break the paragraph's flow |
| Math | `$inline$` / `$$block$$` | MathJax, standard LaTeX |
| Diagram | ` ```mermaid ` fenced block | native render, no plugin. See `references/style.md` for when it's worth the lines |

## Properties — the one mandatory habit

- Every generated note gets frontmatter: at minimum `title`, `tags`.
  Doc-type schemas add more (`references/doc-types.md`).
- Keep properties consistent across notes. This isn't decoration — a vault
  with consistent properties gets Obsidian's core **Bases** feature for
  free: a filterable/sortable table view over notes, zero query language,
  zero plugin install, built entirely from properties this skill already
  writes.
- Build the actual Bases file only when someone asks for a dashboard (ladder
  rung 1 — consistent properties keep that option free later, but the file
  itself stays speculative until asked for).

## Zero plugin dependency

No Dataview query blocks, no Templater syntax, no community-plugin-only
features. Everything in this skill renders in a stock Obsidian install.
`Bases` (mentioned above) is the one exception worth knowing about — it
shipped as a **core** plugin, not a community one, so it doesn't violate
this rule.

## References — load on demand

| File | Covers | Load when |
|---|---|---|
| references/syntax.md | full core syntax: wikilinks, tags, comments, highlight, math, Mermaid, footnotes | any generation task, first read |
| references/properties.md | property types, YAML rules, shared property vocabulary (per-doc-type frontmatter schemas live in doc-types.md) | writing frontmatter |
| references/callouts.md | full callout type table, aliases, nesting, foldable syntax | deciding which callout type fits |
| references/embeds.md | note/image/PDF/audio/block embeds, sizing | pulling content from another note |
| references/doc-types.md | ADR / service README / status report / runbook templates: property schema + section skeleton (ADR skeleton is owned by impulse-project-management/adr.md) | starting a new doc of a known type |
| references/style.md | when a callout beats plain text, when Mermaid earns its lines, wikilink/folder conventions, MOC pattern | any judgment call on "should I use X here" |
| references/showcase.md | one file exercising every syntax element in this skill — all 13 callout types, every wikilink/embed form, tags, comments, highlight, math, Mermaid, footnotes, GFM tables/checklists. Doubles as this skill's own self-generated reference artifact (properties + syntax written by this skill's own rules, not hand-templated) — the reference-artifact directive is already satisfied here, not a gap | open in Obsidian to sanity-check rendering, or as a lookup when unsure a construct is spelled right |

## Adjacent skills

Same content-vs-format split, different delivery shape: an ongoing note in
an Obsidian vault is this skill's job; a standalone shareable single-file
HTML document (report, plan, diagram) is `impulse-artifact`'s. Where a note
LIVES, how it connects to the rest of the vault, MOCs, vault health, Canvas,
and Bases are `impulse-wiki`'s job — this skill formats the one note in front
of it, impulse-wiki maintains the vault it lives in.

## Before you finish

- Frontmatter is the first thing in the file, at minimum `title` and `tags`?
- Every `[[wikilink]]` spelled exactly as the target note is named, and
  every external URL is a plain `[text](url)`, not a wikilink?
- Draft has had a voice pass (impulse-humanizer or its voice profile
  applied inline)?
- Nothing here uses a community-plugin-only feature (Dataview, Templater)?
- Did this stay a formatting pass — no doc-tree, section, or file added
  that the caller didn't ask for?

If any answer is no, fix it before calling the doc done. Reminder: this
skill governs HOW the doc is formatted, never WHAT gets written or WHETHER
it should exist.

## Lineage

Core syntax reference adapted from [kepano/obsidian-skills](https://github.com/kepano/obsidian-skills) (MIT, Steph Ango / Obsidian). Doc-type schemas and style rules are original to impulse-suite.

Ships with 7 supporting files:

  • references/callouts.md
  • references/doc-types.md
  • references/embeds.md
  • references/properties.md
  • references/showcase.md
  • references/style.md
  • references/syntax.md

Mirrored from the author's public source. Install counts from the open skills registry.

The systems behind these skills get built for partners every week.

Partner with us