AI Skill Report Card

Creating TypeScript Controller Endpoints

C+68·May 6, 2026·Source: Web
10 / 15
TypeScript
export const createEntityController = async ( body: Namespace.Entity.CreateEntityParams, ): Promise<AxiosResponse<Namespace.Entity.Entity, any>> => { const url = '/api/entity/'; const instance = genRequestInstance(); try { const response = await instance.post(url, body); return response; } catch (error) { console.error('Erro na requisição:', error); return Promise.reject(error); } };
Recommendation
Add template or code generation framework showing how to systematically transform entity specs into controller functions
12 / 15
  1. Identify entity and parameters - Extract entity name and required URL parameters
  2. Generate function signature - Create properly typed async function
  3. Build URL pattern - Construct endpoint URL with parameters
  4. Add JSDoc documentation - Document parameters, returns, and throws
  5. Implement request logic - Use genRequestInstance and handle response

Progress:

  • Define function name as create{EntityName}Controller
  • Add proper TypeScript typing for parameters and return
  • Generate JSDoc comments
  • Build URL with parameters in path
  • Implement POST request with error handling
Recommendation
Include edge cases like nested resources, authentication requirements, and validation patterns
15 / 20

Example 1: With URL parameter Input: Entity "AdicionalNoturno" with versao parameter Output:

TypeScript
/** * Creates a new AdicionalNoturno record * @param {Planejamento.Versao.Versao['id']} versao - The version ID * @param {Pessoal.Premissas.AdicionalNoturno.CreateAdicionalNoturnoParams} params - The creation parameters * @returns {Promise<AxiosResponse<Pessoal.Premissas.AdicionalNoturno.AdicionalNoturno, any>>} The created AdicionalNoturno * @throws {Error} When request fails or authentication is invalid */ export const createAdicionalNoturnoController = async ( versao: Planejamento.Versao.Versao['id'], params: Pessoal.Premissas.AdicionalNoturno.CreateAdicionalNoturnoParams, ): Promise<AxiosResponse<Pessoal.Premissas.AdicionalNoturno.AdicionalNoturno, any>> => { const url = `/api/pessoal/versao/${versao}/adicional-noturno/`; const instance = genRequestInstance(); try { const response = await instance.post(url, params); return response; } catch (error) { console.error('Erro na requisição:', error); return Promise.reject(error); } };

Example 2: Without URL parameters Input: Entity "Area" with no parameters Output:

TypeScript
/** * Creates a new Area record * @param {Planejamento.Cadastro.Area.CreateAreaParams} body - The area data to create * @returns {Promise<AxiosResponse<Planejamento.Cadastro.Area.Area, any>>} The created Area * @throws {Error} When request fails or authentication is invalid */ export const createAreaController = async ( body: Planejamento.Cadastro.Area.CreateAreaParams, ): Promise<AxiosResponse<Planejamento.Cadastro.Area.Area, any>> => { const url = '/api/planejamento/area/'; const instance = genRequestInstance(); try { const response = await instance.post(url, body); return response; } catch (error) { console.error('Erro na requisição:', error); return Promise.reject(error); } };
Recommendation
Provide defaults for common patterns like error response types and standard JSDoc templates rather than explaining what JSDoc is
  • Function naming: Use create{EntityName}Controller pattern
  • Parameter order: URL parameters first, then body/payload last
  • URL construction: Parameters go in path (/api/entity/${param}/), body goes in POST request
  • Type imports: Use namespace.entity pattern for typing
  • Error handling: Let genRequestInstance handle auth errors, only log and reject locally
  • JSDoc: Always include @param, @returns, and @throws annotations
  • Don't add manual error handling beyond logging - genRequestInstance handles auth/network errors
  • Don't put body parameters in URL query strings
  • Don't forget trailing slash in API URLs
  • Don't mix parameter types in function signature
  • Don't skip JSDoc documentation
  • Don't hardcode API base URL (handled by genRequestInstance)
0
Grade C+AI Skill Framework
Scorecard
Criteria Breakdown
Quick Start
10/15
Workflow
12/15
Examples
15/20
Completeness
8/20
Format
12/15
Conciseness
11/15