Skip to content
C.W.K.
Stream
Lesson 03 of 05 · published

SiblingKit Owns the Chrome

~11 min · siblingkit, shared-ui, composition, no-copy

Level 0Dry Nib
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete
"Extend the canonical layer or extract one; coupled copies are not reuse."

Separate need from ownership

Navigation, theming, search affordances, share surfaces, and family chrome should feel related across apps. The way to get that coherence is a canonical shared package, not copied components that begin identical and drift separately.

Shape the crossing

Import stable primitives and extend them through documented props or extracted canonical layers. Inkwell supplies its passage, actions, and product-specific state. Shared chrome remains owned and updated in one place.

The duplication temptation

Copy-pasting a header buys local speed and fleet-wide inconsistency. Editing the shared package mid-product work without syncing siblings creates stale bundles. Boundaries require both reuse and a deliberate rollout discipline.

Family invariant. Extend the canonical layer or extract one; coupled copies are not reuse.

Let requests and references cross

Audit “SiblingKit Owns the Chrome” beyond code imports. Trace which request reaches which owner, whether the result is a value or managed reference, and who explains failure and retry. Credentials, canonical history, or a voice catalog copied into Inkwell are a second system, not a convenient integration.

Write the boundary table

Take one product-specific header change and decide whether it is a prop, a canonical extraction, or not shared. Include timeout, stale output, sibling unavailability, and schema mismatch. Any blank where both sides assume the other will act is the owner of the next incident.

Owning less makes the product more itself

Inkwell's identity is not another brain or voice engine. It composes original-first flow, penless review, handwriting UX, and late-result landing into one experience. Boundaries are features that make that composition possible.

Code

Compose shared chrome around product state·typescript
type InkwellShellProps = {
  title: string;
  focusActive: boolean;
  onToggleFocus(): void;
  children: unknown;
};

export function InkwellShell(props: InkwellShellProps) {
  return SharedFamilyShell({
    product: "Inkwell",
    title: props.title,
    actions: [{ label: "Focus", pressed: props.focusActive, run: props.onToggleFocus }],
    content: props.children,
  });
}

declare function SharedFamilyShell(input: unknown): unknown;

External links

Exercise

Take one product-specific header change and decide whether it is a prop, a canonical extraction, or not shared.
Hint
Put owner, request, result, and retry on one row.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.