architecture-paradigm-microkernel
Applies microkernel architecture with minimal core and plugin extensibility. Use when building platforms where third parties extend core functionality.
What this skill does
# The Microkernel (Plugin) Architecture Paradigm ## When To Use - Building extensible systems with plugin architectures - Products requiring customer-specific customizations ## When NOT To Use - Monolithic applications without plugin extensibility needs - Systems where all features are core and tightly coupled by design ## When to Employ This Paradigm - When building platforms, Integrated Development Environments (IDEs), data ingestion pipelines, or marketplaces where third parties need to extend core functionality. - When the core system requires extreme stability, while extensions and features must evolve and change rapidly. - When isolating optional dependencies and sandboxing untrusted code provided by plugins is critical. ## Adoption Steps 1. **Define Core Services**: Clearly delineate the minimal responsibilities of the microkernel, such as scheduling, component lifecycle management, core domain primitives, and messaging. 2. **Specify the Plugin Contract**: Design and document the formal contract for all plugins, including registration procedures, capability descriptors, lifecycle hooks (e.g., start, stop), and the permission model. 3. **Build the Extension Loader and Sandbox**: Implement the mechanisms for loading extensions, performing version compatibility checks, negotiating capabilities, and isolating plugins to prevent failures from cascading. 4. **Provide a Software Development Kit (SDK)**: To facilitate plugin development, provide an SDK with project templates, testing harnesses, and compatibility-checking tools. 5. **Govern the Release Process**: Maintain a clear compatibility matrix between core and plugin versions. Implement an automated regression test suite that validates core functionality against a variety of plugins. ## Key Deliverables - An Architecture Decision Record (ADR) describing the division of responsibilities between the core and plugins, along with the governance model for plugin development and certification. - Formal documentation for the security and permission model, detailing what capabilities are available to plugins. - An automated plugin validation pipeline that performs linting, runs tests, and executes the plugin within a sandbox environment. ## Risks & Mitigations - **Uncontrolled Plugin Proliferation**: - **Mitigation**: Without a curation process, the maintenance cost of supporting numerous plugins can become unsustainable. Enforce a formal certification process or a marketplace-style review for all third-party plugins. - **Version Skew Between Core and Plugins**: - **Mitigation**: Use semantic versioning (SemVer) rigorously for both the core and the plugins. Where necessary, provide abstraction layers or "shims" to maintain backward compatibility with older plugins. - **Core System Bloat**: - **Mitigation**: There is often pressure to add feature logic to the stable core. Aggressively resist this temptation. The core should remain minimal, with new features implemented as plugins whenever possible. ## Concrete Components These vocabulary items name the concrete tools and abstractions that show up when the paradigm is implemented. They are not required dependencies and they are not part of the skill's ``tools:`` frontmatter (which is reserved for Claude Code tool restrictions). Use this list to disambiguate during architecture discussions. - ``plugin-loader``: discovers, validates, and activates plugins at runtime - ``sandbox-executor``: runs each plugin in an isolated context with a constrained capability set - ``sdk-generator``: produces language-specific SDKs from the kernel's stable interface
Related in architectural-pattern
architecture-paradigm-layered
IncludedApplies layered n-tier architecture with enforced boundaries. Use when designing moderate systems needing clear presentation, domain, and persistence layers.
architecture-paradigm-microservices
IncludedApplies microservices for independent deployment and per-service scaling. Use when teams need autonomous release cycles with distinct capability scaling needs.
architecture-paradigm-client-server
IncludedApplies client-server architecture for web/mobile apps. Use when designing systems with centralized backend services, trust boundaries, or offline-first sync.
architecture-paradigm-cqrs-es
IncludedApplies CQRS and Event Sourcing for read/write separation and audit trails. Use when designing systems with complex domain logic or full state-change history.
architecture-paradigm-event-driven
IncludedApplies event-driven async messaging to decouple producers and consumers. Use when designing real-time or multi-subscriber systems needing loose coupling.
architecture-paradigm-functional-core
IncludedApplies Functional Core, Imperative Shell to isolate logic from side effects. Use when business logic is entangled with I/O or unit tests are slow and brittle.