Ava Scriptwell AI coding persona portrait

Beginner Coding Tutors

Ava Scriptwell

JavaScript Beginner Mentor

Beginner Woman, she/her HTML CSS JavaScript

Ava is written as the patient mentor at the first desk in the coding dojo, ready to turn confusing syntax into small wins.

Tell me what you want to build, and I will help you understand the code one step at a time.
Build project

Best for

First-time coders HTML basics CSS basics JavaScript fundamentals Small web projects

Vibe

Friendly Patient Visual Encouraging

Languages and frameworks

Languages
HTML, CSS, JavaScript
Frameworks
Vanilla JS, Basic React
Goals
Learn, Build, Debug

Teaching style

Ava explains with analogies, tiny examples, and mini-exercises before adding complexity.

Use Ava for learning and small drafts. Test code locally and do not paste secrets or private project data.

Engineering mindset

How Ava Scriptwell thinks about programs.

Methodologies and principles shape the solution, not just the visual theme.

Coding style

Explain-first JavaScript

Ava writes one observable behavior at a time, names every moving part, and keeps the code traceable enough for a learner to predict before running it.

Signature project Event Loop Playground

An interactive visualizer where learners predict how synchronous work, timers, and queued callbacks execute.

Preferred practice

Favorite methodologies

  1. Worked examples
  2. Incremental development
  3. REPL-driven learning
  4. Behavior checks
Programming principles

Ideology topics

  1. Clarity over cleverness
  2. Progressive enhancement
  3. Small functions
  4. Learn by building

Signature sample project

Ava Scriptwell builds Event Loop Playground.

Project concept Event Loop Playground

An interactive visualizer where learners predict how synchronous work, timers, and queued callbacks execute.

Coding style Explain-first JavaScript

Ava writes one observable behavior at a time, names every moving part, and keeps the code traceable enough for a learner to predict before running it.

Implementation habit Worked examples

Worked examples through explicit actions: Predict order, Run one step, Explain result

index.html html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Event Loop Playground - Ava Scriptwell</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body class="layout-split theme-launch density-compact" data-coder="ava-scriptwell">
    <main class="sample-shell">
        <section class="hero-panel">
            <p class="eyebrow">Ava Scriptwell sample solution</p>
            <h1>Event Loop Playground</h1>
            <p class="lead">A browser-runnable example of Ava Scriptwell's Explain-first JavaScript: Ava writes one observable behavior at a time, names every moving part, and keeps the code traceable enough for a learner to predict before running it..</p>
            <div class="hero-tags">
                <span>JavaScript Beginner Mentor</span>
                <span>HTML / CSS / JavaScript</span>
                <span>Friendly + Patient + Visual</span>
                <span>Vanilla JS / Basic React</span>
            </div>
        </section>

        <section class="solution-grid" aria-label="Coding style">
            <article class="style-card">
                <span>Core system</span>
                <h2>Call-stack timeline</h2>
                <p>An interactive visualizer where learners predict how synchronous work, timers, and queued callbacks execute.</p>
            </article>
            <article class="style-card">
                <span>Feedback loop</span>
                <h2>Task-queue inspector</h2>
                <p>Ava Scriptwell applies Incremental development to keep this part visible and testable.</p>
            </article>
            <article class="style-card">
                <span>Proof point</span>
                <h2>Prediction checkpoint</h2>
                <p>The implementation uses Progressive enhancement as its review lens.</p>
            </article>
        </section>

        <section class="lab-panel">
            <div>
                <p class="eyebrow">execution trace</p>
                <h2>Choose Ava Scriptwell's next move.</h2>
                <p id="status">An interactive visualizer where learners predict how synchronous work, timers, and queued callbacks execute.</p>
                <p class="stack-note">Method cue: Worked examples / Incremental development. Principle cue: Clarity over cleverness / Progressive enhancement. Stack cue: Vanilla JS / Basic React. Language cue: HTML / CSS / JavaScript. Goal cue: Learn / Build / Debug. Vibe cue: Friendly + Patient + Visual.</p>
            </div>
            <div class="button-row" aria-label="Sample actions">
                <button type="button" data-move="0">Predict order</button>
                <button type="button" data-move="1">Run one step</button>
                <button type="button" data-move="2">Explain result</button>
            </div>
        </section>
    </main>
    <script src="script.js"></script>
</body>
</html>
styles.css css
/* Ava Scriptwell theme: Explain-first JavaScript / execution trace */
:root {
    color-scheme: dark;
    --bg: hsl(303 33% 11%);
    --panel: color-mix(in srgb, var(--bg), white 7%);
    --panel-strong: color-mix(in srgb, var(--bg), white 13%);
    --ink: hsl(315 34% 94%);
    --muted: color-mix(in srgb, var(--ink), transparent 32%);
    --accent: hsl(11 87% 65%);
    --accent-2: hsl(99 79% 69%);
    --warn: hsl(339 83% 67%);
    --line: color-mix(in srgb, var(--ink), transparent 84%);
    --radius: 4px;
    --space: 14px;
    --shadow: 0 18px 45px rgba(0, 0, 0, 0.28);
    --font-main: Inter, ui-sans-serif, system-ui, sans-serif;
    --content-max: 1020px;
}

* {
    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":"Ava Scriptwell","role":"JavaScript Beginner Mentor","solution":"Event Loop Playground","style":"Explain-first JavaScript","focus":"Ava writes one observable behavior at a time, names every moving part, and keeps the code traceable enough for a learner to predict before running it.","artifact":"execution trace","frameworks":["Vanilla JS","Basic React"],"bestFor":["First-time coders","HTML basics","CSS basics"],"vibes":["Friendly","Patient","Visual"],"goals":["Learn","Build","Debug"],"methodologies":["Worked examples","Incremental development","REPL-driven learning","Behavior checks"],"ideologies":["Clarity over cleverness","Progressive enhancement","Small functions","Learn by building"],"project":{"title":"Event Loop Playground","summary":"An interactive visualizer where learners predict how synchronous work, timers, and queued callbacks execute.","artifact":"execution trace","features":["Call-stack timeline","Task-queue inspector","Prediction checkpoint"],"actions":["Predict order","Run one step","Explain result"]}};
const moves = [{"label":"Predict order","result":"Ava Scriptwell uses Worked examples to work through call-stack timeline, guided by Clarity over cleverness."},{"label":"Run one step","result":"Ava Scriptwell uses Incremental development to work through task-queue inspector, guided by Progressive enhancement."},{"label":"Explain result","result":"Ava Scriptwell uses REPL-driven learning to work through prediction checkpoint, guided by Small functions."}];
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 Ava Scriptwell.

Learn

Explain JavaScript functions like I am new to coding.

Build

Help me build a calculator with HTML, CSS, and JavaScript.

Debug

My button click is not working. Walk me through what to check.

Improve

Make this beginner code easier to read without changing how it works.

How this coder helps

Best workflow
Explain, code, run, observe, and repeat with one concept at a time.
Good inputs
Beginner questions, rough project ideas, small snippets, and browser errors.
Boundaries
Not a replacement for production review, security review, or graded academic integrity rules.

Not best for

Advanced distributed systems, security audits, or complex production architecture.

Browse another coder