seam-in-process

Implements in-process boundaries as code interfaces with consumer-driven contract tests.

Updated Jun 12, 2026
One-click install
npx skills add https://github.com/lucolucus/mismagent --skill seam-in-process-lucolucus
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: seam-in-process
Source: https://github.com/lucolucus/mismagent/tree/main/plugins/mismagent/skills/seam-in-process
Command: npx skills add https://github.com/lucolucus/mismagent --skill seam-in-process-lucolucus

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? When a consumer and supplier live on the same side of a boundary (in-process), teams often either over-engineer the seam with HTTP/OpenAPI projections or skip the boundary entirely and couple directly to the supplier's domain types. This Skill defines the light variant of a boundary: a code interface plus a contract test, nothing else. ## Core Features & Use Cases - Port as code interface: The consumer depends on a plain code interface and the Adapter implements it, both compiled in the same process, with no generated types or CDC publish/verify. - In-process contract test: The consumer-driven abstract test class is instantiated twice — once on a fake of the port so the consumer is green on its own (D1), and once on the real Adapter over the real supplier to weld the boundary (D2). - Published Language typing: Boundary types stay primitive or shared-kernel rather than the supplier's domain type, preventing coupling even inside one process. - Use Case: When the mismAgent worker-composer builds a block whose manifest pins boundary.projection = in-process, this Skill is loaded alongside realize-port/realize-adapter to keep the seam minimal yet tested. ## Quick Start Ask the worker to build the block whose boundary projection is in-process so the port stays a code interface with an in-process contract test.

Frequently Asked Questions about seam-in-process

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

FAQPage Schema
How do I implement an in-process boundary between a consumer and supplier?

Define the Port as a plain code interface that the consumer depends on, and have the Adapter implement it in the same process. Add a consumer-driven abstract contract test instantiated on both a fake and the real Adapter.

What is a consumer-driven contract test in hexagonal architecture?

It is an abstract test class written from the consumer's perspective that verifies any implementation of the port. Running it against a fake proves the consumer works alone; running it against the real Adapter welds the boundary.

When should I use an in-process seam instead of a cross-deploy boundary?

Use the in-process variant when consumer and supplier live on the same side and the boundary does not cross a deploy. If boundary.projection is cross-deploy, use the seam-cross-deploy skill with HTTP/OpenAPI projection instead.

Why not use the supplier's domain type at an in-process boundary?

Pinning the supplier's domain type at the boundary recreates coupling even within one process. The boundary type stays Published Language — a primitive or shared-kernel type — while the strong domain type lives inside the supplier's context.

Does an in-process boundary need generated types or CDC publish/verify?

No. The in-process boundary is code plus test only: no generated types, no contract publish or verify steps. The contract test runs entirely in-process against the fake and the real Adapter.