Reviewing API Documentation
This skill provides a systematic approach to reviewing API documentation routes for accuracy and consistency.
Review Process
Step 1: Compare with Source Code
For each documented API:
- Read the source file completely
- Compare function signatures - Must match exactly
- Verify types - Generics, parameters, return types
- Check JSDoc - Descriptions should match
Step 2: Check properties.ts
Verify each property:
- Generic constraints match source code
- Parameter types are accurate
- Return type is correct
- All
hreflinks are valid - No unused properties defined
Step 3: Check index.mdx
Verify content:
- Front matter is complete (title, description, source, contributors)
- Function signature matches source exactly
- All generics documented
- All parameters documented with correct headings (Parameters vs Properties)
- Explanation references specific parameters/properties
- Examples are realistic and follow conventions
- Related section uses correct framework terminology
Step 4: Check Menu and Links
- API listed in menu.md (alphabetical order)
- All internal links work
- Cross-package links use absolute paths
- No broken links to types or functions
Common Issues to Find
Signature Mismatches
// Source code
export function validate(form: FormStore, config?: Config): void;
// ❌ Documentation shows different signature
const result = validate(form); // Missing config, wrong return
Missing Parameters
Documentation should include ALL parameters from source:
## Parameters
- `form` <Property {...properties.form} />
- `config` <Property {...properties.config} /> <!-- Don't forget optional params -->
Wrong Headings
| API Type | Heading |
|---|---|
| Functions | ## Parameters |
| Components | ## Properties |
Outdated Examples
Examples must work with current API:
// ❌ Old API usage
const form = createForm(schema);
// ✅ Current API
const form = createForm({ schema });
Framework Terminology
| Framework | Related Section Heading |
|---|---|
| Solid | ### Primitives |
| Qwik | ### Hooks |
| Preact | ### Hooks |
| Vue | ### Composables |
| Svelte | ### Runes |
Type Links
// ❌ Wrong - using constraint type name
generics: [{ type: 'custom', name: 'RequiredPath' }];
// ✅ Correct - using parameter name
generics: [{ type: 'custom', name: 'TFieldPath' }];
Cross-Package Links
// ❌ Wrong - relative across packages
href: '../../../core/api/Schema/';
// ✅ Correct - absolute path
href: '/core/api/Schema/';
Verification Checklist
properties.ts
- All generics have
modifier: 'extends' - Custom types have valid
hreflinks - Property order:
name,href,generics - No unused properties
- Types match source exactly
index.mdx
- Title matches API name exactly (case-sensitive)
- Description ends with period
- Source path is correct
- Function signature code block matches source
- Correct heading (Parameters/Properties)
- Explanation references specific params/props
- Returns section present (unless void or component)
- Examples section present (unless component/type)
- Related section uses correct framework terminology
- No Types in Related section
Menu Integration
- API listed in appropriate menu.md
- Alphabetical order maintained
- Link path matches folder structure
Link Validation
- All
hrefin properties.ts resolve - ApiList links are valid
- Cross-framework links use absolute paths
- External links (Valibot) use full URLs
Review Output Format
Document issues found:
## Review: createForm
### Issues Found
1. **Signature mismatch** (L15)
- Source shows `config: FormConfig<TSchema>`
- Docs show `config: Config`
2. **Missing parameter** (Parameters section)
- `initialInput` not documented
3. **Broken link** (properties.ts L23)
- `href: '../FormConfig/'` - FormConfig not documented
### Recommendations
- Update properties.ts with correct FormConfig type
- Add initialInput to Parameters section
- Create FormConfig type documentation
