Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-23 13:21 UTC

smallOpenSource / banker_plugins

banker_plugins

JavaScript · PythonMIT★ 2 estrellas⑂ 0 forksdesde jun 2026Ver en GitHub ↗

smallOpenSource/banker_plugins tiene un índice de salud de 34 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es AI Readiness (44/100) y la más baja, Security (31/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

34
global / 100
En riesgo

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

34
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

smallOpenSourceOrganización
0 seguidores11 repositorios públicosdesde jun 2025

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npm@kaydash9999/banker-plugins0.10.0228211hace 5 díasclaude-codeclaudecodexcodex-clipluginskillsmarketplace

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

32En riesgo · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
2.8/36Cadencia de commits — 4/52 semanas con commits
14/18Volumen de commits — 35 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year35
human_commit_share1
days_since_last_push5
active_weeks_last_year4
Cómo se puntúa
0/27Publica versiones — sin versiones publicadas
0/36Recencia de las versiones — sin versiones
0/27Cadencia de publicación — sin versiones
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

32En riesgo · 18% del índice global
Cómo se puntúa
0/60Estrellas — 2 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars2
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
44.8/80Descargas mensuales — 2282 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packages@kaydash9999/banker-plugins
dependents
ecosystemsnpm
total_downloads
monthly_downloads2282
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

34En riesgo · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
0/38.3Aceptación de PR — sin PR decididos o sin datos
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs0
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues, Aceptación de PR. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
0/25Alcance del propietario — 0 seguidores de smallOpenSource
10.1/25Trayectoria — 11 repos públicos, cuenta de ~1 años
Datos de entrada utilizados
followers0
owner_typeOrganization
is_verified
owner_loginsmallOpenSource
public_repos11
account_age_days402
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 5 días
20/20Historial de versiones — 11 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packages@kaydash9999/banker-plugins
ecosystemsnpm
any_deprecatedno
min_days_since_publish5

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

38En riesgo · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 1 flujo(s) de trabajo
0/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_testsno
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

50Moderado
Cómo se puntúa
30/30README
0/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dirno
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

31En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — sin datos
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.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — sin datos
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,1
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, packaging, signed_releases. Los pesos restantes se han renormalizado.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

44En riesgo · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — skills/humanizer/AGENTS.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 34 de 35 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,971
agent_instruction_filesskills/humanizer/AGENTS.md
agent_instruction_max_bytes1639
Cómo se puntúa
0/18Arranque con un solo comando
0/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
0/10Entorno reproducible
10/10Práctica demostrada con agentes — 34 de los últimos 35 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_testsno
lockfiles
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0,971
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
0/45Código verificable por tipos — JavaScript sin configuración de verificación de tipos
55/55Tamaños de archivo manejables — 0/26 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageJavaScript
largest_source_bytes31.600
source_files_sampled26
oversized_source_files0

Datos clave

2estrellas de GitHub
1contribuidores
35commits en los últimos 12 meses
5días desde el último push
0versiones publicadas
1factor bus
0issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

  • 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
  • deps.dev does not index npm:@kaydash9999/banker-plugins@0.10.0; advisories assessed against the repository dependency graph instead

Más detalle

OpenSSF Scorecard 3.1 / 10
3.1agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-23 13:21 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 601,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Python": 43895,
        "JavaScript": 240301
      },
      "pushed_at": "2026-07-18T05:36:56Z",
      "created_at": "2026-06-25T01:46:44Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-18T14:49:06Z",
      "description": "banker_plugins",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript",
        "Python"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "Organization",
      "login": "smallOpenSource",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/216474219?v=4",
      "created_at": "2025-06-16T03:49:31Z",
      "is_verified": null,
      "public_repos": 11,
      "account_age_days": 402
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "c9abde676b4d623e7ed47032ec546780a4fc94a0",
          "body": "개인화 업데이트 알림 데이터(skill-changes.json)를 채우는 scripts/gen-skill-changes.js\n실행이 릴리스마다 필요하나 어떤 자동화에도 안 엮여 있어 잊기 쉬웠다. 유지보수자\n릴리스 체크리스트를 문서화하고, gen-skill-changes 를 \"버전 bump 후·커밋 전\"이라는\n정확한 타이밍과 함께 4번 단계로 박았다. 0.10.0 처럼 skills/ 변경이 0건이면 항목을\n추가하지 않는 것이 정상임도 명시했다.\n\npackage.json files 화이트리스트 밖이라 GitHub 에만 올라가고 npm 패키지에는 안 실린다.\n(publish_npm.sh 에도 마지막-순간 리마인더를 더했으나 그 파일은 gitignored 라 로컬 전용.)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(releasing): 릴리스 절차를 RELEASING.md 로 명문화",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-18T05:34:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e27212a05f0c5fd0e4b371e580cb96dfdde3d95d",
          "body": "- \"워크플로 사용 예시\" 섹션 신설(빠른 시작 뒤·TOC 추가): 상황별 대표 워크플로 10개를\n  언제/무엇 표로 정리(초보자용). ultra-interview·ultra-init·curation·all-in-one·\n  ralph-qa·smart-compact·refresh-readme·summary-wiki·cleansing-memory·ready-compact.\n- 텔레메트리 섹션에 카운팅 워커 공개 엔드포인트 표: /(대시보드)·/stats(JSON)·/health(ok).\n\n10개 스킬 모두 skills/ 에 실재 확인(날조 없음).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(readme): 초보자용 워크플로 사용 예시 표 + 워커 공개 엔드포인트 3개",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-18T04:37:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a3e42229ddac2b1952ba50b2f6c40e30a09564b8",
          "body": "setup 의 별 프롬프트가 Y 입력 시 URL 안내만 하던 것을 실제 star 로 바꾼다.\ngh CLI 인증으로 `gh api -X PUT /user/starred/smallOpenSource/banker_plugins` 호출.\ngh 미설치·미인증·실패 시 이유 고지 + URL 폴백(setup 무손상·자체 timeout·오류삼킴).\nstarRepo 를 require.main 가드 뒤로 export → 주입 spawn 으로 단위테스트(gh없음·성공·실패) 커버.\n\n유닛 117/117·smoke ALL PASS. 실환경 검증: 실제 starRepo() 호출로 저장소 404->204(별 눌림) 전이.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): GitHub 별 프롬프트 Y = 실제 star (oh-my-codex 방식) (0.10.0)",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-18T04:16:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "540b1bbdbc0917d315dcf4531e2c65584ecb920c",
          "body": "새 버전에서 바뀐 스킬 중 이 설치가 실제로 써 본 스킬을 알림에 넣는다(없으면 일반 알림).\n\n- 로컬 used-skills.json: 카운팅 훅이 union 기록(상한 300·중복 무기록·원자적). 절대 미전송 —\n  체크인 페이로드는 여전히 {version, os, counts} 뿐.\n- skill-changes.json(공개 GitHub raw): update-checkin 이 best-effort 무페이로드 GET →\n  캐시 changedSkills. 실패 시 일반 알림 폴백. update-fetch 는 조회 안 함(카운\n[…]\n게시전 표기.\nREADME·CHANGELOG 반영. 버전 0.8.0->0.9.0(sync-version).\n\n독립 critic 리뷰 반영(M1 게시상태 앞서감·M2 표시 게이트 정합). 유닛 114/114·smoke ALL PASS.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(telemetry): 개인화 업데이트 알림 — 써 본 스킬이 바뀌면 알림에 표시 (0.9.0)",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-18T03:54:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "39e8716927ea2ce1ae20e315980b5647e03c489b",
          "body": "이전엔 endpoint 미설정 시 countingActive=false 라 BANKER_TELEMETRY_ENDPOINT env 를 가진 유지보수자 셸만 카운트됐다(사용자 카운팅 0). 유지보수자 Cloudflare Worker 를 DEFAULT_ENDPOINT 로 내장해 endpoint() 가 (거의) 항상 값을 반환 → 신규 설치·업데이트 사용자 전원이 기본으로 익명 체크인, opt-out(BANKER_NO_TELEMETRY / banker telemetry off / config.telemetry=false)으로만 끔. env\n[…]\n/CHANGELOG: 기본 엔드포인트 내장·opt-out 명시.\n- 검증: 유닛 99/99·smoke·sync 0.8.0·세만틱 실측(미설정 -> DEFAULT·countingActive true / opt-out -> false).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(telemetry): 기본 카운팅 엔드포인트 내장 — count-default-on 을 모든 설치에서 활성화",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-17T09:53:32Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6af65cc951fa0521cb1bdc94c9c5c0a11dd1113f",
          "body": "fire-and-forget(opt-in) 텔레메트리를 업데이트-체크 서비스로 피벗(옵션 A). 사용자 승인 count-default-on via serverless + 시간대별 버킷.\n\n- 알림: SessionStart systemMessage 로 npm 최신버전 고지(기본-on·opt-out BANKER_NO_UPDATE_CHECK·서버 불요).\n- 카운팅: PostToolUse(Skill)+UserPromptExpansion 두 훅(US-4 라이브 실측·disjoint)이 스킬별×시간대 집계 → update-checkin 이 \n[…]\nsmoke ALL PASS·sync 0.8.0. Architect+Critic 2R 합의 → ralph 빌드 → critic APPROVE(Critical 0 Major 0) → deslop → ultraqa cycle 1 PASS.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(telemetry): 0.8.0 업데이트-체크 서비스 피벗 (옵션 A · count-default-on · 시간대별)",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-17T08:35:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8579f777dd8a5f6a06d2bb308f92af8a5440741f",
          "body": "- README: npm 월 다운로드·GitHub stars 배지\n- setup: GitHub 별 요청 첫 실행 프롬프트(양 런타임·홍보·동의 무관)\n- 익명 집계 텔레메트리 클라이언트(Claude 전용·opt-in 기본 No·지속 식별자 없음·엔드포인트 설정형·비-loopback https 강제·fail-closed): bin/lib/telemetry-config 모듈 + count/flush 훅 + banker telemetry CLI + PRIVACY.md\n- 옵션 B: hooks.json 미배선(inert) — 현재 아무 것\n[…]\n요\n- 법률: EU opt-in 유효 동의 요건 부합; 미국 CCPA·한국 PIPA 검토 미완 → 실수집·게시 보류\n- 검증: 유닛 40/40 · obsidizer 회귀 14/14 · smoke ALL PASS · sync 0.8.0\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(telemetry): 사용량 가시성 — 배지·별 프롬프트 + opt-in 익명 집계 클라이언트(0.8.0)",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-17T03:03:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9a3d01716fe8d8cedd170c46a3f7c57674e8c9bc",
          "body": "- 최상단에 총 구성요소(스킬 48 + 커맨드 2) 명시\n- 의존 라이브러리·연동 참조 나열 -> 표(분류·항목·라이선스·사용 스킬); 사실은 코드와 대조 확인(banker MIT, 재배포 서드파티는 humanizer 단독)\n- 다문장 문단 Markdown hard break 개행 + Codex 설치 안내 문장 분리\n- plugin.json 0.7.0->0.7.1, sync-version 으로 package.json·marketplace.json 전파\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(readme): 구성요소 수 명시 + 라이선스/서드파티 표 재구성 + 개행 가독성 (0.7.1)",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-16T13:45:04Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "92c124ca9250e4c5fdfc6b327c4ba6003d91ca24",
          "body": "…:both·신규 6종 CI 발견·version-sync 상주)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Merge feat/ci-test-followups-0.7.0: CI·테스트 인프라 개선 3건 (배열 은퇴→전역 target…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-16T11:23:59Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "30e10327b96fc38e40a61b1b54b1c09332f10d4d",
          "body": "…ion-sync 상주\n\nSTORY1 (scripts/smoke-test.js): nowBoth/newSkills/newSkills05 배열 3개 + 참조 5개를\n매니페스트 직독 전역 target:both 단언 1개로 대체. 배열은 named-membership을 회귀 방어했고\n전역 단언은 universal both를 보장 — per-release 수동갱신 부채 제거. 격리 뮤테이션(49번째\nclaude-only 추가)으로 신규 단언이 no-op 아님을 실증(flip은 copies/installed도 빨개져 비격리).\nnamed-s\n[…]\nkills-lint 연기). 배포 표면·버전(0.7.0) 무변경.\n로컬 검증: smoke 36 + obsidizer 58 pass, yaml 유효, sync-version --check exit 0. 독립 critic APPROVE.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(smoke)+ci: 0.7.0 후속 3건 — 배열 은퇴→전역 target:both, 신규 6종 CI 발견, vers…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-16T11:16:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3fea0a0c9ab515336d269c64da8728ad8414e91a",
          "body": null,
          "is_bot": false,
          "headline": "Merge feat/six-new-skills-0.7.0: 신규 스킬 6종 (0.7.0)",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-16T08:20:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f35ff11f2b3159d02ade4e30ead1b20ccae352ed",
          "body": "ultra-interview · interval-report · summary-wiki · update-banker ·\nrefresh-readme · cleansing-memory. 전부 target:both (42 -> 48, claude-only 0).\n\n배포용 스킬이므로 \"이 저장소에서 재보니 무동작\"류 판정은 설계 근거로 쓰지 않았다.\n사실 주장은 적대적 검증에 걸었고 반증된 것(검증 안 된 표준 번호·법령 API 엔드포인트·\n트래커 이슈 인용·출처 없는 수치)은 그럴듯해도 넣지 않았다.\n\n주요 설계 판단:\n- ultra-i\n[…]\nupdate-banker의 sweep 대상 절반 누락(프롬프트),\n  refresh-readme의 드리프트 예시가 디렉터리 카운트 49를 스킬 수 48로 오기,\n  transform-matrix가 DISPUTED 항목을 확정으로 서술\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(skills): 신규 스킬 6종 (0.7.0) + 매니페스트-디스크 집합 동등성 단언",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-16T06:54:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0fc827d5e54d9e3cb4bc9c83972c9e9df9c6ac41",
          "body": "…, node_modules/, *.tgz\n\n머신 로컬 산출물이 git 에 올라갈 수 있는 실제 구멍 두 개를 막는다.\n\n- **.omx/** — 지금까지 .git/info/exclude 에만 있었다. 그건 이 머신에서만 유효해서,\n  새로 clone 하거나 다른 사람이 받으면 OMX 런타임 상태가 그대로 커밋된다. repo\n  .gitignore 로 승격해 모두에게 적용되게 한다.\n- **.claude/settings.local.json** — ignore 가 아예 없었다(untracked 였을 뿐이라\n  git add -A 한 \n[…]\n새 패턴 4종 실측 ignore 확인 · 추적 파일 중 새로 ignore 된 것 0 ·\n.claude-plugin/ 매니페스트 2개 계속 추적 · 가상 .claude/settings.json 커밋 가능 · smoke ALL PASS.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(gitignore): 배포무관 로컬 산출물 차단 — .omx/, .claude/settings.local.json…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-15T14:26:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0f3f296eccb0dd47f006c057e377ffa081e794ed",
          "body": "ralph Step 7 critic REJECTED -> 전 항목 수정 -> 재검증 APPROVED. 인수 기준은 원래도\n전부 통과했고, 반려 사유는 \"실패가 파괴적이고 조용하면 유용해도 안 쓴다\"를 자기 원칙으로\n내건 스킬이 정확히 그 형태의 결함을 갖고, 그걸 안 한다고 SKILL.md에 적어둔 것이었다.\n\nF1 (필수) 푸터가 깨지지 않은 링크를 조용히 삭제 — 재현됨. renderFooter가 links[]만으로\n  재구성해, links[]에 없는 수기 푸터 링크가 소실됐다(OMC가 쓴 푸터는 links[] ⊇ 푸터라\n  안\n[…]\n4/14 · smoke ALL PASS · 라이브 wiki 복사본에서 PM-1/PM-3/PM-4\n0 · 멱등 byte diff 0 · stray tmp 0 · 라운드트립 phantom 0 · npm 타르볼 test 0/hooks 3.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(obsidizer): critic 반려 6건 + 잔여 3건 정직성·안전성 수정",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-15T13:49:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7071ab8ceacf6e3b326d5166cf242bdeabc1391e",
          "body": "…ime discovery\n\n기존 0.5.0 setup-* 트립와이어(9종 루프)는 손대지 않고 별도 스텝으로만 확장한다.\n\n- paths: skills/obsidizer/** · hooks/** · package.json 추가. 이전엔 manifest/smoke\n  변경에만 걸려 obsidizer 단독 변경이 CI를 트리거하지 못했다.\n- structural: obsidizer 유닛 스위트 2종 실행 + npm 타르볼에 hooks 3파일 동봉 단언\n  (package.json files[]에 \"hooks\"가 빠지면 훅이 npm 사\n[…]\n 훅이 Codex\n  설치에 누출되지 않는지, Claude plugin details가 obsidizer를 열거하는지 단언.\n  둘 다 무인증 경로.\n\nobsidizer는 OS 의존 설치가 없어 새 OS 툴체인 job은 두지 않는다.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: cover obsidizer — paths filter, unit suites, hook packaging, runt…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-15T12:41:46Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3d8148be6163dec4829b2e20a97d1472b02a5a68",
          "body": "승인된 합의 계획(.omc/plans/2026-07-15-obsidizer-skill.md) 구현. 41→42 skills.\n\nv1 범위 — 대상 vault in-place 정규화(export 트리 없음):\n- skills/obsidizer/obsidize.mjs — zero-input 결정성 canonicalizer(obsidian-linter 모델).\n  LLM이 의미 편집을 파일에 직접 한 뒤 마지막 기계 패스로 실행. 결정성은 기계층에만\n  귀속(의미 판단은 Unknown 보고). 원자쓰기(temp+rename) + read\n[…]\ne 31/31 · hook 14/14 · smoke ALL PASS(42) · 라이브 wiki 복사본에서\nPM-1/PM-3/PM-4 grep 전부 0 · 멱등 byte diff 0 · 라운드트립(OMC 파서 재현) phantom 0.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(obsidizer): AI 위키를 Obsidian 지식그래프로 정규화하는 신규 스킬 (0.6.0)",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-15T12:39:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "413f2f09826bd4330716493cd4de77809710fd92",
          "body": "…cancel-in-progress\n\n- app-runtime matrix: [ubuntu-latest, windows-latest, macos-latest] (macos-13 Intel removed).\n  Runtime skill discovery is filesystem+CLI (architecture-agnostic), so Apple Silicon macos-latest\n  substitutes for Intel; GitHub Intel runners are scarce/retiring and were queueing in\n[…]\ngress lets a newer push auto-cancel a prior run stuck on a scarce runner\n  (we lack repo-admin rights to cancel runs via the API).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: drop macOS Intel from runtime-discovery matrix + add concurrency …",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-15T05:32:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1b04afac58c0b5abd5d38e9cd4c6016ed09cdf76",
          "body": "…in/Linux/Mac(+Intel)\n\napp-runtime job (ubuntu-latest, windows-latest, macos-latest, macos-13):\n- installs @openai/codex + @anthropic-ai/claude-code via npm (no login)\n- Codex CLI: banker setup --codex, assert 9 new banker-* skills on disk (dir==name discovery contract), + live `codex debug prompt-i\n[…]\n 9 new skills in the component inventory (no auth)\n\nCloses the app-level (per-runtime) + macOS-Intel gaps flagged in prior report.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(ci): add runtime-discovery matrix — Claude Code + Codex CLI on W…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-15T04:21:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "01ff51ff7cf710c2866919e29242f743f51a23de",
          "body": "- basedpyright-langserver / vscode-json-language-server start a stdio LSP server on --version (no version flag); use `basedpyright --version` (CLI) + `command -v` for langserver existence, in skills/setup-lsp verify AND the CI LSP steps (rocky8/ubuntu/macos)\n- smoke-test: capture claude dry-run stdo\n[…]\non/java/sandbox; windows + harness-factory green. All 4 failures were verify-command/CI-harness issues, not skill install defects.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ci): correct LSP verify commands + smoke claude-absent robustness",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-15T03:34:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ef7dd4c60468851fa84804c0bee8811c72ccc427",
          "body": "…/harness factory + per-OS CI\n\n- 8 env skills (setup-node/python/java/lsp/tmux/pwsh/mcp/sandbox) + harness-factory; all target:both, runtime-aware (Claude=OMC / Codex=OMX)\n- 2-layer: thin setup-* execution units + banker:setup/harness-factory orchestrator (dependency-ordered: lsp→node/python/java, m\n[…]\ntural smoke)\n- security: gitleaks + detect-secrets clean; placeholders only; USER_RESOURCES (holds Azure key prefix) NOT committed\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(setup): 0.5.0 — 9 harness-setup skills (OS×runtime) + revfactory…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-15T03:26:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8e42eaeabfd1b777930a8bb1c636421300cd5be3",
          "body": "…alize), setup-stitch/docs-setup, description normalization\n\n- 6 new runtime-aware skills (target both): curation, ralph-qa, smart-compact,\n  deep-init (OMC deepinit port), visual-ralph (OMX port), deep-research\n- omc-reference dualized with real OMX (oh-my-codex 0.18.16) catalog; prior\n  claude-onl\n[…]\nam: build_pptx_template.py self-creates output dir\n- smoke-test: copies===32 + rename-guards + new-skill assertions; version 0.4.0\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.4.0 — Codex parity (6 new skills + omc-reference du…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-15T00:29:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "94fbfb04c36ec97106e798347c125c4bc511888a",
          "body": "…incl. Godot HTML5)\n\n- skills/game-qa → skills/play-qa (dir + frontmatter name + trigger + heading)\n- codex/manifest.json, README, transform-matrix, commands/setup: game-qa → play-qa refs\n- README skill description broadened to \"Godot HTML5까지 포함한 웹 환경 직접 플레이 QA\"\n- smoke-test: rename-case guard (seed\n[…]\nckage + marketplace)\n\nCodex update-replacement verified: unconditional banker-* sweep removes the old banker-game-qa on reinstall.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.3.0 — rename game-qa → play-qa (broaden to web env …",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-02T06:30:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e195bfb2ec6564a2048da70ac5af8c914774531f",
          "body": "…preflights, insane-search codex\n\n- fix(codex): rewrite SKILL.md `name:` to `banker-<name>` on install so Codex discovers skills (dir must == name); `doctor` flags mismatches; README notes npm-global prerequisite (#5)\n- feat(codex): sweep stale `banker-*` before reinstall so updates never leave dupl\n[…]\n#1)\n- build: `sync-version` also syncs marketplace.json; smoke-test asserts real-install dir==name + stale sweep (18 codex skills)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.2.0 — codex skill discovery fix, dedup, dependency …",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-07-01T15:09:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9eb24426a9a4b11a69b47d4a44c69d943fb199ec",
          "body": "…ecrets\n\nBumps banker to 0.1.3 so the clean lineage docs ship on npm (0.1.2 is immutable and still carries the old example values). No functional change.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.1.3 — security scrub of lineage redaction-example s…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-29T03:09:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0a7781b1407deb98558c4b9f8665425de0f09a1b",
          "body": "…holders\n\nThe LINEAGE_REDACT_EXTRA / --redact-extra doc examples hardcoded a real project secret-keyword, which shipped in the npm tarball and on GitHub. Swapped for neutral placeholders (acme-corp,db-pass). No behavior change; generic AWS/AKIA regex patterns retained.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(lineage): replace real secret-keyword examples with neutral place…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-29T03:04:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f94e7f5c14a7c7bbd48fd8d7e736531a00a1e0a3",
          "body": "plugin.json·package.json 와 정렬(이전 0.1.0 잔류분). 마켓플레이스 카탈로그 메타 버전(플러그인/npm 버전과 별개). npm 0.1.2 는 불변이라 그 tarball 속 값은 0.1.0 유지 — GitHub 마켓플레이스 소스만 정렬.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(marketplace): align marketplace.json metadata.version to 0.1.2",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-28T01:00:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "920327c2e2e88413a314517a0cedecbd18fca625",
          "body": "…raqa) — 0.1.2\n\n- compact-copy (신규, claude-only): /ready-compact resume 프롬프트에서 코드펜스 본문만\n  추출 → /tmp/claude-$(id -u)/response.md + (이어지는 /copy) 클립보드에 \"프롬프트-only\".\n  Claude Code 내장 /copy·response.md 의존이라 Codex 미배포. 개인 ~/.claude/skills 동일 소스.\n- all-in-one: playwright 3단계 → ralplan→ralph→ultraqa 독립 테스트 \n[…]\n codex manifest reason 동기화.\n- codex/transform-matrix·smoke-test: claude-only 목록/excluded 동기화 (Codex 17 불변).\n- README 스킬 23→24, CHANGELOG 0.1.2.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(skills): add compact-copy + rework all-in-one (ralplan→ralph→ult…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-27T23:01:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "08a8d6a4544cba27f00f3d5f465914ef77c0e9d9",
          "body": "scripts/publish_npm.sh (대화형 npm publish 헬퍼)와 wiki_docs/ (build_plugin\n루트의 빌드 지식 위키)는 로컬 전용 — 커밋/게시하지 않는다.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(gitignore): exclude local-only publish_npm.sh + wiki_docs",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-27T19:47:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c8e94cfc3569ac1f963f6d2a1db4206ce96e8798",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): 0.1.1 — README revision + MIT LICENSE",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-25T15:12:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1c71d1a9fbb18c04e99b66884666205ddc0649db",
          "body": "Hero(태그라인 + npm/MIT 배지 + nav) → 빠른 시작 → 왜? → 기능표 → 설치 상세 →\n요구사항 → 라이선스. S0 사실 동결로 카운트 정확(공개 23 / Codex 17), phantom\n`banker config` 없음. 배지는 version+MIT만(0-star/download 반증 배지 보류).\n루트 LICENSE(MIT) + package.json files[] 추가 → MIT 배지가 실제 라이선스를 가리킴.\n산문은 humanize-korean+/humanize-redo(all-KEEP). consensus(architect→critic APPROVE).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(readme): exemplar-grade restructure + add MIT LICENSE",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-25T15:04:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f2be9b221a028e6ea1c1bf6672afe70521bd2960",
          "body": "- package.json: scope under @kaydash9999, add publishConfig access=public\n- exclude runtime output (skills/ultra-init-workspace) from npm tarball via files negation\n- normalize repository.url; mark CHANGELOG 0.1.0 released\n- README/CHANGELOG: scoped npm install command\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(npm): publish as scoped @kaydash9999/banker-plugins@0.1.0",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-25T09:49:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5ec753782b5533a58cf8934f13c2e3e94bc8e8c4",
          "body": "- bin/banker.js: `banker` CLI — setup/uninstall (--claude|--codex|--scope|--dry-run) + doctor;\n  non-root guard, idempotent, copy-not-symlink (Windows-safe), 0 runtime deps\n- codex/manifest.json + transform-matrix.md: per-surface targets (17 codex-eligible, 8 claude-only)\n- setup --codex installs sk\n[…]\nLL PASS\n- README/CHANGELOG: npm + Codex install docs\n- Claude Code marketplace flow byte-unchanged. critic-approved (iteration 2).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(dist): npm global-install distribution + Codex CLI support",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-25T06:04:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "184d22566bc2c2a0d4eecc30138e89aac72b5fa8",
          "body": "…manifest descriptions\n\n- rewrite 23 skill + 2 command frontmatter descriptions to one concise line each\n  (was 10 folded multi-line / several 400-959c) — function + trigger keywords kept\n- bodies UNCHANGED (only frontmatter description edited); skill names preserved\n- marketplace.json: replace stal\n[…]\nPROVE (all gates PASS); claude plugin validate\n  passes; 0 internal markers; each description cross-checked against its skill body\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(descriptions): accurate, single-line, concise skill/command/…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-25T04:44:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6bbed2da51e46d7d2669a51714eda2f7f81f6aa4",
          "body": "…i skill\n\n- rename plugin to `banker` so skills/commands namespace as /banker:*\n  (install: claude plugin install banker@banker-plugins)\n- add /banker:setup command — multi-select installer (AskUserQuestion) for OS deps\n- add OS-adaptive setup skills (root/non-root, conda/venv, xvfb fallbacks):\n  se\n[…]\nsnapshot -> merge -> verify -> delete-last)\n- README: install flow (banker@banker-plugins), /banker: namespace, categorized tables\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(banker): /banker namespace, /banker:setup installer, compact-wik…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-25T04:17:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3d0acbe19f792b9256eb134264a982a137a61ad3",
          "body": "…ease)\n\n- add .claude-plugin/{plugin.json,marketplace.json} (plugin source \".\")\n- bundle skills + /front-qa command as one installable plugin\n  (install: claude plugin install banker-plugins@banker)\n- generalize all project-specific skills: remove internal branding,\n  hardcoded paths, live hosts + a\n[…]\n (c) 2025 Siqi Chen) with LICENSE retained\n- drop ultra-init-workspace (runtime dir, not a skill); ignore .omc/.remember/artifacts\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: banker-plugins marketplace + plugin (generalized for public rel…",
          "author_name": "kaydash",
          "author_login": "kaydash9999",
          "committed_at": "2026-06-25T03:52:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 0,
      "commits_last_year": 35,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 4,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@kaydash9999/banker-plugins",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "claude-code",
            "claude",
            "codex",
            "codex-cli",
            "plugin",
            "skills",
            "marketplace"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@kaydash9999/banker-plugins",
          "is_deprecated": false,
          "latest_version": "0.10.0",
          "repository_url": "https://github.com/smallOpenSource/banker_plugins",
          "versions_count": 11,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2282,
          "first_published_at": "2026-06-25T09:41:50.387000Z",
          "latest_published_at": "2026-07-18T04:49:29.814000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 2,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 31600,
      "source_files_sampled": 26,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "skills/humanizer/AGENTS.md"
      ],
      "agent_instruction_max_bytes": 1639
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [],
      "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": 0,
        "merged_prs": 0,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "kaydash9999",
          "commits": 35,
          "avatar_url": "https://avatars.githubusercontent.com/u/256007255?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": false,
      "ci_workflows": [
        "harness-setup-ci.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "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": null,
            "reason": "no pull request found",
            "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": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "c9abde676b4d623e7ed47032ec546780a4fc94a0",
        "ran_at": "2026-07-23T13:21:48Z",
        "aggregate_score": 3.1,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": null,
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/smallOpenSource/banker_plugins",
    "host": "github.com",
    "name": "banker_plugins",
    "owner": "smallOpenSource"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 34,
      "inputs": {
        "security": 31,
        "vitality": 32,
        "community": 32,
        "governance": 34,
        "engineering": 38
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "at_risk",
        "name": "Vitality",
        "value": 32,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 53,
            "inputs": {
              "commits_last_year": 35,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 4
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "4/52 weeks with commits",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "35 commits in the last year",
                "points": 14,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 35
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "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": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 32,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 2,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "2 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 56,
            "inputs": {
              "packages": [
                "@kaydash9999/banker-plugins"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 2282
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,282 downloads/month across npm",
                "points": 44.8,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2282,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "at_risk",
        "name": "Sustainability & Governance",
        "value": 34,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 13,
            "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 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "critical",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "no decided pull requests or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_decided_prs_or_data",
                    "params": {}
                  }
                ],
                "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": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "followers": 0,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "smallOpenSource",
              "public_repos": 11,
              "account_age_days": 402
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of smallOpenSource",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "smallOpenSource"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "11 public repos, account ~1 yr old",
                "points": 10.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 11
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 1
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@kaydash9999/banker-plugins"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "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 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "11 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "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": "at_risk",
        "name": "Engineering Quality",
        "value": 38,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "has_ci": true,
              "has_tests": false,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 31,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 31,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 3.1
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 1
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "at_risk",
        "name": "AI Readiness",
        "value": 44,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.971,
              "agent_instruction_files": [
                "skills/humanizer/AGENTS.md"
              ],
              "agent_instruction_max_bytes": 1639
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "skills/humanizer/AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "skills/humanizer/AGENTS.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "34 of 35 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 34,
                      "sampled": 35
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "critical",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "has_nix": false,
              "has_tests": false,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.971,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "34 of the last 35 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 34,
                      "sampled": 35
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 31600,
              "source_files_sampled": 26,
              "oversized_source_files": 0
            },
            "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": "0/26 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 26,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "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",
    "deps.dev does not index npm:@kaydash9999/banker-plugins@0.10.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T13:21:52.576551Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/smallOpenSource/banker_plugins.svg",
  "full_name": "smallOpenSource/banker_plugins",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasnpm.