DocSmith

Module in, docs article out — the gaps named for the author, never papered over.

Back to SkillSafe API
or fetch from a URL

Uploaded and dropped files are read in your browser, and the scanner and linter run there too. The running cost estimate is the exception: it sends what you have typed to the SkillSafe pricing endpoint a moment after you stop typing, so the figure by the button is real rather than a guess. A URL fetch also goes through the platform (free, sign-in required) because the page itself is not allowed to call other sites.

A reference article documents the API: definition first, working code for every concept, gotchas last. A nugget is the short engineering-blog version: the problem, the insight, the implementation.

How it works

Nothing to paste? — a small cache module with an eviction-order subtlety its own comments never mention, plus the stylistically cursed draft the team wrote for it. Or , rendered from a saved reply with no run and no charge.

1

Paste the module

As it sits in your repo. The surface scanner lists your exports and flags the undocumented ones in your browser as you type — free, no sign-in, no network. Only the cost estimate under the button talks to the platform, and only after you stop typing.

2

Add what the code cannot say

Who the docs are for, the gotcha that already bit someone, the draft you never finished. Anything the input does not answer comes back as a named gap, not an invented fact.

3

Read the grounding checks first

Before you publish, read the grounding panel and the notes. Your browser re-scans the module against the finished article and names any export the article never mentions, every <placeholder> left for you, and any run whose notes skipped the gaps section. The style linter re-checks the prose in the same pass.

Questions

What costs credits and what is free?

The API surface scanner, the style linter, the grounding checks, the frontmatter helper and the saved example result all run in your browser and cost nothing, with no sign-in. Only writing the article calls the model, and the figure beside the button is the amount reserved for that run; you are charged for what the run actually uses, not the reserve.

How do I know the article did not invent an API?

Two ways. The prompt forbids documenting anything not evident in the pasted code and requires a marked placeholder such as <package-name> wherever a fact is missing. Then your browser checks it: after every run the grounding panel re-scans the module you pasted and reports how many of your exports the article actually names, which placeholders are still unfilled, and whether the notes carried a gaps section. That check runs locally on the real text, so it is a measurement rather than a promise.

What happens when I run it a second time?

The previous run is kept in its own slot in this browser. When the new article renders, the page states the measurable difference between the two: exports covered, style findings and doc confidence, before and after. Show the previous run swaps between them, and Clear saved runs erases both, along with the source you pasted into them. The text still in the boxes above is left alone.

My module is bigger than the limit. What gets sent?

Both ends. Files over the 60,000-character budget are cut in the middle, never at the tail, because the default export, the re-exports and a CommonJS module.exports block all live at the bottom of a file. The cut is announced inside the text the model reads, and the counter under the box tells you in advance which exports, if any, fall inside the part being removed.

The stream died halfway through. Did I lose it?

No. Whatever arrived before the connection ended is parsed and rendered, marked as incomplete, rather than discarded. If it never reached the article section, the raw text is shown with copy and download buttons instead. Retries reuse an idempotency key derived from your input, so a retried run replays the original job rather than buying a second one.