Resolve which document, page, and (optionally) selected element the user is currently viewing in the open-doc dev server.

MITAuto-check passedFrontend & Design

Install Current Doc

skills CLI
$ npx skills add simonliu-ai-product/open-doc --skill current-doc -a claude-code

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

GitHub CLI
$ gh skill install simonliu-ai-product/open-doc current-doc --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/simonliu-ai-product/open-doc.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/core/skills/current-doc .claude/skills/current-doc && 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
current-doc
GitHub stars
108
Token cost
~1.8k tokens
SKILL.md length
986 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
MIT

At a glance

Resolve which document, page, and (optionally) selected element the user is currently viewing in the open-doc dev server.

  • Works in 5 steps: Read node_modules/.open-doc/current.json. → Check updatedAt is recent. → Read pagePath (e.g.… → …
  • Frontend & Design work in your project
  • SKILL.md covers Re-read on every deictic turn…, How to read it, What you get and Rendered pages are not entries…, plus 6 more sections
  • Calls git

What it does

Current Doc is an agent skill from simonliu-ai-product/open-doc. Resolve which document, page, and (optionally) selected element the user is currently viewing in the open-doc dev server. Consult this whenever the user references "this page", "this document", "this element", "the page I'm on", "the report I'm looking at", or any deictic reference to document content without naming it. Re-read nodemodules/.open-doc/current.json at the start of every such turn — the user navigates between turns, so a value you read earlier in the conversation is almost certainly stale.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Frontend & Design. The repository describes itself as: The document framework built for agents — write reports as React, get real A4 pages, an outline, page numbers, and a PDF. The licence is MIT.

When your agent uses it

  • Frontend & Design work in your project

Example prompts

  • “this page”
  • “this document”
  • “this element”
  • “/current-doc”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Read node_modules/.open-doc/current.json.
  2. Check updatedAt is recent.
  3. Read pagePath (e.g. docs/q3-review/index.tsx).
  4. Work out what is on pageNumber — by the selection, or by matching visible content, remembering that a flow section spans many sheets.
  5. Consult the doc-authoring skill for the spacing and vertical-budget rules, then edit in place.

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

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

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Current Doc loads about 1.8k tokens when it runs. Until then it costs about 131 tokens; SKILL.md has 986 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~131
When it runs · the whole SKILL.md, loaded when a task matches
~1.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 passed

The automated check found no risky patterns in SKILL.md.

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from simonliu-ai-product/open-doc at commit af6095d, republished under its MIT licence (© simonliu-ai-product). 986 words, ~1,810 tokens.

Download SKILL.mdSave it as .claude/skills/current-doc/SKILL.md (or your agent's skills folder).
name
current-doc
description
Resolve which document, page, and (optionally) selected element the user is currently viewing in the open-doc dev server. Consult this whenever the user references "this page", "this document", "this element", "the page I'm on", "the report I'm looking at", or any deictic reference to document content without naming it. Re-read `node_modules/.open-doc/current.json` at the start of every such turn — the user navigates between turns, so a value you read earlier in the conversation is almost certainly stale.

Where is the user right now?

When the user says "fix this page", "tighten this heading", or "the report I'm looking at", they almost never name the document id, page number, or element — they mean wherever they are in the dev viewer. Before asking "which document?" or "which element?", check the file the dev server writes on every navigation and inspector pick.

Re-read on every deictic turn — never reuse a prior read

current.json is a live cursor, not a fact about the conversation. The user moves between documents, pages, and elements freely between your turns — including while you were doing other work. Read the file fresh at the start of every new turn that uses a deictic reference, even if:

  • you already read it earlier in this same conversation,
  • you just finished editing the document it pointed to,
  • the user's new message sounds like a continuation ("now make it bigger", "also fix this one", "keep going").

A "continue editing" follow-up is exactly the case where the user has likely just scrolled to a different page or picked a different element. Trusting your last read here will silently edit the wrong sheet. Re-read, compare docId / pageIndex / selection against what you used last time, and act on the new values.

How to read it

node_modules/.open-doc/current.json

Path is relative to the project root (the user's cwd, the directory that contains docs/ and package.json). Use the Read tool. The file is JSON.

What you get

json
{
  "docId": "q3-review",
  "pageIndex": 2,
  "pageNumber": 3,
  "totalPages": 8,
  "docTitle": "Q3 Review",
  "pagePath": "docs/q3-review/index.tsx",
  "selection": {
    "line": 42,
    "column": 6,
    "tagName": "h2",
    "text": "Availability"
  },
  "updatedAt": "2026-08-17T14:32:11.123Z"
}
  • docId — folder name under docs/. Use as-is for any /__docs/<id>/... API or as the URL segment (/d/<docId>).
  • pageIndex — 0-based rendered page index.
  • pageNumber — 1-based, for talking to the user ("page 3 of 8").
  • totalPages — how many sheets the document currently renders to.
  • pagePath — relative path to the document source. Hand straight to Read / Edit.
  • selection — null if nothing is selected. Otherwise, the JSX element the user picked in the inspector overlay:
    • line (1-indexed) and column (0-indexed) point to the JSX opening tag inside pagePath. This is the canonical handle — match against the source line, not the rendered DOM.
    • tagName is the rendered DOM tag, lowercased ("h1", "p", "td").
    • text is a trimmed snippet (≤120 chars) of the element's textContent, useful to confirm you are looking at the right node.
    • Selection auto-clears whenever the user moves to a different document or page.
  • updatedAt — ISO timestamp of the last navigation or selection change. Use it to detect staleness.

Rendered pages are not entries in the default export

This is the one thing that differs from a slide deck, and getting it wrong means editing the wrong thing.

export default [Cover, Contents, flow(<>…</>)] has three entries, but may render to twelve sheets — the framework measures a flow() section and packs it across as many pages as it needs. So:

  • pageIndex indexes rendered sheets, not the array. Do not use it to subscript the default export.
  • To find what to edit, prefer selection (it points at real source coordinates), then the page's visible text, then the surrounding heading.
  • If the user is on a flow page and there is no selection, identify the content by what they can see — read the source and match the prose — rather than counting array entries.
  • A fixed DocPage component is one sheet, so for documents made only of fixed pages the index does line up. Confirm with pagePath before relying on that.

When to use this

  • The user references the current document/page deictically: "this", "here", "the page I'm on", "what I'm looking at".
  • The user references a specific element: "this heading", "this table", "tighten this", "make this smaller". If selection is non-null, that's the element they mean.
  • Before asking "which document?" or "which page?" as a clarifying question — check this file first.
  • Before guessing from git log, recently-edited files, or the newest folder under docs/.
Show full SKILL.md (359 more words)Show less

When NOT to use this

  • The user names a document explicitly ("edit q3-review") — use that name directly.
  • The apply-comments workflow already finds its own targets via @doc-comment markers; it does not need this skill.
  • For listing or discovering documents — read docs/ directly.

Staleness — verify before acting

updatedAt is the last time the user navigated. Treat it like a cache:

  • Fresh (under ~5 minutes old): trust it. Open pagePath, do the work.
  • Older than ~5 minutes: confirm with the user before editing. The dev server may not be running; the user may have switched contexts.
  • Hours/days old: ignore it. Ask which document they mean.

A newer updatedAt than the one you saw last turn is the normal signal that the user has moved — switch to the new docId / pageIndex / selection without asking.

When the file is missing

  • The dev server has not been opened on a document yet, or has never run. A static build never writes it.
  • Don't create the file or guess. Ask which document they mean, or suggest they open it in the dev server first.

Example — page-level reference

User: "tighten the spacing on this page"

  1. Read node_modules/.open-doc/current.json.
  2. Check updatedAt is recent.
  3. Read pagePath (e.g. docs/q3-review/index.tsx).
  4. Work out what is on pageNumber — by the selection, or by matching visible content, remembering that a flow section spans many sheets.
  5. Consult the doc-authoring skill for the spacing and vertical-budget rules, then edit in place.

If current.json is missing or stale, ask: "Which document and page should I tighten? The dev server hasn't published a current page recently."

Example — element-level reference

User: "make this bigger"

  1. Read node_modules/.open-doc/current.json.
  2. If selection is non-null, that is the element. Read pagePath, jump to selection.line, and find the JSX opening tag near that line/column. Confirm against selection.text and tagName.
  3. Consult doc-authoring for the print type scale before editing — a size that looks fine on screen can print below the legibility floor.
  4. Edit the JSX node in place.

If selection is null, fall back to the page-level flow above — and consider asking "which element?", since the user used a deictic but hasn't picked one in the inspector.

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

Files

Just SKILL.md in packages/core/skills/current-doc of simonliu-ai-product/open-doc.

Open the folder on GitHubat commit af6095d

Compare with similar skills

Current Doc 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.

Current Doc compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Current Doc this skillsimonliu-ai-product/open-doc108—~1.8kAutomated safety check: PassMIT
Web Artifacts Builderanthropics/skills180k41 repos~769Automated safety check: PassApache-2.0
React Doctormakeplane/plane61k12 repos~657Automated safety check: PassAGPL-3.0
Impeccablebestofjs/bestofjs3.1k27 repos~2.6kAutomated safety check: PassMIT
Figma Design System Builderwarpdotdev/warp65k2 repos~4.4kAutomated safety check: PassAGPL-3.0
Web Interface Guidelines Reviewervercel-labs/openreview1.7k97 repos~308Automated safety check: PassNone

Similar skills

  • Web Artifacts Builder

    anthropics/skills

    Official

    Builds multi-component claude.ai HTML artifacts as a small React, TypeScript and Tailwind project, then bundles it into one shareable HTML file.

    180k GitHub starsUsed in 41 repos~769 tokens
    Frontend & DesignAuto-check passed
  • React Doctor

    makeplane/plane

    Scans React code for lint, accessibility, bundle size and architecture issues, reports a health score and checks that changes do not lower it.

    61k GitHub starsUsed in 12 repos~657 tokens
    Frontend & DesignAuto-check passed
  • Impeccable

    bestofjs/bestofjs

    A skill your agent uses when the user wants to design, redesign, shape, critique, audit, polish, clarify, distill, harden, optimize, adapt, animate, colorize, extract, or otherwise improve a…

    3.1k GitHub starsUsed in 27 repos~2.6k tokens
    Frontend & DesignAuto-check passed
  • Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.

    65k GitHub starsUsed in 2 repos~4.4k tokens
    Frontend & DesignAuto-check passed
  • Web Interface Guidelines Reviewer

    vercel-labs/openreview

    Official

    Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my…

    1.7k GitHub starsUsed in 97 repos~308 tokens
    Frontend & DesignAuto-check passed
  • Tailwindcss Development

    anonaddy/anonaddy

    Always invoke when the user's message includes 'tailwind' in any form.

    4.9k GitHub starsUsed in 10 repos~865 tokens
    Frontend & DesignAuto-check passed

More from simonliu-ai-product/open-doc

  • Apply Comments

    simonliu-ai-product/open-doc

    A skill your agent uses when the user asks to apply, process, or clear the comments they left in the open-doc inspector — phrases like "apply the comments", "apply my edits", "I left notes on the…

    108 GitHub stars~948 tokensUpdated 3 days ago
    Auto-check passed
  • Doc Authoring

    simonliu-ai-product/open-doc

    Technical reference for writing or editing open-doc pages — file contract, the A4/B4/A3 page canvas, print type scale, the vertical budget that decides where a page breaks, tables, charts, table of…

    108 GitHub stars~6.8k tokensUpdated 3 days ago
    Auto-check passed
  • Create Doc

    simonliu-ai-product/open-doc

    A skill your agent uses when the user wants to create, draft, author, or generate a new document, report, whitepaper, proposal, memo, or spec in this open-doc repo.

    108 GitHub stars~2.4k tokensUpdated 3 days ago
    Auto-check passed
  • Doc Runtime Patterns

    simonliu-ai-product/open-doc

    Implementation patterns for the @open-doc/core runtime — the split between the viewer and the published bundle, virtual modules, the flow pipeline, the ops layer, dev-only plugins, and the…

    108 GitHub stars~2.1k tokensUpdated 3 days ago
    Auto-check passed
  • Print Layout Review

    simonliu-ai-product/open-doc

    Reviews page layout, typography, and pagination code in open-doc against a print craft bar — the sheet is the deliverable, not the screen.

    108 GitHub stars~2k tokensUpdated 3 days ago
    Auto-check passed
  • Viewer UI Guidelines

    simonliu-ai-product/open-doc

    Design and accessibility rules for the open-doc viewer chrome — the browser shell, sidebars, thumbnail rail, outline, assets and design panels, inspector overlay, and menus.

    108 GitHub stars~1.6k tokensUpdated 3 days ago
    Auto-check passed

Questions about Current Doc

What does Current Doc do?

Resolve which document, page, and (optionally) selected element the user is currently viewing in the open-doc dev server. Current Doc is an agent skill from simonliu-ai-product/open-doc. Resolve which document, page, and (optionally) selected element the user is currently viewing in the open-doc dev server.

When should I use Current Doc?

Current Doc fits situations like: frontend & Design work in your project.

How do I install Current Doc in Claude Code?

Run `npx skills add simonliu-ai-product/open-doc --skill current-doc -a claude-code`. Or copy the skill folder (packages/core/skills/current-doc in simonliu-ai-product/open-doc) into .claude/skills/current-doc in your project. Claude Code loads it when a task matches its description.

How do I install Current Doc in Codex?

Run `npx skills add simonliu-ai-product/open-doc --skill current-doc -a codex`. Or copy the skill folder (packages/core/skills/current-doc in simonliu-ai-product/open-doc) into .agents/skills/current-doc in your project. Codex loads it when a task matches its description.

Can I use Current Doc 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 simonliu-ai-product/open-doc --skill current-doc -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/current-doc, .gemini/skills/current-doc, .github/skills/current-doc and .opencode/skills/current-doc in your project.

What does Current Doc need to run?

Going by SKILL.md and its folder, Current Doc needs the command-line tools its instructions call (git).

Does Current Doc access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Current Doc safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Current Doc use?

Current Doc 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 Current Doc use?

About 1.8k tokens (SKILL.md is roughly 7.2k 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 Current Doc?

Skills that share tags, products or a category with Current Doc: Web Artifacts Builder (anthropics/skills, 180k stars), React Doctor (makeplane/plane, 61k stars), Impeccable (bestofjs/bestofjs, 3.1k stars) and Figma Design System Builder (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Current Doc?

simonliu-ai-product (a GitHub organization) maintains it in simonliu-ai-product/open-doc, which has 108 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 7, 2026.

Source: simonliu-ai-product/open-doc on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.