Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"cli",
"teamcity",
"teamcity-agent",
"teamcity-rest-api",
"agent-skills",
"claude-skills",
"ai-agent",
"go"
],
"is_fork": false,
"size_kb": 17791,
"has_wiki": false,
"homepage": "https://jb.gg/tc/docs",
"languages": {
"Go": 1802369,
"HTML": 3714,
"Just": 7610,
"Shell": 6623,
"Python": 95699,
"Batchfile": 5825,
"Dockerfile": 282,
"PowerShell": 5544
},
"pushed_at": "2026-07-17T18:50:57Z",
"created_at": "2026-01-22T11:12:07Z",
"owner_type": "Organization",
"updated_at": "2026-07-21T07:52:45Z",
"description": "TeamCity from your terminal – or your AI's. Builds, logs, agents, agent terminals, queues.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": "https://jetbrains.com/opensource",
"name": "JetBrains",
"type": "Organization",
"login": "JetBrains",
"company": null,
"location": "Netherlands",
"followers": 13373,
"avatar_url": "https://avatars.githubusercontent.com/u/878437?v=4",
"created_at": "2011-06-27T10:06:52Z",
"is_verified": null,
"public_repos": 843,
"account_age_days": 5503
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v1.3.0",
"kind": "minor",
"published_at": "2026-07-17T19:00:22Z"
},
{
"tag": "v1.2.1",
"kind": "patch",
"published_at": "2026-06-25T09:25:13Z"
},
{
"tag": "v1.2.0",
"kind": "minor",
"published_at": "2026-06-19T08:36:40Z"
},
{
"tag": "v1.1.1",
"kind": "patch",
"published_at": "2026-05-29T09:28:45Z"
},
{
"tag": "v1.1.0",
"kind": "minor",
"published_at": "2026-05-28T17:47:33Z"
},
{
"tag": "v1.0.0",
"kind": "major",
"published_at": "2026-05-06T14:16:44Z"
},
{
"tag": "v0.10.0",
"kind": "minor",
"published_at": "2026-04-29T15:27:45Z"
},
{
"tag": "v0.9.1",
"kind": "patch",
"published_at": "2026-04-20T11:09:42Z"
},
{
"tag": "v0.9.0",
"kind": "minor",
"published_at": "2026-04-14T12:27:32Z"
},
{
"tag": "v0.8.3",
"kind": "patch",
"published_at": "2026-04-01T15:30:34Z"
},
{
"tag": "v0.8.2",
"kind": "patch",
"published_at": "2026-03-27T17:50:43Z"
},
{
"tag": "v0.8.1",
"kind": "patch",
"published_at": "2026-03-27T12:51:47Z"
},
{
"tag": "v0.8.0",
"kind": "minor",
"published_at": "2026-03-26T15:20:32Z"
},
{
"tag": "v0.7.2",
"kind": "patch",
"published_at": "2026-02-26T18:31:16Z"
},
{
"tag": "v0.7.0",
"kind": "minor",
"published_at": "2026-02-24T12:03:36Z"
},
{
"tag": "v0.6.0",
"kind": "minor",
"published_at": "2026-02-20T13:09:43Z"
},
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-02-17T12:39:54Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-02-10T18:37:20Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-01-30T18:19:23Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-01-27T16:08:03Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2026-01-26T10:51:26Z"
}
],
"recent_commits": [
{
"oid": "e9bbb01fe7c5b96790f7a60de9c2ee60138a9a6c",
"body": "…ation",
"is_bot": false,
"headline": "docs(migrate): clarify manual setup steps and update gotchas for migr…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:47:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2cebc5fd36173d414173fffcce58b3d70512b923",
"body": "…ion and enabled checks",
"is_bot": false,
"headline": "fix(agent): relax terminal access restrictions by removing authorizat…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:43:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4cb71748c21f33f7aded9708a87efdbb43c91281",
"body": "… skills to 0.3.0 and 1.3.0 respectively",
"is_bot": false,
"headline": "chore(skills): bump versions for migrate-to-teamcity and teamcity-cli…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:41:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2dd06f8e51f17c1c6c5bb2d76ff60bb3ed370d6f",
"body": null,
"is_bot": false,
"headline": "docs: simplify and update README for improved clarity",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:37:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d58c9e4398e1e515bcf756c895a62ee1b9721f2",
"body": null,
"is_bot": false,
"headline": "docs: add reverse-proxy SSO configuration example (SiteMinder/Kerberos)",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:31:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b585cbfe630d80c1e67337069ccf5e3df7d40b67",
"body": "Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.51.0 to 0.52.0.\n- [Commits](https://github.com/golang/crypto/compare/v0.51.0...v0.52.0)\n\n---\nupdated-dependencies:\n- dependency-name: golang.org/x/crypto\n dependency-version: 0.52.0\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump golang.org/x/crypto from 0.51.0 to 0.52.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-17T18:28:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d2b3cbb25db6bd159ec88a91a3b426c0bd1de55",
"body": null,
"is_bot": false,
"headline": "fix(migrate): flag hosted runner labels with no matching server image",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:28:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e6bff5bcd1042f2bbbea3fba28b8dd4c973c7c0",
"body": null,
"is_bot": false,
"headline": "feat(migrate): warn about unsupported CI configurations left unmigrated",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:28:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "103b59874bd5275e7a88cdd0a5e73efe63ca6a84",
"body": "…ported-CI warning",
"is_bot": false,
"headline": "refactor(migrate): scope runner override to hosted labels, drop unsup…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:28:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d8428aa866a4763fd86a4a996754455c4876b3f",
"body": null,
"is_bot": false,
"headline": "fix(migrate): warn about unsupported ci configs",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:28:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5cfd5d9b5e446dc523a28604ef077b59b32564e6",
"body": null,
"is_bot": false,
"headline": "fix(migrate): preserve setup-java version",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:28:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8fdc01d475afdcc5914b6e6d91db2f2bb6e4279d",
"body": null,
"is_bot": false,
"headline": "fix(migrate): avoid unavailable hosted runners",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-07-17T18:28:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "774fb339e0e7e8f8df558248d8e6ec45945b69c2",
"body": "…ost-2026.2 servers",
"is_bot": false,
"headline": "fix(pipeline): send both request shapes so update works on pre- and p…",
"author_name": "Milica Siriski",
"author_login": "milica-siriski",
"committed_at": "2026-07-17T11:33:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "880cabdcac732e5f0accfe8f0af37dbd5829ca1b",
"body": "Bumps the dependencies group with 5 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [github.com/moby/moby/api](https://github.com/moby/moby) | `1.54.2` | `1.55.0` |\n| [github.com/pelletier/go-toml/v2](https://github.com/pelletier/go-toml) | `2.3.1` | `2.4.2` |\n| [github.com/testcontainers/te\n[…]\nm\n dependency-version: 0.44.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump the dependencies group with 5 updates",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-06T09:57:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "32dfd91cc8a9b6d44f47896c1ef1b183ab58e973",
"body": null,
"is_bot": false,
"headline": "docs(skill): add migrate-to-teamcity skill",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-26T11:04:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2aaa4e12905cbe78701a3805b73b3e1936d04225",
"body": "…port",
"is_bot": false,
"headline": "feat(migrate): add migrate command with GitHub Actions and Bamboo sup…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-26T11:04:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3776102f8ba27ae61cf3e6b7cf8e4983bb70700e",
"body": null,
"is_bot": false,
"headline": "docs: fix stale command references and add missing job/skill coverage",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-26T08:27:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "57b3083a2388def2c02344d57f0ca15139980058",
"body": null,
"is_bot": false,
"headline": "feat(run): add --settings to override versioned-settings source",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-26T08:06:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "42ce6a22b1a8167120adbfa8de8b79f36e698133",
"body": null,
"is_bot": false,
"headline": "feat(auth): align PKCE login scopes with CLI functionality",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-25T08:08:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "25c5f8d3bada8b56244f84fb7a119c330a80d998",
"body": null,
"is_bot": false,
"headline": "fix(api): bound unscoped build queries so run list can't hang",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-24T17:33:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d08f0d905af7d211c26134aaba22ca353393cdff",
"body": "…aults",
"is_bot": false,
"headline": "fix(skills): correct broken --json jq examples and watch interval def…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-22T13:57:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2406cb584cc5ca729ed9303b27bd070cf7b206ec",
"body": null,
"is_bot": false,
"headline": "fix(skills): reference proper per-repo install step",
"author_name": "Morten Larsen",
"author_login": "Baune8D",
"committed_at": "2026-06-22T07:35:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e37985b907add46be7b587f4d4b4d80462961109",
"body": null,
"is_bot": false,
"headline": "fix(skills): use correct branch name argument",
"author_name": "Morten Larsen",
"author_login": "Baune8D",
"committed_at": "2026-06-22T07:35:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cdd1f78121adc4d87362e8d871c13462dded13a5",
"body": null,
"is_bot": false,
"headline": "tests: correct regex in job step ID extraction",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-19T07:41:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "54f4bdfc73a2f769f5ccebe0b80b5d4311cd52ee",
"body": null,
"is_bot": false,
"headline": "chore: update CLI version placeholder in issue template",
"author_name": "Viktor",
"author_login": "tiulpin",
"committed_at": "2026-06-19T07:08:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "feb9e18ef2289b1704c7c88c3239129594915b8a",
"body": "…gin.json",
"is_bot": false,
"headline": "chore(skills): bump teamcity-cli to version 1.2.0 in SKILL.md and plu…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-19T07:05:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3395cfef32d458f386a565e732e7c1a1b0df96e9",
"body": "…cache",
"is_bot": false,
"headline": "refactor(pipeline): extract pipelineschema package and shared schema …",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-19T07:01:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "477b60360a50a5f0113fe7bd4b511554ec5b5bdb",
"body": null,
"is_bot": false,
"headline": "chore(issue-template): add migrate issue template",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-19T06:56:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "55117e13846d1f66a99cc1cb4b763435ee6afe4d",
"body": null,
"is_bot": false,
"headline": "fix(api): strip context path from raw pagination nextHref",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-18T14:53:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bd660d66e0c2855bf3e22b04fe579cee997e58a",
"body": null,
"is_bot": false,
"headline": "fix(config): preserve context path in NormalizeURL",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-18T14:53:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1da7bafc3d34f419397c920172bd12d0a0d81b9d",
"body": null,
"is_bot": false,
"headline": "feat(evals): support ANTHROPIC_BASE_URL env var in Claude Code runs",
"author_name": "Boris Yakhno",
"author_login": "boris-yakhno",
"committed_at": "2026-06-16T13:54:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c7f378d14070cd63e714304d43aa765add8202d",
"body": null,
"is_bot": false,
"headline": "feat(evals): submit eval results to Langfuse",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-15T18:21:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4865b1b75e77889355393a46dc56a0363ce3330d",
"body": null,
"is_bot": false,
"headline": "fix(tests): retry sandbox test on seatbelt proxyconnect EPERM flake",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-13T10:04:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e3448219008b3248a60945be5ae75162003026d8",
"body": null,
"is_bot": false,
"headline": "fix(api): emit empty pipeline and reason arrays as [] in --json (#365)",
"author_name": "Viktor",
"author_login": "tiulpin",
"committed_at": "2026-06-12T21:20:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7496572b3c1a0fee4be10bafee3216b29528f31",
"body": "…#340)",
"is_bot": false,
"headline": "fix(api): escape user-supplied values in request paths and locators (…",
"author_name": "Viktor",
"author_login": "tiulpin",
"committed_at": "2026-06-12T21:05:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fcb45da0e9e811190ad1fb7c07c91c5bc47f0e66",
"body": null,
"is_bot": false,
"headline": "fix(run): keep run start --json output free of progress text",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-12T20:33:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "28f38c92634e9d69cec0d99fac3c3c5eec3ca5a1",
"body": null,
"is_bot": false,
"headline": "refactor: finish in-flight modern-Go idiom migrations",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-12T10:38:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f9cc428a3684e2169e6e73a2863e26178521f35",
"body": null,
"is_bot": false,
"headline": "fix(alias): give shell alias subprocesses the raw stdio streams",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-12T09:51:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "427675a24d59010bedaa8ae9bce13b7e45f80828",
"body": null,
"is_bot": false,
"headline": "fix(output): suppress the activity spinner on dumb terminals",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-12T09:50:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ca216230eb1e733c90a26cdac4da86e35bf12d7c",
"body": null,
"is_bot": false,
"headline": "fix(cmd): make --json and --web mutually exclusive in create commands",
"author_name": "Viktor",
"author_login": "tiulpin",
"committed_at": "2026-06-12T09:49:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d641c55526f14529a79d252e119129222cc8a732",
"body": null,
"is_bot": false,
"headline": "fix(api): serialize empty step and settings lists as [] not null",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-12T09:48:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "137bd7c9a52ac8d63a740fd20946b016cca96125",
"body": null,
"is_bot": false,
"headline": "docs(gallery): regenerate HTML and add screens for new job commands",
"author_name": "Viktor",
"author_login": "tiulpin",
"committed_at": "2026-06-12T07:13:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d545c52b7ff312d63372640217d9156baf0ae9d",
"body": null,
"is_bot": false,
"headline": "fix(git): end option parsing before user-supplied revisions",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-11T13:42:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "29f90ef891b85dc158e1d0a95f776fc5dc26bb64",
"body": null,
"is_bot": false,
"headline": "fix(api): close response bodies of retried attempts",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-11T09:49:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a9c87821b9990250f53e0bb2686c2ee9d0f7c278",
"body": "…ne (#350)",
"is_bot": false,
"headline": "feat(evals): schema-driven checks, statistical gate, versioned pipeli…",
"author_name": "Viktor",
"author_login": "tiulpin",
"committed_at": "2026-06-11T09:44:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6886b8922650a67cbd7d5b023e06443831af4821",
"body": null,
"is_bot": false,
"headline": "fix(api): stop nested TeamCity from cancelling integration test builds",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-10T18:07:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0fd5764711134a04da172c19be06aad7587b2fa9",
"body": null,
"is_bot": false,
"headline": "fix(run): surface watch errors from the TUI instead of reporting success",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-10T14:39:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fe7907769f77e1bb2d8fa5ac4085398fd74f22c5",
"body": null,
"is_bot": false,
"headline": "fix(auth): validate callback state before acting on the result",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-10T14:38:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be981f3fed7676670ba62f9d6f85c6ff60513ea5",
"body": null,
"is_bot": false,
"headline": "fix(auth): report TEAMCITY_TOKEN in status when TEAMCITY_URL is unset",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-10T14:37:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac743d669c4bc1bfb77492c0c6db58bf9875d2de",
"body": null,
"is_bot": false,
"headline": "refactor(job): condense cycle-detection comment to one line",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-10T14:36:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b11e88d377e490c7a84cf780eb273f6a640bd31",
"body": null,
"is_bot": false,
"headline": "fix(alias): preserve positional args containing spaces or quotes (#341)",
"author_name": "Viktor",
"author_login": "tiulpin",
"committed_at": "2026-06-10T14:07:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99a49d2cd2f9d9909675b771dc96bf86b98f4497",
"body": null,
"is_bot": false,
"headline": "fix(run): exit non-zero when artifact downloads fail",
"author_name": "Viktor",
"author_login": "tiulpin",
"committed_at": "2026-06-10T11:39:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3b87756e2711c77ec70635573e3f2afa64fded18",
"body": null,
"is_bot": false,
"headline": "fix(job): detect cycles by ancestor path so diamond deps aren't dropped",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-10T10:27:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b3eda8e708efd56b85b62724193f68e0eeb98910",
"body": null,
"is_bot": false,
"headline": "fix(api): serialize empty list results as [] not null",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-10T10:25:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b57662b826b4b303fe89d91040a05c31210beed",
"body": null,
"is_bot": false,
"headline": "refactor(cmdutil): echo the URL on every --web via one open helper",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-08T14:42:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "55cc9acd9fa09430b97de12859b1cae97e3dc9bc",
"body": null,
"is_bot": false,
"headline": "feat(run): follow a test's history with run tests --test",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-08T14:42:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "141044e6a0bcd4fe4392f0b6c095b5f543ebcb04",
"body": null,
"is_bot": false,
"headline": "refactor(api): route run tests through ListTestOccurrences",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-08T14:42:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0348bdc5cc87350998b714bfef2e24eeb7c2b350",
"body": null,
"is_bot": false,
"headline": "feat(api): add paginated ListTestOccurrences primitive",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-08T14:42:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "67e21f0be908daa7ca1e04c8016d1bc81750baee",
"body": null,
"is_bot": false,
"headline": "fix(analytics): bump command schema version for job.settings.*",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-05T09:30:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae464439d4bb657d0d1ea958fdc448cab5060c9a",
"body": null,
"is_bot": false,
"headline": "refactor(cmd): unify owner-id command scaffold into cmdutil",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-05T09:30:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9bc30ec22909cac6edef7e59882b6f32e16093b",
"body": null,
"is_bot": false,
"headline": "feat(setting): add job settings list/get/set subcommands",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-05T09:30:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4e3df6d2802eb3ccb82b855c1668fbe747c66996",
"body": null,
"is_bot": false,
"headline": "feat(api): add GetBuildTypeSettings and GetBuildTypeSetting methods",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-05T09:30:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5abee772e3b82b2c30b50f361398cb966a74d82e",
"body": null,
"is_bot": false,
"headline": "feat(output): show activity spinner during long-running fetches",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-04T18:26:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c908d89c4516c2cbf64148b5bcbbeaf0fbf64cfe",
"body": null,
"is_bot": false,
"headline": "feat: allow --limit 0 to fetch all results with truncation hint",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-04T18:26:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a53486987c4c1a73f60bd38c3a26b4b7667bc3e4",
"body": null,
"is_bot": false,
"headline": "feat: direct navigation to TeamCity UI pages (#306)",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-04T13:56:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3cc3013c0f8106ffc845b34fb322d763803bcb0e",
"body": null,
"is_bot": false,
"headline": "feat(job): add build step management commands (job step)",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-03T13:47:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b6870ffaf41159930023f78deaca4fe216cdb7c",
"body": null,
"is_bot": false,
"headline": "feat(job): add job create command",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-03T13:47:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e276ba758cca9959da0752a989ef05b9c58d280b",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(output): replace em dashes with ASCII hyphens in user-facing strings",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-02T12:54:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "71204d3a93d895ce542bb00ca9439c67296f1b1e",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(cli): note env-var auth alongside auth login in startup help",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-02T12:54:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1ec38bb56ddefc432e9a0051465d5b336c64c39a",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cli): suppress startup banner when --quiet or TERM=dumb",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-02T12:54:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ee795a1666ddc8e88cbedfd7ffe5b728ac852d1b",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(output): degrade Unicode glyphs to ASCII on incapable terminals",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-06-02T12:54:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c65d2b03ae6620fffd5a5ea171cb8c8692149e84",
"body": "Bumps the dependencies group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [github.com/mattn/go-runewidth](https://github.com/mattn/go-runewidth) | `0.0.23` | `0.0.24` |\n| [github.com/moby/moby/api](https://github.com/moby/moby) | `1.54.1` | `1.54.2` |\n| [github.com/pelletier/go-tom\n[…]\nok\n dependency-version: 0.3.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n dependency-group: dependencies\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump the dependencies group with 6 updates",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-02T09:05:53Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "533c8cb20928be912188fd8ae40fcba24cc720ca",
"body": null,
"is_bot": false,
"headline": "docs(contributing): require status:finalized issue for external PRs",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-29T10:22:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d4bb811b67fb94f842e422bd74ced0803220531c",
"body": "… without it\"\n\nThis reverts commit d9073a9c28f5207d0f458f64d1dc4ae044928d32.",
"is_bot": false,
"headline": "Revert \"feat(skill): hint to install skill when used from an AI agent…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-29T09:24:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9436b94b228579ba952aba809357776c3db9ce1a",
"body": "…ity 2026.1 changes",
"is_bot": false,
"headline": "docs(cli): sync authentication and connection docs for PKCE and TeamC…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T16:33:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8535162aaa18dd52939e31493ba4bb11876a947a",
"body": "Bumps [idna](https://github.com/kjd/idna) from 3.11 to 3.15.\n- [Release notes](https://github.com/kjd/idna/releases)\n- [Changelog](https://github.com/kjd/idna/blob/master/HISTORY.md)\n- [Commits](https://github.com/kjd/idna/compare/v3.11...v3.15)\n\n---\nupdated-dependencies:\n- dependency-name: idna\n dependency-version: '3.15'\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump idna from 3.11 to 3.15 in /evals",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-05-28T15:45:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc479b2b0839b3d26a0c21964c6e673a8f966071",
"body": "Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.6.3 to 2.7.0.\n- [Release notes](https://github.com/urllib3/urllib3/releases)\n- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)\n- [Commits](https://github.com/urllib3/urllib3/compare/2.6.3...2.7.0)\n\n---\nupdated-dependencies:\n- dependency-name: urllib3\n dependency-version: 2.7.0\n dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /evals",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-05-28T15:42:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ede2581e9cad6a65c3524bc054a45ce5019c9704",
"body": "…mas/",
"is_bot": false,
"headline": "feat(schemas): publish teamcity.toml JSON Schema and consolidate sche…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T15:39:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d9073a9c28f5207d0f458f64d1dc4ae044928d32",
"body": "When teamcity is invoked from a detected AI agent runtime and the\nteamcity-cli skill isn't installed for that agent (project or global),\nprint a one-line tip nudging the user toward `teamcity skill install`.\nSuppressed for --json, --quiet, --no-input, non-TTY stderr, on errors,\nand while running `teamcity skill ...`. The hint goes away the moment\nthe skill is installed.\n\nCloses #282",
"is_bot": false,
"headline": "feat(skill): hint to install skill when used from an AI agent without it",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T15:03:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "155d10d0d783156a85529b84c9b78bffddc0820b",
"body": "…ptions",
"is_bot": false,
"headline": "docs(agents): codify lean code, one-line comments, and lean PR descri…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T14:51:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c507b03547bb5bb6120b0cc0e5a8f7300e1aab5",
"body": "… output",
"is_bot": false,
"headline": "test(run): strengthen TestRunLogRaw to distinguish raw from formatted…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T12:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a2751c5788662674c823434e2d679e251004809",
"body": "…test timing margin",
"is_bot": false,
"headline": "test(run): cover --raw streaming path, empty-body hint, widen bypass …",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T12:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0fe91fa300554cb46583bd30e4fc8b22212dd139",
"body": null,
"is_bot": false,
"headline": "test(api): drop redundant TestGetBuildLogStream",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T12:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0defc7bd0f364a904d4964966fc60e502398b141",
"body": "…shallow copy",
"is_bot": false,
"headline": "fix(api): preserve HTTPClient Jar/CheckRedirect in streamRequest via …",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T12:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e20dc1f84fef6b32b6a32183fb318ea12badc59",
"body": null,
"is_bot": false,
"headline": "docs(api): clarify WithTimeout does not apply to streaming endpoints",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T12:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ac76d3117a12e96765936dc61282df859096fcb",
"body": "…ut via streamRequest",
"is_bot": false,
"headline": "refactor(api): restore default 30s timeout, opt streaming endpoints o…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T12:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a63014ab111877cb578ff501e535fbd7aff268c",
"body": "…truncation",
"is_bot": false,
"headline": "fix(run): propagate read errors from streaming log instead of silent …",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T12:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71035bfae6e0fee84bf6ce9afb741c17d9b682f6",
"body": null,
"is_bot": false,
"headline": "feat(run): stream build log instead of buffering",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T12:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f00e3f11661bdd7b518189c62f8efa2037bb22f0",
"body": "…derTimeout",
"is_bot": false,
"headline": "fix(api): drop wall-clock http.Client.Timeout in favor of ResponseHea…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-28T12:07:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f8419738b452108ff181365be30c1fab0a6905e",
"body": null,
"is_bot": false,
"headline": "docs(skill): reword running local changes instructions",
"author_name": "Milica Siriski",
"author_login": "milica-siriski",
"committed_at": "2026-05-27T08:38:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b80e06b661bfa81f235a04f719267b50a3a02116",
"body": null,
"is_bot": false,
"headline": "fix: update error message on resolve merge base failure",
"author_name": "Milica Siriski",
"author_login": "milica-siriski",
"committed_at": "2026-05-27T08:38:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de6ad3b1d980b12d44653481ca446f5b83a22acb",
"body": null,
"is_bot": false,
"headline": "refactor: remove unused UncommittedDiff function",
"author_name": "Milica Siriski",
"author_login": "milica-siriski",
"committed_at": "2026-05-27T08:38:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c31424772a1548f691e91a7a53efcb7227cf95b4",
"body": null,
"is_bot": false,
"headline": "fix: configure git identity in local changes tests",
"author_name": "Milica Siriski",
"author_login": "milica-siriski",
"committed_at": "2026-05-27T08:38:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69c9b784bc27f132af25c51ad8e9ce2af42e534b",
"body": null,
"is_bot": false,
"headline": "feat(run): calculate local changes base by merging head and upstream",
"author_name": "Milica Siriski",
"author_login": "milica-siriski",
"committed_at": "2026-05-27T08:38:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "293505ebc6b27638805a8ae1facb908e2214b290",
"body": "… patch",
"is_bot": false,
"headline": "feat(run): include committed-but-not-pushed changes in personal build…",
"author_name": "Milica Siriski",
"author_login": "milica-siriski",
"committed_at": "2026-05-27T08:38:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d252134d10afe3d17ca8943d2f7aa54e00b797fa",
"body": null,
"is_bot": false,
"headline": "fix(api): default Accept to */* for non-JSON request bodies",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-22T13:14:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb2b5a00f425a49b56fab54b96115ee17e821158",
"body": null,
"is_bot": false,
"headline": "fix(api): log Content-Length in verbose request debug output",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-22T13:14:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e96d9a5d2ec7fdd7ff96d4c3537542562f5ff1f",
"body": null,
"is_bot": false,
"headline": "fix(api): skip 406 retry on body-bearing requests in RawRequest",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-22T13:14:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b89ee5d9a6048798074ff8ae344ef011bbd17549",
"body": "…d proxy errors stay debuggable",
"is_bot": false,
"headline": "fix(api): retain body snippet when no wire message parses so paginate…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-22T12:31:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "102761c6986b37fdb45f1c6ce49f91ba97dde829",
"body": "…r consistency and reuse across API handling",
"is_bot": false,
"headline": "refactor(errors): consolidate `errorFromBody` into `ErrorFromBody` fo…",
"author_name": "tiulpin",
"author_login": "tiulpin",
"committed_at": "2026-05-22T12:31:48Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 21,
"commits_last_year": 686,
"latest_release_at": "2026-07-17T19:00:22Z",
"latest_release_tag": "v1.3.0",
"releases_from_tags": false,
"days_since_last_push": 4,
"active_weeks_last_year": 24,
"days_since_latest_release": 4,
"mean_days_between_releases": 11.9
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 75,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "github.com/JetBrains/teamcity-cli",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/JetBrains/teamcity-cli",
"is_deprecated": false,
"latest_version": "v1.3.0",
"repository_url": "https://github.com/JetBrains/teamcity-cli",
"versions_count": 21,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-17T18:47:39Z",
"latest_version_yanked": null,
"days_since_latest_publish": 4
}
]
},
"popularity": {
"forks": 13,
"stars": 117,
"watchers": 0,
"fork_history": {
"days": [
{
"date": "2026-01-26",
"count": 2
},
{
"date": "2026-03-04",
"count": 1
},
{
"date": "2026-03-11",
"count": 1
},
{
"date": "2026-03-19",
"count": 1
},
{
"date": "2026-03-26",
"count": 1
},
{
"date": "2026-04-24",
"count": 1
},
{
"date": "2026-05-01",
"count": 1
},
{
"date": "2026-05-21",
"count": 1
},
{
"date": "2026-05-28",
"count": 1
},
{
"date": "2026-06-10",
"count": 1
},
{
"date": "2026-06-21",
"count": 1
},
{
"date": "2026-06-24",
"count": 1
}
],
"complete": true,
"collected": 13,
"total_forks": 13
},
"star_history": {
"days": [
{
"date": "2026-01-22",
"count": 2
},
{
"date": "2026-01-23",
"count": 5
},
{
"date": "2026-01-26",
"count": 5
},
{
"date": "2026-01-27",
"count": 5
},
{
"date": "2026-01-29",
"count": 3
},
{
"date": "2026-01-30",
"count": 3
},
{
"date": "2026-02-02",
"count": 3
},
{
"date": "2026-02-06",
"count": 1
},
{
"date": "2026-02-08",
"count": 1
},
{
"date": "2026-02-11",
"count": 2
},
{
"date": "2026-02-12",
"count": 1
},
{
"date": "2026-02-13",
"count": 1
},
{
"date": "2026-02-16",
"count": 2
},
{
"date": "2026-02-17",
"count": 1
},
{
"date": "2026-02-19",
"count": 1
},
{
"date": "2026-02-20",
"count": 1
},
{
"date": "2026-02-21",
"count": 1
},
{
"date": "2026-02-24",
"count": 1
},
{
"date": "2026-03-02",
"count": 1
},
{
"date": "2026-03-04",
"count": 1
},
{
"date": "2026-03-08",
"count": 1
},
{
"date": "2026-03-09",
"count": 2
},
{
"date": "2026-03-16",
"count": 1
},
{
"date": "2026-03-17",
"count": 2
},
{
"date": "2026-03-19",
"count": 7
},
{
"date": "2026-03-20",
"count": 4
},
{
"date": "2026-03-23",
"count": 1
},
{
"date": "2026-03-26",
"count": 3
},
{
"date": "2026-03-30",
"count": 1
},
{
"date": "2026-04-03",
"count": 1
},
{
"date": "2026-04-07",
"count": 3
},
{
"date": "2026-04-10",
"count": 1
},
{
"date": "2026-04-13",
"count": 2
},
{
"date": "2026-04-14",
"count": 1
},
{
"date": "2026-04-16",
"count": 1
},
{
"date": "2026-04-19",
"count": 1
},
{
"date": "2026-04-20",
"count": 1
},
{
"date": "2026-04-24",
"count": 1
},
{
"date": "2026-05-02",
"count": 1
},
{
"date": "2026-05-03",
"count": 1
},
{
"date": "2026-05-05",
"count": 1
},
{
"date": "2026-05-06",
"count": 1
},
{
"date": "2026-05-07",
"count": 1
},
{
"date": "2026-05-12",
"count": 2
},
{
"date": "2026-05-15",
"count": 1
},
{
"date": "2026-05-16",
"count": 2
},
{
"date": "2026-05-19",
"count": 1
},
{
"date": "2026-05-21",
"count": 1
},
{
"date": "2026-05-26",
"count": 1
},
{
"date": "2026-05-28",
"count": 3
},
{
"date": "2026-05-29",
"count": 4
},
{
"date": "2026-06-02",
"count": 2
},
{
"date": "2026-06-05",
"count": 3
},
{
"date": "2026-06-12",
"count": 1
},
{
"date": "2026-06-17",
"count": 1
},
{
"date": "2026-06-23",
"count": 1
},
{
"date": "2026-06-24",
"count": 3
},
{
"date": "2026-06-25",
"count": 1
},
{
"date": "2026-07-02",
"count": 1
},
{
"date": "2026-07-03",
"count": 1
},
{
"date": "2026-07-04",
"count": 1
},
{
"date": "2026-07-06",
"count": 3
},
{
"date": "2026-07-11",
"count": 1
},
{
"date": "2026-07-12",
"count": 1
},
{
"date": "2026-07-13",
"count": 1
},
{
"date": "2026-07-21",
"count": 1
}
],
"complete": true,
"collected": 117,
"total_stars": 117
},
"open_issues_and_prs": 13
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [
"justfile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 43762,
"source_files_sampled": 339,
"oversized_source_files": 0,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 3835
},
"dependencies": {
"manifests": [
"evals/pyproject.toml",
"go.mod"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "golang.org/x/crypto",
"direct": false,
"version": "v0.52.0",
"severity": "unknown",
"ecosystem": "go",
"cvss_score": null,
"advisory_ids": [
"GO-2026-5932"
],
"fixed_version": null,
"advisory_count": 1,
"oldest_advisory_days": 14
},
{
"name": "golang.org/x/text",
"direct": false,
"version": "v0.37.0",
"severity": "unknown",
"ecosystem": "go",
"cvss_score": null,
"advisory_ids": [
"GO-2026-5970"
],
"fixed_version": "0.39.0",
"advisory_count": 1,
"oldest_advisory_days": 7
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"unknown": 2
},
"advisory_count": 2,
"affected_count": 2,
"assessed_count": 164,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go",
"pypi"
],
"dependencies": [
{
"name": "pytest",
"manifest": "evals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=9.0.3"
},
{
"name": "pytest-xdist",
"manifest": "evals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=3.5"
},
{
"name": "pytest-repeat",
"manifest": "evals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=0.9"
},
{
"name": "pytest-timeout",
"manifest": "evals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.3"
},
{
"name": "pyyaml",
"manifest": "evals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=6.0"
},
{
"name": "sentry-sdk",
"manifest": "evals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.20"
},
{
"name": "langfuse",
"manifest": "evals/pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=4,<5"
},
{
"name": "github.com/JetBrains/fus-reporting-api-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.1.1-0.20260529130422-2c411082a674"
},
{
"name": "github.com/Netflix/go-expect",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20220104043353-73e0943537d2"
},
{
"name": "github.com/aymanbagabas/go-udiff",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.4.1"
},
{
"name": "github.com/buildkite/shellwords",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.1"
},
{
"name": "github.com/cenkalti/backoff/v5",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v5.0.3"
},
{
"name": "github.com/charmbracelet/bubbles",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.0"
},
{
"name": "github.com/charmbracelet/bubbletea",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.3.10"
},
{
"name": "github.com/charmbracelet/huh",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.0"
},
{
"name": "github.com/charmbracelet/lipgloss",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.0"
},
{
"name": "github.com/charmbracelet/x/ansi",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.11.7"
},
{
"name": "github.com/dustin/go-humanize",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.1"
},
{
"name": "github.com/gorilla/websocket",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.5.3"
},
{
"name": "github.com/joho/godotenv",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.5.1"
},
{
"name": "github.com/magiconair/properties",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.8.10"
},
{
"name": "github.com/mattn/go-runewidth",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.24"
},
{
"name": "github.com/moby/moby/api",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.55.0"
},
{
"name": "github.com/muesli/termenv",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.16.0"
},
{
"name": "github.com/pelletier/go-toml/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.4.2"
},
{
"name": "github.com/pkg/browser",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20240102092130-5ac0b6a4141c"
},
{
"name": "github.com/rhysd/actionlint",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.7.12"
},
{
"name": "github.com/rogpeppe/go-internal",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.15.0"
},
{
"name": "github.com/santhosh-tekuri/jsonschema/v6",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v6.0.2"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.2"
},
{
"name": "github.com/spf13/pflag",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.0.10"
},
{
"name": "github.com/spf13/viper",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.21.0"
},
{
"name": "github.com/stretchr/testify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.11.1"
},
{
"name": "github.com/testcontainers/testcontainers-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.43.0"
},
{
"name": "github.com/tiulpin/instill",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20260521174322-b563ba2627d7"
},
{
"name": "github.com/zalando/go-keyring",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.2.8"
},
{
"name": "golang.org/x/sys",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.46.0"
},
{
"name": "golang.org/x/term",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.44.0"
},
{
"name": "gopkg.in/yaml.v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.1"
},
{
"name": "github.com/tiulpin/termbook",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.3.0"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "github.com/aymanbagabas/go-udiff",
"direct": true,
"version": "v0.4.1",
"ecosystem": "go"
},
{
"name": "github.com/buildkite/shellwords",
"direct": true,
"version": "v1.0.1",
"ecosystem": "go"
},
{
"name": "github.com/cenkalti/backoff/v5",
"direct": true,
"version": "v5.0.3",
"ecosystem": "go"
},
{
"name": "github.com/charmbracelet/bubbles",
"direct": true,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/charmbracelet/bubbletea",
"direct": true,
"version": "v1.3.10",
"ecosystem": "go"
},
{
"name": "github.com/charmbracelet/huh",
"direct": true,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/charmbracelet/lipgloss",
"direct": true,
"version": "v1.1.0",
"ecosystem": "go"
},
{
"name": "github.com/charmbracelet/x/ansi",
"direct": true,
"version": "v0.11.7",
"ecosystem": "go"
},
{
"name": "github.com/dustin/go-humanize",
"direct": true,
"version": "v1.0.1",
"ecosystem": "go"
},
{
"name": "github.com/gorilla/websocket",
"direct": true,
"version": "v1.5.3",
"ecosystem": "go"
},
{
"name": "github.com/jetbrains/fus-reporting-api-go",
"direct": true,
"version": "v0.1.1-0.20260529130422-2c411082a674",
"ecosystem": "go"
},
{
"name": "github.com/joho/godotenv",
"direct": true,
"version": "v1.5.1",
"ecosystem": "go"
},
{
"name": "github.com/magiconair/properties",
"direct": true,
"version": "v1.8.10",
"ecosystem": "go"
},
{
"name": "github.com/mattn/go-runewidth",
"direct": true,
"version": "v0.0.24",
"ecosystem": "go"
},
{
"name": "github.com/moby/moby/api",
"direct": true,
"version": "v1.55.0",
"ecosystem": "go"
},
{
"name": "github.com/muesli/termenv",
"direct": true,
"version": "v0.16.0",
"ecosystem": "go"
},
{
"name": "github.com/netflix/go-expect",
"direct": true,
"version": "v0.0.0-20220104043353-73e0943537d2",
"ecosystem": "go"
},
{
"name": "github.com/pelletier/go-toml/v2",
"direct": true,
"version": "v2.4.2",
"ecosystem": "go"
},
{
"name": "github.com/pkg/browser",
"direct": true,
"version": "v0.0.0-20240102092130-5ac0b6a4141c",
"ecosystem": "go"
},
{
"name": "github.com/rhysd/actionlint",
"direct": true,
"version": "v1.7.12",
"ecosystem": "go"
},
{
"name": "github.com/rogpeppe/go-internal",
"direct": true,
"version": "v1.15.0",
"ecosystem": "go"
},
{
"name": "github.com/santhosh-tekuri/jsonschema/v6",
"direct": true,
"version": "v6.0.2",
"ecosystem": "go"
},
{
"name": "github.com/spf13/cobra",
"direct": true,
"version": "v1.10.2",
"ecosystem": "go"
},
{
"name": "github.com/spf13/pflag",
"direct": true,
"version": "v1.0.10",
"ecosystem": "go"
},
{
"name": "github.com/spf13/viper",
"direct": true,
"version": "v1.21.0",
"ecosystem": "go"
},
{
"name": "github.com/stretchr/testify",
"direct": true,
"version": "v1.11.1",
"ecosystem": "go"
},
{
"name": "github.com/testcontainers/testcontainers-go",
"direct": true,
"version": "v0.43.0",
"ecosystem": "go"
},
{
"name": "github.com/tiulpin/instill",
"direct": true,
"version": "v0.0.0-20260521174322-b563ba2627d7",
"ecosystem": "go"
},
{
"name": "github.com/tiulpin/termbook",
"direct": true,
"version": "v0.3.0",
"ecosystem": "go"
},
{
"name": "github.com/zalando/go-keyring",
"direct": true,
"version": "v0.2.8",
"ecosystem": "go"
},
{
"name": "golang.org/x/sys",
"direct": true,
"version": "v0.46.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/term",
"direct": true,
"version": "v0.44.0",
"ecosystem": "go"
},
{
"name": "gopkg.in/yaml.v3",
"direct": true,
"version": "v3.0.1",
"ecosystem": "go"
},
{
"name": "langfuse",
"direct": true,
"version": "4.7.1",
"ecosystem": "pypi"
},
{
"name": "pytest",
"direct": true,
"version": "9.0.3",
"ecosystem": "pypi"
},
{
"name": "pytest-repeat",
"direct": true,
"version": "0.9.4",
"ecosystem": "pypi"
},
{
"name": "pytest-timeout",
"direct": true,
"version": "2.4.0",
"ecosystem": "pypi"
},
{
"name": "pytest-xdist",
"direct": true,
"version": "3.8.0",
"ecosystem": "pypi"
},
{
"name": "pyyaml",
"direct": true,
"version": "6.0.3",
"ecosystem": "pypi"
},
{
"name": "sentry-sdk",
"direct": true,
"version": "2.57.0",
"ecosystem": "pypi"
},
{
"name": "dario.cat/mergo",
"direct": false,
"version": "v1.0.2",
"ecosystem": "go"
},
{
"name": "github.com/atotto/clipboard",
"direct": false,
"version": "v0.1.4",
"ecosystem": "go"
},
{
"name": "github.com/aymanbagabas/go-osc52/v2",
"direct": false,
"version": "v2.0.1",
"ecosystem": "go"
},
{
"name": "github.com/azure/go-ansiterm",
"direct": false,
"version": "v0.0.0-20250102033503-faa5f7b0171c",
"ecosystem": "go"
},
{
"name": "github.com/bmatcuk/doublestar/v4",
"direct": false,
"version": "v4.10.0",
"ecosystem": "go"
},
{
"name": "github.com/buildkite/terminal-to-html/v3",
"direct": false,
"version": "v3.16.8",
"ecosystem": "go"
},
{
"name": "github.com/catppuccin/go",
"direct": false,
"version": "v0.3.0",
"ecosystem": "go"
},
{
"name": "github.com/cenkalti/backoff/v4",
"direct": false,
"version": "v4.3.0",
"ecosystem": "go"
},
{
"name": "github.com/cespare/xxhash/v2",
"direct": false,
"version": "v2.3.0",
"ecosystem": "go"
},
{
"name": "github.com/charmbracelet/colorprofile",
"direct": false,
"version": "v0.4.1",
"ecosystem": "go"
},
{
"name": "github.com/charmbracelet/x/cellbuf",
"direct": false,
"version": "v0.0.15",
"ecosystem": "go"
},
{
"name": "github.com/charmbracelet/x/exp/strings",
"direct": false,
"version": "v0.0.0-20240722160745-212f7b056ed0",
"ecosystem": "go"
},
{
"name": "github.com/charmbracelet/x/term",
"direct": false,
"version": "v0.2.2",
"ecosystem": "go"
},
{
"name": "github.com/clipperhouse/displaywidth",
"direct": false,
"version": "v0.11.0",
"ecosystem": "go"
},
{
"name": "github.com/clipperhouse/uax29/v2",
"direct": false,
"version": "v2.7.0",
"ecosystem": "go"
},
{
"name": "github.com/containerd/errdefs",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/containerd/errdefs/pkg",
"direct": false,
"version": "v0.3.0",
"ecosystem": "go"
},
{
"name": "github.com/containerd/log",
"direct": false,
"version": "v0.1.0",
"ecosystem": "go"
},
{
"name": "github.com/containerd/platforms",
"direct": false,
"version": "v0.2.1",
"ecosystem": "go"
},
{
"name": "github.com/cpuguy83/dockercfg",
"direct": false,
"version": "v0.3.2",
"ecosystem": "go"
},
{
"name": "github.com/creack/pty",
"direct": false,
"version": "v1.1.24",
"ecosystem": "go"
},
{
"name": "github.com/danieljoos/wincred",
"direct": false,
"version": "v1.2.3",
"ecosystem": "go"
},
{
"name": "github.com/davecgh/go-spew",
"direct": false,
"version": "v1.1.1",
"ecosystem": "go"
},
{
"name": "github.com/distribution/reference",
"direct": false,
"version": "v0.6.0",
"ecosystem": "go"
},
{
"name": "github.com/docker/go-connections",
"direct": false,
"version": "v0.6.0",
"ecosystem": "go"
},
{
"name": "github.com/docker/go-units",
"direct": false,
"version": "v0.5.0",
"ecosystem": "go"
},
{
"name": "github.com/ebitengine/purego",
"direct": false,
"version": "v0.10.0",
"ecosystem": "go"
},
{
"name": "github.com/erikgeiser/coninput",
"direct": false,
"version": "v0.0.0-20211004153227-1c3628e74d0f",
"ecosystem": "go"
},
{
"name": "github.com/fatih/color",
"direct": false,
"version": "v1.19.0",
"ecosystem": "go"
},
{
"name": "github.com/felixge/httpsnoop",
"direct": false,
"version": "v1.0.4",
"ecosystem": "go"
},
{
"name": "github.com/fsnotify/fsnotify",
"direct": false,
"version": "v1.9.0",
"ecosystem": "go"
},
{
"name": "github.com/go-logr/logr",
"direct": false,
"version": "v1.4.3",
"ecosystem": "go"
},
{
"name": "github.com/go-logr/stdr",
"direct": false,
"version": "v1.2.2",
"ecosystem": "go"
},
{
"name": "github.com/go-ole/go-ole",
"direct": false,
"version": "v1.3.0",
"ecosystem": "go"
},
{
"name": "github.com/go-viper/mapstructure/v2",
"direct": false,
"version": "v2.4.0",
"ecosystem": "go"
},
{
"name": "github.com/godbus/dbus/v5",
"direct": false,
"version": "v5.2.2",
"ecosystem": "go"
},
{
"name": "github.com/google/uuid",
"direct": false,
"version": "v1.6.0",
"ecosystem": "go"
},
{
"name": "github.com/inconshreveable/mousetrap",
"direct": false,
"version": "v1.1.0",
"ecosystem": "go"
},
{
"name": "github.com/klauspost/compress",
"direct": false,
"version": "v1.18.5",
"ecosystem": "go"
},
{
"name": "github.com/lucasb-eyer/go-colorful",
"direct": false,
"version": "v1.4.0",
"ecosystem": "go"
},
{
"name": "github.com/lufia/plan9stats",
"direct": false,
"version": "v0.0.0-20211012122336-39d0f177ccd0",
"ecosystem": "go"
},
{
"name": "github.com/mattn/go-colorable",
"direct": false,
"version": "v0.1.14",
"ecosystem": "go"
},
{
"name": "github.com/mattn/go-isatty",
"direct": false,
"version": "v0.0.20",
"ecosystem": "go"
},
{
"name": "github.com/mattn/go-localereader",
"direct": false,
"version": "v0.0.1",
"ecosystem": "go"
},
{
"name": "github.com/mattn/go-shellwords",
"direct": false,
"version": "v1.0.12",
"ecosystem": "go"
},
{
"name": "github.com/microsoft/go-winio",
"direct": false,
"version": "v0.6.2",
"ecosystem": "go"
},
{
"name": "github.com/mitchellh/hashstructure/v2",
"direct": false,
"version": "v2.0.2",
"ecosystem": "go"
},
{
"name": "github.com/moby/docker-image-spec",
"direct": false,
"version": "v1.3.1",
"ecosystem": "go"
},
{
"name": "github.com/moby/go-archive",
"direct": false,
"version": "v0.2.0",
"ecosystem": "go"
},
{
"name": "github.com/moby/moby/client",
"direct": false,
"version": "v0.4.0",
"ecosystem": "go"
},
{
"name": "github.com/moby/patternmatcher",
"direct": false,
"version": "v0.6.1",
"ecosystem": "go"
},
{
"name": "github.com/moby/sys/sequential",
"direct": false,
"version": "v0.6.0",
"ecosystem": "go"
},
{
"name": "github.com/moby/sys/user",
"direct": false,
"version": "v0.4.0",
"ecosystem": "go"
},
{
"name": "github.com/moby/sys/userns",
"direct": false,
"version": "v0.1.0",
"ecosystem": "go"
},
{
"name": "github.com/moby/term",
"direct": false,
"version": "v0.5.2",
"ecosystem": "go"
},
{
"name": "github.com/muesli/ansi",
"direct": false,
"version": "v0.0.0-20230316100256-276c6243b2f6",
"ecosystem": "go"
},
{
"name": "github.com/muesli/cancelreader",
"direct": false,
"version": "v0.2.2",
"ecosystem": "go"
},
{
"name": "github.com/opencontainers/go-digest",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/opencontainers/image-spec",
"direct": false,
"version": "v1.1.1",
"ecosystem": "go"
},
{
"name": "github.com/pmezard/go-difflib",
"direct": false,
"version": "v1.0.0",
"ecosystem": "go"
},
{
"name": "github.com/power-devops/perfstat",
"direct": false,
"version": "v0.0.0-20240221224432-82ca36839d55",
"ecosystem": "go"
},
{
"name": "github.com/rivo/uniseg",
"direct": false,
"version": "v0.4.7",
"ecosystem": "go"
},
{
"name": "github.com/robfig/cron/v3",
"direct": false,
"version": "v3.0.1",
"ecosystem": "go"
},
{
"name": "github.com/sagikazarmark/locafero",
"direct": false,
"version": "v0.11.0",
"ecosystem": "go"
},
{
"name": "github.com/shirou/gopsutil/v4",
"direct": false,
"version": "v4.26.5",
"ecosystem": "go"
},
{
"name": "github.com/sirupsen/logrus",
"direct": false,
"version": "v1.9.4",
"ecosystem": "go"
},
{
"name": "github.com/sourcegraph/conc",
"direct": false,
"version": "v0.3.1-0.20240121214520-5f936abd7ae8",
"ecosystem": "go"
},
{
"name": "github.com/spf13/afero",
"direct": false,
"version": "v1.15.0",
"ecosystem": "go"
},
{
"name": "github.com/spf13/cast",
"direct": false,
"version": "v1.10.0",
"ecosystem": "go"
},
{
"name": "github.com/subosito/gotenv",
"direct": false,
"version": "v1.6.0",
"ecosystem": "go"
},
{
"name": "github.com/tklauser/go-sysconf",
"direct": false,
"version": "v0.3.16",
"ecosystem": "go"
},
{
"name": "github.com/tklauser/numcpus",
"direct": false,
"version": "v0.11.0",
"ecosystem": "go"
},
{
"name": "github.com/xo/terminfo",
"direct": false,
"version": "v0.0.0-20220910002029-abceb7e1c41e",
"ecosystem": "go"
},
{
"name": "github.com/yusufpapurcu/wmi",
"direct": false,
"version": "v1.2.4",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/auto/sdk",
"direct": false,
"version": "v1.2.1",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp",
"direct": false,
"version": "v0.60.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel",
"direct": false,
"version": "v1.43.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel/metric",
"direct": false,
"version": "v1.43.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel/sdk",
"direct": false,
"version": "v1.43.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel/sdk/metric",
"direct": false,
"version": "v1.43.0",
"ecosystem": "go"
},
{
"name": "go.opentelemetry.io/otel/trace",
"direct": false,
"version": "v1.43.0",
"ecosystem": "go"
},
{
"name": "go.yaml.in/yaml/v3",
"direct": false,
"version": "v3.0.4",
"ecosystem": "go"
},
{
"name": "go.yaml.in/yaml/v4",
"direct": false,
"version": "v4.0.0-rc.3",
"ecosystem": "go"
},
{
"name": "golang.org/x/crypto",
"direct": false,
"version": "v0.52.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/sync",
"direct": false,
"version": "v0.20.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/text",
"direct": false,
"version": "v0.37.0",
"ecosystem": "go"
},
{
"name": "golang.org/x/tools",
"direct": false,
"version": "v0.44.0",
"ecosystem": "go"
},
{
"name": "annotated-types",
"direct": false,
"version": "0.7.0",
"ecosystem": "pypi"
},
{
"name": "anthropic",
"direct": false,
"version": "0.87.0",
"ecosystem": "pypi"
},
{
"name": "anyio",
"direct": false,
"version": "4.13.0",
"ecosystem": "pypi"
},
{
"name": "backoff",
"direct": false,
"version": "2.2.1",
"ecosystem": "pypi"
},
{
"name": "certifi",
"direct": false,
"version": "2026.2.25",
"ecosystem": "pypi"
},
{
"name": "charset-normalizer",
"direct": false,
"version": "3.4.7",
"ecosystem": "pypi"
},
{
"name": "colorama",
"direct": false,
"version": "0.4.6",
"ecosystem": "pypi"
},
{
"name": "distro",
"direct": false,
"version": "1.9.0",
"ecosystem": "pypi"
},
{
"name": "docstring-parser",
"direct": false,
"version": "0.17.0",
"ecosystem": "pypi"
},
{
"name": "execnet",
"direct": false,
"version": "2.1.2",
"ecosystem": "pypi"
},
{
"name": "googleapis-common-protos",
"direct": false,
"version": "1.75.0",
"ecosystem": "pypi"
},
{
"name": "h11",
"direct": false,
"version": "0.16.0",
"ecosystem": "pypi"
},
{
"name": "httpcore",
"direct": false,
"version": "1.0.9",
"ecosystem": "pypi"
},
{
"name": "httpx",
"direct": false,
"version": "0.28.1",
"ecosystem": "pypi"
},
{
"name": "idna",
"direct": false,
"version": "3.15",
"ecosystem": "pypi"
},
{
"name": "iniconfig",
"direct": false,
"version": "2.3.0",
"ecosystem": "pypi"
},
{
"name": "jiter",
"direct": false,
"version": "0.13.0",
"ecosystem": "pypi"
},
{
"name": "opentelemetry-api",
"direct": false,
"version": "1.42.1",
"ecosystem": "pypi"
},
{
"name": "opentelemetry-exporter-otlp-proto-common",
"direct": false,
"version": "1.42.1",
"ecosystem": "pypi"
},
{
"name": "opentelemetry-exporter-otlp-proto-http",
"direct": false,
"version": "1.42.1",
"ecosystem": "pypi"
},
{
"name": "opentelemetry-proto",
"direct": false,
"version": "1.42.1",
"ecosystem": "pypi"
},
{
"name": "opentelemetry-sdk",
"direct": false,
"version": "1.42.1",
"ecosystem": "pypi"
},
{
"name": "opentelemetry-semantic-conventions",
"direct": false,
"version": "0.63b1",
"ecosystem": "pypi"
},
{
"name": "packaging",
"direct": false,
"version": "25.0",
"ecosystem": "pypi"
},
{
"name": "pluggy",
"direct": false,
"version": "1.6.0",
"ecosystem": "pypi"
},
{
"name": "protobuf",
"direct": false,
"version": "6.33.6",
"ecosystem": "pypi"
},
{
"name": "pydantic",
"direct": false,
"version": "2.12.5",
"ecosystem": "pypi"
},
{
"name": "pydantic-core",
"direct": false,
"version": "2.41.5",
"ecosystem": "pypi"
},
{
"name": "pygments",
"direct": false,
"version": "2.20.0",
"ecosystem": "pypi"
},
{
"name": "requests",
"direct": false,
"version": "2.34.2",
"ecosystem": "pypi"
},
{
"name": "ruff",
"direct": false,
"version": "0.15.7",
"ecosystem": "pypi"
},
{
"name": "sniffio",
"direct": false,
"version": "1.3.1",
"ecosystem": "pypi"
},
{
"name": "teamcity-cli-evals",
"direct": false,
"version": "0.1.0",
"ecosystem": "pypi"
},
{
"name": "typing-extensions",
"direct": false,
"version": "4.15.0",
"ecosystem": "pypi"
},
{
"name": "typing-inspection",
"direct": false,
"version": "0.4.2",
"ecosystem": "pypi"
},
{
"name": "urllib3",
"direct": false,
"version": "2.7.0",
"ecosystem": "pypi"
},
{
"name": "wrapt",
"direct": false,
"version": "1.17.3",
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 164,
"direct_count": 40,
"indirect_count": 124
}
},
"maintainership": {
"issues": {
"open_prs": 1,
"merged_prs": 224,
"open_issues": 12,
"closed_ratio": 0.912,
"closed_issues": 124,
"closed_unmerged_prs": 22
},
"bus_factor": 1,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "tiulpin",
"commits": 641,
"avatar_url": "https://avatars.githubusercontent.com/u/13538286?v=4"
},
{
"type": "User",
"login": "milica-siriski",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/246676145?v=4"
},
{
"type": "User",
"login": "sugdyzhekov",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/8955225?v=4"
},
{
"type": "User",
"login": "claude",
"commits": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
},
{
"type": "User",
"login": "Baune8D",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/30204280?v=4"
},
{
"type": "User",
"login": "AlexeyTsvetkov",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/654232?v=4"
},
{
"type": "User",
"login": "boris-yakhno",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/12037808?v=4"
}
],
"contributors_sampled": 7,
"top_contributor_share": 0.973
},
"quality_signals": {
"has_ci": false,
"has_tests": true,
"ci_workflows": [],
"has_docs_dir": true,
"linter_configs": [
".golangci.yml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum",
"uv.lock"
],
"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": 8,
"reason": "branch protection is not maximal on development and all release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 9,
"reason": "13 out of 14 merged PRs checked by a CI test -- score normalized to 9",
"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": 2,
"reason": "Found 4/20 approved changesets -- score normalized to 2",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 6,
"reason": "project has 2 contributing companies or organizations -- score normalized to 6",
"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": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 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": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 8,
"reason": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"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": 8,
"reason": "2 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "e9bbb01fe7c5b96790f7a60de9c2ee60138a9a6c",
"ran_at": "2026-07-22T08:50:46Z",
"aggregate_score": 6.5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-17T18:51:21Z",
"oldest_open_prs": [
{
"number": 352,
"created_at": "2026-06-11T09:24:03Z",
"last_comment_at": "2026-06-11T16:02:05Z",
"last_comment_author": "tiulpin"
}
],
"last_merged_pr_at": "2026-07-17T18:28:58Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 64,
"created_at": "2026-01-31T16:24:27Z",
"last_comment_at": "2026-03-23T16:26:07Z",
"last_comment_author": "tiulpin"
},
{
"number": 83,
"created_at": "2026-02-09T10:30:38Z",
"last_comment_at": "2026-02-24T09:50:12Z",
"last_comment_author": "sugdyzhekov"
},
{
"number": 136,
"created_at": "2026-03-20T16:30:03Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 137,
"created_at": "2026-03-20T16:39:19Z",
"last_comment_at": "2026-04-29T05:56:05Z",
"last_comment_author": "tiulpin"
},
{
"number": 140,
"created_at": "2026-03-20T17:44:27Z",
"last_comment_at": "2026-03-23T16:39:42Z",
"last_comment_author": "tiulpin"
},
{
"number": 199,
"created_at": "2026-04-05T09:46:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 216,
"created_at": "2026-04-09T07:59:58Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 224,
"created_at": "2026-04-13T20:31:40Z",
"last_comment_at": "2026-04-16T05:55:19Z",
"last_comment_author": "purrtc0l"
},
{
"number": 253,
"created_at": "2026-04-17T04:51:42Z",
"last_comment_at": "2026-04-17T05:58:46Z",
"last_comment_author": "sugdyzhekov"
},
{
"number": 280,
"created_at": "2026-04-22T15:45:22Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 283,
"created_at": "2026-04-23T13:38:36Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 374,
"created_at": "2026-06-23T14:36:01Z",
"last_comment_at": "2026-06-25T13:04:40Z",
"last_comment_author": "tiulpin"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/JetBrains/teamcity-cli",
"host": "github.com",
"name": "teamcity-cli",
"owner": "JetBrains"
},
"metrics": {
"overall": {
"key": "overall",
"band": "at_risk",
"name": "Overall health",
"note": "High-Risk Jurisdiction Policy applies a 75% multiplier to weighted overall health and gives it an At risk ceiling of 49.",
"notes": [
{
"code": "jurisdiction_overall_adjustment",
"params": {
"cap": 49,
"pct": 75
}
}
],
"value": 49,
"inputs": {
"security": 58,
"vitality": 88,
"community": 58,
"governance": 68,
"engineering": 71,
"high_risk_jurisdiction_cap": 49,
"high_risk_jurisdiction_multiplier": 75,
"weighted_overall_before_jurisdiction": 70,
"overall_after_jurisdiction_multiplier": 52
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 88,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 81,
"inputs": {
"commits_last_year": 686,
"human_commit_share": 0.95,
"days_since_last_push": 4,
"active_weeks_last_year": 24
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 4 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 4
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "24/52 weeks with commits",
"points": 16.6,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 24
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "686 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 686
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 98,
"inputs": {
"releases_count": 21,
"latest_release_tag": "v1.3.0",
"releases_from_tags": false,
"days_since_latest_release": 4,
"mean_days_between_releases": 11.9
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "21 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 21
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 4 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 4
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~11.9 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 11.9
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"points": 8,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 4,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 4 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 4
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 58,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 42,
"inputs": {
"forks": 13,
"stars": 117,
"watchers": 0,
"growth_state": "organic",
"growth_factor_pct": 100
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "117 stars",
"points": 33.5,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 117
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "13 forks",
"points": 9,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 13
}
}
],
"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": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 77,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 68,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 25,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 7,
"top_contributor_share": 0.973
},
"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 97% of commits",
"points": 0.6,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 97
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "7 contributors",
"points": 9.5,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 7
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 6,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"merged_prs": 224,
"open_issues": 12,
"closed_issues": 124,
"issue_closed_ratio": 0.912,
"closed_unmerged_prs": 22
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "91% of issues closed",
"points": 42.6,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 91
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "224/246 decided PRs merged",
"points": 34.8,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 224,
"decided": 246
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 4/20 approved changesets -- score normalized to 2",
"points": 3,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"followers": 13373,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "JetBrains",
"public_repos": 843,
"account_age_days": 5503
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "13,373 followers of JetBrains",
"points": 25,
"status": "met",
"details": [
{
"code": "owner_followers",
"params": {
"count": 13373,
"login": "JetBrains"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "843 public repos, account ~15 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 843
}
},
{
"code": "account_age_years",
"params": {
"years": 15
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/JetBrains/teamcity-cli"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 4
},
"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 4 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 4
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "21 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 21
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 71,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"has_ci": false,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"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": ".golangci.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"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": "13 out of 14 merged PRs checked by a CI test -- score normalized to 9",
"points": 18,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"topics": [
"cli",
"teamcity",
"teamcity-agent",
"teamcity-rest-api",
"agent-skills",
"claude-skills",
"ai-agent",
"go"
],
"has_wiki": false,
"homepage": "https://jb.gg/tc/docs",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://jb.gg/tc/docs",
"points": 15,
"status": "met",
"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": "8 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 8
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 58,
"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, Token-Permissions. Remaining weights renormalized. High-Risk Jurisdiction Policy applies a 75% multiplier to Security posture and gives it an At risk ceiling of 49.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"dangerous_workflow",
"packaging",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "jurisdiction_posture_adjustment",
"params": {
"cap": 49,
"pct": 75
}
}
],
"value": 48,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 6.5,
"high_risk_jurisdiction_cap": 49,
"high_risk_jurisdiction_multiplier": 75,
"security_posture_after_multiplier": 48,
"security_posture_before_jurisdiction": 64
},
"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 is not maximal on development and all release branches",
"points": 6,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "13 out of 14 merged PRs checked by a CI test -- score normalized to 9",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 4/20 approved changesets -- score normalized to 2",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 1.5,
"status": "partial",
"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": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 12 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 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 detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "5 out of the last 5 releases have a total of 5 signed artifacts.",
"points": 6,
"status": "partial",
"details": [],
"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": "2 existing vulnerabilities detected",
"points": 6,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 164 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 164
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 2,
"affected_packages": 2,
"assessed_packages": 164,
"unassessed_packages": 0,
"affected_by_severity": "unknown 2",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 164,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "good",
"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": 75,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": true,
"exposures": [
{
"role": "contributor_organization",
"count": 1,
"country": "Russia"
}
],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 7
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "Russia: contributor_organization (1)",
"points": 75,
"status": "partial",
"details": [
{
"code": "jurisdiction_exposure",
"params": {
"role": "contributor_organization",
"count": 1,
"country": "Russia"
}
}
],
"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": "excellent",
"name": "AI Readiness",
"value": 89,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.989,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md"
],
"agent_instruction_max_bytes": 3835
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md, CLAUDE.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md, 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": "94 of 95 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 94,
"sampled": 95
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "excellent",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 88,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum",
"uv.lock"
],
"has_dockerfile": true,
"typed_language": true,
"bootstrap_files": [
"justfile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.04,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0.05
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "justfile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "justfile"
}
}
],
"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": ".golangci.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"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": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "4 of the last 100 commits agent-authored or agent-credited",
"points": 8,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 4,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "5 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 5,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 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": 43762,
"source_files_sampled": 339,
"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/339 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 339,
"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": [
"Could not fetch pypi package 'teamcity-cli-evals' from its registry"
],
"report_type": "repository",
"generated_at": "2026-07-22T08:51:03.533313Z",
"schema_version": "0.26.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/j/JetBrains/teamcity-cli.svg",
"full_name": "JetBrains/teamcity-cli",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}