본문으로 건너뛰기
cccskills
무료GitHub에 공개

motion-figure

Create animated lesson diagrams, sliders that update figures, and interactive panels that explain how systems work. It also builds moving dot patterns for page headers, with rules for readability, themes, and reduced motion.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Builds figures that move or respond to the reader, in three tiers: SMIL animations and slider widgets inside lessons, interactive mechanism figures that show the named parts of a real system with a computed verdict, and ordered dither bands in the course palette. Triggers: "animated figure", "add a slider widget", "interactive figure", "show how this system works", "make this diagram move", "dither masthead", "mechanism figure", "figure fence".

설치 방법 보기

이럴 때 유용합니다

  • Animate a process in a lesson
  • Explore a formula with a slider
  • Show a system's behavior through one control
  • Add a moving dot pattern to a page header

포함된 파일(8)

  • SKILL.md12.1 KB
  • references/dither-fields.md4.2 KB
  • references/mechanism-figures.md6.2 KB
  • references/smil-rules.md9.6 KB
  • references/tokens.md3.8 KB
  • references/toolkit.md18.8 KB
  • templates/dither.js9.0 KB
  • templates/mechanism.html7.3 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Motion figure

This skill makes figures that move or respond to input. It has three tiers. Use this skill with Claude, Cursor, Codex, OpenClaw, Hermes, or any agent that reads SKILL.md.

TierWhat it makesWhere it goes
1. Lesson figureDeclarative SMIL animation, or a slider widget that redraws an SVG. Both mount from a ```figure fence.Course lessons
2. Mechanism figureAn HTML panel that shows the named parts of a system. The reader drives one control and reads a computed verdict.Standalone pages, READMEs, essays, the course site outside lessons
3. Dither fieldA WebGL band of ordered dither dots in the paper, accent, and ink colours, with four seeded motions.Page mastheads and section breaks

Tier 1 has the most rules, because the lesson runtime has hard limits. Tiers 2 and 3 have their own reference files.

When to use

  • A lesson explains a process that changes over time: a token that moves through stages, a queue that fills, a loop that repeats.
  • A lesson explains a formula where one input changes the output: learning rate, temperature, chunk size, batch size.
  • An author writes "animate this figure", "add a slider", or "make the diagram interactive".
  • A page needs a demo where the reader changes one thing and sees what the system does: a cache, a queue, a context window, a router. Use tier 2.
  • A page needs a slow moving header in the course colours. Use tier 3.

When not to use

  • The idea is a fixed structure with no time axis and no input. Make a static SVG figure. The sibling skill blueprint-figure covers static figures.
  • The page is a full explainer page with its own state model and machine geometry. The sibling skill isometric-explainer covers that.
  • You only need palette, fonts, or prose rules. The sibling skill course-style holds those. This skill copies the parts it needs into references/tokens.md.

Method

  1. Write one sentence that names the single change the figure shows. If you need two sentences, make two figures.

  2. Pick the tier. Inside a lesson, use tier 1. For tier 2, read references/mechanism-figures.md and start from templates/mechanism.html. For tier 3, read references/dither-fields.md and copy templates/dither.js. The steps below are for tier 1. In tier 1, use an animated figure when time is the variable. Use a slider widget when a number is the variable.

  3. Pick a name in kebab case, for example request-path or context-budget. Search the registry for that name first. A later module that registers the same name replaces the earlier figure.

  4. Put the code in a module file named figures-<topic>.js. Wrap it in an IIFE, read window.LF, and return early if it is missing.

  5. Write a figure function function (host, cfg). It appends one .lf card to host and can return a dispose function.

  6. Build the card: .lf-head with an uppercase .lf-label and a short hint, .lf-body, and .lf-cap with the caption.

  7. Use viewBox="0 0 520 H" for the SVG. Most course figures use an H from 200 to 250. A single bar needs less.

  8. Add a <title> and a <desc> with ids that you create once, outside any render function.

  9. For an animated figure, add entries first, then one slow loop. Follow references/smil-rules.md line by line.

  10. For a slider widget, define state._render before you call LF.slider or LF.select. Then call state._render() once at the end.

  11. Call LF.register({ 'your-name': fn }) at the end of the module.

  12. In the lesson Markdown, add the fence. Put the name on the first line and optional JSON config after it:

    ```figure
    context-budget {"windowK": 32}
    ```
    
  13. Run the checks in "Check before you finish". Look at the figure in light theme, dark theme, at 375 px width, and with reduced motion on.

How the page mounts a figure

  • The Markdown parser turns the fence into <div class="lesson-figure" data-figure="name {json}">.
  • The site build scans lesson Markdown for fence names. It finds the module file that contains the quoted name and writes a manifest. A fence name with no provider stops the build.
  • The page loads only the modules that the lesson needs, in a fixed order. New module files go after the listed ones, in alphabetical order.
  • The mount function reads the first word as the name and parses the rest as JSON. Bad JSON gives an empty cfg.
  • If the figure function throws, the runtime empties the host and logs a warning. The rest of the lesson still renders.
  • After mount, the runtime adds a title, a description, role="img", and control labels if they are missing. It adds a Pause button when the figure has SMIL animation, and a Replay button when any animation plays once.
  • The runtime pauses animation when the figure leaves the viewport, when the tab is hidden, and when the reader presses Pause. With reduced motion or print, it shows the static frame.

references/toolkit.md describes every runtime function and has two complete example modules.

Rules

Animated figures:

  1. Use only <animate>, <animateTransform>, and <animateMotion>. Do not use setInterval or requestAnimationFrame in a figure.
  2. Keep each figure at 55 SVG elements or fewer.
  3. Entries go from opacity 0 and scale 0.95 to opacity 1 and scale 1. Never start a scale at 0.
  4. Entries use calcMode="spline" and keySplines="0.23 1 0.32 1". Entry duration is 0.5 to 0.6 s.
  5. Stagger entry begins by 0.05 to 0.4 s. Exits are shorter than entries.
  6. Loops last 2.5 to 6 s and use repeatCount="indefinite". Do not set fill="freeze" on a loop, because the runtime then plays it once.
  7. Each keyTimes list has as many entries as values. It starts at 0, ends at 1, and never decreases.
  8. Each keySplines list has one entry fewer than keyTimes. Use it only with calcMode="spline".
  9. An animateMotion with keyPoints uses calcMode="linear". Its keyPoints count equals its keyTimes count. It has no values.
  10. Do not put var() in an animated fill or stroke value. Animate the opacity of a second element that has the target colour.
  11. Loops animate only opacity, transform, stroke-dashoffset, or motion along a path. The runtime makes any animation of x, y, x1, y1, x2, y2, width, height, r, cx, cy, rx, or ry play once.
  12. The frame at the host's data-static-time (default 1.5 s) is complete and readable. Set the attribute on the host when a later moment shows the full state.
  13. Scale an element around its centre. Draw the content of a group around (0, 0) and move the group with translate. Add the scale with additive="sum".

Slider widgets:

  1. Write ES5 only: var, function expressions, string concatenation. No arrow functions, let, const, or template literals.
  2. Define state._render before the first LF.slider or LF.select call. The slider wraps the render function when you create it.
  3. In state._render, remove all SVG children and add them again. Do not edit nodes in place.
  4. Create ids once, outside state._render. The runtime removes attributes that the new nodes do not have, ids included.
  5. Grow bars by length or by stroke-dasharray on a path. Do not grow bars with scale, because reconciled nodes scale from their centre.
  6. Keep each slider label short and lowercase with the unit in brackets, for example chunk size (tokens).

Both kinds:

  1. Take every colour from a CSS variable with the light theme value as its default, for example var(--blueprint,#3553ff). Use literal hex only when no variable works.
  2. Use at most one accent colour (--blueprint) for the main subject and --warn for one second state. Use ink and rule tokens for the rest.
  3. Set SVG text at 12 units or larger, in var(--font-mono). If labels must be smaller, give the SVG a minimum width of 500 px and let it scroll sideways.
  4. Measure label size on a phone. On a 375 px screen, a 520-unit SVG inside the card drew 279 px wide. A 12-unit label then drew at about 6.4 px.
  5. Write the caption in plain technical English. Name what each colour means. Keep sentences at 25 words or fewer.
  6. Give the label in .lf-label in uppercase, two to four words.

Mechanism figures (tier 2):

  1. Show real names and real numbers: file names, keys, token counts. Never item 1 or a grey bar with no name.
  2. Give the reader one control: step, slider, toggle, play, or stop a part.
  3. End with a verdict line in text, computed from the numbers in the body. Never write a fixed outcome.
  4. Run once when 35 percent of the figure is visible, add a Replay button, and never loop.
  5. Animate transform and opacity only, with cubic-bezier(0.23, 1, 0.32, 1). Press 120 to 160 ms, reveal 200 to 300 ms, fold 380 to 500 ms.
  6. Stagger lists by 30 to 70 ms per item, for the first 8 items only.
  7. Keep every label whole at every frame: no ellipsis, no overlap, no text on dots. Text 11 px or more, verdict 12.5 px or more.
  8. At 320 px, stack the panels in one column and give each control a 40 px touch target.
  9. Use a mechanism that no other page on the site uses, and add it to the site's mechanism table.

Dither fields (tier 3):

  1. Read the colours from --bg, --blueprint, and --ink, and redraw when data-theme changes.
  2. Draw at 30 frames per second at most, and only while the band is visible.
  3. With reduced motion, draw one static frame. Without WebGL, show a static hatch.
  4. Mark the band aria-hidden="true" and put no text on the dots except the label chip.

Check before you finish

  • The fence name matches the registered name exactly, and no other module registers it.
  • The module has no =>, let, const, or backtick strings.
  • The module has no setInterval and no requestAnimationFrame.
  • The validator in references/smil-rules.md returns an empty list for the mounted host.
  • Each animated figure has 55 SVG elements or fewer.
  • Every loop has a duration from 2.5 to 6 s.
  • No loop animates a geometry attribute from rule 11.
  • With reduced motion on, the figure shows a complete picture and no element is missing.
  • In dark theme, every line and label is visible.
  • At 375 px width, every label is readable and the page has no sideways scroll outside the figure.
  • For a widget, moving each slider to its minimum and maximum gives no NaN, no negative widths, and no console errors.
  • The SVG has one title and one description, and their ids stay the same after a slider moves.
  • The caption names every colour that the figure uses.
  • Tier 2: every item in the checklist at the end of references/mechanism-figures.md passes.
  • Tier 3: every item in the checklist at the end of references/dither-fields.md passes.

Files

  • references/smil-rules.md: the twelve SMIL rules in full, what each rule prevents, and a validator you can run in the browser console.
  • references/toolkit.md: the LF functions and the mount sequence. It also has a complete slider widget, a complete SMIL figure, and a preview page for use outside the course site.
  • references/tokens.md: colour tokens for light and dark themes, fonts, and motion timing values.
  • references/mechanism-figures.md: tier 2. Real names, rejected figures, mechanism shapes, anatomy, verdict, motion budget, and checks.
  • references/dither-fields.md: tier 3. How the shader draws, the four motions, markup, rules, dithered bars, and checks.
  • templates/mechanism.html: a complete tier 2 figure, an LRU cache with a size control, that opens in any browser.
  • templates/dither.js: a complete tier 3 script. Load it and add <div class="dither" data-seed="...">.

Inside the AI Engineering from Scratch repo, also see site/lesson-figures.js for the runtime and site/figures-*.js for more figures.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Create static SVG diagrams, scalable images for lessons, READMEs, and manuals. It uses real system names, nine diagram types, and consistent colors and arrows, with checks for readable labels, accessible descriptions, and valid markup.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Add a diagram of system interactions to a README
  • Explain state transitions in a manual
  • Illustrate data flow from logs or specifications
rohitg00/ai-engineering-from-scratch7.1만2026년 10월 19일 업데이트

Learn AI engineering by building a project one stage at a time. The tutor guides predictions, learner-written code, automated checks, and reflection, then records progress so the next session can continue from the right stage.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Learn AI engineering through hands-on projects
  • Resume a project from the next unfinished stage
  • Find coding mistakes with step-by-step hints
rohitg00/ai-engineering-from-scratch7.1만2026년 10월 19일 업데이트

Run a local check of test evidence and retain source paths in the result. The workflow stops when required evidence is missing, keeping the findings tied to their sources.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Checking local test evidence
  • Keeping source paths in check results
  • Stopping a check when evidence is missing
rohitg00/ai-engineering-from-scratch7.1만2026년 10월 19일 업데이트

Test your understanding of a phase in AI Engineering from Scratch through eight multiple-choice questions. Receive a score, explanations for incorrect answers, and specific lessons to review before continuing your studies.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Checking your understanding after completing a phase
  • Assessing readiness for the next phase
  • Finding lessons to review from incorrect answers
rohitg00/ai-engineering-from-scratch7.1만2026년 10월 19일 업데이트

Prepare for four Claude certification tracks through guided lessons, practical exercises, quizzes, and mock exams. The tutor checks understanding and learner-created work, records progress, and uses assessment results to guide review.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Choosing a certification track for a learning goal
  • Resuming lessons from saved progress
  • Completing guided exercises without writing code
rohitg00/ai-engineering-from-scratch7.1만2026년 10월 19일 업데이트

Find relevant lessons in AI Engineering from Scratch from a topic, question, or bug. Get a short selection of lessons, necessary prerequisites, and the next learning command, with dedicated routes for specialized subjects.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Finding lessons on a topic you want to learn
  • Locating lessons that explain a bug's underlying cause
  • Choosing what to study next based on your progress
rohitg00/ai-engineering-from-scratch7.1만2026년 10월 19일 업데이트

rohitg00의 스킬 모두 보기

이 스킬의 문제 신고