Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-27 04:30 UTC

AsiaOstrich / universal-dev-standards

Universal, language-agnostic development standards for software projects. Includes coding standards, git workflows, testing guidelines, documentation structure, and AI collaboration rules.

JavaScriptВласна ліцензія★ 70 зірок⑂ 10 форківз груд. 2025 р.Переглянути на GitHub ↗

AsiaOstrich/universal-dev-standards має індекс здоров’я 69 зі 100, що відповідає смузі «Помірний». Найвищий показник — Vitality (93/100), найнижчий — Sustainability & Governance (53/100). Останнє оновлення було 2 дні тому. Більшість нещодавньої роботи виконує один учасник.

69
загалом / 100
Помірний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

69
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

AsiaOstrichОсобистий обліковий запис
8 підписників13 публічних репозиторіївз черв. 2016 р.

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
npmuniversal-dev-standards6.1.11 1721338 днів томуdocumentationstandardsclideveloper-toolsbest-practices

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

93Відмінний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 2 дн. тому
24.2/36Ритм комітів — 35/52 тижнів із комітами
18/18Обсяг комітів — 1 125 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year1 125
human_commit_share0,85
days_since_last_push2
active_weeks_last_year35
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 100 релізів
36/36Свіжість релізів — останній реліз 8 дн. тому
27/27Ритм релізів — реліз кожні ~5,9 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count100
latest_release_tagv6.1.1
releases_from_tagsні
days_since_latest_release8
mean_days_between_releases5,9
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

53Помірний · 18% загального індексу
Як обчислюється оцінка
29.8/60Зірки — 70 зірок
8/25Форки — 10 форків
0/15Спостерігачі — 1 спостерігачів
Використані вхідні дані
forks10
stars70
watchers1
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
16.9/22.5Ліцензія — файл ліцензії наявний, не є визнаною ліцензією
18/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
6.3/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingтак
has_issue_templateні
has_code_of_conductні
has_pull_request_templateтак
Як обчислюється оцінка
40.9/80Щомісячні завантаження — 1 172 завантажень/місяць у npm
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packagesuniversal-dev-standards
dependents
ecosystemsnpm
total_downloads
monthly_downloads1 172
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

53Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
0/22.5Розподіл комітів — головний контриб’ютор — автор 100% комітів
1.4/13.5Широта контриб’юторів — 1 контриб’юторів
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Використані вхідні дані
bus_factor1
contributors_sampled1
top_contributor_share1
Як обчислюється оцінка
43.3/46.8Вирішення issue — закрито 93% issue
28.6/38.3Прийняття PR — злито 80/107 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs80
open_issues4
closed_issues50
issue_closed_ratio0,926
closed_unmerged_prs27

Власність та опіка

47У зоні ризику
Як обчислюється оцінка
10/30Підтримка власника — особистий (користувацький) обліковий запис
0/20Верифікований домен — не застосовно до користувацьких облікових записів
6.9/25Охоплення власника — 8 підписників у AsiaOstrich
20.3/25Послужний список — 13 публічних репозиторіїв, вік облікового запису ~10 р.
Використані вхідні дані
followers8
owner_typeUser
is_verified
owner_loginAsiaOstrich
public_repos13
account_age_days3 703
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у npm
35/35Свіжість публікацій — остання публікація 8 дн. тому
20/20Історія версій — 133 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesuniversal-dev-standards
ecosystemsnpm
any_deprecatedні
min_days_since_publish8

Інженерна якість

Чи наявні базові інженерні практики та документація?

84Добрий · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 7 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — eslint.config.js
0/9.6Pre-commit-хуки
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 1 out of 1 merged PRs checked by a CI test -- score normalized to 10
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigтак
has_linter_configтак
has_precommit_configні
Як обчислюється оцінка
30/30README
25/25Каталог документації
0/15Сайт документації / домашня сторінка
10/10Опис репозиторію
10/10Теми — 18 тем
0/10Wiki
Використані вхідні дані
topicsai-collaboration, best-practices, claude-code, code-review, coding-standards, commit-conventions, conventional-commits, developer-tools, development-standards, devops, documentation, git-workflow, quality-assurance, semantic-versioning, skills, software-engineering, spec-driven-development, testing-standards
has_wikiні
homepage
has_readmeтак
has_docs_dirтак
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

59Помірний · 16% загального індексу

Стан безпеки

49У зоні ризику
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 1 out of 1 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 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
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.2/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — немає даних
2.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0.8/7.5Vulnerabilities — 9 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4,9
Виключено з оцінювання (немає даних або не застосовно): packaging, signed_releases. Залишкові ваги перенормовано.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
25/25Непрямі залежності без відомих сповіщень — жодна непряма залежність не має відомих сповіщень
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories0
affected_packages0
assessed_packages44
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено з runtime-замиканням залежностей npm:universal-dev-standards@6.1.1 — тим, що тягне за собою встановлення опублікованого пакета, — 44 пакетів. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

66Помірний · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — CLAUDE.md, integrations/aider/AGENTS.md, integrations/claude-code/CLAUDE.md, integrations/cline/.clinerules, integrations/codex/AGENTS.md, integrations/continue-dev/AGENTS.md, integrations/cursor/.cursorrules, integrations/gemini-cli/GEMINI.md, integrations/opencode/AGENTS.md, integrations/openspec/AGENTS.md, integrations/roo-code/.clinerules, integrations/spec-kit/AGENTS.md, integrations/windsurf/.windsurfrules, locales/zh-CN/CLAUDE.md, locales/zh-CN/integrations/codex/AGENTS.md, locales/zh-CN/integrations/gemini-cli/GEMINI.md, locales/zh-CN/integrations/opencode/AGENTS.md, locales/zh-CN/integrations/openspec/AGENTS.md, locales/zh-CN/integrations/spec-kit/AGENTS.md, locales/zh-TW/CLAUDE.md, locales/zh-TW/integrations/codex/AGENTS.md, locales/zh-TW/integrations/gemini-cli/GEMINI.md, locales/zh-TW/integrations/opencode/AGENTS.md, locales/zh-TW/integrations/openspec/AGENTS.md, locales/zh-TW/integrations/spec-kit/AGENTS.md, skills/tools/cline/.clinerules, skills/tools/cursor/.cursorrules, skills/tools/windsurf/.windsurfrules
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 85 з 85 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share1
agent_instruction_filesCLAUDE.md, integrations/aider/AGENTS.md, integrations/claude-code/CLAUDE.md, integrations/cline/.clinerules, integrations/codex/AGENTS.md, integrations/continue-dev/AGENTS.md, integrations/cursor/.cursorrules, integrations/gemini-cli/GEMINI.md, integrations/opencode/AGENTS.md, integrations/openspec/AGENTS.md, integrations/roo-code/.clinerules, integrations/spec-kit/AGENTS.md, integrations/windsurf/.windsurfrules, locales/zh-CN/CLAUDE.md, locales/zh-CN/integrations/codex/AGENTS.md, locales/zh-CN/integrations/gemini-cli/GEMINI.md, locales/zh-CN/integrations/opencode/AGENTS.md, locales/zh-CN/integrations/openspec/AGENTS.md, locales/zh-CN/integrations/spec-kit/AGENTS.md, locales/zh-TW/CLAUDE.md, locales/zh-TW/integrations/codex/AGENTS.md, locales/zh-TW/integrations/gemini-cli/GEMINI.md, locales/zh-TW/integrations/opencode/AGENTS.md, locales/zh-TW/integrations/openspec/AGENTS.md, locales/zh-TW/integrations/spec-kit/AGENTS.md, skills/tools/cline/.clinerules, skills/tools/cursor/.cursorrules, skills/tools/windsurf/.windsurfrules
agent_instruction_max_bytes40 735
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — eslint.config.js
0/11Статична перевірка типів
10/10Відтворюване середовище — lockfile
10/10Підтверджена практика роботи з агентами — 80 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 15 з останніх 100 комітів — автоматичні оновлення залежностей
5/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 5
Використані вхідні дані
has_nixні
has_testsтак
lockfilespackage-lock.json
has_dockerfileні
typed_languageні
bootstrap_files
has_devcontainerні
has_linter_configтак
typecheck_configs
agent_commit_share0,8
toolchain_manifests
dependency_bot_commit_share0,15
Як обчислюється оцінка
0/45Типізований код — JavaScript без конфігурації перевірки типів
54.2/55Керовані розміри файлів — 5/330 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageJavaScript
largest_source_bytes160 447
source_files_sampled330
oversized_source_files5
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — examples, recipes
Використані вхідні дані
example_dirsexamples, recipes
has_mcp_signalні
api_schema_files

Ключові факти

70зірок GitHub
1контриб'юторів
1 125комітів за останні 12 місяців
2днів від останнього пушу
100релізів
1бас-фактор
4відкритих issue
npmпакетних екосистем

Попередження щодо збору даних

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Докладніше

Історія зірок і форків 0 ★ / 10 ⇿
0Зірки
10Форки
95Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

02468101012025-122026-032026-06
Мажорні 2Мінорні 15Патчі 11
OpenSSF Scorecard 4.9 / 10
4.9сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-27 04:30 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests1 out of 1 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
9Licenselicense file detected
10Maintained30 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10
н/дPackagingpackaging workflow not detected
5Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 5
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
1Vulnerabilities9 existing vulnerabilities detected
Прямі залежності 6
РеєстрПакетОбмеження версіїМаніфест
npm@inquirer/prompts^8.4.2cli/package.json
npmchalk^5.3.0cli/package.json
npmcommander^15.0.0cli/package.json
npmjs-yaml^5.2.1cli/package.json
npmora^9.4.0cli/package.json
npm@asiaostrich/telemetry-client^0.1.0package.json
Усі залежності не зібрано

Не вдалося зібрати розв'язаний набір залежностей для цього звіту: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Сповіщення про залежності 0

Встановлення npm:universal-dev-standards@6.1.1 тягне 44 пакетів, прямих і транзитивних: 0 мають відомі сповіщення, з них 0 — прямі залежності.

Жодне відоме сповіщення не стосується оцінених залежностей.

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "ai-collaboration",
        "best-practices",
        "claude-code",
        "code-review",
        "coding-standards",
        "commit-conventions",
        "conventional-commits",
        "developer-tools",
        "development-standards",
        "devops",
        "documentation",
        "git-workflow",
        "quality-assurance",
        "semantic-versioning",
        "skills",
        "software-engineering",
        "spec-driven-development",
        "testing-standards"
      ],
      "is_fork": false,
      "size_kb": 26633,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "Shell": 280163,
        "Python": 9491,
        "Gherkin": 204621,
        "JavaScript": 3126310,
        "PowerShell": 138603,
        "TypeScript": 167419,
        "Go Template": 2245
      },
      "pushed_at": "2026-07-24T22:33:40Z",
      "created_at": "2025-12-24T01:36:15Z",
      "owner_type": "User",
      "updated_at": "2026-07-24T01:32:09Z",
      "description": "Universal, language-agnostic development standards for software projects. Includes coding standards, git workflows, testing guidelines, documentation structure, and AI collaboration rules.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": "NOASSERTION",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript"
      ]
    },
    "owner": {
      "blog": null,
      "name": "AsiaOstrich",
      "type": "User",
      "login": "AsiaOstrich",
      "company": null,
      "location": null,
      "followers": 8,
      "avatar_url": "https://avatars.githubusercontent.com/u/19768691?v=4",
      "created_at": "2016-06-06T02:54:07Z",
      "is_verified": null,
      "public_repos": 13,
      "account_age_days": 3703
    },
    "license": {
      "state": "custom",
      "spdx_id": null,
      "raw_spdx": "NOASSERTION",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v6.1.1",
          "kind": "patch",
          "published_at": "2026-07-18T11:27:48Z"
        },
        {
          "tag": "v6.1.0",
          "kind": "minor",
          "published_at": "2026-07-17T09:10:14Z"
        },
        {
          "tag": "v6.0.0",
          "kind": "major",
          "published_at": "2026-07-06T06:19:03Z"
        },
        {
          "tag": "v5.17.0",
          "kind": "minor",
          "published_at": "2026-06-08T07:35:32Z"
        },
        {
          "tag": "v5.16.0",
          "kind": "minor",
          "published_at": "2026-06-08T06:00:51Z"
        },
        {
          "tag": "v5.15.1",
          "kind": "patch",
          "published_at": "2026-05-31T13:19:02Z"
        },
        {
          "tag": "v5.14.0",
          "kind": "minor",
          "published_at": "2026-05-27T05:24:51Z"
        },
        {
          "tag": "v5.13.3",
          "kind": "patch",
          "published_at": "2026-05-26T06:46:33Z"
        },
        {
          "tag": "v5.13.2",
          "kind": "patch",
          "published_at": "2026-05-26T06:39:51Z"
        },
        {
          "tag": "v5.13.1",
          "kind": "patch",
          "published_at": "2026-05-26T06:36:52Z"
        },
        {
          "tag": "v5.13.0",
          "kind": "minor",
          "published_at": "2026-05-26T06:32:45Z"
        },
        {
          "tag": "v5.12.1",
          "kind": "patch",
          "published_at": "2026-05-19T02:39:49Z"
        },
        {
          "tag": "v5.11.0",
          "kind": "minor",
          "published_at": "2026-05-14T05:32:59Z"
        },
        {
          "tag": "v5.10.0",
          "kind": "minor",
          "published_at": "2026-05-13T02:02:11Z"
        },
        {
          "tag": "v5.8.0",
          "kind": "minor",
          "published_at": "2026-05-12T15:41:29Z"
        },
        {
          "tag": "v5.7.3",
          "kind": "patch",
          "published_at": "2026-05-08T09:11:56Z"
        },
        {
          "tag": "v5.7.2",
          "kind": "patch",
          "published_at": "2026-05-08T08:44:59Z"
        },
        {
          "tag": "v5.7.1",
          "kind": "patch",
          "published_at": "2026-05-08T02:06:16Z"
        },
        {
          "tag": "v5.7.0",
          "kind": "minor",
          "published_at": "2026-05-08T01:56:43Z"
        },
        {
          "tag": "v5.6.0",
          "kind": "minor",
          "published_at": "2026-05-06T01:42:09Z"
        },
        {
          "tag": "v5.5.0",
          "kind": "minor",
          "published_at": "2026-05-05T06:58:36Z"
        },
        {
          "tag": "v5.4.0",
          "kind": "minor",
          "published_at": "2026-04-27T14:16:53Z"
        },
        {
          "tag": "v5.3.2",
          "kind": "patch",
          "published_at": "2026-04-27T04:00:42Z"
        },
        {
          "tag": "v5.3.1",
          "kind": "patch",
          "published_at": "2026-04-27T03:26:02Z"
        },
        {
          "tag": "v5.3.0",
          "kind": "minor",
          "published_at": "2026-04-26T13:37:04Z"
        },
        {
          "tag": "v5.2.0",
          "kind": "minor",
          "published_at": "2026-04-24T01:24:48Z"
        },
        {
          "tag": "v5.1.1",
          "kind": "patch",
          "published_at": "2026-04-20T03:52:49Z"
        },
        {
          "tag": "v5.1.0",
          "kind": "minor",
          "published_at": "2026-04-20T03:28:04Z"
        },
        {
          "tag": "v5.1.0-beta.7",
          "kind": "prerelease",
          "published_at": "2026-04-17T15:02:43Z"
        },
        {
          "tag": "v5.1.0-beta.6",
          "kind": "prerelease",
          "published_at": "2026-04-13T08:47:06Z"
        },
        {
          "tag": "v5.1.0-beta.5",
          "kind": "prerelease",
          "published_at": "2026-04-10T10:18:12Z"
        },
        {
          "tag": "v5.1.0-beta.4",
          "kind": "prerelease",
          "published_at": "2026-04-01T05:37:29Z"
        },
        {
          "tag": "v5.1.0-beta.3",
          "kind": "prerelease",
          "published_at": "2026-03-27T18:31:51Z"
        },
        {
          "tag": "v5.1.0-beta.2",
          "kind": "prerelease",
          "published_at": "2026-03-26T06:45:52Z"
        },
        {
          "tag": "v5.1.0-beta.1",
          "kind": "prerelease",
          "published_at": "2026-03-25T07:19:15Z"
        },
        {
          "tag": "v5.0.0",
          "kind": "major",
          "published_at": "2026-03-24T22:55:28Z"
        },
        {
          "tag": "v5.0.0-rc.17",
          "kind": "prerelease",
          "published_at": "2026-03-24T13:06:55Z"
        },
        {
          "tag": "v5.0.0-rc.16",
          "kind": "prerelease",
          "published_at": "2026-03-24T05:36:16Z"
        },
        {
          "tag": "v5.0.0-rc.15",
          "kind": "prerelease",
          "published_at": "2026-03-23T09:53:14Z"
        },
        {
          "tag": "v5.0.0-rc.14",
          "kind": "prerelease",
          "published_at": "2026-03-19T06:03:47Z"
        },
        {
          "tag": "v5.0.0-rc.13",
          "kind": "prerelease",
          "published_at": "2026-03-18T09:09:28Z"
        },
        {
          "tag": "v5.0.0-rc.12",
          "kind": "prerelease",
          "published_at": "2026-03-18T08:19:33Z"
        },
        {
          "tag": "v5.0.0-rc.11",
          "kind": "prerelease",
          "published_at": "2026-03-18T02:43:51Z"
        },
        {
          "tag": "v5.0.0-rc.10",
          "kind": "prerelease",
          "published_at": "2026-03-17T15:30:55Z"
        },
        {
          "tag": "v5.0.0-rc.9",
          "kind": "prerelease",
          "published_at": "2026-03-17T14:50:34Z"
        },
        {
          "tag": "v5.0.0-rc.8",
          "kind": "prerelease",
          "published_at": "2026-03-17T09:20:03Z"
        },
        {
          "tag": "v5.0.0-rc.6",
          "kind": "prerelease",
          "published_at": "2026-03-17T07:21:25Z"
        },
        {
          "tag": "v5.0.0-rc.5",
          "kind": "prerelease",
          "published_at": "2026-03-16T07:18:52Z"
        },
        {
          "tag": "v5.0.0-rc.4",
          "kind": "prerelease",
          "published_at": "2026-03-04T16:32:06Z"
        },
        {
          "tag": "v5.0.0-rc.3",
          "kind": "prerelease",
          "published_at": "2026-03-04T09:07:14Z"
        },
        {
          "tag": "v5.0.0-rc.2",
          "kind": "prerelease",
          "published_at": "2026-02-13T06:19:12Z"
        },
        {
          "tag": "v5.0.0-rc.1",
          "kind": "prerelease",
          "published_at": "2026-02-12T04:39:16Z"
        },
        {
          "tag": "v5.0.0-beta.12",
          "kind": "prerelease",
          "published_at": "2026-02-12T02:49:39Z"
        },
        {
          "tag": "v5.0.0-beta.11",
          "kind": "prerelease",
          "published_at": "2026-02-11T08:29:26Z"
        },
        {
          "tag": "v5.0.0-beta.10",
          "kind": "prerelease",
          "published_at": "2026-02-11T05:32:12Z"
        },
        {
          "tag": "v5.0.0-beta.9",
          "kind": "prerelease",
          "published_at": "2026-02-10T02:31:22Z"
        },
        {
          "tag": "v5.0.0-beta.8",
          "kind": "prerelease",
          "published_at": "2026-02-10T01:41:54Z"
        },
        {
          "tag": "v5.0.0-beta.7",
          "kind": "prerelease",
          "published_at": "2026-02-09T07:42:51Z"
        },
        {
          "tag": "v5.0.0-beta.6",
          "kind": "prerelease",
          "published_at": "2026-02-06T14:44:22Z"
        },
        {
          "tag": "v5.0.0-beta.5",
          "kind": "prerelease",
          "published_at": "2026-02-06T09:43:58Z"
        },
        {
          "tag": "v5.0.0-beta.4",
          "kind": "prerelease",
          "published_at": "2026-02-06T08:39:09Z"
        },
        {
          "tag": "v5.0.0-beta.3",
          "kind": "prerelease",
          "published_at": "2026-02-06T04:15:38Z"
        },
        {
          "tag": "v5.0.0-beta.2",
          "kind": "prerelease",
          "published_at": "2026-02-05T07:58:53Z"
        },
        {
          "tag": "v5.0.0-beta.1",
          "kind": "prerelease",
          "published_at": "2026-02-05T07:21:55Z"
        },
        {
          "tag": "v4.2.0",
          "kind": "minor",
          "published_at": "2026-01-24T14:07:38Z"
        },
        {
          "tag": "v4.1.0",
          "kind": "minor",
          "published_at": "2026-01-22T01:13:22Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2026-01-20T07:44:38Z"
        },
        {
          "tag": "v4.0.0-beta.2",
          "kind": "prerelease",
          "published_at": "2026-01-20T05:13:27Z"
        },
        {
          "tag": "v4.0.0-beta.1",
          "kind": "prerelease",
          "published_at": "2026-01-19T16:01:09Z"
        },
        {
          "tag": "v3.5.1-beta.22",
          "kind": "prerelease",
          "published_at": "2026-01-19T00:49:37Z"
        },
        {
          "tag": "v3.5.1-beta.21",
          "kind": "prerelease",
          "published_at": "2026-01-18T22:27:22Z"
        },
        {
          "tag": "v3.5.1-beta.20",
          "kind": "prerelease",
          "published_at": "2026-01-18T17:26:04Z"
        },
        {
          "tag": "v3.5.1-beta.19",
          "kind": "prerelease",
          "published_at": "2026-01-18T17:02:17Z"
        },
        {
          "tag": "v3.5.1-beta.18",
          "kind": "prerelease",
          "published_at": "2026-01-18T16:36:52Z"
        },
        {
          "tag": "v3.5.1-beta.17",
          "kind": "prerelease",
          "published_at": "2026-01-18T14:31:26Z"
        },
        {
          "tag": "v3.5.1-beta.16",
          "kind": "prerelease",
          "published_at": "2026-01-16T08:19:21Z"
        },
        {
          "tag": "v3.5.1-beta.15",
          "kind": "prerelease",
          "published_at": "2026-01-16T08:02:54Z"
        },
        {
          "tag": "v3.5.1-beta.14",
          "kind": "prerelease",
          "published_at": "2026-01-16T07:48:42Z"
        },
        {
          "tag": "v3.5.1-beta.13",
          "kind": "prerelease",
          "published_at": "2026-01-16T07:35:25Z"
        },
        {
          "tag": "v3.5.1-beta.12",
          "kind": "prerelease",
          "published_at": "2026-01-16T07:19:18Z"
        },
        {
          "tag": "v3.5.1-beta.11",
          "kind": "prerelease",
          "published_at": "2026-01-16T06:51:24Z"
        },
        {
          "tag": "v3.5.1-beta.10",
          "kind": "prerelease",
          "published_at": "2026-01-16T06:42:36Z"
        },
        {
          "tag": "v3.5.1-beta.9",
          "kind": "prerelease",
          "published_at": "2026-01-16T06:08:39Z"
        },
        {
          "tag": "v3.5.1-beta.8",
          "kind": "prerelease",
          "published_at": "2026-01-16T05:39:22Z"
        },
        {
          "tag": "v3.5.1-beta.7",
          "kind": "prerelease",
          "published_at": "2026-01-16T05:03:41Z"
        },
        {
          "tag": "v3.5.1-beta.6",
          "kind": "prerelease",
          "published_at": "2026-01-16T03:35:52Z"
        },
        {
          "tag": "v3.5.1-beta.5",
          "kind": "prerelease",
          "published_at": "2026-01-16T03:15:37Z"
        },
        {
          "tag": "v3.5.1-beta.4",
          "kind": "prerelease",
          "published_at": "2026-01-16T02:32:07Z"
        },
        {
          "tag": "v3.5.1-beta.3",
          "kind": "prerelease",
          "published_at": "2026-01-15T16:46:31Z"
        },
        {
          "tag": "v3.5.1-beta.2",
          "kind": "prerelease",
          "published_at": "2026-01-15T16:20:30Z"
        },
        {
          "tag": "v3.5.1-beta.1",
          "kind": "prerelease",
          "published_at": "2026-01-15T15:07:44Z"
        },
        {
          "tag": "v3.5.0",
          "kind": "minor",
          "published_at": "2026-01-15T05:00:41Z"
        },
        {
          "tag": "v3.5.0-beta.28",
          "kind": "prerelease",
          "published_at": "2026-01-15T04:51:58Z"
        },
        {
          "tag": "v3.5.0-beta.27",
          "kind": "prerelease",
          "published_at": "2026-01-15T04:04:47Z"
        },
        {
          "tag": "v3.5.0-beta.26",
          "kind": "prerelease",
          "published_at": "2026-01-15T01:53:36Z"
        },
        {
          "tag": "v3.5.0-beta.25",
          "kind": "prerelease",
          "published_at": "2026-01-15T01:23:10Z"
        },
        {
          "tag": "v3.5.0-beta.24",
          "kind": "prerelease",
          "published_at": "2026-01-15T01:08:08Z"
        },
        {
          "tag": "v3.5.0-beta.23",
          "kind": "prerelease",
          "published_at": "2026-01-14T13:11:03Z"
        },
        {
          "tag": "v3.5.0-beta.22",
          "kind": "prerelease",
          "published_at": "2026-01-14T09:50:27Z"
        },
        {
          "tag": "v3.5.0-beta.21",
          "kind": "prerelease",
          "published_at": "2026-01-14T07:54:58Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "da07bc43271dbf237ee2ee63f590dc4c7d3ea179",
          "body": "…lta Watch。\n\nThe standing measurement line was named Delta Watch (差集守望) on 2026-07-24. Adds a\nwork-item header here so the UDS-side artifacts point back at the same codename; the\nspec anchor is XSPEC-357 in dev-platform.\n\n常態量測線於 2026-07-24 命名為 Delta Watch(差集守望)。此處加工作項目標頭,\n讓 UDS 這側的產物指回同一個代號;規格錨是 dev-platform 的 XSPEC-357。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: tag DELTA-TREND as a Delta Watch artifact. 標明 DELTA-TREND 屬於 De…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-24T01:32:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "051d796d19e9768d1f49f3933b2d21a9150bc87e",
          "body": "…the outcome delta. 行級稽核——八十三行裡一行扛起結果差異。\n\nThe fable-5 review's sharpest point was that the analysis unit is wrong: the measured\neffect of code-review-assistant is not \"skill on vs off\", it is specific lines. This\naudits which ones, mapping every span of SKILL.md back to the per-defect outcome data.\n\n[…]\n、未碰其他技能。\n此處「惰性」意為「對單一模型單一檔案無可量測 delta」,不是有害、也非證實已死。\n連唯一的 Tests delta 都是模型相依的:同一行在 Antigravity/Gemini 3.6 上是 0/5 -> 0/5。\n本稽核縮小了下一步該看哪裡,不構成刪除的授權。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(xspec-357): line-level audit — one line of eighty-three carries …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-24T00:53:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a45705ae240b2cb29039371964f34b369d10e1e5",
          "body": "…est quality and cross-site readability. 更難的素材,持平——而漏的兩項是測試品質與跨處可讀性。\n\nBuilt refund.js to remove the ceiling that made the previous Antigravity subject\nunmeasurable (baseline 6.2-6.4 of 8). Every defect is a cross-function inconsistency\nor a silent failure, phrased as an observable fact rather than a\n[…]\n/10)與 GPT-OSS 120B(10/10)在長提示詞下回傳空檔,與先前擋住 Opus 4.6 的是同一個失敗。\n那是 Antigravity/模型的穩定性問題而非資料問題,但這個 +0.00 建立在單一裁判上。\nCodex 本會是外部裁判,而它被配額擋到 2026-08-22。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): harder subject, flat line — and the two misses are t…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T17:35:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1da794e15a261b42573357f26edfb881f16f7b6a",
          "body": "…same file, other direction. Antigravity 給出相反的結果——同一個 skill、同一份檔案、相反的方向。\n\nOutcome measurement on the second tool, same subject file, same 8 defects, same blind\ntwo-judge protocol.\n\n    judge                no UDS    UDS     delta\n    Gemini 3.1 Pro        6.40     5.80    -0.60\n    Claude Sonnet 4.6\n[…]\n–6.4,只剩至多 1.6 個缺陷的空間,\n所以在受測檔變難之前,這一組在任何樣本量下都解析不出正面效應。\n\n方法註記:把第 5 項從架構判斷改寫為可觀察事實,使該項的裁判一致率從 1/8 提升到 9/10,\n整體一致率從 88% 提升到 96%。那是對量測工具本身的一次可量測的改善。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): Antigravity gives the opposite result — same skill, …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T16:52:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f578375723c943c45a1a158e94be377dcfa7fdfa",
          "body": "…omparable. 一個工具一張表——那些存活率從來就不可比。\n\nDELTA-TREND put Codex's 50% and Antigravity's 100% in a single table, which reads as\na trend. It is not one. The 50% came from 4 probes including two that measure\nbehaviour; the 100% came from 2 declared-form probes across 5 models. Different probe\nsets, different \n[…]\n第 5 項,兩個裁判對它的一致率是 8 次中 1 次。它原本寫著「HTTP handler 直接持有 DB 連線……\n沒有分層」——那是評價而非觀察,於是它量到的是「問了哪個裁判」。改寫為可觀察的事實:\n連線在模組載入時、任何函式之外建立,因此模組沒有資料庫就無法啟動,且沒有重連路徑。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(xspec-357): one table per tool — the survival rates were never c…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T16:34:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "111850eb3ffd46ae53a04502c4dc6d3313bc2099",
          "body": "…her could measure. 兩個裁判——88% 一致,以及一項兩者都量不了的缺陷。\n\nn=10 per arm was the target. Codex hit its account usage limit partway (\"try again\nAug 22nd\"), so 11 of 20 runs returned an error page instead of a review. Usable: 5\nno-UDS, 4 UDS. The failures are detectable — no `tokens used` line — and were dropped\n[…]\n看法完全相同:\n金流路徑無測試——Gemini 0/5 → 4/4、Claude 0/5 → 3/3。完全分離、零分歧。\n把不可量測的第 5 項排除後,兩個條件之間的全部差異就是那一列。\n其餘每一項缺陷,有沒有 UDS 的發現率都相同。與 n=3 那次一致,現在多了一個獨立的第二裁判。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): two judges — 88% agreement, and one defect that neit…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T16:28:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2426f8a00eaaed173fd4eba66c57b0e8a3655e5f",
          "body": "…xactly one thing. 盲讀判定——UDS 在此可量到的貢獻恰好是一件事。\n\nFixes the two defects that made every previous scoring of this data unusable, then\nre-measures. Earlier attempts gave +2.8, +1.0 and \"no visible difference\" from the\nsame six runs; all three were keyword matching over whole transcripts, where a\nkeyword c\n[…]\n的檔案裡看不見,\n要注意到它必須跳出檔案看專案,而那正是檢查清單會促成的動作。\n\n有兩項是兩組都沒抓到的:分層與 magic number,各 0/3,儘管該 skill 的類別清單明確列了\nDesign 與 Quality。**把類別放進清單,並不會讓它被覆蓋。清單不會自己執行。**\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): blind-judged — UDS's measured contribution here is e…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T16:14:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b4b564659d998badd26983547cfa7e197168111b",
          "body": "…idated yet. 三個評分器,三個答案——方法尚未證明有效。\n\nGoal was a demonstration that the measurement works before scaling it. It does not\nwork yet, and the evidence for that is the demonstration itself.\n\nThe earlier factorial found nothing because the subject file tested what models\nalready do: 3 of 8 defects in Secur\n[…]\n重度前綴。\n無 UDS 那份看不出比較差,甚至更詳盡。兩個樣本、一個讀者、未盲讀——那是印象不是結果。\n\n記錄而非丟棄,是因為「評分器因錯誤的理由給出預期中的數字」正是這整條軸存在的目的所要抓的\n失效模式,而它在同一個 session、同一個小時內發生了兩次——在我已經更正過一次之後。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): three scorers, three answers — the method is not val…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T16:03:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9db44fdb7e30c87806b1f22c2eb47cbaeacb50af",
          "body": "…rong. 形式守住了,結果沒有——而我的答案卷是錯的。\n\nEvery probe so far measured whether the model emits UDS's declared form. None\nmeasured whether the work got better. A review carrying the right prefixes while\nmissing the bug is decoration.\n\nA 2x2 factorial separates them — UDS x long context, 3 reps, 8 planted defects\n[…]\n了這點。\n它們是對的,答案卷是錯的。評分器也少算了一次:某次實跑標出了 magic number 的正確行號,\n但診斷為浮點數貨幣誤差,關鍵字錨點沒接住。\n\n**一份 ground truth 本身就是一個主張。** 已經為探針寫下的規則——裁判永遠不是被測工具——\n同樣適用於答案卷。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): form held, outcome did not — and my answer key was w…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T15:36:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0b1bb1abbb056fcd3eead50b5a50586b50d96647",
          "body": "…be survives. 六個模型、三個家族——每一條宣告形式探針都存活。\n\nA single model cannot separate a model effect from a tool effect, so the sweep used\nAntigravity as the vehicle: one tool, one probe set, six models across Gemini,\nClaude and GPT-OSS, at three strength tiers.\n\n  Gemini 3.6 Flash (Low)     P2=0  P6=0\n  Gemini 3.\n[…]\n沒有任何跡象;\n線索是一份只該知道 prisma 與 express 的逐字稿裡出現了 wrangler.toml。\n\n**一輪數字全部符合假設的掃描,正是該跑有效性檢查的時候。** 那道檢查——\n對每份逐字稿 grep 專案獨有字串與其他 repo 名稱——現已成為每次實跑的第零步。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): six models, three families — every declared-form pro…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T15:07:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "af919581421f478ec95d6575dcd13b7c30ad1c44",
          "body": "…ge rather than on a schedule. 量測 UDS 是否還被需要——綁版本變化,不綁日曆。\n\nTurns today's one-off probing into a standing measurement, scoped by two decisions:\nthe purpose is to answer \"is UDS still needed\" (not to prune skills), and the trigger\nis a model/tool version change (not the calendar).\n\nThree design choice\n[…]\n不到的探測不能當作「沒有變化」的證據。\n\n它自己的第一版有個被負向對照抓到的 bug:`$(cat)` 會去掉尾隨換行而組出來的字串保留它,\n於是每次執行都報告有變化。一個總是狼來了的守望比沒有守望更糟——第一次真的變化\n看起來會跟雜訊一模一樣。我差點把那個仍報變化的輸出讀成還原成功。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(xspec-357): measure whether UDS is still needed, on version chan…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T14:40:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "502e67586304c7138d6dbba73803e3b67ad103d1",
          "body": "…and both numbers were wrong. 8,000 是 fallback、我的解析器壞了,兩個數字都錯。\n\nTwo independent measurement defects, both mine, both in the same argument.\n\n**The cap.** I built a budget argument on \"Codex loads at most 8,000 characters\",\ntaken from a WebFetch summary I never checked against the source. The actual\nw\n[…]\ndisable-model-invocation: true`——單看標記就是退場候選。\n它產出乾淨的 0 -> 17 差異。**退場與否不能從標記判定**:那份 notice 說的是流程編排移到\nadoption layer,而 skill 保留了前綴語意,差集就住在被保留的那部分。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): the 8,000 cap was a fallback, my parser was broken, …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T14:21:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f71578cb5acf340b30a4da02d7c38f787172fcdb",
          "body": "…徑後 Codex 通過驗證——3 次全過。\n\nThe first Codex run today was recorded as `failed`. That verdict was correct and its\ndiagnosis was incomplete: the generated AGENTS.md does only index .standards/ by\nfilename, but UDS was also writing Codex skills to .codex/skills/, which Codex never\nreads. Both had to be tru\n[…]\n的 skill 內容並實際套用」。`uds init` 對此目標的端到端流程\n未驗證——init 沒有 --ai-tool 旗標,非互動路徑跑不了。\n\n值得記下:若只依第一次的診斷行動,修法會是把規則內嵌進 AGENTS.md——\n而那在一個確實具備漸進揭露的宿主上,正好是最錯的取捨。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): Codex verified after the path fix — 3 of 3 runs. 修好路…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T13:15:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5e43673d02f3be7b090ba11618f35a7565345d02",
          "body": "…s. Codex 的 skills 被裝到一個 Codex 從不讀取的目錄。\n\nUDS installed Codex skills to `.codex/skills/` and `~/.codex/skills`. Per the\nofficial docs, Codex discovers skills in `.agents/skills` (plural) — $CWD, parent\ndirectories, $REPO_ROOT, and $HOME. `.codex/skills/` is a directory UDS invented.\n\nSo skills were i\n[…]\n       不可驗證的標 [Unknown]\n\nCodex 從頭到尾都是對的。\n\n`agents` 路徑未動。官方 skills 文件把 `agents/openai.yaml` 描述為 skill 目錄「內」的檔案,\n而非獨立的頂層位置;猜一個未經驗證的路徑,正是這次要修的那個病。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): Codex skills were installed to a directory Codex never read…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T13:11:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0d383d2707f9f65993054ba4b757a41eec484956",
          "body": "…king install. uds init 回報 60 個不存在的失敗,並回滾了一個原本成功的安裝。\n\n`uds init --skills-location project` ended in \"Installation failed and was rolled\nback\", claimed \"0 Skills installed, 60 errors\", and discarded the AGENTS.md it had\njust generated. Two independent causes, both stale assumptions about the layout.\n\n[…]\n條測試必須修改:它斷言路徑含 'claude-code'。那條測試把 bug 釘在原地——綠色只代表\n程式碼仍與一個過期假設一致,不代表路徑指向任何真實存在的東西。與今天稍早更正的兩條\nAntigravity 測試同型。\n\n預設的 `uds init` 自始至終未受影響,現在仍然正常。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): uds init reported 60 phantom failures and rolled back a wor…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T09:24:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "85d60e1baa2102afc896041e9569f27c2aace6fc",
          "body": "…odex 已驗證——它失敗了,而錯在我們。\n\nFirst real verification run. Result: failed. Cause: UDS, not Codex.\n\nCodex CLI 0.145.0 read the project, listed all 65 files under .standards/, read\nAGENTS.md, and answered correctly — cleanly separating what it could verify (Prisma\nin package.json) from what it could not (no\n[…]\n則可以對檢查器存在、對每一個使用者不存在,而沒有任何燈會紅。\n與 OQ5/OQ6 同型(一個主張的驗證看的不是它所主張的東西),但這是第一次,\n缺口出現在「我們檢查什麼」與「我們交付什麼」之間。\n\n記為 `failed` 而非留白。一個只記錄成功的驗證軸,正是這條軸被加上來要防的東西。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): Codex verified — it failed, and the fault is ours. C…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T09:11:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d26d39109a8b5b5adf4a1da799ddd2645066a92f",
          "body": "…UDS. 跑了基線——四條探針裡三條沒裝 UDS 就通過。\n\nThe probe set said probes must be delta probes. It did not say how anyone would\nknow. So the probes were run against Antigravity CLI 1.0.14 with no UDS installed,\nwhich is the only way to find out.\n\n| Probe                    | Baseline                                \n[…]\n——關於這台機器上的另一個 repo。`agy` 有自己的 project 概念,cwd 不是它。\nexit code 0、輸出合理、主題錯誤。該次實跑保留為 P1-INVALID-wrong-project.txt:\n一次「長得跟成功的一模一樣」的廢棄實跑,是這個目錄裡最有用的檔案。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(xspec-357): baselines run — three of four probes passed without …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T08:05:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "795452c6e939b4f598228b7d1ea87890002370a9",
          "body": "…針集,以及它篩掉的第一條規則。\n\nAdds docs/reference/INTEGRATION-VERIFICATION.md: five probes, the run procedure,\nthe evidence format, and the rules that make a run count -- the judge is never the\ntool under test, probes assert structure rather than wording, 3 runs with 2 passing,\nand `failed` is a result that mus\n[…]\n寫著「不要只改 README,那是今天已經犯過三次的\n錯」——而上一個 commit 只改了三份 README。四份摘要表現已標明沒有任何一個通過驗證並指向\nREADME。刻意不做成第四份驗證欄:再複製一份等於製造第 5、6、7 份會漂移的副本,而同一批資料\n今天已經在五個地方漂移過。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(xspec-357): the probe set, and the first rule it disqualified. 探…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T06:21:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a53beb23da555a56b3a61c4deb3627ec807c79bd",
          "body": "… ever tested. 加上驗證軸——出貨 11 個整合,測過 0 個。\n\n`✅ Complete` was decided by check-ai-agent-sync.sh grepping regexes against UDS's\nown integration files. It says our docs mention 7 rule keywords. It says nothing\nabout whether any tool reads them. Only Claude Code has ever actually been used.\n\nAdds an orthog\n[…]\n無證據的 `verified` 會失敗、README 數字漂移會失敗。\n兩數字 regex 的第一版什麼都沒匹配到,卻回報成看起來像通過的警告——與今早在 README 投影檢查\n發現的靜默漏洞是同一型。現在找不到那句話即為 FAIL,因為一個靜默地什麼都沒比的檢查,\n比沒有檢查更糟。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(xspec-357): add a verification axis — 11 integrations shipped, 0…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T05:42:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7735c46af3211f04bc3a0ab6c140e4d8582c9215",
          "body": "… adopters choose from. 一個可證偽的數字錯了一倍以上,而它就寫在採用者做選擇的文件裡。\n\nThird pass on the same contradiction. Each pass was found by widening the grep, not\nby any check -- which is itself the finding: the previous pass reported \"all three\nUSER-MANUAL files fixed\" and that was true, but the scan behind it was narro\n[…]\nANUAL\n更下方——上一個 commit 修好了架構段,而二十個畫面之下的支援表沒修。\n\n記下這揭露的覆蓋缺口:check-integration-liveness.ts 只把停用狀態投影到三份 README。\n以上每個檔案都在它的涵蓋範圍之外。登記為 XSPEC-355 OQ10。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: a falsifiable number was wrong by more than double, in the docs…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T05:20:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "019325010542df9d935e7f988806368ab00bca8f",
          "body": "…個矛盾還住在另外三個檔案裡。\n\nFollow-up to efe8df23, found by re-reading rather than by any check.\n\nThat commit fixed the \"Minimal vs Detailed\" framing in the three READMEs. The\nidentical table also lived in docs/USER-MANUAL.md and both of its locale mirrors,\nuntouched. Fixing the source and leaving the mirrors \n[…]\n commit\n已經解決的事掛著「⚠️ 未解決:README 的調和不在此處進行」旗標。描述過去狀態的架構文件正是\n那個檔案當初要防的失敗,留著它會自我反駁。\n\ndocs/archive/USER-MANUAL-2026-03-24.md 刻意保留舊表——封存記錄的是它那個日期的狀態。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(xspec-355): the same contradiction lived in three more files. 同一…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T05:12:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "efe8df23e7944b7592a3db1ef57d30466e963c7c",
          "body": "…nd guard both. 分開兩條內容軸、凍結已死工具、並為兩者加上守門。\n\nResolves XSPEC-355 OQ5, OQ6 and OQ7. Each had a mechanical half that was safe to\ndo and a half that needed a decision; the decisions are now made and applied.\n\nOQ7 -- README described core/*.md as the \"Detailed (Reference)\" layer while the V5\ncontract calls \n[…]\n:未登記的分歧視為錯誤,已登記者發出警告並附原因與追蹤編號,\n而一筆開始相符的登記本身即為錯誤。\n\n為何先前沒有任何一盞燈變紅:已死的工具落在最低的 tier,而那些 tier 的規則集小到只要檔案\n存在就會通過。當初為了容忍「整合不完整」而建的豁免機制,無聲地吸收了「整合已經死亡」。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(xspec-355): separate the two content axes, freeze a dead tool, a…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-23T04:04:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ef98cc818ecdfab4d91a37f86ebf18eaf075e653",
          "body": "…ument, not the deleted migration guide. 把 V5 內容契約寫回來——寫成活文件,不是那份被刪的遷移指南。\n\nMIGRATION-V5.md defined the Rules/Guides contract in January and was deleted on\n2026-05-08 with docs/archive. The rule itself survived — it is still projected\ninto 12 of 14 integration instruction files, verified today. What \n[…]\nE 是專案的公開門面,\n措辭屬於產品決策。\n\n第 7 節放了重新量測的指令,兩段都是先執行過才寫進去的;初稿那版會無聲回傳零個檔案,因為\n未加引號的 glob 被 shell 先展開了。描述過去狀態的文件正是本檔要防止的失敗,所以那些數字\n必須很便宜就能重驗。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(architecture): restore the V5 content contract — as a living doc…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-22T16:54:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "afcf3694ef197cc630c5ec29d34b5e76dc94f262",
          "body": "…t job 需要 submodule——tests/bats 就是。\n\nFirst run of Check Script Ratchet exited 127: tests/bats/bin/bats not found.\ntests/bats is a git submodule pointing at bats-core, and actions/checkout does\nnot fetch submodules unless asked. It passed locally because the submodule is\nalready checked out here.\n\nEx\n[…]\n動取得\nsubmodule。本機會過,是因為這裡的 submodule 早已取出。\n\n這正是要盯著遠端執行、而不是相信本機全綠加上改過的 workflow 檔的理由。上一個 commit\n用負向控制證明了這道閘會失敗——卻從沒驗證過它在 CI 裡跑不跑得起來。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): the ratchet job needs submodules — tests/bats is one. ratche…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-22T16:31:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "abdac77628321cfb00eca120fee2c703f362c8c5",
          "body": "…\" were already green. 讓檢查腳本的 ratchet 真的生效——9 個「已知失敗」裡 8 個早就是綠的。\n\ntests/scripts/check-scripts-passing.bats already described a ratchet: \"if any of\nthese start failing, it indicates a real regression\". Nothing ran it. `npm run\ntest:scripts` appeared only in package.json defining itself and in\nscripts\n[…]\n ok 與 status 1。這道閘確實會失敗。\n\n註:translation-sync 與 cli-docs-sync 現在同時由此處與各自的 CI job 執行。刻意保留\n——專屬 job 給較銳利的失敗歸因,ratchet 保證整組,且 job 為並行。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(ci): make the check-script ratchet real — 8 of 9 \"known failures…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-22T16:23:03Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "92576a8a83dbb316dce3b866f75f0f6626cdf46c",
          "body": "… XSPEC-211 為索引建的兩道閘都是死的。\n\nXSPEC-211 added scripts/setup-hooks.sh for fast local feedback and\ndocs-check.yml as the CI backstop, so a stale SKILLS-INDEX or COMMANDS-INDEX\nwould be caught. Neither has ever fired.\n\nsetup-hooks.sh writes .git/hooks/pre-commit, but core.hooksPath has pointed at\ncli/.hus\n[…]\njson 會驅動 uds init 且其 skillsPath 仍為 null,而在 Antigravity\nCLI 取代 Gemini CLI 之後,正確路徑是真的未知。那不是零風險的編輯,維持未決。\n\ngemini-cli 標記為棄用,附終止日期與接手者。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(hooks): both guards XSPEC-211 built for the docs index were dead.…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-22T16:10:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5de0228928536be6517473e12c59da3bb6d4dcb2",
          "body": "…, never propagated. 補完 99ea6a25 沒做完的事——兩個命令註冊了,卻沒傳播出去。\n\nOn 2026-06-20, 99ea6a25 registered /journey-test and /skill-builder as formal\ncommands. It shipped the two command files and the index entry, but not the\nAI Agent Behavior section either file needs, nor the references the ten agent\nintegration\n[…]\n/derive-all 與 /migrate 之後,依各檔既有的\nCOMMAND-INDEX.json 順序。\n\n八個相關檢查全數通過。僅存的 docs-integrity warning 為既有且無關:一個 zh-TW 檔\n連到不存在的 zh-CN 對應檔。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(commands): finish what 99ea6a25 started — two commands registered…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-22T09:12:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e9bb505d6ead6f50aa38df0bf6ab2c1496a788c9",
          "body": "…ks. 每週健康檢查已有 8 週無法回報。\n\n`Weekly Standards Health Check` has failed every run since 2026-06-01 with\n\"Unable to process file command 'output' successfully. Invalid format '0'\". Its\njob is to open an issue when the standards score degrades, so the degradation\nalarm has not fired once in that window.\n\nT\n[…]\n徑驗證:正常單行、指令失敗且有輸出、多行輸出、完全無輸出,\n四者皆產生恰好一行;且舊寫法確實重現上述兩行輸出。\n\n註記:此修復會讓一個真實警報浮現 —— 目前分數為 61、門檻為 75,\n故下次執行應會開出退化 issue。那正是先前被壓住的行為,不是新問題。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): the weekly health check has been failing to report for 8 wee…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-20T15:40:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4f00c8a5a9beee3ce16177d94085141f7ac7a1ec",
          "body": "…js-yaml 5 —— 它移除了 default export。\n\nCloses the work behind dependabot #153, which could not merge on its own: js-yaml\n5.x dropped the default export, so `import yaml from 'js-yaml'` throws at import\ntime and the CLI never starts. All 96 E2E failures on that PR were one defect —\nevery assertion read \n[…]\n的情況下驗證,而非僅靠閱讀:\n- `uds --version` 可執行(原本 SyntaxError 就發生在這裡)\n- 單元測試:150 個檔案、3220 個測試、零失敗\n- E2E:8 個檔案、120 個測試、零失敗 —— 正是先前有 96 個失敗的那組\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): migrate to js-yaml 5 — it removed the default export. 遷移至 …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-20T15:24:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3973d53ae29a13ab4b95f2583afa168dda97464b",
          "body": "…ebt. 清償 15 個具無法解析 source_hash 的翻譯債務。 (#161)\n\nWeekly hash-debt batch: reconcile 15 translations (12 zh-CN skills, 3\nzh-TW core standards) whose declared source_hash never resolved to a\nreal git blob (git cat-file -e fails), meaning drift could only be\nfound by full manual text comparison against the\n[…]\nc-driven-dev/SKILL.md 與\nzh-TW/core/browser-compatibility-standards.md)有實質內容缺漏,已\n鏡射補譯補齊。\n\nCo-authored-by: Claude <noreply@anthropic.com>\nCo-authored-by: AlbertHsu <AsiaOstrich@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs(i18n): reconcile 15 translations with unresolvable source_hash d…",
          "author_name": "AsiaOstrich",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-20T08:50:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ec6181878e641dbdf422e6751f6110155938ddf4",
          "body": "…hash debt. 清償 15 個 zh-CN 譯檔的無法解析 source_hash 漂移債。 (#156)\n\nWeekly hash-debt batch (2026-07-09). These 15 translations declared a\nsource_hash that never resolved to a real git blob, so drift could only be\nfound by full manual text comparison against the English source rather than\ngit diff. 14 files w\n[…]\ne/SKILL.md 與 migration-assistant/SKILL.md 有實質內容缺漏,\n已鏡射補上對應的簡體中文段落。zh-CN 內容漂移數:26 -> 12。\n\nCo-authored-by: Claude <noreply@anthropic.com>\nCo-authored-by: AlbertHsu <AsiaOstrich@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs(i18n): reconcile 15 zh-CN translations with unresolvable source_…",
          "author_name": "AsiaOstrich",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-20T08:50:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a825ca8f63b5e3bea757035a181893ac1a052775",
          "body": "Bumps [eslint](https://github.com/eslint/eslint) from 10.6.0 to 10.7.0.\n- [Release notes](https://github.com/eslint/eslint/releases)\n- [Commits](https://github.com/eslint/eslint/compare/v10.6.0...v10.7.0)\n\n---\nupdated-dependencies:\n- dependency-name: eslint\n  dependency-version: 10.7.0\n  dependency-\n[…]\nrect:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump eslint from 10.6.0 to 10.7.0 in /cli (#157)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T08:35:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "457c1266653fb8593c387bbdc6064d2007042620",
          "body": "…160)\n\nBumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 4.1.9 to 4.1.10.\n- [Release notes](https://github.com/vitest-dev/vitest/releases)\n- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)\n- [Commits](https://github.com\n[…]\nrect:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump @vitest/coverage-v8 from 4.1.9 to 4.1.10 in /cli (#…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T08:28:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "33056f20a581ff13cec213e44ea3e1c2ffec1ac4",
          "body": "Bumps [tsx](https://github.com/privatenumber/tsx) from 4.23.0 to 4.23.1.\n- [Release notes](https://github.com/privatenumber/tsx/releases)\n- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)\n- [Commits](https://github.com/privatenumber/tsx/compare/v4.23.0...v4.23.1)\n\n--\n[…]\nrect:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump tsx from 4.23.0 to 4.23.1 (#163)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T08:28:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "49318fc922a67a508dda8c9f07dd52e41d5a1217",
          "body": "Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n  dependency-version: '\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(ci): bump actions/setup-node from 6 to 7 (#162)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T08:25:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6153ac83c91e0bbb0879f8cbc3e0e84a26add623",
          "body": "Bumps [opencc-js](https://github.com/nk2028/opencc-js) from 1.4.0 to 1.4.1.\n- [Release notes](https://github.com/nk2028/opencc-js/releases)\n- [Changelog](https://github.com/nk2028/opencc-js/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/nk2028/opencc-js/compare/v1.4.0...v1.4.1)\n\n---\nupdated-\n[…]\nrect:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump opencc-js from 1.4.0 to 1.4.1 (#164)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T08:24:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "23c7c495bdb33b90cee4feccbac4a6b3c74b086b",
          "body": "Bumps [@commitlint/cli](https://github.com/conventional-changelog/commitlint/tree/HEAD/@commitlint/cli) from 21.2.0 to 21.2.1.\n- [Release notes](https://github.com/conventional-changelog/commitlint/releases)\n- [Changelog](https://github.com/conventional-changelog/commitlint/blob/master/@commitlint/c\n[…]\nrect:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump @commitlint/cli from 21.2.0 to 21.2.1 (#158)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-20T08:18:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e7aea5b5a4b38a125a92cd7e8811e899b266bcdc",
          "body": "…XSPEC-342 R1+R4 uds check 修正。\n\nR1: uds check compares installed standards to npm latest (not the CLI's\nbundled copy), killing the backwards \"6.1.0 -> 5.12.1\" message; reframed to\nstandards-behind + two-step fix; --offline skips silently.\nR4 (quiet-pass subset): uds check no longer lists unchanged f\n[…]\n默略過。\nR4(安靜通過子集):uds check 不再逐檔列未變更,輸出 121 → 41 行。\nPatch、無破壞性變更。完整套件綠(150 檔 / 3220 過)。\n簽核:.release-readiness/6.1.1.md(maintainer 2026-07-18 GO)。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 6.1.1 — XSPEC-342 R1+R4 uds check fixes. 發版 6.1.1 —— …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-18T11:25:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d50f97a98ebc77f9ad604cb225be998ac448e509",
          "body": "…t (not CLI bundled) and stops listing unchanged files. XSPEC-342 R1+R4 —— uds check 比對 npm 最新(非 CLI bundled)並停止逐檔列出未變更。\n\nR1: displayAdoptionStatus compared the installed standards version against the\nrunning CLI's own bundled copy (repoInfo.standards.version). When the CLI is\nitself stale, that cop\n[…]\n 5.0.0 →「5.0.0 → 6.1.0」+兩步驟)/\nGREEN(6.1.0 → 無警告)/offline(無比對、exit 0)。加 3 個回歸測試。完整套件綠:\n150 檔、3220 過。對外部採用者於下次 npm 發版生效;我方期間由 XSPEC-342 R5/R6 覆蓋。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): XSPEC-342 R1+R4 — uds check compares standards to npm lates…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-18T10:45:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aaa2094ee748e44530d906ba7a48a404e97bc91e",
          "body": "…. 這份講「宣稱與實際不符」的發版說明,自己的數字與實際不符。\n\nThe 6.1.0 CHANGELOG said `core/verification-evidence.md` \"carries ten real\ninstances as evidence\". The table has eight rows. Ten was the day's total\nfailure count; only eight were tabulated. The standard's own prose was already\ncorrect and consistent with eight (\"Fo\n[…]\n of these had exit_code = 0 and were false; two had\nexit_code ≠ 0 and were true」)——錯的數字只存在於 CHANGELOG 對該檔的描述裡,\n三種語言都有。\n\n發布後才抓到,故 npm 上的 6.1.0 其 CHANGELOG 帶著錯的數字。純文件、不值得為此\n單獨發 patch;已在 main 修正,搭下一次順風車。",
          "is_bot": false,
          "headline": "docs(changelog): the release about false claims shipped a false count…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-17T09:13:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f39c03b46568fcabe0b7120c11d28efad1976ceb",
          "body": "Two failures of the same shape — one in the standards, one in the CLI. A check\nran, returned, and reported success while measuring nothing. verification-evidence\ngains the layer that names it (XSPEC-340); uds init stops being an instance of it\n(XSPEC-341).\n\nSign-off: .release-readiness/6.1.0.md — GO\n[…]\n情況下發出而 gate 全程綠燈,因為它驗的是「版本最新的簽核檔」\n而不是「正在發的這一版」。\n\n已驗證:150 個測試檔 / 3217 通過 / 0 失敗;cli lint 0 errors;version-sync、\nstandards-sync、registry-completeness(141/141)全部 PASS;\nCHANGELOG 三語對齊(EN + zh-TW + zh-CN)。",
          "is_bot": false,
          "headline": "chore(release): 6.1.0. 發布 6.1.0。",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-17T09:00:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "59c995a176f366e7c017f1f598929a7da9640533",
          "body": "…寫採用者的建置。\n\nXSPEC-341 R1. Since 2026-02-04, `uds init` shelled out to `npx husky init` on\nany Node project without a .husky/ directory. That command is a one-time\nbootstrap for a NEW project, not an idempotent operation: it sets\n`\"prepare\": \"husky\"` unconditionally.\n\nEngramGraph had `\"prepare\": \"tsup\n[…]\n會寫 hook 時是未爆彈,\n  移除該呼叫的那一刻就變成主要路徑。\n\nsetupHuskyHook 從來沒有測試——這就是它出得去的原因。現已匯出並由 10 個測試覆蓋,\n跑真實暫存目錄而非 mock:缺陷活在真實的 package.json 讀寫行為裡,mock 掉檔案系統\n只會重現意圖、重現不了 bug。RED-GREEN 已驗證——10 個裡有 4 個在修復前的程式碼上\n失敗,修復後全過。",
          "is_bot": false,
          "headline": "fix(cli): uds init must not rewrite the adopter's build. uds init 不得改…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-17T08:35:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d97a810c5f1c046d484f7c260426d3755ac11744",
          "body": "…tions the translations had first. verification-evidence 1.2.0 譯文;三個章節原本只有譯文才有。\n\nzh-TW / zh-CN brought to 1.2.0, structurally 1:1 with the English source.\n\nThe interesting part is which direction the content moved. Three sections\nexisted ONLY in zh-TW — Non-Evidence Claims, Evidence Types, Related\nS\n[…]\n0 在 3/3 .ai.yaml、0/4 .md 躺了兩個月」的版本漂移缺口,\n一併記為 XSPEC-340 R4。\n\n過程中另修兩處:zh-TW 標題「禁止的完成聲明」把這些話框成「被禁止」,但重點是\n它們**不構成證據**——已對齊英文框架。Health probe 的範例原用 localhost,\n那驗的是本機 process 而非那個部署,與同一份文件的 VE-005/VE-006 打架。",
          "is_bot": false,
          "headline": "docs(standards): verification-evidence 1.2.0 translations + three sec…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-17T07:50:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a037329842afd4c67c9c4b7b087bf289eccefe0a",
          "body": "…n lie. verification-evidence 1.2.0 —— 證據本身會騙人。\n\nXSPEC-340 R1.\n\nThe standard treated exit_code as ground truth. trust_rules said \"exit_code\n≠ 0 → verification failed\"; physical_spec.checks asked \"is exit_code 0\n(success)?\"; VE-002 triggered a fix loop on any non-zero. It had already\nanticipated that\n[…]\nl、\n  0/4 的 .md,人類文件已錯誤描述本標準兩個月。列為 XSPEC-340 R4:沒有任何 gate 比對\n  core/*.md 與 .ai.yaml 的版本,而 .ai.yaml 正是 sync-standard.ts 刻意不重生的手改層。\n- 「禁止的完成聲明」「證據類型」「相關標準」原本**只存在於 zh-TW 譯文**。\n  譯文比來源完整——升上英文與兩份譯文,而不是刪掉。",
          "is_bot": false,
          "headline": "feat(standards): verification-evidence 1.2.0 — the evidence itself ca…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-17T07:42:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d25a64fb60137a795426be3d670b6d200c4483a9",
          "body": "…G.md. 修正 STANDARDS-MAPPING.md 嚴重過時的彙總數字。\n\nLast touched 2026-04-29, this root-level file's \"Total\" line still said\n\"32 core standards → 32 AI standards → 26 Claude Code skills → 10 AI tool\nintegrations\" against an actual current state of 149/141/55/10. Verified\neach figure independently before writi\n[…]\n category 欄位有 73/149 是「uncategorized」,且用的是另一套不相關的\n分類法)。與其捏造看似合理卻無法驗證的數字,改為留下明顯的警示註記指向\n準確的 Total 列——依任務說明本為最低優先,且這樣做正好避免了這整次稽核\n所要防範的那種「未驗證數字」錯誤。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(reference): fix badly stale aggregate counts in STANDARDS-MAPPIN…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-16T05:46:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6bea0b899074b5880604113296150cd27fb7312f",
          "body": "…rely. 重新產生 COVERAGE.md——原漏了 4 個標準。\n\nCOVERAGE.md is auto-generated by scripts/generate-locale-coverage.mjs but\nhadn't been re-run since 2026-06-18, so it silently missed\nfeature-discovery-standards, multi-environment-e2e-testing, push-standards,\nand user-journey-testing — all added to core/ after th\n[…]\n圍內的發現供後續處理:本次執行揭露\nlocales/zh-TW/core/user-journey-testing.md 內有一個死連結,指向不存在的\nzh-CN 對應檔——scripts/check-docs-integrity.sh 已將其列為 WARN(非本次改動\n造成的回歸)。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(locales): regenerate COVERAGE.md — 4 standards were missing enti…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-16T05:46:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7a41e804cca2b079435343d65b11013a15028348",
          "body": "…49). 修正 GLOSSARY 過時的 145 個核心標準數(現為 149)。\n\n`ls core/*.md | wc -l` = 149 today; GLOSSARY.md's UDS entry (dated\n2026-06-20 per git blame) still said 145. Updated the English source and\nboth zh-TW/zh-CN mirrors. The nearby Tier 1/2/3 skill-count breakdown\n(15+28+12=55) was checked and still sums correc\n[…]\n依 git blame 為\n2026-06-20 所寫)仍寫 145。已更新英文原文與 zh-TW/zh-CN 兩份鏡像。附近的\nTier 1/2/3 skill 數量分解(15+28+12=55)已檢查,加總仍正確等於本檔案內已\n正確的 55 個 AI Skills 數字,故未變動。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(reference): fix stale 145 core-standard count in GLOSSARY (now 1…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-16T05:46:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9226e02d07042e336c386ad60c513bf07dcaed8d",
          "body": "…f hardcoding it. 從 cli/bin/uds.js 實際計算 CLI 指令數量,不再寫死。\n\nRoot cause of README.md's badly wrong \"CLI Commands | 6\" stat: generate-docs.mjs\nhad a literal hardcoded string (`6 | list, init, configure, check, update, skills`)\nthat never tracked reality, unlike the core_standards/skills/slash_commands row\n[…]\n\n已執行 `npm run docs:sync` 重新產生 README.md(EN/zh-TW/zh-CN);手動還原了\nsyncReadmeVersions() 每次執行都會套用的「Released」日期跳動(今天日期),\n因為今天並未真的發布新版本——超出本次文件飄移修正的範圍。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(scripts): compute CLI command count from cli/bin/uds.js instead o…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-16T05:45:49Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9c56df00925fbf6f9a251d402500378a3ba4d223",
          "body": "…s workflow 列——該指令已於 6.0.0 移除。\n\nCHANGELOG.md's [6.0.0] entry lists `uds workflow:*` as one of 4 deliberately\nremoved CLI commands, but CHEATSHEET.md still documented `uds workflow` as\ncurrent. Verified `cli/src/commands/` has no workflow.js and\n`cli/bin/uds.js` has no `.command('workflow'...)` regis\n[…]\nzh-CN 兩份鏡像移除該\n過時列(保持表格一致性——check-docs-integrity.sh 的跨語言表格檢查通過)。\n同一 changelog 條目移除的另外 3 個指令 `uds start`/`mission:*`/`flow:*`/\n`sweep` 從未出現在此檔案中。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(user): remove uds workflow row — command removed in 6.0.0. 移除 ud…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-16T05:45:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4dfe21b19990001d5184e3739b6cf83cfbf47dcb",
          "body": "…convergence check (spec-kit /checklist + /converge). requirement-engineering v1.1.0 新增 checklist_generation;sdd 補 convergence check(借鑑 spec-kit /checklist + /converge)。\n\nTwo gaps confirmed still real on 2026-07-10 re-alignment review of\ngithub/spec-kit (v0.5.0 -> v0.12.9, 641 commits): the static V\n[…]\n發現分類為落差型別(missing/\npartial/contradicts/unrequested)與嚴重度(CRITICAL/HIGH/MEDIUM/LOW),\n唯讀比對,並記載可獨立對已歸檔 spec 重跑(非僅一次性 verify gate)——\n用於偵測實作完成後累積的漂移。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(requirement-engineering,sdd): v1.1.0 add checklist_generation + …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-10T05:41:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b4dabbed9a4a9eac2f8c35bc68bf71f3192bc6de",
          "body": "…ion + structured components (DEC-029). frontend-design-standards v1.1.0 新增選填 token 內插語法+結構化 components(DEC-029)。\n\nDEC-029's upstream (awesome-design-md, now the official Google Stitch\nDESIGN.md format) grew from 4,385 to 99,219 stars and evolved YAML\nfrontmatter token dictionaries + {category.token\n[…]\n、框架專屬匯出格式、擴增 token 數量——內插語法是讓既有 token\n可被引用,不是加 token 的許可證。\n\n經 scripts/sync-standard.ts 同步(registry 通過、.standards/ 副本同步、\nzh-TW/zh-CN 語系標記待譯者更新)。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(frontend-design-standards): v1.1.0 add optional token interpolat…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-10T05:34:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "59bb0a9f57e58156b5290e539f7bff1616958b2f",
          "body": "…es (XSPEC-326 R4). checkin/push 測試閘加分層選擇性執行例外(XSPEC-326 R4)。\n\ncheckin-standards had an internal contradiction: the \"Test Verification\"\nchecklist already permitted \"relevant tests... use test impact analysis\ntools if available\" (core/checkin-standards.md:65-70), but a few lines\nlater the same sectio\n[…]\ntsx scripts/sync-standard.ts checkin-standards push-standards` 同步,\npropagate 進 .standards/、驗證 registry;翻譯過期狀態未變(zh-TW/\nzh-CN 在本次修改前即已過期,屬既有債務)。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(standards): add layered test-scope exception to checkin/push gat…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-09T09:52:41Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "76393ad700b13ffc92a757941e483ea0c80adb3f",
          "body": "…hold Recommended Set for /brainstorm v4.1. 腦力激盪推薦區改為分數門檻(不限筆數)。\n\nTop-3 was a fixed-cardinality working set threaded through BQS Layer 2 in five places:\nthe product gate (D5-D8), the hard-role rebuttal round (Devil's Advocate + Steelman),\nthe Meta stop rule (set-membership stability), the Diversity-\n[…]\nd 版本號 4.0.0 → 4.1.0,source_version/translation_version/\nsource_hash/last_synced 同步更新。對應 dev-platform XSPEC-325,為 XSPEC-296\n(BQS v1)的 follow-up。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(skills): replace fixed Top-3 recommendation cap with score-thres…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-09T07:10:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "96951e20b12ffa7f9223ac76bf7d990643b480fc",
          "body": "…nly. 修正 get_yaml_value 只讀取檔案開頭真正的 frontmatter 區塊。\n\nFound while diagnosing the check-translation-sync.sh false [DRIFT] flagged\nin the DEC-091 audit session. get_yaml_value() did `grep \"^${key}:\" \"$file\"`\nover the WHOLE file, so a key mentioned anywhere in the body -- including\ninside a fenced yaml e\n[…]\n從七十一降到七十(正好扣掉那一筆誤判),其餘七十筆真正的\n漂移全部維持照樣偵測到。補了一個回歸測試,用舊版程式碼跑會失敗、新版會\n過。掃過整個翻譯目錄後發現還有數十份翻譯文件內文也含有範例用的\nfrontmatter 區塊,這不是單一檔案的巧合,是一個一直存在、遲早會再中一次\n的隱患。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(scripts): bound get_yaml_value to the leading frontmatter block o…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-09T06:14:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "df5cb42ae06b9bd3ecaa303c7efa06e2f2424917",
          "body": "…d during DEC-091 audit. 修正 DEC-091 稽核時發現的 registry 過期描述與版本號漂移。\n\nTwo unrelated staleness bugs surfaced while investigating whether to\nconsolidate AI-output-consistency standards (dev-platform DEC-091):\ncli/standards-registry.json still described self-review-protocol as\n\"catches 6 categories\" after X\n[…]\n)時,意外發現兩個\n無關的過期問題。第一個是登記檔對自我審查協議的描述還停在加新類別之前,\n沒有反映最新的類別數。第二個是文件撰寫規範的機器可讀版本號,跟人類可讀\n版本沒有同步更新到最新一次擴充的版本——同一次提交裡兩份配對檔案本該\n一起改版號,結果只改了一份。已補齊版本號讓兩邊一致。\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(standards): fix stale registry description and version drift foun…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-09T05:57:50Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ae32cd2dba7e9c8ada6f7be71a90e37d22bed00d",
          "body": "…ripts. 修正另外四個腳本同樣脆弱的直接執行判斷式。\n\nSame bug class as ba6179db (sdd-analyze.ts), found while investigating\ntests/scripts/refresh-translation-hash.bats' flaky 2-vs-12 failure count\nacross runs: comparing import.meta.url (symlink-resolved by Node's ESM\nloader) against a raw file:// string built from proces\n[…]\n側都先解析成真實路徑再比對)套用到另外四支腳本:翻譯\n雜湊工具,以及三支命令列憑證與探索工具。其中三支沒有自動化測試覆蓋\n直接執行這條路徑,所以改用跟自動化測試相同的絕對路徑組法手動驗證過。\n\nSelf-review (protocol v1.1.0): 0 issues found.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(scripts): fix symlink-fragile direct-execution guard in 4 more sc…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-09T03:26:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "78e914081e726f0efa5303a264985272ac3d766f",
          "body": "…tandards count. 重新產生 FEATURE-REFERENCE/CHEATSHEET,修正過時的標準數量。\n\nFEATURE-REFERENCE.md was last generated 2026-06-20 and was missing 4 core\nstandards added since then (feature-discovery-standards,\nmulti-environment-e2e-testing, push-standards, user-journey-testing),\ntripping check-docs-integrity.sh's i\n[…]\n產生後揭露)。已還原產生器順手把 README「發布日期」改成今天\n的副作用——CHANGELOG.md 確認 6.0.0 實際發布於 2026-07-06,這次只是\n文件重整,不是新發版。\n\nSelf-review (protocol v1.1.0): 0 issues found.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(reference): regenerate FEATURE-REFERENCE/CHEATSHEET, fix stale s…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-09T02:54:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ba6179db9b604c7d940b8fa9e7063ce966c2c743",
          "body": "…ed repo layout. 修正 sdd-analyze 在 symlink 專案佈局下的直接執行判斷失效。\n\nNode's ESM loader resolves import.meta.url through symlinks, but\npath.resolve(process.argv[1]) is a pure string op that does not. Any\nabsolute-path invocation built from a symlinked location (e.g. bats'\n`$(cd ... && pwd)`, or dev-platform's \n[…]\n去重 key 中一個本該是空白卻誤植的 NUL byte(導致 git 一直\n把此檔當二進位檔)。修復 tests/scripts/sdd-analyze.bats 全部 11 個既存失敗。\n\nSelf-review (protocol v1.1.0): 0 issues found.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(scripts): sdd-analyze direct-execution guard breaks under symlink…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-09T02:53:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "65ea278ae86500a8418cb44e75afb734d20dd6b8",
          "body": "…語言一致性檢查。\n\nAdd self-review-protocol category 7 (language/terminology consistency)\ncovering markdown artefacts already in its trigger scope, a commitlint\ncustom rule enforcing the bilingual commit format (subject/body language\nsplit, with a pure-English automated-commit exemption), and a bilingual\nop\n[…]\nonical + 4 份 locale 鏡射\n- BDD 場景:tests/features/XSPEC-324-ai-output-language-consistency.feature\n\nSelf-review (protocol v1.1.0): 0 issues found.\n\nCo-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(i18n): add cross-conversation language consistency checks. 新增跨對話…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-09T02:34:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8aab63a5294363becf384d6fb432a9a7f6c3ea99",
          "body": "…y Events / Migration Completeness sections). 清償大量翻譯漂移(7 檔,含新譯 Mandatory Events / Migration Completeness 整節)。\n\nFinal local tranche of the source_hash drift backlog: files whose source\nchanged by 40-80 lines. Reviewed per source diff and mirrored:\n- logging-guide x2: translated the new \"Mandatory Eve\n[…]\nsh-object 前\n12 碼)。本地可處理的漂移桶至此清完(微量 18/小量 11/大量 7 = 36 檔)。\n剩餘「無法定位舊 blob」桶(約 73 檔,宣告 hash 不在 object db、需全文比對)\n由每週四雲端例行任務以開 PR 方式處理。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(i18n): clear large-drift translation debt (7 files, new Mandator…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-08T04:11:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4d00dd74d736fc789cab67bb2cfccbd6d238a469",
          "body": "…emediation Lifecycle section). 清償小量翻譯漂移(11 檔,含新譯 Remediation Lifecycle 整節)。\n\nSecond tranche of the source_hash drift backlog: files whose source changed by\n6-28 lines. Mirrored per source diff and stamped:\n- security-testing x2: translated the new \"Finding Remediation Lifecycle\"\n  section (state ma\n[…]\n74;zh-TW 45/zh-CN 29)。全部驗證\ndeclared == git hash-object 前 12 碼。既有 advisory:README 的 [PATCH] 係\n檢查器對「**Version**: X | ...」行的 semver 解析瑕疵,與 hash 無關。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(i18n): clear small-drift translation debt (11 files, incl. new R…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-08T03:32:23Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b73948e467633fa0de879a71e8b97c4911f99365",
          "body": "…rrored). 清償微量翻譯漂移(18 檔蓋章、5 檔鏡射)。\n\nFirst tranche of the 109-file source_hash drift backlog surfaced by 661a7850:\nevery file whose source changed by <=5 lines since its last stamp. Per-file\nsource diffs were reviewed and mirrored where needed:\n- 13 stamp-only (8 of them were already content-synced — \n[…]\n> current 等),因 body 已對齊 v1.0.1\n\n18 檔在 check-translation-sync 全數轉 [CURRENT](漂移母體 109 -> 91);\n全部 18 檔驗證 declared == `git hash-object <源檔>` 前 12 碼。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(i18n): clear tiny-drift translation debt (18 files stamped, 5 mi…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-08T03:07:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9bae871a7f4e10a8206536b8dac97bc288e6f0f9",
          "body": "…ing). 新增 source_hash 蓋章工具(安全設計)。\n\nCompanion to the source_hash drift detection (661a7850): stamps the current\n`git hash-object <source>` (first 12 chars) into a translation's frontmatter\nAFTER a maintainer confirms the translation is current. Stamping is an\nassertion of currency a machine cannot ma\n[…]\n 的 source_hash 一行;其他欄位與 body 逐字保留\n\n已註冊為 `docs:refresh-translation-hash`(根 package.json)。\ntests/scripts/refresh-translation-hash.bats:18 條自足沙盒測試。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(i18n): add refresh-translation-hash tool (safe source_hash stamp…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-08T02:19:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0afd80a6a5c3a9578655d2b1bc2e2043e2b64666",
          "body": "…ce_hash 改為真實 12 碼樣式。\n\nThe source_hash frontmatter example was `abc123` (6 chars), which misrepresents\nthe documented convention (first 12 chars of `git hash-object <source>`) and\nmisleads translators into writing malformed hashes. Replaced with a 12-hex\nsample plus an inline note on how to compute it.\n\nsource_hash frontmatter 範例原為 `abc123`(6 碼),與文件所述慣例(`git\nhash-object <源檔>` 前 12 碼)不符,會誤導譯者寫出格式錯誤的 hash。改為\n12 碼 hex 樣式並加註計算方式。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(standards): use a realistic 12-char source_hash example. 範例 sour…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-08T02:05:28Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "661a785095cc7a8bd3aad4311d8f9a6875fce623",
          "body": "…. 為翻譯同步檢查加入 source_hash 內容漂移偵測。\n\nThe translation-sync check compared only frontmatter version numbers, so a\ntranslation could claim `source_version: X / status: current` while its body\nhad drifted — exactly how the stale 689-line zh-CN MAINTENANCE.md passed for\nmonths. Worse, get_source_version ret\n[…]\n不需 node),\n涵蓋相符/不符/謊言無法過關/缺 hash/git 缺失。\n\n刻意維持 advisory(非 exit 1):檢查立即攤出既有 95 檔內容漂移、609 檔缺\nsource_hash——這是先前完全隱形的翻譯債。待清償後再議是否升級為硬擋。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(i18n): add source_hash drift detection to translation-sync check…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-08T01:52:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f1b7afc4141fe4f9948e048ec4fef6cb4195cc86",
          "body": "…as stale 689-line legacy guide). 對齊 zh-CN 維護指南至現行結構。\n\nzh-CN/MAINTENANCE.md was a 689-line pre-v2.0.0 standalone guide that was never\ntrimmed when the EN/zh-TW versions were reduced to pointer docs (v2.0.0 merge +\nv5.1.1 DEC-047 migration). Its frontmatter falsely claimed source_version 1.1.0\n/ stat\n[…]\nCE 的簡體翻譯取代(含 XSPEC-072/DEC-045 bundle 一致性\n章節),frontmatter 與 source_hash(5d0adbbf7d63)正確對齊。三語系現皆\n[CURRENT]。零內容損失——舊 body 即已歸檔的獨立指南。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(i18n): realign zh-CN MAINTENANCE to current pointer structure (w…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-08T01:35:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8c26bff63c3b1a4d41c2a03d495287ee3c8f6a3a",
          "body": "…r sync. 補 parity 中止功能性測試並同步文件 frontmatter。\n\nReview follow-ups on 9b855202/aee46d89:\n- bump-version.bats 14 -> 16: two functional tests plant a rogue .ai.yaml in\n  .standards/ and assert both bump scripts exit 1 on parity drift WITHOUT\n  writing the new version anywhere (closes the grep-only asserti\n[…]\nsource/\n  translation_version 1.1.0、last_synced 2026-07-08、source_hash 5d0adbbf7d63\n  (新 EN 檔的 git blob hash,依 documentation-writing-standards)。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(release): functional parity-abort tests + MAINTENANCE frontmatte…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-08T01:24:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "aee46d897202eeb9c872fbaf4bd1825aaea2252c",
          "body": "…ty note (XSPEC-072 Phase 4.3). 補 bundle 決策流程並改正過時 parity 陳述。\n\nXSPEC-072 Phase 4.3: expand the Bundle-Source Parity section in MAINTENANCE.md\n(EN + zh-TW) with the DEC-045 §6.2 \"adding a new standard\" decision flow, and\ncorrect the now-false statement that bump-version does not auto-run parity —\nit \n[…]\np-version 不自動跑\nparity」的過時陳述——現在會跑(Phase 4.2)。同時記錄本地 pre-commit/pre-push\nhook(Phase 3.2)刻意不做的理由:GHA bundle-parity.yml 加發版閘門已構成雙強制面。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(maintenance): document bundle decision flow + correct stale pari…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-08T01:07:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9b85520275993e4f4e271f78c9d7d15919d000d7",
          "body": "…ripts. 將 parity 閘門與索引重生接進發版腳本。\n\nClose the two release-flow gaps flagged by the XSPEC-072 wiring audit and\nRELEASE-FLOW-TODOS TODO-001. Both bump-version.mjs and bump-version.sh now:\n- Run a pre-flight `prepack -> check:bundle-parity` gate BEFORE mutating any\n  version file, aborting the bump on dri\n[…]\nted | UDS vX」版號戳在直接發版 commit 時不再過期(TODO-001)。\n兩腳本都接(不只 .mjs),避免已棄用但仍可執行的 .sh 繞過閘門。\nbump-version.bats 由 7 條擴充至 14 條,以結構性斷言鎖住兩腳本的接線。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(release): wire bundle-parity gate + docs-index regen into bump sc…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-07T07:59:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "01160038081654a9f07c8a4361f124bd57e88da9",
          "body": "…ether. 一併升級 @commitlint/cli 與 config-conventional 至 21.2.0。\n\nSupersedes dependabot #148 (@commitlint/cli) and #149 (@commitlint/config-conventional). The two are co-versioned (shared @commitlint/types); bumping only one leaves the lockfile out of sync, so the commitlint CI job's `npm ci` fails with\n[…]\n48 與 #149。兩者為同版套件(共享 @commitlint/types),單獨升級任一都會使 lockfile 不一致,導致 commitlint CI 的 npm ci 以 EUSAGE 失敗、單獨合併會讓 main 的 commitlint 轉紅。一併安裝重生一致的 lock。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(deps): bump @commitlint/cli + config-conventional to 21.2.0 tog…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-06T15:37:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9ca72ad993ede0b7778206090ae9a61c7cd699d1",
          "body": "Bumps [globals](https://github.com/sindresorhus/globals) from 17.6.0 to 17.7.0.\n- [Release notes](https://github.com/sindresorhus/globals/releases)\n- [Commits](https://github.com/sindresorhus/globals/compare/v17.6.0...v17.7.0)\n\n---\nupdated-dependencies:\n- dependency-name: globals\n  dependency-versio\n[…]\nrect:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump globals from 17.6.0 to 17.7.0 in /cli (#150)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T15:12:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "75e925a7f105264c4814be630ce76297463acb5c",
          "body": "Bumps [eslint](https://github.com/eslint/eslint) from 10.5.0 to 10.6.0.\n- [Release notes](https://github.com/eslint/eslint/releases)\n- [Commits](https://github.com/eslint/eslint/compare/v10.5.0...v10.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: eslint\n  dependency-version: 10.6.0\n  dependency-\n[…]\nrect:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump eslint from 10.5.0 to 10.6.0 in /cli (#154)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T15:10:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "90224cf32a092c7ff5b42f0b8b8084cbb9941c8a",
          "body": "Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 17.0.7 to 17.0.8.\n- [Release notes](https://github.com/lint-staged/lint-staged/releases)\n- [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/lint-staged/lint-staged/compar\n[…]\nrect:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump lint-staged from 17.0.7 to 17.0.8 in /cli (#152)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T15:10:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "89758b196bd7c5366a15c6d54340933deef68943",
          "body": "Bumps [tsx](https://github.com/privatenumber/tsx) from 4.22.4 to 4.23.0.\n- [Release notes](https://github.com/privatenumber/tsx/releases)\n- [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs)\n- [Commits](https://github.com/privatenumber/tsx/compare/v4.22.4...v4.23.0)\n\n--\n[…]\nrect:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump tsx from 4.22.4 to 4.23.0 (#151)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T15:10:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b9431eb6f8111e4800aac581618ff6f9e939d89f",
          "body": "Bumps [opencc-js](https://github.com/nk2028/opencc-js) from 1.3.1 to 1.4.0.\n- [Release notes](https://github.com/nk2028/opencc-js/releases)\n- [Changelog](https://github.com/nk2028/opencc-js/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/nk2028/opencc-js/compare/v1.3.1...v1.4.0)\n\n---\nupdated-\n[…]\nrect:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump opencc-js from 1.3.1 to 1.4.0 (#146)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T14:33:26Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "994300209c3669f7d95ecb1f35aaaccfb7eaa7c2",
          "body": "Bumps [ora](https://github.com/sindresorhus/ora) from 9.4.0 to 9.4.1.\n- [Release notes](https://github.com/sindresorhus/ora/releases)\n- [Commits](https://github.com/sindresorhus/ora/compare/v9.4.0...v9.4.1)\n\n---\nupdated-dependencies:\n- dependency-name: ora\n  dependency-version: 9.4.1\n  dependency-ty\n[…]\nirect:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump ora from 9.4.0 to 9.4.1 in /cli (#147)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-06T13:54:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8388b16310b71047f548020b5e6f3b2dad8669d8",
          "body": "…low e2e green. 補齊 3 個缺漏的 core 文件與 registry 漂移;init-flow e2e 轉綠。\n\nfeature-discovery-standards / multi-environment-e2e-testing / push-standards had .ai.yaml + registry entries but no core/*.md (pre-existing since before 5.17.0), failing init-flow e2e (2 tests) and standards-sync (3 WARN). Backfilled \n[…]\nbundled 已同步。Gates:init-flow e2e 28/28、standards-sync 乾淨、registry 0 error、bundle-parity 181=181、cli unit 2312 綠。順帶收 6.0.0 後 SECURITY.md 支援版本表重生成。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(standards): backfill 3 missing core docs + registry drift; init-f…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-06T07:25:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5aadb8645f3646164f4bb0a035737ffdb42e3253",
          "body": "… migration guide. 6.0.0 發版——移除已棄用標準/命令、新增 v6 遷移指南。\n\nBREAKING CHANGE: removes 8 deprecated .ai.yaml standard stubs (agent-communication-protocol, agent-dispatch, branch-completion, change-batching-standards, execution-history, pipeline-integration-standards, workflow-enforcement, workflow-state-prot\n[…]\n、同步 zh-TW/zh-CN CHANGELOG、清死 i18n key 與殘留命令提示、修過時文件計數。Gates:registry-completeness/bundle-parity(181=181)/docs-index/bats 111/cli vitest 2312 全綠。\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release)!: 6.0.0 — remove deprecated standards/commands, add v6…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-06T06:16:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e2768ebc739fe695b220ad0d1a2b205e7d69eb5c",
          "body": "…增至未發布區。\n\nCapture the three incident-sourced standard additions merged in PR #145 into the\npending 6.0.0 [Unreleased] batch, so the eventual major release changelog is complete.\n\n把 PR #145 併入的三項事故導出標準新增記入待發布 6.0.0 批次,使最終 major 發版 changelog 完整。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(changelog): add #138 R2/R3 + #142 + #143 to [Unreleased]. 補三項標準新…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-01T05:30:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3987a52611ac3a06b7fce76327c8986bf6b213ac",
          "body": "…R2/R3, #142, #143). 補三項事故導出的標準新增。 (#145)\n\nThree standards gain language-agnostic patterns surfaced by real migration/ops incidents,\neach with full three-way sync (core .md + ai/standards .ai.yaml + zh-TW mirror).\n\n- versioning 1.4.0 → 1.5.0 (#138 R2/R3): git-height–derived versioning for polyglot/.\n[…]\ning、registry completeness、reference-sync);\n標準已存在故無 registry 結構變更。\n\nCo-authored-by: AlbertHsu <AsiaOstrich@users.noreply.github.com>\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(standards): add three incident-sourced standard additions (#138 …",
          "author_name": "AsiaOstrich",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-07-01T05:21:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "752b3f7584602e515ae51a23b45539135c581760",
          "body": "…format + serialization-format parity (XSPEC-306). behavior-snapshot 比對保真度——ignore 值不 ignore 格式 + 序列化格式對等(XSPEC-306)。\n\nA differential oracle (golden master / parity) that compares too loosely silently normalizes away the very divergences it exists to catch. Field evidence: a PHP→C#/SQLite→SQL Server\n[…]\ns-sync 與 check-translation-sync(zh-TW + zh-CN)exit 0,兩目標檔 CURRENT;cli test:fast 綠(3113 passed)。與 XSPEC-284 R6 同原則、作用於 oracle/序列化層。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(core): behavior-snapshot comparison fidelity — ignore value not …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-28T02:32:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0a8e63a32d727d1c183badf5730bd35b6a9e22ea",
          "body": "…ation tests (XSPEC-284 R4/R6). 新增非 HTTP 隱含規則掃描 + 編碼/聚合遷移測試(XSPEC-284 R4/R6)。\n\nCross-language rewrites and cross-DB migrations systematically drop logic that lives off the HTTP path or in dialect-specific data semantics. Two real incidents (#134 SMS PHP→.NET; a PHP→C#/SQLite→SQL Server rewrite) land\n[…]\nreverse-engineering 誠實保留 stale 標記(既有翻譯欠債、advisory 非 blocker)。check-standards-sync 與 check-translation-sync exit 0;cli test:fast 綠。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(core): add non-HTTP implicit-rule scan + encoding/aggregate migr…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-27T16:20:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "541dd887db2e00eb0d5337b72c0132afd3752761",
          "body": "…sitives in hook-stats analyzer. 修正 hook-stats 分析器將 always-on 標準誤報為死標準。\n\nThe hook-stats analyzer loaded every .standards/*.ai.yaml as the candidate set\nand flagged any standard absent from matched_standards as \"Never matched ⚠️\"\nwith a \"add trigger keywords\" suggestion. But inject-standards.js skips\n[…]\nest.json 的 domains['always-on'],將 always-on 未命中標準單獨列出,\n並從死標準候選與建議中排除。把分類邏輯重構為可測的純函式,並加 main() 守衛使模組可\n單元測試。實作跨專案 XSPEC-301 Phase 1。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(scripts): exclude always-on standards from dead-standard false po…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-25T04:41:57Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4e9af145bee3733224262baef5cea2b88ae9f73e",
          "body": "…eading to 6.0.0). 回填 [Unreleased](92 個 5.17.0 後 commit,朝 6.0.0)。\n\nThe [Unreleased] section was empty while 92 commits accumulated on main since\nthe v5.17.0 tag (2026-06-08). Backfilled it thematically (Keep a Changelog)\nso the eventual major release is not a 92-commit archaeology dig. The batch\ninc\n[…]\n切任何 release,\n僅 changelog 衛生。\n\n此事由一次 uds audit 帶出(其 findings 全是已知假陽性——audit 修復\n#115/#125 已合併但晚於 5.17.0 tag 故未發布);真訊號是累積中的未發布 major。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(changelog): backfill [Unreleased] from 92 post-5.17.0 commits (h…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-24T07:55:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ddde6d8e93d4cd3c47ff20657402220532644913",
          "body": "…6. ci-cd-assistant 新增 CI 作業編排模式(源自 UDS #126)。\n\nRoutes the UDS #126 ci-cd-pipeline proposal to the ci-cd-assistant skill\n(its correct home) rather than the deprecated pipeline-integration-standards.\nAdds a \"CI Job Orchestration Patterns\" section covering five recurring\npatterns, each with a platform\n[…]\nJenkins 對照表\n與反模式:觸發分離、共享資源序列化、變更偵測閘控、諮詢 vs 閘控作業、\n以及 npm ci EUSAGE 排錯。雙語 SKILL.md + zh-TW + zh-CN 同步更新。\n追蹤於 dev-platform XSPEC-300。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(ci-cd-assistant): add CI Job Orchestration Patterns from UDS #12…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-24T07:30:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0da03773e655098d3db2e182dd78888d277e35f8",
          "body": "…copies + ship user-journey-testing. 修復 bundle⇄source 對等 — 同步 25 份自我採用副本並補完 user-journey-testing 出貨。\n\nThe Bundle ⇄ Source Parity gate had been red on main since 2026-06-19. Two\ndrifts caused it:\n\n1. Reverse drift (25 standards): standards added to canonical ai/standards/\n   (and shipped in the bundl\n[…]\n189)、standards-sync exit 0\n(user-journey-testing 三層全 OK)、translation-sync zh-TW 146/146 core 全翻譯\n(MAJOR=0)、check.test.js 22/22 通過。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(standards): restore bundle⇄source parity — sync 25 self-adoption …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-24T06:11:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "66460f05c69663aa3b38ba6163f23c677d687852",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(ci): bump actions/checkout from 6 to 7 (#135)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-24T05:51:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1aa9593754bad9db836b7d209530c4b2367330f5",
          "body": "…ngle sources of truth. 將 API 版本化與棄用整併至單一真實來源。\n\nPer XSPEC-298 R8 / UDS #126, api-versioning is not promoted to a new standard\n(it overlaps existing standards by >=30%, triggering admission Criterion 3);\ninstead the duplicated and scattered content is folded into the standards that\nown each concern, \n[…]\n,與 6 階段 Sunset 時間線(公開 API 預設節奏)及版本平行期調和(取較長者)。\n  不再有兩處對同一問題給不同數字。\n- 四層同步:ai/standards + .standards + zh-TW(模範翻譯)已更新;zh-CN 誠實標記 stale\n  (已知翻譯債)。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(standards): Consolidate API versioning & deprecation into si…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-23T16:39:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5b008fa2b6f7ddc8776b4e29ed031b2b3942a6d4",
          "body": "…refs, over-strong MUSTs, zh-CN false sync). 修正 R1 紅隊驗證發現的問題。\n\nTwo verification red-teams reviewed the d6a4d37 R1 change and found real defects.\nFixes:\n\nEN (core/versioning.md):\n- Dangling forward-references: \"lives in / see deployment-standards (build-identity\n  verification)\" and container-image d\n[…]\n MUST NOT 移除、補認 semantic-release、過度概括縮減、橋接 Release Process、補\nVersion History;zh-TW 鏡像;zh-CN 還原(原為部分殘本,先前被謊報 1.3.0/current,現誠實標落後)。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(versioning): Fix R1 issues from verification red-team (dangling …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-23T07:51:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d6a4d37f065b51c062cf46763a2025b89537aca4",
          "body": "…adata discriminator caveat (v1.3.0). 新增部署版本身分節 + build-metadata 區分器警示。\n\nImplements XSPEC-298 R1 (core invariant) in the versioning standard. Two-red-team\nbrainstorm of UDS #138 reframed the incident (multiple behaviorally-different\nhotfix builds under the same X.Y.Z) into a real standard gap:\n\n- Re\n[…]\n新增「部署版本身分」節\n(不變量錨 artifact 非部署動作,修正會誤殺 rollback 的錯誤錨點;自動強制;不可變 artifact/\nendpoint 以交叉引用置於對應標準)。EN 1.3.0 + zh-TW/zh-CN 三方同步、gate 綠。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(versioning): Add Deployment Version Identity section + build-met…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-23T07:27:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "014bfb35b73ec345d9b45a7b09f64cdd55bfb4bd",
          "body": "Bumps [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) from 4.1.8 to 4.1.9.\n- [Release notes](https://github.com/vitest-dev/vitest/releases)\n- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)\n- [Commits](https://github.com/vitest-\n[…]\nrect:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump @vitest/coverage-v8 from 4.1.8 to 4.1.9 in /cli (#137)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-23T06:33:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fcc5c2c0f96bad85f2a1d80b784bb3d592c1e044",
          "body": "Bumps [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) from 4.1.8 to 4.1.9.\n- [Release notes](https://github.com/vitest-dev/vitest/releases)\n- [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md)\n- [Commits](https://github.com/vitest-dev/vitest/commits\n[…]\nrect:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump vitest from 4.1.8 to 4.1.9 in /cli (#136)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-23T06:32:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "eea8919a8fdb6091529f56c6ef29da56f37eeec8",
          "body": "… /brainstorm 實作 BQS v1 品質契約 v4。\n\nImplements XSPEC-296 (Brainstorm Quality Standard, BQS v1), upgrading the\n/brainstorm skill from v3 to v4. BQS is a four-layer x timeline quality\ncontract layered additively on v3 — no v3 flag or mechanism is removed.\n\n- Layer 0 intent (explore/exploit, modulates D2\n[…]\nt_synced 2026-06-22。翻譯/i18n 檢查:\nzh-TW 與 zh-CN exit 0、MAJOR 0;brainstorm SKILL/guide CURRENT,\nskill-next-steps 與 AI-behavior 覆蓋率不變。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(skills): implement BQS v1 quality contract for /brainstorm v4. 為…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-22T14:10:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ab6eb35d91b54dfd0c0cd24f7330fcbb14c619fc",
          "body": "… + fix lint logic. 收斂 T5 AC 註解為 canonical 合併標籤並修正 lint 邏輯.\n\nThe T5 advisory in check:naming-refs could never go green: its logic flagged\nany coexistence of @AC/@SPEC and of the kebab/snake key spellings as \"mixed\".\nBut acceptance-criteria-traceability.md defines the canonical annotation AS the\ncomb\n[…]\ngrity /\ndocs:locale-coverage / check-translation-sync)與基線逐位元相同;既有的 22 個\n範本示意 dangling advisory 與 integration-commands 失敗屬無關項目、未觸動。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(standards): converge T5 AC annotations to canonical combined tag…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-21T13:43:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "47bc09ffaed88c4878d296546631bf93fb314100",
          "body": "… 55/51). 更新 integration 對應文件 intro 的過時總數(25/17 → 55/51).\n\nThe github-copilot and opencode skills-mapping guides opened with \"Claude Code\nprovides 25 skills with 17 slash commands\" — a stale snapshot (the mapping\ntables already carry 64/85 rows). Updated to the current totals (55 skills, 51\nslash co\n[…]\nprovides 25\nskills with 17 slash commands」——過時快照(對應表本身已有 64/85 列)。更新為現行\n總數(55 skills、51 slash commands),兩個 integration 的 EN + zh-TW + zh-CN 同步。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: update stale UDS totals in integration mapping intros (25/17 ->…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-20T12:50:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3948efb4f99aba201af0f948f284aea927305bf1",
          "body": "…mmands (49->51). 重生 CHEATSHEET/FEATURE-REFERENCE 納入 2 個新命令(49→51).\n\nVerifying count consistency across docs/user surfaced that CHEATSHEET's Slash\nCommands table still listed 49 — it was last generated in the W5 step, BEFORE W4\nadded the /journey-test and /skill-builder command files (commit order: \n[…]\nME stats、不含這兩份文件。改跑\n正確產生器(generate-usage-docs.mjs);CHEATSHEET + FEATURE-REFERENCE(EN +\nzh-TW + zh-CN)現列 51 個斜線命令。表格 parity 一致;docs-integrity 綠。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: regenerate CHEATSHEET/FEATURE-REFERENCE to include the 2 new co…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-20T06:41:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "fb53ca7ea984c78e7f9dfe0b7df709f695489288",
          "body": "… COMMANDS-INDEX 的 /guide 補上分類(原為 uncategorized).\n\nVerifying the regenerated COMMANDS-INDEX surfaced one gap: /guide fell to\n\"uncategorized\" because guide.md is intentionally excluded from COMMAND-INDEX.json\n(and its integration-commands-sync test treats guide as a meta command). /guide\nis still a r\n[…]\nY_OVERRIDE(guide → reference),而非加進\nCOMMAND-INDEX.json——以保留 sync 測試契約。51 命令全部分類完成、無 uncategorized。\nsync 測試 11/11、check-index 與 docs-integrity 綠。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(docs): categorize /guide in COMMANDS-INDEX (was uncategorized). 為…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-20T06:30:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d8927748a27fd7872f15935d8961f1ab9d35f514",
          "body": "…mapping. COMMANDS-INDEX 改從命令檔產生,不再用 per-skill 對應.\n\nCOMMANDS-INDEX listed one row per skill using the skill folder name as the\ncommand (e.g. /journey-test-assistant, /documentation-guide) — wrong names, and\na \"55 unique commands\" count that conflicted with the slash_commands stat (51).\nRoot cause: t\n[…]\nory | Description;51 命令,與 slash_commands 統計一致。\nskill↔命令↔tier 對照仍在 SKILLS-INDEX(skill 視角與命令視角乾淨分離)。\ncheck-index + docs-integrity 綠;scripts 測試通過。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(docs): generate COMMANDS-INDEX from command files, not per-skill …",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-20T06:22:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "229398e0c3f45b29106f7787825d2f427d4a4953",
          "body": "… 51. 自動推導 slash_commands 統計(策展規則);48 → 51.\n\nThe slash_commands stat was a hand-maintained static value in the manifest that\nsync-manifest never recomputed, so it silently drifted (was 48 while the actual\ncount had grown). Established a curation rule: slash_commands = number of\n`/command` definition\n[…]\n述「55 unique commands」屬不同的 per-skill 度量(每 skill\n一命令、部分以 skill 資料夾名標示);該索引產生器是另一獨立校正,與此發布統計分開\n追蹤。docs-integrity 綠;integration-commands-sync 測試通過。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(manifest): auto-derive slash_commands stat (curation rule); 48 ->…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-20T04:07:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "32973c654dedb4848f3e34967fbe1bc297e2289e",
          "body": "… / tiers 15-28-12. 校正使用者文件 skill 計數至權威值 55/tier 15-28-12.\n\nStale \"54 skills\" prose and an outdated Tier breakdown (13/27/14) lingered in\nREADME and user docs while the manifest, README stats table, and the\nauto-generated SKILLS-INDEX already state 55 skills with tiers 15/28/12.\nReconciled all hand-\n[…]\n。\n- GLOSSARY + FAQ 的 Tier 計數 13/27/14 → 15/28/12(總和現為 55),三語同步。\n歷史記錄(CHANGELOG、.github/RELEASE_*)不動。斜線命令數(48)與 manifest 本就\n一致。docs-integrity 綠。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: reconcile skill counts across user docs to the authoritative 55…",
          "author_name": "AlbertHsu",
          "author_login": "AsiaOstrich",
          "committed_at": "2026-06-20T03:53:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 100,
      "commits_last_year": 1125,
      "latest_release_at": "2026-07-18T11:27:48Z",
      "latest_release_tag": "v6.1.1",
      "releases_from_tags": false,
      "days_since_last_push": 2,
      "active_weeks_last_year": 35,
      "days_since_latest_release": 8,
      "mean_days_between_releases": 5.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 85,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "universal-dev-standards",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "documentation",
            "standards",
            "cli",
            "developer-tools",
            "best-practices"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/universal-dev-standards",
          "is_deprecated": false,
          "latest_version": "6.1.1",
          "repository_url": "https://github.com/AsiaOstrich/universal-dev-standards",
          "versions_count": 133,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1172,
          "first_published_at": "2025-12-30T08:59:51.476000Z",
          "latest_published_at": "2026-07-18T11:28:50.247000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 10,
      "stars": 70,
      "watchers": 1,
      "fork_history": {
        "days": [
          {
            "date": "2025-12-26",
            "count": 1
          },
          {
            "date": "2026-01-05",
            "count": 1
          },
          {
            "date": "2026-01-10",
            "count": 1
          },
          {
            "date": "2026-01-26",
            "count": 1
          },
          {
            "date": "2026-02-05",
            "count": 1
          },
          {
            "date": "2026-02-12",
            "count": 1
          },
          {
            "date": "2026-02-14",
            "count": 1
          },
          {
            "date": "2026-02-15",
            "count": 1
          },
          {
            "date": "2026-04-16",
            "count": 1
          },
          {
            "date": "2026-06-01",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 10,
        "total_forks": 10
      },
      "star_history": null,
      "open_issues_and_prs": 8
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples",
        "recipes"
      ],
      "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": 160447,
      "source_files_sampled": 330,
      "oversized_source_files": 5,
      "agent_instruction_files": [
        "CLAUDE.md",
        "integrations/aider/AGENTS.md",
        "integrations/claude-code/CLAUDE.md",
        "integrations/cline/.clinerules",
        "integrations/codex/AGENTS.md",
        "integrations/continue-dev/AGENTS.md",
        "integrations/cursor/.cursorrules",
        "integrations/gemini-cli/GEMINI.md",
        "integrations/opencode/AGENTS.md",
        "integrations/openspec/AGENTS.md",
        "integrations/roo-code/.clinerules",
        "integrations/spec-kit/AGENTS.md",
        "integrations/windsurf/.windsurfrules",
        "locales/zh-CN/CLAUDE.md",
        "locales/zh-CN/integrations/codex/AGENTS.md",
        "locales/zh-CN/integrations/gemini-cli/GEMINI.md",
        "locales/zh-CN/integrations/opencode/AGENTS.md",
        "locales/zh-CN/integrations/openspec/AGENTS.md",
        "locales/zh-CN/integrations/spec-kit/AGENTS.md",
        "locales/zh-TW/CLAUDE.md",
        "locales/zh-TW/integrations/codex/AGENTS.md",
        "locales/zh-TW/integrations/gemini-cli/GEMINI.md",
        "locales/zh-TW/integrations/opencode/AGENTS.md",
        "locales/zh-TW/integrations/openspec/AGENTS.md",
        "locales/zh-TW/integrations/spec-kit/AGENTS.md",
        "skills/tools/cline/.clinerules",
        "skills/tools/cursor/.cursorrules",
        "skills/tools/windsurf/.windsurfrules"
      ],
      "agent_instruction_max_bytes": 40735
    },
    "dependencies": {
      "manifests": [
        "cli/package.json",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 44,
        "malicious_count": 0,
        "assessed_package": "npm:universal-dev-standards@6.1.1",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@inquirer/prompts",
          "manifest": "cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.4.2"
        },
        {
          "name": "chalk",
          "manifest": "cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.3.0"
        },
        {
          "name": "commander",
          "manifest": "cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^15.0.0"
        },
        {
          "name": "js-yaml",
          "manifest": "cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.2.1"
        },
        {
          "name": "ora",
          "manifest": "cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.4.0"
        },
        {
          "name": "@asiaostrich/telemetry-client",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.1.0"
        }
      ],
      "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": 4,
        "merged_prs": 80,
        "open_issues": 4,
        "closed_ratio": 0.926,
        "closed_issues": 50,
        "closed_unmerged_prs": 27
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "AsiaOstrich",
          "commits": 538,
          "avatar_url": "https://avatars.githubusercontent.com/u/19768691?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "bundle-parity.yml",
        "ci.yml",
        "commit-lint.yml",
        "docs-check.yml",
        "publish.yml",
        "release-reminder.yml",
        "scheduled-health.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.js"
      ],
      "has_editorconfig": true,
      "has_linter_config": true,
      "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": 10,
            "reason": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
            "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/30 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": 10,
            "reason": "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": 10,
            "reason": "30 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10",
            "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": 5,
            "reason": "dependency not pinned by hash detected -- score normalized to 5",
            "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": 10,
            "reason": "security policy file 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": 1,
            "reason": "9 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "da07bc43271dbf237ee2ee63f590dc4c7d3ea179",
        "ran_at": "2026-07-27T04:30:20Z",
        "aggregate_score": 4.9,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-24T22:33:07Z",
      "oldest_open_prs": [
        {
          "number": 167,
          "created_at": "2026-07-23T10:14:27Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 169,
          "created_at": "2026-07-24T22:33:28Z",
          "last_comment_at": "2026-07-24T22:33:29Z",
          "last_comment_author": "dependabot"
        },
        {
          "number": 170,
          "created_at": "2026-07-24T22:33:36Z",
          "last_comment_at": "2026-07-24T22:33:36Z",
          "last_comment_author": "dependabot"
        },
        {
          "number": 171,
          "created_at": "2026-07-24T22:33:40Z",
          "last_comment_at": "2026-07-24T22:33:41Z",
          "last_comment_author": "dependabot"
        }
      ],
      "last_merged_pr_at": "2026-07-20T08:50:50Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 155,
          "created_at": "2026-07-06T07:48:38Z",
          "last_comment_at": "2026-07-20T08:29:51Z",
          "last_comment_author": "AsiaOstrich"
        },
        {
          "number": 165,
          "created_at": "2026-07-18T13:28:45Z",
          "last_comment_at": "2026-07-20T08:29:15Z",
          "last_comment_author": "AsiaOstrich"
        },
        {
          "number": 166,
          "created_at": "2026-07-20T07:29:59Z",
          "last_comment_at": "2026-07-20T08:29:52Z",
          "last_comment_author": "AsiaOstrich"
        },
        {
          "number": 168,
          "created_at": "2026-07-24T01:10:49Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/AsiaOstrich/universal-dev-standards",
    "host": "github.com",
    "name": "universal-dev-standards",
    "owner": "AsiaOstrich"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 69,
      "inputs": {
        "security": 59,
        "vitality": 93,
        "community": 53,
        "governance": 53,
        "engineering": 84
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 93,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 88,
            "inputs": {
              "commits_last_year": 1125,
              "human_commit_share": 0.85,
              "days_since_last_push": 2,
              "active_weeks_last_year": 35
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "35/52 weeks with commits",
                "points": 24.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 35
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "1125 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 1125
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "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": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "v6.1.1",
              "releases_from_tags": false,
              "days_since_latest_release": 8,
              "mean_days_between_releases": 5.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 8 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~5.9 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 5.9
                    }
                  }
                ],
                "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": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 3,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 3 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 3
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 53,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "at_risk",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 38,
            "inputs": {
              "forks": 10,
              "stars": 70,
              "watchers": 1,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "70 stars",
                "points": 29.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 70
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "10 forks",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 71,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "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": 18,
                "status": "met",
                "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": 6.3,
                "status": "met",
                "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": 51,
            "inputs": {
              "packages": [
                "universal-dev-standards"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 1172
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "1,172 downloads/month across npm",
                "points": 40.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 1172,
                      "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": "moderate",
        "name": "Sustainability & Governance",
        "value": 53,
        "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": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 72,
            "inputs": {
              "merged_prs": 80,
              "open_issues": 4,
              "closed_issues": 50,
              "issue_closed_ratio": 0.926,
              "closed_unmerged_prs": 27
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "93% of issues closed",
                "points": 43.3,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 93
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "80/107 decided PRs merged",
                "points": 28.6,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 80,
                      "decided": 107
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "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": 47,
            "inputs": {
              "followers": 8,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "AsiaOstrich",
              "public_repos": 13,
              "account_age_days": 3703
            },
            "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": "8 followers of AsiaOstrich",
                "points": 6.9,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 8,
                      "login": "AsiaOstrich"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "13 public repos, account ~10 yr old",
                "points": 20.3,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 13
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 10
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "universal-dev-standards"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "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 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "133 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 133
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 84,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "7 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 7
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "eslint.config.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "ai-collaboration",
                "best-practices",
                "claude-code",
                "code-review",
                "coding-standards",
                "commit-conventions",
                "conventional-commits",
                "developer-tools",
                "development-standards",
                "devops",
                "documentation",
                "git-workflow",
                "quality-assurance",
                "semantic-versioning",
                "skills",
                "software-engineering",
                "spec-driven-development",
                "testing-standards"
              ],
              "has_wiki": false,
              "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": "18 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 59,
        "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": 49,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 4.9
            },
            "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 1 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "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/30 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": "update tool detected",
                "points": 7.5,
                "status": "met",
                "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": "30 commit(s) and 26 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "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 5",
                "points": 2.5,
                "status": "partial",
                "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 detected",
                "points": 5,
                "status": "met",
                "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": "9 existing vulnerabilities detected",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:universal-dev-standards@6.1.1 runtime dependency closure — what installing the published package pulls in — 44 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:universal-dev-standards@6.1.1",
                  "assessed": 44
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 44,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 44,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "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": "moderate",
        "name": "AI Readiness",
        "value": 66,
        "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": 1,
              "agent_instruction_files": [
                "CLAUDE.md",
                "integrations/aider/AGENTS.md",
                "integrations/claude-code/CLAUDE.md",
                "integrations/cline/.clinerules",
                "integrations/codex/AGENTS.md",
                "integrations/continue-dev/AGENTS.md",
                "integrations/cursor/.cursorrules",
                "integrations/gemini-cli/GEMINI.md",
                "integrations/opencode/AGENTS.md",
                "integrations/openspec/AGENTS.md",
                "integrations/roo-code/.clinerules",
                "integrations/spec-kit/AGENTS.md",
                "integrations/windsurf/.windsurfrules",
                "locales/zh-CN/CLAUDE.md",
                "locales/zh-CN/integrations/codex/AGENTS.md",
                "locales/zh-CN/integrations/gemini-cli/GEMINI.md",
                "locales/zh-CN/integrations/opencode/AGENTS.md",
                "locales/zh-CN/integrations/openspec/AGENTS.md",
                "locales/zh-CN/integrations/spec-kit/AGENTS.md",
                "locales/zh-TW/CLAUDE.md",
                "locales/zh-TW/integrations/codex/AGENTS.md",
                "locales/zh-TW/integrations/gemini-cli/GEMINI.md",
                "locales/zh-TW/integrations/opencode/AGENTS.md",
                "locales/zh-TW/integrations/openspec/AGENTS.md",
                "locales/zh-TW/integrations/spec-kit/AGENTS.md",
                "skills/tools/cline/.clinerules",
                "skills/tools/cursor/.cursorrules",
                "skills/tools/windsurf/.windsurfrules"
              ],
              "agent_instruction_max_bytes": 40735
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md, integrations/aider/AGENTS.md, integrations/claude-code/CLAUDE.md, integrations/cline/.clinerules, integrations/codex/AGENTS.md, integrations/continue-dev/AGENTS.md, integrations/cursor/.cursorrules, integrations/gemini-cli/GEMINI.md, integrations/opencode/AGENTS.md, integrations/openspec/AGENTS.md, integrations/roo-code/.clinerules, integrations/spec-kit/AGENTS.md, integrations/windsurf/.windsurfrules, locales/zh-CN/CLAUDE.md, locales/zh-CN/integrations/codex/AGENTS.md, locales/zh-CN/integrations/gemini-cli/GEMINI.md, locales/zh-CN/integrations/opencode/AGENTS.md, locales/zh-CN/integrations/openspec/AGENTS.md, locales/zh-CN/integrations/spec-kit/AGENTS.md, locales/zh-TW/CLAUDE.md, locales/zh-TW/integrations/codex/AGENTS.md, locales/zh-TW/integrations/gemini-cli/GEMINI.md, locales/zh-TW/integrations/opencode/AGENTS.md, locales/zh-TW/integrations/openspec/AGENTS.md, locales/zh-TW/integrations/spec-kit/AGENTS.md, skills/tools/cline/.clinerules, skills/tools/cursor/.cursorrules, skills/tools/windsurf/.windsurfrules",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md, integrations/aider/AGENTS.md, integrations/claude-code/CLAUDE.md, integrations/cline/.clinerules, integrations/codex/AGENTS.md, integrations/continue-dev/AGENTS.md, integrations/cursor/.cursorrules, integrations/gemini-cli/GEMINI.md, integrations/opencode/AGENTS.md, integrations/openspec/AGENTS.md, integrations/roo-code/.clinerules, integrations/spec-kit/AGENTS.md, integrations/windsurf/.windsurfrules, locales/zh-CN/CLAUDE.md, locales/zh-CN/integrations/codex/AGENTS.md, locales/zh-CN/integrations/gemini-cli/GEMINI.md, locales/zh-CN/integrations/opencode/AGENTS.md, locales/zh-CN/integrations/openspec/AGENTS.md, locales/zh-CN/integrations/spec-kit/AGENTS.md, locales/zh-TW/CLAUDE.md, locales/zh-TW/integrations/codex/AGENTS.md, locales/zh-TW/integrations/gemini-cli/GEMINI.md, locales/zh-TW/integrations/opencode/AGENTS.md, locales/zh-TW/integrations/openspec/AGENTS.md, locales/zh-TW/integrations/spec-kit/AGENTS.md, skills/tools/cline/.clinerules, skills/tools/cursor/.cursorrules, skills/tools/windsurf/.windsurfrules"
                    }
                  }
                ],
                "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": "85 of 85 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 85,
                      "sampled": 85
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 66,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [],
              "agent_commit_share": 0.8,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.15
            },
            "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": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "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": "80 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 80,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "15 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 15,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 5",
                "points": 5,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 160447,
              "source_files_sampled": 330,
              "oversized_source_files": 5
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "5/330 source files over 60KB",
                "points": 54.2,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 330,
                      "oversized": 5
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples",
                "recipes"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples, recipes",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples, recipes"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "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": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T04:30:29.065601Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/AsiaOstrich/universal-dev-standards.svg",
  "full_name": "AsiaOstrich/universal-dev-standards",
  "license_state": "custom",
  "license_spdx": null
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаnpm.