Create structured Markmap mindmaps with your AI agent.
Structured branches Β· Folding and decision tracking Β· Editable Markdown and interactive HTML.
markmap-skills turns task-authorized notes and documents into editable Markdown and interactive Markmap HTML. Its instructions guide branch grouping, concise labels, folding, and decision tracking. Review generated content against your source before relying on it.
| Output or behavior | Requirements and limits |
|---|---|
| Editable Markdown | Generated within the host agent; content accuracy requires review. |
| Compiled HTML | Uses Node.js/npx and pinned markmap-cli; initial compilation may download packages from npm. Libraries are embedded for offline viewing. |
| CDN template HTML | Loads pinned libraries from jsDelivr and requires internet access. Source labels render as plain text. |
| Branch structure | Instructions target 4β7 main branches, depth 3β4, and concise labels; these are generation guidelines rather than measured guarantees. |
| Runtime | No bundled MCP server or maintainer daemon. Host processing and token use depend on the agent platform. |
The examples below illustrate formatting, not benchmark results or comparisons with other products. Include only facts and decisions supported by the input.
| Scenario | Source material | Mindmap representation |
|---|---|---|
| Gateway Architecture | The gateway uses JWT with RSA signatures and an edge token bucket. Kong was rejected because of idle cost. | - **Auth**: JWT with RSA signatures- **Rate Limit**: Token bucket at edge- ~~Kong Gateway: Idle cost~~ |
| Branch Structure | Notes describe ingress, compute, storage, and telemetry components. | Group nodes under those four categories; use <!-- markmap: fold --> for dense detail. |
| Decision Tracking | State snapshot serialization is complete. WebSocket reconnection backoff is pending. Low latency trades off against stale reads. | - [x] State snapshot serialization- [ ] WebSocket reconnection backoff+ Low latency / - Stale read risk |
In your Claude Code terminal session:
/plugin marketplace add fioenix/markmap-skills
/plugin install markmap-skills@fioenix-plugins
Invoke the skill directly in any conversation:
/markmap-skills:markmap Create an architecture mindmap for this microservices system
Upgrading from
mindmap-skills? The plugin was renamed. Run/plugin uninstall mindmap-skills@fioenix-plugins, then installmarkmap-skills@fioenix-pluginsas above. The command is now/markmap-skills:markmap.
- Navigate to Customize β Plugins β Add β Add marketplace β Add from a repository.
- Enter repository:
fioenix/markmap-skills. - In Discover, select markmap-skills and click Add.
- Invoke in chat using
/markmapor via the+menu.
claude plugin add ~/Projects/markmap-skillsDISABLE_TELEMETRY=1 npx --yes skills@1.5.20 add fioenix/markmap-skills --skill markmap --agent codex --globalThis installs the skill, not an approved OpenAI directory plugin. The Skills CLI normally reports install telemetry; this command opts out. skills.sh listings are driven by user installs with telemetry. No listing or OpenAI approval is claimed here.
As of 2026-10-23, the owner reports that the OpenAI submission portal displays: "We are not accepting more skills-only submissions at this time." Treat new skills-only submissions as unavailable through that portal. This is an intake restriction, not a rejection of this package after review; no reopening date is known.
Project decision (2026-10-23): keep markmap-skills skills-only. Continue using the Skills CLI and marketplace catalogs documented here. We will not add an MCP server solely to qualify for Directory submission. Reconsider MCP only when a validated user workflow needs server-backed capabilities independently of Marketplace access. See the decision, evidence, and readiness limits.
Local packaging remains available for testing and a future eligible submission; building a ZIP does not mean OpenAI is accepting it:
python3 scripts/package_plugin.py /tmp/markmap-skills-0.1.4.zipThe ZIP uses the supported .codex-plugin/plugin.json layout and contains exactly one plugin root. It excludes development files and compatibility catalogs. Resume submission preparation only after confirming that Platform Plugins accepts the submitting organization and package type. Identity verification, scans, review, and publication are separate gates; local checks and historical readiness receipts do not establish approval.
This OpenAI package retains its Desktop-only declaration for the local Node.js/npx rendering workflow. If accepted and published in the Directory in the future, that declaration restricts installation to the ChatGPT desktop app and use to locally running threads. The CDN template does not remove this restriction. The declaration neither creates an OpenAI listing nor bypasses the current intake restriction. Direct skill installation through other distributions is unchanged.
The canonical multi-plugin Codex catalog (name: "Finolabs", interface.displayName: "Finolabs") is published in fioenix/agybird and groups agybird (agybird@Finolabs), vietnamizer (vietnamizer@Finolabs), and markmap-skills (markmap-skills@Finolabs) without merging repositories.
Fresh installation (when no legacy agybird marketplace is registered):
codex plugin marketplace add fioenix/agybird
codex plugin add markmap-skills@Finolabs- Shared Catalog Registration & Selector:
- Fresh installs without a prior
agybirdregistration can registerfioenix/agybirddirectly via Git (or register a local checkout path where.agents/plugins/marketplace.jsondeclaresname: "Finolabs"). - Install using the canonical exact-case selector:
markmap-skills@Finolabs.
- Fresh installs without a prior
- Legacy Compatibility (
markmap-skills@fioenix-plugins):- This repository keeps its own
.agents/plugins/marketplace.json(name: "fioenix-plugins") unchanged for standalone backward compatibility using selectormarkmap-skills@fioenix-plugins(not@markmap-skills), rather than renaming or duplicating the canonicalFinolabscatalog here.
- This repository keeps its own
- Migration (from
@agybirdor@fioenix-plugins) & Rollback:- Why side-by-side local registration is required for
@agybirdusers: Codexmarketplace upgraderejects a catalog whose fetchedname("Finolabs") differs from the configuredname("agybird"), and re-runningmarketplace addwith the same Git repository URL before removingagybirdcan reuse the existing Git-registered source instead of creating a new entry. Do not usemarketplace upgrade agybirdas a rename mechanism.
- Back up your current Codex plugin configuration and marketplace registrations before making changes.
- Prepare a distinct local checkout of the updated
fioenix/agybirdrepository (for example,git clone https://github.com/fioenix/agybird.git /path/to/finolabs-catalogor an existing updated local checkout such as~/Projects/agybird) and confirm its.agents/plugins/marketplace.jsondeclares"name": "Finolabs". - Register side-by-side & install: run
codex plugin marketplace add /path/to/finolabs-catalogto registerFinolabsalongside your existing Git-registeredagybirdcatalog, then installcodex plugin add markmap-skills@Finolabs(andagybird@Finolabs,vietnamizer@Finolabsif used). Keeping the localFinolabscatalog registration is sufficient on its own. - Verify replacement first, then remove old entries: confirm the
@Finolabsplugin(s) load and render as expected before removing oldmarkmap-skills@agybird(ormarkmap-skills@fioenix-plugins) plugin installations and removing the oldagybird(or standalonefioenix/markmap-skills) marketplace registration via supported Codex CLI commands. - Rollback: because an unpinned
fioenix/agybirdregistration now resolvesname: "Finolabs", rolling back to@agybirdrequires explicitly registering the pinned pre-rename tag withcodex plugin marketplace add fioenix/agybird --ref v0.2.1(commit25ad82943fab90224918603e05fe23f4fa65847a, which still declaresname: "agybird", or registering a retained local snapshot of that catalog), reinstalling your desired@agybirdselector (codex plugin add markmap-skills@agybird), and verifying it works before removingFinolabs; alternatively, restore your backed-up configuration or fall back to this repository's standalone.agents/plugins/marketplace.jsonwithmarkmap-skills@fioenix-plugins.
- Why side-by-side local registration is required for
- Release Note (
v0.1.4): Documents sharedFinolabs(fioenix/agybird) Codex catalog registration (markmap-skills@Finolabs) alongside side-by-side local checkout migration from prior@agybirdand legacymarkmap-skills@fioenix-pluginscompatibility and rollback guidance; runtime behavior and the standalone compatibility catalog remain unchanged.
# In a specific project
mkdir -p .agents/skills
cp -r ~/Projects/markmap-skills/skills/markmap .agents/skills/
# Or machine-global
mkdir -p ~/.agents/skills
ln -s ~/Projects/markmap-skills/skills/markmap ~/.agents/skills/markmapmkdir -p ~/.gemini/config/skills
ln -s ~/Projects/markmap-skills/skills/markmap ~/.gemini/config/skills/markmapmkdir -p .agents/skills
cp -r ~/Projects/markmap-skills/skills/markmap .agents/skills/Every generated mindmap adheres strictly to official Markmap standards and information architecture principles:
- Miller's Law (4β7 Main Branches
##): Limits top-level branches to match human working memory capacity. Always cluster related concepts into umbrella categories rather than dumping flat lists. - MECE Taxonomy (Mutually Exclusive, Collectively Exhaustive): Sibling branches at the same depth share a single logical classification axis (e.g. system layers, data lifecycle stages, or user personas) without semantic overlap.
- Branch Density Equilibrium: Automatically partitions lop-sided branches (> 7 children) into intermediate sub-groups (
###) to maintain visual balance. - Progressive Disclosure (
<!-- markmap: fold -->): High-level branches (Tiers 1β2) remain open for 5-second scanning, while deep implementation nodes (depth β₯ 3) or dense technical parameters fold by default to prevent visual fatigue. - Decision & Status Encoding:
- [x]Completed / Confirmed milestone- [ ]Open Question / Pending decision~~Discarded Alternative~~: Documents why an option was rejected==Critical Path / Bottleneck==: Highlights focal architectural risks+ Advantage / - Cost Dyads: Explicitly states who pays the trade-off
---
title: Finolabs Agent Gateway Architecture
markmap:
colorFreezeLevel: 2
---
## Ingress Gateway (MECE: Ingress)
- **Runtime**: Cloudflare Workers
- **Security**: JWT with RSA signatures
- ~~Alternative: Self-hosted Kong (High idle cost)~~
## Storage Tier (MECE: Persistence)
- **Metadata**: Cloudflare D1 (SQLite)
- `+ Low latency, zero cold starts`
- `- Single-writer concurrency ceiling`
- **Blobs**: Cloudflare R2 object store
- ~~Alternative: AWS S3 (High egress fees)~~
## Telemetry (MECE: Observability) <!-- markmap: fold -->
- **Traces**: OpenTelemetry collector
- **Metrics**: Cloudflare Analytics Engine
- **Pending Tasks**:
- - [ ] Benchmark 5% trace sampling rate
- - [x] Enable tail-based samplingmarkmap-skills can structure a mindmap without auxiliary skills. HTML rendering has the requirements listed above. When complementary skills are already available in the host agent, their outputs can also become mindmap inputs:
| Skill in Harness | Upstream Role | markmap Downstream Role |
|---|---|---|
grilling |
Stress-tests ideas, exposes hidden assumptions, challenges trade-offs. | Visual Decision Tree: Synthesizes grilled decisions, struck-out options (~~...~~), and confirmed invariants. |
brainstorming |
Divergent thinking, exploratory ideation, sprawling idea generation. | Convergent Affinity Map: Gathers unstructured ideas into 4β7 MECE categories with actionable checkboxes. |
Spec Kit (.specify/) |
Defines formal functional specifications (spec.md). |
Functional Decomposition: Visually maps user stories, data entities, and acceptance criteria. |
User Prompt: "Use grilling to stress-test this architecture proposal, then synthesize the decisions into a mindmap."
Agent Execution:
- Runs
grillingto probe boundary conditions, unearth trade-offs, and challenge assumptions.- Finalizes core architectural agreements.
- Handoff to
markmapto emit.mindmap.md: highlighting confirmed paths, crossing out discarded alternatives (~~...~~), and flagging remaining open loops (- [ ]).
User Prompt: "Brainstorm 10 growth features for this product, then organize them into a clean mindmap."
Agent Execution:
- Runs
brainstormingfor divergent ideation.- Invokes
markmapto converge ideas into 4β7 MECE clusters (e.g. Acquisition, Activation, Retention, Monetization).- Applies
<!-- markmap: fold -->to secondary branches and emits an interactive HTML artifact.
When auxiliary skills are absent from the harness,
markmapprocesses user requests directly, never prompting or nagging the user to install additional packages.
markmap-skills/
βββ .github/
β βββ workflows/
β β βββ ci.yml # Automated GitHub Actions CI workflow
β βββ ISSUE_TEMPLATE/ # Structured bug & feature request templates
β βββ PULL_REQUEST_TEMPLATE.md# Pull request validation checklist
βββ .claude-plugin/
β βββ marketplace.json # Claude Code marketplace catalog definition
β βββ plugin.json # Claude Code plugin manifest (with URLs & icons)
βββ .codex-plugin/
β βββ plugin.json # OpenAI Codex plugin manifest (interface & translations)
βββ .codex/
β βββ plugin.json # Legacy Codex compatibility manifest
βββ .agents/
β βββ plugins/
β βββ marketplace.json # Agent ecosystem distribution catalog
βββ agents/
β βββ openai.yaml # Legacy interface descriptor; canonical copy is in the skill
βββ plugin.json # Universal / Antigravity plugin descriptor
βββ package.json # npm package descriptor (skills.sh discovers SKILL.md)
βββ assets/
β βββ icon.svg # Vector SVG icon (FINOLABS Design System)
β βββ icon-dark.svg # Dark mode vector SVG icon
β βββ icon.png # 512x512 PNG marketplace icon
βββ logo.svg # Root vector logo
βββ LICENSE # MIT License
βββ README.md # Product documentation & usage guide
βββ CONTRIBUTING.md # Contribution guidelines & offline testing
βββ PRIVACY.md # Privacy policy & data governance
βββ TERMS.md # Terms of service
βββ skills/
β βββ markmap/
β βββ SKILL.md # Canonical skill instructions & prompt constraints
β βββ agents/openai.yaml # Skill-local Codex UI metadata
β βββ scripts/render.sh # Pinned renderer, included in skill installs
β βββ assets/
β βββ template.html # CDN template with CSP and plain-text labels
βββ scripts/
β βββ build_icon.py # Portable vector icon renderer
β βββ render.sh # Hardened CLI helper (markmap-cli wrapper)
β βββ sync_version.sh # Propagates package.json version to every manifest
βββ tests/
βββ validate.sh # Automated validation & test suite (8 gates)
- No Maintainer Backend or Telemetry: Host agent data policies apply. CDN HTML requests pinned libraries from jsDelivr; first CLI rendering may download packages from npm. Compiled
--offlineoutput embeds libraries. Skills CLI installation has its own optional telemetry. - Template Content Isolation: JSON-encode Markdown and escape every
<before embedding; HTML-escape titles. CDN template nodes display source text with links, images, and raw HTML disabled. The CSP is defense in depth, not a substitute for encoding. CLI-generated HTML has its own rendering behavior; use trusted source content. - CLI Option Injection Guard:
scripts/render.shterminates argument parsing with--(markmap-cli@0.18.12 --offline -o "$OUTPUT" --no-open -- "$INPUT") to prevent untrusted input from triggering CLI flags. - Sensitive Data Policy: See PRIVACY.md and TERMS.md.
- License: MIT License Β© Fioenix
- Contributing: Read CONTRIBUTING.md before submitting pull requests.
- Issues & Feedback: GitHub Issues