Chalk Labs
Need help deploying export?
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.
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
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.
About
Use cases: documents, design, frontend, agent-building
Reviews
Write a reviewNo 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
Tools it pre-approves 4
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
Read,Bash,mcp__claude_ai_Google_Drive__create_file,mcp__claude_ai_Google_Drive__get_file_metadata
What's inside
- Skill name
export- Description
- Export a spec from the store to Google Docs. Auto-invoked when the owning session's Stop/UserPromptSubmit hook surfaces a queued export (the human clicked "Export to Google Docs" in the review UI); can also be run manually. Reads the spec HTML, creates a Google Doc via the connected Google Drive MCP, and reports the Doc link back so the dropdown shows it.
- License
- MIT
- Allowed tools
- Read,, Bash,, mcp__claude_ai_Google_Drive__create_file,, mcp__claude_ai_Google_Drive__get_file_metadata
- Instructions
- 95 lines in SKILL.md · view on GitHub
Before installing
- Pre-approves some shell commands
- Instructions call the network
Files (1)
- SKILL.md
SKILL.md (first lines)
# export
Export one or more specs from the store to **Google Docs**. The browser can't call
the Drive MCP — only this session can — so the UI queues a request and the hook
routes here. The hook message lists each queued spec **id** and title.
`${CLAUDE_PLUGIN_ROOT}` below denotes the installed plugin directory. Claude and
Pi export it; Codex provides the exact value in SpecForge SessionStart context.
Substitute that value in every path and shell command. Specs live at
`~/.specforge/specs/<id>/spec.html`.
## 1. Locate the spec file
For each queued spec id:
```
node "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" comments <id> --all
```
prints `{ specId, htmlPath, ... }` (`--all` because this flow wants the full
comment history; the default payload is batch-scoped to pending threads).
`htmlPath` is the on-disk spec (clean content —
the review layer is injected only at serve time, so the file is plain house HTML).
Use the spec **title** from the hook message for the Doc title.
**A spec with child specs exports as one flat document, not as its root alone.**
A Doc has no folder, so a recipient given only the parent gets a document with
holes in it and no way to tell how much is missing. Ask the daemon for the
flattened tree instead of reading `htmlPath`:
```
curl -s "http://127.0.0.1:4180/spec/<id>?flat=1"
```
That is the root's document with every descendant appended, each in its own
section, section ids namespaced so the anchors inside it still resolve. Check
first with `curl -s "http://127.0.0.1:4180/api/spec/<id>/children"`, and use
`htmlPath` unchanged when the list is empty, which is every spec written before
child specs existed.
## 2. Mark it in-progress
So the dropdown shows "Exporting…" (the hook already does this when it routes here;
do it explicitly for a manual run):
```
node "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" export-working <id>
```
## 3. Create the Google Doc via the Drive MCP
Use the document step 1 settled on — the flattened tree for a spec with
children, `htmlPath`'s full contents for a spec without. Reading `htmlPath` here
regardless is the mistake this sentence exists to prevent: it makes a Doc of the
root alone, which is exactly the document with holes in it that step 1 is about.
Create the doc with your connected Google
Drive MCP's create-file tool (`mcp__claude_ai_Google_Drive__create_file`, or the
equivalent on whatever Drive MCP is connected):
- `title`: the spec title
- `textContent`: the full spec HTML
- `contentMimeType`: `text/html`
Drive converts HTML → a Google Doc (headings, lists, tables, bold/links survive;
the rich CSS/charts/`<script>` are dropped — this is a structural export). The
response carries `mimeType` and `viewUrl`.
**Verify the conversion:** the response `mimeType` must be
`application/vnd.google-apps.document`. If it isn't (the upload stayed an `.html`
file), delete nothing — instead re-create with the body text extracted to plain
text and `contentMimeType: text/plain` (always converts to a Doc, just unstyled).
The shareable link is the response's `viewUrl` (shape:
`https://docs.google.com/document/d/<fileId>/edit`).
## 4. Report the link back
```
node "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" export-done <id> --url "<viewUrl>"
```
On any failure (MCP not connected, auth, conversion both ways failed):
```
node "${CLAUDE_PLUGIN_ROOT}/lib/specforge-cli.mjs" export-done <id> --error "<short reason>"
```
The dropdown shows the **Open Google Doc** link (or the error) on its next poll.
## 5. Report
Briefly tell the human: which spec(s) exported and the Doc link(s).From NitinJ/specforge, MIT.
More from NitinJ/specforge
- 0.579score
generate-template
NitinJ
Write a spec template from a prompt.
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
list-specs
NitinJ
List SpecForge specs — either every spec in the store (mode "all") or just the specs attached to this session (mode "mine").
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
migrate-spec
NitinJ
Move one existing spec onto the SpecForge component library.
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
tune-templates
NitinJ
Optimize the SpecForge spec templates from the review-comment history.
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
write-review
NitinJ
Review a SpecForge spec as a reviewer agent, and file the review as a child spec of the spec being reviewed.
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
export-md
NitinJ
Export a spec from the store as a GitHub-flavoured markdown file, plus a sidecar directory holding its diagrams.
SkillBFreshness: B★ 5Claude Code +9 - 0.575score
create-spec
NitinJ
Author a new house-style spec into the SpecForge store.
SkillBFreshness: B★ 5Claude Code +9 - 0.575score
convert-spec
NitinJ
Convert an existing design/spec file into a SpecForge spec in the store.
SkillBFreshness: B★ 5Claude Code +9 - 0.575score
review-spec
NitinJ
Process a submitted batch of human comments on a spec in the store: reply to each thread inline and amend the spec accordingly.
SkillBFreshness: B★ 5Claude Code +9 - 0.574score
start-specforge
NitinJ
Start or reuse the local SpecForge daemon and return its browser index URL.
SkillBFreshness: B★ 5Claude Code +9
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
- Repository
- github.com/NitinJ/specforge
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from NitinJ
- 0.579score
generate-template
NitinJ
Write a spec template from a prompt.
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
list-specs
NitinJ
List SpecForge specs — either every spec in the store (mode "all") or just the specs attached to this session (mode "mine").
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
migrate-spec
NitinJ
Move one existing spec onto the SpecForge component library.
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
tune-templates
NitinJ
Optimize the SpecForge spec templates from the review-comment history.
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
write-review
NitinJ
Review a SpecForge spec as a reviewer agent, and file the review as a child spec of the spec being reviewed.
SkillBFreshness: B★ 5Claude Code +9 - 0.579score
export-md
NitinJ
Export a spec from the store as a GitHub-flavoured markdown file, plus a sidecar directory holding its diagrams.
SkillBFreshness: B★ 5Claude Code +9
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 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.
Cite this page
export skill. Agent Mart. https://agentmart.dev/skills/nitinj-export (last updated 2026-10-24)