Openapi
Skill event4u-app/agent-config/dist/agent-src/skills/openapi
Universal AI Agent OS — audited skills, governance rules, replayable state. One contract, every host agent.
npx -y skills add event4u-app/agent-config --skill openapiAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Use when documenting APIs — OpenAPI/Swagger, PHP attributes, Redocly validation, versioned specs — even when the user just says 'document this endpoint' without naming OpenAPI.
SKILL.md
5.2 KB, as published. Nobody here has run it
openapi
When to use
Use this skill when adding or updating API documentation, writing OpenAPI annotations on controllers, or validating API specs.
Procedure: Add OpenAPI documentation
- Gather context — read
agents/reference/docs/controller.mdfor OpenAPI patterns,agents/settings/contexts/api-versioning.mdfor versioning, and check 2-3 existing controllers for annotation style. - Detect tooling — check
composer.jsonforl5-swaggerorlaravel-openapi, look for@OA\vs#[OA\syntax in existing controllers, find the config file. - Write annotations — add
#[OA\...]attributes to the controller method. Include path, summary, tags, all parameters, and all response codes (200, 401, 403, 404, 422). - Define schemas — create or reuse
#[OA\Schema]for request/response types. Use$reffor shared types. - Validate — run the spec validation (
npx @redocly/cli lintorphp artisan l5-swagger:generate). Fix any errors. - Verify accuracy — compare the documented request/response with the actual controller + FormRequest + Resource to ensure they match.
OpenAPI attributes
Detection
Check the project for OpenAPI tooling:
- Look for
darkaonline/l5-swaggerorvyuldashev/laravel-openapiincomposer.json. - Check for
@OA\or#[OA\annotations in controllers. - Look for
config/l5-swagger.phpor similar config files.
PHP 8 attribute syntax
Modern Laravel projects use PHP 8 attributes instead of docblock annotations:
#[OA\Get(
path: '/projects',
summary: 'List all projects',
tags: ['Projects'],
parameters: [
new OA\Parameter(
name: 'page',
in: 'query',
required: false,
schema: new OA\Schema(type: 'integer'),
),
],
responses: [
new OA\Response(
response: 200,
description: 'Successful operation',
),
],
)]
public function __invoke(ListProjectsRequest $request): ProjectCollection
{
// ...
}
Conventions
- Place OpenAPI attributes directly on the controller method.
- Paths are relative to the server URL. If the server is configured as
http://host/api/v1, thenpath: '/projects'resolves to/api/v1/projects. Never repeat the server prefix in the path. - Use tags matching the resource name (e.g.,
Projects,Users). - Document all parameters — path, query, and header.
- Document all response codes — 200, 201, 401, 403, 404, 422.
- Use schema references (
$ref) for reusable types.
Response documentation
Resource schemas
Define reusable schemas for API Resources:
#[OA\Schema(
schema: 'Project',
properties: [
new OA\Property(property: 'id', type: 'integer'),
new OA\Property(property: 'name', type: 'string'),
new OA\Property(property: 'status', type: 'string', enum: ['active', 'archived']),
],
)]
Pagination schema
Document paginated responses with meta and links:
#[OA\Response(
response: 200,
description: 'Paginated list',
content: new OA\JsonContent(
properties: [
new OA\Property(property: 'data', type: 'array', items: new OA\Items(ref: '#/components/schemas/Project')),
new OA\Property(property: 'meta', ref: '#/components/schemas/PaginationMeta'),
],
),
)]
Validation with Redocly
If the project uses Redocly for OpenAPI validation:
# Validate the spec
npx @redocly/cli lint openapi.yaml
# Preview documentation
npx @redocly/cli preview-docs openapi.yaml
Check for .redocly.yaml or redocly.yaml config in the project root.
Versioned documentation
When the API uses URL-based versioning (e.g., /api/v1/, /api/v2/):
- The version prefix is typically part of the server URL, not the individual endpoint paths.
- Check the OpenAPI server configuration to understand what prefix is already included.
- When creating a v2 endpoint, add new documentation — don't modify v1 docs.
- Mark deprecated endpoints with
deprecated: true.
Output format
- OpenAPI annotations as PHP attributes on controllers/models
- Spec validation passing via Redocly
Auto-trigger keywords
- OpenAPI
- Swagger
- API documentation
- PHP attributes
- Redocly
Gotcha
- OpenAPI attributes must match the actual endpoint behavior — stale docs are worse than no docs.
- The model tends to define response schemas that don't match the Resource class output.
- Don't document internal endpoints in the public API spec.
Do NOT
- Do NOT skip OpenAPI documentation when creating new endpoints.
- Do NOT document internal/private endpoints that are not part of the public API.
- Do NOT use docblock
@OA\annotations when the project uses PHP 8 attributes. - Do NOT hardcode example values that contain real customer data.
- Do NOT create documentation that contradicts the actual implementation.