Skip to content
Agentmart
Submit a tool

export-md

Export a spec from the store as a GitHub-flavoured markdown file, plus a sidecar directory holding its diagrams.

Skill by NitinJ

IndexedMIT★ 5
Write a review

Chalk Labs

Need help deploying export-md?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/nitinj-export-md

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Export a spec from the store as a GitHub-flavoured markdown file, plus a sidecar directory holding its diagrams. Use when the user asks to "export this spec as markdown", "give me the .md", "put this spec in the repo", or wants a spec on a surface that speaks markdown (GitHub, an editor, another agent). The conversion is deterministic and needs no model: this skill picks the spec, runs the CLI, and reports where the file landed.

Use cases: documents, agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Nov 1, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/export-md

Tools it pre-approves 3

From allowed-tools in SKILL.md: the agent may use these without asking you each time.

  • Read,
  • Bash,
  • Glob

What's inside

Skill name
export-md
Description
Export a spec from the store as a GitHub-flavoured markdown file, plus a sidecar directory holding its diagrams. Use when the user asks to "export this spec as markdown", "give me the .md", "put this spec in the repo", or wants a spec on a surface that speaks markdown (GitHub, an editor, another agent). The conversion is deterministic and needs no model: this skill picks the spec, runs the CLI, and reports where the file landed.
License
MIT
Allowed tools
Read,, Bash,, Glob
Instructions
79 lines in SKILL.md · view on GitHub

Before installing

  • Pre-approves some shell commands

Files (1)

  • SKILL.md

SKILL.md (first lines)

# export-md

Render a store spec as markdown. `${CLAUDE_PLUGIN_ROOT}` below denotes the
installed plugin directory. Claude and Pi export it; Codex provides the exact
value in SpecForge SessionStart context. Substitute it in every shell command.

## 1. Pick the spec

A store id is exactly one of:

- ten lowercase hex characters, `[0-9a-f]{10}` (it is `sha1(uuid)[:10]`), or
- `template-` followed by one of `general`, `design`, `research`, `design-impl`,
  `impl`, `deck` — that list and nothing else.

**Check `$ARGUMENTS` against those two forms before it goes anywhere near a
shell.** The enumeration is the point: `template-<anything>` would let
`template-$(id)` through as identifier-shaped. Anything that does not match is
not an id, whatever it looks like. Treat it as a description and find the real id
with

```
node "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" list
```

which is also what to run when `$ARGUMENTS` names no spec at all. List, then ask
which one, unless exactly one spec is attached to this session.

## 2. Export

```
node "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" export-md "<id>" [--out "<dir|file.md>"]
```

`--out` takes a directory (the file is named from the spec title) or a path
ending in `.md`. Omitted, it writes into the current directory.

**Both placeholders are filled from what the human typed, so treat them as data.**
Quote them, as above: a destination with a space in it otherwise arrives as two
arguments and the export lands somewhere else.

Quoting is not sanitising. Double quotes stop word splitting but NOT substitution,
so `$`, a backtick, `;`, `|`, `&` or a newline still run inside them.

**If either placeholder carries one of those characters, do not paste it into the
command.** For the id that cannot happen once step 1's check has run, which is why
that check is a closed enumeration rather than a warning. For the path, ask for a
plain one, or write to a directory you choose and tell the human where it went.
The CLI validates its arguments, but only after the shell has had its turn.

It prints `{ id, mdPath, assetsDir, assets, warnings }`:

- **`assetsDir`** is set when the spec has diagrams. They are written next to the
  `.md` as SVG files and referenced as ordinary images, because every markdown
  renderer strips inline SVG. **The folder has to travel with the file** — a `.md`
  moved on its own keeps its links but loses the pictures.
- **`warnings`** names anything the conversion could not carry faithfully (a
  table cell that held a list, an element with no markdown form). Empty is the
  normal case; if it is not empty, say what it says.

A `deck` spec exits non-zero: slides are not a linear document, and flattening
them is not something this does.

## 3. Report

Give the human the path, and mention the assets folder when there is one. Do not
paste the markdown into the conversation: the file is the deliverable, and a spec
is long.

## Notes

- Nothing is written into the store. The markdown is a rendering of `spec.html`
  at the moment you asked, so re-exporting after an edit is how you refresh it;
  there is no stale copy to invalidate.
- The reverse direction is the convert command — `/specforge:convert <file.md>`
  under Claude Code, `/spec-convert <file.md>` under Pi — which imports markdown
  as a **new** spec and never writes over an existing one. Name the one your
  harness registers; the other does not exist there.

From NitinJ/specforge, MIT.

Signals

Stars
5
Forks
0
Open issues
1
Last commit (this folder)
Sep 8, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from NitinJ

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get export-md running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying export-md?

CallGet help
Cite this page

export-md skill. Agent Mart. https://agentmart.dev/skills/nitinj-export-md (last updated 2026-10-24)