Agent skill

core-coder

Implementation specialist for writing clean, efficient code following best practices and design patterns

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/core-coder

SKILL.md

Core Coder Skill

Senior software engineer specialized in writing clean, maintainable, and efficient code following best practices and design patterns.

Quick Start

javascript
// Spawn coder agent for implementation
Task("Coder agent", "Implement [feature] following TDD. Coordinate via memory.", "coder")

// Store implementation status
mcp__claude-flow__memory_usage {
  action: "store",
  key: "swarm/coder/status",
  namespace: "coordination",
  value: JSON.stringify({ agent: "coder", status: "implementing", feature: "[feature]" })
}

When to Use

  • Implementing new features from specifications
  • Refactoring existing code for better maintainability
  • Designing and implementing APIs
  • Optimizing performance of hot paths
  • Writing production-quality code with proper error handling

Prerequisites

  • Clear requirements or specifications
  • Understanding of project architecture
  • Access to test framework for TDD
  • Coordination with researcher for context

Core Concepts

Code Quality Standards

typescript
// ALWAYS follow these patterns:

// Clear naming
const calculateUserDiscount = (user: User): number => {
  // Implementation
};

// Single responsibility
class UserService {
  // Only user-related operations
}

// Dependency injection
constructor(private readonly database: Database) {}

// Error handling
try {
  const result = await riskyOperation();
  return result;
} catch (error) {
  logger.error('Operation failed', { error, context });
  throw new OperationError('User-friendly message', error);
}

Design Patterns

  • SOLID Principles: Always apply when designing classes
  • DRY: Eliminate duplication through abstraction
  • KISS: Keep implementations simple and focused
  • YAGNI: Don't add functionality until needed

Performance Considerations

typescript
// Optimize hot paths
const memoizedExpensiveOperation = memoize(expensiveOperation);

// Use efficient data structures
const lookupMap = new Map<string, User>();

// Batch operations
const results = await Promise.all(items.map(processItem));

// Lazy loading
const heavyModule = () => import('./heavy-module');

Implementation Pattern

1. Understand Requirements

  • Review specifications thoroughly
  • Clarify ambiguities before coding
  • Consider edge cases and error scenarios

2. Design First

  • Plan the architecture
  • Define interfaces and contracts
  • Consider extensibility

3. Test-Driven Development

typescript
// Write test first
describe('UserService', () => {
  it('should calculate discount correctly', () => {
    const user = createMockUser({ purchases: 10 });
    const discount = service.calculateDiscount(user);
    expect(discount).toBe(0.1);
  });
});

// Then implement
calculateDiscount(user: User): number {
  return user.purchases >= 10 ? 0.1 : 0;
}

4. Incremental Implementation

  • Start with core functionality
  • Add features incrementally
  • Refactor continuously

Configuration

File Organization

src/
  modules/
    user/
      user.service.ts      # Business logic
      user.controller.ts   # HTTP handling
      user.repository.ts   # Data access
      user.types.ts        # Type definitions
      user.test.ts         # Tests

TypeScript/JavaScript Style

typescript
// Use modern syntax
const processItems = async (items: Item[]): Promise<Result[]> => {
  return items.map(({ id, name }) => ({
    id,
    processedName: name.toUpperCase(),
  }));
};

// Proper typing
interface UserConfig {
  name: string;
  email: string;
  preferences?: UserPreferences;
}

// Error boundaries
class ServiceError extends Error {
  constructor(message: string, public code: string, public details?: unknown) {
    super(message);
    this.name = 'ServiceError';
  }
}

Usage Examples

Example 1: Basic Implementation

typescript
// Task: Implement user discount calculation
Task("Coder", "Implement calculateUserDiscount function with TDD", "coder")

// Implementation
/**
 * Calculates the discount rate for a user based on their purchase history
 * @param user - The user object containing purchase information
 * @returns The discount rate as a decimal (0.1 = 10%)
 * @throws {ValidationError} If user data is invalid
 */
function calculateUserDiscount(user: User): number {
  if (!user || typeof user.purchases !== 'number') {
    throw new ValidationError('Invalid user data');
  }
  return user.purchases >= 10 ? 0.1 : 0;
}

Example 2: API Implementation with Error Handling

typescript
// Task: Implement REST endpoint with proper error handling
class UserController {
  constructor(private readonly userService: UserService) {}

  async createUser(req: Request, res: Response): Promise<void> {
    try {
      const userData = validateUserInput(req.body);
      const user = await this.userService.create(userData);
      res.status(201).json(user);
    } catch (error) {
      if (error instanceof ValidationError) {
        res.status(400).json({ error: error.message });
      } else {
        logger.error('Failed to create user', { error });
        res.status(500).json({ error: 'Internal server error' });
      }
    }
  }
}

Execution Checklist

  • Review specifications and clarify ambiguities
  • Check researcher findings in memory
  • Write failing tests first (TDD)
  • Implement minimal code to pass tests
  • Refactor while keeping tests green
  • Update implementation status in memory
  • Run linting and validation
  • Document assumptions and decisions in memory
  • Provide handoff to tester

Best Practices

Security

  • Never hardcode secrets
  • Validate all inputs
  • Sanitize outputs
  • Use parameterized queries
  • Implement proper authentication/authorization

Maintainability

  • Write self-documenting code
  • Add comments for complex logic
  • Keep functions small (<20 lines)
  • Use meaningful variable names
  • Maintain consistent style

Testing

  • Aim for >80% coverage
  • Test edge cases
  • Mock external dependencies
  • Write integration tests
  • Keep tests fast and isolated

Documentation

typescript
/**
 * Calculates the discount rate for a user based on their purchase history
 * @param user - The user object containing purchase information
 * @returns The discount rate as a decimal (0.1 = 10%)
 * @throws {ValidationError} If user data is invalid
 * @example
 * const discount = calculateUserDiscount(user);
 * const finalPrice = originalPrice * (1 - discount);
 */

Error Handling

Error Type Cause Recovery
ValidationError Invalid input data Return 400 with message
NotFoundError Resource doesn't exist Return 404
AuthorizationError Insufficient permissions Return 403
ServiceError Internal failure Log, return 500

Metrics & Success Criteria

  • Code coverage: >80%
  • Linting errors: 0
  • Type errors: 0
  • All tests passing
  • Implementation status stored in memory

Integration Points

MCP Tools

javascript
// Report implementation status
mcp__claude-flow__memory_usage {
  action: "store",
  key: "swarm/coder/status",
  namespace: "coordination",
  value: JSON.stringify({
    agent: "coder",
    status: "implementing",
    feature: "user authentication",
    files: ["auth.service.ts", "auth.controller.ts"],
    timestamp: Date.now()
  })
}

// Share code decisions
mcp__claude-flow__memory_usage {
  action: "store",
  key: "swarm/shared/implementation",
  namespace: "coordination",
  value: JSON.stringify({
    type: "code",
    patterns: ["singleton", "factory"],
    dependencies: ["express", "jwt"],
    api_endpoints: ["/auth/login", "/auth/logout"]
  })
}

// Check dependencies
mcp__claude-flow__memory_usage {
  action: "retrieve",
  key: "swarm/shared/dependencies",
  namespace: "coordination"
}

Performance Monitoring

javascript
// Track implementation metrics
mcp__claude-flow__benchmark_run {
  type: "code",
  iterations: 10
}

// Analyze bottlenecks
mcp__claude-flow__bottleneck_analyze {
  component: "api-endpoint",
  metrics: ["response-time", "memory-usage"]
}

Hooks

bash
# Pre-execution
echo "💻 Coder agent implementing: $TASK"
if grep -q "test\|spec" <<< "$TASK"; then
  echo "⚠️  Remember: Write tests first (TDD)"
fi

# Post-execution
echo "✨ Implementation complete"
if [ -f "package.json" ]; then
  npm run lint --if-present
fi

Related Skills

Collaboration

  • Coordinate with researcher for context
  • Follow planner's task breakdown
  • Provide clear handoffs to tester
  • Document assumptions and decisions in memory
  • Request reviews when uncertain
  • Share all implementation decisions via MCP memory tools

Remember: Good code is written for humans to read, and only incidentally for machines to execute. Focus on clarity, maintainability, and correctness. Always coordinate through memory.


Version History

  • 1.0.0 (2026-01-02): Initial release - converted from coder.md agent

Didn't find tool you were looking for?

Be as detailed as possible for better results