JSON-Rohbericht maschinenlesbar
{
"data": {
"icon": {
"bytes": 9548,
"width": 256,
"height": 256,
"rejected": [],
"collected": true,
"media_type": "image/jpeg",
"source_url": "https://avatars.githubusercontent.com/u/17371130?v=4&s=256",
"source_type": "avatar",
"content_hash": "b0e1f91ad71c37d518046d194826615e1eff4d68d2b102f5a4e2372b5fe61794",
"candidates_considered": 1
},
"repo": {
"topics": [
"agentic-ai",
"ai-assisted-development",
"claude",
"coding-workflow",
"golang",
"software-engineering"
],
"is_fork": false,
"size_kb": 230,
"has_wiki": true,
"homepage": null,
"languages": {
"Go": 115197,
"Shell": 8144,
"Makefile": 2575
},
"pushed_at": "2026-07-20T08:50:15Z",
"created_at": "2026-06-13T09:22:51Z",
"owner_type": "User",
"updated_at": "2026-07-20T08:30:32Z",
"description": "CLI tool that generates AI coding assistant context files (CLAUDE.md, Copilot instructions, Kiro steering) from a single source of truth — switch platforms without rewriting your agents, skills, and rules from scratch.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": null,
"name": "Dandi Pangestu",
"type": "User",
"login": "Dandi-Pangestu",
"company": null,
"location": null,
"followers": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/17371130?v=4",
"created_at": "2016-02-21T02:52:59Z",
"is_verified": null,
"public_repos": 20,
"account_age_days": 3818
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-07-20T08:50:16Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-06-28T13:34:25Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-06-20T14:33:43Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-06-17T11:57:04Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2026-06-16T08:01:05Z"
}
],
"recent_commits": [
{
"oid": "90ca0adc7cb661f6688089419227c8243a36f2be",
"body": "…ancement\n\nFeature/coding workflow enhancement",
"is_bot": false,
"headline": "Merge pull request #6 from Dandi-Pangestu/feature/coding-workflow-enh…",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-07-20T08:29:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a4f5f67c7ba7ed5ee50e63c92c2e17bda30cb4f",
"body": "Feature/workspace enhancement",
"is_bot": false,
"headline": "Merge pull request #5 from Dandi-Pangestu/feature/workspace-enhancement",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-07-20T08:25:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "513fb03c76fd479367008e0b3654e20013700d9a",
"body": "…models\n\nFetchers now persist Jira/PR context to disk and pass paths instead of\ninline payloads, mechanical sub-agents run on a cheaper model with capped\nturns, re-reviews scope to the new diff, worktree setup copies gitignored\n.env/credential files so tests run immediately, and the README documents\nthe orchestrator's goal-routed capabilities and example prompts.",
"is_bot": false,
"headline": "feat(coding-workflow): route context by disk artifact and tier agent …",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-07-20T08:22:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f68aaddbef208263a51e44255c9526f369bacef6",
"body": "…ails\n\nAll session artifacts and cross-repo coordination now anchor at SESSION_ROOT\n(workspace root in multi-repo mode, repo root in single-repo). TICKET_DIR\nabstracts per-repo artifact paths, allowing same-ticket sessions across repos\nto coexist safely. Git operations enforce strict guardrails: imp\n[…]\nes stay uncommitted for human review, no commits/pushes/merges — the\nfeature branch survives for manual publishing. Enhanced session bootstrapping\nand cleanup for both single-repo and workspace modes.",
"is_bot": false,
"headline": "feat(assets): add workspace multi-repo support and enforce git guardr…",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-07-14T11:10:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "7652a58c4c1088a8a8e38adb8e23a007e845ecc8",
"body": "…orkflow\n\nPlans and reviews carried no machine-checkable status, so the\norchestrator had no reliable way to gate on approval/verdict or resume\na partially completed ticket across sessions. Add frontmatter contracts\nto implementation-plan and code-review-documentation, a new\nsession-state skill backi\n[…]\nrk\ncoding-orchestrator to route by goal instead of assuming full-cycle.\nAlso generalize worktree/session scripts away from hardcoded repo name,\n.github/sessions/ path, and production pull assumptions.",
"is_bot": false,
"headline": "feat(assets): add session-state contract and hardened orchestration w…",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-07-13T08:09:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c171515667f7202484bcfda8fa60b43d9593a426",
"body": "Repos registered with an absolute path aren't reachable in-tree, so\nls repos/ couldn't surface the whole workspace. Add a workspace link\ncommand plus automatic symlink create/remove hooks in add/remove,\nand gitignore the repos/ dir since it's machine-local.",
"is_bot": false,
"headline": "feat(workspace): symlink out-of-tree repos under repos/",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-07-13T07:14:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2bb93d3f4981a8ed61e21cb66df8a87ba14942d7",
"body": "Lets a workspace declare reference docs (with an optional \"when\" trigger) that\nmerge into project config on resolve, and documents skill-import's handling\nof sibling files/folders so imported skills stay self-contained.",
"is_bot": false,
"headline": "feat(workspace): add shared docs field to workspace manifest",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-07-13T06:26:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "379d891cb08722e8cac38620633f7a181dcd9de9",
"body": "Feature/workspace",
"is_bot": false,
"headline": "Merge pull request #4 from Dandi-Pangestu/feature/workspace",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-28T13:21:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4657fc74b927d875dbc80cb22525281385a4064",
"body": "Remove all \"coming soon\" markers and expand the workspace section with\nthe real commands, flags, and full YAML schema now that the feature ships.",
"is_bot": false,
"headline": "docs(readme): document workspace feature as released",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-28T13:03:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c9da8e8ec986abf74100eaba5977177abd93474",
"body": "Strings containing `[`, `{`, `: `, or leading `#` cause go-yaml to raise\nhard parse errors before the StringSlice unmarshaler can recover them.\nThe new decision tree instructs the model to quote any such list item\nwith single quotes (or double quotes when the string contains `'`),\nwith worked examples covering the real patterns that broke hub_service.",
"is_bot": false,
"headline": "fix(skills): add YAML safety rules to generate-context prompt",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-28T06:13:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e4ff9bb640bea94088ea66d9009ed3dfda18b4da",
"body": "…e flag\n\nWhen CLAUDE.md or AGENTS.md already exists without a switchic banner,\nthe switch command now writes CLAUDE.local.md or AGENTS.local.md instead\nof silently overwriting user-written files. Pointer files\n(copilot-instructions.md, project.md) are always regenerated and updated\nto reference the correct target. Pass --replace to force-overwrite.",
"is_bot": false,
"headline": "feat(switch): auto-resolve conflicts with .local variant and --replac…",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-27T17:06:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f2f87f02614e52bce9f3e71214044740697a2f69",
"body": "…donts\n\nYAML parses unquoted items containing \": \" (e.g. \"frozen_string_literal: true\")\nas mapping nodes, causing \"cannot unmarshal !!map into string\" on switch. Introduce\nStringSlice with a custom UnmarshalYAML that reconstructs map nodes back to plain\nstrings so users don't need to quote these items in their config.",
"is_bot": false,
"headline": "fix(config): handle unquoted \"key: value\" strings in conventions/dos/…",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-27T15:05:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a3b55e761f39572713728152d23bec254719d48",
"body": "… README\n\nUsers had no AI-assisted path for filling .switchic/config.yaml — they had\nto write description, stack, commands, structure, conventions, dos, donts,\nand docs by hand. The generate-context skill automates this by scanning\nmanifest files and writing each field with strict format guardrails.\n[…]\nDME gains a \"Speed up setup\" subsection in Quickstart covering\ngenerate-context, agent-import, and skill-import so users discover them\nat the moment they would otherwise start filling config manually.",
"is_bot": false,
"headline": "feat(skills): add generate-context skill and document setup skills in…",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-27T08:20:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8b0a36b929e61aaa666329e7163123fa661318f5",
"body": "… support\n\nRemove the \"under development\" guard blocking all workspace subcommands.\nAdd --notes to both workspace init and workspace add so repos and the\nworkspace itself carry human-readable descriptions. Add --context-file to\nworkspace add so repos whose context lives at a non-standard path (e.g.\ndocs/CLAUDE.md) can override the platform default; the override is rendered\nin the generated context body.",
"is_bot": false,
"headline": "feat(workspace): enable workspace commands and add notes/context-file…",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-27T07:17:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6bbe6297b677b1c5734927716d8f4d1602ea3940",
"body": "docs(readme): remove redundant \"(Kiro CLI)\" label from platform table",
"is_bot": false,
"headline": "Merge pull request #3 from Dandi-Pangestu/feature/v0-3-0",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-20T14:28:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b4cca3cbbe67f37342b4dab777215eca4131da56",
"body": null,
"is_bot": false,
"headline": "docs(readme): remove redundant \"(Kiro CLI)\" label from platform table",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-20T14:27:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3738c5e351485f2256931fe5cfb004fe75e6eb5d",
"body": "Feature/v0 3 0",
"is_bot": false,
"headline": "Merge pull request #2 from Dandi-Pangestu/feature/v0-3-0",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-20T14:21:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c8e60b1055bf21205d1a1b5d76797c0694081aae",
"body": " Adds architecture notes for both platform adapters and expands the\n quickstart to show all three switch commands with their output layouts.",
"is_bot": false,
"headline": "docs: update CLAUDE.md and README for copilot and kiro adapters",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-20T14:18:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df88bfd0fdf0f3657caa52397e3593eedf8dfd38",
"body": "…structions.md a pointer\n\n .github/copilot-instructions.md now references AGENTS.md via a standard\n markdown link, keeping the primary context in a tool-agnostic location.",
"is_bot": false,
"headline": "refactor(copilot): move project context to AGENTS.md, make copilot-in…",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-20T14:06:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b499e1dd320d2c0fc35667932087447e40e809b1",
"body": " The tool lists were speculative defaults with no grounding in how these\n skills are actually invoked; removing them avoids misleading constraints\n across all platforms.",
"is_bot": false,
"headline": "refactor(assets): remove allowed-tools from import skills",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-20T08:31:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "23bc196a6a71427c330c12aef808fa3de7026c95",
"body": " Kiro has its own file layout and agent JSON schema that cannot be\n expressed through the existing Claude or Copilot adapters. A dedicated\n adapter keeps generation deterministic and isolates Kiro-specific logic\n behind the same Adapter interface the other platforms use.",
"is_bot": false,
"headline": "feat(platform): add Kiro CLI adapter",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-20T08:19:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cafd3630a7fd12d2fd014594523abbcf95f08608",
"body": "…adapter\n\nFeature/add GitHub copilot adapter",
"is_bot": false,
"headline": "Merge pull request #1 from Dandi-Pangestu/feature/add-github-copilot-…",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-17T11:50:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44b93428de98672e1cd87871eb63f010380e520c",
"body": "…port\n\n agent-import now recognises `.agent.md` suffix for Copilot detection,\n includes a full field mapping for Copilot frontmatter into the `copilot:`\n block, and no longer lists GitHub Copilot as a future platform.\n\n skill-import now routes `allowed-tools`, `license`, `compatibility`, and\n `\n[…]\n `copilot:` for Copilot/agentskills.io sources instead of\n dropping them, adds `compatibility` which was missing entirely, and enforces\n agentskills.io `name` constraints with a user-facing warning.",
"is_bot": false,
"headline": "feat(skills): add GitHub Copilot support to agent-import and skill-im…",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-17T11:47:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a21913d1d1d56bef2bb796ee5dbc6b84a5d25651",
"body": null,
"is_bot": false,
"headline": "docs(readme): reflect GitHub Copilot adapter as shipped",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-17T11:32:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e278d0943e98b1dfdacc22f975fe763e313db0bb",
"body": " Add a `github-copilot` platform adapter that generates `.github/copilot-instructions.md`,\n `AGENTS.md`, `.github/agents/*.agent.md`, `.github/instructions/*.instructions.md`, and\n `.github/skills/*/SKILL.md` from the same switchic YAML definitions used for Claude.\n\n Shared context rendering is \n[…]\ns, structure, and conventions logic.\n All bundled agents, rules, and skills gain a `copilot:` block with platform-specific\n tool aliases, `applyTo` glob patterns, and `allowed-tools` as appropriate.",
"is_bot": false,
"headline": "feat(platform): add GitHub Copilot adapter",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-17T11:23:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c84e4d2b01448ac4fc279b8da51bdb5ef275d70b",
"body": " The README Config Reference only showed 6 of 12 supported fields; users had no way to discover name, description, stack, commands, structure, conventions, dos, donts, and docs. The example file used a wrong workflow key and nonexistent agent/skill names.",
"is_bot": false,
"headline": "docs(chore): document full config schema and fix stale example",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-16T08:35:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e9ca5cc034d0a3cee7d1df6bcce7aa9d0f08435",
"body": null,
"is_bot": false,
"headline": "chore: add MIT license",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-16T08:16:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a873c00b1e58f1194f53dad06ec3f40ad679ee0",
"body": null,
"is_bot": false,
"headline": "feat: update readme",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-16T07:49:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ebc1cd17ae129d28e7aca46b0cb10859e79eca3c",
"body": null,
"is_bot": false,
"headline": "feat: init the project",
"author_name": "Dandi Pangestu",
"author_login": "Dandi-Pangestu",
"committed_at": "2026-06-13T09:23:11Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 5,
"commits_last_year": 29,
"latest_release_at": "2026-07-20T08:50:16Z",
"latest_release_tag": "v0.5.0",
"releases_from_tags": false,
"days_since_last_push": 16,
"active_weeks_last_year": 5,
"days_since_latest_release": 16,
"mean_days_between_releases": 8.5
},
"artifacts": {
"collected": true,
"structure": [
"tree.go_main"
],
"declarations": []
},
"community": {
"has_readme": true,
"has_license": true,
"readme_badges": {
"hosts": [
"shields.io"
],
"total": 3,
"header": 3,
"collected": true,
"has_inspect_badge": false
},
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/Dandi-Pangestu/switchic",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"categories": [],
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/Dandi-Pangestu/switchic",
"declared_type": null,
"is_deprecated": false,
"latest_version": "v0.5.0",
"repository_url": "https://github.com/Dandi-Pangestu/switchic",
"versions_count": 5,
"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:29:59Z",
"latest_version_yanked": null,
"days_since_latest_publish": 16
}
]
},
"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": [
"examples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 9381,
"source_files_sampled": 60,
"oversized_source_files": 0,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 6733
},
"dependencies": {
"manifests": [
"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"
],
"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": 6,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "Dandi-Pangestu",
"commits": 29,
"avatar_url": "https://avatars.githubusercontent.com/u/17371130?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": false,
"has_tests": true,
"ci_workflows": [],
"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": 0,
"reason": "0 out of 6 merged PRs checked by a CI test -- score normalized to 0",
"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/10 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": null,
"reason": "no workflows found",
"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": null,
"reason": "no dependencies found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": null,
"reason": "No tokens found",
"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": "90ca0adc7cb661f6688089419227c8243a36f2be",
"ran_at": "2026-08-05T09:26:21Z",
"aggregate_score": 2.5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"recent_prs": {
"merged_7d": 0,
"decided_7d": 0,
"merged_30d": 2,
"authors_30d": 1,
"decided_30d": 2,
"sample_size": 6,
"window_days": 30,
"sample_exhausted": false,
"authors_probed_30d": 1,
"newcomer_merged_30d": 0,
"bot_prs_excluded_30d": 0,
"newcomer_authors_30d": 0,
"newcomer_decided_30d": 0
},
"ci_last_run_at": "2026-07-20T08:30:00Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-07-20T08:29:59Z",
"ci_last_conclusion": null,
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/Dandi-Pangestu/switchic",
"host": "github.com",
"name": "switchic",
"owner": "Dandi-Pangestu"
},
"metrics": {
"overall": {
"key": "overall",
"band": "weak",
"name": "Overall health",
"note": "The weighted overall 44 is calibrated to 41 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 44,
"calibrated": 41,
"calibration": "2026-08-02"
}
}
],
"value": 41,
"inputs": {
"security": 25,
"vitality": 68,
"community": 24,
"governance": 51,
"calibration": "2026-08-02",
"engineering": 38,
"ai_readiness": 74,
"weighted_overall_raw": 44
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 68,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "weak",
"name": "Development activity",
"note": null,
"notes": [],
"value": 46,
"inputs": {
"commits_last_year": 29,
"human_commit_share": 1,
"days_since_last_push": 16,
"active_weeks_last_year": 5
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 16 days ago",
"points": 28.8,
"status": "partial",
"details": [
{
"code": "push_recency",
"params": {
"days": 16
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "5/52 weeks with commits",
"points": 3.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 5
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "29 commits in the last year",
"points": 13.3,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 29
}
}
],
"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": "exceptional",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 5,
"latest_release_tag": "v0.5.0",
"releases_from_tags": false,
"days_since_latest_release": 16,
"mean_days_between_releases": 8.5
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "5 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 5
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 16 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 16
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~8.5 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 8.5
}
}
],
"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": "exceptional",
"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": 24,
"weight": 0.17,
"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": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": 3,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"readme_badge_services": [
"shields.io"
],
"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
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 51,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution, Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution",
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 67,
"inputs": {
"merged_prs": 6,
"open_issues": 0,
"closed_issues": 0,
"prs_merged_7d": 0,
"prs_decided_7d": 0,
"prs_merged_30d": 2,
"prs_decided_30d": 2,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0,
"first_time_authors_30d": 0,
"first_time_prs_merged_30d": 0,
"first_time_prs_decided_30d": 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": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "6/6 decided PRs merged",
"points": 30,
"status": "met",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 6,
"decided": 6
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/10 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "weak",
"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": 44,
"inputs": {
"followers": 2,
"owner_type": "User",
"is_verified": null,
"owner_login": "Dandi-Pangestu",
"public_repos": 20,
"account_age_days": 3818
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "2 followers of Dandi-Pangestu",
"points": 3.4,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 2,
"login": "Dandi-Pangestu"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "20 public repos, account ~10 yr old",
"points": 21.6,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 20
}
},
{
"code": "account_age_years",
"params": {
"years": 10
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "exceptional",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/Dandi-Pangestu/switchic"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 16
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 16 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 16
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "5 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 5
}
}
],
"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": "weak",
"name": "Engineering Quality",
"value": 38,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "at_risk",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 24,
"inputs": {
"has_ci": false,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": "0 out of 6 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"topics": [
"agentic-ai",
"ai-assisted-development",
"claude",
"coding-workflow",
"golang",
"software-engineering"
],
"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": "6 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 6
}
}
],
"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": 25,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"dangerous_workflow",
"packaging",
"pinned_dependencies",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 25,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 13,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 5,
"scorecard_aggregate": 2.5
},
"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": "0 out of 6 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"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/10 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no workflows found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "No tokens found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
}
],
"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": 74,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [
"CLAUDE.md"
],
"agent_instruction_max_bytes": 6733
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "CLAUDE.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": "29 of 29 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 29,
"sampled": 29
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_pinned_dependencies"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 68,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "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": "no agent-authored commits among the last 29",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 29
}
}
],
"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": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "exceptional",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 9381,
"source_files_sampled": 60,
"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/60 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 60,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "weak",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"examples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"top": [
"application"
],
"labels": [
"application"
],
"scores": {
"cli": 2,
"library": 3,
"application": 5
},
"primary": "application",
"evidence": [
{
"tier": "structure",
"label": "application",
"source": "tree.go_main",
"weight": 5
},
{
"tier": "distribution",
"label": "library",
"source": "registry:go",
"weight": 3
},
{
"tier": "description",
"label": "cli",
"source": "description:cli",
"weight": 2
}
],
"artifacts": [],
"confidence": "low",
"host_extension": false,
"runs_as_process": true,
"consumed_by_code": false
},
"metrics_version": "2.5.0"
},
"warnings": [
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-08-05T09:26:33.124061Z",
"schema_version": "0.31.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/Dandi-Pangestu/switchic.svg",
"full_name": "Dandi-Pangestu/switchic",
"license_state": "standard",
"license_spdx": "MIT"
}