Skip to content

Macros

atlcli provides extensive Confluence macro support with bidirectional conversion between markdown and Confluence Storage Format.

  • Basic understanding of markdown syntax
  • For push operations: Edit permission on target Confluence space
::: info
This is an informational message.
:::

With title:

::: info "Important Information"
This is an info panel with a title.
:::
::: note
This is a note for the reader.
:::
::: warning
This action cannot be undone!
:::
::: tip
Pro tip: Use keyboard shortcuts for faster navigation.
:::

Full control over panel styling:

::: panel title="Custom Panel" bgColor="#f0f0f0" borderColor="#ccc" borderStyle="solid"
Custom styled panel content.
:::

Options:

OptionDescription
titlePanel title
bgColorBackground color (hex)
borderColorBorder color (hex)
borderStylesolid, dashed, none
::: expand "Click to expand"
This content is hidden by default.
:::
::: expand "Details" expanded=true
This content is visible by default.
:::
:::

With options:

::: toc minLevel=2 maxLevel=4
:::

Options:

OptionDescription
minLevelMinimum heading level (default: 1)
maxLevelMaximum heading level (default: 6)
stylenone, disc, circle, square

atlcli converts standard fenced code blocks to Confluence code macros:

```javascript
function hello() {
console.log("Hello, world!");
}
```

With title:

```python title="example.py"
def hello():
print("Hello, world!")
```

With line numbers:

```typescript linenumbers=true
const greeting: string = "Hello";
console.log(greeting);
```

JavaScript, TypeScript, Python, Java, Go, Rust, C, C++, C#, Ruby, PHP, SQL, Bash, YAML, JSON, XML, HTML, CSS, and many more.

Preformatted text without syntax highlighting:

```noformat
This text preserves whitespace
and formatting exactly
as written.
```

Apply color to inline text:

This is {color:red}red text{color} and {color:#0066cc}blue text{color}.

Supports CSS color names and hex codes.

Highlight text with background color:

This is {bg:yellow}highlighted{bg} text.
{bg:#e6f3ff}Custom background{bg}
H~2~O (subscript)
E=mc^2^ (superscript)

Native checkbox support:

- [ ] Unchecked task
- [x] Completed task
- [ ] Another pending task

Converts to Confluence’s native task list format with proper checkboxes.

Insert formatted dates:

{date:2025-01-15}

Rendered as a Confluence date picker showing the specified date.

Use emoji shortcodes:

:smile: :thumbsup: :warning: :star:
ShortcodeAliases
:smile::)
:sad::(
:thumbs-up::+1:, :thumbsup:
:thumbs-down::-1:, :thumbsdown:
:star:
:warning::warn:
:info::information:
:tick::check:, :checkmark:
:cross::x:, :error:
:light-on::bulb:, :idea:
:heart::love:
:question::?:

Mention users by account ID:

@[John Doe](557058:abcd-efgh-ijkl)

The account ID can be found in Confluence user profiles or via the API.

Inline status labels:

{status:green}Approved{status}
{status:yellow}In Review{status}
{status:red}Rejected{status}
{status:blue}In Progress{status}
{status:grey}Draft{status}

Colors: green, yellow, red, blue, grey

Create link anchors:

{#my-anchor}
Link to [my section](#my-anchor).

Atlassian smart links are rich links to Jira issues, Confluence pages, and other Atlassian content that display contextual information. atlcli supports bidirectional conversion of smart links.

When pulling pages, atlcli converts smart links to standard markdown URLs:

# Inline link (default)
[PROJ-123](https://your-site.atlassian.net/browse/PROJ-123)
# Card view - shows preview card
[PROJ-123](https://your-site.atlassian.net/browse/PROJ-123)<!--card-->
# Embed view - embeds content
[Page Title](https://your-site.atlassian.net/wiki/spaces/TEAM/pages/12345)<!--embed-->
DirectionProcess
PullSmart links → Full URLs with display mode annotations
PushAtlassian URLs → Smart links with data-card-appearance
ModeAnnotationDescription
Inline(none)Link appears inline in text
Card<!--card-->Shows preview card with title and metadata
Embed<!--embed-->Embeds full content preview
  • Jira Issues: /browse/PROJ-123
  • Confluence Pages: /wiki/spaces/SPACE/pages/12345
  • Trello: trello.com/c/... or trello.com/b/...
  • Bitbucket: bitbucket.org/user/repo

atlcli converts only URLs matching your active profile’s Atlassian instance to smart links. External URLs remain as regular markdown links.

# Converted to smart link (same instance)
[Issue](https://your-site.atlassian.net/browse/PROJ-123)
# Remains regular link (different instance)
[External](https://other-site.atlassian.net/browse/PROJ-456)

The {jira:KEY} syntax is deprecated. Use full URLs instead:

# Deprecated (still works)
{jira:PROJ-123}
# Recommended - use full URL
[PROJ-123](https://your-site.atlassian.net/browse/PROJ-123)

When pulling pages, Jira macros are automatically converted to full URLs.

{jira:project = PROJ AND status = Open|columns=key,summary,status}

Options:

OptionDescription
columnsColumns to display
countShow count only
cacheCache duration

List child pages:

::: children
:::

With options:

::: children depth=2 sort=title
:::

Options:

OptionDescription
depthHow many levels deep
sorttitle, created, modified
reverseReverse sort order
stylenone, disc, circle, square

Display page tree navigation:

::: pagetree root=12345 depth=3
:::
::: recently-updated spaces=TEAM,DOCS max=10
:::
::: content-by-label labels=api,documentation
:::
::: section
::: column width=50%
Left column content.
:::
::: column width=50%
Right column content.
:::
:::

Mark content for reuse:

::: excerpt
This content can be included in other pages.
:::

Include excerpt from another page:

::: excerpt-include page="Page Title" nopanel=true
:::

Display attached images as gallery:

::: gallery columns=3
:::

List page attachments:

::: attachments patterns=*.pdf,*.docx
:::

Embed video or audio:

::: multimedia url="https://youtube.com/watch?v=..." width=640 height=480
:::

Embed external content:

::: widget url="https://example.com/embed" width=100%
:::

Create a table of contents for a specific section:

::: toc-zone minLevel=2 maxLevel=4
## Section 1
Content...
## Section 2
Content...
:::

Only headings within the zone are included in the TOC.

Display page metadata in a panel:

::: details
| Property | Value |
|----------|-------|
| Status | Active |
| Owner | John |
:::

Store metadata without displaying:

::: detailssummary hidden=true
| Key | Value |
|-----|-------|
| internal-id | 12345 |
:::

Display a summary of tasks across pages:

:::tasks-report-macro spaces="TEAM" pageSize=20
:::

Shows tasks from specified spaces with pagination.

Display labels for the current page:

:::labels-list
:::

Show frequently used labels in a space:

:::popular-labels spaces="TEAM" count=20
:::

Show labels related to current page’s labels:

:::related-labels labels="api,docs"
:::

Display recent blog posts:

:::blog-posts max=10 spaces="DEV,OPS" labels="announcement"
:::

Options:

OptionDescription
maxMaximum posts to show
spacesComma-separated space keys
labelsFilter by labels
authorFilter by author account ID
timeTime period filter
sortSort order

List available spaces:

:::spaces-list
:::

Display alphabetical index of pages:

:::page-index
:::

Show page contributors:

:::contributors mode=list showCount=true
:::

Options:

OptionDescription
modelist or inline
showCountShow contribution count
limitMax contributors to show
orderupdate or name
showLastTimeShow last contribution time

Display page change history:

:::change-history
:::

Options:

OptionDescription
limitMax entries to show
showProfilePicShow contributor avatars
showSpaceShow space name

Generate placeholder text:

:::loremipsum paragraphs=3
:::

For compatibility, Confluence wiki attachment syntax is also supported:

!image.png! <!-- Inline image -->
!image.png|alt=Description! <!-- Image with alt text -->
!document.pdf! <!-- File download link -->

atlcli preserves unrecognized macros as-is. This ensures no information loss during sync:

::: unknown-macro param1=value1 param2=value2
Content inside the unknown macro.
:::

On push, atlcli converts this to Confluence’s storage format and preserves it. On pull, atlcli converts it back exactly.

DirectionProcess
PushMarkdown → Confluence Storage Format (XHTML)
PullStorage Format → Markdown

All supported macros round-trip cleanly:

  1. Pull page with macros → Markdown
  2. Edit markdown
  3. Push back → Identical macro rendering

Some complex macros render to placeholder text with a note:

<!-- Confluence macro: roadmap - not fully supported, preserved as-is -->
::: roadmap
...
:::
  1. Use standard markdown when possible (tables, code blocks, lists)
  2. Reserve macros for Confluence-specific features (panels, toc, jira)
  3. Test round-trips for complex pages before relying on sync
  4. Check preview with atlcli wiki docs preview before pushing

Symptom: Macro appears as raw text in Confluence.

Cause: Unclosed macro block or incorrect syntax.

Fix: Ensure every :::macro has a matching ::: closing tag. Validate with:

Terminal window
atlcli wiki docs check ./docs/page.md

Symptom: Warning about unrecognized macro during push.

Cause: The macro isn’t in atlcli’s supported list.

Fix: This is safe—atlcli preserves unknown macros as-is, and they render correctly in Confluence.

  • Sync - Push and pull pages with macro content
  • Validation - Pre-push checks including macro syntax
  • File Format - Frontmatter and markdown structure
  • Pages - Create and update pages
Jira and Confluence are trademarks of Atlassian Corporation Plc. atlcli is not affiliated with, endorsed by, or sponsored by Atlassian.