## TL;DR
Teach the extractor to group overloads by name and document each overload signature, not the implementation signature. Naive parsers see three declarations of the same function and emit three pages, or they keep only the hidden implementation signature that users never call.
Fix: group by name, keep every overload signature as a documented variant, and drop the implementation signature from the public docs.

## The error
```text
docs agent failed parsing overloaded function signatures
```

## Steps
1. Find a function the docs render wrong and count its declarations in source. Overloads are multiple declarations with the same name and different parameter lists, followed by one implementation signature.
   Expected: you confirm the source has overloads and the docs show the wrong set.
2. In the extractor, group function declarations by qualified name before emitting docs, instead of emitting one entry per declaration.
   Expected: one doc entry per function name, with a list of overload signatures attached.
3. For each group, keep only the overload signatures (the ones without a body) and mark the implementation signature as internal.
   Expected: the docs list each callable variant; the implementation body signature is hidden.
4. Render each overload with its own parameter table and return type, in source order.
   Expected: readers see every way to call the function, matching the .d.ts or header file.
5. Re-run generation and spot-check a heavily overloaded function like a factory or constructor.
   Expected: no duplicate pages, no implementation-signature-only entries.

## Use this when
- overloaded functions show duplicate entries in reference docs
- docs show the implementation signature instead of the public overloads
- C++ or TypeScript APIs with overloads render as one confusing merged page

## Not for this skill when
- there are no overloads, just optional parameters (that is a default-value rendering issue)
- the parser fails on decorators or generics rather than overloads
- you want to document which overload to prefer (a writing question, not a parsing one)

## Variant phrasings
- doc generator duplicates overloaded methods
- reference docs show wrong signature for overloaded function
- extractor keeps implementation signature instead of overloads
- overloaded constructor documented as separate functions

## Why it happens
Overloads look like duplicate declarations to a parser that does not understand the language's overload rules. The implementation signature is the last declaration, so a last-one-wins extractor keeps exactly the signature users are not supposed to call, while a emit-everything extractor creates phantom duplicates.

## Edge cases
- Overloads split across merged declaration files: group by fully qualified name across all parsed files before emitting.
- Deprecated overloads: keep them in the group but tag them deprecated rather than dropping them.
- Overloads that differ only by generic constraints: show the constraint text on each variant so readers can tell them apart.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_KoMBWOBZzLmKWIHhyDtQIw
