Review new or updated Coral source manifests and source PRs for content, style, product fit, query ergonomics, documentation quality, and consistency with existing Coral sources. Use when Codex is asked to review a sources/core/name or sources/community/name source directory, a manifest.yaml, or a GitHub PR that adds or changes a Coral source.
72
87%
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
Review the source as product surface. Do not spend the review mainly restating CI, schema validation, or YAML lint results unless those failures are visible and relevant. Focus on whether the source will be understandable, useful, safe, and consistent for Coral users and agents.
manifest.yaml, any README, and related source docs or tests.sources/core/ or sources/community/. If the PR does not add or update a source, say the skill is not applicable and review normally.CONTRIBUTING.md, especially "Source contributions".AGENTS.md and any nearer AGENTS.md.sources/core/ and the community example in sources/community/hn/.These checks should be based on the authoritative API docs for the API the source exposes.
sources/community/ for community sources; new sources/core/ additions need prior discussion per CONTRIBUTING.md. PRs from external contributors should almost always be in sources/community.version when user-visible behavior, tables, columns, inputs, or semantics change.description says what a user can query, not just what vendor API is wrapped.inputs distinguish secrets from variables correctly, use clear environment-style names, and include enough hints for first success. Environment-style names are prefixed with a service-specific prefix (e.g. GITHUB_API_TOKEN, not API_TOKEN.)API_KEY, TOKEN, ACCESS_TOKEN, PASSWORD, SECRET, APPLICATION_KEY, READ_KEY, ADMIN_KEY, private keys, bearer values, or authorization header values must be kind: secret; endpoint/base URL/site/region/domain/org/account/user/email values may be kind: variable.credential.methods, each method matches the provider's supported setup path. OAuth methods use either device-code flow or authorization-code flow. Authorization-code methods need an explicit pkce value, loopback redirect URI, correct redirect port mode, and support for SSH, VM, and split-browser setups where the CLI accepts a pasted final localhost redirect URL while waiting for the loopback callback. Device-code methods need device_authorization_url, no redirect URI fields, and no static client secret. All OAuth methods need correct endpoint URLs, appropriate client ID/default/input behavior or client.dynamic_registration, correct client-secret transport when applicable, and least-privilege scopes. For Dynamic Client Registration, Coral always registers a native client, source specs cannot configure a web application type, and request_refresh_token_grant: true should appear only when the provider supports registering refresh-token grants. OAuth-protected Streamable HTTP MCP sources include oauth.resource when the provider requires resource indicators. OAuth URL templates may reference only declared kind: variable inputs for non-secret URL components.auth, request headers, query params, or body fields where the provider expects it.source_config fallback second.fetch_limit_default values.description or guide.kind: search table functions with search_limits, stable result identifiers, and useful candidate metadata. Non-retrieval table functions keep the default kind for parameterized operations such as scoped child collections, time-range logs, metrics queries, or detail operations. Ordinary table filters are for exact lookup, scoping, or provider-side filtering; mode: contains is only substring matching. Flag provider-native search modeled as a filter and require a kind: search function.snake_case table names;
quoted SQL table names are valid for compatibility but should not leak odd
provider operation names unless the source is intentionally generated.base_url and input-derived URLs handle hosted, cloud, region, or enterprise variants without making the common case painful.ok_path, error_path, allow_404_empty, and rate-limit hints are present when the provider's API behavior needs them.Utf8; use numeric types for values users should compare or aggregate numerically.Timestamp columns are exposed for important times when Coral can reliably parse or derive them; keep raw provider timestamp fields only when useful.nullable matches provider reality. Do not mark fields non-null just because examples happened to contain them.guide blocks for usage advice; prefer that split.Lead with concrete findings. Use severity labels only when helpful, but do not bury issues under a summary. Prefer:
Findings
- High: `sources/community/foo/manifest.yaml:42` marks `created_at` non-null, but the provider omits it for imported records...
- Medium: `sources/community/foo/README.md:18` shows setup but never states the required token scope...
Open questions
- Is endpoint X intentionally omitted from the first version?
Review notes
- I treated CI lint/schema checks as out of scope unless visible in the diff.If no issues are found, say that directly and include any limits, such as not having live credentials or not inspecting CI logs.
When highlighting a discrepancy between the source and the API documentation, always include links to the exact API documentation page.
334387d
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.