Build a gocron API feature
SkillDocs & knowledgeImplement or review an end-to-end gocron HTTP API change. Use when adding or changing Gin routes, handlers, request or response payloads, authorization, audit behavior, frontend API clients, API types, OpenAPI-style documentation, or API tests.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Build a gocron API feature skill
What this skill tells your AI
The instructions your AI receives, as published by gocronx-team/gocron in .agents/skills/api-feature/SKILL.md and read by ahel’s review.
Keep the route, authorization rule, handler, frontend client, types, translations, documentation, and tests as one change.
Compatibility invariants
- When the contract changes, preserve both deployment orders: an
Nfrontend/client must tolerate anN-1backend, and anNbackend must serveN-1frontends/clients. - Keep routes, methods, accepted requests, response fields and types, status codes, pagination, and SSE event contracts stable. New response fields must be optional; new request fields must have compatible defaults.
- Detect new server capabilities before depending on them. If
N-1lacks an endpoint, field, or stream behavior, retain a safe legacy path or hide it. - Never repurpose an existing field or error code. Breaking contracts require explicit approval, a major version, and migration/rollout/rollback plans.
Performance invariants
- Bound every collection response and expensive input. Require pagination, maximum page sizes, upload/body limits, and bounded filters where applicable.
- Prevent N+1 queries and per-row remote calls. Capture query counts for list endpoints and inspect query plans for new filters, sorting, or joins.
- For polling and SSE, bound connection/resource use, clean up on disconnect, avoid per-client database polling where sharing is safe, and apply backpressure or a documented drop/coalescing policy.
- Do not return or retain unbounded task output/logs. Use paging, cursors, bounded chunks, or streaming with cancellation.
- Benchmark materially affected high-traffic or high-volume endpoints with representative data and report applicable metrics.
Trace the existing path
- Inspect neighboring registrations in
internal/routers/routers.go, handlers underinternal/routers, models/services called by the handler, and the matching frontend module underweb/gocronx-admin/src/api. - Identify every middleware applied to the route group. Classify the endpoint as public, authenticated, admin-only, API-token accessible, or agent-facing.
- Search path allowlists and permission maps before adding a route. Never make an endpoint public merely to make a request succeed.
- Preserve the response conventions in
internal/routers/base. Do not expose raw database, filesystem, command, provider, or secret errors to clients.
Implement the complete contract
- Use the appropriate HTTP method. Mutating operations must not use
GET. - Bind into an explicit request type, validate required fields and bounds, and reject unknown or dangerous input where the existing API pattern permits.
- Enforce authorization server-side before loading or mutating protected data. For resource ids, verify access to the resource rather than only validating that the caller is logged in.
- Use transactions for multi-write operations. Add an audit event for security-sensitive or administrative mutations following existing patterns.
- Update the frontend API wrapper and
src/types/api/api.d.tswhen the UI uses the endpoint. Keep backend and frontend field names/types aligned. - Add both Chinese and English strings when user-visible text changes:
backend
internal/modules/i18n/{zh_cn,en_us}.go, frontendsrc/locales/langs/{zh,en}.json. - Update
docs/zh/guide/api.mdfor a public API contract. Include auth, parameters, example response, error behavior, and compatibility impact.
Test risk, not just success
Add focused tests for:
- valid requests and stable response shape;
- missing, malformed, boundary, and nonexistent-resource input;
- unauthenticated and unauthorized callers;
- ownership or tenant boundary where applicable;
- duplicate submissions or retry behavior for mutations;
- secret/error redaction for sensitive endpoints.
N-1requests/responses and both frontend/backend deployment orders when the feature crosses that boundary.
Run the changed router package with race detection, then relevant service/model
tests. Run frontend type checking when the contract is consumed by the UI.
Finally invoke $verify before committing.
Report the route and method, authorization class, contract changes, backward compatibility, tests added, performance evidence when relevant, and any documentation or i18n files intentionally left unchanged.
Signals
- GitHub stars
- 808
- Forks
- 62
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
api-feature- Source
- github.com/gocronx-team/gocron