githubEdit

Bike Markdown Format

Bike Markdown (.bikemd) is Bike's text-based file format. It's a subset of standard markdown — open a .bikemd file in any markdown viewer and it will render reasonably well.

Markdown Subset

Bike Markdown uses standard markdown unordered lists to encode outline hierarchy. Each row is a list item (- ), and indentation creates nesting:

- Parent
	- Child
		- Grandchild
	- Another child

This is valid markdown — any markdown renderer will display it as a nested list.

Row Types

Within that list structure, Bike uses standard markdown syntax to represent different row types:

Type
Syntax
Example

Body

-

- Regular text

Heading

- #

- # Section title

Blockquote

- >

- > Quoted text

Task

- [ ]

- [ ] Incomplete task

Task (done)

- [x]

- [x] Completed task

Ordered list

1.

1. First item

Unordered list

+

+ Bullet item

Code block

- `...`

- `code content`

Horizontal rule

- ---

- ---

Most of these — headings, blockquotes, task checkboxes, ordered lists — are standard markdown or widely supported extensions (like GFM task lists).

Text Formatting

Inline formatting uses standard markdown syntax:

Format
Syntax

Bold

**text**

Italic

*text*

Strikethrough

~~text~~

Code

`text`

Link

[text](url)

Pandoc Attributes

Standard markdown has no way to attach metadata to rows or text spans. Bike rows and text can carry attributes — persistent IDs, classes, timestamps, custom data — that need to be preserved in the file.

Bike Markdown uses Pandoc's attribute syntaxarrow-up-right to fill this gap. Attributes are written in curly braces and support IDs, classes, and key-value pairs:

Pandoc attributes are only written when a row or span actually uses features that require them. Plain rows with standard formatting won't have any attribute blocks in the output.

Row attributes appear at the end of a row:

Row IDs are encoded in the markdown only when they are referenced by a link within the document, or when the ID appears to have been set explicitly (i.e. it doesn't look auto-generated). Auto-generated IDs are omitted to keep the file clean:

Inline attributes use Pandoc's bracketed span syntax [text]{attrs} for formatting that has no standard markdown equivalent. For example, highlighted text:

Or custom attributes on a span of text:

Bike uses standard markdown syntax when it can (**bold**, *italic*, etc.) and falls back to [text]{attrs} only when there's no markdown equivalent.

Frontmatter

Files can optionally begin with a JSON metadata block between --- delimiters:

The frontmatter preserves document metadata like the root ID and spell-checker ignore words. Bike manages this automatically — you don't need to edit it by hand.

Escaping

Characters that would normally be interpreted as row type prefixes are escaped with a backslash:

Standard markdown escaping also applies for inline formatting characters like *, `, [, ], etc.

Example

Here's a complete example showing several features together:

Last updated