Claude-skill-registry gate-1-api-specification
Gate 1 validation: API specification quality checks
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/gate-1-api-specification" ~/.claude/skills/majiayu000-claude-skill-registry-gate-1-api-specification && rm -rf "$T"
manifest:
skills/data/gate-1-api-specification/SKILL.mdsource content
Gate 1: API Specification
STOP AND CHECK:
# No 'describe' operations grep -E "describe[A-Z]" api.yml # Must return nothing # No error responses grep -E "'40[0-9]'|'50[0-9]'" api.yml # Must return nothing # No snake_case in properties grep "_" api.yml | grep -v "x-" | grep -v "#" # Must return nothing # No envelope/wrapper objects in responses # Response should be direct $ref or array, not wrapped in {status, data, meta, response, result, caller, token, etc.} yq eval '.paths.*.*.responses.*.content.*.schema | select(has("properties"))' api.yml # Should only return schemas with business object properties, NOT envelope properties # No connection context parameters in operations grep -E "name: (apiKey|token|baseUrl|organizationId)" api.yml # Must return nothing - these come from ConnectionProfile/State # No nullable in API specification grep "nullable:" api.yml # Must return nothing - NEVER use nullable in api.yml # Schema context separation check # Find schemas referenced by other schemas (nested usage) nested_schemas=$(yq eval '.components.schemas[] | .. | select(type == "string" and test("#/components/schemas/")) | capture("#/components/schemas/(?<schema>.+)").schema' api.yml | sort -u) # Find schemas with their own endpoints (direct response usage) endpoint_schemas=$(yq eval '.paths.*.*.responses.*.content.*.schema["$ref"]' api.yml | grep -o '[^/]*$' | sort -u) # Schemas in BOTH lists need review for schema in $nested_schemas; do if echo "$endpoint_schemas" | grep -q "^${schema}$"; then # Count properties in schema prop_count=$(yq eval ".components.schemas.${schema}.properties | length" api.yml) if [ "$prop_count" -gt 10 ]; then echo "⚠️ WARNING: Schema '${schema}' used in BOTH nested and direct contexts with ${prop_count} properties" echo " Consider creating '${schema}Summary' for nested usage" fi fi done
PROCEED ONLY IF:
- ✅ Operation name uses get/list/search/create/update/delete
- ✅ Summary uses "Retrieve" for get/list operations
- ✅ Descriptions from vendor documentation included
- ✅ ONLY 200/201 responses (NO 4xx/5xx)
- ✅ All properties camelCase
- ✅ Nested objects use $ref
- ✅ Response schemas map directly to main business object (NO envelope: status/data/meta/response/result/caller/token)
- ✅ NO connection context parameters (apiKey, token, baseUrl, organizationId) in operation parameters
- ✅ NO
in any schema propertiesnullable: true - ✅ Schemas used in BOTH nested and direct contexts have been reviewed for separation (if >10 properties, consider Summary version)
IF FAILED: Fix API spec before proceeding to generation.