Obsidian kanban skill
Portable Claude Code skill for managing Kanban boards as plain-markdown files in any project. Compatible with Obsidian's obsidian-kanban plugin, but works without it.
npx -y skills add HristovCodes/obsidian-kanban-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 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 author says it does
Copied from the file, not written here
Create and edit Obsidian Kanban board markdown files correctly. Use when asked to create, modify, or work with Kanban boards, task boards, or feature planning boards in any project.
SKILL.md
19.5 KB, ~4.8k tokens by cl100k_base, as published. Nobody here has run it
Obsidian Kanban Skill
Create and edit markdown-backed Kanban boards for the obsidian-kanban plugin (v2.0.51). Boards are plain .md files that Obsidian renders as interactive Kanban boards.
Where boards live
This skill is drop-in portable: copy the whole obsidian-kanban/ folder into any project's
.claude/skills/ and it works with no edits. Nothing below hardcodes a project path.
All boards, issue folders, and context files are created inside the current project, in a
top-level kanban/ directory:
<project_root>/kanban/
Resolve <project_root> as the directory containing .claude/ (equivalently, the git
repository root). Never write boards outside the project, and never into an Obsidian vault
elsewhere on the machine — a project's boards travel with the repo.
Each board gets its own folder named after the board, and everything for that feature lives inside it:
<project_root>/kanban/<board_name>/<board_name>.md
<project_root>/kanban/<board_name>/<board_name>_issues/*.md
<project_root>/kanban/<board_name>/<board_name>_context.md
Create kanban/ and the per-board folder if they do not exist. Do not write boards loose
in kanban/.
kanban/README.md is the index across all boards — see "Board index (README)" below.
If a project has pre-existing boards sitting loose in kanban/, leave them where they are
unless asked to move them; when you do move one, move the board, its _issues/ folder and its
_context.md together into kanban/<board_name>/.
The read-only reference material (the worked example and the plugin guides) ships inside
this skill folder and is referenced by paths relative to the skill directory. Read it there;
write new boards into the project's kanban/ directory.
First run in a project: bootstrap
Every time this skill is invoked, check these four things in the project:
<project_root>/kanban/exists<project_root>/kanban/README.mdexists (the board index)<project_root>/CLAUDE.mdhas a heading mentioning Kanban<project_root>/kanban/.obsidian/exists (vault config)
If any is missing, read SETUP.md in this skill directory and follow it for the missing
pieces before creating or editing any board. If all four exist, skip SETUP.md entirely and
proceed with the rules below.
Item 3 matters most: without a Kanban section in CLAUDE.md, future sessions will not know
this skill applies and will improvise a format. If a section is already present, leave it
alone — do not reword it.
Board File Structure
Every board file must follow this exact format:
---
kanban-plugin: board
---
## Lane Title
- [ ] Card one
- [ ] Card two
- [x] Completed card
## Another Lane (3)
- [ ] Card with a [[Link to note]]
- [ ] Card with date @{2024-01-15}
## Done
**Complete**
- [x] Finished task
%% kanban:settings
{"kanban-plugin":"board"}
%%
Key structural rules
- Frontmatter must contain
kanban-plugin: board— this is how the plugin identifies a file as a kanban board - Lanes are
##headings (H2). Each lane is a column on the board - Cards are list items with checkboxes:
- [ ](incomplete) or- [x](complete) - WIP limits are set in parentheses after the lane title:
## In Progress (5)limits that lane to 5 cards. The counter turns bold when exceeded - Complete lane — add
**Complete**on its own line before cards in a lane to mark it as the "done" lane. Cards moved here get auto-checked - Archive — archived cards appear at the bottom of the file (only visible in markdown mode). Controlled by the "Maximum number of archived cards" setting (-1 for unlimited)
- Board settings block goes at the very end of the file wrapped in
%% kanban:settings ... %%
Card Content: Multi-line Cards and Issue Links
Cards support multi-line content. Continuation lines after the - [ ] Title line must be indented with one TAB character. The plugin renders all indented lines as the card body.
Preferred pattern: title + summary + link to issue file
For boards tracking implementation tasks, always use this pattern to keep the board file small while providing full detail:
- Card title: short descriptive name
- One-line summary: what this task does (tab-indented)
- Link to issue file:
[[<board_name>_issues/<issue>]]with full implementation details (tab-indented)
Create a separate .md file per card in a <board_name>_issues/ folder next to the board. These issue files are regular Obsidian notes (no kanban frontmatter) and can contain full implementation plans, code snippets, SQL, file lists, etc.
Naming convention
Board folders, board files, issue folders and context files use snake_case, and all four
share the same <board_name> stem:
| Item | Pattern | Example |
|---|---|---|
| Board folder | <board_name>/ | web_rewrite/ |
| Board file | <board_name>.md | web_rewrite.md |
| Issues folder | <board_name>_issues/ | web_rewrite_issues/ |
| Context file | <board_name>_context.md | web_rewrite_context.md |
| Issue file | {number}-{kebab-case-title}.md | 1.1-database-schema.md |
Issue files use kebab-case after the number — this is the one deliberate exception to snake_case, matching the worked example.
Worked example
A complete example ships inside this skill folder — read these files before creating a new
board (they are read-only references; write your new board into <project_root>/kanban/):
- Board:
example_board.md - Context file:
example_board_context.md - Issue files:
example_board_issues/1.1-database-tables.mdexample_board_issues/1.2-api-endpoints.mdexample_board_issues/1.3-login-page.md
File structure
<project_root>/kanban/
├── README.md ← index across all boards
└── <board_name>/ ← one folder per board
├── <board_name>.md ← kanban board (compact cards with summaries + links)
├── <board_name>_issues/
│ ├── 1.1-database-tables.md ← full implementation spec
│ ├── 1.2-api-endpoints.md
│ └── 1.3-login-page.md
└── <board_name>_context.md ← persistent memory / feature documentation
The _issues suffix ties the folder to its board. The _context.md file preserves working memory across sessions.
Card links stay relative to the board file ([[<board_name>_issues/<issue>]]), since the issues folder is still a sibling of the board file inside the board folder.
Context file (feature memory)
Every board has a companion <board_name>_context.md file in the same folder. This file is persistent memory — it preserves architecture decisions, key files, implementation patterns, and current state across Claude Code sessions. It also serves as long-term feature documentation.
At session start: Read the context file before doing any work. It tells you everything about the feature.
After completing any task: Update the context file — add decisions, files, patterns, update task history and current state.
When creating a new board: Also create its _context.md file. Use example_board_context.md (next to this skill file) as the template. Fill in the Feature Overview; other sections populate as work progresses.
Context file sections:
- Feature Overview — what this feature does, why, where it lives
- Architecture & Decisions — key decisions with rationale
- Key Files & Locations — files created/modified, grouped logically
- Implementation Notes — patterns, conventions, gotchas
- Task History — table of tasks with summary and status
- Current State — what's working, what's pending, known issues
Board index (README)
kanban/README.md is a single-page overview of every board, so a session can get context
without opening each board. It holds, per board: a link to the board file, a one-word status,
a done / total card count, the next actionable card, and 3-5 lines on what the feature is and
where it stands. Plus a "Loose files" section for anything in kanban/ that is not a board.
Keep it short. It is an index, not documentation: the whole file should stay readable in one
screen or two. Detail belongs in <board_name>_context.md, never here. Do not copy decisions,
file lists or task tables into it.
Update kanban/README.md whenever:
- a board is created, renamed, finished or abandoned (add/remove/restate its row and blurb)
- cards are completed or moved, so the
done / totalcount or the "Next up" column changes - a board's overall status changes (planned -> in progress -> shipped)
Refresh the _Last updated:_ YYYY-MM-DD line on every edit. If the README does not exist yet in
a project, create it via SETUP.md (Step 3) as part of bootstrap.
Working a board: picking up and completing tasks
At session start, before doing any work on a feature that has a board:
- Read
kanban/README.mdfor the cross-board picture - Read the board file to see current task states
- Read
<board_name>_context.md- this tells you everything about the feature: architecture, files, patterns, current state - Read issue files only for tasks you are actively working on
To pick up a task: move the card's - [ ] line (and all its TAB-indented content) from its current lane (e.g. ## To Do) into the ## In Progress lane.
To mark a task complete: change - [ ] to - [x] and move the card into the ## Done lane (the one with **Complete** on the line after the heading).
Then update the linked issue file: if the card links to an issue spec (e.g. [[<board_name>_issues/1.1-task-spec]]), open it and update its Status field to the new state (In Progress, Done).
Then update the context file:
- Add any new architecture decisions to "Architecture & Decisions"
- Add or update entries in "Key Files & Locations"
- Add any new patterns or gotchas to "Implementation Notes"
- Update the task's row in "Task History"
- Update "Current State" to reflect what is working and what is next
Then update kanban/README.md if the board's counts, "Next up" or status changed.
When to use each approach
| Scenario | Card format |
|---|---|
| Simple task (1-2 lines of context) | Title + tab-indented summary, no spec file |
| Implementation task with details | Title + one-line summary + [[spec link]] |
| Completed/archived cards | Title only (details no longer needed on the card) |
Multi-line card syntax reference
- [ ] Card title goes here
Second line (indented with ONE TAB)
Third line with **markdown** and `code`
[[Link to detailed spec]]
Important: Use actual TAB characters (\t), not spaces. The plugin serializes multi-line cards using tabs (or 4 spaces if the vault is configured for spaces, but tabs are the default).
Cards
Dates and times on cards
- Date trigger: typing
@(default) in a card opens the date picker. Dates are formatted using Moment.js format strings (default:YYYY-MM-DD) - Time trigger: typing
@@(default) opens the time picker. Only available on cards that already have a date - Dates can also be added via right-click > "Add a date"
Images in cards
Images are embedded using standard Obsidian syntax:
- [ ] Card with image ![[photo.png]]
When using images in linked note frontmatter, they must be wrapped in quotes (YAML quirk):
---
delivery-notes: "![[LinkToImage.png]]"
---
Inline Dataview fields do NOT require quotes:
delivery-notes:: ![[LinkToImage.png]]
Creating notes from cards
Right-click a card > "New note from card" creates a note using the configured Note template in the configured Note folder. The card then links to the new note.
Linked page metadata
Cards linking to notes can display that note's frontmatter or Dataview inline fields below the card. Configure which metadata keys to show in board settings under "Linked Page Metadata". Toggle "Field contains markdown" for fields with markdown content.
Gotcha: Links and image embeds in frontmatter must be wrapped in quotes to display correctly as linked metadata.
Settings
Settings can be configured globally (Settings > Kanban) or per-board (board header buttons or "More options" menu). Per-board settings override global ones.
Key settings
| Setting | Default | Purpose |
|---|---|---|
| Date trigger | @ | Character that opens date picker |
| Time trigger | @@ | Character that opens time picker |
| Date format | YYYY-MM-DD | Moment.js format for dates |
| Lane width | (plugin default) | Width of board columns |
| Note folder | vault default | Where "New note from card" saves files |
| Note template | none | Template for notes created from cards |
| Prepend/append new cards | append | Where new cards are inserted in a lane |
| Display card checkbox | on | Show/hide checkboxes on cards |
| Max archived cards | -1 | Limit archive size (-1 = unlimited) |
Critical Rules
- Run the bootstrap check on every invocation —
kanban/,kanban/README.md, the Kanban section inCLAUDE.md,kanban/.obsidian/; if any is missing, followSETUP.mdbefore touching any board (see "First run in a project" above) - Always include
kanban-plugin: boardin frontmatter — without it the file won't be recognized as a board - Use
##(H2) for lanes only — other heading levels are not recognized as lanes - Use
- [ ]/- [x]for cards — plain list items without checkboxes won't render as cards - Keep the settings block at the end — the
%% kanban:settings ... %%block must be the last thing in the file - Quote links and embeds in YAML frontmatter —
"![[image.png]]"and"[[note]]"need quotes in frontmatter fields - WIP limits use parentheses in lane title —
## Lane Name (N)where N is the limit number - Every board gets its own folder — create the board, its
_issues/folder and its_context.mdunder<project_root>/kanban/<board_name>/, never loose inkanban/and never outside the project - Use TAB-indented lines for multi-line card content — continuation lines must start with a TAB character
- Keep board files small — for detailed tasks, link to spec files instead of putting everything inline
- Always create a context file when creating a new board —
<board_name>_context.mdalongside the board file, usingexample_board_context.mdas the template - Update the context file after completing any task — add decisions, files, patterns; update task history and current state
- Keep
kanban/README.mdcurrent and short - refresh the board's row (status,done / total, next up) whenever it changes, and keep the whole file to a screen or two
Common Mistakes to Avoid
- Forgetting the
kanban-plugin: boardfrontmatter — file opens as a normal note - Using
#or###instead of##for lane headings - Using
-without[ ]for cards — they won't be interactive - Placing content after the
%% kanban:settings %%block - Unquoted embeds/links in YAML frontmatter fields
- Using spaces instead of TAB for multi-line card indentation
- Putting full implementation details inline on cards instead of linking to spec files
- Writing the board loose in
kanban/instead of inside its ownkanban/<board_name>/folder - Hardcoding an absolute path from another project instead of resolving
<project_root>/kanban/ - Creating boards in a project whose
CLAUDE.mdhas no Kanban section — the next session will not know the skill applies and will invent its own format - Skipping the bootstrap check, or copying the example board and
kanban-guides/into the project (they stay in the skill folder and are read from there) - Leaving
kanban/README.mdstale after finishing or adding cards - Letting
kanban/README.mdgrow into a second context file instead of staying a one-screen index - Naming the board folder differently from the board file (both must be
<board_name>) - Forgetting to create a
_context.mdfile when creating a new board - Forgetting to update the context file after completing a task
- Not reading the context file at session start — this is the feature's memory
Reference Guides
Full plugin documentation lives in kanban-guides/ next to this skill file (paths below are relative to the skill directory). Consult these for detailed information:
Overview
kanban-guides/Obsidian Kanban Plugin.md— Plugin overview and links
How-to Guides
kanban-guides/How do I/Create a Kanban board.md— Creating boards (UI methods)kanban-guides/How do I/Add a date to a card.md— Date picker usagekanban-guides/How do I/Add a time to a card.md— Time picker usagekanban-guides/How do I/Add an image to a card.md— Embedding images and metadata imageskanban-guides/How do I/Create notes from cards.md— Creating linked notes from cardskanban-guides/How do I/Install the plugin.md— Installation instructionskanban-guides/How do I/Search a Kanban board.md— Searching with Ctrl/Cmd+Fkanban-guides/How do I/Set a WIP Limit.md— Work-in-progress limits on laneskanban-guides/How do I/View a Kanban's archive.md— Viewing archived cards in markdown mode
FAQs
kanban-guides/FAQs/Frontmatter limitations & gotchas.md— YAML quoting rules for links/images
Settings Reference
kanban-guides/Settings/Local vs. global settings.md— Per-board vs global settingskanban-guides/Settings/Date trigger.md— Date picker trigger characterkanban-guides/Settings/Time trigger.md— Time picker trigger characterkanban-guides/Settings/Date format.md— Moment.js date output formatkanban-guides/Settings/Date display format.md— How dates appear on cardskanban-guides/Settings/Time format.md— Time output formatkanban-guides/Settings/Lane width.md— Column width settingkanban-guides/Settings/Note folder.md— Folder for notes created from cardskanban-guides/Settings/Note template.md— Template for new notes from cardskanban-guides/Settings/Linked page metadata.md— Displaying note metadata on cardskanban-guides/Settings/Display card checkbox.md— Toggle card checkboxeskanban-guides/Settings/Prepend append new cards.md— New card insertion positionkanban-guides/Settings/Board header buttons.md— Board toolbar buttonskanban-guides/Settings/Maximum number of archived cards.md— Archive size limitkanban-guides/Settings/Show relative date.md— Relative vs absolute dateskanban-guides/Settings/Hide card display dates.md— Hide date badges on cardskanban-guides/Settings/Hide card display tags.md— Hide tag badges on cardskanban-guides/Settings/Hide dates in card titles.md— Hide date text in titleskanban-guides/Settings/Hide tags in card titles.md— Hide tag text in titleskanban-guides/Settings/Link dates to daily notes.md— Link date badges to daily noteskanban-guides/Settings/New line trigger.md— Key for new lines in cardskanban-guides/Settings/Add date and time to archived cards.md— Timestamp archived cardskanban-guides/Settings/Archive date time format.md— Archive timestamp formatkanban-guides/Settings/Archive date time position.md— Where archive timestamp appearskanban-guides/Settings/Archive date time separator.md— Archive timestamp separator
Gives 0 of the 12 instructions most note taking skills give in ~4.8k tokens
Counted across 686 of the 876 authors here whose files we hold, read 2026-08-06
- include a visual element on every slidein 44 of 686, across 13 files
- use wikilinks for internal vault linksin 35 of 686, across 11 files
- commit to a single visual motif across every slidein 34 of 686, across 9 files
- read pptxgenjs guide before creating presentations from scratchin 30 of 686, across 6 files
- keep 0.5 inch minimum marginsin 30 of 686, across 7 files
- use subagents to visually inspect rendered slidesin 30 of 686, across 6 files
- re-verify affected slides after every fixin 27 of 686, across 5 files
- run content QA checks before declaring successin 26 of 686, across 3 files
- Use Markdown links for external URLs onlyin 26 of 686, across 10 files
- pick a bold topic specific color palettein 24 of 686, across 2 files
- read editing guide before editing existing presentationsin 23 of 686, across 1 file
- use one dominant color across all slidesin 23 of 686, across 1 file
Said here and by no other author read
- Create boards inside the project directory
- Run bootstrap checks before creating or editing boards
- Use H2 headings for lanes
- Use list items with checkboxes for cards
- Create a separate issue file per detailed card
- Use snake_case for board folder and file names
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.