Skip to main content
Glama

apply_quality_rules

Apply quality rules to code for naming, structure, TypeScript, React, accessibility, or all standards to ensure code follows conventions and maintains quality.

Instructions

apply rules|apply standards|apply rules|apply standards|follow conventions|apply - Apply quality rules

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
scopeYesApplication scope
languageNoProgramming language context

Implementation Reference

  • The primary handler function for the 'apply_quality_rules' tool. It destructures the input arguments, selects applicable quality rules based on the provided scope (naming, structure, typescript, react, accessibility, or all), constructs a result object, and returns a formatted ToolResult with summaries of applied rules, async states, and state management recommendations.
    export async function applyQualityRules(args: { scope: string; language?: string }): Promise<ToolResult> {
      const { scope, language: contextLanguage = 'general' } = args;
      
      const applicableRules = [];
      
      if (scope === 'naming' || scope === 'all') {
        applicableRules.push({
          category: 'Naming Conventions',
          rules: QUALITY_RULES.NAMING
        });
      }
      
      if (scope === 'structure' || scope === 'all') {
        applicableRules.push({
          category: 'Code Structure',
          rules: QUALITY_RULES.STRUCTURE
        });
      }
      
      if (scope === 'typescript' || scope === 'all') {
        applicableRules.push({
          category: 'TypeScript Guidelines',
          rules: QUALITY_RULES.ANTIPATTERNS.typescript
        });
      }
      
      if (scope === 'react' || scope === 'all') {
        applicableRules.push({
          category: 'React Guidelines',
          rules: QUALITY_RULES.ANTIPATTERNS.react
        });
      }
      
      if (scope === 'accessibility' || scope === 'all') {
        applicableRules.push({
          category: 'Accessibility Guidelines',
          rules: [
            'Use semantic HTML elements',
            'Provide alt text for images',
            'Ensure keyboard navigation',
            'Maintain color contrast ratios',
            'Use ARIA labels when needed'
          ]
        });
      }
      
      const qualityRulesResult = {
        action: 'apply_quality_rules',
        scope,
        language: contextLanguage,
        rules: applicableRules,
        asyncStates: QUALITY_RULES.ASYNC_STATES,
        stateManagement: QUALITY_RULES.STATE_MANAGEMENT,
        status: 'success'
      };
      
      const rulesSummary = applicableRules.map(r => `${r.category}: ${Array.isArray(r.rules) ? r.rules.length + ' rules' : Object.keys(r.rules).length + ' items'}`).join(', ');
      return {
        content: [{ type: 'text', text: `Scope: ${scope}\nLanguage: ${contextLanguage}\nRules Applied: ${rulesSummary}\n\nAsync States: ${QUALITY_RULES.ASYNC_STATES.join(', ')}\n\nState Mgmt:\n${Object.entries(QUALITY_RULES.STATE_MANAGEMENT).map(([k, v]) => `- ${k}: ${v}`).join('\n')}` }]
      };
    }
  • The ToolDefinition object defining the tool's name, description, input schema (requiring 'scope' with specific enums and optional 'language'), and annotations for UI display.
    export const applyQualityRulesDefinition: ToolDefinition = {
      name: 'apply_quality_rules',
      description: 'apply rules|apply standards|apply rules|apply standards|follow conventions|apply - Apply quality rules',
      inputSchema: {
        type: 'object',
        properties: {
          scope: { type: 'string', description: 'Application scope', enum: ['naming', 'structure', 'typescript', 'react', 'accessibility', 'all'] },
          language: { type: 'string', description: 'Programming language context', enum: ['javascript', 'typescript', 'react', 'vue', 'general'] }
        },
        required: ['scope']
      },
      annotations: {
        title: 'Apply Quality Rules',
        audience: ['user', 'assistant']
      }
    };
  • src/index.ts:660-661 (registration)
    Registration in the central tool dispatcher switch statement within executeToolCall function; routes 'apply_quality_rules' calls to the imported applyQualityRules handler.
    case 'apply_quality_rules':
      return await applyQualityRules(args as any) as CallToolResult;
  • src/index.ts:138-138 (registration)
    Inclusion of the tool definition in the central 'tools' array used for listing available tools via ListToolsRequestSchema.
    applyQualityRulesDefinition,
  • Central constant object defining all quality rules, antipatterns, async states, and state management guidelines used by the handler to populate applicable rules.
    const QUALITY_RULES = {
      NAMING: {
        variables: 'nouns (userList, userData)',
        functions: 'verb+noun (fetchData, updateUser)',
        events: 'handle prefix (handleClick, handleSubmit)',
        booleans: 'is/has/can prefix (isLoading, hasError, canEdit)',
        constants: 'UPPER_SNAKE_CASE (MAX_RETRY_COUNT, API_TIMEOUT)',
        components: 'PascalCase (UserProfile, HeaderSection)',
        hooks: 'use prefix (useUserData, useAuth)'
      },
      STRUCTURE: {
        componentOrder: ['State & Refs', 'Custom Hooks', 'Event Handlers', 'Effects', 'Early returns', 'Main return JSX'],
        functionMaxLines: 20,
        componentMaxLines: 50,
        maxNestingDepth: 3
      },
      ANTIPATTERNS: {
        typescript: ['any type usage', '@ts-ignore usage', 'as any casting'],
        react: ['dangerouslySetInnerHTML', 'props drilling (3+ levels)'],
        javascript: ['var usage', '== instead of ===', 'eval() usage'],
        css: ['!important abuse', 'inline style abuse']
      },
      ASYNC_STATES: ['data', 'isLoading', 'error'],
      STATE_MANAGEMENT: {
        simple: 'useState',
        complex: 'useReducer',
        globalUI: 'Context API',
        globalApp: 'Zustand',
        server: 'TanStack Query'
      }
    };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ssdeanx/ssd-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server