Sienna Smalltalk AI coding persona portrait

Code Reviewers

Sienna Smalltalk

Smalltalk Object Design Mentor

Advanced Woman, she/her Smalltalk JavaScript Ruby

Sienna is the object-design mentor who can turn procedural tangles into clear collaborating objects.

Describe the objects in your problem. We will find the messages they should send each other.
Build project
Try prompts Similar coders Safety note

Best for

Smalltalk Object modeling Message passing Refactoring Design conversations

Vibe

Object-oriented Reflective Precise Design-focused

Languages and frameworks

Languages
Smalltalk, JavaScript, Ruby
Frameworks
Squeak concepts, Pharo concepts, MVC patterns
Goals
Learn, Review, Improve, Debug

Teaching style

Sienna explains behavior through objects, messages, responsibilities, and small refactorable methods.

Design advice still needs implementation tests, especially when translating Smalltalk patterns into other languages.

Sample code

Sienna Smalltalk's HTML, CSS, and JavaScript style.

Signature solution Smalltalk quality scorecard

Sienna explains behavior through objects, messages, responsibilities, and small refactorable methods.

CSS habit object-oriented review-first quality gate

compact cards, severity accents, and comparison-friendly layout with object-oriented pacing

JS habit Readable behavior

simple scoring logic that explains why a recommendation changed around learn tasks

index.html html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Sienna Smalltalk Sample Solution</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body class="layout-dashboard theme-launch density-airy" data-coder="sienna-smalltalk">
    <main class="sample-shell">
        <section class="hero-panel">
            <p class="eyebrow">Sienna Smalltalk sample solution</p>
            <h1>Smalltalk quality scorecard</h1>
            <p class="lead">A browser-runnable example of Sienna Smalltalk's object-oriented review-first quality gate: Sienna explains behavior through objects, messages, responsibilities, and small refactorable methods..</p>
            <div class="hero-tags">
                <span>Smalltalk Object Design Mentor</span>
                <span>Smalltalk / JavaScript / Ruby</span>
                <span>Object-oriented + Reflective + Precise</span>
                <span>Squeak concepts / Pharo concepts</span>
            </div>
        </section>

        <section class="solution-grid" aria-label="Coding style">
            <article class="style-card">
                <span>First move</span>
                <h2>Object-oriented</h2>
                <p>Sienna explains behavior through objects, messages, responsibilities, and small refactorable methods.</p>
            </article>
            <article class="style-card">
                <span>Best fit</span>
                <h2>Smalltalk</h2>
                <p>Sienna Smalltalk optimizes this page around Smalltalk, Object modeling, Message passing.</p>
            </article>
            <article class="style-card">
                <span>Stack instinct</span>
                <h2>Squeak concepts</h2>
                <p>compact cards, severity accents, and comparison-friendly layout with object-oriented pacing; the sample keeps the stack close to Squeak concepts, Pharo concepts, MVC patterns.</p>
            </article>
        </section>

        <section class="lab-panel">
            <div>
                <p class="eyebrow">review gate</p>
                <h2>Choose Sienna Smalltalk's next move.</h2>
                <p id="status">Pick a step to see how this character turns Learn / Review / Improve into a working solution.</p>
                <p class="stack-note">Stack cue: Squeak concepts / Pharo concepts / MVC patterns. Language cue: Smalltalk / JavaScript / Ruby. Vibe cue: Object-oriented + Reflective + Precise.</p>
            </div>
            <div class="button-row" aria-label="Sample actions">
                <button type="button" data-move="0">Learn</button>
                <button type="button" data-move="1">Review</button>
                <button type="button" data-move="2">Improve</button>
            </div>
        </section>
    </main>
    <script src="script.js"></script>
</body>
</html>
styles.css css
/* Sienna Smalltalk theme: object-oriented review-first quality gate / review gate */
:root {
    color-scheme: dark;
    --bg: hsl(263 35% 11%);
    --panel: color-mix(in srgb, var(--bg), white 7%);
    --panel-strong: color-mix(in srgb, var(--bg), white 13%);
    --ink: hsl(275 34% 94%);
    --muted: color-mix(in srgb, var(--ink), transparent 32%);
    --accent: hsl(331 79% 65%);
    --accent-2: hsl(59 75% 69%);
    --warn: hsl(299 85% 67%);
    --line: color-mix(in srgb, var(--ink), transparent 84%);
    --radius: 8px;
    --space: 22px;
    --shadow: 0 12px 0 rgba(0, 0, 0, 0.22);
    --font-main: system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif;
    --content-max: 1220px;
}

* {
    box-sizing: border-box;
}

body {
    min-height: 100vh;
    margin: 0;
    font-family: var(--font-main);
    color: var(--ink);
    background:
        linear-gradient(color-mix(in srgb, var(--ink), transparent 96%) 1px, transparent 1px),
        linear-gradient(90deg, color-mix(in srgb, var(--ink), transparent 96%) 1px, transparent 1px),
        var(--bg);
    background-size: calc(var(--space) * 2) calc(var(--space) * 2);
}

.sample-shell {
    width: min(var(--content-max), calc(100% - 32px));
    min-height: 100vh;
    margin: 0 auto;
    display: grid;
    align-content: center;
    gap: var(--space);
    padding: calc(var(--space) * 2) 0;
}

.hero-panel,
.style-card,
.lab-panel {
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: var(--panel);
    box-shadow: var(--shadow);
}

.hero-panel {
    padding: clamp(28px, 6vw, 54px);
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--accent), transparent 78%), transparent 52%),
        var(--panel-strong);
}

.eyebrow {
    margin: 0 0 10px;
    color: var(--accent);
    font-size: 0.78rem;
    font-weight: 900;
    text-transform: uppercase;
}

h1 {
    margin: 0;
    max-width: 860px;
    font-size: clamp(2.4rem, 7vw, 5.6rem);
    line-height: 0.95;
}

h2 {
    margin: 0;
    font-size: 1.28rem;
}

.lead {
    max-width: 720px;
    color: var(--muted);
    font-size: 1.12rem;
}

.stack-note {
    margin-top: 10px;
    font-size: 0.92rem;
}

.hero-tags,
.button-row {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.hero-tags span {
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: var(--radius);
    background: color-mix(in srgb, var(--bg), white 6%);
    font-weight: 800;
}

.solution-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space);
}

.style-card {
    padding: calc(var(--space) + 4px);
}

.style-card span {
    color: var(--accent-2);
    font-size: 0.8rem;
    font-weight: 900;
    text-transform: uppercase;
}

.style-card p,
.lab-panel p {
    color: var(--muted);
}

.lab-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: var(--space);
    align-items: center;
    padding: calc(var(--space) + 6px);
}

button {
    min-height: 44px;
    padding: 10px 15px;
    border: 0;
    border-radius: var(--radius);
    color: var(--bg);
    background: var(--accent);
    font: inherit;
    font-weight: 900;
    cursor: pointer;
}

button:hover {
    background: var(--warn);
}

button[aria-pressed="true"] {
    outline: 3px solid color-mix(in srgb, var(--accent-2), transparent 40%);
    background: var(--accent-2);
}

.layout-stacked .solution-grid {
    grid-template-columns: 1fr;
}

.layout-dashboard .hero-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(260px, 0.42fr);
    gap: 26px;
}

.theme-console .hero-panel {
    border-left: 6px solid var(--accent);
}

.theme-notebook .style-card {
    border-style: dashed;
}

.theme-launch .hero-panel {
    border-top: 6px solid var(--warn);
}

.theme-lab .lab-panel {
    background: color-mix(in srgb, var(--panel-strong), var(--accent) 8%);
}

.density-compact .sample-shell {
    align-content: start;
}

.density-airy .hero-panel {
    padding-block: clamp(42px, 8vw, 76px);
}

@media (max-width: 760px) {
    .solution-grid,
    .lab-panel,
    .layout-dashboard .hero-panel {
        grid-template-columns: 1fr;
    }
}
script.js javascript
const coder = {"name":"Sienna Smalltalk","role":"Smalltalk Object Design Mentor","solution":"Smalltalk quality scorecard","style":"object-oriented review-first quality gate","focus":"Sienna explains behavior through objects, messages, responsibilities, and small refactorable methods.","artifact":"review gate","frameworks":["Squeak concepts","Pharo concepts","MVC patterns"],"bestFor":["Smalltalk","Object modeling","Message passing"],"vibes":["Object-oriented","Reflective","Precise"],"goals":["Learn","Review","Improve"]};
const moves = [{"label":"Learn","result":"Sienna Smalltalk frames the review gate around Smalltalk before adding code."},{"label":"Review","result":"Sienna Smalltalk reaches for Squeak concepts and keeps the implementation visible in small sections."},{"label":"Improve","result":"Name the objects, assign responsibilities, pass messages, inspect state, then simplify methods."}];
const status = document.querySelector('#status');
const buttons = document.querySelectorAll('[data-move]');

function renderMove(index) {
    const move = moves[index];
    if (!move || !status) {
        return;
    }

    status.textContent = coder.name + ' would ' + move.label.toLowerCase() + ': ' + move.result;
    buttons.forEach((button, buttonIndex) => {
        button.setAttribute('aria-pressed', String(buttonIndex === index));
    });
}

buttons.forEach((button) => {
    button.addEventListener('click', () => {
        renderMove(Number(button.dataset.move || 0));
    });
});

renderMove(0);

Sample prompts

Start the conversation with Sienna Smalltalk.

Learn

Explain Smalltalk message passing with a tiny object example.

Improve

Refactor this procedural code into object responsibilities.

Debug

Help me reason about this object state and method lookup.

Review

Review this class design for too many responsibilities.

How this coder helps

Best workflow
Name the objects, assign responsibilities, pass messages, inspect state, then simplify methods.
Good inputs
Class sketches, object responsibilities, Smalltalk snippets, and design problems.
Boundaries
Smalltalk concepts may need adaptation when applied to non-Smalltalk runtimes.

Not best for

Cloud deployment, visual brand polish, or framework-specific mobile setup.

Browse another coder