bama
BAMA: 모든 Mac 앱을 만들 수 있습니다
코딩 에이전트를 위한 디자인 스킬로, 디자인 언어를 변환·다양한 매체에 표현하고 자체 평가를 하며 브랜드와 가독성을 유지합니다
Design skill for coding agents. It translates between design languages, expresses them in a multitude of mediums, juries its own work, and keeps every piece on brand and readable.
스킬Python · HTMLGitHub @andyed직접 설치운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
설치형 프로젝트는 배포 도메인 없이도 확인할 수 있습니다. 개인 저장소는 GitHub 로그인으로, 조직 저장소는 위의 저장소 확인 파일로 직접 확인해 주세요.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗
muriel is a design skill for coding agents. It translates between design languages, from the Visible Language Workshop's typography-as-data to film-style sci-fi interfaces, and expresses them in a multitude of mediums, from paper figures to video. It juries its own work. And it keeps every piece on brand and readable, with tokens from one brand.toml and text held to 8:1 contrast.
Artifacts are generated by scripts saved next to them, so they can be rerun when the data changes.
It runs as a Claude Code plugin or in any harness that reads the Agent Skills format. The Python package and muriel CLI also work without an agent. The name is Muriel Cooper's; she founded the Visible Language Workshop at MIT.
Examples are in the gallery at muriel.mindbendingpixels.com, a site built with muriel.
In a Claude Code session:
/plugin marketplace add andyed/muriel
/plugin install muriel@andyed-muriel
Invoke it with /muriel:compose, or let the agent load it when a task has an open visual decision. The critique agent and jury seats install with it. /plugin uninstall removes everything.
For other harnesses, the Python package, or a development checkout, see More ways to install.
A channel is one output medium. Each has a markdown file of recipes, tools, and anti-patterns under channels/, and the agent reads the one that matches the job.
| Channel | For (main tools) |
|---|---|
| Raster | Store assets, icons, banners, wordmarks (Pillow, muriel.typeset) |
| SVG | Paper figures, data-driven vectors, icons, wave fields (plain SVG, optionally svgwrite and cairosvg) |
| Diagrams | Named forms such as 2×2, cycle, pyramid, swimlane, Sankey, treemap, and DAG, each with a stated test for when it fits (muriel's generators; Mermaid and MathJax through Node) |
| Charts | Quantitative charts in JS libraries (Recharts, ECharts, Chart.js, Plotly, D3) |
| Science | Paper figures, notebook editorial, APA-style stats (matplotlib, LaTeX, muriel.stats) |
| Infographics | Single-image explainers (generated SVG) |
| Web | Blog posts, magazine layouts, HTML to PNG or PDF (marginalia, pandoc, Playwright or WeasyPrint) |
| Interactive | Live demos with parameter controls (WebGL, Canvas, D3, PixiJS) |
| Polish |
Two references apply to every channel. Dimensions covers social cards, device sizes, paper, and video resolutions. Style guides defines the brand.toml schema, which imports from Google Stitch design.md (muriel import) and exports W3C design tokens (muriel export-dtcg).
The web and kinetic-type docs default to two sibling projects, marginalia and iblipper, because they pass muriel's rules without changes. Substitute your own libraries freely. Each channel names the library it assumes, and none of the rules depend on it.
Collections of many images default to a third sibling, Wunderkammer, whose 3D views draw with muriel's renderer; references/collections.md covers when to use it and how.
A channel is a medium; a vocabulary is a style the agent can work in. Ten ship under vocabularies/:
From SKILL.md:
Most of the rules predate the tooling. They come from Cooper's Visible Language Workshop, Tufte's data-ink ratio, Bertin's retinal variables, Gestalt grouping, and eye-movement research.
muriel designs how an interface behaves as well as how it looks. It draws on cognitive psychology, perception research, and HCI to choose a mechanism, then builds the mechanism and exercises it in the host product. Rendering and interaction checks are evidence about the artifact; claims about comprehension, workload, or learning need evidence from people.
human-capabilities.md covers cognitive task analysis, the split of work between people and AI, and the limits of evidence. microstrategies.md is built on Gray's Milliseconds Matter: small differences in the cost of reaching information change the routines people adopt. Convention is a starting hypothesis. muriel can propose a new interaction, build a working probe, and weigh what it makes possible against what it costs to learn.
Zooming interfaces, semantic zoom, linked displays, brushing, and faceted exploration share one contract, in multiscale-coordination.md: entities keep a stable identity when their representation changes, queries and selections have explicit meanings, and gestures are recoverable. Camera navigation is covered in zooming-interfaces.md and attribute filters in faceted-exploration.md. Adapters for D3, Vega-Lite, ECharts, and Canvas are in multiscale-adapters.md, and briefs and fixtures for testing the contract in other domains are in multiscale-evaluation.md. The Linked Atlas lab (source) is a working example with synthetic data and no dependencies.
The literature reviews behind these references are in research/.
muriel renders what it makes and measures the result:
muriel diagram-check fails a figure whose labels collide, run off the canvas, or spill out of their shapes, or whose text falls below 8:1 contrast.muriel.layout.place_label puts an annotation where it collides with nothing, falling back to the margin. It never shrinks text or hides data behind a halo.muriel capture screenshots a page across viewport sizes.muriel squint blurs the capture to show whether the hierarchy survives.muriel loupe cuts 4× close-ups of the busiest regions to show whether line ends and joints hold up.muriel-critique is a read-only subagent. Given a rendered artifact, it lists each way the artifact breaks muriel's rules, the channel's anti-patterns, or an optional brand.toml, with evidence. It is hardened against instructions and fake contrast claims embedded in the image. Ask for it by name:
Run muriel-critique on
path/to/artifact.pngwith channelrasterand brandexamples/muriel-brand.toml.
The verdict is PASS, NEEDS REVISION, or FAIL, followed by numbered issues with rule, evidence, fix, and severity. Any CRITICAL issue fails the artifact; any HIGH issue sends it back for revision. Adversarial and baseline test cases live in examples/critique-fixtures/, and new attacks are welcome as pull requests.
A jury splits that review across six narrower seats, used to find defects or to choose between design directions. Each seat sees the artifact through one restricted view, defined in references/jury.md:
| Seat | Judges | Denied |
|---|---|---|
muriel-squinter | Hierarchy and reading order under heavy blur | The sharp render, all text, the brief |
muriel-thumbnail | Whether the main signal survives at 1/8 scale and 16 px | The full-size render and the blur ladder |
muriel-loupe | Whether line ends, joints, and edges hold up in 4× close-ups | The whole composition, the brief |
muriel-stranger | What the artifact is for, from a single read | The brief, other ballots, project context |
muriel-forger | Whether a generic template can rebuild it, by trying | The brand tokens |
muriel-pedant | Labels, units, and numeric claims | The rendered composition |
Run each seat as its own subagent. The restrictions hold only because the seat never receives the withheld material in its context.
SKILL.md uses the Agent Skills format. The repo includes .agents/skills/muriel, a symlink to the skill, which Codex CLI reads natively and Cursor, Gemini CLI, GitHub Copilot, OpenCode, and Pi read as an alternate path. Not every harness has been verified yet; HARNESSES.md tracks the checklist. Kiro, Qoder, Rovo Dev, and Trae need manifest shims that have not landed.
muriel is not on PyPI yet. Install the wheel from the latest release:
pip install https://github.com/andyed/muriel/releases/download/v0.14.0/muriel-0.14.0-py3-none-any.whl
The core package has no dependencies. Extras add one backend each: raster (Pillow, NumPy), critique (cairosvg), faces (MediaPipe), text (EasyOCR), saliency (ONNX Runtime), or all. muriel doctor reports what is installed.
from muriel import matplotlibrc_dark # applies a dark matplotlibrc on import
from muriel.stats import format_comparison # APA-style reporting
from muriel.contrast import audit_svg # 8:1 contrast audit
from muriel.styleguide import load_styleguide # brand.toml loader
from muriel.dimensions import figsize_for, OG_CARD
muriel # list subcommands
muriel contrast page.svg # 8:1 audit of an SVG or HTML file
muriel diagram-check figure.svg # accessibility lint, label geometry, contrast
muriel capture https://example.com # screenshots across viewport sizes
muriel squint capture.png # blur ladder: does the hierarchy survive?
muriel loupe figure.svg # 4× close-ups: do the joints hold up?
muriel styleguide brand.toml --css # CSS custom properties from a brand.toml
muriel heroshot in.png out.png --tilt 12 --brand brand.toml --target og.card
Each subcommand also runs as a module, for example python -m muriel.capture.
To work on muriel itself, install from a clone so edits take effect immediately:
git clone https://github.com/andyed/muriel ~/Documents/dev/muriel
cd ~/Documents/dev/muriel && ./install.sh
install.sh links plugins/muriel/skills/compose/ to ~/.claude/skills/muriel and plugins/muriel/agents/ to ~/.claude/agents/muriel. New channels and jury seats appear without a re-run, and the bare /muriel command works. The script refuses to run if the plugin is already installed, to avoid loading muriel twice. If it finds an older mount, it reports it and stops; ./install.sh --repair moves the old mount to muriel.bak-<timestamp> and links the new one.
plugins/muriel/skills/compose/: the skill (SKILL.md, channels, references, vocabularies, examples)plugins/muriel/agents/: the critique agent and the five jury seatsmuriel/: Python package and CLIrender_assets/: Three.js and CSS3D exemplars for the spatial channelresearch/: literature reviews and bibliographies behind the references.claude-plugin/marketplace.json: the marketplace entry. The plugin manifest is plugins/muriel/.claude-plugin/plugin.json.Scrutinizer's brand and perceptual tokens page is built with muriel. It uses the scrutinizer-brand.toml style guide, the foveal_overlay and engine_sectors_overlay diagram primitives, and the palettes module.
muriel borrows openly and says where from. PRIOR_ART.md lists each source, what muriel took, and what it changed, and THIRD_PARTY_NOTICES.md carries the licenses for incorporated material. The most direct debts:
layer_stack, pyramid, and swimlane, adapted under MIT.MIT. See LICENSE.
| UI detail: radii, press states, hit areas, icon motion (CSS, TSX, HTML) |
| Spatial | Perspective grids, layered typography, ridge plots (muriel.spatial, Three.js) |
| Video | Product demos, GIFs, HTML to MP4 (ffmpeg, hyperframes) |
| Terminal | Sparklines, bar charts, tables in Unicode (muriel.chart) |
| Heatmaps | Fixation density overlays (muriel.typeset) |
| Gaze | Scanpaths, AOI timelines, saccade roses (Pillow) |
| README | Repo front pages rendered by GitHub (muriel.capture, muriel.squint, muriel.aiism) |