Öffentliches Register
Software-GesundheitsberichtSchema 0.23.0 · Metriken 1.13.0 · 2026-07-21 20:43 UTC

sandeco / mira-animator

Agentes e templates para criação de slides animados com D3.js em HTML

HTML · JavaScriptEigene Lizenz★ 135 Sterne⑂ 44 Forksseit Juni 2026Auf GitHub ansehen ↗

sandeco/mira-animator erreicht einen Gesundheitsindex von 51 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (70/100) ab, am schwächsten bei Security (31/100). Zuletzt vor 1 Tag aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

51
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

51
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

SandecoPersönliches Konto
2.357 Follower78 öffentliche Reposseit März 2013@sandeco

Dieses Repository gehört einem persönlichen Konto. Ein Projekt mit nur einem Eigentümer trägt ein höheres Kontinuitätsrisiko als ein organisationsgetragenes.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
npmmira-animator0.1.464.26437vor 1 Tagslidespresentationd3animationhtmlaiclaudeagents

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

70Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 1 Tagen
4.2/36Commit-Rhythmus — 6/52 Wochen mit Commits
17.8/18Commit-Volumen — 94 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Verwendete Eingangsdaten
commits_last_year94
human_commit_share1
days_since_last_push1
active_weeks_last_year6
Wie die Bewertung erfolgt
16.2/27Liefert Releases aus — 6 Versions-Tags (keine GitHub-Releases)
36/36Release-Aktualität — letztes Release vor 24 Tagen
27/27Release-Rhythmus — ein Release etwa alle 3,2 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count6
latest_release_tagv0.1.21
releases_from_tagsja
days_since_latest_release24
mean_days_between_releases3,2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

50Mittel · 18 % des Gesamtindex
Wie die Bewertung erfolgt
34.5/60Stars — 135 Stars
13.6/25Forks — 44 Forks
0/15Watcher — 2 Watcher
Verwendete Eingangsdaten
forks44
stars135
watchers2
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonwindow_too_short
Wie die Bewertung erfolgt
22.5/22.5README
16.9/22.5Lizenz — Lizenzdatei vorhanden, keine anerkannte Lizenz
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
48.4/80Downloads pro Monat — 4.264 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagesmira-animator
dependents
ecosystemsnpm
total_downloads
monthly_downloads4.264
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

48Gefährdet · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 100 % der Commits
1.4/13.5Breite der Beitragenden — 1 Beitragende
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Verwendete Eingangsdaten
bus_factor1
contributors_sampled1
top_contributor_share1
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — 0 % der Issues geschlossen
25.5/38.3PR-Annahme — 2/3 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/26 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs2
open_issues2
closed_issues0
issue_closed_ratio0
closed_unmerged_prs1
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
24.2/25Reichweite des Inhabers — 2.357 Follower von sandeco
25/25Kontohistorie — 78 öffentliche Repos, Kontoalter ca. 13 Jahre
Verwendete Eingangsdaten
followers2.357
owner_typeUser
is_verified
owner_loginsandeco
public_repos78
account_age_days4.887
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 1 Tagen
20/20Versionshistorie — 37 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagesmira-animator
ecosystemsnpm
any_deprecatednein
min_days_since_publish1

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

50Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 1 Workflow(s)
0/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
10/20OpenSSF Scorecard: CI-Tests — 1 out of 2 merged PRs checked by a CI test -- score normalized to 5
Verwendete Eingangsdaten
has_cija
has_testsnein
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
0/10Topics
10/10Wiki
Verwendete Eingangsdaten
topics
has_wikija
homepage
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

31Gefährdet · 16 % des Gesamtindex

Sicherheitslage

31Gefährdet
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
1.2/2.5CI-Tests — 1 out of 2 merged PRs checked by a CI test -- score normalized to 5
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/26 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Lizenz — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — keine Daten
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3,1
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

49Gefährdet · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — templates/engines/AGENTS.md, templates/engines/CLAUDE.md, templates/engines/GEMINI.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 91 von 94 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,968
agent_instruction_filestemplates/engines/AGENTS.md, templates/engines/CLAUDE.md, templates/engines/GEMINI.md
agent_instruction_max_bytes2.348
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
0/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
10/10Reproduzierbare Umgebung — lockfile
10/10Belegte Agentenpraxis — 89 der letzten 94 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsnein
lockfilespackage-lock.json
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0,947
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — HTML ohne Typprüfungs-Konfiguration
53.7/55Handhabbare Dateigrößen — 1/41 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageHTML
largest_source_bytes93.746
source_files_sampled41
oversized_source_files1

Eckdaten

135GitHub-Sterne
1Mitwirkende
94Commits, letzte 12 Monate
1Tage seit letztem Push
6Releases
1Bus-Faktor
2offene Issues
npm, PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index npm:mira-animator@0.1.46; advisories assessed against the repository dependency graph instead

Weitere Details

Stern- und Fork-Verlauf 135 ★ / 44 ⇿
135Sterne
44Forks
4Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

025507510012515013544152026-062026-062026-07
Major 0Minor 0Patch 4
OpenSSF Scorecard 3.1 / 10
3.1Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-21 20:43 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
5CI-Tests1 out of 2 merged PRs checked by a CI test -- score normalized to 5
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/26 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
k. A.Packagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Direkte Abhängigkeiten 4
RegistryPaketVersionsvorgabeManifest
npmchalk^5.3.0package.json
npminquirer^9.2.0package.json
npmora^8.0.0package.json
npmyoctocolors-cjs^2.1.2package.json
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 11138,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "CSS": 10123,
        "HTML": 1104377,
        "Shell": 669,
        "Python": 14093,
        "Batchfile": 2062,
        "JavaScript": 498598
      },
      "pushed_at": "2026-07-20T18:37:01Z",
      "created_at": "2026-06-10T18:11:53Z",
      "owner_type": "User",
      "updated_at": "2026-07-20T19:31:39Z",
      "description": "Agentes e templates para criação de slides animados com D3.js em HTML",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "HTML",
      "significant_languages": [
        "HTML",
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "youtube.com/canalsandeco",
      "name": "Sandeco",
      "type": "User",
      "login": "sandeco",
      "company": "@sandeco",
      "location": "Brazil",
      "followers": 2357,
      "avatar_url": "https://avatars.githubusercontent.com/u/3765602?v=4",
      "created_at": "2013-03-04T14:38:58Z",
      "is_verified": null,
      "public_repos": 78,
      "account_age_days": 4887
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.1.21",
          "kind": "patch",
          "published_at": "2026-06-26T21:24:22Z"
        },
        {
          "tag": "v0.1.11",
          "kind": "patch",
          "published_at": "2026-06-11T18:11:38Z"
        },
        {
          "tag": "v0.1.10",
          "kind": "patch",
          "published_at": "2026-06-11T18:05:21Z"
        },
        {
          "tag": "v0.1.9",
          "kind": "patch",
          "published_at": "2026-06-11T17:09:57Z"
        },
        {
          "tag": "v0.1.2",
          "kind": "patch",
          "published_at": "2026-06-10T19:55:48Z"
        },
        {
          "tag": "v0.1.1",
          "kind": "patch",
          "published_at": "2026-06-10T19:44:26Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "909ec79bbdd2b0916e83700d145fef2b1cf0a77a",
          "body": "… e gravacao direta no disco no mira-studio\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.1.44 - teleprompter fora do video (Element Capture)…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-14T13:33:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "853f64fba0da77db2c8d3e4e40b3f58f76740671",
          "body": "…vacao direta no disco\n\nTeleprompter em duas pecas, padrao de todo deck mira-studio:\n- painel lateral (#mira-prompter, tecla T): editor com as chaves T/O/G/E, o\n  texto do slide e o botao de salvar. Some durante a gravacao.\n- overlay central (#tp-ov, tecla O): o que se le no ar. E IRMAO das <section\n[…]\n .cjs e path traversal; e o caminho de disco muxando com as caixas em\nftyp -> mdat -> moov, aberto pelo <video> do proprio Chrome.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mira-studio): teleprompter fora do video (Element Capture) e gra…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-14T13:33:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d7a5ed75754da4d5c235101b9ef4d1365a819965",
          "body": "…o+ (RF-09)\n\ngetUserMedia passa a usar o deviceId de window.__miraStudioPlus quando existe,\ncom fallback para a camera padrao se o id nao existir mais.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mira-camera): respeita a camera escolhida na pre-config do Studi…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-14T13:32:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4b6e3b8ea9fc2a1b96b12dcd887571f41e81ef62",
          "body": "…p/smooth off + F6 contentHint motion, veredito do pente fino)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WnB8M44HNfXFmsZPN4ojAZ",
          "is_bot": false,
          "headline": "chore(release): 0.1.43 - gravacao mais fluida no mira-studio (F16 sna…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-13T14:17:25Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "aca35244be0157ad47136e36b0029704fd070894",
          "body": "… da matriz)\n\nMatriz da manha (7 gravacoes, maquina real): encoder, pagina, camera e\nlauncher inocentados (celulas A/C/D/F ~= BASE). Celula E cravou o\ncapturador soltando frames so em conteudo animado - sinal do F6.\ncontentHint 'motion' prioriza fluidez; vigiar nitidez na confirmacao.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WnB8M44HNfXFmsZPN4ojAZ",
          "is_bot": false,
          "headline": "perf(mira-studio): F6 contentHint detail->motion na captura (veredito…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-13T10:07:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fa6902ebb844b018712eef6fd3bbd5da172ec219",
          "body": "Achado da revisao reflexion: a regra so neutralizava scroll-snap-type\ndeclarado no html; deck futuro com snap no body escaparia.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(mira-studio): F16 cobre snap declarado no body alem do html",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-13T02:27:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "88c3b4899e6b74dccab56e687d56f749387fa5ef",
          "body": "Com zoom/DPI fracionario (Windows 125%) o salto instant da navegacao pode\ncair sub-pixel fora do snap point e o snap proximity 'assenta' com animacao\nsmooth depois do salto — micro-scroll capturado no MP4. Regra CSS injetada\npelo mira-record so vale com data-mira-recording ativo; nenhum deck ou\ntemplate precisa mudar. Bancada (mira-perf-probe) sem regressao:\n0 long tasks, rAF gap max 16,8 ms, memoria estavel.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "perf(mira-studio): desliga scroll-snap/smooth durante a gravacao (F16)",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-13T02:07:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6e8436311a504fb9f38ac0595c67ac1c546876e6",
          "body": "…4 gravado\n\nfirstTimestampBehavior 'cross-track-offset' preservava a diferenca entre\nrelogios de origens distintas (mic ~0 vs captura de tela no relogio de\nuptime), jogando os frames de video horas a frente na timeline: o player\nmostrava so o 1o slide e uma duracao gigante. Troca para 'offset' (zera\ncada track no proprio 1o sample); os dois processors nascem juntos no\nstart, entao o desvio A/V maximo e de 1 frame.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(mira-studio): video congelado no 1o frame e duracao absurda no MP…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-13T00:12:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d9627e05397180291df389b8e207809ab300a08b",
          "body": "… cheia com titulo/header, design do lancamento do MIRA)\n\n- templates/decks/mira-perfect: capa com titulo em gradiente, headers com scrim, camada cinematografica (brasas + vinheta + flash), loop perpetuo e cor de marca parametrizada pelas variaveis do bloco @MIRA:THEME\n- CLI new: mira-perfect regist\n[…]\nemplate)\n- skills mira-new e mira-animator: caso especial e secao Variante: mira-perfect\n- docs (uso/temas/cli em pt/en/es) e README atualizados\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.1.42 - novo template mira-perfect (animacao de tela…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-12T23:17:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "21a3bfcea579a85d78066cf96d56ffe81a237755",
          "body": "… e launcher dedicado\n\n- mira-record.js: MP4 1080x1920 via WebCodecs + mp4-muxer (vendorado); painel mostra GPU ativa e seletor de encoder estilo OBS (Auto / GPUs / CPU) com teste real de encode\n- launcher mira-studio-windows.bat: sobe servidor local (nomes reais das GPUs via /__mira/gpus) e abre Chrome dedicado na GPU de alto desempenho, sem tocar no registro\n- installer copia templates/studio/; .gitattributes forca CRLF em .bat\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mira-studio): gravacao MP4 nativa com seletor de encoder por GPU…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-12T23:16:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1b63a88f95d6de8c77fc6971db646d738c9e3975",
          "body": "… embutida ao vivo e gravacao nativa MP4)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.1.41 - nova skill mira-studio (deck 9:16 com camera…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-12T14:41:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d45faa3abb8f6d226b55db238768d0b5fc038df2",
          "body": null,
          "is_bot": false,
          "headline": "Specify config file for mkdocs deployment",
          "author_name": "Sandeco",
          "author_login": "sandeco",
          "committed_at": "2026-07-11T13:41:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f738a64c3761928c5eb64931e64a458cbccbe5e7",
          "body": "Remove mkdocs.yml from the workflow trigger paths.",
          "is_bot": false,
          "headline": "Update workflow to exclude mkdocs.yml",
          "author_name": "Sandeco",
          "author_login": "sandeco",
          "committed_at": "2026-07-11T13:39:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a732bcc7f15663ec9f8b6640e72591c0e863676",
          "body": "…lib/, docs autocontidas)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WWW2Y9RNjos5P72jpsakgv",
          "is_bot": false,
          "headline": "chore(release): 0.1.40 - reorganizacao do repositorio (mira-serve em …",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-11T13:25:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ca90262b11c45c0ffd2371b1cf84574a2f7cc82e",
          "body": "… dev em dev/\n\n- mira-serve.js -> lib/mira-serve.js (refs atualizadas em docs, README e edit.js)\n- mkdocs.yml -> docs/mkdocs.yml (docs_dir/site_dir ajustados; build local em .site/)\n- brainstormings/ e sync-private.sh -> dev/ (privado)\n\nNota: .github/workflows/docs.yml precisa passar a usar -f docs/mkdocs.yml\n(ajuste aplicado a parte por restricao de escopo do token).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WWW2Y9RNjos5P72jpsakgv",
          "is_bot": false,
          "headline": "chore: raiz limpa - mira-serve em lib/, mkdocs.yml em docs/, material…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-11T13:24:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a6987e5848df76d4d0716641a3d97173948c1bdf",
          "body": "….md) sai do repo publico\n\nTudo que e desenvolvimento do MIRA vive apenas no repo privado (mira-private).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WWW2Y9RNjos5P72jpsakgv",
          "is_bot": false,
          "headline": "chore: material de desenvolvimento (claude, agents, CLAUDE.md, AGENTS…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-11T11:37:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a0fef3f93913b9ba7d47d9b9da6b8ebfae8688e6",
          "body": "…nal para aulas e conteudo monetizado\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(license): esclarece notice - source-available + permissao adicio…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-11T11:34:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4ef61eb86cb754483ce2fc2f55a3bfffdf8765ee",
          "body": "…ste fora do repo publico\n\nPublico mantem apenas o produto (bin, lib, agents, templates, docs) e os\ndecks-exemplo curados: exemplo-responsivo, mira-launch, mira-edit-livre-demo,\nsite-mira-responsivo. O restante persiste no repo privado sobreposto.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WWW2Y9RNjos5P72jpsakgv",
          "is_bot": false,
          "headline": "chore: fronteira publico x privado - devcontainer e decks pessoais/te…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-11T11:30:29Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "473466fece6d35ac85c8782aa8ff258aee31f61b",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WWW2Y9RNjos5P72jpsakgv",
          "is_bot": false,
          "headline": "chore: pendencias pos-0.1.39 (edicao livre) + normaliza EOL para LF",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-11T11:29:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6cf15a4aeab77ba327a0f88a9b605ca81322de0d",
          "body": "…em decks/testes\n\n- specs/ manuais movidas para _reversa_sdd/ (casa unica de specs, privada)\n- decks teste-* movidos para decks/testes/\n- teste-enquete-tempo-real.html sai da raiz para decks/testes/teste-enquete/\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WWW2Y9RNjos5P72jpsakgv",
          "is_bot": false,
          "headline": "chore: reorganiza estrutura - specs em _reversa_sdd e decks de teste …",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-11T11:21:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d0ba980fb57b302e65b1443b713e804c811b152f",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WWW2Y9RNjos5P72jpsakgv",
          "is_bot": false,
          "headline": "chore: ignora pastas do Reversa e brainstormings no git",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-11T11:06:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3e72a6533cf4642e3bfd9128b69e7cf3431fcf7c",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "merge: feat/mira-edit-livre (edicao livre estilo Canva + 0.1.39)",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-10T03:20:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f6e7506b3df39b6953781a7a1bd02573fa3aebbb",
          "body": "…a-edit-free) + skill /mira-webview\n\n- mira-edit-free.js: selecao por clique, mover/redimensionar/girar, texto inline,\n  duplicar/excluir, persistencia por ops em <script id=mira-free-edits>\n- barra unica: um salvar grava ordem de slides + edicoes livres\n- alca de rotacao sempre alcancavel (flip par\n[…]\nntro em full-screen)\n- mira-serve.js: destino normalizado e save silencioso por deck\n- licenca alterada de MIT para PolyForm-Noncommercial-1.0.0\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): 0.1.39 - edicao livre estilo Canva no modo edicao (mir…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-10T03:20:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f0028a1c001451fc4ac9d9a3bc4b3dae288be3f7",
          "body": "Descriptions -24% (~-1.8k tok/sessao, sempre-ligado) e corpos -5%, sem perder\ncapacidade nem gatilhos. Codigo, formulas e valores empiricos intactos.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): 0.1.38 - otimizacao de tokens das 34 skills do MIRA",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-08T14:55:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0996ac40cb960001254046a5126a6adfca66c692",
          "body": "Passo de otimizacao guiado pelos principios do skill-creator (progressive\ndisclosure + \"keep the prompt lean\"), sem perder capacidade nem disparo.\n\n- Descriptions (carregam em TODA sessao): 28877 -> 21834 chars (-24%, ~-1.8k\n  tok/sessao). Comprimida a prosa \"como funciona\" que duplicava o corpo;\n  \n[…]\necs.\n\nAuditado: YAML valido nas 34, blocos de codigo byte-identicos ao original,\nnenhum gatilho slash perdido, fences balanceados.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(skills): otimiza as 34 skills do MIRA para consumo de tokens",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-08T05:43:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d426fe14c4b49466751147dd051afa76dfe010fd",
          "body": "…yping\n\n- record-slide/build-video detectam deck sem body>section e gravam a\n  pagina inteira como clipe unico, recarregando no t=0 para inicio limpo\n- 1:1 sem cinza gravando index-1x1.html em 1080x1080\n- decks de teste (typing-matrix, area-segura); mp4 pesado fica gitignored\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(slide-to-video): grava cena unica full-screen do mira-animated-t…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-08T05:31:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cedfc0dd3cd38e58445bed59b3785fcbf915dd2b",
          "body": "… em zoom)\n\nNova skill que encena a digitação de um comando de agent harness em zoom:\nfonte mono gigante, fundo #212121, cursor piscando estilo Windows, cadencia\nhumana, janela deslizante ancorada a 100px da borda, quebra via /n, micro\npausa /p<ms>, cor por trecho via <color=#HEX>, entrada por print\n[…]\ne exemplo: simples, quebra, 10 linhas (wait-enter), Matrix\n- registrada em agent-sets, package.json files, docs x3 idiomas, README\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): 0.1.36 - skill /mira-animated-typing (comando digitado…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-08T04:28:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "87c7aa588b5a2f0cab94c9147bb57bf8a5fa9ead",
          "body": "…ra-squared e /mira-thirds\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): 0.1.35 - area segura obrigatoria e transparente no /mi…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-08T01:24:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "71c07d4be211b389db47f8b82a1ea512dd76da74",
          "body": "… tercos\n\nDiretiva validada com o usuario: a area segura pertence ao QUADRO (1:1) ou ao\nbox dos 2/3 (thirds), nunca ao palco; titulo e animacao vivem dentro dela e a\nanimacao sempre CHEGA na margem (casarPalco + fitToArea). A margem e\ntransparente: sem faixa vermelha ou CSS/JS de debug em arquivo entregue.\nDecks exemplo-responsivo atualizados para o padrao canonico.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(area-segura): margem de 50px obrigatoria e transparente no 1:1 e…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-08T01:23:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b049d3a885876ef96d34fbd54236558eefe199df",
          "body": "…etiva de título da capa\n\n- /mira-squared (1:1): quadrado 100vh, laterais cinza #333, animação\n  reformulada por metáfora preenchendo o quadrado (viewBox H=W), composição\n  enxuta com título no topo. Fiel ao mockup de referência.\n- /mira-thirds: animação reformulada por metáfora preenchendo os 2/3 d\n[…]\nnsivo/ nos 4 formatos (16:9, 9:16, 1:1, terços).\n- Specs SDD (score 92) e docs responsivos sincronizadas.\n- Bump 0.1.33 -> 0.1.34.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(responsividade): eleva 1:1 e terços por reflow de metáfora + dir…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-07T18:42:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3ccec79f39772fce2fd7a066772cc47f5eb500a4",
          "body": "…o harness\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): 0.1.33 - aviso não-bloqueante de nova versão ao abrir …",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-07T14:26:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c5d256d573c3e838291870b68c1d817307a139cf",
          "body": "Avisa o usuário quando há versão nova do MIRA ao iniciar a sessão num\nharness (Claude Code, Codex, etc.), sem bloquear e perguntando antes de\natualizar.\n\n- lib/runtime/version-notice.js: script Node puro, copiado para\n  .mira/bin/. Lê só o cache local e sai em ~24ms; a checagem no npm roda\n  em proc\n[…]\nDE.md/AGENTS.md.\n- install ativa, update mantém, uninstall poda o hook.\n- CLAUDE.md: instrução de sempre responder de forma breve.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(update): aviso não-bloqueante de nova versão ao abrir o harness",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-07T14:20:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "03b212e8307010d7b19b5551a77991f43eeb99a0",
          "body": "…comando) + base sempre 11x11 em formacao\n\n- Corrige a animacao da jogada que engasgava no modo remote control: durante o\n  Play o payload de sync congela (posicoes e rec.next) e o slide emite so um\n  comando play {token, playing, from}; cada aparelho roda a propria playRec\n  local. Some o trabalho \n[…]\ne vira quadro gravado em data/ (decisao 23).\n- Deck brasil-noruega segue como cena do gol (excecao legada) + NOTAS-MESA-TATICA.md.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): 0.1.32 - mesa tatica: Play fluido no remote (sync por …",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-06T14:55:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0562958a0bbbef4ab3fd17438e0f4678be197c73",
          "body": "… no celular e sync remoto\n\nMesa tatica (motor SVG novo):\n- renomear jogador (n e nome) robusto ao arrasto: deteccao de duplo-toque no\n  pointerup + area clicavel cobre o numero; Enter/clique fora salvam, Esc cancela\n- diretiva: todo time sempre tem goleiro (inclusive em cenas de lance)\n- bola \"cola\n[…]\n em new/edit, tags nos templates e spec legada\n\nSkills mira-tactics e mira-remote-control atualizadas (decisoes que nao regridem).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mesa-tatica): editor robusto, goleiros, conducao de bola, painel…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-06T03:03:25Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e8270b39d548e34478f1317748c0738871b22675",
          "body": "- apresentacao-mira-gsap/tatico-brasil-noruega.html: motor novo com o XI\n  de hoje (Martinelli no lugar do Paqueta) + jogada exemplo em data/\n- teste-remote/tatico-brasil-argentina.html: TACTICS portado (ordem de\n  slots direita->esquerda do motor novo, shorts/skin/hair preenchidos)\n- tatico-real-madrid-barcelona/index.html: idem\n- skin/hair dos jogadores portados por aparencia publica (aproximacao)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: migra as mesas taticas dos decks locais para o motor oficial novo",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-05T19:10:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a9a6b9809ed0a2738800f6608f07960f6d85496a",
          "body": "…necos chibi, jogadas gravadas, data/)\n\nAbsorve a implementacao de C:/slides/decks/mesa-tatica como motor oficial:\n- templates/decks/mesa-tatica/index.html: motor novo autocontido (sem CDN),\n  bonecos chibi com skin/hair, paint, gravacao de jogada por quadros-chave,\n  persistencia em data/ (schema m\n[…]\no que nao podem regredir)\n- specs/manipulacao/mesa-tatica.md + brainstormings/BRAINSTORM_VIDEO_PARA_JOGADA.md\n- README: overlay x slide dedicado\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): 0.1.31 - mesa tatica oficial: motor novo embarcado (bo…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-05T18:54:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3bae17a7eab40e9a8a636ef3ad38d4a9cb6734e9",
          "body": "…plates/decks/mesa-tatica)\n\nA skill mira-tactics apontava para decks/apresentacao-mira-gsap/, que so existe\nno repo fonte; em projetos instalados o motor nao chegava. Agora o motor de\nreferencia viaja em templates/decks/mesa-tatica/index.html (install/update\ncopiam para mira-templates/decks/) e a SKILL.md resolve o caminho com fallback.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): 0.1.30 - motor da mesa tatica embarcado no pacote (tem…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-05T16:32:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0b7a60b2d7df0ef46b042889f519674981a8d7f8",
          "body": "… mira/, nunca na raiz\n\n- mira new: mira-edit/draw/tactics.js nascem em <deck>/mira/\n- mira edit: injeta src=\"mira/...\" e migra deck legado (reaponta tag e remove copia da raiz)\n- templates de deck: script tags apontam para mira/mira-*.js\n- CLAUDE.md: diretiva registrada (raiz = index.html + launchers; apoio em mira/; midia em assets/)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): 0.1.29 - diretiva de estrutura de deck: JS de apoio em…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-05T15:11:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c53eab230ba52e157a678bd9da55a901482a2800",
          "body": "- Skill /mira-remote-control: servidor LAN zero-dependencias + shell de espelhamento\n- Layout limpo: apoio em mira/, imagens em assets/, launchers remote-control-windows.bat e remote-control-apple.command na raiz do deck\n- Palco sem UI: barra de status/controles so no celular; QR discreto no noteboo\n[…]\n scroll)\n- Scrollbar discreta como padrao nos templates de deck\n- Specs remote-control + brainstorm; decks de exemplo brasil-2026 e teste-remote\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(release): 0.1.28 - mira-remote-control (apresentar com o celular)",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-05T14:14:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "364863c0bc5cbd14e7e3e636e0a7c15cfcfd63f9",
          "body": "…ivel com celular\n\n- servidor: canal POST /draw + draw no broadcast e no join-state\n- deck: traduz tracos entre pixels da tela e coordenadas do palco (1280x720)\n- mira-draw (copia do proto): API minima (onchange/setShapes), canvas visivel\n  fora do modo desenho quando ha tracos, barra horizontal compacta em tela baixa\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(proto-remote): sincroniza desenhos do telestrator + barra compat…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-04T21:41:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4fe41a800f9be36d3c3f651cf9c20af1d7e8e50a",
          "body": "…draw/tactics\n\n- package.json: agents/mira-tactics no files + versao 0.1.27\n- agent-sets.js: mira-tactics no PIPELINE_CORE\n- README: secao das ferramentas de apresentacao ao vivo (P desenha, T quadro tatico)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.1.27 - registra mira-tactics no pacote e documenta …",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-04T21:40:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "251cafa005043078a0f46e16b6b5340eb74a6feb",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: experimentos de chart race e enquete em tempo real",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-04T21:34:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "06158cee98205ac0f24bbbdeac4cfa315801f931",
          "body": "…ote + CLAUDE.md\n\n- BRAINSTORM_MIRA_REMOTE: espelho/presenter/controle via segundo aparelho\n- proto-mira-remote: servidor LAN (Node puro, SSE) com palco 16:9 escalado,\n  fullscreen+paisagem no celular e telestrator embutido\n- BRAINSTORM_MIRA_EDUCACIONAL e BRAINSTORM_MIRA_MANIPULACAO + spec de manipulacao\n- CLAUDE.md: regra de organizacao dos brainstorms em brainstormings/\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: brainstorms educacional/manipulacao/remote + prototipo mira-rem…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-04T21:34:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b11d9b96cb185a985d6c59327c925cfa75d8fef7",
          "body": "…ramentas de autoria\n\n- mira-draw.js: desenho ao vivo sobre o slide (tecla P), caneta, formas, texto, borracha\n- mira-tactics.js: quadro tatico com pecas arrastaveis (tecla T)\n- mira edit retrofita os tres scripts de autoria (edit/draw/tactics) em decks existentes\n- mira new injeta as ferramentas em decks novos\n- docs (pt/en/es), demos e decks taticos de exemplo\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: mira-draw (telestrator) e mira-tactics (quadro tatico) como fer…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-04T21:34:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ca63c2080c16ee3490e4874724892100d871a9c4",
          "body": "- editor canônico em templates/authoring/mira-edit.js, generalizado para\n  detectar body>section (padrão Mira) e main>* (legado GSAP); marcador\n  SLIDE com \"===\" opcional; reorder da fonte com fim de região por tipo\n- os 4 templates de deck referenciam mira-edit.js; `new` copia o editor\n  para cada \n[…]\njs entra no pacote npm (save silencioso via http localhost)\n- writer inclui authoring/ no install; README + help documentam o modo\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(edit): modo edição embutido nos slides (reordenar) + retrofit",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-01T04:10:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "909b0946d3f41b7883c0d4b024f789ba2ef0daad",
          "body": "…culo)\n\nReserva circulo/particula para conceitos abstratos; quando o conceito tem\nreferente concreto, o ator da animacao passa a ser um icone flat reconhecivel,\ninline no SVG, mantendo a Regra Zero (loop interno) e o deck offline.\nFonte aberta apenas (Google Material Symbols/Apache-2.0 ou Iconify), estilo\nflat preenchido recolorido para a paleta do deck, atribuicao em CREDITS.md.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(mira-animator): diretiva de icone flat real como ator (menos cir…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-01T03:12:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "02ae245ece325408f47dcad112d1baac4eedf8e2",
          "body": "- Nova familia \"Agentes de Interatividade\" (agentes/interatividade) no nav, com survey e quiz\n- survey e quiz saem de \"Visuais e dados\"; chart-race permanece la\n- mira-slide-to-video documentado no pipeline (grupo Format agents) e em Formatos de video\n- hub de agentes: de cinco para seis familias\n- uso: mencao a chart-race e quiz\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: menu Agentes de Interatividade + slide-to-video (en/pt/es)",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-01T02:47:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "edcb57621e2413ae2a335abe349c6b9c6e592454",
          "body": "- mira-quiz: quiz ao vivo (QR + Google Forms/Sheets, revelacao controlada pelo apresentador)\n- mira-chart-race: corrida de grafico a partir de dados temporais (barras ou linhas)\n- mira-slide-to-video: exporta um ou mais slides para .mp4 (Chrome headless + ffmpeg)\n\nRegistra os agentes em agent-sets.js e no campo files do package.json; bump 0.1.24.\nInclui os brainstorms de interatividade e de quiz que guiaram as skills.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: skills mira-quiz, mira-chart-race e mira-slide-to-video",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-07-01T02:47:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e16dd160f72c6bc84ad98d6855510899f1eda189",
          "body": "- description em bloco YAML dobrado em vez de escalar de linha unica; o\n  dois-pontos seguido de espaco quebrava o parser YAML e o Codex ignorava 9\n  skills (mira-3d, mira-image, mira-offline, mira-qrcode, mira-squared,\n  mira-svg-animator, mira-svg-morph, mira-thirds, mira-vertical).\n- todas as des\n[…]\nnimator, mira-svg-morph).\n- auditoria das 28 skills passa 100% (YAML valido, name igual a pasta,\n  description de 1 a 1024 chars).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(skills): frontmatter no padrao agentskills.io",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-29T23:40:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e77985bba8c3cc5250a319b0ba4a8b4e12eead07",
          "body": "Commitado a pedido, sem revisao desta sessao:\n- template just-animation v2 (mira-animator, mira-new, lib/commands/new.js,\n  templates/decks/sandeco-just-animation-template, specs/just-animation-template-v2.md)\n- spec do mira-svg-animator + assets GSAP (specs/GSAP, decks/apresentacao-mira-gsap/assets/svg)\n- erros_codex.md (diagnostico do YAML invalido em 8 SKILL.md)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: alteracoes em andamento de outra sessao",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-29T23:03:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "863dd54ec5abadb278de9932f5d0b35e6cecaab3",
          "body": "…tempo real) + bump 0.1.23\n\nSlide de enquete ao vivo: QR-code para a plateia votar num Google Forms e\num grafico (donut 3D ou barras) que atualiza em tempo real lendo a planilha\nde respostas pelo endpoint gviz por JSONP (funciona por file://). Se faltar\num dos links (votacao/planilha), o agente pede\n[…]\n\n\nRegistrado em agent-sets, package.json (files), docs (visuais + pipeline x3)\ne README. Artefato validado em decks/teste-survey/.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(survey): skill /mira-survey (enquete ao vivo: QR + resultado em …",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-29T22:44:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fc0c90117b40d230ecc56e54abe084e1b5067404",
          "body": null,
          "is_bot": false,
          "headline": "chore(release): prepara 0.1.22",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-29T16:42:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8979eea8ac0d4baaa00a7eac5b79fc5d5bb76db",
          "body": null,
          "is_bot": false,
          "headline": "chore(templates): renomeia template de animacao",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-29T16:41:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f873aad1bc187516e978c5c4bc214bfa098462b1",
          "body": null,
          "is_bot": false,
          "headline": "feat(templates): adiciona animacao livre",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-29T16:41:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "467842276fc437c39fb1783f421cd2c19dddbaf3",
          "body": "As bibliotecas que o deck carregava por CDN (Tailwind, AOS, Lucide, D3,\nfonte Inter e Three.js) agora viajam vendoradas no pacote e sao copiadas\npara o deck, que passa a abrir por file:// mesmo atras de firewall corporativo.\nNada e baixado em runtime: tudo embarca desde a instalacao.\n\n- templates/ve\n[…]\nra-offline: skill para localizar um deck ja existente (rede de seguranca)\n- .gitattributes preserva as libs vendoradas byte a byte\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: modo offline (decks self-contained, sem CDN) + bump 0.1.21",
          "author_name": "sandeco",
          "author_login": "sandeco",
          "committed_at": "2026-06-26T21:24:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "be5e1e0a09501682ae7055c28ed63e6fa9382e2a",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump versao para 0.1.20 (skills GSAP de morph e animacao de SVG)",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-19T18:55:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "20d96f582ed5ae4c2264ceda00f456b842c13239",
          "body": "Specs (SDD, 100/100) em specs/GSAP:\n- mira-svg-morph-spec, mira-icon-morph-spec, mira-svg-animator-spec\n- mais o doc de contexto mira-gsap-contexto\n\nSkills novas em agents/ (opt-in, padrao mira-3d/mira-qrcode):\n- mira-svg-morph: 2+ arquivos SVG morfam em loop (GSAP+MorphSVG vendorados, offline)\n- mi\n[…]\nh-sequencia, exemplo-icon-morph), historia-alma,\ne borboleta-bate-asas (asas batendo via scaleX no eixo do corpo, fundo removido).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: camada GSAP no Mira (morph + animacao de SVG) com specs e exemplos",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-19T18:47:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c44dcf10e51be9c79efba2a46836f7d13216ffe5",
          "body": "Quebra a pagina unica de Agentes em 5 paginas por time (core, uteis,\nvisuais e dados, responsivos, transicoes) em pt/en/es, e troca o item-pai\n\"Agents\" do menu por 5 entradas separadas. Reordena o nav: \"Como usar\"\nlogo apos \"Instalacao\" e os agentes em seguida. Rotulos PT/ES dos times\npadronizados com prefixo \"Agentes\".\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: separa times de agentes no menu e reordena navegacao",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-14T23:36:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a2199950fe07b415644f8049bc2ab0a733ab5ef8",
          "body": "- install nao pergunta mais o tema: a escolha de tema/template passa a ser por deck no /mira-new. DEFAULT_THEME fixo em mira-dark.\n- prompts.js: remove a pergunta de tema visual e renumera o passo de git.\n- package-lock.json sincronizado (estava em 0.1.17).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump versao para 0.1.19; tema padrao fixo no install",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-14T16:53:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e574af98d71bff0b0a71dbba010aa22575bf5bf3",
          "body": "- mira-image-template (gera template de deck a partir de imagem) entra na doc: agentes.* (grupo Visuais e dados), pipeline.* e README, e no registro (agent-sets.js VISUAL_TEAM + package.json files).\n- fix: tabela \"Agentes visuais\" do pipeline.* tinha as linhas mira-visuals e mira-img-animator coladas numa linha so (||); separadas de volta em duas linhas.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: skill mira-image-template na documentacao + fix tabela do pipeline",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-14T16:44:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d668674826e71aecc2c104878453630e44597f66",
          "body": "…entes; cor laranja na doc\n\n- Novas skills de elemento no slide: mira-3d (3D real via Three.js/glTF, sobe servidor + launcher quando ha .glb), mira-qrcode (QR inline gerado localmente) e mira-image (imagem pronta no card). Registradas em agent-sets.js e package.json files.\n- Documentacao em 3 idioma\n[…]\nyml palette custom + extra.css).\n- Doc: criacao de deck passa a ser conversacional via /mira-new (cli, temas, index, uso, README).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: skills mira-3d, mira-qrcode e mira-image; reorganiza menu de Ag…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-14T16:40:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b77460c2bbbe6769bd8ff78bf8e415901f4b91a0",
          "body": "…iner + CI docs) e specs verticais\n\n- banner: tagline \"Metaforas Inteligentes Responsivas e Animadas\"\n- .devcontainer: ambiente isolado com firewall para Claude Code\n- .github/workflows/docs.yml: deploy do MkDocs para o GitHub Pages\n- specs/slides-verticais: HTMLs de referencia do formato 9:16\n- .gitignore: ignora deck local de apresentacao e no_permissions.md\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump versao para 0.1.18; banner \"Responsivas\"; infra (devconta…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-14T13:30:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "adb75a697320807e9d707357b514b164cece58ec",
          "body": "…as (en/pt/es)\n\n- README reescrito com badges de docs nos 3 idiomas, pipeline, formatos e CLI\n- docs/ com 11 páginas x 3 idiomas (estrutura suffix do plugin i18n)\n- mkdocs.yml (Material, i18n pt/es, mermaid), extra.css, requirements.txt\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: README estilo Reversa + documentação MkDocs Material em 3 idiom…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-14T12:38:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "18069a7f27d7a9cc86923869ce6df470fcdc2264",
          "body": "…ADME) e nova tagline \"Metáforas Inteligentes Recursivas e Animadas\"; bump versao para 0.1.17\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: remove menção a \"D3\" do texto ao usuário (banner/instalação/RE…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-12T18:04:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b2c99bc5bd874f956389153eabe81337184d44f7",
          "body": "…8/203, auto-ajuste de titulo a 2 linhas, fundo #333333, esticao do viewBox em altura) e ferramenta aumentar elementos em X% com distancias -X%; specs do formato vertical; bump versao para 0.1.16\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "mira-vertical: novo padrao 9:16 (so titulo + animacao, canvas alto 12…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-12T17:50:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "16383248be155b83e2d6b4204d28f9ebb424f3d2",
          "body": "…ansitions API (crossfade em file://, sem servidor); bump versao para 0.1.15\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "mira-transition-dissolve: transicao dissolve entre slides via View Tr…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-12T15:26:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5e8a87cc18c2f513788a5d79bc58a70abacb76a4",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump versao para 0.1.14",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-12T00:51:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d5623eb6dad56c0676b89759b82e71588f644963",
          "body": "…o) com recomendacao de tipo via galeria d3\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "mira-chart: skill de graficos de dados (csv/json/imagem/rascunho a ma…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-12T00:51:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "804a721b46ecfe52a69be95fedb1ea90e3c6d14d",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump versao para 0.1.13",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-12T00:42:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "51a2c78870fa6053b23ba2e7c1bc60659a2b1e91",
          "body": "… thirds) alem da conversao\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "skills de formato: modo de criacao nativa do zero (vertical, squared,…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T21:13:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "87f4cf8b90b35aa786e785b8fb6fbb59fffe4df0",
          "body": "… .glb fornecido pelo usuario (drone)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "mira-qrcode: brainstorm da skill + slide de teste; mira-3d: teste com…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T20:35:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0b4172d67c16763866f145e63fa7e6ede11f8f8d",
          "body": "…Box H=1200), validada em teste lado a lado\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "mira-vertical: fonte minima obrigatoria 13px renderizados (24 no view…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T20:35:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5adceb4944f0c1f7ce48331e191cba36feed064a",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump versao para 0.1.12",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T19:31:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f405dae4018c92f71179700833bf0d2f57f6251f",
          "body": "…s/glTF)\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "mira-3d: brainstorm da skill + slide de teste com cerebro 3D (Three.j…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T19:31:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3fb69514600230b9d1acdf2055a000de4abe5a27",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump versao para 0.1.11",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T18:11:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3155d3aaf7e916159c63a25dee858adf120f3299",
          "body": "…recompor quando girar nao basta)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "mira-vertical: animacao maximizada (80-90% da altura + largura util; …",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T18:11:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a35ee993029d3ca54904a2913fc0c88ef35d734d",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump versao para 0.1.10",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T18:05:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fd22ad005a1ceb43e2f3d1291e798d530c3c148d",
          "body": "…ertical, crescer escala, sem corte)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Reforça mira-vertical: reflow profundo obrigatório (horizontal vira v…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T18:05:13Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "da4421e82b78a99cbac05e27be7435b43fb646e8",
          "body": "Inclui agents/mira-new no pacote publicado (files[]).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump versao para 0.1.9",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T17:09:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "be8632f52e37c12c7be4dda7dab4767070539349",
          "body": "Skill conversacional que monta decks/<tema>/ a partir de um template, aplica o tema base com cor principal opcional e prepara references/ local. Para no setup e oferece acionar o pipeline. Registrada no PIPELINE_CORE.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Adiciona agente mira-new (porta de entrada de novo deck)",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T17:09:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "178a3129a93477732f0b88b9e73958755e94f13e",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: bump versao para 0.1.8",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T11:22:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8d068a3dec4151f5e6e1f9b6665d0b8ecfa5eed2",
          "body": "Deixa de so encolher o slide 16:9 para caber: reescreve a geometria da animacao de cada slide (viewBox retrato, giro de eixo, fluxo horizontal vira topo-base, elipse larga vira alta, comparacao lado a lado vira empilhada). Quadro generalista para a tela atual: largura = largura da tela / 3, altura = altura cheia (calc(100vw/3) x 100vh), em vez de px fixo. Texto, cores, timings e loop intactos.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "mira-vertical: reflow profundo na vertical + dimensao relativa a tela",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T11:20:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a1bfe6e27324e053dfa9045ca989cd97244e5860",
          "body": "…ta livre)\n\nReenquadra o deck na regra dos tercos sem mudar a proporcao: empurra o\nconteudo do slide para as colunas 1+2 e deixa a coluna da direita livre,\npara sobrepor texto ou apresentador na edicao. Cria arquivo -thirds ao\nlado, sem tocar no original. Registrado no core (install/update), no\npackage.json e no README.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Adiciona agente mira-thirds (regra dos tercos: animacao em 2/3, direi…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T01:46:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "82f3d0e7e6d2b3fe5f47a633b7814a70da2d9fb3",
          "body": "As skills mira-squared e mira-vertical centralizam cada slide via flex\nna body (align-items), em vez de margin:auto, que era anulado pelo\nPreflight do Tailwind (Play CDN) e prendia o slide a esquerda.\n\nNova variavel --fmt-align permite escolher a posicao: center (padrao),\nflex-start (esquerda) ou flex-end (direita). Bump 0.1.6 -> 0.1.7.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Centraliza slide nas versoes 1x1 e 9:16 por padrao",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T01:11:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a475370a47059ca41f107456bf400a628a8f3f79",
          "body": "Novo agente que transforma a animacao de um slide (ou de todos) na metafora\nvisual do conceito: destila a dinamica, mapeia para uma analogia concreta do\ncotidiano 1 para 1 e anima no padrao do mira-animator (loop interno\nobrigatorio). Substitui a animacao no lugar, mantendo titulo, subtitulo e\npilul\n[…]\nado em PIPELINE_CORE (agent-sets.js), no files do package.json,\nno rotulo do instalador e no README. Bump de versao 0.1.5 -> 0.1.6\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Adiciona agente mira-animated-metaphor",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T00:21:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "cc6ca97591898ff59f50e81b4590611cbb040433",
          "body": "…ados\n\nO \"mira update\" so reinstalava os agentes congelados em state.agents (da\ninstalacao original), entao agentes lancados depois (mira-size-animator,\nmira-squared, mira-vertical, mira-references) nunca chegavam em projetos\nantigos e seus comandos /slash nao apareciam.\n\nAgora o update mescla state\n[…]\ns para lib/installer/agent-sets.js\n(sem efeitos colaterais), importadas por prompts.js e update.js.\n\nBump de versao 0.1.4 -> 0.1.5\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "update: instala tambem os agentes novos do core em projetos ja instal…",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T00:12:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "81c551f8244795d99d17345f40ab0cfd6c03d06c",
          "body": "Padrao do deck reversa aplicado ao que o Mira gera do zero:\n- base.css: canvas .anim-stage agora height clamp(400px, 60vh, 620px)\n- mira-animator: titulo sem icone (sem icon-hero), no maximo 6 palavras,\n  colado no topo (secao pt-3 pb-6, sem pt-10 no wrapper, mb-2), viewBox 1280x720\n\nDois agentes de\n[…]\nReels, Shorts, Stories, TikTok)\n\nRegistrados em PIPELINE_CORE, no files do package.json e no README.\nBump de versao 0.1.3 -> 0.1.4\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Padrao reversa nos slides + agentes mira-squared e mira-vertical",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-11T00:04:06Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c297f58bfb10439293e7180ef01d4060b5eaace9",
          "body": "Novo agente que ajusta o quanto cada animacao D3 preenche o palco, numa\nescala de 1 a 10 onde 3/10 e o tamanho que o mira-animator gera por padrao.\nLe o marcador @MIRA:SIZE de cada animacao, reporta o nivel atual e escala\nsomente a composicao dentro do SVG (raios, comprimentos, espacamentos,\nfontes \n[…]\nZE 3/10 --> em cada animacao\n- registrado em PIPELINE_CORE (instalador) e no files do package.json\n- bump de versao 0.1.2 -> 0.1.3\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Adiciona skill mira-size-animator (percepcao de tamanho das animacoes)",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-10T23:25:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "285ebbfa625e8be0897a144492c8b00993a5c4fd",
          "body": "Tira a pergunta 7 (caminho de fonte) do instalador: a fonte de conteudo nunca e perguntada na instalacao.\n\nAdiciona a skill /mira-references, que cria slides/<tema>/references/ por tema e inclui automaticamente o material que ja estiver na pasta. Registrada no PIPELINE_CORE e no files do pacote.\n\nBump 0.1.1 -> 0.1.2.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Remove pergunta de fonte na instalacao e adiciona skill mira-references",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-10T19:55:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b257830d16684cda3ca89f54031fb0c03b92788a",
          "body": "Crava nos 3 esqueletos de deck (mira-templates/decks/) o sistema de navegacao do padrao do canal: barra de progresso no topo, botao flutuante e teclado (setas, PageUp/Down, Home/End, F para tela cheia) rolando secao a secao via scrollIntoView.\n\nDocumenta a passagem de slides como obrigatoria na skil\n[…]\nmove as referencias ao inexistente slides/cap06 e mencoes literais a cap06/cap07 em skills, templates e CSS.\n\nBump 0.1.0 -> 0.1.1.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Adiciona sistema de passagem de slides e remove vazamento de cap06/cap07",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-10T19:44:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd3abc960c1e10bf80e60998c519f13025933b34",
          "body": "Os videos de background (182 MB) sao distribuidos via skill\n/mira-get-videos, nao pelo repositorio.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Adiciona videos_header ao .gitignore",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-10T18:47:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "05a8e9881c9e932a3f96465a8ac0e263d11c5340",
          "body": "Troca 18 downloads individuais por um zip unico. Manifesto atualizado\ncom drive_id real. Skill reescrita para baixar, extrair com tar/Expand-Archive\ne limpar o zip. URL do Drive nunca exposta ao usuario.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "mira-get-videos: abordagem zip com drive_id preenchido",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-10T18:40:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "789f87261bef9a41fbe57e7d466f62cd17f350a7",
          "body": "Skill /mira-get-videos baixa os 18 backgrounds de video do Google Drive\npara mira-templates/videos_header/ via curl. Manifesto com drive_ids a\npreencher. Package.json com files granular para excluir videos_header/\n(190 MB -> 88 kB). .npmignore como fallback.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Adiciona skill mira-get-videos e exclui videos do pacote npm",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-10T18:27:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a7086f234a9d9669a2daf40a8b941feb25c2d99e",
          "body": "Instalador npx (install/link/sources/new/status/update/uninstall),\npipeline de agents (extract, planner, copywriter, builder, animator,\nvisuals, validator) e templates de temas, slides e decks.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Mira Animator: CLI, agents e templates iniciais",
          "author_name": "sandeco",
          "author_login": null,
          "committed_at": "2026-06-10T18:11:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 6,
      "commits_last_year": 94,
      "latest_release_at": "2026-06-26T21:24:22Z",
      "latest_release_tag": "v0.1.21",
      "releases_from_tags": true,
      "days_since_last_push": 1,
      "active_weeks_last_year": 6,
      "days_since_latest_release": 24,
      "mean_days_between_releases": 3.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "mira-animator",
          "exists": true,
          "license": "PolyForm-Noncommercial-1.0.0",
          "keywords": [
            "slides",
            "presentation",
            "d3",
            "animation",
            "html",
            "ai",
            "claude",
            "agents"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/mira-animator",
          "is_deprecated": false,
          "latest_version": "0.1.46",
          "repository_url": "https://github.com/sandeco/mira-animator",
          "versions_count": 37,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 4264,
          "first_published_at": "2026-06-10T18:53:46.516000Z",
          "latest_published_at": "2026-07-20T18:38:49.757000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 1
        }
      ]
    },
    "popularity": {
      "forks": 44,
      "stars": 135,
      "watchers": 2,
      "fork_history": {
        "days": [
          {
            "date": "2026-06-12",
            "count": 1
          },
          {
            "date": "2026-06-13",
            "count": 1
          },
          {
            "date": "2026-06-14",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 2
          },
          {
            "date": "2026-06-16",
            "count": 4
          },
          {
            "date": "2026-06-17",
            "count": 3
          },
          {
            "date": "2026-06-18",
            "count": 2
          },
          {
            "date": "2026-06-26",
            "count": 1
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 2
          },
          {
            "date": "2026-07-04",
            "count": 2
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 3
          },
          {
            "date": "2026-07-08",
            "count": 3
          },
          {
            "date": "2026-07-09",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 4
          },
          {
            "date": "2026-07-11",
            "count": 1
          },
          {
            "date": "2026-07-12",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 2
          },
          {
            "date": "2026-07-15",
            "count": 1
          },
          {
            "date": "2026-07-16",
            "count": 2
          },
          {
            "date": "2026-07-17",
            "count": 2
          },
          {
            "date": "2026-07-18",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 44,
        "total_forks": 44
      },
      "star_history": {
        "days": [
          {
            "date": "2026-06-11",
            "count": 4
          },
          {
            "date": "2026-06-12",
            "count": 8
          },
          {
            "date": "2026-06-14",
            "count": 2
          },
          {
            "date": "2026-06-15",
            "count": 10
          },
          {
            "date": "2026-06-16",
            "count": 15
          },
          {
            "date": "2026-06-17",
            "count": 11
          },
          {
            "date": "2026-06-18",
            "count": 7
          },
          {
            "date": "2026-06-19",
            "count": 7
          },
          {
            "date": "2026-06-21",
            "count": 1
          },
          {
            "date": "2026-06-24",
            "count": 2
          },
          {
            "date": "2026-06-25",
            "count": 2
          },
          {
            "date": "2026-06-26",
            "count": 4
          },
          {
            "date": "2026-06-28",
            "count": 1
          },
          {
            "date": "2026-06-29",
            "count": 1
          },
          {
            "date": "2026-06-30",
            "count": 1
          },
          {
            "date": "2026-07-01",
            "count": 1
          },
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-03",
            "count": 6
          },
          {
            "date": "2026-07-05",
            "count": 2
          },
          {
            "date": "2026-07-06",
            "count": 3
          },
          {
            "date": "2026-07-07",
            "count": 4
          },
          {
            "date": "2026-07-08",
            "count": 1
          },
          {
            "date": "2026-07-09",
            "count": 4
          },
          {
            "date": "2026-07-10",
            "count": 8
          },
          {
            "date": "2026-07-11",
            "count": 8
          },
          {
            "date": "2026-07-12",
            "count": 5
          },
          {
            "date": "2026-07-13",
            "count": 3
          },
          {
            "date": "2026-07-14",
            "count": 1
          },
          {
            "date": "2026-07-15",
            "count": 4
          },
          {
            "date": "2026-07-16",
            "count": 2
          },
          {
            "date": "2026-07-17",
            "count": 2
          },
          {
            "date": "2026-07-18",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 2
          },
          {
            "date": "2026-07-20",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 135,
        "total_stars": 135
      },
      "open_issues_and_prs": 4
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 93746,
      "source_files_sampled": 41,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "templates/engines/AGENTS.md",
        "templates/engines/CLAUDE.md",
        "templates/engines/GEMINI.md"
      ],
      "agent_instruction_max_bytes": 2348
    },
    "dependencies": {
      "manifests": [
        "docs/requirements.txt",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "chalk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.3.0"
        },
        {
          "name": "inquirer",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.2.0"
        },
        {
          "name": "ora",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.0.0"
        },
        {
          "name": "yoctocolors-cjs",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.2"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 2,
        "merged_prs": 2,
        "open_issues": 2,
        "closed_ratio": 0,
        "closed_issues": 0,
        "closed_unmerged_prs": 1
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "sandeco",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/3765602?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": false,
      "ci_workflows": [
        "docs.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 5,
            "reason": "1 out of 2 merged PRs checked by a CI test -- score normalized to 5",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/26 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 9,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "909ec79bbdd2b0916e83700d145fef2b1cf0a77a",
        "ran_at": "2026-07-21T20:43:49Z",
        "aggregate_score": 3.1,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/sandeco/mira-animator",
    "host": "github.com",
    "name": "mira-animator",
    "owner": "sandeco"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 51,
      "inputs": {
        "security": 31,
        "vitality": 70,
        "community": 50,
        "governance": 48,
        "engineering": 50
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 70,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 58,
            "inputs": {
              "commits_last_year": 94,
              "human_commit_share": 1,
              "days_since_last_push": 1,
              "active_weeks_last_year": 6
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 1 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "6/52 weeks with commits",
                "points": 4.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "94 commits in the last year",
                "points": 17.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 94
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 88,
            "inputs": {
              "releases_count": 6,
              "latest_release_tag": "v0.1.21",
              "releases_from_tags": true,
              "days_since_latest_release": 24,
              "mean_days_between_releases": 3.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "6 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 24 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 24
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~3.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 3.2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 50,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "forks": 44,
              "stars": 135,
              "watchers": 2,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "window_too_short"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "135 stars",
                "points": 34.5,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 135
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "44 forks",
                "points": 13.6,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 44
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "2 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file present, not a recognized license",
                "points": 16.9,
                "status": "partial",
                "details": [
                  {
                    "code": "license_custom",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 60,
            "inputs": {
              "packages": [
                "mira-animator"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 4264
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "4,264 downloads/month across npm",
                "points": 48.4,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 4264,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 48,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 26,
            "inputs": {
              "merged_prs": 2,
              "open_issues": 2,
              "closed_issues": 0,
              "issue_closed_ratio": 0,
              "closed_unmerged_prs": 1
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "0% of issues closed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 0
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "2/3 decided PRs merged",
                "points": 25.5,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 2,
                      "decided": 3
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/26 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 74,
            "inputs": {
              "followers": 2357,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "sandeco",
              "public_repos": 78,
              "account_age_days": 4887
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "2,357 followers of sandeco",
                "points": 24.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 2357,
                      "login": "sandeco"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "78 public repos, account ~13 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 78
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "mira-animator"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 1
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 1 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "37 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 37
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 50,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "has_ci": true,
              "has_tests": false,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "1 out of 2 merged PRs checked by a CI test -- score normalized to 5",
                "points": 10,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 31,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 31,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 3.1
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "1 out of 2 merged PRs checked by a CI test -- score normalized to 5",
                "points": 1.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/26 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 2
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "at_risk",
        "name": "AI Readiness",
        "value": 49,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.968,
              "agent_instruction_files": [
                "templates/engines/AGENTS.md",
                "templates/engines/CLAUDE.md",
                "templates/engines/GEMINI.md"
              ],
              "agent_instruction_max_bytes": 2348
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "templates/engines/AGENTS.md, templates/engines/CLAUDE.md, templates/engines/GEMINI.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "templates/engines/AGENTS.md, templates/engines/CLAUDE.md, templates/engines/GEMINI.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "91 of 94 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 91,
                      "sampled": 94
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "critical",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "has_nix": false,
              "has_tests": false,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.947,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "89 of the last 94 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 89,
                      "sampled": 94
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "primary_language": "HTML",
              "largest_source_bytes": 93746,
              "source_files_sampled": 41,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "HTML without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "HTML"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/41 source files over 60KB",
                "points": 53.7,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 41,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
    "deps.dev does not index npm:mira-animator@0.1.46; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-21T20:43:55.929403Z",
  "schema_version": "0.23.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/sandeco/mira-animator.svg",
  "full_name": "sandeco/mira-animator",
  "license_state": "custom",
  "license_spdx": null
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.23.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.