๐Ÿงช
QualityPython

Functional Core Imperative Shell

by ed3dai

Functional Core Imperative Shell is a Quality skill for Claude Code, published by ed3dai in ed3d-plugins.

248 stars32 forkson ed3dai/ed3d-pluginsAdded 2026/09/02Repository updated 2026/06/16
claudeclaude-codeclaude-code-pluginclaude-code-plugin-marketplaceskills
Install in seconds
Install Functional Core Imperative Shell
Copy Functional Core Imperative Shell into your Claude Code skills folder. Run the command in your terminal, or review the source on GitHub before installing.
terminal
npx degit https://github.com/ed3dai/ed3d-plugins/tree/main/plugins/ed3d-house-style/skills/howto-functional-vs-imperative ~/.claude/skills/howto-functional-vs-imperative

Requires Node.js. Downloads this skill only โ€” not the rest of the repository โ€” into your Claude Code skills folder.

Without Node.js

git clone https://github.com/ed3dai/ed3d-plugins.git

Clones the whole repository, then copy the skillโ€™s own directory into your skills folder yourself.

In this catalog

Source file
plugins/ed3d-house-style/skills/howto-functional-vs-imperative/SKILL.md in ed3dai/ed3d-plugins
Installs to
~/.claude/skills/howto-functional-vs-imperative
Collection
One of 25 skills cataloged from this repository
Category
Quality โ€” 1418 skills

What Functional Core Imperative Shell does

Functional Core Imperative Shell separates pure business logic from side effects when writing, refactoring, or reviewing code. It classifies files before creation so runtime code is placed in a pure core or thin shell.

Functional Core Imperative Shell is cataloged under Quality on DirSkills. Functional Core Imperative Shell comes from a repository tagged claude, claude-code, claude-code-plugin, claude-code-plugin-marketplace and skills.

Documentation

README

Functional Core, Imperative Shell (FCIS)

Overview

Core principle: Separate pure business logic (Functional Core) from side effects (Imperative Shell). Pure functions go in one file, I/O operations in another.

Why this matters: Pure functions are trivial to test (no mocks needed). I/O code is isolated to thin shells. Bugs become structurally impossible when business logic has no side effects.

When to Use

Use FCIS when:

  • Writing any new code file
  • Refactoring existing code
  • Reviewing code for architectural decisions
  • Deciding where logic belongs

Trigger symptoms:

  • "Where should this function go?"
  • Creating a new file
  • Adding database calls to logic
  • Adding file I/O to calculations
  • Writing tests that need complex mocking

This is the opening of the README. Read the full README on GitHub.

Frequently asked about Functional Core Imperative Shell

  • What else does ed3dai publish alongside Functional Core Imperative Shell?

    Functional Core Imperative Shell is one of 25 skills that DirSkills catalogs from ed3dai/ed3d-plugins, the repository it ships in. Its siblings there include Asking Clarifying Questions, Brainstorming and Coding Effectively. Each one is a separate skill with its own page in this directory, installs the same way Functional Core Imperative Shell does, and is maintained by ed3dai in that same repository. The rest of the collection is listed on the ed3dai/ed3d-plugins page.

  • How does Functional Core Imperative Shell compare to other Quality skills?

    Functional Core Imperative Shell ranks #1296 by stars among the 1418 Quality skills in this catalog. The most-starred ones next to it are Benchmark, Benchmark Optimization Loop and API Design Patterns. DirSkills ranks by the star count of the repository each skill ships in, so that order reflects how popular those repositories are rather than any review of Functional Core Imperative Shell against them. Open each page to compare what they document and how they install.

More from ed3dai/ed3d-plugins

Functional Core Imperative Shell is one of 25 skills cataloged on DirSkills from ed3dai/ed3d-plugins.

See all 25 skills โ†’
โ“
1h ago

Asking Clarifying Questions

Asking Clarifying Questions helps narrow ambiguous requirements before brainstorming by resolving contradictions, defining scope, and checking assumptions. Use it after initial context is gathered to avoid designing the wrong solution.
AI Engineering
24832
๐Ÿ’ก
1h ago

Brainstorming

Brainstorming turns rough ideas into structured designs through guided questions, alternatives, and stepwise validation. Use it before implementation or planning to clarify goals, constraints, and approach.
AI Engineering
24832
๐Ÿ› ๏ธ
1h ago

Coding Effectively

Coding Effectively guides writing and refactoring code with correctness, explicit error handling, property-driven design, and clear module organization. Use it when implementing features, reviewing code, or choosing patterns across languages and runtimes.
Quality
24832
๐Ÿงฉ
1h ago

Creating A Plugin

Creating A Plugin explains how to structure a Claude Code plugin and write its manifest. Use it when packaging commands, agents, skills, hooks, or MCP servers for reuse across projects.
AI Engineering
24832
๐Ÿค–
1h ago

Creating an Agent

Creating an Agent explains how to design specialized subagents for Claude Code plugins or the Task tool. It covers trigger descriptions, tool limits, prompt structure, and testing agents.
AI Engineering
24832
๐Ÿ›ก๏ธ
1h ago

Defense In Depth

Defense In Depth validates data at every layer it passes through so invalid values are caught by entry, business, environment, and debug checks. Use it when bad input causes failures deep in execution or tests bypass earlier validation.
Quality
24832