functional-core-imperative-shell

Separate pure business logic from side-effect code using FCIS terminology.

5|1|Updated Jan 26, 2026
One-click install
npx skills add https://github.com/ed3dai/ed3d-plugins-testing --skill functional-core-imperative-shell
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: functional-core-imperative-shell
Source: https://github.com/ed3dai/ed3d-plugins-testing/tree/main/plugins/ed3d-house-style/skills/howto-functional-vs-imperative
Command: npx skills add https://github.com/ed3dai/ed3d-plugins-testing --skill functional-core-imperative-shell

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill guides teams to keep pure business logic isolated from side effects, reducing complexity and improving testability by enforcing Functional Core vs Imperative Shell separation.

Core Features & Use Cases

  • Clear separation of pure computations (Functional Core) from I/O orchestration (Imperative Shell) to simplify testing.
  • Explicit file classification requirements that prevent mixed concerns and encourage consistent project structure.
  • Use Case: When starting a new module or refactoring, place business rules in pure functions and wrap I/O in thin shells to minimize drift.

Quick Start

Start by creating a new module that moves calculations into a pure function, then create a minimal shell that handles file I/O and orchestration.

Frequently Asked Questions about functional-core-imperative-shell

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I separate pure business logic from side effects to improve testability?

To separate pure business logic from side effects, move calculations into pure functions within a Functional Core and wrap I/O orchestration in a thin Imperative Shell, ensuring the core remains free of I/O for simplified testing.

What is the functional core imperative shell architecture pattern?

The functional core imperative shell (FCIS) architecture isolates pure computations in a Functional Core and handles side-effect orchestration in an Imperative Shell, explicitly classifying files to prevent mixed concerns and reduce complexity.

How do I refactor an existing module to use pure functions and isolate I/O?

To refactor an existing module, extract business rules into pure functions and create a minimal shell that handles file I/O and orchestration, enforcing strict separation to minimize drift and improve project maintenance.

Does the functional core imperative shell pattern work for module refactoring?

Yes, the functional core imperative shell pattern applies to module refactoring by requiring explicit file classification with FCIS terminology, guiding architecture updates to isolate pure logic from side-effect code across software projects.

Why should I enforce strict file classification when separating pure logic from I/O?

Enforcing strict file classification prevents mixed concerns and encourages a consistent project structure, ensuring the Functional Core remains free of I/O while the Imperative Shell handles orchestration to improve reliability.