Kanban Studioâ€șMarkdown & JSON Reference
📝

Markdown & JSON Reference

Full schema reference for board editing

Übersicht

Hinter jedem Kanban-Board steht ein Klartext-Markdown-Dokument, das Sie lesen, schreiben, kopieren und einer Versionskontrolle unterziehen können. Das Dokument besteht aus zwei Abschnitten: einem maschinenlesbaren strukturierten Block, der die Board-Daten als JSON enthĂ€lt, und einem freien benutzerdefinierten Block fĂŒr Ihre persönlichen Notizen.

Schema v1JSON + MarkdownTrockenlaufsicher
💡

FĂŒhren Sie immer zuerst einen Trockenlauf durch

Bevor Sie auf „Übernehmen“ klicken, verwenden Sie die SchaltflĂ€che „Probelauf“, um Ihre Änderungen zu validieren. Das Backend meldet Fehler und eine Diff-Zusammenfassung, ohne Ihr Board zu Ă€ndern.

Dokumentstruktur

Ein vollstÀndiges Kanban-Markdown-Dokument besteht aus drei Teilen:

  • Eine fĂŒr Menschen lesbare Kopfzeile (Boardtitel, Generierungsnotiz)
  • Der Strukturierte Block – JSON-Daten zwischen HTML-Kommentarmarkierungen
  • Der Benutzerdefinierte Block – kostenloser Markdown (Notizen, Mermaid-Diagramme, Links)
board.md
# My Project Board

Generated by Kanban Markdown schema v1.

<!-- KANBAN:STRUCTURED:START -->
```kanban-structured
{
  "version": 1,
  "board": {
    "id": "board-abc123",
    "title": "My Project Board"
  },
  "columns": [
    { "id": "col-1", "title": "Backlog",     "color": "#64748b", "order": 0 },
    { "id": "col-2", "title": "In Progress", "color": "#6366f1", "order": 1 },
    { "id": "col-3", "title": "Done",        "color": "#10b981", "order": 2 }
  ],
  "tasks": [
    {
      "id": "task-1",
      "columnId": "col-2",
      "position": 0,
      "title": "Build authentication flow",
      "description": "Implement JWT login, register, and token refresh.",
      "priority": "high",
      "tags": ["backend", "security"],
      "assigneeIds": ["member-uuid-1"],
      "mentionMemberIds": ["member-uuid-2"],
      "estimatePoints": 5,
      "dueDate": "2025-03-15",
      "plannedStartAt": "2025-03-10",
      "plannedEndAt": "2025-03-15",
      "timeboxMinutes": 90,
      "isCompleted": false,
      "archivedAt": null,
      "checklist": [
        { "title": "Design DB schema",   "isDone": true  },
        { "title": "Write unit tests",   "isDone": false },
        { "title": "Deploy to staging",  "isDone": false }
      ]
    }
  ]
}
```
<!-- KANBAN:STRUCTURED:END -->

<!-- KANBAN:CUSTOM:START -->
## Team Notes

- Sprint ends Friday
- Backend review at 3 PM

```mermaid
flowchart LR
  A[Backlog] --> B[In Progress] --> C[Done]
```
<!-- KANBAN:CUSTOM:END -->
VollstÀndiges Board-Dokument mit Anmerkungen zu allen Abschnitten
⚠

Entfernen Sie nicht die Kommentarmarkierungen

Die Marker <!-- KANBAN:STRUCTURED:START -->, <!-- KANBAN:STRUCTURED:END -->, <!-- KANBAN:CUSTOM:START --> und <!-- KANBAN:CUSTOM:END --> sind erforderlich. Das Entfernen fĂŒhrt zu einem Analysefehler.

Spalten

Spalten definieren die Arbeitsablaufphasen Ihres Boards. Sie werden von links nach rechts durch ihren order-Wert gerendert.

JSON
"columns": [
  { "id": "col-1", "title": "To Do",       "color": "#64748b", "order": 0 },
  { "id": "col-2", "title": "In Progress", "color": "#6366f1", "order": 1 },
  { "id": "col-3", "title": "Review",      "color": "#f59e0b", "order": 2 },
  { "id": "col-4", "title": "Done",        "color": "#10b981", "order": 3 }
]
Beispiel: vier Spalten mit unterschiedlichen Farben
FieldTypeRequiredDescription
idstringYesEindeutiger Spaltenbezeichner (UUID oder ein beliebiger stabiler Slug)
titlestringYesSpaltenĂŒberschrift auf der Tafel angezeigt
colorstringYesSpaltenakzentfarbe (hex). Wird als linker Rand auf Karten angezeigt
orderintegerYesNullbasierte Anzeigereihenfolge (aufsteigend, von links nach rechts)
â„č

Note

Spalten-IDs mĂŒssen innerhalb des Boards eindeutig sein. Aufgaben verweisen auf Spalten anhand dieses id.

Aufgaben

Aufgaben sind die Kerneinheit der Arbeit. Jede Aufgabe befindet sich in einer Spalte (ĂŒber columnId) und ist innerhalb dieser Spalte nach position sortiert.

Minimale Aufgabe

JSON
{
  "id": "task-abc",
  "columnId": "col-1",
  "position": 0,
  "title": "Write release notes",
  "description": "",
  "priority": "medium",
  "tags": [],
  "assigneeIds": [],
  "mentionMemberIds": [],
  "estimatePoints": null,
  "dueDate": null,
  "plannedStartAt": null,
  "plannedEndAt": null,
  "timeboxMinutes": null,
  "isCompleted": false,
  "archivedAt": null,
  "checklist": []
}
Nur Pflichtfelder ausgefĂŒllt – alle optionalen Felder sind null/leer

VollstÀndige Aufgabe mit allen Feldern

JSON
{
  "id": "task-xyz",
  "columnId": "col-2",
  "position": 0,
  "title": "Redesign checkout page",
  "description": "Full UX overhaul based on user research findings.",
  "priority": "critical",
  "tags": ["ux", "frontend", "q1-goal"],
  "assigneeIds": ["member-alice", "member-bob"],
  "mentionMemberIds": ["member-pm"],
  "estimatePoints": 8,
  "dueDate": "2025-04-01",
  "plannedStartAt": "2025-03-20",
  "plannedEndAt": "2025-04-01",
  "timeboxMinutes": 120,
  "isCompleted": false,
  "archivedAt": null,
  "checklist": [
    { "title": "User interviews",       "isDone": true  },
    { "title": "Wireframes approved",   "isDone": true  },
    { "title": "Implement components",  "isDone": false },
    { "title": "A/B test live",         "isDone": false }
  ]
}
Produktionsbeispiel mit PrioritÀt, Tags, Beauftragten, Checkliste, Zeiterfassung
FieldTypeRequiredDescription
idstringYesEindeutige Aufgabenkennung (UUID oder Stable Slug)
columnIdstringYesID der Spalte, zu der diese Aufgabe gehört
positionintegerYesNullbasierte Sortierreihenfolge innerhalb der Spalte
titlestringYesAufgabentitel (1–280 Zeichen)
descriptionstringNoMarkdown-kompatible lÀngere Beschreibung
priorityenum
"low""medium""high""critical"
NoDringlichkeitsstufe der Aufgabe
tagsstring[]NoFreiform-Beschriftungszeichenfolgen zum Filtern und Gruppieren
assigneeIdsstring[]NoMitglieds-IDs von Personen, die dieser Aufgabe zugewiesen sind
mentionMemberIdsstring[]NoIn dieser Aufgabe erwÀhnte (mitgeteilte) Mitglieds-IDs
estimatePointsinteger|nullNoStory-Point-SchÀtzung (Fibonacci: 1, 2, 3, 5, 8, 13
)
dueDatestring|nullNoISO 8601-Datumszeichenfolge: JJJJ-MM-TT
plannedStartAtstring|nullNoISO 8601 Datum/Uhrzeit: geplanter Start
plannedEndAtstring|nullNoISO 8601 Datum/Uhrzeit: geplantes Ende
timeboxMinutesinteger|nullNoLĂ€nge der Fokussitzung fĂŒr Timeboxing
isCompletedbooleanNoMarkiert die Aufgabe als erledigt (fĂŒgt Durchstreichung in der BenutzeroberflĂ€che hinzu)
archivedAtstring|nullNoISO 8601-Datum und Uhrzeit der Archivierung der Aufgabe. Archivierte Aufgaben werden im Board ausgeblendet
checklistobject[]NoElemente der Unteraufgaben-Checkliste (siehe Abschnitt „Checkliste“)

Checklistenelemente

Jede Aufgabe unterstĂŒtzt eine flache Liste von Checklistenelementen – einfache Unteraufgaben, die einzeln als erledigt markiert werden können, ohne dass separate Aufgaben erstellt werden mĂŒssen.

JSON
"checklist": [
  { "title": "Design mockup",   "isDone": true  },
  { "title": "Code review",     "isDone": false },
  { "title": "Deploy to prod",  "isDone": false }
]
Drei Checklistenpunkte: der erste erledigt, zwei ĂŒbrig
FieldTypeRequiredDescription
titlestringYesBeschriftung des Checklistenelements (1–255 Zeichen)
isDonebooleanYesOb dieser Punkt abgehakt ist

Abschnitt „Benutzerdefinierte Notizen“.

Alles zwischen <!-- KANBAN:CUSTOM:START --> und <!-- KANBAN:CUSTOM:END --> ist Ihr Notizblock. Es unterstĂŒtzt vollstĂ€ndige Markdown- und Mermaid-Diagramme. Der Inhalt wird von der Board-Engine nie geparst – er wird nur auf der Registerkarte „Vorschau“ angezeigt.

Markdown
<!-- KANBAN:CUSTOM:START -->
## Sprint Notes

- Daily standup at 10:00 AM
- Backend API freeze on Friday

```mermaid
gantt
  title Sprint 12
  section Tasks
  Auth flow     :done, 2025-03-10, 3d
  Dashboard UI  :active, 2025-03-13, 4d
  API docs      :2025-03-17, 2d
```

> Reminder: update JIRA tickets before end of day.
<!-- KANBAN:CUSTOM:END -->
Notizen mit einem Meerjungfrau-Gantt-Diagramm
💡

Tip

Verwenden Sie den Abschnitt „Benutzerdefiniert“ fĂŒr Sprintnotizen, Teamlinks, Gantt-Diagramme, Architekturdiagramme – alles, was Sie neben Ihren Board-Daten sehen möchten.

PrioritÀtswerte

Das Feld priority akzeptiert genau einen von vier Werten. Jedes wird einer bestimmten Abzeichenfarbe in der BenutzeroberflÀche zugeordnet:

FieldTypeRequiredDescription
lowenum valueNoGeringe Dringlichkeit. Abgebildet in Schiefer/Grau.
mediumenum valueNoStandard. Dargestellt in Bernstein/Gelb. Das Weglassen der PrioritÀt ist die Standardeinstellung.
highenum valueNoWichtig. In Orange dargestellt.
criticalenum valueNoBlockieren. Abgebildet in Rot/Rosa.

Archivierungsaufgaben

Um eine Aufgabe zu archivieren, setzen Sie ihr Feld archivedAt auf eine ISO-Datums-/Uhrzeitzeichenfolge. Archivierte Aufgaben werden von der aktiven Board-Ansicht ausgeschlossen, bleiben aber im Verlauf erhalten.

JSON
{
  "id": "task-old",
  "columnId": "col-1",
  "position": 99,
  "title": "Old completed task",
  "archivedAt": "2025-01-10T14:30:00.000Z",
  ...
}
Archivierte Aufgabe – vom Board ausgeblendet, im Snapshot erhalten
â„č

Note

Wenn Sie archivedAt auf null setzen, wird die Archivierung der Aufgabe aufgehoben. Die Diff-Zusammenfassung zeigt „tasksToArchive“ an, wenn ein Markdown-Snapshot angewendet wird, der derzeit aktive Aufgaben auf dem Board archiviert.

Probelauf und Diagnose

Die Probelauffunktion validiert Ihren Abschlag, ohne Änderungen vorzunehmen. Das Backend gibt ein diffSummary (was sich Ă€ndern wĂŒrde) und ein diagnostics-Array zurĂŒck, das alle Fehler oder Warnungen auflistet.

Erfolgreiche Probelaufreaktion

JSON
{
  "ok": true,
  "dryRun": true,
  "diagnostics": [],
  "diffSummary": {
    "columnsCreated": 1,
    "columnsTouched": 2,
    "tasksCreated": 3,
    "tasksTouched": 5,
    "tasksToArchive": 0
  }
}
ok: true bedeutet, dass der Abschlag gĂŒltig und sicher anzuwenden ist

Probelauf mit Fehlern

JSON
{
  "ok": false,
  "dryRun": true,
  "diagnostics": [
    {
      "code": "unknown_column_id",
      "message": "Task 'task-xyz' references unknown column 'col-999'.",
      "line": 42,
      "severity": "error"
    },
    {
      "code": "duplicate_task_id",
      "message": "Task ID 'task-abc' is used more than once.",
      "line": 67,
      "severity": "error"
    }
  ],
  "diffSummary": {
    "columnsCreated": 0,
    "columnsTouched": 0,
    "tasksCreated": 0,
    "tasksTouched": 0,
    "tasksToArchive": 0
  }
}
ok: false – Fehler vor der Anwendung beheben
FieldTypeRequiredDescription
codestringYesMaschinenlesbarer Fehlercode (z. B. unbekannte_Spalten_ID)
messagestringYesFĂŒr Menschen lesbare Beschreibung des Problems
lineintegerYesUngefÀhre Zeilennummer im Markdown-Dokument
severityenum
"error""warning"
YesEntweder „Fehler“ (Sperren gelten) oder „Warnung“ (Erlöse anwenden)
đŸš«

Fehler blockieren Apply

Wenn die Diagnose ein Element mit dem Schweregrad „Fehler“ enthĂ€lt, verweigert der Apply-Vorgang die Fortsetzung. Warnungen haben beratenden Charakter und blockieren nicht.

Empfohlener Workflow

Befolgen Sie diesen Ablauf, wenn Sie das Board ĂŒber Markdown bearbeiten:

  • Öffnen Sie das Markdown-Panel auf Ihrem Board
  • Bearbeiten Sie den JSON im Strukturierten Block – fĂŒgen Sie Spalten oder Aufgaben hinzu/Ă€ndern Sie sie
  • Klicken Sie auf Trockenlauf, um zu validieren, ohne etwas zu Ă€ndern
  • Beheben Sie alle in der Diagnoseliste angezeigten Fehler
  • Klicken Sie auf Übernehmen, um Änderungen am Live-Board zu ĂŒbernehmen
  • Verwenden Sie Herunterladen, um ein lokales .md-Backup zu speichern
💡

Tipp zur Versionskontrolle

Da es sich bei dem Dokument um reinen Text handelt, können Sie es in ein Git-Repository einfĂŒgen, Versionen unterscheiden und frĂŒhere Board-Status wiederherstellen, indem Sie einen Ă€lteren Snapshot erneut anwenden.

Schema v1 · Updated September 2026