Atlas / Skills / joeeeeey / arch-motion-page

arch-motion-pageCAUTION

skills/joeeeeey/arch-motion-page

Agent skill: compile a YAML spec into a one-page animated A4 architecture blueprint (live HTML, poster PNG, MP4). EN/中文.

Verdict
CAUTION
Grade
B
Trust score
89 /100
Version
—
Hosts
3 documented
License
MIT
Stars
0
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

arch-motion-page

An agent skill that turns a system architecture into a one-page, animated A4 blueprint:live HTML, a poster PNG and an MP4, all from one small YAML spec.

English · 简体中文

The example page explains amp using amp's own pipeline. It was built and rendered by this skill. ▶ Full MP4 (EN, 24 s) · 中文 MP4 · Live HTML · 中文 HTML

What it does

Describe a system: an entry point, the roles or services it dispatches to, and what they share or produce

Read from source at commit ff242e213ae2OBSERVED · 2026-10-11
02

Install

Commands as the repository documents them. They are shown, not run.

npx skills add joeeeeey/arch-motion-page            # add -g to install for every project
git clone https://github.com/joeeeeey/arch-motion-page ~/.claude/skills/arch-motion-page
npx skills add
npx skills add joeeeeey/arch-motion-page            # 加 -g 则所有项目可用
git clone https://github.com/joeeeeey/arch-motion-page ~/.claude/skills/arch-motion-page
npx skills add
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
claude-codementioned
codexmentioned
cursormentioned
04

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: arch-motion-page
description: Compile a product or technology architecture into a one-page animated A4 blueprint (live HTML, poster PNG, HyperFrames MP4) from a small YAML spec. Use for animated architecture explainers, "A4 architecture page with motion", HyperFrames architecture videos, or turning a system analysis into a motion one-pager.
license: MIT
metadata:
  author: Joey (github.com/joeeeeey)
---

# arch-motion-page (amp)

By **Joey** ([@joeeeeey](https://github.com/joeeeeey)) · [live demo](https://joeeeeey.github.io/arch-motion-page/) · [repo](https://github.com/joeeeeey/arch-motion-page) · MIT

[![The example page drawing itself, then a Director card dispatching packets to six specialist cards](https://raw.githubusercontent.com/joeeeeey/arch-motion-page/gh-pages/media/skills-sh-hero.webp)](https://joeeeeey.github.io/arch-motion-page/)

amp turns an architecture analysis into one A4 page. The page has a header, a brand column, a three-tier figure and three columns of academic-style text. It builds itself in about 3 s, then loops a heartbeat story: the root pulses, signal packets travel the edges, each worker card swells as its packet lands, and the hand-off flows into the substrate. Edges march, mascots bob and a neon gradient wordmark breathes. After the build, every frame is a usable poster. The default skin is white paper with black type (`plush-academic`); `blueprint` is the navy alternative. Pages can be English or Chinese (`meta.lang: zh`).

**Division of labour.** The agent writes only `spec.yaml`. Deterministic compilers own every coordinate, colour and keyframe:

```
spec.yaml ─▶ lib/spec.mjs (validate, budgets)
          ─▶ lib/archetypes/tiered.mjs (boxes, edges, packet routes)
          ─▶ templates/paper-a4.mjs + themes/<name> (HTML/CSS)
          ─▶ lib/motion.mjs (JSON op list) ─▶ runtime/amp-runtime.js (ONE paused GSAP timeline)
          ─▶ out/index.html  (also a valid HyperFrames composition)
```

## Hard rules

- Never hand-edit `out/`. Every fix goes into the spec. Fix the compiler, theme or template only when the defect is generic.
- Keep the page deterministic:
  - No wall-clock reads.
  - No unseeded randomness.
  - No network at view time: the build copies GSAP (from npm) and the Latin fonts (`vendor/fonts/`) into `out/`, subsets CJK fonts into `out/fonts/`, and assets live inside the spec folder.
- Run third-party tools in containers. Font subsetting (zh pages and `--single`) runs pyftsubset in Docker with `--network none`; the CJK sources are pinned downloads, verified by sha256 and cached in `~/.cache/arch-motion-page/`.
- Review at the HTML stage with `scripts/review.mjs`.
  - Render video only after the HTML passes review **and** the user approves.
  - Render only inside Docker (`scripts/render.sh`). Never run `npx hyperframes` on the host.
- Images are optional. Generate them with whatever image tool is available (an installed image-generation skill, or any model that outputs PNG with a transparent background), and keep each prompt next to its asset in `assets/source/*.prompt.txt`.
  - Never print API keys or image-tool config.
  - Never commit generated assets that contain anything sensitive.

## Workflow

0. **Setup (once):** run `npm install` in this skill dir. It needs Node ≥ 22 and a local Chrome (override with `CHROME=/path`).
1. **Analyse the system into three tiers**, using `references/design-grammar.md`:
   - **root**: the entry point or orchestrator, exactly one node.
   - **workers**: 3–7 roles or services.
   - **substrate/outcome**: 2–6 shared stores, platforms or results. The last node is usually the outcome.

   Then pick:
   - The **one story** worth looping: which workers, in which order.
   - An optional **feedback edge**: outcome → root.
2. **Write the spec.**
   - Start a work dir outside the skill, e.g. `/tmp/amp-<slug>/`.
   - Copy `examples/self-intro/spec.yaml` there as a template.
   - Fill it using `references/spec-schema.md`. Respect the character budgets, because the build warns on every overrun. Budgets count a CJK character as width 2.
   - Language variants sit next to it as `spec.<lang>.yaml` (e.g. `spec.zh.yaml` with `meta.lang: zh`) and build into `out-<lang>/`.
3. **Assets (optional):**
   - Use node `icon:`s from the built-in set; no images needed.
   - Or generate a plush cast and a brand image:
     ```bash
     # any image tool: one 2048x1024 PNG character sheet, transparent background
     <image-tool> --prompt-file cast.prompt.txt --size 2048x1024 --background transparent \
       --output /tmp/amp-assets/cast.png
     uv run --with pillow --with numpy python scripts/slice_cast.py /tmp/amp-assets/cast.png \
       <workdir>/assets/mascots --grid 4x2 --names a,b,c,d,e,f,g,h --height 240
     ```
   - The prompt recipe is in `examples/self-intro/assets/source/`.
4. **Build:** `node scripts/build.mjs <workdir>/spec.yaml`. This writes `<workdir>/out/`. Pass `--theme <name>` to try another skin. The first zh build creates the `amp-fonttools` image and downloads the Noto SC fonts once; later builds take seconds.
5. **Review:** `node scripts/review.mjs <workdir>/out`. Then:
   - Read `review/contact.png` and the console fit report.
   - Zoom into the figure with `--zoom 288,148,752,520`, or into the hero with `--zoom 40,148,1000,520`.
   - Score against `references/review-rubric.md`, edit the spec, rebuild, and repeat.
   - The page is done when the fit report says OK, columns fill 88–99%, the review prints `loop seam ... OK`, and the rubric passes.
6. **Present or publish as HTML:**
   - `out/index.html` autoplays when opened: the build plays once, then the live story loops from `loopFrom` (about 3.4 s) to the end. Both ends of that window are the same frame, so the page never jumps back to blank. `?once` plays everything once and holds the last frame. It sits centred on a desk at 1:1 when the window is wide enough and scales down to the window width otherwise.
   - Keys: Space play/pause (at the end it r
05

Trust audit

CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (5 observation(s))
Shell
declared (2 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (9)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/review.mjs:66
const list = await (await fetch(`http://127.0.0.1:${port}/json/list`)).json();
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/review.mjs:126
const base = `http://127.0.0.1:${server.address().port}`;
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/review.mjs:213
await c.send('Page.navigate', { url: `http://127.0.0.1:${sheetServer.address().port}/contact.html` });
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
yaml
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOInventory / provenance · inv.oversize · CWE-1104
docs/demo-zh.webp
docs/demo-zh.webp
Why it matters. 8079740 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
docs/demo.webp
docs/demo.webp
Why it matters. 8436792 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
docs/poster-blueprint.png
docs/poster-blueprint.png
Why it matters. 1136505 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
docs/poster-en.png
docs/poster-en.png
Why it matters. 1203723 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
docs/poster-zh.png
docs/poster-zh.png
Why it matters. 1180290 bytes not read

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha ff242e213ae2full audit observations/trust-audit/skill/joeeeeey__arch-motion-page.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-11ff242e213ae2CAUTIONB89first audit
07

Questions

What does the arch-motion-page skill do?

Agent skill: compile a YAML spec into a one-page animated A4 architecture blueprint (live HTML, poster PNG, MP4). EN/中文.

Is arch-motion-page safe to install?

With care. The audit graded it B (89/100) and found 9 things worth knowing before you trust this skill, listed below with the exact line each was found on.

What can arch-motion-page access on my machine?

The audit observed that it reaches the network, runs shell commands and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.

Which assistants does arch-motion-page work with?

Its documentation mentions claude-code, codex and cursor. That is what the text claims, not a compatibility test we ran.

How current is this page?

The grade is for one exact copy of the source (ff242e213ae2), read on 2026-10-11. The repository is watched, and a new audit runs when it changes — this is the first audit.

Advertisement