Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 12406,
"has_wiki": true,
"homepage": null,
"languages": {
"Go": 432648,
"HTML": 58950,
"Shell": 7629,
"Makefile": 5050,
"JavaScript": 9762,
"PowerShell": 8134
},
"pushed_at": "2026-07-20T08:16:00Z",
"created_at": "2026-06-20T01:14:16Z",
"owner_type": "User",
"updated_at": "2026-07-20T08:16:35Z",
"description": "KOSIS(국가통계포털) OpenAPI 통계 조회 CLI/TUI 스킬",
"is_archived": false,
"is_disabled": false,
"license_spdx": null,
"default_branch": "main",
"license_spdx_raw": null,
"primary_language": "Go",
"significant_languages": [
"Go",
"HTML"
]
},
"owner": {
"blog": null,
"name": "clazic",
"type": "User",
"login": "clazic",
"company": null,
"location": "Busan, South Korea",
"followers": 0,
"avatar_url": "https://avatars.githubusercontent.com/u/1617998?v=4",
"created_at": "2012-04-06T08:10:18Z",
"is_verified": null,
"public_repos": 11,
"account_age_days": 5224
},
"license": {
"state": "absent",
"spdx_id": null,
"raw_spdx": null,
"file_present": false,
"scorecard_found": false,
"profile_has_license": false
},
"activity": {
"releases": [
{
"tag": "v0.5.4",
"kind": "patch",
"published_at": "2026-07-20T08:19:29Z"
},
{
"tag": "v0.5.3",
"kind": "patch",
"published_at": "2026-07-20T07:38:05Z"
},
{
"tag": "v0.5.2",
"kind": "patch",
"published_at": "2026-07-20T07:22:37Z"
},
{
"tag": "v0.5.1",
"kind": "patch",
"published_at": "2026-07-15T09:07:53Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-06-21T06:40:14Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-06-20T05:16:48Z"
},
{
"tag": "v0.3.4",
"kind": "patch",
"published_at": "2026-06-20T03:39:37Z"
}
],
"recent_commits": [
{
"oid": "c2eb05bfa214e9e23b5bb80c00aa033df90e1615",
"body": "통계표는 개편되므로(항목 코드 변경, 통계표 폐지) 사전은 시간이 지나면\n다시 썩는다. 구조적 결함은 단위 테스트가 잡지만 \"코드가 실제로 유효한가\"는\n호출해 보는 수밖에 없다.\n\n- livecheck 빌드 태그로 격리한 실측 테스트. 기본 `go test ./...`에는\n 컴파일조차 되지 않으므로 CI에 API 키가 없어도 안전하다\n- make verify-shortcuts / make test 타깃 추가\n- 주 1회(월요일) 실행하는 워크플로. 실패 시 이슈를 열되 PR은 차단하지\n 않는다 — API 장애나 키 만료로 무관한\n[…]\n달아 이슈 폭증을 막는다\n- API 키가 없으면 실패가 아니라 skip\n\n검증: 환경변수만으로(config 파일 없이) 통과하는 것과, 키가 없을 때\nskip되는 것을 CI 환경을 재현해 확인했다. 현재 사전 10개 항목 전부 통과.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: 바로가기 사전 실측 검증(verify-shortcuts) 및 주간 CI 추가 (v0.5.4)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-20T08:15:54Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "d54bf10e5399ca6a2da2c7d019d6a7489d463b91",
"body": "바로가기 6개 중 3개(미분양·소비자물가·GDP)가 실패하고 있었다.\n--ai 여부와 무관하게 규칙 기반 경로에서도 동일하게 깨져 있었다.\n\n근본 원인은 \"지역은 class1에 들어가는 2자리 시도코드\"라는, KOSIS에\n존재하지 않는 전제로 사전이 만들어진 것이다. 실제로는 통계표마다\n지역 축의 위치와 코드 체계가 모두 다르다:\n - 인구/주민등록: class1, 00·11 (표준 행정구역)\n - 소비자물가: class1, T10·T11\n - 미분양: class2, 13102871014B.0005·0006\n\n[…]\n — 임의 보정은\n 엉뚱한 데이터를 정답처럼 반환하므로 명시적 실패보다 나쁘다\n\n골든 테스트(정상 6 + 실패 3)와 AI 검증 테스트 9건, 사전 무결성 검사\n(축 충돌·전국코드 누락·빈 항목), 프롬프트 동기화 검사를 추가했다.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: quick 바로가기 사전을 실측 코드로 교정하고 조용한 오답을 차단 (v0.5.4)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-20T08:15:40Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7f0231f35b0faa8e5c45e303f48f714a8f26b797",
"body": "sgis와 동일한 업데이트 흐름으로 맞췄다. 기존에는 확인 없이 바이너리와\n스킬 파일을 한꺼번에 덮어썼고, 다운로드 무결성 검증이 없었다.\n\n- 릴리스의 SHA256SUMS를 받아 바이너리·스킬 tarball을 설치 직전에 검증\n (불일치 시 교체하지 않고 중단). CI는 이미 SHA256SUMS를 배포 중이라\n 워크플로우 변경은 불필요했다.\n- 바이너리와 스킬 파일을 각각 y/N으로 확인 — 한쪽만 갱신 가능\n- 버전 비교를 문자열 동등 비교에서 숫자 세그먼트 비교(newerVer)로 교체.\n 기존에는 v0.10.0 < v0\n[…]\n 바꾼 항목만 완료로 보고 (둘 다 건너뛰면 \"변경된 항목이 없습니다\")\n- --check는 최신/구버전/앞선버전 어느 경우든 판정 결과를 출력\n\nnewerVer 경계값과 SHA256SUMS 파싱·검증(변조 탐지 포함) 테스트 추가.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: update에 SHA256 체크섬 검증·개별 확인 프롬프트 추가 (v0.5.3)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-20T07:34:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ded6542737ab22b6743bc9a8e65521d57b6f963b",
"body": "cobra가 자동 출력하는 Flags 블록이 \"출력 형식 (table, json)\" 수준으로\n빈약해, 실제 --help를 전수 실행하며 플래그 설명을 채웠다.\n\n- data: 27개 플래그에 [1~6단계] 태그를 붙여 meta 출력의 어느 부분에\n 대응하는지, 값 문법(ALL / \"00+11\" / \"11*\")과 에러 21·30 조건을 명시\n- chart: [입력]/[차트]/[출력]/[크기]/[꾸미기] 구분, HTML 템플릿 11종 나열\n- meta --type 9종, list --view 12종을 플래그 줄에도 반영\n- searc\n[…]\nhe-*, ai-*, key-list, remove-key, set-ai):\n 두 줄짜리 Long을 사용법·파라미터·주의·다음 단계 구조로 재작성\n- root --help: \"표준 워크플로우\" 한 줄을 1~4단계 상세 설명으로 교체\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: 모든 명령 --help에 파라미터별 상세 설명 추가 (v0.5.3)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-20T07:34:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b39a7655c44f2158b8690052cbdc071a4fb6c647",
"body": "fix: update --check 분기 정리 + v0.5.2",
"is_bot": false,
"headline": "Merge pull request #7 from clazic/docs/readme-install-fix",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-20T07:19:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dba6caf9e072a0aa15ac2aedf8635c75f857adcd",
"body": "--check 플래그 사용 시 최신 버전일 때도 확인 결과를 출력하도록\n분기 순서를 정리했습니다. VERSION과 npm/package.json을\nv0.5.2로 동기화했습니다.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: update --check 시 항상 확인 결과 출력 + 버전 v0.5.2 동기화",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-20T07:18:52Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e4f300b4bf9ce13da4203173922470cebb264cde",
"body": "docs: root --help·13-reference에 update 명령 추가",
"is_bot": false,
"headline": "Merge pull request #6 from clazic/docs/readme-install-fix",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-20T06:07:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a25980657cea767deaabca5ab1c4e0a8ab6414c8",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: root --help·13-reference에 update 명령 추가",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-20T06:06:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "abb6535405dc7d5e8938e12e2fff262bf07d8f23",
"body": "docs: README 설치 안내 실제 동작 반영",
"is_bot": false,
"headline": "Merge pull request #5 from clazic/docs/readme-install-fix",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-15T14:37:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c83908c2c6053709d011f69f3e6b1d17618f0d01",
"body": null,
"is_bot": false,
"headline": "docs: README 설치 안내를 실제 스크립트 동작에 맞게 수정 (바이너리 경로·PATH 등록 방식)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-15T14:36:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "92a88e6c706bc91a824942e4a077d26166de9c69",
"body": "chore: GitHub Actions 액션 v5 업그레이드",
"is_bot": false,
"headline": "Merge pull request #4 from clazic/chore/actions-v5",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-15T09:11:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "956411a95905738b5f17f72aa4a7274a8cd7cb82",
"body": "… deprecation 대응)",
"is_bot": false,
"headline": "chore: GitHub Actions checkout·artifact·setup-node v5로 업그레이드 (Node 20…",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-15T09:10:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c785a9b2b9ffbd0e229098160e2d9541d061316a",
"body": "docs: AI 통계표 탐색 전략·치트시트 추가 + 설정 문서 정리",
"is_bot": false,
"headline": "Merge pull request #3 from clazic/docs/ai-search-strategy",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-15T08:06:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2049cc30a2b843ff7d02df09e5a5bbccb20238f3",
"body": null,
"is_bot": false,
"headline": "docs: SKILL.md 통계표 탐색 전략(로컬 인덱스 grep 우선)·치트시트 20표 추가",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-15T05:23:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "082e408f3cbcb7d6ca2858d456855287ba8c310a",
"body": null,
"is_bot": false,
"headline": "docs: CLAUDE.md·AGENTS.md 죽은 참조 정리 (설계서 경로→SKILL.md 계약, src/ 경로 통일)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-07-15T05:23:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d5d274e8dd89a81df37671016897e89b488b096e",
"body": "docs: 16-geo-join §16.7 행정동 결합 + 통계표 코드 주의",
"is_bot": false,
"headline": "Merge pull request #2 from clazic/docs/geo-join-hjd",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-21T22:27:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5cd93894a0c9bb64d1f3a493aa50edbdcb9f42c8",
"body": "KOSIS 행정동 데이터를 SGIS 경계와 결합할 때의 함정을 실측으로 정리한다.\n\n- 통계청 인구총조사 읍면동(101 DT_1IN1503): C1 = SGIS adm_cd 8자리 완전 일치\n (실측: 11010530 사직동 … 글자 단위 동일) → 무가공 join.\n- 지자체 주민등록 읍면동: KOSIS에 시·군별로 분산, 코드가 통계청 8자리와\n 다를 수 있음 → --with-code로 C1 확인 필수.\n- 행정동 결합 레시피 + 코드 불일치 시 vworld data join --name-tail(이름 조인)\n 폴백. 검증: 종로구 17개 행정동 17/17 매칭.\n- 지도 시각화 상세는 vworld 스킬 SKILL.md 상호참조.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: 16-geo-join §16.7 행정동(8자리) 결합 + 통계표 부류별 코드 주의",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-21T21:53:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8808e52b7b97b2684214faa7f1f12855ac2b238f",
"body": "저장소 구조·로컬 개발·md/CLI 수정·태그 기반 릴리스·심링크 주의를 정리.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: README에 개발·릴리스 가이드 섹션 추가",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-21T06:44:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "dd8470c8f152578c25e210a667b33148685457cc",
"body": "지도(SGIS/vworld)·DB 결합 시 행정구역 코드 부재 문제 해결.\n-f json/--with-code/--fields에서 C1~C8·ITM_ID 노출,\ntable/csv 기본은 불변(하위호환).\n\ncloses #1\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: 통계 데이터에 지역·분류·항목 코드 출력 (--with-code, JSON 자동 포함) (v0.5.0)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-21T06:34:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "909719c83a50f886b084ceb404aec5242573cdbc",
"body": "choropleth 등 지도 결합 시 행정구역 코드 부재로 merge 실패하는 문제 해결을 위해\nreferences/16-geo-join.md 신설 및 관련 문서·규칙 일괄 반영.\n\n- references/16-geo-join.md (신규): 코드 확보 방법, meta 역매핑 표준 레시피,\n SGIS 경계 결합 체크리스트 포함 (clazic/kosis#1)\n- references/13-reference.md: §13.1.1 출력 필드 키 표 추가, 코드 null 함정 경고\n- references/03-statistics-query\n[…]\n추가\n- SKILL.md: 핵심 규칙에 \"지도 결합엔 코드\" 추가, 16-geo-join.md 인덱스 등록\n- LEARNINGS.md: 기계결합엔코드·일상어≠항목명 일반 규칙 승격,\n DT_1FS1101·인덱스누락 테이블 함정 추가\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: 지역코드 매핑 & 지도 결합 가이드 신설 (v0.4.0)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-21T06:13:27Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "b4e17aeb7203d9786295032af77a947ba1c1e9f2",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: 불필요한 npm/bin 잔재 제거 (bin 필드 미사용)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T05:18:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c6cc8ec34c3b717b5e042bd903374f8bdcba79bc",
"body": "- CLI를 ~/.local/bin(win %LOCALAPPDATA%\\Programs\\kosis)에 통일, 스킬은 PATH의 kosis 호출\n- install.sh/ps1: 대상(claude/codex/both)×범위(global/project) 대화형 선택 + env 폴백\n- uninstall.sh/ps1 + npm preuninstall 훅 신규 (완전 제거, --purge로 config까지)\n- update.go: updateRepo 오타(kosis-cli→kosis) 수정, ~/.local/bin 교체, 자동 업데이트 알림(24h 캐시, TTY만 y/N)\n- install-binary.sh/ps1 제거, npm bin 필드 제거\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: 배포 생명주기 정비 — install/uninstall/자동 업데이트 (v0.4.0)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T05:13:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5d1b5d1fd46ffb4452ca96f50a920c0a1f7dc7b3",
"body": "- unscoped 'kosis'는 npm 유사이름 정책(ansis/kasir)으로 거부됨 → @clazic/kosis 유지\n- 기존 0.3.3 위로 0.3.4 발행 (latest)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: npm 패키지 @clazic/kosis@0.3.4 발행 정합 (v0.3.4)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T04:14:10Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c80c42484be2594e709532fca52fb54e132547de",
"body": "- npm 패키지명 @clazic/kosis → kosis (새 패키지, 0.1.0 새 시작)\n- README 설치 안내 갱신\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: npm 패키지를 unscoped 'kosis' v0.1.0으로 전환 (v0.1.0)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T04:01:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d49d6850f827b1ec9e6f277e7bad98b8d50ecffa",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: npm-publish를 release 의존에서 분리(needs build) (v0.3.4)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T03:36:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "51472e85742ad72755274c754e5f43b53127110f",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: setup-node registry-url 제거로 순수 OIDC 발행 (v0.3.4)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T03:30:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "da4e326249931e4fea495549ea48ae6b572192f7",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: bump version to v0.3.4 (npm latest 발행용) (v0.3.4)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T03:24:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cdef9d55e6a11d428294357a0203e252873fb65e",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: npm 발행을 Trusted Publishing(OIDC)으로 전환 (v0.1.1)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T03:16:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "03487c4a867439fc01beb97f9ae7da7928219fab",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: bump version to v0.1.1 (npm 재발행용) (v0.1.1)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T02:12:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "99c9100b3ee9f6fd8d568d91d4d4d0a58e43b073",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: release.yml tar --exclude 옵션을 파일 인자 앞으로 (GNU tar 호환) (v0.1.0)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T01:19:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "be68a0875d36ec928a3006024acd74d1b68a855f",
"body": "- 루트=스킬로 평탄화, src/=CLI 소스 통합 (단일 monorepo)\n- Go module path: github.com/clazic/kosis\n- 멀티플랫폼 빌드(make build) → src/bin + apps 두 곳 배치\n- 배포 파이프라인: npm(@clazic/kosis) + 스크립트, 리포 clazic/kosis\n- docs→references, plan→.plan, playwright 격리\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: KOSIS 스킬 monorepo 초기 구성 (v0.1.0)",
"author_name": "clazic",
"author_login": "clazic",
"committed_at": "2026-06-20T01:12:06Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 7,
"commits_last_year": 31,
"latest_release_at": "2026-07-20T08:19:29Z",
"latest_release_tag": "v0.5.4",
"releases_from_tags": false,
"days_since_last_push": 6,
"active_weeks_last_year": 4,
"days_since_latest_release": 6,
"mean_days_between_releases": 5
},
"community": {
"has_readme": true,
"has_license": false,
"has_description": true,
"has_contributing": false,
"health_percentage": 28,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/clazic/kosis",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/clazic/kosis",
"is_deprecated": false,
"latest_version": "v0.5.4",
"repository_url": "https://github.com/clazic/kosis",
"versions_count": 7,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-20T08:15:54Z",
"latest_version_yanked": null,
"days_since_latest_publish": 6
},
{
"name": "@clazic/kosis",
"exists": true,
"license": "MIT",
"keywords": [
"kosis",
"korea",
"statistics",
"cli",
"openapi",
"통계",
"국가통계포털"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/@clazic/kosis",
"is_deprecated": false,
"latest_version": "0.5.4",
"repository_url": "https://github.com/clazic/kosis",
"versions_count": 12,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 836,
"first_published_at": "2026-04-02T09:48:13.373000Z",
"latest_published_at": "2026-07-20T08:19:32.429000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 6
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0,
"collected_at": 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": [
"Makefile",
"src/Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"src/go.mod"
],
"largest_source_bytes": 37177,
"source_files_sampled": 69,
"oversized_source_files": 0,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md",
"src/cmd/AGENTS.md",
"src/internal/AGENTS.md",
"src/internal/api/AGENTS.md",
"src/internal/bookmark/AGENTS.md",
"src/internal/cache/AGENTS.md",
"src/internal/config/AGENTS.md",
"src/internal/history/AGENTS.md",
"src/internal/interactive/AGENTS.md",
"src/internal/nlp/AGENTS.md",
"src/internal/output/AGENTS.md",
"src/internal/tui/AGENTS.md"
],
"agent_instruction_max_bytes": 5052
},
"dependencies": {
"manifests": [
"npm/package.json",
"src/go.mod"
],
"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": [
"go",
"npm"
],
"dependencies": [
{
"name": "github.com/charmbracelet/bubbles",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.0"
},
{
"name": "github.com/charmbracelet/bubbletea",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v1.3.10"
},
{
"name": "github.com/charmbracelet/lipgloss",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.0"
},
{
"name": "github.com/go-echarts/go-echarts/v2",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v2.7.1"
},
{
"name": "github.com/guptarohit/asciigraph",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v0.9.0"
},
{
"name": "github.com/mattn/go-runewidth",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.19"
},
{
"name": "github.com/mattn/go-sqlite3",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v1.14.38"
},
{
"name": "github.com/muesli/termenv",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v0.16.0"
},
{
"name": "github.com/parquet-go/parquet-go",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v0.29.0"
},
{
"name": "github.com/spf13/cobra",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.2"
},
{
"name": "github.com/spf13/viper",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v1.21.0"
},
{
"name": "github.com/xuri/excelize/v2",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v2.10.1"
},
{
"name": "golang.org/x/term",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v0.41.0"
},
{
"name": "gonum.org/v1/plot",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v0.16.0"
},
{
"name": "gopkg.in/yaml.v3",
"manifest": "src/go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.1"
}
],
"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": 6,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 1,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "clazic",
"commits": 31,
"avatar_url": "https://avatars.githubusercontent.com/u/1617998?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"build.yml",
"release.yml",
"verify-shortcuts.yml"
],
"has_docs_dir": false,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "6 out of 6 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/23 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": 0,
"reason": "license file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 0,
"reason": "project was created within the last 90 days. Please review its contents carefully",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"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": 0,
"reason": "34 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "c2eb05bfa214e9e23b5bb80c00aa033df90e1615",
"ran_at": "2026-07-26T17:52:42Z",
"aggregate_score": 2.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": "2026-07-20T08:19:37Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-20T07:19:07Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/clazic/kosis",
"host": "github.com",
"name": "kosis",
"owner": "clazic"
},
"metrics": {
"overall": {
"key": "overall",
"band": "at_risk",
"name": "Overall health",
"note": null,
"notes": [],
"value": 47,
"inputs": {
"security": 21,
"vitality": 67,
"community": 21,
"governance": 54,
"engineering": 61
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "moderate",
"name": "Vitality",
"value": 67,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 52,
"inputs": {
"commits_last_year": 31,
"human_commit_share": 1,
"days_since_last_push": 6,
"active_weeks_last_year": 4
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 6
}
}
],
"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": "31 commits in the last year",
"points": 13.5,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 31
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 7,
"latest_release_tag": "v0.5.4",
"releases_from_tags": false,
"days_since_latest_release": 6,
"mean_days_between_releases": 5
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "7 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 7
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 6
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~5 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 5
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": "critical",
"name": "Community & Adoption",
"value": 21,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 0,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"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": "critical",
"name": "Community health",
"note": null,
"notes": [],
"value": 25,
"inputs": {
"has_readme": true,
"has_license": false,
"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": "no license file detected",
"points": 0,
"status": "missed",
"details": [
{
"code": "license_absent",
"params": {}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "at_risk",
"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": 49,
"inputs": {
"packages": [
"github.com/clazic/kosis",
"@clazic/kosis"
],
"dependents": null,
"ecosystems": "go, npm",
"total_downloads": null,
"monthly_downloads": 836
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "836 downloads/month across go, npm",
"points": 39,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 836,
"ecosystems": "go, npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 54,
"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": "excellent",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"merged_prs": 6,
"open_issues": 0,
"closed_issues": 1,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 46.8,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "6/6 decided PRs merged",
"points": 38.2,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 6,
"decided": 6
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/23 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "at_risk",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 37,
"inputs": {
"followers": 0,
"owner_type": "User",
"is_verified": null,
"owner_login": "clazic",
"public_repos": 11,
"account_age_days": 5224
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "0 followers of clazic",
"points": 0,
"status": "missed",
"details": [
{
"code": "owner_followers",
"params": {
"count": 0,
"login": "clazic"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "11 public repos, account ~14 yr old",
"points": 19.9,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 11
}
},
{
"code": "account_age_years",
"params": {
"years": 14
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/clazic/kosis",
"@clazic/kosis"
],
"ecosystems": "go, npm",
"any_deprecated": false,
"min_days_since_publish": 6
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "2 package(s) on go, npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 2,
"ecosystems": "go, npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 6 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 6
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "12 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 12
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 61,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": 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": "6 out of 6 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"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": "critical",
"name": "Security",
"value": 21,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "critical",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Packaging. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"packaging"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 21,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 2.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": "6 out of 6 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/23 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 not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": "34 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 2
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 81,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md",
"src/cmd/AGENTS.md",
"src/internal/AGENTS.md",
"src/internal/api/AGENTS.md",
"src/internal/bookmark/AGENTS.md",
"src/internal/cache/AGENTS.md",
"src/internal/config/AGENTS.md",
"src/internal/history/AGENTS.md",
"src/internal/interactive/AGENTS.md",
"src/internal/nlp/AGENTS.md",
"src/internal/output/AGENTS.md",
"src/internal/tui/AGENTS.md"
],
"agent_instruction_max_bytes": 5052
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md, CLAUDE.md, src/cmd/AGENTS.md, src/internal/AGENTS.md, src/internal/api/AGENTS.md, src/internal/bookmark/AGENTS.md, src/internal/cache/AGENTS.md, src/internal/config/AGENTS.md, src/internal/history/AGENTS.md, src/internal/interactive/AGENTS.md, src/internal/nlp/AGENTS.md, src/internal/output/AGENTS.md, src/internal/tui/AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md, CLAUDE.md, src/cmd/AGENTS.md, src/internal/AGENTS.md, src/internal/api/AGENTS.md, src/internal/bookmark/AGENTS.md, src/internal/cache/AGENTS.md, src/internal/config/AGENTS.md, src/internal/history/AGENTS.md, src/internal/interactive/AGENTS.md, src/internal/nlp/AGENTS.md, src/internal/output/AGENTS.md, src/internal/tui/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": "31 of 31 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 31,
"sampled": 31
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile",
"src/Makefile"
],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.677,
"toolchain_manifests": [
"src/go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile, src/Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile, src/Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "21 of the last 31 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 21,
"sampled": 31
}
}
],
"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": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 37177,
"source_files_sampled": 69,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/69 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 69,
"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": [
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-26T17:52:51.027982Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/c/clazic/kosis.svg",
"full_name": "clazic/kosis",
"license_state": "absent",
"license_spdx": null
}