fancy-kanban
Generate valid fancy-kanban boards — markdown-embedded kanban boards with typed fields, swimlanes, workflow rules, and card face configuration for Obsidian and compatible tools
Install / Use
npx skills add robertoallende/fancy-kanbanInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
AutomationSupported Platforms
Tags
Our assessment of fancy-kanban
fancy-kanban scores 80/100 on our quality scale, 2511th of 2,872 Automation skills we index.
Its SKILL.md is 14 KB long, well organised into 27 sections with 13 code examples: a thorough specification that gives an agent plenty to work with.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- The repository was last updated about 2 months ago, so fancy-kanban is actively maintained.
- Our last check on 2026-10-19 found the source still online.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 80/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-28. Automated pattern scan on 2026-09-28. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
fancy-kanban compared with similar skills
All 4 of these similar skills score higher than fancy-kanban; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| fancy-kanban (this skill)by robertoallende | 80 | 0 | 2mo ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 109.6k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 98.8k | 1d ago | MCP Server |
| rufloby ruvnet | 100 | 81.1k | today | MCP Server |
| algorithmic-artby anthropics | 100 | 177.9k | 45d ago | SKILL.md |
Frequently asked questions
- How do I install fancy-kanban?
- Run
npx skills add robertoallende/fancy-kanban. The install tabs above show the steps for each supported agent. - Which AI agents does fancy-kanban work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is fancy-kanban safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It declares no license and scores 80/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is fancy-kanban still maintained?
- The repository was last updated about 2 months ago, so fancy-kanban is actively maintained.
Skill content
View source on GitHubname: fancy-kanban description: Generate valid fancy-kanban boards — markdown-embedded kanban boards with typed fields, swimlanes, workflow rules, and card face configuration for Obsidian and compatible tools
Fancy Kanban Board Schema
A self-contained specification for the markdown-based kanban board format. Any app that reads and writes files following this schema will produce compatible boards.
Overview
Each board lives inside a fenced code block with the identifier fancy-kanban. This means:
- A board can be embedded anywhere in a note, alongside prose, links, and other content
- A note may contain zero, one, or multiple boards
- A file consisting of a single board block is a standalone board file
- Without the plugin installed, the block renders as an unstyled code block — the raw text remains fully human-readable
The block contains two sections separated by ---:
- A config section (YAML-like) defining fields, workflow, and view options
- A markdown table containing the data rows
Complete Example
```fancy-kanban
---
title: My Board
fields:
- name: title, type: Text, label: Title
- name: status, type: Select, options: inbox|doing|done, label: Status, default: inbox
- name: responsible, type: Text, label: Responsible
- name: start_date, type: Date, label: Start Date
- name: notes, type: Textarea, label: Notes
- name: effort, type: Number, label: Effort
- name: docs, type: Link, label: Docs
- name: team, type: Select, options: frontend|backend, label: Team
card_fields: responsible, effort
lanes: team
workflow: inbox→doing, inbox→done, doing→done, doing→inbox, done→doing, done→inbox
---
| _id | Title | Status | Responsible | Start Date | Notes | Effort | Docs | Team |
|--------|----------------|--------|-------------|------------|----------------------------|--------|-----------------------|----------|
| x7k2a1 | Fix login bug | inbox | Alice | 2026-01-15 | Needs investigation | 3 | | backend |
| m3p9b2 | Refactor auth | doing | Bob | | Multi-line\<br\>content here | 5 | design.md | backend |
| q1r4c3 | Setup CI | done | | 2026-01-01 | | 1 | setup.md\|guide.md | frontend |
```
Block Structure
The fenced block contains exactly two sections divided by a --- line:
```fancy-kanban
---
{config}
---
{markdown table}
Everything before the first `---` is ignored (reserved for future use). Everything between the two `---` lines is the config. Everything after the second `---` is the table.
## Config Section
YAML-like key-value pairs. Parsed line-by-line.
### Keys
| Key | Required | Default | Description |
|-----|----------|---------|-------------|
| `title` | yes | — | Human-readable board name |
| `fields` | yes | — | List of field definitions (see below) |
| `version` | no | `1` | Format version written by the plugin; boards with a version higher than the current plugin supports open in read-only mode |
| `workflow` | no | all transitions allowed | Comma-separated `from→to` pairs |
| `lanes` | no | none | Field name to use as the swimlane grouping dimension |
| `card_title` | no | auto-detect | Field name to use as the card heading; set to empty string to show no heading |
| `card_fields` | no | none | Ordered comma-separated list of secondary fields to display below the card heading |
| `card_labels` | no | `true` | Set to `false` to hide the label prefix on secondary card fields |
| `card_limit` | no | `0` (no limit) | Maximum number of cards shown per column; cards beyond this count are hidden behind a "Show more" button |
### `card_title`
```yaml
card_title: summary
Controls which field is rendered as the card heading:
- Absent (default): the first non-
_id, non-column field is used automatically - Set to a field name: that field's value appears as the heading
- Set to empty string (
card_title:): no heading is shown; the card displays only secondary fields
card_fields
card_fields: priority, due, docs
An ordered, comma-separated list of secondary field names to display below the card heading. These appear as labelled rows beneath the title.
Default behaviour: when card_fields is absent the card shows only the heading field. Existing boards with no card_fields key are unaffected.
Unknown names: field names that do not match any defined field are silently ignored at render time. Removing a field from fields: automatically hides it from the card face without a parse error.
Link fields: when a Link field is included in card_fields, its items are rendered as a horizontal list of clickable links on the card face. Vault paths open in a new tab; external URIs open in the browser.
card_labels
card_labels: false
When set to false, the label prefix is omitted from secondary field rows on the card face — only the value is shown. Defaults to true (labels visible). The key is only written to the config when its value is false.
card_limit
card_limit: 5
When set to a positive integer, each column shows at most that many cards. Cards beyond the limit are hidden and a Show more (N) button appears at the bottom of the column. Clicking it reveals all remaining cards without reloading the board. Setting card_limit: 0 or omitting the key disables limiting entirely.
This is particularly useful for boards where the done column accumulates many completed cards over time — the most recently added cards remain visible at a glance, while older history collapses out of the way.
lanes
When set to a field name (must be a Select field), the board renders as a matrix:
- Columns — driven by the
statusfield'soptionsorder - Swimlane rows — driven by the
lanesfield'soptionsorder
Cards with no value for the lanes field appear in an Unassigned pseudo-lane at the bottom. Changing lanes is a view-config change only — no row data is affected.
Field Definitions
Each entry in the fields list is a comma-separated set of key: value pairs on a single line, prefixed with - :
fields:
- name: title, type: Text, label: Title
- name: status, type: Select, options: inbox|doing|done, label: Status, default: inbox
Field ordering convention: list title first, then status, then additional fields. The table column order in the data section mirrors the field definition order, and the auto-detected card heading resolves to the first non-_id, non-column field — so placing title first ensures predictable heading resolution without needing an explicit card_title key.
Field Properties
| Property | Required | Description |
|----------|----------|-------------|
| name | yes | Internal identifier. Lowercase, underscores for spaces. |
| type | yes | One of: Text, Textarea, Date, Number, Select, Link |
| label | yes | Human-readable column header. Must match the markdown table header exactly. |
| options | Select only | Pipe-separated (\|) list of allowed values |
| colors | Select, optional | Pipe-separated name=hex pairs assigning a background color to each option (e.g. High=#e74c3c\|Low=#27ae60). Options without an entry render as plain text. |
| default | no | Default value for new cards |
Field Types
| Type | Storage Format | Description |
|------|----------------|-------------|
| Text | Plain string | Single-line text |
| Textarea | String with <br> for newlines | Multi-line text |
| Date | YYYY-MM-DD | Calendar date |
| Number | Integer or decimal string | Numeric value |
| Select | One of the options values | Constrained choice; options may carry hex colors via the colors property |
| Link | <br>-separated list of paths or URIs | Vault-root-relative paths (notes/doc.pdf) or external URIs (https://…, ftp://…, mailto:…) |
Special Field Names
| Name | Role |
|------|------|
| title | Primary display field. Should be listed first in fields:. Used as the auto-detected card heading when card_title is not set. |
| status | Required. Kanban column field. Must be type: Select. Cards are grouped into columns by this value. Column order follows options order. |
All other fields are secondary — displayed as card metadata when listed in card_fields.
Item Identity
Every card has a stable hidden ID stored in a _id column in the markdown table. The UI never displays this column.
- Generated on card creation: short random alphanumeric string (e.g. 8 characters:
x7k2a1b3) - Preserved through all serialization round-trips
- Survives reordering, drag-and-drop, and field renames
- Used internally for all card operations (move, edit, delete)
Because identity is ID-based and not derived from content, renaming a card's title has no effect on its identity.
Workflow
Defines which status transitions are allowed in the UI:
workflow: inbox→doing, inbox→done, doing→done, doing→inbox, done→doing, done→inbox
- Comma-separated list of
from→topairs (arrow:→, U+2192) - If
workflowis omitted, all transitions between status options are permitted - Used to constrain UI choices (e.g. a "Move to" menu only shows valid targets)
- Hand-edits to the raw table bypass workflow validation by nature of being plain text
Board Templates
When creating a new board, a set of predefined templates provides common status option sets. Templates only pre-fill the status field options and workflow — all other fields are added by the user.
| Template | Status options | Default workflow |
|----------|---------------|------------------|
| Basic | inbox \| doing \| done | All transitions |
| Software | backlog \| todo \| in-progress \| review \| done | Forward + one step back |
| Content | idea \| draft \| review \| published | Forward only |
| Project | planning \| active \| blocked \| complete | All except → planning |
| Custom | User-defined | User-defined |
Selecting Custom opens a free-form editor for status options and workflow transitions.
Markdown Table
The table appears immediately after the closing --- of the config section.
Structure
| _id | Header1 | Header2 |
|--------|---------|---------|
| abc123 | value | value |
- Header row — first column is always
_id; remaining columns are field labels in schema definition order - Separator row — standard markdown table separator
- Data rows — one row per card;
_idcell contains the card's stable ID
Rules
- Column order in the table must match field definition order (after
_id) - Empty cells are valid (field value = empty string)
- Row order within a status group is the display order
- An empty table (header + separator, no data rows) is valid
- The
_idcolumn is always first and is never shown in the rendered board
Escaping
| Character in value | Escaped as |
|-------------------|------------|
| \| (pipe) | \| (backslash-pipe) |
| Newline | <br> |
| Carriage return | <br> |
When reading: \| → |, <br> → newline.
When writing: | → \|, any newline → <br>.
Parsing Algorithm
- Extract the raw string between the opening and closing fences of the
fancy-kanbanblock - Split on the first
---line to locate the config section start - Split on the second
---line to separate config from table - Parse config line-by-line: extract
title,version,fields,workflow,lanes,card_title,card_fields,card_labels,card_limit - For
fields, collect lines starting with-and parse each as comma-separatedkey: valuepairs;colorsis decoded as pipe-separatedname=hextokens - Find
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
109.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Scrapling
98.8k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
ruflo
81.1k🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
