Claude-skill-registry code-implementer

This skill should be used when the user asks to 'implement', 'write code', 'build a feature', 'create a function', 'add functionality', 'code this', 'make this work', or needs to write production code for Java/Spring Boot or TypeScript/Next.js following FP, DDD, and testability patterns. Ensures code follows functional core/imperative shell, proper invariants, Either-based error handling, and is designed for testing without mocks.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/code-implementer" ~/.claude/skills/majiayu000-claude-skill-registry-code-implementer && rm -rf "$T"
manifest: skills/data/code-implementer/SKILL.md
source content

Code Implementer Skill

Expert implementation guidance ensuring code follows FP principles, DDD patterns, and is designed for maximum testability.

This is an IMPLEMENTATION skill - write production code following the architectural patterns in the imported rules. For design decisions and architectural review, use

/architecture-tech-lead
instead.


Pre-Implementation Checklist

Before writing code, verify:

  • Boundaries clear: Where does I/O happen vs pure logic?
  • Invariants identified: What must always be true?
  • Types designed: Records/sealed types for domain? Discriminated unions?
  • Parse, don't validate: Return validated types? Invalid states unrepresentable?
  • Error handling: Using Either/Result? What errors are possible?
  • Testability: Can business logic be unit tested without mocks?

During Implementation

Structure Code as Functional Core + Imperative Shell

Imperative Shell (thin):

  • Fetches data (DB, APIs)
  • Calls pure functions
  • Persists results
  • Handles I/O errors

Functional Core (where logic lives):

  • Pure functions, no side effects
  • Receives all data as parameters
  • Returns new data, never mutates
  • Trivially unit testable

Apply Type Design

Apply patterns from imported rules:

  • Java: Records, sealed types, pattern matching (see java-patterns.md)
  • TypeScript: Discriminated unions, ts-pattern, Zod (see typescript-patterns.md)

Handle Errors Properly

Use Either/Result for all expected failures (see java-patterns.md for Either examples):

  • Chain operations with
    flatMap
  • Collect validation errors with
    Eithers.allFailures()
  • Never throw for expected failures - return typed errors

Post-Implementation Checklist

After writing code, verify:

  • No business logic in shell: All logic in pure functions?
  • Immutability: No mutations? Defensive copies where needed?
  • Invariants enforced: Constructors validate? Invalid states unrepresentable?
  • Error paths typed: Using Either/Result? No hidden throws?
  • Testable without mocks: Can test core logic with plain data?

Implementation Patterns Quick Reference

Data Transformation Flow

fetch (I/O) -> transform (pure) -> persist (I/O)

Service Method Structure

1. Fetch required data (shell - I/O)
2. Call pure function with data (core - testable)
3. Persist result (shell - I/O)
4. Return result

Invariant Enforcement

Constructor validates -> Object always valid -> No defensive checks elsewhere

Error Handling Chain

validate -> process -> transform -> (all via flatMap/map)

Test Strategy

For every implementation, consider:

Unit Tests (core logic)

  • Test pure functions with plain data
  • No mocks needed
  • Cover edge cases

Property Tests (invariants)

  • What must ALWAYS be true?
  • Round-trip properties
  • Idempotence where applicable

Integration Tests (shell only)

  • Minimal - just verify I/O works
  • Use real DB/APIs in test containers
  • Don't test business logic here

Quality Standards

  • Complete: Implement full feature, not partial
  • Testable: Every function testable without mocks
  • Typed Errors: Either/Result for all failures
  • Immutable: No mutations without justification
  • Validated: Parse, don't validate - return validated types

Context Awareness

Tailor to detected stack. See imported rules for patterns:

  • Java: java-patterns.md (records, sealed types, Either)
  • TypeScript: typescript-patterns.md (discriminated unions, ts-pattern)
  • Testing: property-testing.md (jqwik patterns)