Agent skill

Confluence To Markdown

by iurykrieger in iurykrieger/claude-bedrock

Internal fetcher module for Confluence pages. An agent skill from iurykrieger/claude-bedrock.

MITAuto-check: notesKnowledge Management

Install Confluence To Markdown

skills CLI
$ npx skills add iurykrieger/claude-bedrock --skill confluence-to-markdown -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install iurykrieger/claude-bedrock confluence-to-markdown --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/iurykrieger/claude-bedrock.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/confluence-to-markdown .claude/skills/confluence-to-markdown && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
confluence-to-markdown
GitHub stars
105
Used in
1 other repo
Token cost
~2.8k tokens
SKILL.md length
1,162 words
Files
2 (incl. scripts)
Skills in repo
10
Repo updated
First seen
Licence
MIT

At a glance

Internal fetcher module for Confluence pages. An agent skill from iurykrieger/claude-bedrock.

  • Works in 4 steps: Parse URL → Layer 1: MCP (Atlassian) → Layer 2: API (REST) → …
  • Tasks that involve Markdown
  • SKILL.md covers Step 1 — Parse URL, Step 2 — Layer 1: MCP…, Step 3 — Layer 2: API (REST) and Step 4 — Layer 3: Browser…, plus 3 more sections
  • Runs JavaScript scripts from its folder; calls curl; needs CONFLUENCE_API_TOKEN

What it does

Confluence To Markdown is an agent skill from iurykrieger/claude-bedrock. Internal fetcher module for Confluence pages. Fetches content via Atlassian MCP (preferred), REST API with Basic Auth (fallback), or browser DOM extraction via Claude in Chrome (last resort) and returns Markdown. Used by /bedrock:learn and /bedrock:sync — not intended for direct user invocation.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/extract.js`).

It sits in Knowledge Management, covering Markdown, MCP servers and REST APIs. It works with Confluence, Model Context Protocol and Obsidian. The repository describes itself as: Second Brain automation for Obsidian vaults — entity management, ingestion, compression, and sync via Claude Code skills. The licence is MIT.

When your agent uses it

  • Tasks that involve Markdown
  • Tasks that involve MCP servers
  • Tasks that involve REST APIs

Example prompts

  • “/confluence-to-markdown”

Requirements

  • Node.js
  • A credential in CONFLUENCE_API_TOKEN
  • Pre-approved tools (allowed-tools): Bash, Read, Write, WebFetch, ToolSearch, mcp__plugin_atlassian_atlassian__*, mcp__claude-in-chrome__*

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Parse URL
  2. Layer 1: MCP (Atlassian)
  3. Layer 2: API (REST)
  4. Layer 3: Browser (Claude in Chrome)

What it can do on your machine

Read from SKILL.md and the folder at commit 7cac16c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Write
    • WebFetch
    • ToolSearch
    • mcp__plugin_atlassian_atlassian__*
    • mcp__claude-in-chrome__*

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • id.atlassian.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • CONFLUENCE_API_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Confluence To Markdown loads about 2.8k tokens when it runs. Until then it costs about 80 tokens; SKILL.md has 1,162 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~80
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Write, WebFetch, ToolSearch, mcp__plugin_atlassian_atlassian__*, mcp__claude-in-chrome__

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from iurykrieger/claude-bedrock at commit 7cac16c, republished under its MIT licence (© iurykrieger). 1,162 words, ~2,750 tokens.

Download SKILL.mdSave it as .claude/skills/confluence-to-markdown/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
confluence-to-markdown
description
Internal fetcher module for Confluence pages. Fetches content via Atlassian MCP (preferred), REST API with Basic Auth (fallback), or browser DOM extraction via Claude in Chrome (last resort) and returns Markdown. Used by /bedrock:learn and /bedrock:sync — not intended for direct user invocation.
allowed-tools
Bash, Read, Write, WebFetch, ToolSearch, mcp__plugin_atlassian_atlassian__*, mcp__claude-in-chrome__*
user_invocable
false

Confluence Fetcher

Internal module — invoked by /bedrock:learn Phase 1 and /bedrock:sync Phase 2, not user-invocable.

Fetches a Confluence page and returns its content as Markdown. Three layers in fallback order: MCP (preferred) → REST API → Browser DOM extraction.

Dependency: Browser fallback (Layer 3) requires scripts/extract.js (relative to this skill directory).


Step 1 — Parse URL

Parse the Confluence URL. Accept these formats:

  • https://<domain>.atlassian.net/wiki/spaces/<spaceKey>/pages/<pageId>/<title>
  • https://<domain>.atlassian.net/wiki/spaces/<spaceKey>/pages/<pageId>
  • https://<domain>.atlassian.net/wiki/x/<shortlink>
  • https://<domain>.atlassian.net/wiki/pages/viewpage.action?pageId=<pageId>

Extract:

  • Base URL: https://<domain>.atlassian.net (everything before /wiki/...)
  • Page ID: the numeric ID from the URL path (segment after /pages/) or pageId query parameter
  • Full URL: the original URL as provided (needed for browser fallback)

Step 2 — Layer 1: MCP (Atlassian)

The preferred layer. Uses the plugin:atlassian:atlassian MCP server if installed and authenticated.

2.1 Check MCP availability

Use ToolSearch to check if Atlassian MCP tools are available:

ToolSearch(query: "atlassian confluence page", max_results: 5)

Evaluate the result:

  • MCP tools found and functional (tools other than authenticate and complete_authentication are available) → proceed to 2.2 Fetch via MCP
  • Only authenticate / complete_authentication tools found (MCP installed but not authenticated) → proceed to 2.3 Guide authentication
  • No Atlassian MCP tools found → log and fall through:

MCP not available: No Atlassian MCP server installed. Install the Atlassian MCP plugin for Claude Code to enable direct Confluence access. Falling back to API (Layer 2).

2.2 Fetch via MCP

Use the Atlassian MCP tools to fetch the page content. The specific tool depends on what the MCP exposes after authentication (typically a page read or content retrieval tool).

Call the MCP tool passing the page ID or URL. The MCP returns the page content directly.

  • Success → convert content to Markdown if not already, proceed to Output Contract
  • Error → log the error and fall through to Layer 2:

MCP fetch failed: {error message}. Falling back to API (Layer 2).

2.3 Guide authentication

If the MCP is installed but not authenticated, guide the user:

MCP not authenticated: The Atlassian MCP server is installed but requires authentication. Run mcp__plugin_atlassian_atlassian__authenticate to start the OAuth flow, then complete it in your browser. After authentication, Confluence pages can be fetched directly via MCP.

Ask the user: "Would you like to authenticate the Atlassian MCP now, or skip to API fallback (Layer 2)?"

  • User wants to authenticate → invoke mcp__plugin_atlassian_atlassian__authenticate, wait for the user to complete the OAuth flow, then retry 2.2 Fetch via MCP
  • User declines → log "User declined MCP authentication, falling to Layer 2" → continue to Step 3

Step 3 — Layer 2: API (REST)

Uses the Confluence REST API with Basic Auth (API token + email).

3.1 Check credentials
bash
echo "CONFLUENCE_API_TOKEN: ${CONFLUENCE_API_TOKEN:+set}" && echo "CONFLUENCE_USER_EMAIL: ${CONFLUENCE_USER_EMAIL:+set}"
  • Both set → proceed to 3.2 Compute auth header
  • Either missing → guide and fall through:

API not available: CONFLUENCE_API_TOKEN or CONFLUENCE_USER_EMAIL environment variable is not set. Generate an API token at https://id.atlassian.com/manage-profile/security/api-tokens and export both variables: export CONFLUENCE_API_TOKEN="your-token" and export CONFLUENCE_USER_EMAIL="your-email". Falling back to Browser extraction (Layer 3).

3.2 Compute Basic Auth header
bash
echo -n "${CONFLUENCE_USER_EMAIL}:${CONFLUENCE_API_TOKEN}" | base64
3.3 Fetch the page

Use WebFetch:

WebFetch(
  url: "{baseUrl}/wiki/api/v2/pages/{pageId}?body-format=storage",
  headers: {
    "Authorization": "Basic {base64_value}",
    "Accept": "application/json"
  }
)

If WebFetch cannot send the Authorization header, fall back to curl via Bash:

bash
curl -sL -H "Authorization: Basic {base64_value}" -H "Accept: application/json" \
  "{baseUrl}/wiki/api/v2/pages/{pageId}?body-format=storage"
3.4 Extract content from response

The API returns JSON with:

  • title — page title
  • body.storage.value — XHTML content (Confluence storage format)
3.5 Convert XHTML to Markdown

Convert the storage format XHTML to Markdown using these rules:

XHTML elementMarkdown output
<h1> through <h6># through ######
<p>Paragraph with blank line separation
<strong>, <b>**text**
<em>, <i>*text*
<s>, <del>~~text~~
<a href="...">[text](url)
<ul> / <ol> / <li>Markdown lists (respect nesting)
<table>Markdown table with | separators and header row
<ac:structured-macro ac:name="code">Fenced code block with language from <ac:parameter ac:name="language">
<pre>Fenced code block
<code> (inline)`code`
<blockquote>> text
<hr>---
Confluence macros (<ac:*>) with textExtract text content
Confluence macros with no text (images, drawio, attachments)Skip silently
3.6 Error handling
HTTP statusAction
200 OKProceed to Output Contract
401 UnauthorizedLog and fall through to Layer 3:

API authentication failed: API returned 401. The token may be expired or invalid. Regenerate your token at https://id.atlassian.com/manage-profile/security/api-tokens. Falling back to Browser extraction (Layer 3).

HTTP statusAction
403 ForbiddenAbort (no fallback can bypass permissions):

API access denied: API returned 403. The user does not have access to this page. Verify page permissions in Confluence.

HTTP statusAction
404 Not FoundAbort:

Page not found: API returned 404. The page ID may be incorrect. Verify the URL: {original_url}.


Show full SKILL.md (468 more words)Show less

Step 4 — Layer 3: Browser (Claude in Chrome)

Last resort. Opens the page in Chrome and extracts content via DOM scraping.

4.1 Load Chrome tools

Via ToolSearch:

select:mcp__claude-in-chrome__tabs_context_mcp,mcp__claude-in-chrome__tabs_create_mcp
select:mcp__claude-in-chrome__navigate
select:mcp__claude-in-chrome__javascript_tool

If Chrome MCP tools are not available, abort:

Browser not available: Claude in Chrome MCP is not installed or not running. Install the Claude in Chrome extension and ensure it is connected. No further fallback layers available — cannot fetch this Confluence page.

4.2 Get browser context
mcp__claude-in-chrome__tabs_context_mcp(createIfEmpty: true)
4.3 Navigate to the page
mcp__claude-in-chrome__tabs_create_mcp()
mcp__claude-in-chrome__navigate(url: "<full confluence URL>", tabId: <id>)
4.4 Execute extraction script

Read scripts/extract.js from this skill's directory using the Read tool. Then execute it:

mcp__claude-in-chrome__javascript_tool(
  action: "javascript_exec",
  text: <contents of extract.js>,
  tabId: <id>
)

The script returns JSON:

json
{
  "status": "ready",
  "totalLength": 52969,
  "totalChunks": 6,
  "chunkSize": 10000,
  "title": "Page Title",
  "instructions": "Run window.__confluence.chunk(0), window.__confluence.chunk(1), etc."
}

If the script returns an error field: handle accordingly (login page, empty content, wrong page).

4.5 Read chunks

For each chunk from 0 to totalChunks - 1:

mcp__claude-in-chrome__javascript_tool(
  action: "javascript_exec",
  text: "window.__confluence.chunk(N)",
  tabId: <id>
)

Concatenate all chunks into a single Markdown string.

4.6 Validate

Check that the result is not empty and not a login page. If validation fails:

Browser extraction failed: Could not extract content from the page. Ensure you are logged into Confluence in Chrome and the page has loaded. No further fallback layers available — cannot fetch this Confluence page.


Output Contract

Return to the caller (/bedrock:learn or /bedrock:sync):

  • Markdown content: the full page content as Markdown
  • Page title: extracted from MCP response, API response (title field), or browser extraction (title in JSON)
  • Layer used: MCP, API, or Browser

The caller is responsible for saving the content to its target location.


Hard Rules

RuleDetail
Read-onlyNever write back to Confluence.
No OAuth interactive flowsUse only existing MCP auth, API tokens, or browser sessions.
Validate before returningDo not return empty content, HTML error pages, or login pages.
Layer order is sacredAlways try MCP → API → Browser, in that order. Never skip ahead unless a layer is unavailable or user declines.
Guide before falling throughIf a layer exists but is misconfigured, guide the user before moving to the next layer.
Skip rich media silentlyImages, diagrams, drawio, and attachment macros are omitted without error.
Best-effortIf a layer fails, try the next. If all fail, report and abort — do not retry indefinitely.
403 is terminalPermission denied cannot be resolved by falling to another layer — abort immediately.

Troubleshooting

ProblemSolution
MCP not authenticatedRun mcp__plugin_atlassian_atlassian__authenticate to start OAuth flow
MCP tools not foundAtlassian MCP plugin not installed — use API or browser fallback
API returns 401Token expired — regenerate at https://id.atlassian.com/manage-profile/security/api-tokens
API returns 403User lacks page access — check Confluence permissions
API returns 404Wrong page ID — verify URL
Chrome extension disconnectedRefresh extension, call tabs_context_mcp(createIfEmpty: true)
Browser redirects to loginUser not authenticated — log into Confluence in Chrome, retry
extract.js returns emptyPage may not have loaded — wait and retry, or check if page is empty
Shortlink URL (/wiki/x/...) with APINavigate in browser first to resolve full URL with page ID

© iurykrieger, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in skills/confluence-to-markdown of iurykrieger/claude-bedrock.

  • SKILL.md
  • scripts/extract.js

Open the folder on GitHubat commit 7cac16c

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in iurykrieger/claude-bedrock, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Confluence To Markdown next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Confluence To Markdown compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Confluence To Markdown this skilliurykrieger/claude-bedrock1051 repos~2.8kAutomated safety check: NotesMIT
Sage Wikixoai/sage-wiki623—~2.4kAutomated safety check: PassMIT
Anytype Importpricklywiggles/niamos192—~3.3kAutomated safety check: PassNone
Obsidian REST APIdavepoon/buildwithclaude3.6k—~1kAutomated safety check: PassMIT
Markdown To Confluencetestdouble/han281—~2.4kAutomated safety check: PassMIT
OutlineVortiago/mcp-outline156—~818Automated safety check: PassMIT

Similar skills

  • Sage Wiki

    xoai/sage-wiki

    Reference skill for sage-wiki — local-first knowledge graph with MCP server, REST API, compiled wiki, and Obsidian-compatible output.

    623 GitHub stars~2.4k tokensUpdated 4 days ago
    Knowledge ManagementAuto-check passed
  • Anytype Import

    pricklywiggles/niamos

    Import a page from the user's self-hosted Anytype into this Niamos Obsidian vault, page-by-page, recursing into children only when the user explicitly says so.

    192 GitHub stars~3.3k tokensUpdated 3 mo ago
    Knowledge ManagementAuto-check passed
  • Obsidian REST API

    davepoon/buildwithclaude

    Call the Obsidian Local REST API directly (over HTTP) for vault operations the mcpobsidian tools do NOT expose — move/rename a note, overwrite a whole file atomically (PUT), act on the…

    3.6k GitHub stars~1k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Publishes a local Markdown file to a user-specified Confluence location, creating a new page or updating an existing one through the Atlassian MCP server.

    281 GitHub stars~2.4k tokensUpdated 9 days ago
    Documents & OfficeAuto-check passed
  • Outline

    Vortiago/mcp-outline

    Conventions and efficient workflows for Outline knowledge bases via mcp-outline tools.

    156 GitHub stars~818 tokensUpdated 2 mo ago
    Knowledge ManagementAuto-check passed
  • Open Knowledge

    inkeep/open-knowledge

    Authoritative agent-runtime contract for working inside an OpenKnowledge project — a markdown-CRDT knowledge base exposed over MCP.

    4.5k GitHub stars~4.7k tokensUpdated yesterday
    Knowledge ManagementAuto-check passed

More from iurykrieger/claude-bedrock

All 10 skills in this repo
  • Gdoc To Markdown

    iurykrieger/claude-bedrock

    Internal fetcher module for Google Docs and Sheets. An agent skill from iurykrieger/claude-bedrock.

    105 GitHub starsUsed in 1 repo~3.8k tokens
    Auto-check: notes
  • Healthcheck

    iurykrieger/claude-bedrock

    Read-only vault health diagnostic. An agent skill from iurykrieger/claude-bedrock.

    105 GitHub starsUsed in 1 repo~3.7k tokens
    Auto-check: notes
  • Vaults

    iurykrieger/claude-bedrock

    Manage registered Bedrock vaults. An agent skill from iurykrieger/claude-bedrock.

    105 GitHub starsUsed in 1 repo~1.3k tokens
    Auto-check: notes
  • Setup

    iurykrieger/claude-bedrock

    Initialize any folder as a Bedrock-powered Obsidian vault. An agent skill from iurykrieger/claude-bedrock.

    105 GitHub starsUsed in 1 repo~11k tokens
    Auto-check: notes
  • Compress

    iurykrieger/claude-bedrock

    Vault alignment engine. An agent skill from iurykrieger/claude-bedrock.

    105 GitHub starsUsed in 1 repo~9.9k tokens
    Auto-check: warnings
  • Sync

    iurykrieger/claude-bedrock

    Re-synchronizes the vault with external sources. An agent skill from iurykrieger/claude-bedrock.

    105 GitHub starsUsed in 1 repo~11k tokens
    Auto-check: warnings

Questions about Confluence To Markdown

What does Confluence To Markdown do?

Internal fetcher module for Confluence pages. An agent skill from iurykrieger/claude-bedrock. Confluence To Markdown is an agent skill from iurykrieger/claude-bedrock. Internal fetcher module for Confluence pages.

When should I use Confluence To Markdown?

Confluence To Markdown fits situations like: tasks that involve Markdown; tasks that involve MCP servers; tasks that involve REST APIs.

How do I install Confluence To Markdown in Claude Code?

Run `npx skills add iurykrieger/claude-bedrock --skill confluence-to-markdown -a claude-code`. Or copy the skill folder (skills/confluence-to-markdown in iurykrieger/claude-bedrock) into .claude/skills/confluence-to-markdown in your project. Claude Code loads it when a task matches its description.

How do I install Confluence To Markdown in Codex?

Run `npx skills add iurykrieger/claude-bedrock --skill confluence-to-markdown -a codex`. Or copy the skill folder (skills/confluence-to-markdown in iurykrieger/claude-bedrock) into .agents/skills/confluence-to-markdown in your project. Codex loads it when a task matches its description.

Can I use Confluence To Markdown in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add iurykrieger/claude-bedrock --skill confluence-to-markdown -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/confluence-to-markdown, .gemini/skills/confluence-to-markdown, .github/skills/confluence-to-markdown and .opencode/skills/confluence-to-markdown in your project.

What does Confluence To Markdown need to run?

Going by SKILL.md and its folder, Confluence To Markdown needs JavaScript for the scripts in its folder, the command-line tools its instructions call (curl) and credentials named CONFLUENCE_API_TOKEN. Our summary lists: Node.js; A credential in CONFLUENCE_API_TOKEN. Its frontmatter pre-approves these tools: Bash, Read, Write, WebFetch, ToolSearch, mcp__plugin_atlassian_atlassian__*, mcp__claude-in-chrome__*.

Does Confluence To Markdown access the network?

SKILL.md names 1 domain. As links in the text: id.atlassian.com. This is read from the text; nothing was executed.

Is Confluence To Markdown safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Confluence To Markdown use?

Confluence To Markdown is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Confluence To Markdown use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Confluence To Markdown?

Skills that share tags, products or a category with Confluence To Markdown: Sage Wiki (xoai/sage-wiki, 623 stars), Anytype Import (pricklywiggles/niamos, 192 stars), Obsidian REST API (davepoon/buildwithclaude, 3.6k stars) and Markdown To Confluence (testdouble/han, 281 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Confluence To Markdown?

iurykrieger (a GitHub user) maintains it in iurykrieger/claude-bedrock, which has 105 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on May 5, 2026.

Source: iurykrieger/claude-bedrock on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.