website-editing-783de4 — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited website-editing-783de4 (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
WebSite/site-react/ is the only source for tinyassets.io. It is a Next.js 14 App Router static export that consumes @tiny/design-system (WebSite/design-system/, tokens + base styles + components). Site source on main runs deploy-site-react.yml (see WebSite/DEPLOY.md). confirm: deploy rolls back. The Svelte rollback tree was retired on 2026-09-02; do not recreate a second tree or a parity step.
These are project-level website rules for every provider; AGENTS.md only points here.
WebSite/DEPLOY.md.
AI universe: a cloud agent that runs on your subscription, builds any automation to any platform from primitives, learns you continuously, and runs 24/7 under your control.* Every page has one job; the map is in openspec/specs/public-website-surface/spec.md.
vocabulary classes (.sheet, .rule, .ledger, .receipt, .ev, .eyebrow) come from WebSite/design-system/src/styles/. Edit tokens.css (canonical), run npm run build there, and the site picks it up. DESIGN.md there is the rules layer.
tinyassets/desktop/icon_gen.py owns thegeometry and palette; python WebSite/brand/render_marks.py exports it to every surface (site icons, assets/, desktop, Android, tray, Play listing) and python WebSite/brand/render_og.py renders the OG card. Never hand-edit an exported PNG or ICO.
cd WebSite/site-react && npm run dev # http://localhost:3000, live /mcp proxiedEdit, the tab updates (HMR). If a tab ever needs F5, investigate; do not normalise the workaround. Copy and tokens are reviewed in the browser, not in the diff.
engine". Lead with what a universe finishes: a merged PR, a ledger, a watched feed. The proof on the home page is a real receipt (PR #2728).
universe the person talks to; it speaks first person. A chatbot relays to the universe; it never "embodies" it.
not an OAuth button; ChatGPT/Codex is one tap. Android is a pre-release APK; desktop builds are unsigned and from source. Say so in words.
/fine-print#plans: same app and security, runs and storage only,no price. Upgrade entry: /app?upgrade=1. Home and /start may link there and must not name a price.
fleets, per-channel integration lists, the retired Workflow name, or "powered by <model>". No engagement metrics anywhere.
Secondary links are quiet text.
mailto: with realfields.
<a>/<button> over clickable <div>s.
Refresh MCP and Refresh GitHub.Every /mcp request needs a connector bearer. lib/live.ts therefore makes no MCP request from the public browser and returns an explicit sign-in-required state. Public pages render only the labelled checked-in snapshot. A live read belongs in an authenticated connector or account session, never a credential embedded in static JavaScript. WebSite/site-react/scripts/public-boundary.test.mjs and its canonical-contract sibling enforce this; extend them when you add an authenticated live surface.
Six public routes plus legal: /, /start, /build, /commons, /developers, /fine-print, /legal, and /account (robots-disallowed). Every retired route is a soft-landing alias through app/_components/Moved.tsx (two-second redirect with a visible link). Nav items live in lib/site.ts (NAV); canonical URLs in SITE. Adding a nav item updates desktop and the phone drawer together.
From the repo root (paths written in full so they resolve the same for you and for the doc checker):
cd WebSite/design-system && npm run build # after any token/component change
cd ../site-react && npm test # contract + boundary
npm run build # out/<route>/index.html for every routeThen, still in WebSite/site-react:
python WebSite/site-react/scripts/sweep.py --shots ../../out-shots — everyroute and alias at 390 px and 1280 px; requires errs 0, warns 0, no overflow.
node WebSite/site-react/scripts/snapshot-public.mjs — refreshlib/mcp-snapshot.json when it is stale.
Before declaring done: the sweep is clean, the screenshots were looked at, and protected live surfaces render an explicit signed-in state while snapshots retain their date and provenance. Reject raw placeholders such as {}, [], undefined, or epoch numbers.
Ship through the normal pull-request path. A site-source merge runs deploy-site-react.yml, then the canary and deployed_sha.py checks in WebSite/DEPLOY.md.
| Recurrence | Ratchet |
|---|---|
| 1st | Fix in place. Note it in the relevant doc. |
| 2nd | Add the rule to this SKILL.md and PREVIEW.md / DEPLOY.md. |
| 3rd | Build a runnable check under the site's scripts/ directory (node test or the sweep). |
| 4th | Wire it as a hook; runnable from any provider. |
| Next | Pre-commit / CI gate. |
Ratchets already in place: cross-provider drift (cross-provider-drift invariant); the public-read boundary (node tests); the rendered sweep (WebSite/site-react/scripts/sweep.py).
| File | What it is |
|---|---|
WebSite/site-react/ | The site source |
WebSite/site-react/lib/site.ts | Canonical URLs and the nav |
WebSite/site-react/lib/live.ts | Browser authentication boundary for live reads |
WebSite/site-react/scripts/ | Tests, snapshot baker, sweep |
WebSite/design-system/ | @tiny/design-system: tokens, base, components, DESIGN.md |
WebSite/brand/ | The mark's SVGs and exporters |
WebSite/shared/mcp/public-read-contract.js | Public read contract shared by site and baker |
WebSite/PREVIEW.md, WebSite/DEPLOY.md | Preview loop; deploy and verify |
.github/workflows/deploy-site-react.yml | Publishes site-source pushes; manual rollback |
openspec/specs/public-website-surface/spec.md | As-built spec of the public site |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.