feat(stream-android): add design-matching skill#37
Open
aleksandar-apostolov wants to merge 2 commits into
Open
feat(stream-android): add design-matching skill#37aleksandar-apostolov wants to merge 2 commits into
aleksandar-apostolov wants to merge 2 commits into
Conversation
Port the iOS design-matching skill to Android (Compose). A repeatable method for reproducing a reference design (screenshot / Figma / "make it look like X") with the pre-built Compose components: classify each screen, decompose every region, route each difference to one of the two Android axes (theming token vs ChatComponentFactory slot), build, and verify region-by-region on the real navigation path. Adds design-matching.md and wires it into SKILL.md (styling-depth flag) and RULES.md. Android-specific vs iOS: two axes not three (no Styles axis - padding/radius/shape are structure), derived bubble-color tokens, ChatComponentFactory slots, plus Step 0 multi-screen classification and a "derive, do not clone" method section.
…gn-matching The SDK's MessageInput bakes in a border stroke; call it out as a check separate from shape/fill (a field can have a fill but no stroke), and note it is easiest to miss in dark mode. Adds a dark-mode border check to the Step 5 verify gate. Surfaced by an external Slack dark-mode dogfood run.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a design-matching skill for Android (Compose) — a repeatable method for reproducing a reference design (screenshot / Figma / "make it look like WhatsApp / Slack / Telegram / ") with the pre-built Compose components. This brings Android to parity with iOS on design-matching, but it is its own skill: built from the Android SDK's actual customization model and hardened empirically, not a translation of the iOS doc.
What's here
skills/stream-android/design-matching.md— the skill: classify each screen (Step 0), decompose every region, route each difference to one of the two Android axes (theming token vsChatComponentFactoryslot), build, and verify region-by-region on the real navigation path (Step 5).SKILL.md— a styling-depth flag routes target-appearance requests to the skill (orthogonal to the A/B/C/D tracks).RULES.md— a "Matching a reference design" section (two axes, derived bubble-color tokens, composite-slot drop, the three most-missed regions, verify-or-it-doesn't-count).Built for Android's customization model
Every mechanism is grounded in the Compose SDK, not carried over from another platform:
Stylesaxis, so padding / corner-radius / bubble-shape / composer layout are structure (slot override), not a token.internal vals — recolor via thebrandColorScaleor aMessageBubbleoverride, never a constructor param.ChatComponentFactory(~196 slots) is the structural surface; the doc routes each region to its slot and shows how to read the pinned version's source.How it was validated
Dogfooded one-shot from screenshots across three maximally-different archetypes, each built + verified on a live emulator against the reference, iterating region-by-region until it matched:
The composer, header, and channel-list-row guidance were hardened directly from visual grading of those runs (row-count / alignment / field-shape traps, the header trailing-avatar default, DM-vs-
#, reactions placement, and "data-limited != verified").