Audit Chatto API design for consistency, completeness, integration use, and future growth. Use for a whole-API review or a focused review of a service or workflow.
70
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Ask: Can an independent integration use Chatto's supported features without copying the bundled frontend's assumptions?
Review the public contract first. Inspect implementation only to confirm behavior that the contract does not settle. Report implementation defects separately from design gaps. This skill does not authorize fixes, issues, commits, or PRs; those need a separate user instruction.
AGENTS.md, including the current release
policy. Keep Chatto separate from Authling and shared framework modules.proto/chatto/, mounted services, and
generated API docs. Use FDRs to identify
supported features and interfaces
to check exposed surfaces. Use the glossary
for terms and relevant ADRs for intentional design choices.| Area | Questions |
|---|---|
| Names and ownership | Do service, method, field, and resource names have clear, consistent meanings? Are public, admin, self-only, and operator actions in the right scope? Are old aliases or duplicate operations still needed? |
| Resource shapes | Is each resource represented by a canonical type where access and lifecycle match? Do summaries clearly identify previews? Can related IDs be resolved without parsing labels, URLs, or private data? |
| Useful completeness | Can clients discover, read, change, and observe each supported feature? Can they read state they can write? Can they retrieve all members behind a count or preview? Are singular or batch reads needed for a real workflow? |
| Integration independence | Can clients work without a browser session, sidebar model, frontend cache, or large bootstrap response where these are not inherent requirements? Can bots use the features allowed by their permissions? Are defaults based on product meaning rather than one screen? |
| Updates and commands | Are masks, field presence, defaults, resets, nulls, and empty values clear? Are state updates distinct from commands? Does a successful write return useful resulting state or a clear way to read it? |
| Collections | Are potentially large results bounded? Are page defaults, limits, filters, counts, ordering, tie-breakers, and continuation rules defined? Do batch reads define limits, duplicates, result order, missing targets, and partial failures? |
| Access and privacy | Are caller identity, membership, permissions, and resource visibility clear? Are self-only fields kept private? Do counts, previews, batches, errors, and events respect the same visibility boundaries? |
| Errors and retries | Can clients distinguish bad input, missing access, missing resources, conflicts, limits, and temporary failure? Are no-op behavior and retry safety clear? What happens if a write succeeds but its response is lost? |
| Realtime and recovery | Can clients read current state, observe relevant changes, and recover after a gap? Can they resolve IDs from events? Are snapshot, event, ordering, cursor, and read-after-write contracts clear? Does live delivery complement explicit reads? |
| Future growth | Can supported features grow without unbounded responses or repeated breaking redesigns? Are enums, unions, optional fields, and version boundaries deliberate? Are extension points justified by real needs rather than hypothetical flexibility? |
| JSON and generated clients | Can both JSON and protobuf consumers express the same operations? Are masks, timestamps, integer counts, enums, and absence understandable? Are generated clients and public examples aligned with the contract? |
| Documentation | Can an API user identify required IDs, access, defaults, side effects, response meaning, and important limits without reading server code? Do guides agree with schemas and behavior? |
Use source paths and line references for findings. Distinguish a confirmed problem from an open question. A missing test alone is not a design defect.
Run existing focused checks when they can resolve uncertainty. Schema lint and compatibility checks do not prove usability or behavior. Do not run a full suite or start a server merely to inventory the API. Follow repository browser tooling rules when browser verification is needed. State what was verified.
Do not require CRUD, batch methods, events, or configuration for every resource. Require them only when a supported workflow needs them. Treat documented exceptions as choices to assess, not automatic violations.
Lead with a short verdict on integration use, completeness, consistency, and future growth. State the scope and verification limits.
For each actionable finding, give:
Separate confirmed defects, design improvements, and open questions. Rank findings by client impact, not naming preference. Group related findings into small, coherent changes and recommend one next step.
Do not reopen explicitly deferred work unless new evidence changes its impact. Do not invent follow-up tasks to keep the audit going. If no meaningful gaps remain, say that the API is good enough for the reviewed scope and stop.
5cbd584
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.